ocaya 2.14.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. ocaya-2.14.0/.github/CODEOWNERS +7 -0
  2. ocaya-2.14.0/.github/DISCUSSION_TEMPLATE/ideas.yml +46 -0
  3. ocaya-2.14.0/.github/ISSUE_TEMPLATE/bug-report.yml +59 -0
  4. ocaya-2.14.0/.github/ISSUE_TEMPLATE/config.yml +11 -0
  5. ocaya-2.14.0/.github/workflows/build-and-upload.yml +227 -0
  6. ocaya-2.14.0/.github/workflows/ci.yml +132 -0
  7. ocaya-2.14.0/.github/workflows/issue-labeler.yml +62 -0
  8. ocaya-2.14.0/.github/workflows/release.yml +45 -0
  9. ocaya-2.14.0/.gitignore +208 -0
  10. ocaya-2.14.0/.kiro/specs/ocaya/.config.kiro +1 -0
  11. ocaya-2.14.0/.kiro/specs/ocaya/design.md +464 -0
  12. ocaya-2.14.0/.kiro/specs/ocaya/requirements.md +191 -0
  13. ocaya-2.14.0/.kiro/specs/ocaya/tasks.md +221 -0
  14. ocaya-2.14.0/.pre-commit-config.yaml +35 -0
  15. ocaya-2.14.0/.python-version +1 -0
  16. ocaya-2.14.0/.typos.toml +7 -0
  17. ocaya-2.14.0/.vscode/extensions.json +3 -0
  18. ocaya-2.14.0/.vscode/launch.json +90 -0
  19. ocaya-2.14.0/.vscode/settings.json +26 -0
  20. ocaya-2.14.0/AGENTS.md +107 -0
  21. ocaya-2.14.0/AI_News_June_2026.doc +79 -0
  22. ocaya-2.14.0/CHANGELOG.md +980 -0
  23. ocaya-2.14.0/CONTRIBUTING.md +211 -0
  24. ocaya-2.14.0/LICENSE +201 -0
  25. ocaya-2.14.0/PKG-INFO +573 -0
  26. ocaya-2.14.0/README.md +453 -0
  27. ocaya-2.14.0/action.yml +59 -0
  28. ocaya-2.14.0/distribution/zed/LICENSE +1 -0
  29. ocaya-2.14.0/distribution/zed/extension.toml +31 -0
  30. ocaya-2.14.0/distribution/zed/icons/mistral_vibe.svg +12 -0
  31. ocaya-2.14.0/docs/README.md +8 -0
  32. ocaya-2.14.0/docs/acp-setup.md +68 -0
  33. ocaya-2.14.0/docs/proxy-setup.md +36 -0
  34. ocaya-2.14.0/flake.lock +133 -0
  35. ocaya-2.14.0/flake.nix +149 -0
  36. ocaya-2.14.0/ocaya/__init__.py +13 -0
  37. ocaya-2.14.0/ocaya/acp/__init__.py +0 -0
  38. ocaya-2.14.0/ocaya/acp/acp_agent_loop.py +1948 -0
  39. ocaya-2.14.0/ocaya/acp/acp_logger.py +97 -0
  40. ocaya-2.14.0/ocaya/acp/commands/__init__.py +5 -0
  41. ocaya-2.14.0/ocaya/acp/commands/registry.py +89 -0
  42. ocaya-2.14.0/ocaya/acp/entrypoint.py +112 -0
  43. ocaya-2.14.0/ocaya/acp/exceptions.py +140 -0
  44. ocaya-2.14.0/ocaya/acp/session.py +75 -0
  45. ocaya-2.14.0/ocaya/acp/title.py +69 -0
  46. ocaya-2.14.0/ocaya/acp/tools/__init__.py +0 -0
  47. ocaya-2.14.0/ocaya/acp/tools/base.py +53 -0
  48. ocaya-2.14.0/ocaya/acp/tools/builtins/bash.py +168 -0
  49. ocaya-2.14.0/ocaya/acp/tools/builtins/edit.py +114 -0
  50. ocaya-2.14.0/ocaya/acp/tools/builtins/grep.py +79 -0
  51. ocaya-2.14.0/ocaya/acp/tools/builtins/read.py +132 -0
  52. ocaya-2.14.0/ocaya/acp/tools/builtins/skill.py +77 -0
  53. ocaya-2.14.0/ocaya/acp/tools/builtins/task.py +73 -0
  54. ocaya-2.14.0/ocaya/acp/tools/builtins/todo.py +68 -0
  55. ocaya-2.14.0/ocaya/acp/tools/builtins/web_fetch.py +83 -0
  56. ocaya-2.14.0/ocaya/acp/tools/builtins/web_search.py +80 -0
  57. ocaya-2.14.0/ocaya/acp/tools/builtins/write_file.py +104 -0
  58. ocaya-2.14.0/ocaya/acp/tools/events.py +8 -0
  59. ocaya-2.14.0/ocaya/acp/tools/session_update.py +196 -0
  60. ocaya-2.14.0/ocaya/acp/utils.py +338 -0
  61. ocaya-2.14.0/ocaya/cli/__init__.py +0 -0
  62. ocaya-2.14.0/ocaya/cli/autocompletion/__init__.py +0 -0
  63. ocaya-2.14.0/ocaya/cli/autocompletion/base.py +22 -0
  64. ocaya-2.14.0/ocaya/cli/autocompletion/path_completion.py +177 -0
  65. ocaya-2.14.0/ocaya/cli/autocompletion/slash_command.py +95 -0
  66. ocaya-2.14.0/ocaya/cli/cache.py +32 -0
  67. ocaya-2.14.0/ocaya/cli/cli.py +279 -0
  68. ocaya-2.14.0/ocaya/cli/clipboard.py +190 -0
  69. ocaya-2.14.0/ocaya/cli/commands.py +261 -0
  70. ocaya-2.14.0/ocaya/cli/entrypoint.py +251 -0
  71. ocaya-2.14.0/ocaya/cli/history_manager.py +105 -0
  72. ocaya-2.14.0/ocaya/cli/narrator_manager/__init__.py +15 -0
  73. ocaya-2.14.0/ocaya/cli/narrator_manager/narrator_manager.py +269 -0
  74. ocaya-2.14.0/ocaya/cli/narrator_manager/narrator_manager_port.py +45 -0
  75. ocaya-2.14.0/ocaya/cli/narrator_manager/telemetry.py +30 -0
  76. ocaya-2.14.0/ocaya/cli/plan_offer/adapters/http_whoami_gateway.py +45 -0
  77. ocaya-2.14.0/ocaya/cli/plan_offer/decide_plan_offer.py +127 -0
  78. ocaya-2.14.0/ocaya/cli/plan_offer/ports/whoami_gateway.py +67 -0
  79. ocaya-2.14.0/ocaya/cli/profiler.py +89 -0
  80. ocaya-2.14.0/ocaya/cli/stderr_guard.py +101 -0
  81. ocaya-2.14.0/ocaya/cli/terminal_detect.py +83 -0
  82. ocaya-2.14.0/ocaya/cli/textual_ui/__init__.py +0 -0
  83. ocaya-2.14.0/ocaya/cli/textual_ui/app.py +3395 -0
  84. ocaya-2.14.0/ocaya/cli/textual_ui/app.tcss +1606 -0
  85. ocaya-2.14.0/ocaya/cli/textual_ui/constants.py +11 -0
  86. ocaya-2.14.0/ocaya/cli/textual_ui/external_editor.py +38 -0
  87. ocaya-2.14.0/ocaya/cli/textual_ui/handlers/__init__.py +5 -0
  88. ocaya-2.14.0/ocaya/cli/textual_ui/handlers/event_handler.py +269 -0
  89. ocaya-2.14.0/ocaya/cli/textual_ui/message_queue.py +85 -0
  90. ocaya-2.14.0/ocaya/cli/textual_ui/notifications/__init__.py +11 -0
  91. ocaya-2.14.0/ocaya/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  92. ocaya-2.14.0/ocaya/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +60 -0
  93. ocaya-2.14.0/ocaya/cli/textual_ui/notifications/ports/__init__.py +0 -0
  94. ocaya-2.14.0/ocaya/cli/textual_ui/notifications/ports/notification_port.py +16 -0
  95. ocaya-2.14.0/ocaya/cli/textual_ui/quit_manager.py +64 -0
  96. ocaya-2.14.0/ocaya/cli/textual_ui/recording/__init__.py +5 -0
  97. ocaya-2.14.0/ocaya/cli/textual_ui/recording/recording_indicator.py +79 -0
  98. ocaya-2.14.0/ocaya/cli/textual_ui/remote/__init__.py +8 -0
  99. ocaya-2.14.0/ocaya/cli/textual_ui/remote/remote_session_manager.py +211 -0
  100. ocaya-2.14.0/ocaya/cli/textual_ui/scheduled_loop_runner.py +99 -0
  101. ocaya-2.14.0/ocaya/cli/textual_ui/session_exit.py +31 -0
  102. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/__init__.py +0 -0
  103. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/approval_app.py +270 -0
  104. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/banner/banner.py +158 -0
  105. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/banner/petit_chat.py +197 -0
  106. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/braille_renderer.py +58 -0
  107. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/__init__.py +7 -0
  108. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/body.py +308 -0
  109. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/completion_manager.py +62 -0
  110. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/completion_popup.py +76 -0
  111. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/container.py +283 -0
  112. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/paste_path.py +117 -0
  113. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/text_area.py +445 -0
  114. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/compact.py +43 -0
  115. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/config_app.py +184 -0
  116. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/connector_auth_app.py +227 -0
  117. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/context_progress.py +30 -0
  118. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/debug_console.py +244 -0
  119. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/feedback_bar.py +64 -0
  120. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/feedback_bar_manager.py +23 -0
  121. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/load_more.py +43 -0
  122. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/loading.py +231 -0
  123. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/mcp_app.py +646 -0
  124. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/messages.py +590 -0
  125. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/model_picker.py +75 -0
  126. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/narrator_status.py +65 -0
  127. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/no_markup_static.py +11 -0
  128. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/path_display.py +31 -0
  129. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/proxy_setup_app.py +122 -0
  130. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/question_app.py +562 -0
  131. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/queued_messages.py +97 -0
  132. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/rewind_app.py +147 -0
  133. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/session_picker.py +133 -0
  134. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/spinner.py +194 -0
  135. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/status_message.py +76 -0
  136. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/teleport_message.py +31 -0
  137. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/theme_picker.py +114 -0
  138. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/thinking_picker.py +79 -0
  139. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/tool_widgets.py +368 -0
  140. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/tools.py +216 -0
  141. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/voice_app.py +173 -0
  142. ocaya-2.14.0/ocaya/cli/textual_ui/widgets/vscode_compat.py +26 -0
  143. ocaya-2.14.0/ocaya/cli/textual_ui/windowing/__init__.py +29 -0
  144. ocaya-2.14.0/ocaya/cli/textual_ui/windowing/history.py +115 -0
  145. ocaya-2.14.0/ocaya/cli/textual_ui/windowing/history_windowing.py +67 -0
  146. ocaya-2.14.0/ocaya/cli/textual_ui/windowing/state.py +119 -0
  147. ocaya-2.14.0/ocaya/cli/turn_summary/__init__.py +20 -0
  148. ocaya-2.14.0/ocaya/cli/turn_summary/noop.py +38 -0
  149. ocaya-2.14.0/ocaya/cli/turn_summary/port.py +52 -0
  150. ocaya-2.14.0/ocaya/cli/turn_summary/tracker.py +147 -0
  151. ocaya-2.14.0/ocaya/cli/turn_summary/utils.py +30 -0
  152. ocaya-2.14.0/ocaya/cli/update_notifier/__init__.py +47 -0
  153. ocaya-2.14.0/ocaya/cli/update_notifier/adapters/filesystem_update_cache_repository.py +77 -0
  154. ocaya-2.14.0/ocaya/cli/update_notifier/adapters/github_update_gateway.py +104 -0
  155. ocaya-2.14.0/ocaya/cli/update_notifier/adapters/pypi_update_gateway.py +110 -0
  156. ocaya-2.14.0/ocaya/cli/update_notifier/ports/update_cache_repository.py +16 -0
  157. ocaya-2.14.0/ocaya/cli/update_notifier/ports/update_gateway.py +53 -0
  158. ocaya-2.14.0/ocaya/cli/update_notifier/update.py +139 -0
  159. ocaya-2.14.0/ocaya/cli/update_notifier/whats_new.py +50 -0
  160. ocaya-2.14.0/ocaya/cli/voice_manager/__init__.py +15 -0
  161. ocaya-2.14.0/ocaya/cli/voice_manager/telemetry.py +30 -0
  162. ocaya-2.14.0/ocaya/cli/voice_manager/voice_manager.py +269 -0
  163. ocaya-2.14.0/ocaya/cli/voice_manager/voice_manager_port.py +58 -0
  164. ocaya-2.14.0/ocaya/cli/vscode_extension_promo/__init__.py +43 -0
  165. ocaya-2.14.0/ocaya/cli/vscode_extension_promo/_port.py +14 -0
  166. ocaya-2.14.0/ocaya/cli/vscode_extension_promo/adapters/__init__.py +0 -0
  167. ocaya-2.14.0/ocaya/cli/vscode_extension_promo/adapters/filesystem_repository.py +43 -0
  168. ocaya-2.14.0/ocaya/core/__init__.py +15 -0
  169. ocaya-2.14.0/ocaya/core/agent_loop.py +1862 -0
  170. ocaya-2.14.0/ocaya/core/agents/__init__.py +29 -0
  171. ocaya-2.14.0/ocaya/core/agents/manager.py +185 -0
  172. ocaya-2.14.0/ocaya/core/agents/models.py +208 -0
  173. ocaya-2.14.0/ocaya/core/audio_player/__init__.py +21 -0
  174. ocaya-2.14.0/ocaya/core/audio_player/audio_player.py +130 -0
  175. ocaya-2.14.0/ocaya/core/audio_player/audio_player_port.py +40 -0
  176. ocaya-2.14.0/ocaya/core/audio_player/utils.py +12 -0
  177. ocaya-2.14.0/ocaya/core/audio_recorder/__init__.py +23 -0
  178. ocaya-2.14.0/ocaya/core/audio_recorder/audio_recorder.py +287 -0
  179. ocaya-2.14.0/ocaya/core/audio_recorder/audio_recorder_port.py +64 -0
  180. ocaya-2.14.0/ocaya/core/auth/__init__.py +6 -0
  181. ocaya-2.14.0/ocaya/core/auth/crypto.py +137 -0
  182. ocaya-2.14.0/ocaya/core/auth/github.py +184 -0
  183. ocaya-2.14.0/ocaya/core/autocompletion/__init__.py +0 -0
  184. ocaya-2.14.0/ocaya/core/autocompletion/completers.py +381 -0
  185. ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/__init__.py +10 -0
  186. ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/ignore_rules.py +170 -0
  187. ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/indexer.py +187 -0
  188. ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/store.py +188 -0
  189. ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/watcher.py +75 -0
  190. ocaya-2.14.0/ocaya/core/autocompletion/fuzzy.py +189 -0
  191. ocaya-2.14.0/ocaya/core/autocompletion/path_prompt.py +153 -0
  192. ocaya-2.14.0/ocaya/core/autocompletion/path_prompt_adapter.py +181 -0
  193. ocaya-2.14.0/ocaya/core/compaction.py +47 -0
  194. ocaya-2.14.0/ocaya/core/config/__init__.py +131 -0
  195. ocaya-2.14.0/ocaya/core/config/_settings.py +1176 -0
  196. ocaya-2.14.0/ocaya/core/config/builder.py +122 -0
  197. ocaya-2.14.0/ocaya/core/config/harness_files/__init__.py +17 -0
  198. ocaya-2.14.0/ocaya/core/config/harness_files/_harness_manager.py +266 -0
  199. ocaya-2.14.0/ocaya/core/config/harness_files/_paths.py +9 -0
  200. ocaya-2.14.0/ocaya/core/config/layer.py +307 -0
  201. ocaya-2.14.0/ocaya/core/config/layers/__init__.py +13 -0
  202. ocaya-2.14.0/ocaya/core/config/layers/environment.py +44 -0
  203. ocaya-2.14.0/ocaya/core/config/layers/overrides.py +34 -0
  204. ocaya-2.14.0/ocaya/core/config/layers/project.py +91 -0
  205. ocaya-2.14.0/ocaya/core/config/layers/user.py +39 -0
  206. ocaya-2.14.0/ocaya/core/config/orchestrator.py +53 -0
  207. ocaya-2.14.0/ocaya/core/config/patch.py +101 -0
  208. ocaya-2.14.0/ocaya/core/config/schema.py +157 -0
  209. ocaya-2.14.0/ocaya/core/config/types.py +25 -0
  210. ocaya-2.14.0/ocaya/core/config/vibe_schema.py +242 -0
  211. ocaya-2.14.0/ocaya/core/data_retention.py +7 -0
  212. ocaya-2.14.0/ocaya/core/experiments/__init__.py +58 -0
  213. ocaya-2.14.0/ocaya/core/experiments/_constants.py +15 -0
  214. ocaya-2.14.0/ocaya/core/experiments/active.py +17 -0
  215. ocaya-2.14.0/ocaya/core/experiments/client.py +81 -0
  216. ocaya-2.14.0/ocaya/core/experiments/manager.py +110 -0
  217. ocaya-2.14.0/ocaya/core/experiments/models.py +79 -0
  218. ocaya-2.14.0/ocaya/core/experiments/session.py +81 -0
  219. ocaya-2.14.0/ocaya/core/feedback.py +39 -0
  220. ocaya-2.14.0/ocaya/core/hooks/__init__.py +0 -0
  221. ocaya-2.14.0/ocaya/core/hooks/config.py +100 -0
  222. ocaya-2.14.0/ocaya/core/hooks/executor.py +55 -0
  223. ocaya-2.14.0/ocaya/core/hooks/manager.py +140 -0
  224. ocaya-2.14.0/ocaya/core/hooks/models.py +98 -0
  225. ocaya-2.14.0/ocaya/core/llm/__init__.py +0 -0
  226. ocaya-2.14.0/ocaya/core/llm/backend/_image.py +38 -0
  227. ocaya-2.14.0/ocaya/core/llm/backend/anthropic.py +619 -0
  228. ocaya-2.14.0/ocaya/core/llm/backend/base.py +39 -0
  229. ocaya-2.14.0/ocaya/core/llm/backend/factory.py +7 -0
  230. ocaya-2.14.0/ocaya/core/llm/backend/generic.py +443 -0
  231. ocaya-2.14.0/ocaya/core/llm/backend/mistral.py +442 -0
  232. ocaya-2.14.0/ocaya/core/llm/backend/openai_responses.py +653 -0
  233. ocaya-2.14.0/ocaya/core/llm/backend/reasoning_adapter.py +236 -0
  234. ocaya-2.14.0/ocaya/core/llm/backend/vertex.py +130 -0
  235. ocaya-2.14.0/ocaya/core/llm/exceptions.py +225 -0
  236. ocaya-2.14.0/ocaya/core/llm/format.py +185 -0
  237. ocaya-2.14.0/ocaya/core/llm/types.py +94 -0
  238. ocaya-2.14.0/ocaya/core/log_reader.py +224 -0
  239. ocaya-2.14.0/ocaya/core/logger.py +71 -0
  240. ocaya-2.14.0/ocaya/core/loop.py +250 -0
  241. ocaya-2.14.0/ocaya/core/middleware.py +266 -0
  242. ocaya-2.14.0/ocaya/core/nuage/__init__.py +0 -0
  243. ocaya-2.14.0/ocaya/core/nuage/agent_models.py +26 -0
  244. ocaya-2.14.0/ocaya/core/nuage/client.py +205 -0
  245. ocaya-2.14.0/ocaya/core/nuage/events.py +227 -0
  246. ocaya-2.14.0/ocaya/core/nuage/exceptions.py +46 -0
  247. ocaya-2.14.0/ocaya/core/nuage/remote_events_source.py +207 -0
  248. ocaya-2.14.0/ocaya/core/nuage/remote_workflow_event_models.py +137 -0
  249. ocaya-2.14.0/ocaya/core/nuage/remote_workflow_event_translator.py +1313 -0
  250. ocaya-2.14.0/ocaya/core/nuage/streaming.py +32 -0
  251. ocaya-2.14.0/ocaya/core/nuage/workflow.py +44 -0
  252. ocaya-2.14.0/ocaya/core/output_formatters.py +106 -0
  253. ocaya-2.14.0/ocaya/core/paths/__init__.py +41 -0
  254. ocaya-2.14.0/ocaya/core/paths/_agents_home.py +14 -0
  255. ocaya-2.14.0/ocaya/core/paths/_local_config_files.py +80 -0
  256. ocaya-2.14.0/ocaya/core/paths/_ocaya_home.py +38 -0
  257. ocaya-2.14.0/ocaya/core/paths/conventions.py +3 -0
  258. ocaya-2.14.0/ocaya/core/plan_session.py +42 -0
  259. ocaya-2.14.0/ocaya/core/programmatic.py +101 -0
  260. ocaya-2.14.0/ocaya/core/prompts/__init__.py +113 -0
  261. ocaya-2.14.0/ocaya/core/prompts/agents_doc.md +5 -0
  262. ocaya-2.14.0/ocaya/core/prompts/cli.md +111 -0
  263. ocaya-2.14.0/ocaya/core/prompts/cli_2026-05.md +135 -0
  264. ocaya-2.14.0/ocaya/core/prompts/compact.md +12 -0
  265. ocaya-2.14.0/ocaya/core/prompts/compact_summary_prefix.md +1 -0
  266. ocaya-2.14.0/ocaya/core/prompts/dangerous_directory.md +5 -0
  267. ocaya-2.14.0/ocaya/core/prompts/explore.md +50 -0
  268. ocaya-2.14.0/ocaya/core/prompts/jarvis.md +64 -0
  269. ocaya-2.14.0/ocaya/core/prompts/lean.md +159 -0
  270. ocaya-2.14.0/ocaya/core/prompts/minimal.md +12 -0
  271. ocaya-2.14.0/ocaya/core/prompts/ocaya.md +63 -0
  272. ocaya-2.14.0/ocaya/core/prompts/project_context.md +4 -0
  273. ocaya-2.14.0/ocaya/core/prompts/tests.md +1 -0
  274. ocaya-2.14.0/ocaya/core/prompts/turn_summary.md +10 -0
  275. ocaya-2.14.0/ocaya/core/proxy_setup.py +65 -0
  276. ocaya-2.14.0/ocaya/core/rewind/__init__.py +10 -0
  277. ocaya-2.14.0/ocaya/core/rewind/manager.py +192 -0
  278. ocaya-2.14.0/ocaya/core/scratchpad.py +61 -0
  279. ocaya-2.14.0/ocaya/core/session/image_snapshot.py +56 -0
  280. ocaya-2.14.0/ocaya/core/session/last_session_pointer.py +132 -0
  281. ocaya-2.14.0/ocaya/core/session/resume_sessions.py +95 -0
  282. ocaya-2.14.0/ocaya/core/session/saved_sessions.py +87 -0
  283. ocaya-2.14.0/ocaya/core/session/session_id.py +34 -0
  284. ocaya-2.14.0/ocaya/core/session/session_loader.py +292 -0
  285. ocaya-2.14.0/ocaya/core/session/session_logger.py +456 -0
  286. ocaya-2.14.0/ocaya/core/session/session_migration.py +41 -0
  287. ocaya-2.14.0/ocaya/core/session/title_format.py +51 -0
  288. ocaya-2.14.0/ocaya/core/skills/__init__.py +13 -0
  289. ocaya-2.14.0/ocaya/core/skills/builtins/__init__.py +6 -0
  290. ocaya-2.14.0/ocaya/core/skills/builtins/ocaya.py +584 -0
  291. ocaya-2.14.0/ocaya/core/skills/manager.py +193 -0
  292. ocaya-2.14.0/ocaya/core/skills/models.py +109 -0
  293. ocaya-2.14.0/ocaya/core/skills/parser.py +39 -0
  294. ocaya-2.14.0/ocaya/core/system_prompt.py +394 -0
  295. ocaya-2.14.0/ocaya/core/telemetry/__init__.py +0 -0
  296. ocaya-2.14.0/ocaya/core/telemetry/build_metadata.py +67 -0
  297. ocaya-2.14.0/ocaya/core/telemetry/send.py +368 -0
  298. ocaya-2.14.0/ocaya/core/telemetry/types.py +54 -0
  299. ocaya-2.14.0/ocaya/core/teleport/errors.py +9 -0
  300. ocaya-2.14.0/ocaya/core/teleport/git.py +222 -0
  301. ocaya-2.14.0/ocaya/core/teleport/nuage.py +137 -0
  302. ocaya-2.14.0/ocaya/core/teleport/telemetry.py +80 -0
  303. ocaya-2.14.0/ocaya/core/teleport/teleport.py +196 -0
  304. ocaya-2.14.0/ocaya/core/teleport/types.py +39 -0
  305. ocaya-2.14.0/ocaya/core/tools/arity.py +158 -0
  306. ocaya-2.14.0/ocaya/core/tools/base.py +400 -0
  307. ocaya-2.14.0/ocaya/core/tools/builtins/ask_user_question.py +132 -0
  308. ocaya-2.14.0/ocaya/core/tools/builtins/bash.py +538 -0
  309. ocaya-2.14.0/ocaya/core/tools/builtins/clipboard.py +169 -0
  310. ocaya-2.14.0/ocaya/core/tools/builtins/edit.py +205 -0
  311. ocaya-2.14.0/ocaya/core/tools/builtins/exit_plan_mode.py +137 -0
  312. ocaya-2.14.0/ocaya/core/tools/builtins/grep.py +364 -0
  313. ocaya-2.14.0/ocaya/core/tools/builtins/open_app.py +153 -0
  314. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/__init__.py +0 -0
  315. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/ask_user_question.md +84 -0
  316. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/bash.md +73 -0
  317. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/edit.md +19 -0
  318. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/grep.md +4 -0
  319. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/read.md +19 -0
  320. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/skill.md +19 -0
  321. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/task.md +24 -0
  322. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/todo.md +199 -0
  323. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/webfetch.md +7 -0
  324. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/websearch.md +25 -0
  325. ocaya-2.14.0/ocaya/core/tools/builtins/prompts/write_file.md +27 -0
  326. ocaya-2.14.0/ocaya/core/tools/builtins/read.py +235 -0
  327. ocaya-2.14.0/ocaya/core/tools/builtins/skill.py +126 -0
  328. ocaya-2.14.0/ocaya/core/tools/builtins/task.py +190 -0
  329. ocaya-2.14.0/ocaya/core/tools/builtins/todo.py +129 -0
  330. ocaya-2.14.0/ocaya/core/tools/builtins/webfetch.py +257 -0
  331. ocaya-2.14.0/ocaya/core/tools/builtins/websearch.py +178 -0
  332. ocaya-2.14.0/ocaya/core/tools/builtins/write_file.py +139 -0
  333. ocaya-2.14.0/ocaya/core/tools/connectors/__init__.py +9 -0
  334. ocaya-2.14.0/ocaya/core/tools/connectors/connector_registry.py +508 -0
  335. ocaya-2.14.0/ocaya/core/tools/connectors/counts.py +26 -0
  336. ocaya-2.14.0/ocaya/core/tools/manager.py +455 -0
  337. ocaya-2.14.0/ocaya/core/tools/mcp/__init__.py +33 -0
  338. ocaya-2.14.0/ocaya/core/tools/mcp/registry.py +181 -0
  339. ocaya-2.14.0/ocaya/core/tools/mcp/tools.py +468 -0
  340. ocaya-2.14.0/ocaya/core/tools/mcp_sampling.py +126 -0
  341. ocaya-2.14.0/ocaya/core/tools/mcp_settings.py +75 -0
  342. ocaya-2.14.0/ocaya/core/tools/permissions.py +68 -0
  343. ocaya-2.14.0/ocaya/core/tools/ui.py +121 -0
  344. ocaya-2.14.0/ocaya/core/tools/utils.py +125 -0
  345. ocaya-2.14.0/ocaya/core/tracing.py +137 -0
  346. ocaya-2.14.0/ocaya/core/transcribe/__init__.py +23 -0
  347. ocaya-2.14.0/ocaya/core/transcribe/factory.py +19 -0
  348. ocaya-2.14.0/ocaya/core/transcribe/mistral_transcribe_client.py +85 -0
  349. ocaya-2.14.0/ocaya/core/transcribe/transcribe_client_port.py +44 -0
  350. ocaya-2.14.0/ocaya/core/trusted_folders.py +174 -0
  351. ocaya-2.14.0/ocaya/core/tts/__init__.py +7 -0
  352. ocaya-2.14.0/ocaya/core/tts/factory.py +15 -0
  353. ocaya-2.14.0/ocaya/core/tts/mistral_tts_client.py +58 -0
  354. ocaya-2.14.0/ocaya/core/tts/tts_client_port.py +19 -0
  355. ocaya-2.14.0/ocaya/core/types.py +589 -0
  356. ocaya-2.14.0/ocaya/core/utils/__init__.py +73 -0
  357. ocaya-2.14.0/ocaya/core/utils/async_subprocess.py +65 -0
  358. ocaya-2.14.0/ocaya/core/utils/concurrency.py +59 -0
  359. ocaya-2.14.0/ocaya/core/utils/display.py +19 -0
  360. ocaya-2.14.0/ocaya/core/utils/http.py +59 -0
  361. ocaya-2.14.0/ocaya/core/utils/io.py +216 -0
  362. ocaya-2.14.0/ocaya/core/utils/matching.py +35 -0
  363. ocaya-2.14.0/ocaya/core/utils/merge.py +115 -0
  364. ocaya-2.14.0/ocaya/core/utils/paths.py +42 -0
  365. ocaya-2.14.0/ocaya/core/utils/platform.py +45 -0
  366. ocaya-2.14.0/ocaya/core/utils/retry.py +138 -0
  367. ocaya-2.14.0/ocaya/core/utils/slug.py +113 -0
  368. ocaya-2.14.0/ocaya/core/utils/tags.py +80 -0
  369. ocaya-2.14.0/ocaya/core/utils/time.py +7 -0
  370. ocaya-2.14.0/ocaya/core/utils/tokens.py +29 -0
  371. ocaya-2.14.0/ocaya/setup/auth/__init__.py +39 -0
  372. ocaya-2.14.0/ocaya/setup/auth/api_key_persistence.py +78 -0
  373. ocaya-2.14.0/ocaya/setup/auth/auth_state.py +151 -0
  374. ocaya-2.14.0/ocaya/setup/auth/browser_sign_in.py +212 -0
  375. ocaya-2.14.0/ocaya/setup/auth/browser_sign_in_gateway.py +55 -0
  376. ocaya-2.14.0/ocaya/setup/auth/http_browser_sign_in_gateway.py +355 -0
  377. ocaya-2.14.0/ocaya/setup/onboarding/__init__.py +152 -0
  378. ocaya-2.14.0/ocaya/setup/onboarding/base.py +14 -0
  379. ocaya-2.14.0/ocaya/setup/onboarding/context.py +219 -0
  380. ocaya-2.14.0/ocaya/setup/onboarding/gradient_text.py +30 -0
  381. ocaya-2.14.0/ocaya/setup/onboarding/onboarding.tcss +453 -0
  382. ocaya-2.14.0/ocaya/setup/onboarding/screens/__init__.py +15 -0
  383. ocaya-2.14.0/ocaya/setup/onboarding/screens/api_key.py +135 -0
  384. ocaya-2.14.0/ocaya/setup/onboarding/screens/auth_method.py +123 -0
  385. ocaya-2.14.0/ocaya/setup/onboarding/screens/browser_sign_in.py +534 -0
  386. ocaya-2.14.0/ocaya/setup/onboarding/screens/theme_selection.py +141 -0
  387. ocaya-2.14.0/ocaya/setup/onboarding/screens/welcome.py +117 -0
  388. ocaya-2.14.0/ocaya/setup/trusted_folders/trust_folder_dialog.py +306 -0
  389. ocaya-2.14.0/ocaya/setup/trusted_folders/trust_folder_dialog.tcss +170 -0
  390. ocaya-2.14.0/ocaya/whats_new.md +4 -0
  391. ocaya-2.14.0/ocaya-acp.spec +74 -0
  392. ocaya-2.14.0/ocaya.spec +72 -0
  393. ocaya-2.14.0/pyinstaller/runtime_hook_truststore.py +6 -0
  394. ocaya-2.14.0/pyproject.toml +262 -0
  395. ocaya-2.14.0/scripts/README.md +37 -0
  396. ocaya-2.14.0/scripts/bump_version.py +240 -0
  397. ocaya-2.14.0/scripts/install.sh +187 -0
  398. ocaya-2.14.0/scripts/prepare_release.py +462 -0
  399. ocaya-2.14.0/tests/__init__.py +5 -0
  400. ocaya-2.14.0/tests/acp/conftest.py +142 -0
  401. ocaya-2.14.0/tests/acp/smoke_binary.py +284 -0
  402. ocaya-2.14.0/tests/acp/test_acp.py +1017 -0
  403. ocaya-2.14.0/tests/acp/test_acp_disabled_tools_merge.py +35 -0
  404. ocaya-2.14.0/tests/acp/test_acp_entrypoint_smoke.py +350 -0
  405. ocaya-2.14.0/tests/acp/test_acp_hooks.py +171 -0
  406. ocaya-2.14.0/tests/acp/test_acp_title.py +112 -0
  407. ocaya-2.14.0/tests/acp/test_agent_thought.py +161 -0
  408. ocaya-2.14.0/tests/acp/test_auth_status.py +271 -0
  409. ocaya-2.14.0/tests/acp/test_authenticate.py +387 -0
  410. ocaya-2.14.0/tests/acp/test_bash.py +525 -0
  411. ocaya-2.14.0/tests/acp/test_close_session.py +129 -0
  412. ocaya-2.14.0/tests/acp/test_commands.py +345 -0
  413. ocaya-2.14.0/tests/acp/test_compact_session_updates.py +89 -0
  414. ocaya-2.14.0/tests/acp/test_content.py +147 -0
  415. ocaya-2.14.0/tests/acp/test_edit.py +331 -0
  416. ocaya-2.14.0/tests/acp/test_fork_session.py +192 -0
  417. ocaya-2.14.0/tests/acp/test_initialize.py +158 -0
  418. ocaya-2.14.0/tests/acp/test_list_sessions.py +242 -0
  419. ocaya-2.14.0/tests/acp/test_load_session.py +506 -0
  420. ocaya-2.14.0/tests/acp/test_message_id.py +156 -0
  421. ocaya-2.14.0/tests/acp/test_multi_session.py +117 -0
  422. ocaya-2.14.0/tests/acp/test_new_session.py +163 -0
  423. ocaya-2.14.0/tests/acp/test_proxy_setup_acp.py +418 -0
  424. ocaya-2.14.0/tests/acp/test_read.py +239 -0
  425. ocaya-2.14.0/tests/acp/test_session.py +155 -0
  426. ocaya-2.14.0/tests/acp/test_session_auto_title.py +92 -0
  427. ocaya-2.14.0/tests/acp/test_session_delete.py +177 -0
  428. ocaya-2.14.0/tests/acp/test_session_set_title.py +327 -0
  429. ocaya-2.14.0/tests/acp/test_set_config_option.py +401 -0
  430. ocaya-2.14.0/tests/acp/test_set_mode.py +201 -0
  431. ocaya-2.14.0/tests/acp/test_set_model.py +306 -0
  432. ocaya-2.14.0/tests/acp/test_telemetry_notification.py +112 -0
  433. ocaya-2.14.0/tests/acp/test_todo.py +69 -0
  434. ocaya-2.14.0/tests/acp/test_tool_call_session_update.py +42 -0
  435. ocaya-2.14.0/tests/acp/test_tool_field_meta.py +298 -0
  436. ocaya-2.14.0/tests/acp/test_usage_update.py +259 -0
  437. ocaya-2.14.0/tests/acp/test_utils.py +126 -0
  438. ocaya-2.14.0/tests/acp/test_write_file.py +335 -0
  439. ocaya-2.14.0/tests/audio_player/test_audio_player.py +206 -0
  440. ocaya-2.14.0/tests/audio_recorder/test_audio_recorder.py +451 -0
  441. ocaya-2.14.0/tests/autocompletion/test_file_indexer.py +349 -0
  442. ocaya-2.14.0/tests/autocompletion/test_fuzzy.py +96 -0
  443. ocaya-2.14.0/tests/autocompletion/test_path_completer_fuzzy.py +350 -0
  444. ocaya-2.14.0/tests/autocompletion/test_path_completer_recursive.py +69 -0
  445. ocaya-2.14.0/tests/autocompletion/test_path_completion_controller.py +258 -0
  446. ocaya-2.14.0/tests/autocompletion/test_path_prompt.py +120 -0
  447. ocaya-2.14.0/tests/autocompletion/test_path_prompt_image.py +70 -0
  448. ocaya-2.14.0/tests/autocompletion/test_path_prompt_transformer.py +142 -0
  449. ocaya-2.14.0/tests/autocompletion/test_slash_command_controller.py +257 -0
  450. ocaya-2.14.0/tests/autocompletion/test_ui_chat_autocompletion.py +341 -0
  451. ocaya-2.14.0/tests/backend/__init__.py +0 -0
  452. ocaya-2.14.0/tests/backend/data/__init__.py +6 -0
  453. ocaya-2.14.0/tests/backend/data/fireworks.py +153 -0
  454. ocaya-2.14.0/tests/backend/data/mistral.py +150 -0
  455. ocaya-2.14.0/tests/backend/data/openai_responses.py +520 -0
  456. ocaya-2.14.0/tests/backend/test_anthropic_adapter.py +536 -0
  457. ocaya-2.14.0/tests/backend/test_backend.py +697 -0
  458. ocaya-2.14.0/tests/backend/test_image_encoding_cache.py +68 -0
  459. ocaya-2.14.0/tests/backend/test_image_mapping.py +146 -0
  460. ocaya-2.14.0/tests/backend/test_openai_responses_adapter.py +1325 -0
  461. ocaya-2.14.0/tests/backend/test_reasoning_adapter.py +254 -0
  462. ocaya-2.14.0/tests/backend/test_ssl_integration.py +142 -0
  463. ocaya-2.14.0/tests/backend/test_vertex_anthropic_adapter.py +638 -0
  464. ocaya-2.14.0/tests/banner/__init__.py +0 -0
  465. ocaya-2.14.0/tests/banner/test_banner_initial_state.py +230 -0
  466. ocaya-2.14.0/tests/browser_sign_in/stubs.py +191 -0
  467. ocaya-2.14.0/tests/browser_sign_in/test_browser_sign_in.py +382 -0
  468. ocaya-2.14.0/tests/browser_sign_in/test_browser_sign_in_http.py +675 -0
  469. ocaya-2.14.0/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +32 -0
  470. ocaya-2.14.0/tests/cli/plan_offer/test_decide_plan_offer.py +283 -0
  471. ocaya-2.14.0/tests/cli/plan_offer/test_http_whoami_gateway.py +224 -0
  472. ocaya-2.14.0/tests/cli/smoke_binary.py +416 -0
  473. ocaya-2.14.0/tests/cli/test_approval_app_grace_period.py +78 -0
  474. ocaya-2.14.0/tests/cli/test_bell_notifications.py +151 -0
  475. ocaya-2.14.0/tests/cli/test_braille_renderer.py +114 -0
  476. ocaya-2.14.0/tests/cli/test_cache.py +73 -0
  477. ocaya-2.14.0/tests/cli/test_check_and_resolve_trusted_folder.py +193 -0
  478. ocaya-2.14.0/tests/cli/test_clipboard.py +400 -0
  479. ocaya-2.14.0/tests/cli/test_commands.py +145 -0
  480. ocaya-2.14.0/tests/cli/test_compact_message.py +26 -0
  481. ocaya-2.14.0/tests/cli/test_connector_auth_app.py +368 -0
  482. ocaya-2.14.0/tests/cli/test_copy_command.py +53 -0
  483. ocaya-2.14.0/tests/cli/test_copy_shortcuts.py +53 -0
  484. ocaya-2.14.0/tests/cli/test_external_editor.py +72 -0
  485. ocaya-2.14.0/tests/cli/test_feedback_bar.py +71 -0
  486. ocaya-2.14.0/tests/cli/test_feedback_bar_manager.py +128 -0
  487. ocaya-2.14.0/tests/cli/test_initial_agent_name.py +53 -0
  488. ocaya-2.14.0/tests/cli/test_mcp_app.py +445 -0
  489. ocaya-2.14.0/tests/cli/test_no_markup_static.py +19 -0
  490. ocaya-2.14.0/tests/cli/test_programmatic_setup.py +226 -0
  491. ocaya-2.14.0/tests/cli/test_question_app.py +718 -0
  492. ocaya-2.14.0/tests/cli/test_question_app_grace_period.py +111 -0
  493. ocaya-2.14.0/tests/cli/test_rename_command.py +162 -0
  494. ocaya-2.14.0/tests/cli/test_spinner.py +16 -0
  495. ocaya-2.14.0/tests/cli/test_stderr_guard.py +73 -0
  496. ocaya-2.14.0/tests/cli/test_switching_mode.py +109 -0
  497. ocaya-2.14.0/tests/cli/test_typing_debounce.py +39 -0
  498. ocaya-2.14.0/tests/cli/test_ui_clipboard_notifications.py +40 -0
  499. ocaya-2.14.0/tests/cli/test_ui_config_and_model_picker.py +437 -0
  500. ocaya-2.14.0/tests/cli/test_ui_session_exit.py +47 -0
  501. ocaya-2.14.0/tests/cli/test_ui_session_incremental_renderer.py +181 -0
  502. ocaya-2.14.0/tests/cli/test_ui_session_resume.py +197 -0
  503. ocaya-2.14.0/tests/cli/test_ui_skill_dispatch.py +131 -0
  504. ocaya-2.14.0/tests/cli/test_ui_teleport_availability.py +272 -0
  505. ocaya-2.14.0/tests/cli/test_ui_theme_picker.py +93 -0
  506. ocaya-2.14.0/tests/cli/textual_ui/__init__.py +0 -0
  507. ocaya-2.14.0/tests/cli/textual_ui/test_chat_input_keybindings.py +64 -0
  508. ocaya-2.14.0/tests/cli/textual_ui/test_completion_popup.py +12 -0
  509. ocaya-2.14.0/tests/cli/textual_ui/test_debug_console_resize.py +44 -0
  510. ocaya-2.14.0/tests/cli/textual_ui/test_event_handler_hooks.py +81 -0
  511. ocaya-2.14.0/tests/cli/textual_ui/test_image_input_validation.py +149 -0
  512. ocaya-2.14.0/tests/cli/textual_ui/test_manual_command_output_cap.py +132 -0
  513. ocaya-2.14.0/tests/cli/textual_ui/test_message_queue.py +144 -0
  514. ocaya-2.14.0/tests/cli/textual_ui/test_paste_path.py +221 -0
  515. ocaya-2.14.0/tests/cli/textual_ui/test_quit_confirmation.py +169 -0
  516. ocaya-2.14.0/tests/cli/textual_ui/test_read_widget.py +18 -0
  517. ocaya-2.14.0/tests/cli/textual_ui/test_remote_session_manager.py +286 -0
  518. ocaya-2.14.0/tests/cli/textual_ui/test_session_picker.py +144 -0
  519. ocaya-2.14.0/tests/cli/textual_ui/test_streaming_message_buffer.py +319 -0
  520. ocaya-2.14.0/tests/cli/textual_ui/test_user_message_attachments.py +78 -0
  521. ocaya-2.14.0/tests/cli/textual_ui/windowing/test_session_windowing.py +47 -0
  522. ocaya-2.14.0/tests/conftest.py +340 -0
  523. ocaya-2.14.0/tests/core/experiments/__init__.py +0 -0
  524. ocaya-2.14.0/tests/core/experiments/test_client.py +116 -0
  525. ocaya-2.14.0/tests/core/experiments/test_manager.py +427 -0
  526. ocaya-2.14.0/tests/core/experiments/test_models.py +68 -0
  527. ocaya-2.14.0/tests/core/experiments/test_resume.py +168 -0
  528. ocaya-2.14.0/tests/core/experiments/test_session_helpers.py +208 -0
  529. ocaya-2.14.0/tests/core/experiments/test_system_prompt_variant.py +197 -0
  530. ocaya-2.14.0/tests/core/experiments/test_telemetry_integration.py +31 -0
  531. ocaya-2.14.0/tests/core/nuage/__init__.py +0 -0
  532. ocaya-2.14.0/tests/core/nuage/test_remote_events_source.py +301 -0
  533. ocaya-2.14.0/tests/core/nuage/test_workflows_client.py +248 -0
  534. ocaya-2.14.0/tests/core/session/test_image_snapshot.py +71 -0
  535. ocaya-2.14.0/tests/core/session/test_last_session_pointer.py +153 -0
  536. ocaya-2.14.0/tests/core/session/test_session_id.py +79 -0
  537. ocaya-2.14.0/tests/core/session/test_title_format.py +74 -0
  538. ocaya-2.14.0/tests/core/test_add_dir.py +392 -0
  539. ocaya-2.14.0/tests/core/test_agents.py +122 -0
  540. ocaya-2.14.0/tests/core/test_auth_crypto.py +46 -0
  541. ocaya-2.14.0/tests/core/test_auth_github.py +286 -0
  542. ocaya-2.14.0/tests/core/test_backend_error.py +74 -0
  543. ocaya-2.14.0/tests/core/test_build_ssl_context.py +134 -0
  544. ocaya-2.14.0/tests/core/test_compaction.py +112 -0
  545. ocaya-2.14.0/tests/core/test_config_builder.py +322 -0
  546. ocaya-2.14.0/tests/core/test_config_field.py +216 -0
  547. ocaya-2.14.0/tests/core/test_config_layer.py +542 -0
  548. ocaya-2.14.0/tests/core/test_config_load_dotenv.py +81 -0
  549. ocaya-2.14.0/tests/core/test_config_orchestrator.py +87 -0
  550. ocaya-2.14.0/tests/core/test_config_otel.py +140 -0
  551. ocaya-2.14.0/tests/core/test_config_patch_ops.py +257 -0
  552. ocaya-2.14.0/tests/core/test_config_paths.py +553 -0
  553. ocaya-2.14.0/tests/core/test_config_resolution.py +1506 -0
  554. ocaya-2.14.0/tests/core/test_config_schema.py +128 -0
  555. ocaya-2.14.0/tests/core/test_config_toml_end_to_end.py +71 -0
  556. ocaya-2.14.0/tests/core/test_edit_encoding.py +86 -0
  557. ocaya-2.14.0/tests/core/test_environment_layer.py +48 -0
  558. ocaya-2.14.0/tests/core/test_file_logging.py +345 -0
  559. ocaya-2.14.0/tests/core/test_hooks.py +504 -0
  560. ocaya-2.14.0/tests/core/test_last_user_message.py +45 -0
  561. ocaya-2.14.0/tests/core/test_llm_message_merge.py +51 -0
  562. ocaya-2.14.0/tests/core/test_local_config_files.py +114 -0
  563. ocaya-2.14.0/tests/core/test_log_reader.py +430 -0
  564. ocaya-2.14.0/tests/core/test_loop.py +304 -0
  565. ocaya-2.14.0/tests/core/test_merge.py +183 -0
  566. ocaya-2.14.0/tests/core/test_overrides_layer.py +85 -0
  567. ocaya-2.14.0/tests/core/test_plan_session.py +42 -0
  568. ocaya-2.14.0/tests/core/test_project_config_layer.py +283 -0
  569. ocaya-2.14.0/tests/core/test_proxy_setup.py +304 -0
  570. ocaya-2.14.0/tests/core/test_remote_agent_loop.py +937 -0
  571. ocaya-2.14.0/tests/core/test_retry.py +160 -0
  572. ocaya-2.14.0/tests/core/test_rewind_integration.py +303 -0
  573. ocaya-2.14.0/tests/core/test_rewind_manager.py +594 -0
  574. ocaya-2.14.0/tests/core/test_scratchpad.py +85 -0
  575. ocaya-2.14.0/tests/core/test_slug.py +34 -0
  576. ocaya-2.14.0/tests/core/test_telemetry_send.py +838 -0
  577. ocaya-2.14.0/tests/core/test_teleport_git.py +327 -0
  578. ocaya-2.14.0/tests/core/test_teleport_nuage.py +189 -0
  579. ocaya-2.14.0/tests/core/test_teleport_service.py +350 -0
  580. ocaya-2.14.0/tests/core/test_teleport_telemetry.py +220 -0
  581. ocaya-2.14.0/tests/core/test_tokens.py +50 -0
  582. ocaya-2.14.0/tests/core/test_transcribe_config.py +115 -0
  583. ocaya-2.14.0/tests/core/test_trusted_folders.py +515 -0
  584. ocaya-2.14.0/tests/core/test_tts_config.py +107 -0
  585. ocaya-2.14.0/tests/core/test_user_config_layer.py +97 -0
  586. ocaya-2.14.0/tests/core/test_utils.py +336 -0
  587. ocaya-2.14.0/tests/core/test_vibe_config_schema.py +62 -0
  588. ocaya-2.14.0/tests/core/test_watcher.py +50 -0
  589. ocaya-2.14.0/tests/core/tools/builtins/test_edit.py +230 -0
  590. ocaya-2.14.0/tests/core/tools/builtins/test_read.py +355 -0
  591. ocaya-2.14.0/tests/e2e/common.py +116 -0
  592. ocaya-2.14.0/tests/e2e/conftest.py +86 -0
  593. ocaya-2.14.0/tests/e2e/mock_server.py +160 -0
  594. ocaya-2.14.0/tests/e2e/test_cli_tui_fresh_install.py +110 -0
  595. ocaya-2.14.0/tests/e2e/test_cli_tui_hooks.py +87 -0
  596. ocaya-2.14.0/tests/e2e/test_cli_tui_onboarding.py +31 -0
  597. ocaya-2.14.0/tests/e2e/test_cli_tui_session_exit.py +139 -0
  598. ocaya-2.14.0/tests/e2e/test_cli_tui_streaming.py +52 -0
  599. ocaya-2.14.0/tests/e2e/test_cli_tui_tool_approval.py +90 -0
  600. ocaya-2.14.0/tests/mock/__init__.py +0 -0
  601. ocaya-2.14.0/tests/mock/mock_backend_factory.py +16 -0
  602. ocaya-2.14.0/tests/mock/mock_entrypoint.py +65 -0
  603. ocaya-2.14.0/tests/mock/utils.py +60 -0
  604. ocaya-2.14.0/tests/narrator_manager/__init__.py +0 -0
  605. ocaya-2.14.0/tests/narrator_manager/test_narrator_manager.py +192 -0
  606. ocaya-2.14.0/tests/narrator_manager/test_telemetry.py +61 -0
  607. ocaya-2.14.0/tests/onboarding/test_run_onboarding.py +76 -0
  608. ocaya-2.14.0/tests/onboarding/test_ui_onboarding.py +1280 -0
  609. ocaya-2.14.0/tests/session/test_resume_sessions.py +230 -0
  610. ocaya-2.14.0/tests/session/test_saved_sessions.py +330 -0
  611. ocaya-2.14.0/tests/session/test_session_loader.py +1246 -0
  612. ocaya-2.14.0/tests/session/test_session_logger.py +1270 -0
  613. ocaya-2.14.0/tests/session/test_session_migration.py +177 -0
  614. ocaya-2.14.0/tests/setup/auth/test_auth_state.py +216 -0
  615. ocaya-2.14.0/tests/skills/conftest.py +62 -0
  616. ocaya-2.14.0/tests/skills/test_builtin_sync.py +51 -0
  617. ocaya-2.14.0/tests/skills/test_manager.py +635 -0
  618. ocaya-2.14.0/tests/skills/test_models.py +207 -0
  619. ocaya-2.14.0/tests/skills/test_parser.py +115 -0
  620. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +136 -0
  621. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +176 -0
  622. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +201 -0
  623. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +207 -0
  624. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_escape_closes.svg +200 -0
  625. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_initial.svg +204 -0
  626. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_navigate_down.svg +204 -0
  627. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_toggle_autocopy.svg +204 -0
  628. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_config_issue_notification.svg +201 -0
  629. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_hook_config_issue_notification.svg +201 -0
  630. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_data_retention/test_snapshot_data_retention.svg +202 -0
  631. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_close.svg +200 -0
  632. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_live_append.svg +203 -0
  633. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_open.svg +202 -0
  634. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_long_content_after_resize.svg +222 -0
  635. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_long_content_bottom_lines_hidden.svg +181 -0
  636. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_short_content.svg +180 -0
  637. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +202 -0
  638. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_feedback_bar/test_snapshot_feedback_bar_visible.svg +202 -0
  639. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_image_attachments/test_snapshot_textbox_rewrites_typed_image_path.svg +200 -0
  640. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_image_attachments/test_snapshot_user_message_with_image_footer_plural.svg +201 -0
  641. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_image_attachments/test_snapshot_user_message_with_image_footer_singular.svg +201 -0
  642. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_back_to_mcp.svg +205 -0
  643. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_opens_on_disconnected.svg +202 -0
  644. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_show_url.svg +202 -0
  645. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_backspace_returns_to_overview.svg +204 -0
  646. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_broken_server.svg +204 -0
  647. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connector_back_to_overview.svg +205 -0
  648. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_only.svg +206 -0
  649. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_sorted_by_status.svg +205 -0
  650. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_drill_into_connector.svg +203 -0
  651. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_enter_drills_into_server.svg +202 -0
  652. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_escape_closes.svg +200 -0
  653. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_help_bar_shows_connect.svg +205 -0
  654. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_no_servers.svg +200 -0
  655. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview.svg +204 -0
  656. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview_navigate_down.svg +204 -0
  657. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_refresh_shortcut.svg +204 -0
  658. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_server_arg.svg +202 -0
  659. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_with_connectors_overview.svg +205 -0
  660. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_escape_cancels.svg +200 -0
  661. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_initial.svg +203 -0
  662. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_navigate_down.svg +204 -0
  663. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_select_different_model.svg +200 -0
  664. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +201 -0
  665. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +201 -0
  666. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +201 -0
  667. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +200 -0
  668. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +200 -0
  669. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_idle_after_speaking.svg +201 -0
  670. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_speaking.svg +202 -0
  671. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_summarizing.svg +202 -0
  672. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_api_key/test_snapshot_onboarding_api_key_with_valid_input.svg +155 -0
  673. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-dark].svg +180 -0
  674. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-light].svg +180 -0
  675. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[dracula].svg +187 -0
  676. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +114 -0
  677. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +136 -0
  678. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_plan_file_message/test_snapshot_plan_file_message.svg +202 -0
  679. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +200 -0
  680. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +200 -0
  681. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +202 -0
  682. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +202 -0
  683. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +201 -0
  684. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +200 -0
  685. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +138 -0
  686. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +138 -0
  687. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +138 -0
  688. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +138 -0
  689. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +138 -0
  690. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +138 -0
  691. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +137 -0
  692. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +139 -0
  693. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +138 -0
  694. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +139 -0
  695. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +137 -0
  696. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +137 -0
  697. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +137 -0
  698. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +137 -0
  699. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +137 -0
  700. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +140 -0
  701. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +137 -0
  702. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +140 -0
  703. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +139 -0
  704. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +202 -0
  705. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +202 -0
  706. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +202 -0
  707. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +202 -0
  708. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +204 -0
  709. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_error_shows_toast.svg +204 -0
  710. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_exit_on_escape.svg +201 -0
  711. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_navigate_down.svg +203 -0
  712. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_navigate_up.svg +203 -0
  713. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_panel_shown.svg +203 -0
  714. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +202 -0
  715. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume_injected/test_snapshot_session_resume_hides_injected_messages.svg +201 -0
  716. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_code_fence/test_snapshot_streaming_code_fence_preserved.svg +202 -0
  717. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +94 -0
  718. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +94 -0
  719. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_hidden_for_non_pro_account.svg +250 -0
  720. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_visible_for_pro_account.svg +250 -0
  721. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +105 -0
  722. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +105 -0
  723. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +105 -0
  724. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +94 -0
  725. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +94 -0
  726. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +94 -0
  727. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +95 -0
  728. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +95 -0
  729. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +94 -0
  730. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +94 -0
  731. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +94 -0
  732. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog.svg +219 -0
  733. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_many_files.svg +220 -0
  734. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_small_terminal.svg +156 -0
  735. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_untrusted_repo.svg +220 -0
  736. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_with_repo.svg +221 -0
  737. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_indicator_shown.svg +201 -0
  738. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_not_started_when_voice_disabled.svg +200 -0
  739. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_stopped_after_keypress.svg +200 -0
  740. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_then_conversation.svg +201 -0
  741. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_transcription_populates_text_area.svg +201 -0
  742. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_disable.svg +200 -0
  743. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_enable.svg +200 -0
  744. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +202 -0
  745. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +204 -0
  746. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +204 -0
  747. ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +202 -0
  748. ocaya-2.14.0/tests/snapshots/base_snapshot_test_app.py +75 -0
  749. ocaya-2.14.0/tests/snapshots/conftest.py +29 -0
  750. ocaya-2.14.0/tests/snapshots/snap_compare.py +20 -0
  751. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_ask_user_question.py +80 -0
  752. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_basic_conversation.py +33 -0
  753. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +38 -0
  754. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_config_app.py +64 -0
  755. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_config_issues.py +56 -0
  756. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_data_retention.py +23 -0
  757. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_debug_console.py +90 -0
  758. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_diff_view_truncation.py +71 -0
  759. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +58 -0
  760. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_feedback_bar.py +45 -0
  761. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_image_attachments.py +116 -0
  762. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_mcp_command.py +409 -0
  763. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_model_picker.py +95 -0
  764. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_modes.py +88 -0
  765. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_narrator_flow.py +154 -0
  766. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_onboarding_api_key.py +54 -0
  767. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_onboarding_theme.py +33 -0
  768. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +115 -0
  769. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_plan_file_message.py +43 -0
  770. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_proxy_setup.py +129 -0
  771. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_question_app.py +365 -0
  772. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_reasoning_content.py +146 -0
  773. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_release_update_notification.py +51 -0
  774. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_rewind.py +142 -0
  775. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_session_resume.py +47 -0
  776. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_session_resume_injected.py +47 -0
  777. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_streaming_code_fence.py +61 -0
  778. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +75 -0
  779. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_teleport.py +317 -0
  780. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_trust_folder_dialog.py +119 -0
  781. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_voice_mode.py +164 -0
  782. ocaya-2.14.0/tests/snapshots/test_ui_snapshot_whats_new.py +156 -0
  783. ocaya-2.14.0/tests/stubs/fake_audio_player.py +36 -0
  784. ocaya-2.14.0/tests/stubs/fake_audio_recorder.py +65 -0
  785. ocaya-2.14.0/tests/stubs/fake_backend.py +128 -0
  786. ocaya-2.14.0/tests/stubs/fake_client.py +134 -0
  787. ocaya-2.14.0/tests/stubs/fake_connector_registry.py +74 -0
  788. ocaya-2.14.0/tests/stubs/fake_mcp_registry.py +62 -0
  789. ocaya-2.14.0/tests/stubs/fake_tool.py +35 -0
  790. ocaya-2.14.0/tests/stubs/fake_transcribe_client.py +25 -0
  791. ocaya-2.14.0/tests/stubs/fake_tts_client.py +21 -0
  792. ocaya-2.14.0/tests/stubs/fake_voice_manager.py +77 -0
  793. ocaya-2.14.0/tests/test_agent_auto_compact.py +339 -0
  794. ocaya-2.14.0/tests/test_agent_auto_title.py +83 -0
  795. ocaya-2.14.0/tests/test_agent_backend.py +421 -0
  796. ocaya-2.14.0/tests/test_agent_loop_images.py +193 -0
  797. ocaya-2.14.0/tests/test_agent_loop_refresh_system_prompt.py +33 -0
  798. ocaya-2.14.0/tests/test_agent_observer_streaming.py +831 -0
  799. ocaya-2.14.0/tests/test_agent_override_resolve_permission.py +109 -0
  800. ocaya-2.14.0/tests/test_agent_stats.py +752 -0
  801. ocaya-2.14.0/tests/test_agent_tool_call.py +897 -0
  802. ocaya-2.14.0/tests/test_agents.py +765 -0
  803. ocaya-2.14.0/tests/test_approve_always_permanent.py +122 -0
  804. ocaya-2.14.0/tests/test_cli_programmatic_preload.py +187 -0
  805. ocaya-2.14.0/tests/test_deferred_init.py +557 -0
  806. ocaya-2.14.0/tests/test_history_manager.py +145 -0
  807. ocaya-2.14.0/tests/test_install_script.py +198 -0
  808. ocaya-2.14.0/tests/test_message_id.py +162 -0
  809. ocaya-2.14.0/tests/test_middleware.py +670 -0
  810. ocaya-2.14.0/tests/test_permission_store.py +166 -0
  811. ocaya-2.14.0/tests/test_prepare_release.py +82 -0
  812. ocaya-2.14.0/tests/test_reasoning_content.py +575 -0
  813. ocaya-2.14.0/tests/test_system_prompt.py +148 -0
  814. ocaya-2.14.0/tests/test_tagged_text.py +107 -0
  815. ocaya-2.14.0/tests/test_tracing.py +381 -0
  816. ocaya-2.14.0/tests/test_turn_summary.py +420 -0
  817. ocaya-2.14.0/tests/test_ui_external_editor.py +69 -0
  818. ocaya-2.14.0/tests/test_ui_input_history.py +332 -0
  819. ocaya-2.14.0/tests/test_ui_rewind.py +260 -0
  820. ocaya-2.14.0/tests/tools/test_arity.py +54 -0
  821. ocaya-2.14.0/tests/tools/test_ask_user_question.py +188 -0
  822. ocaya-2.14.0/tests/tools/test_bash.py +311 -0
  823. ocaya-2.14.0/tests/tools/test_connectors.py +966 -0
  824. ocaya-2.14.0/tests/tools/test_exit_plan_mode.py +282 -0
  825. ocaya-2.14.0/tests/tools/test_granular_permissions.py +746 -0
  826. ocaya-2.14.0/tests/tools/test_grep.py +356 -0
  827. ocaya-2.14.0/tests/tools/test_invoke_context.py +112 -0
  828. ocaya-2.14.0/tests/tools/test_manager_get_tool_config.py +505 -0
  829. ocaya-2.14.0/tests/tools/test_mcp.py +970 -0
  830. ocaya-2.14.0/tests/tools/test_mcp_sampling.py +188 -0
  831. ocaya-2.14.0/tests/tools/test_scratchpad_permissions.py +89 -0
  832. ocaya-2.14.0/tests/tools/test_skill.py +255 -0
  833. ocaya-2.14.0/tests/tools/test_task.py +222 -0
  834. ocaya-2.14.0/tests/tools/test_ui_bash_execution.py +241 -0
  835. ocaya-2.14.0/tests/tools/test_webfetch.py +256 -0
  836. ocaya-2.14.0/tests/tools/test_websearch.py +382 -0
  837. ocaya-2.14.0/tests/tools/test_wildcard_match.py +66 -0
  838. ocaya-2.14.0/tests/transcribe/test_transcribe_client.py +165 -0
  839. ocaya-2.14.0/tests/tts/test_tts_client.py +114 -0
  840. ocaya-2.14.0/tests/update_notifier/adapters/fake_update_cache_repository.py +17 -0
  841. ocaya-2.14.0/tests/update_notifier/adapters/fake_update_gateway.py +22 -0
  842. ocaya-2.14.0/tests/update_notifier/test_do_update.py +74 -0
  843. ocaya-2.14.0/tests/update_notifier/test_filesystem_update_cache_repository.py +161 -0
  844. ocaya-2.14.0/tests/update_notifier/test_github_update_gateway.py +245 -0
  845. ocaya-2.14.0/tests/update_notifier/test_pypi_update_gateway.py +155 -0
  846. ocaya-2.14.0/tests/update_notifier/test_ui_update_notification.py +389 -0
  847. ocaya-2.14.0/tests/update_notifier/test_update_use_case.py +302 -0
  848. ocaya-2.14.0/tests/update_notifier/test_whats_new.py +161 -0
  849. ocaya-2.14.0/tests/voice_manager/__init__.py +0 -0
  850. ocaya-2.14.0/tests/voice_manager/test_telemetry.py +44 -0
  851. ocaya-2.14.0/tests/voice_manager/test_voice_manager.py +594 -0
  852. ocaya-2.14.0/tests/vscode_extension_promo/__init__.py +0 -0
  853. ocaya-2.14.0/tests/vscode_extension_promo/fake_repository.py +17 -0
  854. ocaya-2.14.0/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py +156 -0
  855. ocaya-2.14.0/tests/vscode_extension_promo/test_vscode_extension_promo.py +74 -0
  856. ocaya-2.14.0/uv.lock +2512 -0
  857. ocaya-2.14.0/vibe-acp.spec +74 -0
  858. ocaya-2.14.0/vibe.spec +72 -0
