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.
Files changed (873) hide show
  1. uvibe-2.16.1.post2/.github/CODEOWNERS +7 -0
  2. uvibe-2.16.1.post2/.github/DISCUSSION_TEMPLATE/ideas.yml +46 -0
  3. uvibe-2.16.1.post2/.github/ISSUE_TEMPLATE/bug-report.yml +59 -0
  4. uvibe-2.16.1.post2/.github/ISSUE_TEMPLATE/config.yml +11 -0
  5. uvibe-2.16.1.post2/.github/workflows/build-and-upload.yml +216 -0
  6. uvibe-2.16.1.post2/.github/workflows/ci.yml +132 -0
  7. uvibe-2.16.1.post2/.github/workflows/issue-labeler.yml +62 -0
  8. uvibe-2.16.1.post2/.github/workflows/release.yml +45 -0
  9. uvibe-2.16.1.post2/.gitignore +209 -0
  10. uvibe-2.16.1.post2/.pre-commit-config.yaml +35 -0
  11. uvibe-2.16.1.post2/.python-version +1 -0
  12. uvibe-2.16.1.post2/.typos.toml +7 -0
  13. uvibe-2.16.1.post2/CHANGELOG.md +1058 -0
  14. uvibe-2.16.1.post2/CONTRIBUTING.md +211 -0
  15. uvibe-2.16.1.post2/LICENSE +201 -0
  16. uvibe-2.16.1.post2/PKG-INFO +913 -0
  17. uvibe-2.16.1.post2/README.md +793 -0
  18. uvibe-2.16.1.post2/action.yml +59 -0
  19. uvibe-2.16.1.post2/distribution/zed/LICENSE +1 -0
  20. uvibe-2.16.1.post2/distribution/zed/extension.toml +31 -0
  21. uvibe-2.16.1.post2/distribution/zed/icons/mistral_vibe.svg +12 -0
  22. uvibe-2.16.1.post2/docs/README.md +8 -0
  23. uvibe-2.16.1.post2/docs/acp-setup.md +68 -0
  24. uvibe-2.16.1.post2/docs/proxy-setup.md +36 -0
  25. uvibe-2.16.1.post2/flake.lock +133 -0
  26. uvibe-2.16.1.post2/flake.nix +149 -0
  27. uvibe-2.16.1.post2/pyinstaller/runtime_hook_truststore.py +6 -0
  28. uvibe-2.16.1.post2/pyproject.toml +259 -0
  29. uvibe-2.16.1.post2/scripts/README.md +37 -0
  30. uvibe-2.16.1.post2/scripts/bump_version.py +240 -0
  31. uvibe-2.16.1.post2/scripts/ci/build-pyinstaller-binaries.sh +13 -0
  32. uvibe-2.16.1.post2/scripts/ci/clear-linux-execstack.sh +22 -0
  33. uvibe-2.16.1.post2/scripts/ci/setup-linux-pyinstaller-build.sh +14 -0
  34. uvibe-2.16.1.post2/scripts/ci/smoke-pyinstaller-cli.sh +18 -0
  35. uvibe-2.16.1.post2/scripts/install.sh +191 -0
  36. uvibe-2.16.1.post2/scripts/prepare_release.py +462 -0
  37. uvibe-2.16.1.post2/tests/__init__.py +5 -0
  38. uvibe-2.16.1.post2/tests/acp/conftest.py +142 -0
  39. uvibe-2.16.1.post2/tests/acp/smoke_binary.py +284 -0
  40. uvibe-2.16.1.post2/tests/acp/test_acp.py +1017 -0
  41. uvibe-2.16.1.post2/tests/acp/test_acp_disabled_tools_merge.py +35 -0
  42. uvibe-2.16.1.post2/tests/acp/test_acp_entrypoint_smoke.py +350 -0
  43. uvibe-2.16.1.post2/tests/acp/test_acp_hooks.py +171 -0
  44. uvibe-2.16.1.post2/tests/acp/test_acp_title.py +112 -0
  45. uvibe-2.16.1.post2/tests/acp/test_agent_thought.py +161 -0
  46. uvibe-2.16.1.post2/tests/acp/test_auth_status.py +271 -0
  47. uvibe-2.16.1.post2/tests/acp/test_authenticate.py +387 -0
  48. uvibe-2.16.1.post2/tests/acp/test_bash.py +525 -0
  49. uvibe-2.16.1.post2/tests/acp/test_close_session.py +129 -0
  50. uvibe-2.16.1.post2/tests/acp/test_commands.py +672 -0
  51. uvibe-2.16.1.post2/tests/acp/test_compact_session_updates.py +119 -0
  52. uvibe-2.16.1.post2/tests/acp/test_content.py +147 -0
  53. uvibe-2.16.1.post2/tests/acp/test_edit.py +331 -0
  54. uvibe-2.16.1.post2/tests/acp/test_fork_session.py +192 -0
  55. uvibe-2.16.1.post2/tests/acp/test_initialize.py +280 -0
  56. uvibe-2.16.1.post2/tests/acp/test_list_sessions.py +242 -0
  57. uvibe-2.16.1.post2/tests/acp/test_load_session.py +540 -0
  58. uvibe-2.16.1.post2/tests/acp/test_message_id.py +156 -0
  59. uvibe-2.16.1.post2/tests/acp/test_multi_session.py +117 -0
  60. uvibe-2.16.1.post2/tests/acp/test_new_session.py +403 -0
  61. uvibe-2.16.1.post2/tests/acp/test_proxy_setup_acp.py +438 -0
  62. uvibe-2.16.1.post2/tests/acp/test_read.py +239 -0
  63. uvibe-2.16.1.post2/tests/acp/test_session.py +155 -0
  64. uvibe-2.16.1.post2/tests/acp/test_session_auto_title.py +92 -0
  65. uvibe-2.16.1.post2/tests/acp/test_session_delete.py +177 -0
  66. uvibe-2.16.1.post2/tests/acp/test_session_set_title.py +323 -0
  67. uvibe-2.16.1.post2/tests/acp/test_set_config_option.py +530 -0
  68. uvibe-2.16.1.post2/tests/acp/test_set_mode.py +201 -0
  69. uvibe-2.16.1.post2/tests/acp/test_set_model.py +306 -0
  70. uvibe-2.16.1.post2/tests/acp/test_telemetry_notification.py +110 -0
  71. uvibe-2.16.1.post2/tests/acp/test_todo.py +64 -0
  72. uvibe-2.16.1.post2/tests/acp/test_tool_call_session_update.py +42 -0
  73. uvibe-2.16.1.post2/tests/acp/test_tool_field_meta.py +297 -0
  74. uvibe-2.16.1.post2/tests/acp/test_usage_update.py +257 -0
  75. uvibe-2.16.1.post2/tests/acp/test_utils.py +126 -0
  76. uvibe-2.16.1.post2/tests/acp/test_write_file.py +333 -0
  77. uvibe-2.16.1.post2/tests/audio_player/test_audio_player.py +206 -0
  78. uvibe-2.16.1.post2/tests/audio_recorder/test_audio_recorder.py +451 -0
  79. uvibe-2.16.1.post2/tests/autocompletion/test_file_indexer.py +349 -0
  80. uvibe-2.16.1.post2/tests/autocompletion/test_fuzzy.py +96 -0
  81. uvibe-2.16.1.post2/tests/autocompletion/test_path_completer_fuzzy.py +350 -0
  82. uvibe-2.16.1.post2/tests/autocompletion/test_path_completer_recursive.py +69 -0
  83. uvibe-2.16.1.post2/tests/autocompletion/test_path_completion_controller.py +258 -0
  84. uvibe-2.16.1.post2/tests/autocompletion/test_path_prompt.py +120 -0
  85. uvibe-2.16.1.post2/tests/autocompletion/test_path_prompt_image.py +70 -0
  86. uvibe-2.16.1.post2/tests/autocompletion/test_path_prompt_transformer.py +142 -0
  87. uvibe-2.16.1.post2/tests/autocompletion/test_slash_command_controller.py +307 -0
  88. uvibe-2.16.1.post2/tests/autocompletion/test_ui_chat_autocompletion.py +339 -0
  89. uvibe-2.16.1.post2/tests/backend/__init__.py +0 -0
  90. uvibe-2.16.1.post2/tests/backend/data/__init__.py +6 -0
  91. uvibe-2.16.1.post2/tests/backend/data/fireworks.py +153 -0
  92. uvibe-2.16.1.post2/tests/backend/data/mistral.py +150 -0
  93. uvibe-2.16.1.post2/tests/backend/data/openai_responses.py +520 -0
  94. uvibe-2.16.1.post2/tests/backend/test_anthropic_adapter.py +613 -0
  95. uvibe-2.16.1.post2/tests/backend/test_backend.py +796 -0
  96. uvibe-2.16.1.post2/tests/backend/test_image_encoding_cache.py +68 -0
  97. uvibe-2.16.1.post2/tests/backend/test_image_mapping.py +146 -0
  98. uvibe-2.16.1.post2/tests/backend/test_openai_responses_adapter.py +1325 -0
  99. uvibe-2.16.1.post2/tests/backend/test_reasoning_adapter.py +254 -0
  100. uvibe-2.16.1.post2/tests/backend/test_ssl_integration.py +142 -0
  101. uvibe-2.16.1.post2/tests/backend/test_vertex_anthropic_adapter.py +638 -0
  102. uvibe-2.16.1.post2/tests/banner/__init__.py +0 -0
  103. uvibe-2.16.1.post2/tests/banner/test_banner_initial_state.py +294 -0
  104. uvibe-2.16.1.post2/tests/browser_sign_in/stubs.py +191 -0
  105. uvibe-2.16.1.post2/tests/browser_sign_in/test_browser_sign_in.py +382 -0
  106. uvibe-2.16.1.post2/tests/browser_sign_in/test_browser_sign_in_http.py +675 -0
  107. uvibe-2.16.1.post2/tests/cli/_inline_live_spike_app.py +81 -0
  108. uvibe-2.16.1.post2/tests/cli/_inline_spike_app.py +52 -0
  109. uvibe-2.16.1.post2/tests/cli/_inline_transient_spike_app.py +105 -0
  110. uvibe-2.16.1.post2/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +32 -0
  111. uvibe-2.16.1.post2/tests/cli/plan_offer/test_decide_plan_offer.py +325 -0
  112. uvibe-2.16.1.post2/tests/cli/plan_offer/test_http_whoami_gateway.py +224 -0
  113. uvibe-2.16.1.post2/tests/cli/smoke_binary.py +424 -0
  114. uvibe-2.16.1.post2/tests/cli/terminal_loop.py +131 -0
  115. uvibe-2.16.1.post2/tests/cli/test_approval_app_grace_period.py +78 -0
  116. uvibe-2.16.1.post2/tests/cli/test_bell_notifications.py +151 -0
  117. uvibe-2.16.1.post2/tests/cli/test_braille_renderer.py +114 -0
  118. uvibe-2.16.1.post2/tests/cli/test_cache.py +73 -0
  119. uvibe-2.16.1.post2/tests/cli/test_check_and_resolve_trusted_folder.py +193 -0
  120. uvibe-2.16.1.post2/tests/cli/test_clipboard.py +400 -0
  121. uvibe-2.16.1.post2/tests/cli/test_commands.py +190 -0
  122. uvibe-2.16.1.post2/tests/cli/test_compact_message.py +26 -0
  123. uvibe-2.16.1.post2/tests/cli/test_connector_auth_app.py +368 -0
  124. uvibe-2.16.1.post2/tests/cli/test_copy_command.py +53 -0
  125. uvibe-2.16.1.post2/tests/cli/test_copy_shortcuts.py +53 -0
  126. uvibe-2.16.1.post2/tests/cli/test_external_editor.py +72 -0
  127. uvibe-2.16.1.post2/tests/cli/test_feedback_bar.py +71 -0
  128. uvibe-2.16.1.post2/tests/cli/test_feedback_bar_manager.py +128 -0
  129. uvibe-2.16.1.post2/tests/cli/test_help.py +31 -0
  130. uvibe-2.16.1.post2/tests/cli/test_initial_agent_name.py +62 -0
  131. uvibe-2.16.1.post2/tests/cli/test_inline_inject.py +143 -0
  132. uvibe-2.16.1.post2/tests/cli/test_inline_scrollback_spike.py +153 -0
  133. uvibe-2.16.1.post2/tests/cli/test_mcp_app.py +445 -0
  134. uvibe-2.16.1.post2/tests/cli/test_native_scroll_history.py +194 -0
  135. uvibe-2.16.1.post2/tests/cli/test_native_scroll_interactive.py +432 -0
  136. uvibe-2.16.1.post2/tests/cli/test_native_scroll_local_input.py +204 -0
  137. uvibe-2.16.1.post2/tests/cli/test_native_scroll_routing.py +149 -0
  138. uvibe-2.16.1.post2/tests/cli/test_native_scroll_status_control.py +235 -0
  139. uvibe-2.16.1.post2/tests/cli/test_no_markup_static.py +19 -0
  140. uvibe-2.16.1.post2/tests/cli/test_programmatic_setup.py +226 -0
  141. uvibe-2.16.1.post2/tests/cli/test_question_app.py +718 -0
  142. uvibe-2.16.1.post2/tests/cli/test_question_app_grace_period.py +111 -0
  143. uvibe-2.16.1.post2/tests/cli/test_rename_command.py +158 -0
  144. uvibe-2.16.1.post2/tests/cli/test_scrollback_committer.py +807 -0
  145. uvibe-2.16.1.post2/tests/cli/test_scrollback_rendering.py +364 -0
  146. uvibe-2.16.1.post2/tests/cli/test_session_delete.py +230 -0
  147. uvibe-2.16.1.post2/tests/cli/test_spinner.py +16 -0
  148. uvibe-2.16.1.post2/tests/cli/test_startup_update_prompt.py +226 -0
  149. uvibe-2.16.1.post2/tests/cli/test_stderr_guard.py +73 -0
  150. uvibe-2.16.1.post2/tests/cli/test_switching_mode.py +109 -0
  151. uvibe-2.16.1.post2/tests/cli/test_terminal_detect.py +74 -0
  152. uvibe-2.16.1.post2/tests/cli/test_tool_result_render.py +235 -0
  153. uvibe-2.16.1.post2/tests/cli/test_typing_debounce.py +35 -0
  154. uvibe-2.16.1.post2/tests/cli/test_ui_clipboard_notifications.py +40 -0
  155. uvibe-2.16.1.post2/tests/cli/test_ui_config_and_model_picker.py +437 -0
  156. uvibe-2.16.1.post2/tests/cli/test_ui_session_exit.py +47 -0
  157. uvibe-2.16.1.post2/tests/cli/test_ui_session_incremental_renderer.py +100 -0
  158. uvibe-2.16.1.post2/tests/cli/test_ui_session_resume.py +211 -0
  159. uvibe-2.16.1.post2/tests/cli/test_ui_skill_dispatch.py +141 -0
  160. uvibe-2.16.1.post2/tests/cli/test_ui_teleport_availability.py +272 -0
  161. uvibe-2.16.1.post2/tests/cli/test_ui_theme_picker.py +93 -0
  162. uvibe-2.16.1.post2/tests/cli/textual_ui/__init__.py +0 -0
  163. uvibe-2.16.1.post2/tests/cli/textual_ui/test_chat_input_keybindings.py +64 -0
  164. uvibe-2.16.1.post2/tests/cli/textual_ui/test_completion_popup.py +12 -0
  165. uvibe-2.16.1.post2/tests/cli/textual_ui/test_debug_console_resize.py +68 -0
  166. uvibe-2.16.1.post2/tests/cli/textual_ui/test_diff_rendering.py +181 -0
  167. uvibe-2.16.1.post2/tests/cli/textual_ui/test_event_handler_hooks.py +362 -0
  168. uvibe-2.16.1.post2/tests/cli/textual_ui/test_image_input_validation.py +151 -0
  169. uvibe-2.16.1.post2/tests/cli/textual_ui/test_manual_command_output_cap.py +132 -0
  170. uvibe-2.16.1.post2/tests/cli/textual_ui/test_message_queue.py +149 -0
  171. uvibe-2.16.1.post2/tests/cli/textual_ui/test_message_queue_ui.py +207 -0
  172. uvibe-2.16.1.post2/tests/cli/textual_ui/test_paste_path.py +221 -0
  173. uvibe-2.16.1.post2/tests/cli/textual_ui/test_quit_confirmation.py +184 -0
  174. uvibe-2.16.1.post2/tests/cli/textual_ui/test_read_widget.py +80 -0
  175. uvibe-2.16.1.post2/tests/cli/textual_ui/test_remote_session_manager.py +286 -0
  176. uvibe-2.16.1.post2/tests/cli/textual_ui/test_session_picker.py +538 -0
  177. uvibe-2.16.1.post2/tests/cli/textual_ui/test_streaming_message_buffer.py +319 -0
  178. uvibe-2.16.1.post2/tests/cli/textual_ui/test_terminal_input_filter.py +75 -0
  179. uvibe-2.16.1.post2/tests/cli/textual_ui/test_user_message_attachments.py +76 -0
  180. uvibe-2.16.1.post2/tests/cli/textual_ui/windowing/test_session_windowing.py +47 -0
  181. uvibe-2.16.1.post2/tests/conftest.py +362 -0
  182. uvibe-2.16.1.post2/tests/core/experiments/__init__.py +0 -0
  183. uvibe-2.16.1.post2/tests/core/experiments/test_client.py +116 -0
  184. uvibe-2.16.1.post2/tests/core/experiments/test_manager.py +427 -0
  185. uvibe-2.16.1.post2/tests/core/experiments/test_models.py +68 -0
  186. uvibe-2.16.1.post2/tests/core/experiments/test_resume.py +168 -0
  187. uvibe-2.16.1.post2/tests/core/experiments/test_session_helpers.py +241 -0
  188. uvibe-2.16.1.post2/tests/core/experiments/test_system_prompt_variant.py +197 -0
  189. uvibe-2.16.1.post2/tests/core/experiments/test_telemetry_integration.py +31 -0
  190. uvibe-2.16.1.post2/tests/core/nuage/__init__.py +0 -0
  191. uvibe-2.16.1.post2/tests/core/nuage/test_remote_events_source.py +301 -0
  192. uvibe-2.16.1.post2/tests/core/nuage/test_workflows_client.py +248 -0
  193. uvibe-2.16.1.post2/tests/core/session/test_image_snapshot.py +71 -0
  194. uvibe-2.16.1.post2/tests/core/session/test_last_session_pointer.py +153 -0
  195. uvibe-2.16.1.post2/tests/core/session/test_session_id.py +79 -0
  196. uvibe-2.16.1.post2/tests/core/session/test_title_format.py +74 -0
  197. uvibe-2.16.1.post2/tests/core/test_add_dir.py +392 -0
  198. uvibe-2.16.1.post2/tests/core/test_agents.py +191 -0
  199. uvibe-2.16.1.post2/tests/core/test_backend_error.py +123 -0
  200. uvibe-2.16.1.post2/tests/core/test_build_attachment_counts.py +34 -0
  201. uvibe-2.16.1.post2/tests/core/test_build_ssl_context.py +134 -0
  202. uvibe-2.16.1.post2/tests/core/test_compaction.py +151 -0
  203. uvibe-2.16.1.post2/tests/core/test_config_builder.py +323 -0
  204. uvibe-2.16.1.post2/tests/core/test_config_field.py +216 -0
  205. uvibe-2.16.1.post2/tests/core/test_config_layer.py +579 -0
  206. uvibe-2.16.1.post2/tests/core/test_config_load_dotenv.py +81 -0
  207. uvibe-2.16.1.post2/tests/core/test_config_mcp_auth.py +213 -0
  208. uvibe-2.16.1.post2/tests/core/test_config_orchestrator.py +88 -0
  209. uvibe-2.16.1.post2/tests/core/test_config_otel.py +140 -0
  210. uvibe-2.16.1.post2/tests/core/test_config_patch_ops.py +257 -0
  211. uvibe-2.16.1.post2/tests/core/test_config_paths.py +553 -0
  212. uvibe-2.16.1.post2/tests/core/test_config_resolution.py +1579 -0
  213. uvibe-2.16.1.post2/tests/core/test_config_schema.py +128 -0
  214. uvibe-2.16.1.post2/tests/core/test_config_toml_end_to_end.py +71 -0
  215. uvibe-2.16.1.post2/tests/core/test_edit_encoding.py +86 -0
  216. uvibe-2.16.1.post2/tests/core/test_environment_layer.py +68 -0
  217. uvibe-2.16.1.post2/tests/core/test_file_logging.py +345 -0
  218. uvibe-2.16.1.post2/tests/core/test_fingerprint.py +118 -0
  219. uvibe-2.16.1.post2/tests/core/test_hooks.py +1908 -0
  220. uvibe-2.16.1.post2/tests/core/test_last_user_message.py +45 -0
  221. uvibe-2.16.1.post2/tests/core/test_llm_message_merge.py +51 -0
  222. uvibe-2.16.1.post2/tests/core/test_local_config_files.py +131 -0
  223. uvibe-2.16.1.post2/tests/core/test_log_reader.py +430 -0
  224. uvibe-2.16.1.post2/tests/core/test_loop.py +304 -0
  225. uvibe-2.16.1.post2/tests/core/test_mcp_oauth.py +496 -0
  226. uvibe-2.16.1.post2/tests/core/test_merge.py +183 -0
  227. uvibe-2.16.1.post2/tests/core/test_overrides_layer.py +89 -0
  228. uvibe-2.16.1.post2/tests/core/test_plan_session.py +42 -0
  229. uvibe-2.16.1.post2/tests/core/test_project_config_layer.py +292 -0
  230. uvibe-2.16.1.post2/tests/core/test_proxy_setup.py +304 -0
  231. uvibe-2.16.1.post2/tests/core/test_remote_agent_loop.py +937 -0
  232. uvibe-2.16.1.post2/tests/core/test_retry.py +160 -0
  233. uvibe-2.16.1.post2/tests/core/test_rewind_integration.py +303 -0
  234. uvibe-2.16.1.post2/tests/core/test_rewind_manager.py +594 -0
  235. uvibe-2.16.1.post2/tests/core/test_scratchpad.py +81 -0
  236. uvibe-2.16.1.post2/tests/core/test_slug.py +34 -0
  237. uvibe-2.16.1.post2/tests/core/test_sse.py +75 -0
  238. uvibe-2.16.1.post2/tests/core/test_telemetry_send.py +1045 -0
  239. uvibe-2.16.1.post2/tests/core/test_teleport_git.py +327 -0
  240. uvibe-2.16.1.post2/tests/core/test_teleport_nuage.py +219 -0
  241. uvibe-2.16.1.post2/tests/core/test_teleport_service.py +395 -0
  242. uvibe-2.16.1.post2/tests/core/test_teleport_telemetry.py +224 -0
  243. uvibe-2.16.1.post2/tests/core/test_text.py +29 -0
  244. uvibe-2.16.1.post2/tests/core/test_tokens.py +50 -0
  245. uvibe-2.16.1.post2/tests/core/test_transcribe_config.py +115 -0
  246. uvibe-2.16.1.post2/tests/core/test_trusted_folders.py +549 -0
  247. uvibe-2.16.1.post2/tests/core/test_tts_config.py +107 -0
  248. uvibe-2.16.1.post2/tests/core/test_user_config_layer.py +114 -0
  249. uvibe-2.16.1.post2/tests/core/test_utils.py +358 -0
  250. uvibe-2.16.1.post2/tests/core/test_vibe_config_schema.py +62 -0
  251. uvibe-2.16.1.post2/tests/core/test_watcher.py +50 -0
  252. uvibe-2.16.1.post2/tests/core/tools/builtins/test_edit.py +273 -0
  253. uvibe-2.16.1.post2/tests/core/tools/builtins/test_read.py +354 -0
  254. uvibe-2.16.1.post2/tests/e2e/common.py +145 -0
  255. uvibe-2.16.1.post2/tests/e2e/conftest.py +86 -0
  256. uvibe-2.16.1.post2/tests/e2e/mock_server.py +160 -0
  257. uvibe-2.16.1.post2/tests/e2e/test_cli_native_scroll.py +345 -0
  258. uvibe-2.16.1.post2/tests/e2e/test_cli_tui_fresh_install.py +113 -0
  259. uvibe-2.16.1.post2/tests/e2e/test_cli_tui_hooks.py +94 -0
  260. uvibe-2.16.1.post2/tests/e2e/test_cli_tui_onboarding.py +31 -0
  261. uvibe-2.16.1.post2/tests/e2e/test_cli_tui_session_exit.py +202 -0
  262. uvibe-2.16.1.post2/tests/e2e/test_cli_tui_streaming.py +55 -0
  263. uvibe-2.16.1.post2/tests/e2e/test_cli_tui_tool_approval.py +126 -0
  264. uvibe-2.16.1.post2/tests/e2e/test_native_scroll_multiparagraph.py +70 -0
  265. uvibe-2.16.1.post2/tests/mock/__init__.py +0 -0
  266. uvibe-2.16.1.post2/tests/mock/mock_backend_factory.py +16 -0
  267. uvibe-2.16.1.post2/tests/mock/mock_entrypoint.py +65 -0
  268. uvibe-2.16.1.post2/tests/mock/utils.py +60 -0
  269. uvibe-2.16.1.post2/tests/narrator_manager/__init__.py +0 -0
  270. uvibe-2.16.1.post2/tests/narrator_manager/test_narrator_manager.py +192 -0
  271. uvibe-2.16.1.post2/tests/narrator_manager/test_telemetry.py +61 -0
  272. uvibe-2.16.1.post2/tests/onboarding/test_run_onboarding.py +76 -0
  273. uvibe-2.16.1.post2/tests/onboarding/test_ui_onboarding.py +1280 -0
  274. uvibe-2.16.1.post2/tests/session/test_resume_sessions.py +307 -0
  275. uvibe-2.16.1.post2/tests/session/test_saved_sessions.py +330 -0
  276. uvibe-2.16.1.post2/tests/session/test_session_loader.py +1246 -0
  277. uvibe-2.16.1.post2/tests/session/test_session_logger.py +1270 -0
  278. uvibe-2.16.1.post2/tests/session/test_session_migration.py +177 -0
  279. uvibe-2.16.1.post2/tests/setup/__init__.py +0 -0
  280. uvibe-2.16.1.post2/tests/setup/auth/test_auth_state.py +216 -0
  281. uvibe-2.16.1.post2/tests/setup/test_update_prompt_dialog.py +127 -0
  282. uvibe-2.16.1.post2/tests/skills/conftest.py +62 -0
  283. uvibe-2.16.1.post2/tests/skills/test_builtin_sync.py +67 -0
  284. uvibe-2.16.1.post2/tests/skills/test_manager.py +633 -0
  285. uvibe-2.16.1.post2/tests/skills/test_models.py +207 -0
  286. uvibe-2.16.1.post2/tests/skills/test_parser.py +115 -0
  287. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_clipboard_notice/test_snapshot_clipboard_notice_visible.svg +199 -0
  288. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_escape_closes.svg +199 -0
  289. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_initial.svg +202 -0
  290. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_navigate_down.svg +202 -0
  291. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_toggle_autocopy.svg +202 -0
  292. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_config_issue_notification.svg +200 -0
  293. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_hook_config_issue_notification.svg +200 -0
  294. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_close.svg +199 -0
  295. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_live_append.svg +203 -0
  296. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_open.svg +202 -0
  297. 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
  298. 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
  299. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_short_content.svg +178 -0
  300. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_edit_diff/test_snapshot_edit_approval_diff.svg +188 -0
  301. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_edit_diff/test_snapshot_edit_approval_diff_ansi.svg +181 -0
  302. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_feedback_bar/test_snapshot_feedback_bar_visible.svg +200 -0
  303. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_back_to_mcp.svg +203 -0
  304. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_opens_on_disconnected.svg +200 -0
  305. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_show_url.svg +200 -0
  306. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_backspace_returns_to_overview.svg +202 -0
  307. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_broken_server.svg +202 -0
  308. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connector_back_to_overview.svg +203 -0
  309. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_only.svg +204 -0
  310. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_sorted_by_status.svg +203 -0
  311. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_drill_into_connector.svg +201 -0
  312. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_enter_drills_into_server.svg +200 -0
  313. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_escape_closes.svg +199 -0
  314. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_help_bar_shows_connect.svg +203 -0
  315. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_no_servers.svg +199 -0
  316. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview.svg +202 -0
  317. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview_navigate_down.svg +202 -0
  318. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_refresh_shortcut.svg +202 -0
  319. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_server_arg.svg +200 -0
  320. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_with_connectors_overview.svg +203 -0
  321. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_escape_cancels.svg +199 -0
  322. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_initial.svg +201 -0
  323. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_navigate_down.svg +202 -0
  324. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_select_different_model.svg +199 -0
  325. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +200 -0
  326. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +200 -0
  327. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +200 -0
  328. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +199 -0
  329. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +199 -0
  330. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_idle_after_speaking.svg +199 -0
  331. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_speaking.svg +200 -0
  332. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_summarizing.svg +200 -0
  333. 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
  334. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-dark].svg +180 -0
  335. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-light].svg +180 -0
  336. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[dracula].svg +187 -0
  337. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +114 -0
  338. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +136 -0
  339. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +199 -0
  340. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +199 -0
  341. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +200 -0
  342. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +200 -0
  343. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +199 -0
  344. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +199 -0
  345. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +138 -0
  346. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +138 -0
  347. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +138 -0
  348. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +138 -0
  349. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +138 -0
  350. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +138 -0
  351. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +137 -0
  352. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +139 -0
  353. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +138 -0
  354. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +139 -0
  355. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +137 -0
  356. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +137 -0
  357. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +137 -0
  358. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +137 -0
  359. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +137 -0
  360. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +140 -0
  361. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +137 -0
  362. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +140 -0
  363. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +139 -0
  364. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_session_picker/test_snapshot_session_picker_header.svg +202 -0
  365. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +94 -0
  366. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +94 -0
  367. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_hidden_for_non_pro_account.svg +247 -0
  368. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_visible_for_pro_account.svg +247 -0
  369. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +105 -0
  370. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +105 -0
  371. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +105 -0
  372. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +94 -0
  373. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +94 -0
  374. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +94 -0
  375. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +95 -0
  376. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +95 -0
  377. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +94 -0
  378. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +94 -0
  379. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +94 -0
  380. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_tool_hooks/test_snapshot_tool_hooks.svg +137 -0
  381. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_tool_hooks/test_snapshot_tool_hooks_expanded.svg +137 -0
  382. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog.svg +219 -0
  383. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_many_files.svg +220 -0
  384. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_small_terminal.svg +156 -0
  385. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_untrusted_repo.svg +220 -0
  386. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_with_repo.svg +221 -0
  387. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_update_prompt/test_snapshot_update_prompt_continue_selected.svg +138 -0
  388. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_update_prompt/test_snapshot_update_prompt_initial.svg +138 -0
  389. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_indicator_shown.svg +200 -0
  390. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_not_started_when_voice_disabled.svg +199 -0
  391. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_stopped_after_keypress.svg +199 -0
  392. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_then_conversation.svg +199 -0
  393. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_transcription_populates_text_area.svg +200 -0
  394. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_disable.svg +199 -0
  395. uvibe-2.16.1.post2/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_enable.svg +199 -0
  396. uvibe-2.16.1.post2/tests/snapshots/base_snapshot_test_app.py +75 -0
  397. uvibe-2.16.1.post2/tests/snapshots/conftest.py +29 -0
  398. uvibe-2.16.1.post2/tests/snapshots/snap_compare.py +20 -0
  399. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_clipboard_notice.py +25 -0
  400. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_config_app.py +64 -0
  401. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_config_issues.py +56 -0
  402. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_debug_console.py +90 -0
  403. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_diff_view_truncation.py +71 -0
  404. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_edit_diff.py +60 -0
  405. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_feedback_bar.py +45 -0
  406. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_mcp_command.py +409 -0
  407. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_model_picker.py +95 -0
  408. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_modes.py +88 -0
  409. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_narrator_flow.py +154 -0
  410. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_onboarding_api_key.py +54 -0
  411. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_onboarding_theme.py +33 -0
  412. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +115 -0
  413. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_proxy_setup.py +129 -0
  414. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_question_app.py +365 -0
  415. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_session_picker.py +51 -0
  416. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +75 -0
  417. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_teleport.py +317 -0
  418. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_tool_hooks.py +158 -0
  419. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_trust_folder_dialog.py +119 -0
  420. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_update_prompt.py +42 -0
  421. uvibe-2.16.1.post2/tests/snapshots/test_ui_snapshot_voice_mode.py +164 -0
  422. uvibe-2.16.1.post2/tests/stubs/fake_audio_player.py +36 -0
  423. uvibe-2.16.1.post2/tests/stubs/fake_audio_recorder.py +65 -0
  424. uvibe-2.16.1.post2/tests/stubs/fake_backend.py +128 -0
  425. uvibe-2.16.1.post2/tests/stubs/fake_client.py +134 -0
  426. uvibe-2.16.1.post2/tests/stubs/fake_connector_registry.py +74 -0
  427. uvibe-2.16.1.post2/tests/stubs/fake_mcp_registry.py +62 -0
  428. uvibe-2.16.1.post2/tests/stubs/fake_tool.py +35 -0
  429. uvibe-2.16.1.post2/tests/stubs/fake_transcribe_client.py +25 -0
  430. uvibe-2.16.1.post2/tests/stubs/fake_tts_client.py +21 -0
  431. uvibe-2.16.1.post2/tests/stubs/fake_voice_manager.py +77 -0
  432. uvibe-2.16.1.post2/tests/test_agent_auto_compact.py +439 -0
  433. uvibe-2.16.1.post2/tests/test_agent_auto_title.py +83 -0
  434. uvibe-2.16.1.post2/tests/test_agent_backend.py +505 -0
  435. uvibe-2.16.1.post2/tests/test_agent_loop_images.py +193 -0
  436. uvibe-2.16.1.post2/tests/test_agent_loop_refresh_system_prompt.py +33 -0
  437. uvibe-2.16.1.post2/tests/test_agent_observer_streaming.py +831 -0
  438. uvibe-2.16.1.post2/tests/test_agent_override_resolve_permission.py +109 -0
  439. uvibe-2.16.1.post2/tests/test_agent_stats.py +752 -0
  440. uvibe-2.16.1.post2/tests/test_agent_tool_call.py +1044 -0
  441. uvibe-2.16.1.post2/tests/test_agents.py +765 -0
  442. uvibe-2.16.1.post2/tests/test_approve_always_permanent.py +122 -0
  443. uvibe-2.16.1.post2/tests/test_cli_programmatic_preload.py +187 -0
  444. uvibe-2.16.1.post2/tests/test_deferred_init.py +575 -0
  445. uvibe-2.16.1.post2/tests/test_history_manager.py +145 -0
  446. uvibe-2.16.1.post2/tests/test_install_script.py +198 -0
  447. uvibe-2.16.1.post2/tests/test_message_id.py +162 -0
  448. uvibe-2.16.1.post2/tests/test_middleware.py +665 -0
  449. uvibe-2.16.1.post2/tests/test_permission_store.py +166 -0
  450. uvibe-2.16.1.post2/tests/test_prepare_release.py +82 -0
  451. uvibe-2.16.1.post2/tests/test_reasoning_content.py +575 -0
  452. uvibe-2.16.1.post2/tests/test_system_prompt.py +148 -0
  453. uvibe-2.16.1.post2/tests/test_tagged_text.py +107 -0
  454. uvibe-2.16.1.post2/tests/test_tracing.py +381 -0
  455. uvibe-2.16.1.post2/tests/test_turn_summary.py +420 -0
  456. uvibe-2.16.1.post2/tests/test_ui_external_editor.py +69 -0
  457. uvibe-2.16.1.post2/tests/test_ui_input_history.py +332 -0
  458. uvibe-2.16.1.post2/tests/tools/test_arity.py +54 -0
  459. uvibe-2.16.1.post2/tests/tools/test_ask_user_question.py +188 -0
  460. uvibe-2.16.1.post2/tests/tools/test_bash.py +405 -0
  461. uvibe-2.16.1.post2/tests/tools/test_connectors.py +966 -0
  462. uvibe-2.16.1.post2/tests/tools/test_exit_plan_mode.py +282 -0
  463. uvibe-2.16.1.post2/tests/tools/test_granular_permissions.py +746 -0
  464. uvibe-2.16.1.post2/tests/tools/test_grep.py +369 -0
  465. uvibe-2.16.1.post2/tests/tools/test_invoke_context.py +112 -0
  466. uvibe-2.16.1.post2/tests/tools/test_manager_get_tool_config.py +505 -0
  467. uvibe-2.16.1.post2/tests/tools/test_mcp.py +970 -0
  468. uvibe-2.16.1.post2/tests/tools/test_mcp_sampling.py +188 -0
  469. uvibe-2.16.1.post2/tests/tools/test_scratchpad_permissions.py +89 -0
  470. uvibe-2.16.1.post2/tests/tools/test_skill.py +250 -0
  471. uvibe-2.16.1.post2/tests/tools/test_task.py +230 -0
  472. uvibe-2.16.1.post2/tests/tools/test_ui_bash_execution.py +235 -0
  473. uvibe-2.16.1.post2/tests/tools/test_webfetch.py +317 -0
  474. uvibe-2.16.1.post2/tests/tools/test_websearch.py +427 -0
  475. uvibe-2.16.1.post2/tests/tools/test_wildcard_match.py +66 -0
  476. uvibe-2.16.1.post2/tests/transcribe/test_transcribe_client.py +165 -0
  477. uvibe-2.16.1.post2/tests/tts/test_tts_client.py +114 -0
  478. uvibe-2.16.1.post2/tests/update_notifier/adapters/fake_update_cache_repository.py +17 -0
  479. uvibe-2.16.1.post2/tests/update_notifier/adapters/fake_update_gateway.py +22 -0
  480. uvibe-2.16.1.post2/tests/update_notifier/test_do_update.py +74 -0
  481. uvibe-2.16.1.post2/tests/update_notifier/test_filesystem_update_cache_repository.py +161 -0
  482. uvibe-2.16.1.post2/tests/update_notifier/test_github_update_gateway.py +245 -0
  483. uvibe-2.16.1.post2/tests/update_notifier/test_pypi_update_gateway.py +155 -0
  484. uvibe-2.16.1.post2/tests/update_notifier/test_ui_update_notification.py +312 -0
  485. uvibe-2.16.1.post2/tests/update_notifier/test_update_use_case.py +440 -0
  486. uvibe-2.16.1.post2/tests/update_notifier/test_whats_new.py +161 -0
  487. uvibe-2.16.1.post2/tests/voice_manager/__init__.py +0 -0
  488. uvibe-2.16.1.post2/tests/voice_manager/test_telemetry.py +44 -0
  489. uvibe-2.16.1.post2/tests/voice_manager/test_voice_manager.py +594 -0
  490. uvibe-2.16.1.post2/tests/vscode_extension_promo/__init__.py +0 -0
  491. uvibe-2.16.1.post2/tests/vscode_extension_promo/fake_repository.py +17 -0
  492. uvibe-2.16.1.post2/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py +156 -0
  493. uvibe-2.16.1.post2/tests/vscode_extension_promo/test_vscode_extension_promo.py +74 -0
  494. uvibe-2.16.1.post2/uv.lock +2537 -0
  495. uvibe-2.16.1.post2/vibe/__init__.py +6 -0
  496. uvibe-2.16.1.post2/vibe/acp/__init__.py +0 -0
  497. uvibe-2.16.1.post2/vibe/acp/acp_agent_loop.py +2107 -0
  498. uvibe-2.16.1.post2/vibe/acp/acp_logger.py +97 -0
  499. uvibe-2.16.1.post2/vibe/acp/commands/__init__.py +5 -0
  500. uvibe-2.16.1.post2/vibe/acp/commands/registry.py +121 -0
  501. uvibe-2.16.1.post2/vibe/acp/entrypoint.py +112 -0
  502. uvibe-2.16.1.post2/vibe/acp/exceptions.py +195 -0
  503. uvibe-2.16.1.post2/vibe/acp/session.py +75 -0
  504. uvibe-2.16.1.post2/vibe/acp/teleport.py +334 -0
  505. uvibe-2.16.1.post2/vibe/acp/title.py +69 -0
  506. uvibe-2.16.1.post2/vibe/acp/tools/__init__.py +0 -0
  507. uvibe-2.16.1.post2/vibe/acp/tools/base.py +53 -0
  508. uvibe-2.16.1.post2/vibe/acp/tools/builtins/bash.py +168 -0
  509. uvibe-2.16.1.post2/vibe/acp/tools/builtins/edit.py +114 -0
  510. uvibe-2.16.1.post2/vibe/acp/tools/builtins/grep.py +79 -0
  511. uvibe-2.16.1.post2/vibe/acp/tools/builtins/read.py +132 -0
  512. uvibe-2.16.1.post2/vibe/acp/tools/builtins/skill.py +77 -0
  513. uvibe-2.16.1.post2/vibe/acp/tools/builtins/task.py +73 -0
  514. uvibe-2.16.1.post2/vibe/acp/tools/builtins/todo.py +68 -0
  515. uvibe-2.16.1.post2/vibe/acp/tools/builtins/web_fetch.py +83 -0
  516. uvibe-2.16.1.post2/vibe/acp/tools/builtins/web_search.py +78 -0
  517. uvibe-2.16.1.post2/vibe/acp/tools/builtins/write_file.py +104 -0
  518. uvibe-2.16.1.post2/vibe/acp/tools/events.py +8 -0
  519. uvibe-2.16.1.post2/vibe/acp/tools/session_update.py +196 -0
  520. uvibe-2.16.1.post2/vibe/acp/utils.py +343 -0
  521. uvibe-2.16.1.post2/vibe/cli/__init__.py +0 -0
  522. uvibe-2.16.1.post2/vibe/cli/autocompletion/__init__.py +0 -0
  523. uvibe-2.16.1.post2/vibe/cli/autocompletion/base.py +22 -0
  524. uvibe-2.16.1.post2/vibe/cli/autocompletion/path_completion.py +177 -0
  525. uvibe-2.16.1.post2/vibe/cli/autocompletion/slash_command.py +95 -0
  526. uvibe-2.16.1.post2/vibe/cli/cache.py +32 -0
  527. uvibe-2.16.1.post2/vibe/cli/cli.py +370 -0
  528. uvibe-2.16.1.post2/vibe/cli/clipboard.py +197 -0
  529. uvibe-2.16.1.post2/vibe/cli/commands.py +266 -0
  530. uvibe-2.16.1.post2/vibe/cli/entrypoint.py +230 -0
  531. uvibe-2.16.1.post2/vibe/cli/history_manager.py +105 -0
  532. uvibe-2.16.1.post2/vibe/cli/narrator_manager/__init__.py +15 -0
  533. uvibe-2.16.1.post2/vibe/cli/narrator_manager/narrator_manager.py +269 -0
  534. uvibe-2.16.1.post2/vibe/cli/narrator_manager/narrator_manager_port.py +45 -0
  535. uvibe-2.16.1.post2/vibe/cli/narrator_manager/telemetry.py +30 -0
  536. uvibe-2.16.1.post2/vibe/cli/plan_offer/adapters/http_whoami_gateway.py +45 -0
  537. uvibe-2.16.1.post2/vibe/cli/plan_offer/decide_plan_offer.py +147 -0
  538. uvibe-2.16.1.post2/vibe/cli/plan_offer/ports/whoami_gateway.py +67 -0
  539. uvibe-2.16.1.post2/vibe/cli/profiler.py +89 -0
  540. uvibe-2.16.1.post2/vibe/cli/stderr_guard.py +101 -0
  541. uvibe-2.16.1.post2/vibe/cli/terminal_detect.py +73 -0
  542. uvibe-2.16.1.post2/vibe/cli/textual_ui/__init__.py +0 -0
  543. uvibe-2.16.1.post2/vibe/cli/textual_ui/app.py +4065 -0
  544. uvibe-2.16.1.post2/vibe/cli/textual_ui/app.tcss +1713 -0
  545. uvibe-2.16.1.post2/vibe/cli/textual_ui/constants.py +11 -0
  546. uvibe-2.16.1.post2/vibe/cli/textual_ui/external_editor.py +38 -0
  547. uvibe-2.16.1.post2/vibe/cli/textual_ui/handlers/__init__.py +5 -0
  548. uvibe-2.16.1.post2/vibe/cli/textual_ui/handlers/event_handler.py +321 -0
  549. uvibe-2.16.1.post2/vibe/cli/textual_ui/inline_inject.py +10 -0
  550. uvibe-2.16.1.post2/vibe/cli/textual_ui/message_queue.py +430 -0
  551. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/__init__.py +17 -0
  552. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/app_surfaces.py +96 -0
  553. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/committer.py +590 -0
  554. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/history_render.py +74 -0
  555. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/inline_inject.py +72 -0
  556. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/presentation.py +16 -0
  557. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/tool_result_render.py +299 -0
  558. uvibe-2.16.1.post2/vibe/cli/textual_ui/native_scroll/widget_render.py +122 -0
  559. uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/__init__.py +11 -0
  560. uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  561. uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +60 -0
  562. uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/ports/__init__.py +0 -0
  563. uvibe-2.16.1.post2/vibe/cli/textual_ui/notifications/ports/notification_port.py +16 -0
  564. uvibe-2.16.1.post2/vibe/cli/textual_ui/quit_manager.py +64 -0
  565. uvibe-2.16.1.post2/vibe/cli/textual_ui/recording/__init__.py +5 -0
  566. uvibe-2.16.1.post2/vibe/cli/textual_ui/recording/recording_indicator.py +79 -0
  567. uvibe-2.16.1.post2/vibe/cli/textual_ui/remote/__init__.py +8 -0
  568. uvibe-2.16.1.post2/vibe/cli/textual_ui/remote/remote_session_manager.py +211 -0
  569. uvibe-2.16.1.post2/vibe/cli/textual_ui/scheduled_loop_runner.py +99 -0
  570. uvibe-2.16.1.post2/vibe/cli/textual_ui/scrollback_committer.py +7 -0
  571. uvibe-2.16.1.post2/vibe/cli/textual_ui/session_exit.py +31 -0
  572. uvibe-2.16.1.post2/vibe/cli/textual_ui/terminal_input_filter.py +47 -0
  573. uvibe-2.16.1.post2/vibe/cli/textual_ui/tool_result_render.py +10 -0
  574. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/__init__.py +0 -0
  575. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/approval_app.py +270 -0
  576. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/banner/banner.py +167 -0
  577. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/banner/petit_chat.py +197 -0
  578. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/braille_renderer.py +58 -0
  579. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/__init__.py +7 -0
  580. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/body.py +308 -0
  581. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/completion_manager.py +62 -0
  582. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/completion_popup.py +76 -0
  583. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/container.py +283 -0
  584. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/input_kinds.py +59 -0
  585. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/paste_path.py +117 -0
  586. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/chat_input/text_area.py +441 -0
  587. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/collapsible.py +115 -0
  588. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/compact.py +43 -0
  589. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/config_app.py +184 -0
  590. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/connector_auth_app.py +227 -0
  591. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/context_progress.py +30 -0
  592. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/debug_console.py +257 -0
  593. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/diff_rendering.py +165 -0
  594. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/feedback_bar.py +64 -0
  595. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/feedback_bar_manager.py +23 -0
  596. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/load_more.py +43 -0
  597. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/loading.py +246 -0
  598. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/mcp_app.py +646 -0
  599. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/messages.py +719 -0
  600. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/model_picker.py +75 -0
  601. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/narrator_status.py +65 -0
  602. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/no_markup_static.py +24 -0
  603. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/path_display.py +31 -0
  604. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/proxy_setup_app.py +122 -0
  605. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/question_app.py +562 -0
  606. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/rewind_app.py +147 -0
  607. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/session_picker.py +383 -0
  608. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/spinner.py +194 -0
  609. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/status_message.py +78 -0
  610. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/teleport_message.py +31 -0
  611. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/theme_picker.py +114 -0
  612. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/thinking_picker.py +79 -0
  613. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/tool_widgets.py +414 -0
  614. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/tools.py +268 -0
  615. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/voice_app.py +173 -0
  616. uvibe-2.16.1.post2/vibe/cli/textual_ui/widgets/vscode_compat.py +26 -0
  617. uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/__init__.py +29 -0
  618. uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/history.py +112 -0
  619. uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/history_windowing.py +68 -0
  620. uvibe-2.16.1.post2/vibe/cli/textual_ui/windowing/state.py +119 -0
  621. uvibe-2.16.1.post2/vibe/cli/turn_summary/__init__.py +20 -0
  622. uvibe-2.16.1.post2/vibe/cli/turn_summary/noop.py +38 -0
  623. uvibe-2.16.1.post2/vibe/cli/turn_summary/port.py +52 -0
  624. uvibe-2.16.1.post2/vibe/cli/turn_summary/tracker.py +147 -0
  625. uvibe-2.16.1.post2/vibe/cli/turn_summary/utils.py +30 -0
  626. uvibe-2.16.1.post2/vibe/cli/update_notifier/__init__.py +51 -0
  627. uvibe-2.16.1.post2/vibe/cli/update_notifier/adapters/filesystem_update_cache_repository.py +87 -0
  628. uvibe-2.16.1.post2/vibe/cli/update_notifier/adapters/github_update_gateway.py +104 -0
  629. uvibe-2.16.1.post2/vibe/cli/update_notifier/adapters/pypi_update_gateway.py +110 -0
  630. uvibe-2.16.1.post2/vibe/cli/update_notifier/ports/update_cache_repository.py +17 -0
  631. uvibe-2.16.1.post2/vibe/cli/update_notifier/ports/update_gateway.py +53 -0
  632. uvibe-2.16.1.post2/vibe/cli/update_notifier/update.py +195 -0
  633. uvibe-2.16.1.post2/vibe/cli/update_notifier/whats_new.py +45 -0
  634. uvibe-2.16.1.post2/vibe/cli/voice_manager/__init__.py +15 -0
  635. uvibe-2.16.1.post2/vibe/cli/voice_manager/telemetry.py +30 -0
  636. uvibe-2.16.1.post2/vibe/cli/voice_manager/voice_manager.py +269 -0
  637. uvibe-2.16.1.post2/vibe/cli/voice_manager/voice_manager_port.py +58 -0
  638. uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/__init__.py +43 -0
  639. uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/_port.py +14 -0
  640. uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/adapters/__init__.py +0 -0
  641. uvibe-2.16.1.post2/vibe/cli/vscode_extension_promo/adapters/filesystem_repository.py +43 -0
  642. uvibe-2.16.1.post2/vibe/core/__init__.py +15 -0
  643. uvibe-2.16.1.post2/vibe/core/agent_loop.py +2009 -0
  644. uvibe-2.16.1.post2/vibe/core/agent_loop_hooks.py +436 -0
  645. uvibe-2.16.1.post2/vibe/core/agents/__init__.py +29 -0
  646. uvibe-2.16.1.post2/vibe/core/agents/diagnostics.py +48 -0
  647. uvibe-2.16.1.post2/vibe/core/agents/manager.py +169 -0
  648. uvibe-2.16.1.post2/vibe/core/agents/models.py +208 -0
  649. uvibe-2.16.1.post2/vibe/core/audio_player/__init__.py +21 -0
  650. uvibe-2.16.1.post2/vibe/core/audio_player/audio_player.py +130 -0
  651. uvibe-2.16.1.post2/vibe/core/audio_player/audio_player_port.py +40 -0
  652. uvibe-2.16.1.post2/vibe/core/audio_player/utils.py +12 -0
  653. uvibe-2.16.1.post2/vibe/core/audio_recorder/__init__.py +23 -0
  654. uvibe-2.16.1.post2/vibe/core/audio_recorder/audio_recorder.py +287 -0
  655. uvibe-2.16.1.post2/vibe/core/audio_recorder/audio_recorder_port.py +64 -0
  656. uvibe-2.16.1.post2/vibe/core/auth/__init__.py +27 -0
  657. uvibe-2.16.1.post2/vibe/core/auth/mcp_oauth.py +427 -0
  658. uvibe-2.16.1.post2/vibe/core/autocompletion/__init__.py +0 -0
  659. uvibe-2.16.1.post2/vibe/core/autocompletion/completers.py +373 -0
  660. uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/__init__.py +10 -0
  661. uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/ignore_rules.py +170 -0
  662. uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/indexer.py +187 -0
  663. uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/store.py +188 -0
  664. uvibe-2.16.1.post2/vibe/core/autocompletion/file_indexer/watcher.py +75 -0
  665. uvibe-2.16.1.post2/vibe/core/autocompletion/fuzzy.py +189 -0
  666. uvibe-2.16.1.post2/vibe/core/autocompletion/path_prompt.py +153 -0
  667. uvibe-2.16.1.post2/vibe/core/autocompletion/path_prompt_adapter.py +181 -0
  668. uvibe-2.16.1.post2/vibe/core/compaction.py +130 -0
  669. uvibe-2.16.1.post2/vibe/core/config/__init__.py +138 -0
  670. uvibe-2.16.1.post2/vibe/core/config/_settings.py +1252 -0
  671. uvibe-2.16.1.post2/vibe/core/config/builder.py +122 -0
  672. uvibe-2.16.1.post2/vibe/core/config/fingerprint.py +41 -0
  673. uvibe-2.16.1.post2/vibe/core/config/harness_files/__init__.py +17 -0
  674. uvibe-2.16.1.post2/vibe/core/config/harness_files/_harness_manager.py +267 -0
  675. uvibe-2.16.1.post2/vibe/core/config/harness_files/_paths.py +9 -0
  676. uvibe-2.16.1.post2/vibe/core/config/layer.py +327 -0
  677. uvibe-2.16.1.post2/vibe/core/config/layers/__init__.py +13 -0
  678. uvibe-2.16.1.post2/vibe/core/config/layers/environment.py +48 -0
  679. uvibe-2.16.1.post2/vibe/core/config/layers/overrides.py +37 -0
  680. uvibe-2.16.1.post2/vibe/core/config/layers/project.py +98 -0
  681. uvibe-2.16.1.post2/vibe/core/config/layers/user.py +46 -0
  682. uvibe-2.16.1.post2/vibe/core/config/orchestrator.py +53 -0
  683. uvibe-2.16.1.post2/vibe/core/config/patch.py +101 -0
  684. uvibe-2.16.1.post2/vibe/core/config/schema.py +157 -0
  685. uvibe-2.16.1.post2/vibe/core/config/types.py +51 -0
  686. uvibe-2.16.1.post2/vibe/core/config/vibe_schema.py +246 -0
  687. uvibe-2.16.1.post2/vibe/core/data_retention.py +7 -0
  688. uvibe-2.16.1.post2/vibe/core/experiments/__init__.py +58 -0
  689. uvibe-2.16.1.post2/vibe/core/experiments/_constants.py +15 -0
  690. uvibe-2.16.1.post2/vibe/core/experiments/active.py +17 -0
  691. uvibe-2.16.1.post2/vibe/core/experiments/client.py +81 -0
  692. uvibe-2.16.1.post2/vibe/core/experiments/manager.py +110 -0
  693. uvibe-2.16.1.post2/vibe/core/experiments/models.py +79 -0
  694. uvibe-2.16.1.post2/vibe/core/experiments/session.py +85 -0
  695. uvibe-2.16.1.post2/vibe/core/feedback.py +39 -0
  696. uvibe-2.16.1.post2/vibe/core/hooks/__init__.py +0 -0
  697. uvibe-2.16.1.post2/vibe/core/hooks/_after_tool.py +135 -0
  698. uvibe-2.16.1.post2/vibe/core/hooks/_before_tool.py +128 -0
  699. uvibe-2.16.1.post2/vibe/core/hooks/_handler.py +171 -0
  700. uvibe-2.16.1.post2/vibe/core/hooks/_post_agent_turn.py +88 -0
  701. uvibe-2.16.1.post2/vibe/core/hooks/config.py +100 -0
  702. uvibe-2.16.1.post2/vibe/core/hooks/executor.py +119 -0
  703. uvibe-2.16.1.post2/vibe/core/hooks/manager.py +193 -0
  704. uvibe-2.16.1.post2/vibe/core/hooks/models.py +274 -0
  705. uvibe-2.16.1.post2/vibe/core/llm/__init__.py +0 -0
  706. uvibe-2.16.1.post2/vibe/core/llm/backend/_image.py +38 -0
  707. uvibe-2.16.1.post2/vibe/core/llm/backend/anthropic.py +633 -0
  708. uvibe-2.16.1.post2/vibe/core/llm/backend/base.py +39 -0
  709. uvibe-2.16.1.post2/vibe/core/llm/backend/factory.py +7 -0
  710. uvibe-2.16.1.post2/vibe/core/llm/backend/generic.py +444 -0
  711. uvibe-2.16.1.post2/vibe/core/llm/backend/mistral.py +453 -0
  712. uvibe-2.16.1.post2/vibe/core/llm/backend/openai_responses.py +653 -0
  713. uvibe-2.16.1.post2/vibe/core/llm/backend/reasoning_adapter.py +236 -0
  714. uvibe-2.16.1.post2/vibe/core/llm/backend/vertex.py +130 -0
  715. uvibe-2.16.1.post2/vibe/core/llm/exceptions.py +237 -0
  716. uvibe-2.16.1.post2/vibe/core/llm/format.py +185 -0
  717. uvibe-2.16.1.post2/vibe/core/llm/types.py +94 -0
  718. uvibe-2.16.1.post2/vibe/core/log_reader.py +226 -0
  719. uvibe-2.16.1.post2/vibe/core/logger.py +71 -0
  720. uvibe-2.16.1.post2/vibe/core/loop.py +250 -0
  721. uvibe-2.16.1.post2/vibe/core/middleware.py +266 -0
  722. uvibe-2.16.1.post2/vibe/core/nuage/__init__.py +0 -0
  723. uvibe-2.16.1.post2/vibe/core/nuage/agent_models.py +26 -0
  724. uvibe-2.16.1.post2/vibe/core/nuage/client.py +209 -0
  725. uvibe-2.16.1.post2/vibe/core/nuage/events.py +227 -0
  726. uvibe-2.16.1.post2/vibe/core/nuage/exceptions.py +46 -0
  727. uvibe-2.16.1.post2/vibe/core/nuage/remote_events_source.py +207 -0
  728. uvibe-2.16.1.post2/vibe/core/nuage/remote_workflow_event_models.py +137 -0
  729. uvibe-2.16.1.post2/vibe/core/nuage/remote_workflow_event_translator.py +1313 -0
  730. uvibe-2.16.1.post2/vibe/core/nuage/streaming.py +32 -0
  731. uvibe-2.16.1.post2/vibe/core/nuage/workflow.py +44 -0
  732. uvibe-2.16.1.post2/vibe/core/output_formatters.py +106 -0
  733. uvibe-2.16.1.post2/vibe/core/paths/__init__.py +41 -0
  734. uvibe-2.16.1.post2/vibe/core/paths/_agents_home.py +14 -0
  735. uvibe-2.16.1.post2/vibe/core/paths/_local_config_files.py +96 -0
  736. uvibe-2.16.1.post2/vibe/core/paths/_vibe_home.py +38 -0
  737. uvibe-2.16.1.post2/vibe/core/paths/conventions.py +3 -0
  738. uvibe-2.16.1.post2/vibe/core/plan_session.py +42 -0
  739. uvibe-2.16.1.post2/vibe/core/programmatic.py +101 -0
  740. uvibe-2.16.1.post2/vibe/core/prompts/__init__.py +112 -0
  741. uvibe-2.16.1.post2/vibe/core/prompts/agents_doc.md +5 -0
  742. uvibe-2.16.1.post2/vibe/core/prompts/cli.md +135 -0
  743. uvibe-2.16.1.post2/vibe/core/prompts/cli_2026-06_emoji.md +136 -0
  744. uvibe-2.16.1.post2/vibe/core/prompts/compact.md +12 -0
  745. uvibe-2.16.1.post2/vibe/core/prompts/compact_summary_prefix.md +1 -0
  746. uvibe-2.16.1.post2/vibe/core/prompts/dangerous_directory.md +5 -0
  747. uvibe-2.16.1.post2/vibe/core/prompts/explore.md +50 -0
  748. uvibe-2.16.1.post2/vibe/core/prompts/lean.md +159 -0
  749. uvibe-2.16.1.post2/vibe/core/prompts/minimal.md +12 -0
  750. uvibe-2.16.1.post2/vibe/core/prompts/project_context.md +4 -0
  751. uvibe-2.16.1.post2/vibe/core/prompts/tests.md +1 -0
  752. uvibe-2.16.1.post2/vibe/core/prompts/turn_summary.md +10 -0
  753. uvibe-2.16.1.post2/vibe/core/proxy_setup.py +65 -0
  754. uvibe-2.16.1.post2/vibe/core/rewind/__init__.py +10 -0
  755. uvibe-2.16.1.post2/vibe/core/rewind/manager.py +192 -0
  756. uvibe-2.16.1.post2/vibe/core/scratchpad.py +61 -0
  757. uvibe-2.16.1.post2/vibe/core/session/image_snapshot.py +56 -0
  758. uvibe-2.16.1.post2/vibe/core/session/last_session_pointer.py +132 -0
  759. uvibe-2.16.1.post2/vibe/core/session/resume_sessions.py +223 -0
  760. uvibe-2.16.1.post2/vibe/core/session/saved_sessions.py +87 -0
  761. uvibe-2.16.1.post2/vibe/core/session/session_id.py +34 -0
  762. uvibe-2.16.1.post2/vibe/core/session/session_loader.py +305 -0
  763. uvibe-2.16.1.post2/vibe/core/session/session_logger.py +456 -0
  764. uvibe-2.16.1.post2/vibe/core/session/session_migration.py +41 -0
  765. uvibe-2.16.1.post2/vibe/core/session/title_format.py +51 -0
  766. uvibe-2.16.1.post2/vibe/core/skills/__init__.py +13 -0
  767. uvibe-2.16.1.post2/vibe/core/skills/builtins/__init__.py +6 -0
  768. uvibe-2.16.1.post2/vibe/core/skills/builtins/vibe.py +735 -0
  769. uvibe-2.16.1.post2/vibe/core/skills/manager.py +193 -0
  770. uvibe-2.16.1.post2/vibe/core/skills/models.py +109 -0
  771. uvibe-2.16.1.post2/vibe/core/skills/parser.py +39 -0
  772. uvibe-2.16.1.post2/vibe/core/system_prompt.py +394 -0
  773. uvibe-2.16.1.post2/vibe/core/telemetry/__init__.py +0 -0
  774. uvibe-2.16.1.post2/vibe/core/telemetry/build_metadata.py +80 -0
  775. uvibe-2.16.1.post2/vibe/core/telemetry/send.py +405 -0
  776. uvibe-2.16.1.post2/vibe/core/telemetry/types.py +79 -0
  777. uvibe-2.16.1.post2/vibe/core/teleport/errors.py +17 -0
  778. uvibe-2.16.1.post2/vibe/core/teleport/git.py +222 -0
  779. uvibe-2.16.1.post2/vibe/core/teleport/nuage.py +160 -0
  780. uvibe-2.16.1.post2/vibe/core/teleport/telemetry.py +83 -0
  781. uvibe-2.16.1.post2/vibe/core/teleport/teleport.py +218 -0
  782. uvibe-2.16.1.post2/vibe/core/teleport/types.py +39 -0
  783. uvibe-2.16.1.post2/vibe/core/tools/arity.py +158 -0
  784. uvibe-2.16.1.post2/vibe/core/tools/base.py +407 -0
  785. uvibe-2.16.1.post2/vibe/core/tools/builtins/ask_user_question.py +130 -0
  786. uvibe-2.16.1.post2/vibe/core/tools/builtins/bash.py +560 -0
  787. uvibe-2.16.1.post2/vibe/core/tools/builtins/edit.py +219 -0
  788. uvibe-2.16.1.post2/vibe/core/tools/builtins/exit_plan_mode.py +137 -0
  789. uvibe-2.16.1.post2/vibe/core/tools/builtins/grep.py +363 -0
  790. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/__init__.py +0 -0
  791. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/ask_user_question.md +84 -0
  792. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/bash.md +73 -0
  793. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/edit.md +19 -0
  794. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/grep.md +4 -0
  795. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/read.md +19 -0
  796. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/skill.md +19 -0
  797. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/task.md +24 -0
  798. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/todo.md +199 -0
  799. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/webfetch.md +7 -0
  800. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/websearch.md +25 -0
  801. uvibe-2.16.1.post2/vibe/core/tools/builtins/prompts/write_file.md +27 -0
  802. uvibe-2.16.1.post2/vibe/core/tools/builtins/read.py +238 -0
  803. uvibe-2.16.1.post2/vibe/core/tools/builtins/skill.py +126 -0
  804. uvibe-2.16.1.post2/vibe/core/tools/builtins/task.py +194 -0
  805. uvibe-2.16.1.post2/vibe/core/tools/builtins/todo.py +129 -0
  806. uvibe-2.16.1.post2/vibe/core/tools/builtins/webfetch.py +254 -0
  807. uvibe-2.16.1.post2/vibe/core/tools/builtins/websearch.py +188 -0
  808. uvibe-2.16.1.post2/vibe/core/tools/builtins/write_file.py +141 -0
  809. uvibe-2.16.1.post2/vibe/core/tools/connectors/__init__.py +9 -0
  810. uvibe-2.16.1.post2/vibe/core/tools/connectors/connector_registry.py +508 -0
  811. uvibe-2.16.1.post2/vibe/core/tools/connectors/counts.py +26 -0
  812. uvibe-2.16.1.post2/vibe/core/tools/manager.py +455 -0
  813. uvibe-2.16.1.post2/vibe/core/tools/mcp/__init__.py +33 -0
  814. uvibe-2.16.1.post2/vibe/core/tools/mcp/registry.py +187 -0
  815. uvibe-2.16.1.post2/vibe/core/tools/mcp/tools.py +480 -0
  816. uvibe-2.16.1.post2/vibe/core/tools/mcp_sampling.py +126 -0
  817. uvibe-2.16.1.post2/vibe/core/tools/mcp_settings.py +75 -0
  818. uvibe-2.16.1.post2/vibe/core/tools/permissions.py +68 -0
  819. uvibe-2.16.1.post2/vibe/core/tools/ui.py +123 -0
  820. uvibe-2.16.1.post2/vibe/core/tools/utils.py +125 -0
  821. uvibe-2.16.1.post2/vibe/core/tracing.py +160 -0
  822. uvibe-2.16.1.post2/vibe/core/transcribe/__init__.py +23 -0
  823. uvibe-2.16.1.post2/vibe/core/transcribe/factory.py +19 -0
  824. uvibe-2.16.1.post2/vibe/core/transcribe/mistral_transcribe_client.py +85 -0
  825. uvibe-2.16.1.post2/vibe/core/transcribe/transcribe_client_port.py +44 -0
  826. uvibe-2.16.1.post2/vibe/core/trusted_folders.py +270 -0
  827. uvibe-2.16.1.post2/vibe/core/tts/__init__.py +7 -0
  828. uvibe-2.16.1.post2/vibe/core/tts/factory.py +15 -0
  829. uvibe-2.16.1.post2/vibe/core/tts/mistral_tts_client.py +58 -0
  830. uvibe-2.16.1.post2/vibe/core/tts/tts_client_port.py +19 -0
  831. uvibe-2.16.1.post2/vibe/core/types.py +640 -0
  832. uvibe-2.16.1.post2/vibe/core/utils/__init__.py +75 -0
  833. uvibe-2.16.1.post2/vibe/core/utils/async_subprocess.py +65 -0
  834. uvibe-2.16.1.post2/vibe/core/utils/concurrency.py +59 -0
  835. uvibe-2.16.1.post2/vibe/core/utils/display.py +19 -0
  836. uvibe-2.16.1.post2/vibe/core/utils/http.py +59 -0
  837. uvibe-2.16.1.post2/vibe/core/utils/io.py +241 -0
  838. uvibe-2.16.1.post2/vibe/core/utils/matching.py +35 -0
  839. uvibe-2.16.1.post2/vibe/core/utils/merge.py +115 -0
  840. uvibe-2.16.1.post2/vibe/core/utils/paths.py +42 -0
  841. uvibe-2.16.1.post2/vibe/core/utils/platform.py +45 -0
  842. uvibe-2.16.1.post2/vibe/core/utils/retry.py +138 -0
  843. uvibe-2.16.1.post2/vibe/core/utils/slug.py +113 -0
  844. uvibe-2.16.1.post2/vibe/core/utils/sse.py +27 -0
  845. uvibe-2.16.1.post2/vibe/core/utils/tags.py +80 -0
  846. uvibe-2.16.1.post2/vibe/core/utils/text.py +12 -0
  847. uvibe-2.16.1.post2/vibe/core/utils/time.py +7 -0
  848. uvibe-2.16.1.post2/vibe/core/utils/tokens.py +29 -0
  849. uvibe-2.16.1.post2/vibe/setup/auth/__init__.py +39 -0
  850. uvibe-2.16.1.post2/vibe/setup/auth/api_key_persistence.py +78 -0
  851. uvibe-2.16.1.post2/vibe/setup/auth/auth_state.py +151 -0
  852. uvibe-2.16.1.post2/vibe/setup/auth/browser_sign_in.py +212 -0
  853. uvibe-2.16.1.post2/vibe/setup/auth/browser_sign_in_gateway.py +55 -0
  854. uvibe-2.16.1.post2/vibe/setup/auth/http_browser_sign_in_gateway.py +355 -0
  855. uvibe-2.16.1.post2/vibe/setup/onboarding/__init__.py +154 -0
  856. uvibe-2.16.1.post2/vibe/setup/onboarding/base.py +14 -0
  857. uvibe-2.16.1.post2/vibe/setup/onboarding/context.py +219 -0
  858. uvibe-2.16.1.post2/vibe/setup/onboarding/gradient_text.py +30 -0
  859. uvibe-2.16.1.post2/vibe/setup/onboarding/onboarding.tcss +453 -0
  860. uvibe-2.16.1.post2/vibe/setup/onboarding/screens/__init__.py +15 -0
  861. uvibe-2.16.1.post2/vibe/setup/onboarding/screens/api_key.py +135 -0
  862. uvibe-2.16.1.post2/vibe/setup/onboarding/screens/auth_method.py +123 -0
  863. uvibe-2.16.1.post2/vibe/setup/onboarding/screens/browser_sign_in.py +534 -0
  864. uvibe-2.16.1.post2/vibe/setup/onboarding/screens/theme_selection.py +141 -0
  865. uvibe-2.16.1.post2/vibe/setup/onboarding/screens/welcome.py +117 -0
  866. uvibe-2.16.1.post2/vibe/setup/trusted_folders/trust_folder_dialog.py +301 -0
  867. uvibe-2.16.1.post2/vibe/setup/trusted_folders/trust_folder_dialog.tcss +170 -0
  868. uvibe-2.16.1.post2/vibe/setup/update_prompt/__init__.py +8 -0
  869. uvibe-2.16.1.post2/vibe/setup/update_prompt/update_prompt_dialog.py +221 -0
  870. uvibe-2.16.1.post2/vibe/setup/update_prompt/update_prompt_dialog.tcss +85 -0
  871. uvibe-2.16.1.post2/vibe/whats_new.md +4 -0
  872. uvibe-2.16.1.post2/vibe-acp.spec +74 -0
  873. uvibe-2.16.1.post2/vibe.spec +72 -0
@@ -0,0 +1,7 @@
1
+ # CODEOWNERS
2
+
3
+ # Default owners for everything in the repo
4
+ * @mistralai/mistral-vibe
5
+
6
+ # Owners for specific directories
7
+ # Not needed for now, can be filled later
@@ -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