uvibe 2.16.1.post2__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.
- uvibe-2.16.1.post2/.github/CODEOWNERS +7 -0
- uvibe-2.16.1.post2/.github/DISCUSSION_TEMPLATE/ideas.yml +46 -0
- uvibe-2.16.1.post2/.github/ISSUE_TEMPLATE/bug-report.yml +59 -0
- uvibe-2.16.1.post2/.github/ISSUE_TEMPLATE/config.yml +11 -0
- uvibe-2.16.1.post2/.github/workflows/build-and-upload.yml +216 -0
- uvibe-2.16.1.post2/.github/workflows/ci.yml +132 -0
- uvibe-2.16.1.post2/.github/workflows/issue-labeler.yml +62 -0
- uvibe-2.16.1.post2/.github/workflows/release.yml +45 -0
- uvibe-2.16.1.post2/.gitignore +209 -0
- uvibe-2.16.1.post2/.pre-commit-config.yaml +35 -0
- uvibe-2.16.1.post2/.python-version +1 -0
- uvibe-2.16.1.post2/.typos.toml +7 -0
- uvibe-2.16.1.post2/CHANGELOG.md +1058 -0
- uvibe-2.16.1.post2/CONTRIBUTING.md +211 -0
- uvibe-2.16.1.post2/LICENSE +201 -0
- uvibe-2.16.1.post2/PKG-INFO +913 -0
- uvibe-2.16.1.post2/README.md +793 -0
- uvibe-2.16.1.post2/action.yml +59 -0
- uvibe-2.16.1.post2/distribution/zed/LICENSE +1 -0
- uvibe-2.16.1.post2/distribution/zed/extension.toml +31 -0
- uvibe-2.16.1.post2/distribution/zed/icons/mistral_vibe.svg +12 -0
- uvibe-2.16.1.post2/docs/README.md +8 -0
- uvibe-2.16.1.post2/docs/acp-setup.md +68 -0
- uvibe-2.16.1.post2/docs/proxy-setup.md +36 -0
- uvibe-2.16.1.post2/flake.lock +133 -0
- uvibe-2.16.1.post2/flake.nix +149 -0
- uvibe-2.16.1.post2/pyinstaller/runtime_hook_truststore.py +6 -0
- uvibe-2.16.1.post2/pyproject.toml +259 -0
- uvibe-2.16.1.post2/scripts/README.md +37 -0
- uvibe-2.16.1.post2/scripts/bump_version.py +240 -0
- uvibe-2.16.1.post2/scripts/ci/build-pyinstaller-binaries.sh +13 -0
- uvibe-2.16.1.post2/scripts/ci/clear-linux-execstack.sh +22 -0
- uvibe-2.16.1.post2/scripts/ci/setup-linux-pyinstaller-build.sh +14 -0
- uvibe-2.16.1.post2/scripts/ci/smoke-pyinstaller-cli.sh +18 -0
- uvibe-2.16.1.post2/scripts/install.sh +191 -0
- uvibe-2.16.1.post2/scripts/prepare_release.py +462 -0
- uvibe-2.16.1.post2/tests/__init__.py +5 -0
- uvibe-2.16.1.post2/tests/acp/conftest.py +142 -0
- uvibe-2.16.1.post2/tests/acp/smoke_binary.py +284 -0
- uvibe-2.16.1.post2/tests/acp/test_acp.py +1017 -0
- uvibe-2.16.1.post2/tests/acp/test_acp_disabled_tools_merge.py +35 -0
- uvibe-2.16.1.post2/tests/acp/test_acp_entrypoint_smoke.py +350 -0
- uvibe-2.16.1.post2/tests/acp/test_acp_hooks.py +171 -0
- uvibe-2.16.1.post2/tests/acp/test_acp_title.py +112 -0
- uvibe-2.16.1.post2/tests/acp/test_agent_thought.py +161 -0
- uvibe-2.16.1.post2/tests/acp/test_auth_status.py +271 -0
- uvibe-2.16.1.post2/tests/acp/test_authenticate.py +387 -0
- uvibe-2.16.1.post2/tests/acp/test_bash.py +525 -0
- uvibe-2.16.1.post2/tests/acp/test_close_session.py +129 -0
- uvibe-2.16.1.post2/tests/acp/test_commands.py +672 -0
- uvibe-2.16.1.post2/tests/acp/test_compact_session_updates.py +119 -0
- uvibe-2.16.1.post2/tests/acp/test_content.py +147 -0
- uvibe-2.16.1.post2/tests/acp/test_edit.py +331 -0
- uvibe-2.16.1.post2/tests/acp/test_fork_session.py +192 -0
- uvibe-2.16.1.post2/tests/acp/test_initialize.py +280 -0
- uvibe-2.16.1.post2/tests/acp/test_list_sessions.py +242 -0
- uvibe-2.16.1.post2/tests/acp/test_load_session.py +540 -0
- uvibe-2.16.1.post2/tests/acp/test_message_id.py +156 -0
- uvibe-2.16.1.post2/tests/acp/test_multi_session.py +117 -0
- uvibe-2.16.1.post2/tests/acp/test_new_session.py +403 -0
- uvibe-2.16.1.post2/tests/acp/test_proxy_setup_acp.py +438 -0
- uvibe-2.16.1.post2/tests/acp/test_read.py +239 -0
- uvibe-2.16.1.post2/tests/acp/test_session.py +155 -0
- uvibe-2.16.1.post2/tests/acp/test_session_auto_title.py +92 -0
- uvibe-2.16.1.post2/tests/acp/test_session_delete.py +177 -0
- uvibe-2.16.1.post2/tests/acp/test_session_set_title.py +323 -0
- uvibe-2.16.1.post2/tests/acp/test_set_config_option.py +530 -0
- uvibe-2.16.1.post2/tests/acp/test_set_mode.py +201 -0
- uvibe-2.16.1.post2/tests/acp/test_set_model.py +306 -0
- uvibe-2.16.1.post2/tests/acp/test_telemetry_notification.py +110 -0
- uvibe-2.16.1.post2/tests/acp/test_todo.py +64 -0
- uvibe-2.16.1.post2/tests/acp/test_tool_call_session_update.py +42 -0
- uvibe-2.16.1.post2/tests/acp/test_tool_field_meta.py +297 -0
- uvibe-2.16.1.post2/tests/acp/test_usage_update.py +257 -0
- uvibe-2.16.1.post2/tests/acp/test_utils.py +126 -0
- uvibe-2.16.1.post2/tests/acp/test_write_file.py +333 -0
- uvibe-2.16.1.post2/tests/audio_player/test_audio_player.py +206 -0
- uvibe-2.16.1.post2/tests/audio_recorder/test_audio_recorder.py +451 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_file_indexer.py +349 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_fuzzy.py +96 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_path_completer_fuzzy.py +350 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_path_completer_recursive.py +69 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_path_completion_controller.py +258 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_path_prompt.py +120 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_path_prompt_image.py +70 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_path_prompt_transformer.py +142 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_slash_command_controller.py +307 -0
- uvibe-2.16.1.post2/tests/autocompletion/test_ui_chat_autocompletion.py +339 -0
- uvibe-2.16.1.post2/tests/backend/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/backend/data/__init__.py +6 -0
- uvibe-2.16.1.post2/tests/backend/data/fireworks.py +153 -0
- uvibe-2.16.1.post2/tests/backend/data/mistral.py +150 -0
- uvibe-2.16.1.post2/tests/backend/data/openai_responses.py +520 -0
- uvibe-2.16.1.post2/tests/backend/test_anthropic_adapter.py +613 -0
- uvibe-2.16.1.post2/tests/backend/test_backend.py +796 -0
- uvibe-2.16.1.post2/tests/backend/test_image_encoding_cache.py +68 -0
- uvibe-2.16.1.post2/tests/backend/test_image_mapping.py +146 -0
- uvibe-2.16.1.post2/tests/backend/test_openai_responses_adapter.py +1325 -0
- uvibe-2.16.1.post2/tests/backend/test_reasoning_adapter.py +254 -0
- uvibe-2.16.1.post2/tests/backend/test_ssl_integration.py +142 -0
- uvibe-2.16.1.post2/tests/backend/test_vertex_anthropic_adapter.py +638 -0
- uvibe-2.16.1.post2/tests/banner/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/banner/test_banner_initial_state.py +294 -0
- uvibe-2.16.1.post2/tests/browser_sign_in/stubs.py +191 -0
- uvibe-2.16.1.post2/tests/browser_sign_in/test_browser_sign_in.py +382 -0
- uvibe-2.16.1.post2/tests/browser_sign_in/test_browser_sign_in_http.py +675 -0
- uvibe-2.16.1.post2/tests/cli/_inline_live_spike_app.py +81 -0
- uvibe-2.16.1.post2/tests/cli/_inline_spike_app.py +52 -0
- uvibe-2.16.1.post2/tests/cli/_inline_transient_spike_app.py +105 -0
- uvibe-2.16.1.post2/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +32 -0
- uvibe-2.16.1.post2/tests/cli/plan_offer/test_decide_plan_offer.py +325 -0
- uvibe-2.16.1.post2/tests/cli/plan_offer/test_http_whoami_gateway.py +224 -0
- uvibe-2.16.1.post2/tests/cli/smoke_binary.py +424 -0
- uvibe-2.16.1.post2/tests/cli/terminal_loop.py +131 -0
- uvibe-2.16.1.post2/tests/cli/test_approval_app_grace_period.py +78 -0
- uvibe-2.16.1.post2/tests/cli/test_bell_notifications.py +151 -0
- uvibe-2.16.1.post2/tests/cli/test_braille_renderer.py +114 -0
- uvibe-2.16.1.post2/tests/cli/test_cache.py +73 -0
- uvibe-2.16.1.post2/tests/cli/test_check_and_resolve_trusted_folder.py +193 -0
- uvibe-2.16.1.post2/tests/cli/test_clipboard.py +400 -0
- uvibe-2.16.1.post2/tests/cli/test_commands.py +190 -0
- uvibe-2.16.1.post2/tests/cli/test_compact_message.py +26 -0
- uvibe-2.16.1.post2/tests/cli/test_connector_auth_app.py +368 -0
- uvibe-2.16.1.post2/tests/cli/test_copy_command.py +53 -0
- uvibe-2.16.1.post2/tests/cli/test_copy_shortcuts.py +53 -0
- uvibe-2.16.1.post2/tests/cli/test_external_editor.py +72 -0
- uvibe-2.16.1.post2/tests/cli/test_feedback_bar.py +71 -0
- uvibe-2.16.1.post2/tests/cli/test_feedback_bar_manager.py +128 -0
- uvibe-2.16.1.post2/tests/cli/test_help.py +31 -0
- uvibe-2.16.1.post2/tests/cli/test_initial_agent_name.py +62 -0
- uvibe-2.16.1.post2/tests/cli/test_inline_inject.py +143 -0
- uvibe-2.16.1.post2/tests/cli/test_inline_scrollback_spike.py +153 -0
- uvibe-2.16.1.post2/tests/cli/test_mcp_app.py +445 -0
- uvibe-2.16.1.post2/tests/cli/test_native_scroll_history.py +194 -0
- uvibe-2.16.1.post2/tests/cli/test_native_scroll_interactive.py +432 -0
- uvibe-2.16.1.post2/tests/cli/test_native_scroll_local_input.py +204 -0
- uvibe-2.16.1.post2/tests/cli/test_native_scroll_routing.py +149 -0
- uvibe-2.16.1.post2/tests/cli/test_native_scroll_status_control.py +235 -0
- uvibe-2.16.1.post2/tests/cli/test_no_markup_static.py +19 -0
- uvibe-2.16.1.post2/tests/cli/test_programmatic_setup.py +226 -0
- uvibe-2.16.1.post2/tests/cli/test_question_app.py +718 -0
- uvibe-2.16.1.post2/tests/cli/test_question_app_grace_period.py +111 -0
- uvibe-2.16.1.post2/tests/cli/test_rename_command.py +158 -0
- uvibe-2.16.1.post2/tests/cli/test_scrollback_committer.py +807 -0
- uvibe-2.16.1.post2/tests/cli/test_scrollback_rendering.py +364 -0
- uvibe-2.16.1.post2/tests/cli/test_session_delete.py +230 -0
- uvibe-2.16.1.post2/tests/cli/test_spinner.py +16 -0
- uvibe-2.16.1.post2/tests/cli/test_startup_update_prompt.py +226 -0
- uvibe-2.16.1.post2/tests/cli/test_stderr_guard.py +73 -0
- uvibe-2.16.1.post2/tests/cli/test_switching_mode.py +109 -0
- uvibe-2.16.1.post2/tests/cli/test_terminal_detect.py +74 -0
- uvibe-2.16.1.post2/tests/cli/test_tool_result_render.py +235 -0
- uvibe-2.16.1.post2/tests/cli/test_typing_debounce.py +35 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_clipboard_notifications.py +40 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_config_and_model_picker.py +437 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_session_exit.py +47 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_session_incremental_renderer.py +100 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_session_resume.py +211 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_skill_dispatch.py +141 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_teleport_availability.py +272 -0
- uvibe-2.16.1.post2/tests/cli/test_ui_theme_picker.py +93 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_chat_input_keybindings.py +64 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_completion_popup.py +12 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_debug_console_resize.py +68 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_diff_rendering.py +181 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_event_handler_hooks.py +362 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_image_input_validation.py +151 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_manual_command_output_cap.py +132 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_message_queue.py +149 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_message_queue_ui.py +207 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_paste_path.py +221 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_quit_confirmation.py +184 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_read_widget.py +80 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_remote_session_manager.py +286 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_session_picker.py +538 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_streaming_message_buffer.py +319 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_terminal_input_filter.py +75 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/test_user_message_attachments.py +76 -0
- uvibe-2.16.1.post2/tests/cli/textual_ui/windowing/test_session_windowing.py +47 -0
- uvibe-2.16.1.post2/tests/conftest.py +362 -0
- uvibe-2.16.1.post2/tests/core/experiments/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_client.py +116 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_manager.py +427 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_models.py +68 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_resume.py +168 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_session_helpers.py +241 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_system_prompt_variant.py +197 -0
- uvibe-2.16.1.post2/tests/core/experiments/test_telemetry_integration.py +31 -0
- uvibe-2.16.1.post2/tests/core/nuage/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/core/nuage/test_remote_events_source.py +301 -0
- uvibe-2.16.1.post2/tests/core/nuage/test_workflows_client.py +248 -0
- uvibe-2.16.1.post2/tests/core/session/test_image_snapshot.py +71 -0
- uvibe-2.16.1.post2/tests/core/session/test_last_session_pointer.py +153 -0
- uvibe-2.16.1.post2/tests/core/session/test_session_id.py +79 -0
- uvibe-2.16.1.post2/tests/core/session/test_title_format.py +74 -0
- uvibe-2.16.1.post2/tests/core/test_add_dir.py +392 -0
- uvibe-2.16.1.post2/tests/core/test_agents.py +191 -0
- uvibe-2.16.1.post2/tests/core/test_backend_error.py +123 -0
- uvibe-2.16.1.post2/tests/core/test_build_attachment_counts.py +34 -0
- uvibe-2.16.1.post2/tests/core/test_build_ssl_context.py +134 -0
- uvibe-2.16.1.post2/tests/core/test_compaction.py +151 -0
- uvibe-2.16.1.post2/tests/core/test_config_builder.py +323 -0
- uvibe-2.16.1.post2/tests/core/test_config_field.py +216 -0
- uvibe-2.16.1.post2/tests/core/test_config_layer.py +579 -0
- uvibe-2.16.1.post2/tests/core/test_config_load_dotenv.py +81 -0
- uvibe-2.16.1.post2/tests/core/test_config_mcp_auth.py +213 -0
- uvibe-2.16.1.post2/tests/core/test_config_orchestrator.py +88 -0
- uvibe-2.16.1.post2/tests/core/test_config_otel.py +140 -0
- uvibe-2.16.1.post2/tests/core/test_config_patch_ops.py +257 -0
- uvibe-2.16.1.post2/tests/core/test_config_paths.py +553 -0
- uvibe-2.16.1.post2/tests/core/test_config_resolution.py +1579 -0
- uvibe-2.16.1.post2/tests/core/test_config_schema.py +128 -0
- uvibe-2.16.1.post2/tests/core/test_config_toml_end_to_end.py +71 -0
- uvibe-2.16.1.post2/tests/core/test_edit_encoding.py +86 -0
- uvibe-2.16.1.post2/tests/core/test_environment_layer.py +68 -0
- uvibe-2.16.1.post2/tests/core/test_file_logging.py +345 -0
- uvibe-2.16.1.post2/tests/core/test_fingerprint.py +118 -0
- uvibe-2.16.1.post2/tests/core/test_hooks.py +1908 -0
- uvibe-2.16.1.post2/tests/core/test_last_user_message.py +45 -0
- uvibe-2.16.1.post2/tests/core/test_llm_message_merge.py +51 -0
- uvibe-2.16.1.post2/tests/core/test_local_config_files.py +131 -0
- uvibe-2.16.1.post2/tests/core/test_log_reader.py +430 -0
- uvibe-2.16.1.post2/tests/core/test_loop.py +304 -0
- uvibe-2.16.1.post2/tests/core/test_mcp_oauth.py +496 -0
- uvibe-2.16.1.post2/tests/core/test_merge.py +183 -0
- uvibe-2.16.1.post2/tests/core/test_overrides_layer.py +89 -0
- uvibe-2.16.1.post2/tests/core/test_plan_session.py +42 -0
- uvibe-2.16.1.post2/tests/core/test_project_config_layer.py +292 -0
- uvibe-2.16.1.post2/tests/core/test_proxy_setup.py +304 -0
- uvibe-2.16.1.post2/tests/core/test_remote_agent_loop.py +937 -0
- uvibe-2.16.1.post2/tests/core/test_retry.py +160 -0
- uvibe-2.16.1.post2/tests/core/test_rewind_integration.py +303 -0
- uvibe-2.16.1.post2/tests/core/test_rewind_manager.py +594 -0
- uvibe-2.16.1.post2/tests/core/test_scratchpad.py +81 -0
- uvibe-2.16.1.post2/tests/core/test_slug.py +34 -0
- uvibe-2.16.1.post2/tests/core/test_sse.py +75 -0
- uvibe-2.16.1.post2/tests/core/test_telemetry_send.py +1045 -0
- uvibe-2.16.1.post2/tests/core/test_teleport_git.py +327 -0
- uvibe-2.16.1.post2/tests/core/test_teleport_nuage.py +219 -0
- uvibe-2.16.1.post2/tests/core/test_teleport_service.py +395 -0
- uvibe-2.16.1.post2/tests/core/test_teleport_telemetry.py +224 -0
- uvibe-2.16.1.post2/tests/core/test_text.py +29 -0
- uvibe-2.16.1.post2/tests/core/test_tokens.py +50 -0
- uvibe-2.16.1.post2/tests/core/test_transcribe_config.py +115 -0
- uvibe-2.16.1.post2/tests/core/test_trusted_folders.py +549 -0
- uvibe-2.16.1.post2/tests/core/test_tts_config.py +107 -0
- uvibe-2.16.1.post2/tests/core/test_user_config_layer.py +114 -0
- uvibe-2.16.1.post2/tests/core/test_utils.py +358 -0
- uvibe-2.16.1.post2/tests/core/test_vibe_config_schema.py +62 -0
- uvibe-2.16.1.post2/tests/core/test_watcher.py +50 -0
- uvibe-2.16.1.post2/tests/core/tools/builtins/test_edit.py +273 -0
- uvibe-2.16.1.post2/tests/core/tools/builtins/test_read.py +354 -0
- uvibe-2.16.1.post2/tests/e2e/common.py +145 -0
- uvibe-2.16.1.post2/tests/e2e/conftest.py +86 -0
- uvibe-2.16.1.post2/tests/e2e/mock_server.py +160 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_native_scroll.py +345 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_tui_fresh_install.py +113 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_tui_hooks.py +94 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_tui_onboarding.py +31 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_tui_session_exit.py +202 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_tui_streaming.py +55 -0
- uvibe-2.16.1.post2/tests/e2e/test_cli_tui_tool_approval.py +126 -0
- uvibe-2.16.1.post2/tests/e2e/test_native_scroll_multiparagraph.py +70 -0
- uvibe-2.16.1.post2/tests/mock/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/mock/mock_backend_factory.py +16 -0
- uvibe-2.16.1.post2/tests/mock/mock_entrypoint.py +65 -0
- uvibe-2.16.1.post2/tests/mock/utils.py +60 -0
- uvibe-2.16.1.post2/tests/narrator_manager/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/narrator_manager/test_narrator_manager.py +192 -0
- uvibe-2.16.1.post2/tests/narrator_manager/test_telemetry.py +61 -0
- uvibe-2.16.1.post2/tests/onboarding/test_run_onboarding.py +76 -0
- uvibe-2.16.1.post2/tests/onboarding/test_ui_onboarding.py +1280 -0
- uvibe-2.16.1.post2/tests/session/test_resume_sessions.py +307 -0
- uvibe-2.16.1.post2/tests/session/test_saved_sessions.py +330 -0
- uvibe-2.16.1.post2/tests/session/test_session_loader.py +1246 -0
- uvibe-2.16.1.post2/tests/session/test_session_logger.py +1270 -0
- uvibe-2.16.1.post2/tests/session/test_session_migration.py +177 -0
- uvibe-2.16.1.post2/tests/setup/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/setup/auth/test_auth_state.py +216 -0
- uvibe-2.16.1.post2/tests/setup/test_update_prompt_dialog.py +127 -0
- uvibe-2.16.1.post2/tests/skills/conftest.py +62 -0
- uvibe-2.16.1.post2/tests/skills/test_builtin_sync.py +67 -0
- uvibe-2.16.1.post2/tests/skills/test_manager.py +633 -0
- uvibe-2.16.1.post2/tests/skills/test_models.py +207 -0
- uvibe-2.16.1.post2/tests/skills/test_parser.py +115 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_clipboard_notice/test_snapshot_clipboard_notice_visible.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_escape_closes.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_initial.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_navigate_down.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_toggle_autocopy.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_config_issue_notification.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_hook_config_issue_notification.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_close.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_live_append.svg +203 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_open.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_long_content_after_resize.svg +220 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_long_content_bottom_lines_hidden.svg +179 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_short_content.svg +178 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_edit_diff/test_snapshot_edit_approval_diff.svg +188 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_edit_diff/test_snapshot_edit_approval_diff_ansi.svg +181 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_feedback_bar/test_snapshot_feedback_bar_visible.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_back_to_mcp.svg +203 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_opens_on_disconnected.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_show_url.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_backspace_returns_to_overview.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_broken_server.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connector_back_to_overview.svg +203 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_only.svg +204 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_sorted_by_status.svg +203 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_drill_into_connector.svg +201 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_enter_drills_into_server.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_escape_closes.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_help_bar_shows_connect.svg +203 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_no_servers.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview_navigate_down.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_refresh_shortcut.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_server_arg.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_with_connectors_overview.svg +203 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_escape_cancels.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_initial.svg +201 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_navigate_down.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_select_different_model.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_idle_after_speaking.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_speaking.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_summarizing.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_api_key/test_snapshot_onboarding_api_key_with_valid_input.svg +155 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-dark].svg +180 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-light].svg +180 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[dracula].svg +187 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +114 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +136 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +139 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +139 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +140 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +140 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +139 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_session_picker/test_snapshot_session_picker_header.svg +202 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_hidden_for_non_pro_account.svg +247 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_visible_for_pro_account.svg +247 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +105 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +105 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +105 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +95 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +95 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +94 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_tool_hooks/test_snapshot_tool_hooks.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_tool_hooks/test_snapshot_tool_hooks_expanded.svg +137 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog.svg +219 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_many_files.svg +220 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_small_terminal.svg +156 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_untrusted_repo.svg +220 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_with_repo.svg +221 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_update_prompt/test_snapshot_update_prompt_continue_selected.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_update_prompt/test_snapshot_update_prompt_initial.svg +138 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_indicator_shown.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_not_started_when_voice_disabled.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_stopped_after_keypress.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_then_conversation.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_transcription_populates_text_area.svg +200 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_disable.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_enable.svg +199 -0
- uvibe-2.16.1.post2/tests/snapshots/base_snapshot_test_app.py +75 -0
- uvibe-2.16.1.post2/tests/snapshots/conftest.py +29 -0
- uvibe-2.16.1.post2/tests/snapshots/snap_compare.py +20 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_clipboard_notice.py +25 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_config_app.py +64 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_config_issues.py +56 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_debug_console.py +90 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_diff_view_truncation.py +71 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_edit_diff.py +60 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_feedback_bar.py +45 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_mcp_command.py +409 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_model_picker.py +95 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_modes.py +88 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_narrator_flow.py +154 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_onboarding_api_key.py +54 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_onboarding_theme.py +33 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +115 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_proxy_setup.py +129 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_question_app.py +365 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_session_picker.py +51 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +75 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_teleport.py +317 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_tool_hooks.py +158 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_trust_folder_dialog.py +119 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_update_prompt.py +42 -0
- uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_voice_mode.py +164 -0
- uvibe-2.16.1.post2/tests/stubs/fake_audio_player.py +36 -0
- uvibe-2.16.1.post2/tests/stubs/fake_audio_recorder.py +65 -0
- uvibe-2.16.1.post2/tests/stubs/fake_backend.py +128 -0
- uvibe-2.16.1.post2/tests/stubs/fake_client.py +134 -0
- uvibe-2.16.1.post2/tests/stubs/fake_connector_registry.py +74 -0
- uvibe-2.16.1.post2/tests/stubs/fake_mcp_registry.py +62 -0
- uvibe-2.16.1.post2/tests/stubs/fake_tool.py +35 -0
- uvibe-2.16.1.post2/tests/stubs/fake_transcribe_client.py +25 -0
- uvibe-2.16.1.post2/tests/stubs/fake_tts_client.py +21 -0
- uvibe-2.16.1.post2/tests/stubs/fake_voice_manager.py +77 -0
- uvibe-2.16.1.post2/tests/test_agent_auto_compact.py +439 -0
- uvibe-2.16.1.post2/tests/test_agent_auto_title.py +83 -0
- uvibe-2.16.1.post2/tests/test_agent_backend.py +505 -0
- uvibe-2.16.1.post2/tests/test_agent_loop_images.py +193 -0
- uvibe-2.16.1.post2/tests/test_agent_loop_refresh_system_prompt.py +33 -0
- uvibe-2.16.1.post2/tests/test_agent_observer_streaming.py +831 -0
- uvibe-2.16.1.post2/tests/test_agent_override_resolve_permission.py +109 -0
- uvibe-2.16.1.post2/tests/test_agent_stats.py +752 -0
- uvibe-2.16.1.post2/tests/test_agent_tool_call.py +1044 -0
- uvibe-2.16.1.post2/tests/test_agents.py +765 -0
- uvibe-2.16.1.post2/tests/test_approve_always_permanent.py +122 -0
- uvibe-2.16.1.post2/tests/test_cli_programmatic_preload.py +187 -0
- uvibe-2.16.1.post2/tests/test_deferred_init.py +575 -0
- uvibe-2.16.1.post2/tests/test_history_manager.py +145 -0
- uvibe-2.16.1.post2/tests/test_install_script.py +198 -0
- uvibe-2.16.1.post2/tests/test_message_id.py +162 -0
- uvibe-2.16.1.post2/tests/test_middleware.py +665 -0
- uvibe-2.16.1.post2/tests/test_permission_store.py +166 -0
- uvibe-2.16.1.post2/tests/test_prepare_release.py +82 -0
- uvibe-2.16.1.post2/tests/test_reasoning_content.py +575 -0
- uvibe-2.16.1.post2/tests/test_system_prompt.py +148 -0
- uvibe-2.16.1.post2/tests/test_tagged_text.py +107 -0
- uvibe-2.16.1.post2/tests/test_tracing.py +381 -0
- uvibe-2.16.1.post2/tests/test_turn_summary.py +420 -0
- uvibe-2.16.1.post2/tests/test_ui_external_editor.py +69 -0
- uvibe-2.16.1.post2/tests/test_ui_input_history.py +332 -0
- uvibe-2.16.1.post2/tests/tools/test_arity.py +54 -0
- uvibe-2.16.1.post2/tests/tools/test_ask_user_question.py +188 -0
- uvibe-2.16.1.post2/tests/tools/test_bash.py +405 -0
- uvibe-2.16.1.post2/tests/tools/test_connectors.py +966 -0
- uvibe-2.16.1.post2/tests/tools/test_exit_plan_mode.py +282 -0
- uvibe-2.16.1.post2/tests/tools/test_granular_permissions.py +746 -0
- uvibe-2.16.1.post2/tests/tools/test_grep.py +369 -0
- uvibe-2.16.1.post2/tests/tools/test_invoke_context.py +112 -0
- uvibe-2.16.1.post2/tests/tools/test_manager_get_tool_config.py +505 -0
- uvibe-2.16.1.post2/tests/tools/test_mcp.py +970 -0
- uvibe-2.16.1.post2/tests/tools/test_mcp_sampling.py +188 -0
- uvibe-2.16.1.post2/tests/tools/test_scratchpad_permissions.py +89 -0
- uvibe-2.16.1.post2/tests/tools/test_skill.py +250 -0
- uvibe-2.16.1.post2/tests/tools/test_task.py +230 -0
- uvibe-2.16.1.post2/tests/tools/test_ui_bash_execution.py +235 -0
- uvibe-2.16.1.post2/tests/tools/test_webfetch.py +317 -0
- uvibe-2.16.1.post2/tests/tools/test_websearch.py +427 -0
- uvibe-2.16.1.post2/tests/tools/test_wildcard_match.py +66 -0
- uvibe-2.16.1.post2/tests/transcribe/test_transcribe_client.py +165 -0
- uvibe-2.16.1.post2/tests/tts/test_tts_client.py +114 -0
- uvibe-2.16.1.post2/tests/update_notifier/adapters/fake_update_cache_repository.py +17 -0
- uvibe-2.16.1.post2/tests/update_notifier/adapters/fake_update_gateway.py +22 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_do_update.py +74 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_filesystem_update_cache_repository.py +161 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_github_update_gateway.py +245 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_pypi_update_gateway.py +155 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_ui_update_notification.py +312 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_update_use_case.py +440 -0
- uvibe-2.16.1.post2/tests/update_notifier/test_whats_new.py +161 -0
- uvibe-2.16.1.post2/tests/voice_manager/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/voice_manager/test_telemetry.py +44 -0
- uvibe-2.16.1.post2/tests/voice_manager/test_voice_manager.py +594 -0
- uvibe-2.16.1.post2/tests/vscode_extension_promo/__init__.py +0 -0
- uvibe-2.16.1.post2/tests/vscode_extension_promo/fake_repository.py +17 -0
- uvibe-2.16.1.post2/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py +156 -0
- uvibe-2.16.1.post2/tests/vscode_extension_promo/test_vscode_extension_promo.py +74 -0
- uvibe-2.16.1.post2/uv.lock +2537 -0
- uvibe-2.16.1.post2/vibe/__init__.py +6 -0
- uvibe-2.16.1.post2/vibe/acp/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/acp/acp_agent_loop.py +2107 -0
- uvibe-2.16.1.post2/vibe/acp/acp_logger.py +97 -0
- uvibe-2.16.1.post2/vibe/acp/commands/__init__.py +5 -0
- uvibe-2.16.1.post2/vibe/acp/commands/registry.py +121 -0
- uvibe-2.16.1.post2/vibe/acp/entrypoint.py +112 -0
- uvibe-2.16.1.post2/vibe/acp/exceptions.py +195 -0
- uvibe-2.16.1.post2/vibe/acp/session.py +75 -0
- uvibe-2.16.1.post2/vibe/acp/teleport.py +334 -0
- uvibe-2.16.1.post2/vibe/acp/title.py +69 -0
- uvibe-2.16.1.post2/vibe/acp/tools/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/acp/tools/base.py +53 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/bash.py +168 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/edit.py +114 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/grep.py +79 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/read.py +132 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/skill.py +77 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/task.py +73 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/todo.py +68 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/web_fetch.py +83 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/web_search.py +78 -0
- uvibe-2.16.1.post2/vibe/acp/tools/builtins/write_file.py +104 -0
- uvibe-2.16.1.post2/vibe/acp/tools/events.py +8 -0
- uvibe-2.16.1.post2/vibe/acp/tools/session_update.py +196 -0
- uvibe-2.16.1.post2/vibe/acp/utils.py +343 -0
- uvibe-2.16.1.post2/vibe/cli/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/autocompletion/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/autocompletion/base.py +22 -0
- uvibe-2.16.1.post2/vibe/cli/autocompletion/path_completion.py +177 -0
- uvibe-2.16.1.post2/vibe/cli/autocompletion/slash_command.py +95 -0
- uvibe-2.16.1.post2/vibe/cli/cache.py +32 -0
- uvibe-2.16.1.post2/vibe/cli/cli.py +370 -0
- uvibe-2.16.1.post2/vibe/cli/clipboard.py +197 -0
- uvibe-2.16.1.post2/vibe/cli/commands.py +266 -0
- uvibe-2.16.1.post2/vibe/cli/entrypoint.py +230 -0
- uvibe-2.16.1.post2/vibe/cli/history_manager.py +105 -0
- uvibe-2.16.1.post2/vibe/cli/narrator_manager/__init__.py +15 -0
- uvibe-2.16.1.post2/vibe/cli/narrator_manager/narrator_manager.py +269 -0
- uvibe-2.16.1.post2/vibe/cli/narrator_manager/narrator_manager_port.py +45 -0
- uvibe-2.16.1.post2/vibe/cli/narrator_manager/telemetry.py +30 -0
- uvibe-2.16.1.post2/vibe/cli/plan_offer/adapters/http_whoami_gateway.py +45 -0
- uvibe-2.16.1.post2/vibe/cli/plan_offer/decide_plan_offer.py +147 -0
- uvibe-2.16.1.post2/vibe/cli/plan_offer/ports/whoami_gateway.py +67 -0
- uvibe-2.16.1.post2/vibe/cli/profiler.py +89 -0
- uvibe-2.16.1.post2/vibe/cli/stderr_guard.py +101 -0
- uvibe-2.16.1.post2/vibe/cli/terminal_detect.py +73 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/app.py +4065 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/app.tcss +1713 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/constants.py +11 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/external_editor.py +38 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/handlers/__init__.py +5 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/handlers/event_handler.py +321 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/inline_inject.py +10 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/message_queue.py +430 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/__init__.py +17 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/app_surfaces.py +96 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/committer.py +590 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/history_render.py +74 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/inline_inject.py +72 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/presentation.py +16 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/tool_result_render.py +299 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/widget_render.py +122 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/__init__.py +11 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +60 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/ports/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/ports/notification_port.py +16 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/quit_manager.py +64 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/recording/__init__.py +5 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/recording/recording_indicator.py +79 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/remote/__init__.py +8 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/remote/remote_session_manager.py +211 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/scheduled_loop_runner.py +99 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/scrollback_committer.py +7 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/session_exit.py +31 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/terminal_input_filter.py +47 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/tool_result_render.py +10 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/approval_app.py +270 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/banner/banner.py +167 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/banner/petit_chat.py +197 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/braille_renderer.py +58 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/__init__.py +7 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/body.py +308 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/completion_manager.py +62 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/completion_popup.py +76 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/container.py +283 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/input_kinds.py +59 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/paste_path.py +117 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/text_area.py +441 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/collapsible.py +115 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/compact.py +43 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/config_app.py +184 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/connector_auth_app.py +227 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/context_progress.py +30 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/debug_console.py +257 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/diff_rendering.py +165 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/feedback_bar.py +64 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/feedback_bar_manager.py +23 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/load_more.py +43 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/loading.py +246 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/mcp_app.py +646 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/messages.py +719 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/model_picker.py +75 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/narrator_status.py +65 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/no_markup_static.py +24 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/path_display.py +31 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/proxy_setup_app.py +122 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/question_app.py +562 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/rewind_app.py +147 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/session_picker.py +383 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/spinner.py +194 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/status_message.py +78 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/teleport_message.py +31 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/theme_picker.py +114 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/thinking_picker.py +79 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/tool_widgets.py +414 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/tools.py +268 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/voice_app.py +173 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/vscode_compat.py +26 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/__init__.py +29 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/history.py +112 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/history_windowing.py +68 -0
- uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/state.py +119 -0
- uvibe-2.16.1.post2/vibe/cli/turn_summary/__init__.py +20 -0
- uvibe-2.16.1.post2/vibe/cli/turn_summary/noop.py +38 -0
- uvibe-2.16.1.post2/vibe/cli/turn_summary/port.py +52 -0
- uvibe-2.16.1.post2/vibe/cli/turn_summary/tracker.py +147 -0
- uvibe-2.16.1.post2/vibe/cli/turn_summary/utils.py +30 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/__init__.py +51 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/adapters/filesystem_update_cache_repository.py +87 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/adapters/github_update_gateway.py +104 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/adapters/pypi_update_gateway.py +110 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/ports/update_cache_repository.py +17 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/ports/update_gateway.py +53 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/update.py +195 -0
- uvibe-2.16.1.post2/vibe/cli/update_notifier/whats_new.py +45 -0
- uvibe-2.16.1.post2/vibe/cli/voice_manager/__init__.py +15 -0
- uvibe-2.16.1.post2/vibe/cli/voice_manager/telemetry.py +30 -0
- uvibe-2.16.1.post2/vibe/cli/voice_manager/voice_manager.py +269 -0
- uvibe-2.16.1.post2/vibe/cli/voice_manager/voice_manager_port.py +58 -0
- uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/__init__.py +43 -0
- uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/_port.py +14 -0
- uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/adapters/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/adapters/filesystem_repository.py +43 -0
- uvibe-2.16.1.post2/vibe/core/__init__.py +15 -0
- uvibe-2.16.1.post2/vibe/core/agent_loop.py +2009 -0
- uvibe-2.16.1.post2/vibe/core/agent_loop_hooks.py +436 -0
- uvibe-2.16.1.post2/vibe/core/agents/__init__.py +29 -0
- uvibe-2.16.1.post2/vibe/core/agents/diagnostics.py +48 -0
- uvibe-2.16.1.post2/vibe/core/agents/manager.py +169 -0
- uvibe-2.16.1.post2/vibe/core/agents/models.py +208 -0
- uvibe-2.16.1.post2/vibe/core/audio_player/__init__.py +21 -0
- uvibe-2.16.1.post2/vibe/core/audio_player/audio_player.py +130 -0
- uvibe-2.16.1.post2/vibe/core/audio_player/audio_player_port.py +40 -0
- uvibe-2.16.1.post2/vibe/core/audio_player/utils.py +12 -0
- uvibe-2.16.1.post2/vibe/core/audio_recorder/__init__.py +23 -0
- uvibe-2.16.1.post2/vibe/core/audio_recorder/audio_recorder.py +287 -0
- uvibe-2.16.1.post2/vibe/core/audio_recorder/audio_recorder_port.py +64 -0
- uvibe-2.16.1.post2/vibe/core/auth/__init__.py +27 -0
- uvibe-2.16.1.post2/vibe/core/auth/mcp_oauth.py +427 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/completers.py +373 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/__init__.py +10 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/ignore_rules.py +170 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/indexer.py +187 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/store.py +188 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/watcher.py +75 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/fuzzy.py +189 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/path_prompt.py +153 -0
- uvibe-2.16.1.post2/vibe/core/autocompletion/path_prompt_adapter.py +181 -0
- uvibe-2.16.1.post2/vibe/core/compaction.py +130 -0
- uvibe-2.16.1.post2/vibe/core/config/__init__.py +138 -0
- uvibe-2.16.1.post2/vibe/core/config/_settings.py +1252 -0
- uvibe-2.16.1.post2/vibe/core/config/builder.py +122 -0
- uvibe-2.16.1.post2/vibe/core/config/fingerprint.py +41 -0
- uvibe-2.16.1.post2/vibe/core/config/harness_files/__init__.py +17 -0
- uvibe-2.16.1.post2/vibe/core/config/harness_files/_harness_manager.py +267 -0
- uvibe-2.16.1.post2/vibe/core/config/harness_files/_paths.py +9 -0
- uvibe-2.16.1.post2/vibe/core/config/layer.py +327 -0
- uvibe-2.16.1.post2/vibe/core/config/layers/__init__.py +13 -0
- uvibe-2.16.1.post2/vibe/core/config/layers/environment.py +48 -0
- uvibe-2.16.1.post2/vibe/core/config/layers/overrides.py +37 -0
- uvibe-2.16.1.post2/vibe/core/config/layers/project.py +98 -0
- uvibe-2.16.1.post2/vibe/core/config/layers/user.py +46 -0
- uvibe-2.16.1.post2/vibe/core/config/orchestrator.py +53 -0
- uvibe-2.16.1.post2/vibe/core/config/patch.py +101 -0
- uvibe-2.16.1.post2/vibe/core/config/schema.py +157 -0
- uvibe-2.16.1.post2/vibe/core/config/types.py +51 -0
- uvibe-2.16.1.post2/vibe/core/config/vibe_schema.py +246 -0
- uvibe-2.16.1.post2/vibe/core/data_retention.py +7 -0
- uvibe-2.16.1.post2/vibe/core/experiments/__init__.py +58 -0
- uvibe-2.16.1.post2/vibe/core/experiments/_constants.py +15 -0
- uvibe-2.16.1.post2/vibe/core/experiments/active.py +17 -0
- uvibe-2.16.1.post2/vibe/core/experiments/client.py +81 -0
- uvibe-2.16.1.post2/vibe/core/experiments/manager.py +110 -0
- uvibe-2.16.1.post2/vibe/core/experiments/models.py +79 -0
- uvibe-2.16.1.post2/vibe/core/experiments/session.py +85 -0
- uvibe-2.16.1.post2/vibe/core/feedback.py +39 -0
- uvibe-2.16.1.post2/vibe/core/hooks/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/core/hooks/_after_tool.py +135 -0
- uvibe-2.16.1.post2/vibe/core/hooks/_before_tool.py +128 -0
- uvibe-2.16.1.post2/vibe/core/hooks/_handler.py +171 -0
- uvibe-2.16.1.post2/vibe/core/hooks/_post_agent_turn.py +88 -0
- uvibe-2.16.1.post2/vibe/core/hooks/config.py +100 -0
- uvibe-2.16.1.post2/vibe/core/hooks/executor.py +119 -0
- uvibe-2.16.1.post2/vibe/core/hooks/manager.py +193 -0
- uvibe-2.16.1.post2/vibe/core/hooks/models.py +274 -0
- uvibe-2.16.1.post2/vibe/core/llm/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/_image.py +38 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/anthropic.py +633 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/base.py +39 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/factory.py +7 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/generic.py +444 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/mistral.py +453 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/openai_responses.py +653 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/reasoning_adapter.py +236 -0
- uvibe-2.16.1.post2/vibe/core/llm/backend/vertex.py +130 -0
- uvibe-2.16.1.post2/vibe/core/llm/exceptions.py +237 -0
- uvibe-2.16.1.post2/vibe/core/llm/format.py +185 -0
- uvibe-2.16.1.post2/vibe/core/llm/types.py +94 -0
- uvibe-2.16.1.post2/vibe/core/log_reader.py +226 -0
- uvibe-2.16.1.post2/vibe/core/logger.py +71 -0
- uvibe-2.16.1.post2/vibe/core/loop.py +250 -0
- uvibe-2.16.1.post2/vibe/core/middleware.py +266 -0
- uvibe-2.16.1.post2/vibe/core/nuage/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/core/nuage/agent_models.py +26 -0
- uvibe-2.16.1.post2/vibe/core/nuage/client.py +209 -0
- uvibe-2.16.1.post2/vibe/core/nuage/events.py +227 -0
- uvibe-2.16.1.post2/vibe/core/nuage/exceptions.py +46 -0
- uvibe-2.16.1.post2/vibe/core/nuage/remote_events_source.py +207 -0
- uvibe-2.16.1.post2/vibe/core/nuage/remote_workflow_event_models.py +137 -0
- uvibe-2.16.1.post2/vibe/core/nuage/remote_workflow_event_translator.py +1313 -0
- uvibe-2.16.1.post2/vibe/core/nuage/streaming.py +32 -0
- uvibe-2.16.1.post2/vibe/core/nuage/workflow.py +44 -0
- uvibe-2.16.1.post2/vibe/core/output_formatters.py +106 -0
- uvibe-2.16.1.post2/vibe/core/paths/__init__.py +41 -0
- uvibe-2.16.1.post2/vibe/core/paths/_agents_home.py +14 -0
- uvibe-2.16.1.post2/vibe/core/paths/_local_config_files.py +96 -0
- uvibe-2.16.1.post2/vibe/core/paths/_vibe_home.py +38 -0
- uvibe-2.16.1.post2/vibe/core/paths/conventions.py +3 -0
- uvibe-2.16.1.post2/vibe/core/plan_session.py +42 -0
- uvibe-2.16.1.post2/vibe/core/programmatic.py +101 -0
- uvibe-2.16.1.post2/vibe/core/prompts/__init__.py +112 -0
- uvibe-2.16.1.post2/vibe/core/prompts/agents_doc.md +5 -0
- uvibe-2.16.1.post2/vibe/core/prompts/cli.md +135 -0
- uvibe-2.16.1.post2/vibe/core/prompts/cli_2026-06_emoji.md +136 -0
- uvibe-2.16.1.post2/vibe/core/prompts/compact.md +12 -0
- uvibe-2.16.1.post2/vibe/core/prompts/compact_summary_prefix.md +1 -0
- uvibe-2.16.1.post2/vibe/core/prompts/dangerous_directory.md +5 -0
- uvibe-2.16.1.post2/vibe/core/prompts/explore.md +50 -0
- uvibe-2.16.1.post2/vibe/core/prompts/lean.md +159 -0
- uvibe-2.16.1.post2/vibe/core/prompts/minimal.md +12 -0
- uvibe-2.16.1.post2/vibe/core/prompts/project_context.md +4 -0
- uvibe-2.16.1.post2/vibe/core/prompts/tests.md +1 -0
- uvibe-2.16.1.post2/vibe/core/prompts/turn_summary.md +10 -0
- uvibe-2.16.1.post2/vibe/core/proxy_setup.py +65 -0
- uvibe-2.16.1.post2/vibe/core/rewind/__init__.py +10 -0
- uvibe-2.16.1.post2/vibe/core/rewind/manager.py +192 -0
- uvibe-2.16.1.post2/vibe/core/scratchpad.py +61 -0
- uvibe-2.16.1.post2/vibe/core/session/image_snapshot.py +56 -0
- uvibe-2.16.1.post2/vibe/core/session/last_session_pointer.py +132 -0
- uvibe-2.16.1.post2/vibe/core/session/resume_sessions.py +223 -0
- uvibe-2.16.1.post2/vibe/core/session/saved_sessions.py +87 -0
- uvibe-2.16.1.post2/vibe/core/session/session_id.py +34 -0
- uvibe-2.16.1.post2/vibe/core/session/session_loader.py +305 -0
- uvibe-2.16.1.post2/vibe/core/session/session_logger.py +456 -0
- uvibe-2.16.1.post2/vibe/core/session/session_migration.py +41 -0
- uvibe-2.16.1.post2/vibe/core/session/title_format.py +51 -0
- uvibe-2.16.1.post2/vibe/core/skills/__init__.py +13 -0
- uvibe-2.16.1.post2/vibe/core/skills/builtins/__init__.py +6 -0
- uvibe-2.16.1.post2/vibe/core/skills/builtins/vibe.py +735 -0
- uvibe-2.16.1.post2/vibe/core/skills/manager.py +193 -0
- uvibe-2.16.1.post2/vibe/core/skills/models.py +109 -0
- uvibe-2.16.1.post2/vibe/core/skills/parser.py +39 -0
- uvibe-2.16.1.post2/vibe/core/system_prompt.py +394 -0
- uvibe-2.16.1.post2/vibe/core/telemetry/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/core/telemetry/build_metadata.py +80 -0
- uvibe-2.16.1.post2/vibe/core/telemetry/send.py +405 -0
- uvibe-2.16.1.post2/vibe/core/telemetry/types.py +79 -0
- uvibe-2.16.1.post2/vibe/core/teleport/errors.py +17 -0
- uvibe-2.16.1.post2/vibe/core/teleport/git.py +222 -0
- uvibe-2.16.1.post2/vibe/core/teleport/nuage.py +160 -0
- uvibe-2.16.1.post2/vibe/core/teleport/telemetry.py +83 -0
- uvibe-2.16.1.post2/vibe/core/teleport/teleport.py +218 -0
- uvibe-2.16.1.post2/vibe/core/teleport/types.py +39 -0
- uvibe-2.16.1.post2/vibe/core/tools/arity.py +158 -0
- uvibe-2.16.1.post2/vibe/core/tools/base.py +407 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/ask_user_question.py +130 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/bash.py +560 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/edit.py +219 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/exit_plan_mode.py +137 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/grep.py +363 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/__init__.py +0 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/ask_user_question.md +84 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/bash.md +73 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/edit.md +19 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/grep.md +4 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/read.md +19 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/skill.md +19 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/task.md +24 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/todo.md +199 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/webfetch.md +7 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/websearch.md +25 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/write_file.md +27 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/read.py +238 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/skill.py +126 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/task.py +194 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/todo.py +129 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/webfetch.py +254 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/websearch.py +188 -0
- uvibe-2.16.1.post2/vibe/core/tools/builtins/write_file.py +141 -0
- uvibe-2.16.1.post2/vibe/core/tools/connectors/__init__.py +9 -0
- uvibe-2.16.1.post2/vibe/core/tools/connectors/connector_registry.py +508 -0
- uvibe-2.16.1.post2/vibe/core/tools/connectors/counts.py +26 -0
- uvibe-2.16.1.post2/vibe/core/tools/manager.py +455 -0
- uvibe-2.16.1.post2/vibe/core/tools/mcp/__init__.py +33 -0
- uvibe-2.16.1.post2/vibe/core/tools/mcp/registry.py +187 -0
- uvibe-2.16.1.post2/vibe/core/tools/mcp/tools.py +480 -0
- uvibe-2.16.1.post2/vibe/core/tools/mcp_sampling.py +126 -0
- uvibe-2.16.1.post2/vibe/core/tools/mcp_settings.py +75 -0
- uvibe-2.16.1.post2/vibe/core/tools/permissions.py +68 -0
- uvibe-2.16.1.post2/vibe/core/tools/ui.py +123 -0
- uvibe-2.16.1.post2/vibe/core/tools/utils.py +125 -0
- uvibe-2.16.1.post2/vibe/core/tracing.py +160 -0
- uvibe-2.16.1.post2/vibe/core/transcribe/__init__.py +23 -0
- uvibe-2.16.1.post2/vibe/core/transcribe/factory.py +19 -0
- uvibe-2.16.1.post2/vibe/core/transcribe/mistral_transcribe_client.py +85 -0
- uvibe-2.16.1.post2/vibe/core/transcribe/transcribe_client_port.py +44 -0
- uvibe-2.16.1.post2/vibe/core/trusted_folders.py +270 -0
- uvibe-2.16.1.post2/vibe/core/tts/__init__.py +7 -0
- uvibe-2.16.1.post2/vibe/core/tts/factory.py +15 -0
- uvibe-2.16.1.post2/vibe/core/tts/mistral_tts_client.py +58 -0
- uvibe-2.16.1.post2/vibe/core/tts/tts_client_port.py +19 -0
- uvibe-2.16.1.post2/vibe/core/types.py +640 -0
- uvibe-2.16.1.post2/vibe/core/utils/__init__.py +75 -0
- uvibe-2.16.1.post2/vibe/core/utils/async_subprocess.py +65 -0
- uvibe-2.16.1.post2/vibe/core/utils/concurrency.py +59 -0
- uvibe-2.16.1.post2/vibe/core/utils/display.py +19 -0
- uvibe-2.16.1.post2/vibe/core/utils/http.py +59 -0
- uvibe-2.16.1.post2/vibe/core/utils/io.py +241 -0
- uvibe-2.16.1.post2/vibe/core/utils/matching.py +35 -0
- uvibe-2.16.1.post2/vibe/core/utils/merge.py +115 -0
- uvibe-2.16.1.post2/vibe/core/utils/paths.py +42 -0
- uvibe-2.16.1.post2/vibe/core/utils/platform.py +45 -0
- uvibe-2.16.1.post2/vibe/core/utils/retry.py +138 -0
- uvibe-2.16.1.post2/vibe/core/utils/slug.py +113 -0
- uvibe-2.16.1.post2/vibe/core/utils/sse.py +27 -0
- uvibe-2.16.1.post2/vibe/core/utils/tags.py +80 -0
- uvibe-2.16.1.post2/vibe/core/utils/text.py +12 -0
- uvibe-2.16.1.post2/vibe/core/utils/time.py +7 -0
- uvibe-2.16.1.post2/vibe/core/utils/tokens.py +29 -0
- uvibe-2.16.1.post2/vibe/setup/auth/__init__.py +39 -0
- uvibe-2.16.1.post2/vibe/setup/auth/api_key_persistence.py +78 -0
- uvibe-2.16.1.post2/vibe/setup/auth/auth_state.py +151 -0
- uvibe-2.16.1.post2/vibe/setup/auth/browser_sign_in.py +212 -0
- uvibe-2.16.1.post2/vibe/setup/auth/browser_sign_in_gateway.py +55 -0
- uvibe-2.16.1.post2/vibe/setup/auth/http_browser_sign_in_gateway.py +355 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/__init__.py +154 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/base.py +14 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/context.py +219 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/gradient_text.py +30 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/onboarding.tcss +453 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/screens/__init__.py +15 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/screens/api_key.py +135 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/screens/auth_method.py +123 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/screens/browser_sign_in.py +534 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/screens/theme_selection.py +141 -0
- uvibe-2.16.1.post2/vibe/setup/onboarding/screens/welcome.py +117 -0
- uvibe-2.16.1.post2/vibe/setup/trusted_folders/trust_folder_dialog.py +301 -0
- uvibe-2.16.1.post2/vibe/setup/trusted_folders/trust_folder_dialog.tcss +170 -0
- uvibe-2.16.1.post2/vibe/setup/update_prompt/__init__.py +8 -0
- uvibe-2.16.1.post2/vibe/setup/update_prompt/update_prompt_dialog.py +221 -0
- uvibe-2.16.1.post2/vibe/setup/update_prompt/update_prompt_dialog.tcss +85 -0
- uvibe-2.16.1.post2/vibe/whats_new.md +4 -0
- uvibe-2.16.1.post2/vibe-acp.spec +74 -0
- uvibe-2.16.1.post2/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 Mistral Vibe
|
|
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 Mistral Vibe 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: "mistral-vibe 1.2.0 or Mistral Vibe VS Code 1.1.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,216 @@
|
|
|
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 vibe-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
|
+
shell: bash
|
|
78
|
+
run: bash ./scripts/ci/setup-linux-pyinstaller-build.sh
|
|
79
|
+
|
|
80
|
+
- name: Build PyInstaller binaries
|
|
81
|
+
shell: bash
|
|
82
|
+
run: bash ./scripts/ci/build-pyinstaller-binaries.sh vibe-acp.spec vibe.spec
|
|
83
|
+
|
|
84
|
+
- name: Clear executable stack on bundled libraries
|
|
85
|
+
if: ${{ matrix.os == 'linux' }}
|
|
86
|
+
shell: bash
|
|
87
|
+
run: bash ./scripts/ci/clear-linux-execstack.sh dist/vibe-acp-dir dist/vibe-dir
|
|
88
|
+
|
|
89
|
+
- name: Get package version
|
|
90
|
+
id: get_version
|
|
91
|
+
shell: bash
|
|
92
|
+
run: echo "version=$(uv version | cut -d' ' -f2)" >> $GITHUB_OUTPUT
|
|
93
|
+
|
|
94
|
+
- name: Upload ACP binary as artifact
|
|
95
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
96
|
+
with:
|
|
97
|
+
name: vibe-acp-${{ matrix.os }}-${{ matrix.arch }}-${{ steps.get_version.outputs.version }}
|
|
98
|
+
path: dist/vibe-acp-dir/
|
|
99
|
+
|
|
100
|
+
- name: Upload CLI binary as artifact
|
|
101
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
102
|
+
with:
|
|
103
|
+
name: vibe-${{ matrix.os }}-${{ matrix.arch }}-${{ steps.get_version.outputs.version }}
|
|
104
|
+
path: dist/vibe-dir/
|
|
105
|
+
|
|
106
|
+
nix-build:
|
|
107
|
+
needs: configure
|
|
108
|
+
name: "Nix build and upload: ${{ matrix.os }}-${{ matrix.arch }}"
|
|
109
|
+
permissions:
|
|
110
|
+
contents: read
|
|
111
|
+
strategy:
|
|
112
|
+
matrix: ${{ fromJSON(needs.configure.outputs.matrix) }}
|
|
113
|
+
runs-on: ${{ matrix.runner }}
|
|
114
|
+
steps:
|
|
115
|
+
- name: Checkout repository
|
|
116
|
+
if: matrix.os != 'windows'
|
|
117
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
118
|
+
|
|
119
|
+
- name: Install Nix
|
|
120
|
+
if: matrix.os != 'windows'
|
|
121
|
+
uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31
|
|
122
|
+
|
|
123
|
+
- name: Build with Nix
|
|
124
|
+
if: matrix.os != 'windows'
|
|
125
|
+
shell: bash
|
|
126
|
+
run: |
|
|
127
|
+
nix build .#
|
|
128
|
+
|
|
129
|
+
- name: Nix Smoke Test
|
|
130
|
+
if: matrix.os != 'windows'
|
|
131
|
+
shell: bash
|
|
132
|
+
run: |
|
|
133
|
+
nix run .# -- --version
|
|
134
|
+
|
|
135
|
+
smoke-test:
|
|
136
|
+
needs: [configure, build-and-upload]
|
|
137
|
+
name: "Test: ${{ matrix.os }}-${{ matrix.arch }}${{ matrix.tag && format('-{0}', matrix.tag) || '' }}"
|
|
138
|
+
permissions:
|
|
139
|
+
contents: read
|
|
140
|
+
strategy:
|
|
141
|
+
matrix: ${{ fromJSON(needs.configure.outputs.smoke_matrix) }}
|
|
142
|
+
runs-on: ${{ matrix.runner }}
|
|
143
|
+
container: ${{ matrix.container || '' }}
|
|
144
|
+
|
|
145
|
+
steps:
|
|
146
|
+
- name: Checkout repository
|
|
147
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
148
|
+
|
|
149
|
+
- name: Set up Python
|
|
150
|
+
if: ${{ !matrix.container }}
|
|
151
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
152
|
+
with:
|
|
153
|
+
python-version: "3.12"
|
|
154
|
+
|
|
155
|
+
- name: Set up Python (container)
|
|
156
|
+
if: ${{ matrix.container }}
|
|
157
|
+
run: yum install -y python3.11 python3.11-pip
|
|
158
|
+
|
|
159
|
+
- name: Install smoke test deps
|
|
160
|
+
run: ${{ matrix.container && 'python3.11' || 'python' }} -m pip install agent-client-protocol==0.10.1
|
|
161
|
+
|
|
162
|
+
- name: Download ACP artifact
|
|
163
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
|
|
164
|
+
with:
|
|
165
|
+
pattern: vibe-acp-${{ matrix.os }}-${{ matrix.arch }}-*
|
|
166
|
+
merge-multiple: true
|
|
167
|
+
path: dist/vibe-acp-dir
|
|
168
|
+
|
|
169
|
+
- name: Download CLI artifact
|
|
170
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
|
|
171
|
+
with:
|
|
172
|
+
pattern: vibe-${{ matrix.os }}-${{ matrix.arch }}-*
|
|
173
|
+
merge-multiple: true
|
|
174
|
+
path: dist/vibe-dir
|
|
175
|
+
|
|
176
|
+
- name: Run ACP smoke tests
|
|
177
|
+
run: ${{ matrix.container && 'python3.11' || 'python' }} tests/acp/smoke_binary.py dist/vibe-acp-dir
|
|
178
|
+
|
|
179
|
+
- name: Run CLI smoke tests
|
|
180
|
+
shell: bash
|
|
181
|
+
env:
|
|
182
|
+
PYTHON_BIN: ${{ matrix.container && 'python3.11' || 'python' }}
|
|
183
|
+
run: bash ./scripts/ci/smoke-pyinstaller-cli.sh dist/vibe-dir
|
|
184
|
+
|
|
185
|
+
attach-to-release:
|
|
186
|
+
needs: [build-and-upload, smoke-test]
|
|
187
|
+
runs-on: ubuntu-latest
|
|
188
|
+
if: github.event_name == 'release'
|
|
189
|
+
permissions:
|
|
190
|
+
contents: write
|
|
191
|
+
steps:
|
|
192
|
+
- name: Download all artifacts
|
|
193
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
|
|
194
|
+
with:
|
|
195
|
+
path: artifacts
|
|
196
|
+
|
|
197
|
+
- name: Zip artifacts
|
|
198
|
+
run: |
|
|
199
|
+
mkdir release-assets
|
|
200
|
+
for dir in artifacts/*; do
|
|
201
|
+
name=$(basename "$dir")
|
|
202
|
+
if [ -f "$dir/vibe-acp" ] || [ -f "$dir/vibe-acp.exe" ]; then
|
|
203
|
+
chmod -f +x "$dir/vibe-acp" 2>/dev/null || true
|
|
204
|
+
(cd "$dir" && zip -r "../../release-assets/${name}.zip" .)
|
|
205
|
+
elif [ -f "$dir/vibe" ] || [ -f "$dir/vibe.exe" ]; then
|
|
206
|
+
chmod -f +x "$dir/vibe" 2>/dev/null || true
|
|
207
|
+
(cd "$dir" && zip -r "../../release-assets/${name}.zip" .)
|
|
208
|
+
fi
|
|
209
|
+
done
|
|
210
|
+
|
|
211
|
+
- name: Attach binaries to release
|
|
212
|
+
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
|
|
213
|
+
with:
|
|
214
|
+
files: release-assets/*.zip
|
|
215
|
+
env:
|
|
216
|
+
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 vibe --help
|
|
81
|
+
uv run vibe-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
|