@@ -0,0 +1,7 @@
1
+ # CODEOWNERS
2
+
3
+ # Default owners for everything in the repo
4
+ * @mistralai/ocaya
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 OCAYA
3
+ title: "bug: "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: >
9
+ Thanks for filing a detailed bug. Fill out every section so we can
10
+ reproduce the issue quickly
11
+
12
+ - type: dropdown
13
+ id: component
14
+ attributes:
15
+ label: Component
16
+ description: Which part of OCAYA is affected?
17
+ options:
18
+ - CLI
19
+ - ACP
20
+ - VS Code extension
21
+ - Other
22
+ validations:
23
+ required: true
24
+
25
+ - type: textarea
26
+ id: summary
27
+ attributes:
28
+ label: Summary
29
+ description: What went wrong? Keep it short but specific.
30
+ validations:
31
+ required: true
32
+
33
+ - type: textarea
34
+ id: repro
35
+ attributes:
36
+ label: Reproduction steps
37
+ description: >
38
+ Commands, code, or payloads that trigger the bug. Include any relevant
39
+ input files or snippets (redact secrets).
40
+ validations:
41
+ required: true
42
+
43
+ - type: input
44
+ id: versions
45
+ attributes:
46
+ label: Versions / environment
47
+ description: >
48
+ Include the version for the affected component, uv or pip when
49
+ relevant and OS.
50
+ placeholder: "ocaya 2.14.0, uv 0.9.0 on macOS 15.7"
51
+ validations:
52
+ required: true
53
+
54
+ - type: textarea
55
+ id: logs
56
+ attributes:
57
+ label: Logs & screenshots
58
+ description: Paste relevant stack traces, JSON snippets, or console output.
59
+ render: shell
@@ -0,0 +1,11 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Feature request
4
+ url: https://github.com/mistralai/mistral-vibe/discussions/new?category=ideas
5
+ about: Suggest a new feature or improvement via GitHub Discussions
6
+ - name: Ask a question
7
+ url: https://discord.com/channels/1144547040454508606/1447989080720670915
8
+ about: Join Mistral AI Discord server for support and discussions
9
+ - name: Read the docs
10
+ url: https://docs.mistral.ai/mistral-vibe/introduction
11
+ about: Read the Mistral Vibe documentation for more information
@@ -0,0 +1,227 @@
1
+ name: Build and upload
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ pull_request:
7
+ branches: [main]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ configure:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+ outputs:
16
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
17
+ smoke_matrix: ${{ steps.set-matrix.outputs.smoke_matrix }}
18
+ steps:
19
+ - name: Set matrix
20
+ id: set-matrix
21
+ run: |
22
+ # Linux: manylinux_2_28 containers → binary works on glibc >= 2.28 (RHEL 8+, Ubuntu 20.04+)
23
+ matrix='{
24
+ "include": [
25
+ {"runner": "ubuntu-22.04", "os": "linux", "arch": "x86_64", "container": "quay.io/pypa/manylinux_2_28_x86_64"},
26
+ {"runner": "ubuntu-22.04-arm", "os": "linux", "arch": "aarch64", "container": "quay.io/pypa/manylinux_2_28_aarch64"},
27
+ {"runner": "macos-15-intel", "os": "darwin", "arch": "x86_64"},
28
+ {"runner": "macos-14", "os": "darwin", "arch": "aarch64"},
29
+ {"runner": "windows-2022", "os": "windows", "arch": "x86_64"}
30
+ ]
31
+ }'
32
+ # TODO: Re-enable macOS standalone artifact smoke tests once the PyInstaller
33
+ # binaries are Developer ID signed and notarized. The direct GitHub zip
34
+ # download path gets Gatekeeper-assessed via quarantine and currently rejects
35
+ # ad-hoc signed binaries, even though ocaya-acp continues to work when bundled
36
+ # through the VS Code extension.
37
+ smoke_matrix='{
38
+ "include": [
39
+ {"runner": "ubuntu-24.04", "os": "linux", "arch": "x86_64"},
40
+ {"runner": "ubuntu-24.04", "os": "linux", "arch": "x86_64", "tag": "old-glibc", "container": "almalinux:8"},
41
+ {"runner": "ubuntu-24.04-arm", "os": "linux", "arch": "aarch64"},
42
+ {"runner": "windows-latest", "os": "windows", "arch": "x86_64"}
43
+ ]
44
+ }'
45
+ echo "matrix=$(echo $matrix | jq -c .)" >> $GITHUB_OUTPUT
46
+ echo "smoke_matrix=$(echo $smoke_matrix | jq -c .)" >> $GITHUB_OUTPUT
47
+
48
+ build-and-upload:
49
+ needs: configure
50
+ name: "Build and upload: ${{ matrix.os }}-${{ matrix.arch }}"
51
+ permissions:
52
+ contents: read
53
+ strategy:
54
+ matrix: ${{ fromJSON(needs.configure.outputs.matrix) }}
55
+ runs-on: ${{ matrix.runner }}
56
+ container: ${{ matrix.container || '' }}
57
+
58
+ steps:
59
+ - name: Checkout repository
60
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
61
+
62
+ - name: Install uv with caching
63
+ uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
64
+ with:
65
+ version: "latest"
66
+ enable-cache: true
67
+ cache-dependency-glob: "uv.lock"
68
+
69
+ - name: Set up Python
70
+ if: ${{ matrix.os != 'linux' }}
71
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
72
+ with:
73
+ python-version: "3.12"
74
+
75
+ - name: Install Python (Linux)
76
+ if: ${{ matrix.os == 'linux' }}
77
+ run: |
78
+ uv python install 3.12
79
+ # Install patchelf >= 0.18 (yum/EPEL8 ships 0.12 which lacks --clear-execstack)
80
+ PATCHELF_VERSION=0.18.0
81
+ curl -sL "https://github.com/NixOS/patchelf/releases/download/${PATCHELF_VERSION}/patchelf-${PATCHELF_VERSION}-$(uname -m).tar.gz" \
82
+ | tar xz -C /usr/local
83
+ # python-build-standalone ships libpython with GNU_STACK RWE (executable stack)
84
+ # which is rejected by hardened Linux kernels — clear it with patchelf
85
+ find "$(uv python dir)" -name 'libpython*.so*' -exec patchelf --clear-execstack {} \;
86
+
87
+ - name: Sync dependencies
88
+ run: uv sync --no-dev --group build
89
+
90
+ - name: Build ACP with PyInstaller
91
+ run: uv run --no-dev --group build pyinstaller ocaya-acp.spec
92
+
93
+ - name: Build CLI with PyInstaller
94
+ run: uv run --no-dev --group build pyinstaller ocaya.spec
95
+
96
+ - name: Clear executable stack on bundled libraries
97
+ if: ${{ matrix.os == 'linux' }}
98
+ run: |
99
+ find dist/ocaya-acp-dir/_internal -name '*.so*' -type f -print0 \
100
+ | xargs -0 -I{} patchelf --clear-execstack {}
101
+ patchelf --clear-execstack dist/ocaya-acp-dir/ocaya-acp || true
102
+ find dist/ocaya-dir/_internal -name '*.so*' -type f -print0 \
103
+ | xargs -0 -I{} patchelf --clear-execstack {}
104
+ patchelf --clear-execstack dist/ocaya-dir/ocaya || true
105
+
106
+ - name: Get package version
107
+ id: get_version
108
+ shell: bash
109
+ run: echo "version=$(uv version | cut -d' ' -f2)" >> $GITHUB_OUTPUT
110
+
111
+ - name: Upload ACP binary as artifact
112
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
113
+ with:
114
+ name: ocaya-acp-${{ matrix.os }}-${{ matrix.arch }}-${{ steps.get_version.outputs.version }}
115
+ path: dist/ocaya-acp-dir/
116
+
117
+ - name: Upload CLI binary as artifact
118
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
119
+ with:
120
+ name: ocaya-${{ matrix.os }}-${{ matrix.arch }}-${{ steps.get_version.outputs.version }}
121
+ path: dist/ocaya-dir/
122
+
123
+ nix-build:
124
+ needs: configure
125
+ name: "Nix build and upload: ${{ matrix.os }}-${{ matrix.arch }}"
126
+ permissions:
127
+ contents: read
128
+ strategy:
129
+ matrix: ${{ fromJSON(needs.configure.outputs.matrix) }}
130
+ runs-on: ${{ matrix.runner }}
131
+ steps:
132
+ - name: Checkout repository
133
+ if: matrix.os != 'windows'
134
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
135
+
136
+ - name: Install Nix
137
+ if: matrix.os != 'windows'
138
+ uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31
139
+
140
+ - name: Build with Nix
141
+ if: matrix.os != 'windows'
142
+ shell: bash
143
+ run: |
144
+ nix build .#
145
+
146
+ - name: Nix Smoke Test
147
+ if: matrix.os != 'windows'
148
+ shell: bash
149
+ run: |
150
+ nix run .# -- --version
151
+
152
+ smoke-test:
153
+ needs: [configure, build-and-upload]
154
+ name: "Test: ${{ matrix.os }}-${{ matrix.arch }}${{ matrix.tag && format('-{0}', matrix.tag) || '' }}"
155
+ permissions:
156
+ contents: read
157
+ strategy:
158
+ matrix: ${{ fromJSON(needs.configure.outputs.smoke_matrix) }}
159
+ runs-on: ${{ matrix.runner }}
160
+ container: ${{ matrix.container || '' }}
161
+
162
+ steps:
163
+ - name: Checkout repository
164
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
165
+
166
+ - name: Set up Python
167
+ if: ${{ !matrix.container }}
168
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
169
+ with:
170
+ python-version: "3.12"
171
+
172
+ - name: Set up Python (container)
173
+ if: ${{ matrix.container }}
174
+ run: yum install -y python3.11 python3.11-pip
175
+
176
+ - name: Install smoke test deps
177
+ run: ${{ matrix.container && 'python3.11' || 'python' }} -m pip install agent-client-protocol==0.10.1
178
+
179
+ - name: Download ACP artifact
180
+ uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
181
+ with:
182
+ pattern: ocaya-acp-${{ matrix.os }}-${{ matrix.arch }}-*
183
+ merge-multiple: true
184
+ path: dist/ocaya-acp-dir
185
+
186
+ - name: Download CLI artifact
187
+ uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
188
+ with:
189
+ pattern: ocaya-${{ matrix.os }}-${{ matrix.arch }}-*
190
+ merge-multiple: true
191
+ path: dist/ocaya-dir
192
+
193
+ - name: Run ACP smoke tests
194
+ run: ${{ matrix.container && 'python3.11' || 'python' }} tests/acp/smoke_binary.py dist/ocaya-acp-dir
195
+
196
+ attach-to-release:
197
+ needs: [build-and-upload, smoke-test]
198
+ runs-on: ubuntu-latest
199
+ if: github.event_name == 'release'
200
+ permissions:
201
+ contents: write
202
+ steps:
203
+ - name: Download all artifacts
204
+ uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
205
+ with:
206
+ path: artifacts
207
+
208
+ - name: Zip artifacts
209
+ run: |
210
+ mkdir release-assets
211
+ for dir in artifacts/*; do
212
+ name=$(basename "$dir")
213
+ if [ -f "$dir/ocaya-acp" ] || [ -f "$dir/ocaya-acp.exe" ]; then
214
+ chmod -f +x "$dir/ocaya-acp" 2>/dev/null || true
215
+ (cd "$dir" && zip -r "../../release-assets/${name}.zip" .)
216
+ elif [ -f "$dir/ocaya" ] || [ -f "$dir/ocaya.exe" ]; then
217
+ chmod -f +x "$dir/ocaya" 2>/dev/null || true
218
+ (cd "$dir" && zip -r "../../release-assets/${name}.zip" .)
219
+ fi
220
+ done
221
+
222
+ - name: Attach binaries to release
223
+ uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
224
+ with:
225
+ files: release-assets/*.zip
226
+ env:
227
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,132 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ env:
10
+ PYTHON_VERSION: "3.12"
11
+
12
+ jobs:
13
+ pre-commit:
14
+ name: Pre-commit
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+
19
+ steps:
20
+ - name: Checkout repository
21
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
22
+
23
+ - name: Install uv with caching
24
+ uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
25
+ with:
26
+ version: "latest"
27
+ enable-cache: true
28
+ cache-dependency-glob: "uv.lock"
29
+
30
+ - name: Set up Python
31
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
32
+ with:
33
+ python-version: ${{ env.PYTHON_VERSION }}
34
+
35
+ - name: Sync dependencies
36
+ run: uv sync --all-extras
37
+
38
+ - name: Install pip (required by pre-commit)
39
+ run: uv pip install pip
40
+
41
+ - name: Add virtual environment to PATH
42
+ run: echo "$(pwd)/.venv/bin" >> $GITHUB_PATH
43
+
44
+ - name: Cache pre-commit
45
+ uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
46
+ with:
47
+ path: ~/.cache/pre-commit
48
+ key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
49
+
50
+ - name: Run pre-commit
51
+ run: uv run pre-commit run --all-files --show-diff-on-failure
52
+
53
+ tests:
54
+ name: Tests
55
+ runs-on: ubuntu-latest
56
+ permissions:
57
+ contents: read
58
+
59
+ steps:
60
+ - name: Checkout repository
61
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
62
+
63
+ - name: Install uv with caching
64
+ uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
65
+ with:
66
+ version: "latest"
67
+ enable-cache: true
68
+ cache-dependency-glob: "uv.lock"
69
+
70
+ - name: Set up Python
71
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
72
+ with:
73
+ python-version: ${{ env.PYTHON_VERSION }}
74
+
75
+ - name: Sync dependencies
76
+ run: uv sync --all-extras
77
+
78
+ - name: Verify CLI can start
79
+ run: |
80
+ uv run ocaya --help
81
+ uv run ocaya-acp --help
82
+
83
+ - name: Install ripgrep
84
+ run: sudo apt-get update && sudo apt-get install -y ripgrep
85
+
86
+ - name: Run tests
87
+ run: uv run pytest --ignore tests/snapshots
88
+
89
+ snapshot-tests:
90
+ name: Snapshot Tests
91
+ runs-on: ubuntu-latest
92
+ permissions:
93
+ contents: read
94
+
95
+ steps:
96
+ - name: Checkout repository
97
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
98
+
99
+ - name: Install uv with caching
100
+ uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
101
+ with:
102
+ version: "latest"
103
+ enable-cache: true
104
+ cache-dependency-glob: "uv.lock"
105
+
106
+ - name: Set up Python
107
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
108
+ with:
109
+ python-version: ${{ env.PYTHON_VERSION }}
110
+
111
+ - name: Sync dependencies
112
+ run: uv sync --all-extras
113
+
114
+ - name: Run snapshot tests
115
+ id: snapshot-tests
116
+ run: uv run pytest tests/snapshots
117
+ continue-on-error: true
118
+
119
+ - name: Upload snapshot report
120
+ if: steps.snapshot-tests.outcome == 'failure'
121
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
122
+ with:
123
+ name: snapshot-report
124
+ path: snapshot_report.html
125
+ if-no-files-found: warn
126
+ retention-days: 3
127
+
128
+ - name: Fail job if snapshot tests failed
129
+ if: steps.snapshot-tests.outcome == 'failure'
130
+ run: |
131
+ echo "Snapshot tests failed, failing job."
132
+ exit 1
@@ -0,0 +1,62 @@
1
+ name: Issue Labeler
2
+
3
+ on:
4
+ issues:
5
+ types: [opened]
6
+
7
+ jobs:
8
+ label-component:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ issues: write
13
+ steps:
14
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
15
+
16
+ - name: Parse bug report form
17
+ id: parse-bug
18
+ uses: stefanbuck/github-issue-parser@25f1485edffc1fee3ea68eb9f59a72e58720ffc4 # v3
19
+ with:
20
+ template-path: .github/ISSUE_TEMPLATE/bug-report.yml
21
+ continue-on-error: true
22
+
23
+ - name: Parse feature request form
24
+ id: parse-feature
25
+ uses: stefanbuck/github-issue-parser@25f1485edffc1fee3ea68eb9f59a72e58720ffc4 # v3
26
+ with:
27
+ template-path: .github/ISSUE_TEMPLATE/feature-request.yml
28
+ continue-on-error: true
29
+
30
+ - name: Apply component label
31
+ uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
32
+ with:
33
+ script: |
34
+ // Get component from either bug report or feature request
35
+ const bugComponent = '${{ steps.parse-bug.outputs.issueparser_component }}';
36
+ const featureComponent = '${{ steps.parse-feature.outputs.issueparser_component }}';
37
+ const component = bugComponent || featureComponent;
38
+
39
+ if (!component) {
40
+ console.log('No component field found, skipping labeling');
41
+ return;
42
+ }
43
+
44
+ const labels = [];
45
+
46
+ if (component === 'CLI') {
47
+ labels.push('CLI');
48
+ } else if (component === 'ACP') {
49
+ labels.push('ACP');
50
+ } else if (component === 'VS Code extension') {
51
+ labels.push('VS Code extension');
52
+ }
53
+
54
+ if (labels.length > 0) {
55
+ await github.rest.issues.addLabels({
56
+ owner: context.repo.owner,
57
+ repo: context.repo.repo,
58
+ issue_number: context.issue.number,
59
+ labels: labels
60
+ });
61
+ console.log(`Added labels: ${labels.join(', ')}`);
62
+ }
@@ -0,0 +1,45 @@
1
+ name: Release to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ release-pypy:
10
+ name: Release to Pypi
11
+ runs-on: ubuntu-latest
12
+ environment:
13
+ name: pypi
14
+ url: https://pypi.org/p/mistral-vibe
15
+ permissions:
16
+ id-token: write
17
+ contents: read
18
+
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - name: Install uv
29
+ uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
30
+
31
+ - name: Install dependencies
32
+ run: uv sync --locked --dev
33
+
34
+ - name: Build package
35
+ run: uv build
36
+
37
+ - name: Upload artifacts
38
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
39
+ with:
40
+ name: dist
41
+ path: dist/
42
+
43
+ - name: Publish distribution to PyPI
44
+ if: github.repository == 'mistralai/mistral-vibe'
45
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0