ouro-agent 0.2.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 (918) hide show
  1. ouro_agent-0.2.0/.github/workflows/ci.yml +81 -0
  2. ouro_agent-0.2.0/.gitignore +35 -0
  3. ouro_agent-0.2.0/CHANGELOG.md +27 -0
  4. ouro_agent-0.2.0/CONTRIBUTING.md +50 -0
  5. ouro_agent-0.2.0/LICENSE +21 -0
  6. ouro_agent-0.2.0/PKG-INFO +198 -0
  7. ouro_agent-0.2.0/README.md +168 -0
  8. ouro_agent-0.2.0/RELEASING.md +49 -0
  9. ouro_agent-0.2.0/SECURITY.md +32 -0
  10. ouro_agent-0.2.0/dev/README.md +10 -0
  11. ouro_agent-0.2.0/dev/benchmarks/README.md +104 -0
  12. ouro_agent-0.2.0/dev/benchmarks/harness_lifecycle.py +242 -0
  13. ouro_agent-0.2.0/dev/benchmarks/message_truncation.py +69 -0
  14. ouro_agent-0.2.0/dev/benchmarks/plugin_commands.py +281 -0
  15. ouro_agent-0.2.0/dev/benchmarks/plugin_lifecycle.py +124 -0
  16. ouro_agent-0.2.0/dev/benchmarks/plugin_scale.py +243 -0
  17. ouro_agent-0.2.0/dev/benchmarks/plugin_startup_graph.py +93 -0
  18. ouro_agent-0.2.0/dev/benchmarks/run_resources.py +238 -0
  19. ouro_agent-0.2.0/dev/benchmarks/session_harness_reads.py +98 -0
  20. ouro_agent-0.2.0/dev/benchmarks/session_pipeline.py +384 -0
  21. ouro_agent-0.2.0/dev/benchmarks/sqlite_sync.py +131 -0
  22. ouro_agent-0.2.0/dev/benchmarks/startup.py +80 -0
  23. ouro_agent-0.2.0/dev/benchmarks/text_wrapping.py +115 -0
  24. ouro_agent-0.2.0/dev/benchmarks/welcome.py +52 -0
  25. ouro_agent-0.2.0/dev/benchmarks/welcome_input.py +107 -0
  26. ouro_agent-0.2.0/dev/benchmarks/worker_results.py +166 -0
  27. ouro_agent-0.2.0/dev/probes/README.md +160 -0
  28. ouro_agent-0.2.0/dev/probes/__init__.py +1 -0
  29. ouro_agent-0.2.0/dev/probes/codex_adapter.py +363 -0
  30. ouro_agent-0.2.0/dev/probes/codex_oauth.py +161 -0
  31. ouro_agent-0.2.0/dev/probes/codex_responses.py +298 -0
  32. ouro_agent-0.2.0/dev/probes/openai_codex.py +207 -0
  33. ouro_agent-0.2.0/docs/README.md +45 -0
  34. ouro_agent-0.2.0/docs/architecture/README.md +131 -0
  35. ouro_agent-0.2.0/docs/architecture/authentication.md +174 -0
  36. ouro_agent-0.2.0/docs/architecture/file-input.md +114 -0
  37. ouro_agent-0.2.0/docs/architecture/session-continuity.md +83 -0
  38. ouro_agent-0.2.0/docs/architecture/tool-results.md +100 -0
  39. ouro_agent-0.2.0/docs/architecture/tui-rendering.md +431 -0
  40. ouro_agent-0.2.0/docs/assets/tui-welcome.png +0 -0
  41. ouro_agent-0.2.0/docs/development/coding-guidelines.en.md +128 -0
  42. ouro_agent-0.2.0/docs/development/coding-guidelines.zh-CN.md +128 -0
  43. ouro_agent-0.2.0/docs/development/documentation.md +42 -0
  44. ouro_agent-0.2.0/docs/development/plugin-development.md +690 -0
  45. ouro_agent-0.2.0/docs/development/welcome-styles.md +173 -0
  46. ouro_agent-0.2.0/docs/guides/automated-tasks.md +62 -0
  47. ouro_agent-0.2.0/docs/guides/configuration.md +188 -0
  48. ouro_agent-0.2.0/docs/guides/data-transfer.md +59 -0
  49. ouro_agent-0.2.0/docs/guides/mcp.md +47 -0
  50. ouro_agent-0.2.0/docs/guides/plugins.md +69 -0
  51. ouro_agent-0.2.0/docs/guides/providers.md +175 -0
  52. ouro_agent-0.2.0/docs/guides/running.md +66 -0
  53. ouro_agent-0.2.0/docs/guides/session-history.md +49 -0
  54. ouro_agent-0.2.0/docs/guides/sessions.md +90 -0
  55. ouro_agent-0.2.0/docs/guides/skills.md +43 -0
  56. ouro_agent-0.2.0/docs/guides/subscriptions.md +70 -0
  57. ouro_agent-0.2.0/docs/guides/usage.md +42 -0
  58. ouro_agent-0.2.0/docs/overview.md +62 -0
  59. ouro_agent-0.2.0/docs/plans/README.md +22 -0
  60. ouro_agent-0.2.0/docs/plans/advanced-agents.md +103 -0
  61. ouro_agent-0.2.0/docs/plans/archive/2026-09-24-refactoring-review.md +50 -0
  62. ouro_agent-0.2.0/docs/plans/archive/2026-10-07-code-review.md +130 -0
  63. ouro_agent-0.2.0/docs/plans/archive/2026-10-08-session-continuity.md +258 -0
  64. ouro_agent-0.2.0/docs/plans/archive/2026-10-12-plugin-platform-refactoring.md +736 -0
  65. ouro_agent-0.2.0/docs/plans/archive/2026-10-12-plugin-system-review.md +489 -0
  66. ouro_agent-0.2.0/docs/plans/archive/README.md +11 -0
  67. ouro_agent-0.2.0/docs/plans/attachment-validation.md +24 -0
  68. ouro_agent-0.2.0/docs/plans/desktop-host.md +87 -0
  69. ouro_agent-0.2.0/docs/plans/performance.md +54 -0
  70. ouro_agent-0.2.0/docs/plans/platform.md +50 -0
  71. ouro_agent-0.2.0/docs/plans/roadmap.md +104 -0
  72. ouro_agent-0.2.0/docs/plans/subscription-validation.md +27 -0
  73. ouro_agent-0.2.0/docs/specs/README.md +61 -0
  74. ouro_agent-0.2.0/docs/specs/afk.md +137 -0
  75. ouro_agent-0.2.0/docs/specs/attachments.md +220 -0
  76. ouro_agent-0.2.0/docs/specs/authorization.md +88 -0
  77. ouro_agent-0.2.0/docs/specs/automated-tasks.md +409 -0
  78. ouro_agent-0.2.0/docs/specs/cli-and-hosts.md +220 -0
  79. ouro_agent-0.2.0/docs/specs/context-and-compaction.md +131 -0
  80. ouro_agent-0.2.0/docs/specs/credentials.md +60 -0
  81. ouro_agent-0.2.0/docs/specs/data-transfer.md +120 -0
  82. ouro_agent-0.2.0/docs/specs/goal-plugin.md +666 -0
  83. ouro_agent-0.2.0/docs/specs/mcp.md +123 -0
  84. ouro_agent-0.2.0/docs/specs/performance.md +192 -0
  85. ouro_agent-0.2.0/docs/specs/plugins.md +1292 -0
  86. ouro_agent-0.2.0/docs/specs/provider-authentication.md +80 -0
  87. ouro_agent-0.2.0/docs/specs/provider-configuration.md +477 -0
  88. ouro_agent-0.2.0/docs/specs/provider-presets.md +274 -0
  89. ouro_agent-0.2.0/docs/specs/provider-protocols.md +139 -0
  90. ouro_agent-0.2.0/docs/specs/provider-templates.md +209 -0
  91. ouro_agent-0.2.0/docs/specs/request-authentication.md +98 -0
  92. ouro_agent-0.2.0/docs/specs/resources-and-supervision.md +102 -0
  93. ouro_agent-0.2.0/docs/specs/responses-codec.md +127 -0
  94. ouro_agent-0.2.0/docs/specs/runtime.md +392 -0
  95. ouro_agent-0.2.0/docs/specs/session-observation.md +240 -0
  96. ouro_agent-0.2.0/docs/specs/session-persistence.md +325 -0
  97. ouro_agent-0.2.0/docs/specs/session-undo.md +430 -0
  98. ouro_agent-0.2.0/docs/specs/skills.md +111 -0
  99. ouro_agent-0.2.0/docs/specs/subagents.md +1044 -0
  100. ouro_agent-0.2.0/docs/specs/subscription-authentication.md +183 -0
  101. ouro_agent-0.2.0/docs/specs/tools-and-interactions.md +207 -0
  102. ouro_agent-0.2.0/docs/specs/tui.md +421 -0
  103. ouro_agent-0.2.0/docs/specs/usage-and-billing.md +68 -0
  104. ouro_agent-0.2.0/examples/plugins/README.md +42 -0
  105. ouro_agent-0.2.0/examples/plugins/declarative-skill/.ouro-plugin/plugin.json +28 -0
  106. ouro_agent-0.2.0/examples/plugins/declarative-skill/skills/daily-review/SKILL.md +7 -0
  107. ouro_agent-0.2.0/examples/plugins/delegating-driver/.ouro-plugin/plugin.json +11 -0
  108. ouro_agent-0.2.0/examples/plugins/delegating-driver/README.md +28 -0
  109. ouro_agent-0.2.0/examples/plugins/delegating-driver/delegating_driver_plugin.py +63 -0
  110. ouro_agent-0.2.0/examples/plugins/delegating-driver/worker.py +41 -0
  111. ouro_agent-0.2.0/examples/plugins/dynamic-records/.ouro-plugin/plugin.json +14 -0
  112. ouro_agent-0.2.0/examples/plugins/dynamic-records/README.md +28 -0
  113. ouro_agent-0.2.0/examples/plugins/dynamic-records/dynamic_records_plugin.py +86 -0
  114. ouro_agent-0.2.0/examples/plugins/dynamic-records/worker.py +40 -0
  115. ouro_agent-0.2.0/examples/plugins/faux-provider/.ouro-plugin/plugin.json +10 -0
  116. ouro_agent-0.2.0/examples/plugins/faux-provider/README.md +31 -0
  117. ouro_agent-0.2.0/examples/plugins/faux-provider/faux_provider_plugin.py +49 -0
  118. ouro_agent-0.2.0/examples/plugins/faux-provider/worker.py +35 -0
  119. ouro_agent-0.2.0/examples/plugins/inprocess-command/.ouro-plugin/plugin.json +29 -0
  120. ouro_agent-0.2.0/examples/plugins/inprocess-command/inprocess_command_plugin.py +31 -0
  121. ouro_agent-0.2.0/examples/plugins/inprocess-observer/.ouro-plugin/plugin.json +30 -0
  122. ouro_agent-0.2.0/examples/plugins/inprocess-observer/observer_example_plugin.py +35 -0
  123. ouro_agent-0.2.0/examples/plugins/inprocess-prompt-policy/.ouro-plugin/plugin.json +34 -0
  124. ouro_agent-0.2.0/examples/plugins/inprocess-prompt-policy/prompt_policy_example_plugin.py +36 -0
  125. ouro_agent-0.2.0/examples/plugins/memory-client/.ouro-plugin/plugin.json +14 -0
  126. ouro_agent-0.2.0/examples/plugins/memory-client/worker.py +52 -0
  127. ouro_agent-0.2.0/examples/plugins/memory-service/.ouro-plugin/plugin.json +17 -0
  128. ouro_agent-0.2.0/examples/plugins/memory-service/worker.py +83 -0
  129. ouro_agent-0.2.0/examples/plugins/model-review/.ouro-plugin/plugin.json +16 -0
  130. ouro_agent-0.2.0/examples/plugins/model-review/README.md +16 -0
  131. ouro_agent-0.2.0/examples/plugins/model-review/model_review_plugin.py +47 -0
  132. ouro_agent-0.2.0/examples/plugins/model-review/worker.py +44 -0
  133. ouro_agent-0.2.0/examples/plugins/review-driver/.ouro-plugin/plugin.json +17 -0
  134. ouro_agent-0.2.0/examples/plugins/review-driver/README.md +30 -0
  135. ouro_agent-0.2.0/examples/plugins/review-driver/review_driver_plugin.py +57 -0
  136. ouro_agent-0.2.0/examples/plugins/review-driver/worker.py +53 -0
  137. ouro_agent-0.2.0/examples/plugins/review-service/.ouro-plugin/plugin.json +17 -0
  138. ouro_agent-0.2.0/examples/plugins/review-service/README.md +45 -0
  139. ouro_agent-0.2.0/examples/plugins/review-service/review_service_plugin.py +43 -0
  140. ouro_agent-0.2.0/examples/plugins/review-service/worker.py +43 -0
  141. ouro_agent-0.2.0/examples/plugins/scheduled-sync/.ouro-plugin/plugin.json +19 -0
  142. ouro_agent-0.2.0/examples/plugins/scheduled-sync/README.md +57 -0
  143. ouro_agent-0.2.0/examples/plugins/scheduled-sync/maintain.py +57 -0
  144. ouro_agent-0.2.0/examples/plugins/scheduled-sync/scheduled_sync_plugin.py +120 -0
  145. ouro_agent-0.2.0/examples/plugins/scheduled-sync/worker.py +106 -0
  146. ouro_agent-0.2.0/examples/plugins/worker-exec/.ouro-plugin/plugin.json +11 -0
  147. ouro_agent-0.2.0/examples/plugins/worker-exec/worker.py +53 -0
  148. ouro_agent-0.2.0/examples/plugins/worker-tool/.ouro-plugin/plugin.json +37 -0
  149. ouro_agent-0.2.0/examples/plugins/worker-tool/worker.py +54 -0
  150. ouro_agent-0.2.0/ouro/__init__.py +5 -0
  151. ouro_agent-0.2.0/ouro/application/__init__.py +155 -0
  152. ouro_agent-0.2.0/ouro/application/agent_definitions.py +356 -0
  153. ouro_agent-0.2.0/ouro/application/agent_execution.py +179 -0
  154. ouro_agent-0.2.0/ouro/application/agent_models.py +211 -0
  155. ouro_agent-0.2.0/ouro/application/agent_recovery.py +492 -0
  156. ouro_agent-0.2.0/ouro/application/agent_tree.py +520 -0
  157. ouro_agent-0.2.0/ouro/application/agents.py +2464 -0
  158. ouro_agent-0.2.0/ouro/application/compaction.py +1706 -0
  159. ouro_agent-0.2.0/ouro/application/configuration.py +1275 -0
  160. ouro_agent-0.2.0/ouro/application/configuration_models.py +449 -0
  161. ouro_agent-0.2.0/ouro/application/configuration_transfer.py +119 -0
  162. ouro_agent-0.2.0/ouro/application/configuration_views.py +261 -0
  163. ouro_agent-0.2.0/ouro/application/data_transfer.py +161 -0
  164. ouro_agent-0.2.0/ouro/application/dto.py +38 -0
  165. ouro_agent-0.2.0/ouro/application/event_models.py +199 -0
  166. ouro_agent-0.2.0/ouro/application/events.py +562 -0
  167. ouro_agent-0.2.0/ouro/application/file_inputs.py +434 -0
  168. ouro_agent-0.2.0/ouro/application/harness.py +47 -0
  169. ouro_agent-0.2.0/ouro/application/model_generation.py +127 -0
  170. ouro_agent-0.2.0/ouro/application/model_requests.py +303 -0
  171. ouro_agent-0.2.0/ouro/application/models.py +329 -0
  172. ouro_agent-0.2.0/ouro/application/observers.py +343 -0
  173. ouro_agent-0.2.0/ouro/application/plugin_commands.py +329 -0
  174. ouro_agent-0.2.0/ouro/application/plugin_models.py +148 -0
  175. ouro_agent-0.2.0/ouro/application/plugins.py +1169 -0
  176. ouro_agent-0.2.0/ouro/application/prompt_context.py +31 -0
  177. ouro_agent-0.2.0/ouro/application/provider_auth.py +368 -0
  178. ouro_agent-0.2.0/ouro/application/provider_auth_bindings.py +73 -0
  179. ouro_agent-0.2.0/ouro/application/provider_auth_models.py +42 -0
  180. ouro_agent-0.2.0/ouro/application/queued_inputs.py +695 -0
  181. ouro_agent-0.2.0/ouro/application/recovery.py +241 -0
  182. ouro_agent-0.2.0/ouro/application/resource_models.py +46 -0
  183. ouro_agent-0.2.0/ouro/application/resources.py +345 -0
  184. ouro_agent-0.2.0/ouro/application/run_continuations.py +696 -0
  185. ouro_agent-0.2.0/ouro/application/run_drivers.py +422 -0
  186. ouro_agent-0.2.0/ouro/application/run_ownership.py +237 -0
  187. ouro_agent-0.2.0/ouro/application/run_resources.py +49 -0
  188. ouro_agent-0.2.0/ouro/application/run_turns.py +45 -0
  189. ouro_agent-0.2.0/ouro/application/runs.py +1291 -0
  190. ouro_agent-0.2.0/ouro/application/runtime.py +4528 -0
  191. ouro_agent-0.2.0/ouro/application/runtime_activity.py +897 -0
  192. ouro_agent-0.2.0/ouro/application/runtime_configuration.py +139 -0
  193. ouro_agent-0.2.0/ouro/application/runtime_environment.py +42 -0
  194. ouro_agent-0.2.0/ouro/application/session_controls.py +613 -0
  195. ouro_agent-0.2.0/ouro/application/session_editing.py +204 -0
  196. ouro_agent-0.2.0/ouro/application/session_event_stream.py +98 -0
  197. ouro_agent-0.2.0/ouro/application/session_history.py +328 -0
  198. ouro_agent-0.2.0/ouro/application/session_models.py +321 -0
  199. ouro_agent-0.2.0/ouro/application/session_recovery.py +395 -0
  200. ouro_agent-0.2.0/ouro/application/session_transfer.py +364 -0
  201. ouro_agent-0.2.0/ouro/application/sessions.py +1088 -0
  202. ouro_agent-0.2.0/ouro/application/skill_activations.py +104 -0
  203. ouro_agent-0.2.0/ouro/application/supervisor.py +1421 -0
  204. ouro_agent-0.2.0/ouro/application/supervisor_models.py +162 -0
  205. ouro_agent-0.2.0/ouro/application/task_execution.py +470 -0
  206. ouro_agent-0.2.0/ouro/application/task_scheduler.py +118 -0
  207. ouro_agent-0.2.0/ouro/application/tasks.py +348 -0
  208. ouro_agent-0.2.0/ouro/application/tool_calls.py +1895 -0
  209. ouro_agent-0.2.0/ouro/application/usage.py +265 -0
  210. ouro_agent-0.2.0/ouro/auth/__init__.py +1 -0
  211. ouro_agent-0.2.0/ouro/auth/authorization.py +106 -0
  212. ouro_agent-0.2.0/ouro/auth/commit.py +43 -0
  213. ouro_agent-0.2.0/ouro/auth/contracts.py +163 -0
  214. ouro_agent-0.2.0/ouro/auth/credentials.py +288 -0
  215. ouro_agent-0.2.0/ouro/auth/driver_contracts.py +115 -0
  216. ouro_agent-0.2.0/ouro/auth/drivers/__init__.py +1 -0
  217. ouro_agent-0.2.0/ouro/auth/drivers/openai_callback.py +96 -0
  218. ouro_agent-0.2.0/ouro/auth/drivers/openai_codex.py +121 -0
  219. ouro_agent-0.2.0/ouro/auth/drivers/openai_errors.py +31 -0
  220. ouro_agent-0.2.0/ouro/auth/drivers/openai_tokens.py +213 -0
  221. ouro_agent-0.2.0/ouro/auth/file_permissions.py +93 -0
  222. ouro_agent-0.2.0/ouro/auth/managed_requests.py +148 -0
  223. ouro_agent-0.2.0/ouro/auth/request_auth.py +46 -0
  224. ouro_agent-0.2.0/ouro/auth/store.py +121 -0
  225. ouro_agent-0.2.0/ouro/automation/__init__.py +1 -0
  226. ouro_agent-0.2.0/ouro/automation/file_records.py +66 -0
  227. ouro_agent-0.2.0/ouro/automation/local_files.py +383 -0
  228. ouro_agent-0.2.0/ouro/automation/plugin_tasks.py +32 -0
  229. ouro_agent-0.2.0/ouro/automation/repository.py +37 -0
  230. ouro_agent-0.2.0/ouro/automation/schedule.py +130 -0
  231. ouro_agent-0.2.0/ouro/automation/sqlite.py +279 -0
  232. ouro_agent-0.2.0/ouro/billing/__init__.py +6 -0
  233. ouro_agent-0.2.0/ouro/billing/base.py +49 -0
  234. ouro_agent-0.2.0/ouro/billing/local.py +353 -0
  235. ouro_agent-0.2.0/ouro/billing/queries.py +123 -0
  236. ouro_agent-0.2.0/ouro/builtin_plugins/__init__.py +14 -0
  237. ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/README.md +101 -0
  238. ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/__init__.py +3 -0
  239. ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/agent_context_plugin.py +161 -0
  240. ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/definition.py +53 -0
  241. ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/instructions.py +20 -0
  242. ouro_agent-0.2.0/ouro/builtin_plugins/goal/README.md +131 -0
  243. ouro_agent-0.2.0/ouro/builtin_plugins/goal/__init__.py +3 -0
  244. ouro_agent-0.2.0/ouro/builtin_plugins/goal/commands.py +346 -0
  245. ouro_agent-0.2.0/ouro/builtin_plugins/goal/definition.py +151 -0
  246. ouro_agent-0.2.0/ouro/builtin_plugins/goal/goal_plugin.py +527 -0
  247. ouro_agent-0.2.0/ouro/builtin_plugins/goal/prompts.py +104 -0
  248. ouro_agent-0.2.0/ouro/builtin_plugins/goal/state.py +150 -0
  249. ouro_agent-0.2.0/ouro/builtin_plugins/plan/README.md +119 -0
  250. ouro_agent-0.2.0/ouro/builtin_plugins/plan/__init__.py +3 -0
  251. ouro_agent-0.2.0/ouro/builtin_plugins/plan/definition.py +116 -0
  252. ouro_agent-0.2.0/ouro/builtin_plugins/plan/plan_plugin.py +558 -0
  253. ouro_agent-0.2.0/ouro/builtin_plugins/plan/state.py +62 -0
  254. ouro_agent-0.2.0/ouro/cli/__init__.py +1 -0
  255. ouro_agent-0.2.0/ouro/cli/agent_commands.py +274 -0
  256. ouro_agent-0.2.0/ouro/cli/approval_commands.py +131 -0
  257. ouro_agent-0.2.0/ouro/cli/config_commands.py +489 -0
  258. ouro_agent-0.2.0/ouro/cli/context_output.py +65 -0
  259. ouro_agent-0.2.0/ouro/cli/data_commands.py +20 -0
  260. ouro_agent-0.2.0/ouro/cli/errors.py +13 -0
  261. ouro_agent-0.2.0/ouro/cli/main.py +854 -0
  262. ouro_agent-0.2.0/ouro/cli/mcp_commands.py +190 -0
  263. ouro_agent-0.2.0/ouro/cli/parser.py +1931 -0
  264. ouro_agent-0.2.0/ouro/cli/plugin_commands.py +375 -0
  265. ouro_agent-0.2.0/ouro/cli/prompt_commands.py +86 -0
  266. ouro_agent-0.2.0/ouro/cli/provider_auth_commands.py +159 -0
  267. ouro_agent-0.2.0/ouro/cli/provider_commands.py +820 -0
  268. ouro_agent-0.2.0/ouro/cli/resource_commands.py +194 -0
  269. ouro_agent-0.2.0/ouro/cli/run.py +232 -0
  270. ouro_agent-0.2.0/ouro/cli/session_commands.py +672 -0
  271. ouro_agent-0.2.0/ouro/cli/skills.py +331 -0
  272. ouro_agent-0.2.0/ouro/cli/usage_commands.py +293 -0
  273. ouro_agent-0.2.0/ouro/config/__init__.py +146 -0
  274. ouro_agent-0.2.0/ouro/config/agents.py +183 -0
  275. ouro_agent-0.2.0/ouro/config/compaction.py +228 -0
  276. ouro_agent-0.2.0/ouro/config/credentials.py +62 -0
  277. ouro_agent-0.2.0/ouro/config/endpoints.py +196 -0
  278. ouro_agent-0.2.0/ouro/config/file.py +106 -0
  279. ouro_agent-0.2.0/ouro/config/permissions.py +148 -0
  280. ouro_agent-0.2.0/ouro/config/prompts.py +199 -0
  281. ouro_agent-0.2.0/ouro/config/provider_codec.py +230 -0
  282. ouro_agent-0.2.0/ouro/config/provider_headers.py +134 -0
  283. ouro_agent-0.2.0/ouro/config/provider_models.py +657 -0
  284. ouro_agent-0.2.0/ouro/config/provider_runtime.py +166 -0
  285. ouro_agent-0.2.0/ouro/config/provider_template_store.py +504 -0
  286. ouro_agent-0.2.0/ouro/config/provider_templates.py +1044 -0
  287. ouro_agent-0.2.0/ouro/config/providers.py +1324 -0
  288. ouro_agent-0.2.0/ouro/config/queued_inputs.py +67 -0
  289. ouro_agent-0.2.0/ouro/config/reasoning.py +301 -0
  290. ouro_agent-0.2.0/ouro/config/run_budget.py +81 -0
  291. ouro_agent-0.2.0/ouro/config/skills.py +233 -0
  292. ouro_agent-0.2.0/ouro/config/tool_execution.py +77 -0
  293. ouro_agent-0.2.0/ouro/core/__init__.py +54 -0
  294. ouro_agent-0.2.0/ouro/core/adapter.py +264 -0
  295. ouro_agent-0.2.0/ouro/core/agents.py +462 -0
  296. ouro_agent-0.2.0/ouro/core/approvals.py +110 -0
  297. ouro_agent-0.2.0/ouro/core/attachment_input.py +60 -0
  298. ouro_agent-0.2.0/ouro/core/attachment_projection.py +89 -0
  299. ouro_agent-0.2.0/ouro/core/base.py +45 -0
  300. ouro_agent-0.2.0/ouro/core/billing.py +209 -0
  301. ouro_agent-0.2.0/ouro/core/callbacks.py +113 -0
  302. ouro_agent-0.2.0/ouro/core/cancellation.py +52 -0
  303. ouro_agent-0.2.0/ouro/core/compaction.py +462 -0
  304. ouro_agent-0.2.0/ouro/core/content.py +97 -0
  305. ouro_agent-0.2.0/ouro/core/context.py +360 -0
  306. ouro_agent-0.2.0/ouro/core/context_providers.py +242 -0
  307. ouro_agent-0.2.0/ouro/core/context_snapshots.py +79 -0
  308. ouro_agent-0.2.0/ouro/core/continuations.py +258 -0
  309. ouro_agent-0.2.0/ouro/core/errors.py +126 -0
  310. ouro_agent-0.2.0/ouro/core/events.py +91 -0
  311. ouro_agent-0.2.0/ouro/core/extensions.py +5 -0
  312. ouro_agent-0.2.0/ouro/core/harness.py +53 -0
  313. ouro_agent-0.2.0/ouro/core/harness_calls.py +217 -0
  314. ouro_agent-0.2.0/ouro/core/inner_loop.py +49 -0
  315. ouro_agent-0.2.0/ouro/core/input_content.py +106 -0
  316. ouro_agent-0.2.0/ouro/core/interactions.py +56 -0
  317. ouro_agent-0.2.0/ouro/core/message_frames.py +70 -0
  318. ouro_agent-0.2.0/ouro/core/message_roles.py +5 -0
  319. ouro_agent-0.2.0/ouro/core/message_semantics.py +71 -0
  320. ouro_agent-0.2.0/ouro/core/messages.py +339 -0
  321. ouro_agent-0.2.0/ouro/core/model_completion.py +50 -0
  322. ouro_agent-0.2.0/ouro/core/model_execution.py +226 -0
  323. ouro_agent-0.2.0/ouro/core/model_generation.py +55 -0
  324. ouro_agent-0.2.0/ouro/core/model_requests.py +46 -0
  325. ouro_agent-0.2.0/ouro/core/model_selection.py +3 -0
  326. ouro_agent-0.2.0/ouro/core/observers.py +357 -0
  327. ouro_agent-0.2.0/ouro/core/persistence.py +40 -0
  328. ouro_agent-0.2.0/ouro/core/plugin_contracts.py +19 -0
  329. ouro_agent-0.2.0/ouro/core/plugin_tasks.py +38 -0
  330. ouro_agent-0.2.0/ouro/core/prompt_policies.py +263 -0
  331. ouro_agent-0.2.0/ouro/core/provider.py +255 -0
  332. ouro_agent-0.2.0/ouro/core/reasoning.py +141 -0
  333. ouro_agent-0.2.0/ouro/core/redaction.py +79 -0
  334. ouro_agent-0.2.0/ouro/core/request_context.py +34 -0
  335. ouro_agent-0.2.0/ouro/core/resources.py +75 -0
  336. ouro_agent-0.2.0/ouro/core/results.py +16 -0
  337. ouro_agent-0.2.0/ouro/core/run_budget.py +74 -0
  338. ouro_agent-0.2.0/ouro/core/run_drivers.py +140 -0
  339. ouro_agent-0.2.0/ouro/core/run_transitions.py +102 -0
  340. ouro_agent-0.2.0/ouro/core/session_commits.py +223 -0
  341. ouro_agent-0.2.0/ouro/core/session_controls.py +353 -0
  342. ouro_agent-0.2.0/ouro/core/session_extensions.py +63 -0
  343. ouro_agent-0.2.0/ouro/core/session_titles.py +61 -0
  344. ouro_agent-0.2.0/ouro/core/state.py +267 -0
  345. ouro_agent-0.2.0/ouro/core/task_ports.py +35 -0
  346. ouro_agent-0.2.0/ouro/core/tasks.py +176 -0
  347. ouro_agent-0.2.0/ouro/core/tool_batch_transitions.py +146 -0
  348. ouro_agent-0.2.0/ouro/core/tool_batches.py +95 -0
  349. ouro_agent-0.2.0/ouro/core/tool_policies.py +243 -0
  350. ouro_agent-0.2.0/ouro/core/tool_requests.py +61 -0
  351. ouro_agent-0.2.0/ouro/core/tool_result_projection.py +97 -0
  352. ouro_agent-0.2.0/ouro/core/tools.py +198 -0
  353. ouro_agent-0.2.0/ouro/core/turn_policies.py +225 -0
  354. ouro_agent-0.2.0/ouro/core/usage_queries.py +87 -0
  355. ouro_agent-0.2.0/ouro/data_commands.py +65 -0
  356. ouro_agent-0.2.0/ouro/deployment.py +39 -0
  357. ouro_agent-0.2.0/ouro/local_application.py +908 -0
  358. ouro_agent-0.2.0/ouro/local_io.py +81 -0
  359. ouro_agent-0.2.0/ouro/local_locks/__init__.py +341 -0
  360. ouro_agent-0.2.0/ouro/local_locks/windows.py +57 -0
  361. ouro_agent-0.2.0/ouro/local_processes/__init__.py +96 -0
  362. ouro_agent-0.2.0/ouro/local_processes/commands.py +222 -0
  363. ouro_agent-0.2.0/ouro/local_processes/windows.py +123 -0
  364. ouro_agent-0.2.0/ouro/local_providers.py +48 -0
  365. ouro_agent-0.2.0/ouro/mcp/__init__.py +78 -0
  366. ouro_agent-0.2.0/ouro/mcp/client.py +48 -0
  367. ouro_agent-0.2.0/ouro/mcp/configuration.py +231 -0
  368. ouro_agent-0.2.0/ouro/mcp/connection_check.py +62 -0
  369. ouro_agent-0.2.0/ouro/mcp/errors.py +33 -0
  370. ouro_agent-0.2.0/ouro/mcp/manager.py +612 -0
  371. ouro_agent-0.2.0/ouro/mcp/models.py +199 -0
  372. ouro_agent-0.2.0/ouro/mcp/runtime.py +97 -0
  373. ouro_agent-0.2.0/ouro/mcp/sdk.py +337 -0
  374. ouro_agent-0.2.0/ouro/mcp/sse_transport.py +156 -0
  375. ouro_agent-0.2.0/ouro/mcp/tool_adapter.py +92 -0
  376. ouro_agent-0.2.0/ouro/plugins/__init__.py +22 -0
  377. ouro_agent-0.2.0/ouro/plugins/adapters.py +188 -0
  378. ouro_agent-0.2.0/ouro/plugins/api.py +1150 -0
  379. ouro_agent-0.2.0/ouro/plugins/builtin.py +191 -0
  380. ouro_agent-0.2.0/ouro/plugins/candidates.py +50 -0
  381. ouro_agent-0.2.0/ouro/plugins/catalog.py +1052 -0
  382. ouro_agent-0.2.0/ouro/plugins/compatibility.py +227 -0
  383. ouro_agent-0.2.0/ouro/plugins/contracts.py +301 -0
  384. ouro_agent-0.2.0/ouro/plugins/contribution_types.py +279 -0
  385. ouro_agent-0.2.0/ouro/plugins/contributions.py +1378 -0
  386. ouro_agent-0.2.0/ouro/plugins/dependencies.py +256 -0
  387. ouro_agent-0.2.0/ouro/plugins/driver_contracts.py +54 -0
  388. ouro_agent-0.2.0/ouro/plugins/environment.py +24 -0
  389. ouro_agent-0.2.0/ouro/plugins/execution_contracts.py +113 -0
  390. ouro_agent-0.2.0/ouro/plugins/generation.py +237 -0
  391. ouro_agent-0.2.0/ouro/plugins/generation_resources.py +193 -0
  392. ouro_agent-0.2.0/ouro/plugins/harness_calls.py +181 -0
  393. ouro_agent-0.2.0/ouro/plugins/implementation_contracts.py +16 -0
  394. ouro_agent-0.2.0/ouro/plugins/installer.py +226 -0
  395. ouro_agent-0.2.0/ouro/plugins/instructions.py +170 -0
  396. ouro_agent-0.2.0/ouro/plugins/invocation.py +66 -0
  397. ouro_agent-0.2.0/ouro/plugins/manifest.py +596 -0
  398. ouro_agent-0.2.0/ouro/plugins/mcp.py +214 -0
  399. ouro_agent-0.2.0/ouro/plugins/models.py +291 -0
  400. ouro_agent-0.2.0/ouro/plugins/native_ports.py +109 -0
  401. ouro_agent-0.2.0/ouro/plugins/package.py +256 -0
  402. ouro_agent-0.2.0/ouro/plugins/paths.py +35 -0
  403. ouro_agent-0.2.0/ouro/plugins/processes.py +72 -0
  404. ouro_agent-0.2.0/ouro/plugins/providers.py +254 -0
  405. ouro_agent-0.2.0/ouro/plugins/readiness.py +87 -0
  406. ouro_agent-0.2.0/ouro/plugins/registry.py +301 -0
  407. ouro_agent-0.2.0/ouro/plugins/resources.py +125 -0
  408. ouro_agent-0.2.0/ouro/plugins/run_drivers.py +208 -0
  409. ouro_agent-0.2.0/ouro/plugins/runtime.py +2102 -0
  410. ouro_agent-0.2.0/ouro/plugins/scaffold.py +147 -0
  411. ouro_agent-0.2.0/ouro/plugins/scheduling.py +155 -0
  412. ouro_agent-0.2.0/ouro/plugins/semver.py +134 -0
  413. ouro_agent-0.2.0/ouro/plugins/services.py +243 -0
  414. ouro_agent-0.2.0/ouro/plugins/session_controllers.py +260 -0
  415. ouro_agent-0.2.0/ouro/plugins/sources.py +322 -0
  416. ouro_agent-0.2.0/ouro/plugins/store.py +358 -0
  417. ouro_agent-0.2.0/ouro/plugins/tasks.py +68 -0
  418. ouro_agent-0.2.0/ouro/plugins/tool_content.py +51 -0
  419. ouro_agent-0.2.0/ouro/plugins/tool_groups.py +232 -0
  420. ouro_agent-0.2.0/ouro/plugins/worker.py +1833 -0
  421. ouro_agent-0.2.0/ouro/plugins/worker_drivers.py +95 -0
  422. ouro_agent-0.2.0/ouro/plugins/worker_models.py +36 -0
  423. ouro_agent-0.2.0/ouro/plugins/worker_processes.py +32 -0
  424. ouro_agent-0.2.0/ouro/plugins/worker_providers.py +52 -0
  425. ouro_agent-0.2.0/ouro/plugins/worker_scheduling.py +40 -0
  426. ouro_agent-0.2.0/ouro/plugins/worker_services.py +142 -0
  427. ouro_agent-0.2.0/ouro/plugins/worker_tool_groups.py +130 -0
  428. ouro_agent-0.2.0/ouro/prompts/__init__.py +180 -0
  429. ouro_agent-0.2.0/ouro/providers/__init__.py +15 -0
  430. ouro_agent-0.2.0/ouro/providers/anthropic_messages.py +475 -0
  431. ouro_agent-0.2.0/ouro/providers/anthropic_messages_codec.py +231 -0
  432. ouro_agent-0.2.0/ouro/providers/authentication.py +177 -0
  433. ouro_agent-0.2.0/ouro/providers/connection_check.py +60 -0
  434. ouro_agent-0.2.0/ouro/providers/factory.py +299 -0
  435. ouro_agent-0.2.0/ouro/providers/faux.py +74 -0
  436. ouro_agent-0.2.0/ouro/providers/headers.py +51 -0
  437. ouro_agent-0.2.0/ouro/providers/http_transport.py +382 -0
  438. ouro_agent-0.2.0/ouro/providers/openai_chat_completions.py +446 -0
  439. ouro_agent-0.2.0/ouro/providers/openai_chat_completions_codec.py +346 -0
  440. ouro_agent-0.2.0/ouro/providers/openai_responses.py +232 -0
  441. ouro_agent-0.2.0/ouro/providers/openai_responses_codec.py +281 -0
  442. ouro_agent-0.2.0/ouro/providers/openai_responses_errors.py +32 -0
  443. ouro_agent-0.2.0/ouro/providers/openai_responses_items.py +73 -0
  444. ouro_agent-0.2.0/ouro/providers/openai_responses_stream.py +316 -0
  445. ouro_agent-0.2.0/ouro/providers/reasoning.py +27 -0
  446. ouro_agent-0.2.0/ouro/providers/request_context.py +26 -0
  447. ouro_agent-0.2.0/ouro/providers/retrying.py +84 -0
  448. ouro_agent-0.2.0/ouro/providers/tool_content.py +48 -0
  449. ouro_agent-0.2.0/ouro/py.typed +1 -0
  450. ouro_agent-0.2.0/ouro/resources/__init__.py +4 -0
  451. ouro_agent-0.2.0/ouro/resources/base.py +53 -0
  452. ouro_agent-0.2.0/ouro/resources/files.py +86 -0
  453. ouro_agent-0.2.0/ouro/resources/local.py +219 -0
  454. ouro_agent-0.2.0/ouro/sdk/__init__.py +1 -0
  455. ouro_agent-0.2.0/ouro/sdk/plugins/__init__.py +1 -0
  456. ouro_agent-0.2.0/ouro/sdk/plugins/content.py +36 -0
  457. ouro_agent-0.2.0/ouro/sdk/plugins/environment.py +17 -0
  458. ouro_agent-0.2.0/ouro/sdk/plugins/interactions.py +155 -0
  459. ouro_agent-0.2.0/ouro/sdk/plugins/models.py +65 -0
  460. ouro_agent-0.2.0/ouro/sdk/plugins/processes.py +39 -0
  461. ouro_agent-0.2.0/ouro/sdk/plugins/providers.py +183 -0
  462. ouro_agent-0.2.0/ouro/sdk/plugins/run_drivers.py +205 -0
  463. ouro_agent-0.2.0/ouro/sdk/plugins/scheduled.py +13 -0
  464. ouro_agent-0.2.0/ouro/sdk/plugins/scheduling.py +99 -0
  465. ouro_agent-0.2.0/ouro/sdk/plugins/services.py +49 -0
  466. ouro_agent-0.2.0/ouro/sdk/plugins/state.py +61 -0
  467. ouro_agent-0.2.0/ouro/sdk/plugins/v3.py +955 -0
  468. ouro_agent-0.2.0/ouro/sdk/plugins/worker.py +229 -0
  469. ouro_agent-0.2.0/ouro/sdk/plugins/worker_drivers.py +170 -0
  470. ouro_agent-0.2.0/ouro/sdk/plugins/worker_environment.py +15 -0
  471. ouro_agent-0.2.0/ouro/sdk/plugins/worker_models.py +54 -0
  472. ouro_agent-0.2.0/ouro/sdk/plugins/worker_processes.py +40 -0
  473. ouro_agent-0.2.0/ouro/sdk/plugins/worker_providers.py +113 -0
  474. ouro_agent-0.2.0/ouro/sdk/plugins/worker_scheduling.py +164 -0
  475. ouro_agent-0.2.0/ouro/sdk/plugins/worker_services.py +101 -0
  476. ouro_agent-0.2.0/ouro/sdk/plugins/worker_tool_groups.py +96 -0
  477. ouro_agent-0.2.0/ouro/sdk/plugins/worker_tools.py +154 -0
  478. ouro_agent-0.2.0/ouro/sessions/__init__.py +37 -0
  479. ouro_agent-0.2.0/ouro/sessions/base.py +280 -0
  480. ouro_agent-0.2.0/ouro/sessions/catalog.py +152 -0
  481. ouro_agent-0.2.0/ouro/sessions/file_commits.py +255 -0
  482. ouro_agent-0.2.0/ouro/sessions/index.py +154 -0
  483. ouro_agent-0.2.0/ouro/sessions/layout.py +15 -0
  484. ouro_agent-0.2.0/ouro/sessions/local_files.py +1710 -0
  485. ouro_agent-0.2.0/ouro/sessions/local_index.py +291 -0
  486. ouro_agent-0.2.0/ouro/sessions/locks.py +29 -0
  487. ouro_agent-0.2.0/ouro/sessions/message_index.py +107 -0
  488. ouro_agent-0.2.0/ouro/sessions/message_journal.py +35 -0
  489. ouro_agent-0.2.0/ouro/sessions/portable.py +175 -0
  490. ouro_agent-0.2.0/ouro/sessions/sqlite.py +1589 -0
  491. ouro_agent-0.2.0/ouro/sessions/sqlite_commits.py +196 -0
  492. ouro_agent-0.2.0/ouro/sessions/transfer.py +149 -0
  493. ouro_agent-0.2.0/ouro/skills/__init__.py +48 -0
  494. ouro_agent-0.2.0/ouro/skills/context.py +222 -0
  495. ouro_agent-0.2.0/ouro/skills/loader.py +188 -0
  496. ouro_agent-0.2.0/ouro/skills/manager.py +425 -0
  497. ouro_agent-0.2.0/ouro/skills/models.py +60 -0
  498. ouro_agent-0.2.0/ouro/skills/parser.py +253 -0
  499. ouro_agent-0.2.0/ouro/tools/__init__.py +45 -0
  500. ouro_agent-0.2.0/ouro/tools/base.py +266 -0
  501. ouro_agent-0.2.0/ouro/tools/batch_executor.py +94 -0
  502. ouro_agent-0.2.0/ouro/tools/builtin.py +23 -0
  503. ouro_agent-0.2.0/ouro/tools/builtin_agents.py +253 -0
  504. ouro_agent-0.2.0/ouro/tools/builtin_ask_user.py +168 -0
  505. ouro_agent-0.2.0/ouro/tools/builtin_common.py +45 -0
  506. ouro_agent-0.2.0/ouro/tools/builtin_files.py +390 -0
  507. ouro_agent-0.2.0/ouro/tools/builtin_glob.py +157 -0
  508. ouro_agent-0.2.0/ouro/tools/builtin_grep.py +651 -0
  509. ouro_agent-0.2.0/ouro/tools/builtin_ignore.py +94 -0
  510. ouro_agent-0.2.0/ouro/tools/builtin_search.py +79 -0
  511. ouro_agent-0.2.0/ouro/tools/builtin_shell.py +361 -0
  512. ouro_agent-0.2.0/ouro/tools/builtin_todolist.py +178 -0
  513. ouro_agent-0.2.0/ouro/tools/builtin_view_image.py +165 -0
  514. ouro_agent-0.2.0/ouro/tools/executor.py +501 -0
  515. ouro_agent-0.2.0/ouro/tools/registry.py +197 -0
  516. ouro_agent-0.2.0/ouro/tools/result_content.py +52 -0
  517. ouro_agent-0.2.0/ouro/tools/schema.py +51 -0
  518. ouro_agent-0.2.0/ouro/transfer/__init__.py +1 -0
  519. ouro_agent-0.2.0/ouro/transfer/archive.py +206 -0
  520. ouro_agent-0.2.0/ouro/transfer/skills.py +160 -0
  521. ouro_agent-0.2.0/ouro/tui/__init__.py +5 -0
  522. ouro_agent-0.2.0/ouro/tui/app.py +5548 -0
  523. ouro_agent-0.2.0/ouro/tui/archive_paths.py +120 -0
  524. ouro_agent-0.2.0/ouro/tui/attachment_editor.py +215 -0
  525. ouro_agent-0.2.0/ouro/tui/attachment_paths.py +47 -0
  526. ouro_agent-0.2.0/ouro/tui/attachment_picker.py +120 -0
  527. ouro_agent-0.2.0/ouro/tui/clipboard.py +31 -0
  528. ouro_agent-0.2.0/ouro/tui/commands.py +299 -0
  529. ouro_agent-0.2.0/ouro/tui/configuration_screens.py +1773 -0
  530. ouro_agent-0.2.0/ouro/tui/configuration_workflows.py +1658 -0
  531. ouro_agent-0.2.0/ouro/tui/controller.py +2632 -0
  532. ouro_agent-0.2.0/ouro/tui/conversation_history.py +1887 -0
  533. ouro_agent-0.2.0/ouro/tui/data_transfer.py +423 -0
  534. ouro_agent-0.2.0/ouro/tui/entry.py +42 -0
  535. ouro_agent-0.2.0/ouro/tui/inline_editor.py +170 -0
  536. ouro_agent-0.2.0/ouro/tui/input_drafts.py +146 -0
  537. ouro_agent-0.2.0/ouro/tui/keyboard.py +29 -0
  538. ouro_agent-0.2.0/ouro/tui/markdown.py +85 -0
  539. ouro_agent-0.2.0/ouro/tui/menu_labels.py +34 -0
  540. ouro_agent-0.2.0/ouro/tui/menu_sorting.py +63 -0
  541. ouro_agent-0.2.0/ouro/tui/model_menus.py +101 -0
  542. ouro_agent-0.2.0/ouro/tui/plan_confirmation.py +25 -0
  543. ouro_agent-0.2.0/ouro/tui/plugin_workflows.py +509 -0
  544. ouro_agent-0.2.0/ouro/tui/preferences.py +126 -0
  545. ouro_agent-0.2.0/ouro/tui/prompt_screens.py +126 -0
  546. ouro_agent-0.2.0/ouro/tui/prompt_workflows.py +147 -0
  547. ouro_agent-0.2.0/ouro/tui/provider_auth_screens.py +346 -0
  548. ouro_agent-0.2.0/ouro/tui/provider_screens.py +819 -0
  549. ouro_agent-0.2.0/ouro/tui/provider_workflows.py +1059 -0
  550. ouro_agent-0.2.0/ouro/tui/question_forms.py +163 -0
  551. ouro_agent-0.2.0/ouro/tui/screens.py +1821 -0
  552. ouro_agent-0.2.0/ouro/tui/selection.py +8 -0
  553. ouro_agent-0.2.0/ouro/tui/state.py +538 -0
  554. ouro_agent-0.2.0/ouro/tui/subagent_navigation.py +303 -0
  555. ouro_agent-0.2.0/ouro/tui/task_screens.py +443 -0
  556. ouro_agent-0.2.0/ouro/tui/task_workflows.py +284 -0
  557. ouro_agent-0.2.0/ouro/tui/terminal.py +167 -0
  558. ouro_agent-0.2.0/ouro/tui/text_inputs.py +80 -0
  559. ouro_agent-0.2.0/ouro/tui/text_wrapping.py +103 -0
  560. ouro_agent-0.2.0/ouro/tui/theme.py +582 -0
  561. ouro_agent-0.2.0/ouro/tui/tool_presentations.py +263 -0
  562. ouro_agent-0.2.0/ouro/tui/welcome/__init__.py +50 -0
  563. ouro_agent-0.2.0/ouro/tui/welcome/centered.py +84 -0
  564. ouro_agent-0.2.0/ouro/tui/welcome/components.py +454 -0
  565. ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/__init__.py +1 -0
  566. ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/field.py +102 -0
  567. ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/raster.py +151 -0
  568. ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/widget.py +200 -0
  569. ouro_agent-0.2.0/ouro/tui/welcome/host.py +139 -0
  570. ouro_agent-0.2.0/ouro/tui/welcome/model.py +68 -0
  571. ouro_agent-0.2.0/ouro/tui/welcome/styles/__init__.py +1 -0
  572. ouro_agent-0.2.0/ouro/tui/welcome/styles/basic.py +36 -0
  573. ouro_agent-0.2.0/ouro/tui/welcome/styles/clifford.py +95 -0
  574. ouro_agent-0.2.0/ouro/tui/welcome/styles/crystal.py +71 -0
  575. ouro_agent-0.2.0/ouro/tui/welcome/styles/electron_bloom.py +64 -0
  576. ouro_agent-0.2.0/ouro/tui/welcome/styles/event_horizon.py +93 -0
  577. ouro_agent-0.2.0/ouro/tui/welcome/styles/interference.py +60 -0
  578. ouro_agent-0.2.0/ouro/tui/welcome/styles/julia_reliquary.py +161 -0
  579. ouro_agent-0.2.0/ouro/tui/widgets.py +3512 -0
  580. ouro_agent-0.2.0/ouro/tui/windows_console.py +60 -0
  581. ouro_agent-0.2.0/ouro/tui/windows_driver.py +97 -0
  582. ouro_agent-0.2.0/ouro/tui/wrapped_document.py +141 -0
  583. ouro_agent-0.2.0/pyproject.toml +79 -0
  584. ouro_agent-0.2.0/tests/__init__.py +1 -0
  585. ouro_agent-0.2.0/tests/application/__init__.py +1 -0
  586. ouro_agent-0.2.0/tests/application/test_agent_definitions.py +293 -0
  587. ouro_agent-0.2.0/tests/application/test_agent_multi_host.py +511 -0
  588. ouro_agent-0.2.0/tests/application/test_agent_recovery.py +539 -0
  589. ouro_agent-0.2.0/tests/application/test_agent_result_delivery.py +185 -0
  590. ouro_agent-0.2.0/tests/application/test_agents.py +3580 -0
  591. ouro_agent-0.2.0/tests/application/test_async_session_pipeline.py +396 -0
  592. ouro_agent-0.2.0/tests/application/test_attachments.py +239 -0
  593. ouro_agent-0.2.0/tests/application/test_billing_attribution.py +199 -0
  594. ouro_agent-0.2.0/tests/application/test_codex_subscription.py +248 -0
  595. ouro_agent-0.2.0/tests/application/test_compaction.py +1300 -0
  596. ouro_agent-0.2.0/tests/application/test_configuration.py +751 -0
  597. ouro_agent-0.2.0/tests/application/test_data_transfer.py +750 -0
  598. ouro_agent-0.2.0/tests/application/test_data_transfer_selection.py +95 -0
  599. ouro_agent-0.2.0/tests/application/test_driver_agents.py +230 -0
  600. ouro_agent-0.2.0/tests/application/test_driver_contract_loading.py +543 -0
  601. ouro_agent-0.2.0/tests/application/test_driver_inputs.py +557 -0
  602. ouro_agent-0.2.0/tests/application/test_dynamic_tool_groups.py +157 -0
  603. ouro_agent-0.2.0/tests/application/test_environment_continuity.py +558 -0
  604. ouro_agent-0.2.0/tests/application/test_events.py +834 -0
  605. ouro_agent-0.2.0/tests/application/test_harness_commands.py +278 -0
  606. ouro_agent-0.2.0/tests/application/test_harness_continuations.py +297 -0
  607. ouro_agent-0.2.0/tests/application/test_harness_controls.py +222 -0
  608. ouro_agent-0.2.0/tests/application/test_harness_tools.py +348 -0
  609. ouro_agent-0.2.0/tests/application/test_harness_usage.py +174 -0
  610. ouro_agent-0.2.0/tests/application/test_history_editing.py +503 -0
  611. ouro_agent-0.2.0/tests/application/test_history_execution.py +461 -0
  612. ouro_agent-0.2.0/tests/application/test_history_observation.py +90 -0
  613. ouro_agent-0.2.0/tests/application/test_host_plugin_commands.py +522 -0
  614. ouro_agent-0.2.0/tests/application/test_image_inputs.py +111 -0
  615. ouro_agent-0.2.0/tests/application/test_interaction_handoff.py +69 -0
  616. ouro_agent-0.2.0/tests/application/test_local_application.py +239 -0
  617. ouro_agent-0.2.0/tests/application/test_local_provider_auth.py +59 -0
  618. ouro_agent-0.2.0/tests/application/test_media_inputs.py +356 -0
  619. ouro_agent-0.2.0/tests/application/test_model_completion.py +213 -0
  620. ouro_agent-0.2.0/tests/application/test_model_generation.py +267 -0
  621. ouro_agent-0.2.0/tests/application/test_model_requests.py +158 -0
  622. ouro_agent-0.2.0/tests/application/test_models.py +367 -0
  623. ouro_agent-0.2.0/tests/application/test_personal_prompts.py +271 -0
  624. ouro_agent-0.2.0/tests/application/test_plugin_extensibility.py +1849 -0
  625. ouro_agent-0.2.0/tests/application/test_plugin_models.py +217 -0
  626. ouro_agent-0.2.0/tests/application/test_plugin_native_runs.py +284 -0
  627. ouro_agent-0.2.0/tests/application/test_plugin_scheduling.py +463 -0
  628. ouro_agent-0.2.0/tests/application/test_plugin_tasks.py +367 -0
  629. ouro_agent-0.2.0/tests/application/test_provider_auth.py +566 -0
  630. ouro_agent-0.2.0/tests/application/test_queued_input_modes.py +393 -0
  631. ouro_agent-0.2.0/tests/application/test_queued_inputs.py +508 -0
  632. ouro_agent-0.2.0/tests/application/test_queued_ownership.py +180 -0
  633. ouro_agent-0.2.0/tests/application/test_resource_io.py +100 -0
  634. ouro_agent-0.2.0/tests/application/test_resources.py +737 -0
  635. ouro_agent-0.2.0/tests/application/test_responses_runtime.py +509 -0
  636. ouro_agent-0.2.0/tests/application/test_run_continuations.py +1336 -0
  637. ouro_agent-0.2.0/tests/application/test_run_drivers.py +808 -0
  638. ouro_agent-0.2.0/tests/application/test_run_ownership.py +197 -0
  639. ouro_agent-0.2.0/tests/application/test_run_resources.py +302 -0
  640. ouro_agent-0.2.0/tests/application/test_runtime.py +3575 -0
  641. ouro_agent-0.2.0/tests/application/test_runtime_activity.py +726 -0
  642. ouro_agent-0.2.0/tests/application/test_runtime_authentication.py +383 -0
  643. ouro_agent-0.2.0/tests/application/test_session_approval_modes.py +384 -0
  644. ouro_agent-0.2.0/tests/application/test_session_controls.py +484 -0
  645. ouro_agent-0.2.0/tests/application/test_session_event_following.py +535 -0
  646. ouro_agent-0.2.0/tests/application/test_session_file_inputs.py +254 -0
  647. ouro_agent-0.2.0/tests/application/test_session_import_conflicts.py +204 -0
  648. ouro_agent-0.2.0/tests/application/test_session_models.py +549 -0
  649. ouro_agent-0.2.0/tests/application/test_session_summaries.py +80 -0
  650. ouro_agent-0.2.0/tests/application/test_session_titles.py +145 -0
  651. ouro_agent-0.2.0/tests/application/test_sessions.py +1593 -0
  652. ouro_agent-0.2.0/tests/application/test_skill_activations.py +217 -0
  653. ouro_agent-0.2.0/tests/application/test_sqlite_backend.py +88 -0
  654. ouro_agent-0.2.0/tests/application/test_supervisor.py +950 -0
  655. ouro_agent-0.2.0/tests/application/test_task_schedule.py +145 -0
  656. ouro_agent-0.2.0/tests/application/test_task_storage.py +457 -0
  657. ouro_agent-0.2.0/tests/application/test_tasks.py +594 -0
  658. ouro_agent-0.2.0/tests/application/test_tool_call_batches.py +1129 -0
  659. ouro_agent-0.2.0/tests/application/test_tool_result_content.py +112 -0
  660. ouro_agent-0.2.0/tests/application/test_undo_inputs.py +311 -0
  661. ouro_agent-0.2.0/tests/application/test_usage.py +194 -0
  662. ouro_agent-0.2.0/tests/application/test_view_image.py +76 -0
  663. ouro_agent-0.2.0/tests/application/test_worker_dynamic_tools.py +169 -0
  664. ouro_agent-0.2.0/tests/architecture/__init__.py +1 -0
  665. ouro_agent-0.2.0/tests/architecture/test_boundaries.py +425 -0
  666. ouro_agent-0.2.0/tests/architecture/test_imports.py +43 -0
  667. ouro_agent-0.2.0/tests/auth/__init__.py +0 -0
  668. ouro_agent-0.2.0/tests/auth/openai_fixtures.py +24 -0
  669. ouro_agent-0.2.0/tests/auth/test_authorization.py +370 -0
  670. ouro_agent-0.2.0/tests/auth/test_credentials.py +569 -0
  671. ouro_agent-0.2.0/tests/auth/test_driver_contracts.py +230 -0
  672. ouro_agent-0.2.0/tests/auth/test_openai_driver.py +331 -0
  673. ouro_agent-0.2.0/tests/auth/test_openai_protocol.py +194 -0
  674. ouro_agent-0.2.0/tests/auth/test_processes.py +166 -0
  675. ouro_agent-0.2.0/tests/auth/test_request_auth.py +227 -0
  676. ouro_agent-0.2.0/tests/auth/test_store.py +284 -0
  677. ouro_agent-0.2.0/tests/benchmarks/test_sqlite_sync.py +51 -0
  678. ouro_agent-0.2.0/tests/billing/__init__.py +1 -0
  679. ouro_agent-0.2.0/tests/billing/test_local.py +466 -0
  680. ouro_agent-0.2.0/tests/cli/__init__.py +1 -0
  681. ouro_agent-0.2.0/tests/cli/test_agent_commands.py +356 -0
  682. ouro_agent-0.2.0/tests/cli/test_approval_commands.py +290 -0
  683. ouro_agent-0.2.0/tests/cli/test_codex_subscription.py +47 -0
  684. ouro_agent-0.2.0/tests/cli/test_compaction_config_commands.py +170 -0
  685. ouro_agent-0.2.0/tests/cli/test_data_commands.py +184 -0
  686. ouro_agent-0.2.0/tests/cli/test_entry.py +77 -0
  687. ouro_agent-0.2.0/tests/cli/test_error_codes.py +42 -0
  688. ouro_agent-0.2.0/tests/cli/test_help.py +98 -0
  689. ouro_agent-0.2.0/tests/cli/test_mcp_commands.py +395 -0
  690. ouro_agent-0.2.0/tests/cli/test_permissions_commands.py +175 -0
  691. ouro_agent-0.2.0/tests/cli/test_plugin_commands.py +370 -0
  692. ouro_agent-0.2.0/tests/cli/test_prompt_commands.py +64 -0
  693. ouro_agent-0.2.0/tests/cli/test_provider_auth_commands.py +335 -0
  694. ouro_agent-0.2.0/tests/cli/test_provider_error_codes.py +47 -0
  695. ouro_agent-0.2.0/tests/cli/test_provider_headers_commands.py +90 -0
  696. ouro_agent-0.2.0/tests/cli/test_provider_protocol_commands.py +249 -0
  697. ouro_agent-0.2.0/tests/cli/test_provider_template_commands.py +363 -0
  698. ouro_agent-0.2.0/tests/cli/test_queued_inputs_cli.py +50 -0
  699. ouro_agent-0.2.0/tests/cli/test_resource_commands.py +116 -0
  700. ouro_agent-0.2.0/tests/cli/test_run_budget_config_commands.py +43 -0
  701. ouro_agent-0.2.0/tests/cli/test_run_cli.py +1559 -0
  702. ouro_agent-0.2.0/tests/cli/test_session_approval_modes.py +97 -0
  703. ouro_agent-0.2.0/tests/cli/test_session_backend_selection.py +171 -0
  704. ouro_agent-0.2.0/tests/cli/test_session_commands.py +599 -0
  705. ouro_agent-0.2.0/tests/cli/test_session_summaries.py +66 -0
  706. ouro_agent-0.2.0/tests/cli/test_skill_management_cli.py +102 -0
  707. ouro_agent-0.2.0/tests/cli/test_skill_source_config_commands.py +83 -0
  708. ouro_agent-0.2.0/tests/cli/test_task_backend_selection.py +65 -0
  709. ouro_agent-0.2.0/tests/cli/test_tool_execution_config_commands.py +70 -0
  710. ouro_agent-0.2.0/tests/cli/test_usage_commands.py +278 -0
  711. ouro_agent-0.2.0/tests/config/__init__.py +1 -0
  712. ouro_agent-0.2.0/tests/config/test_agents.py +141 -0
  713. ouro_agent-0.2.0/tests/config/test_atomic_config.py +197 -0
  714. ouro_agent-0.2.0/tests/config/test_compaction_config.py +135 -0
  715. ouro_agent-0.2.0/tests/config/test_credentials_config.py +996 -0
  716. ouro_agent-0.2.0/tests/config/test_media_capabilities.py +139 -0
  717. ouro_agent-0.2.0/tests/config/test_prompts.py +164 -0
  718. ouro_agent-0.2.0/tests/config/test_provider_auth_config.py +449 -0
  719. ouro_agent-0.2.0/tests/config/test_provider_headers.py +153 -0
  720. ouro_agent-0.2.0/tests/config/test_provider_template_store.py +466 -0
  721. ouro_agent-0.2.0/tests/config/test_provider_template_updates.py +274 -0
  722. ouro_agent-0.2.0/tests/config/test_provider_templates.py +279 -0
  723. ouro_agent-0.2.0/tests/config/test_queued_input_config.py +26 -0
  724. ouro_agent-0.2.0/tests/config/test_reasoning_config.py +231 -0
  725. ouro_agent-0.2.0/tests/core/__init__.py +1 -0
  726. ouro_agent-0.2.0/tests/core/test_adapter_stream.py +289 -0
  727. ouro_agent-0.2.0/tests/core/test_agents.py +158 -0
  728. ouro_agent-0.2.0/tests/core/test_approval_modes.py +55 -0
  729. ouro_agent-0.2.0/tests/core/test_callbacks.py +41 -0
  730. ouro_agent-0.2.0/tests/core/test_compaction.py +206 -0
  731. ouro_agent-0.2.0/tests/core/test_context.py +395 -0
  732. ouro_agent-0.2.0/tests/core/test_context_providers.py +124 -0
  733. ouro_agent-0.2.0/tests/core/test_harness_calls.py +154 -0
  734. ouro_agent-0.2.0/tests/core/test_inner_loop.py +89 -0
  735. ouro_agent-0.2.0/tests/core/test_interactions.py +70 -0
  736. ouro_agent-0.2.0/tests/core/test_media_content.py +45 -0
  737. ouro_agent-0.2.0/tests/core/test_model_execution.py +221 -0
  738. ouro_agent-0.2.0/tests/core/test_models.py +106 -0
  739. ouro_agent-0.2.0/tests/core/test_observers.py +363 -0
  740. ouro_agent-0.2.0/tests/core/test_persistence.py +82 -0
  741. ouro_agent-0.2.0/tests/core/test_prompt_policies.py +109 -0
  742. ouro_agent-0.2.0/tests/core/test_provider.py +86 -0
  743. ouro_agent-0.2.0/tests/core/test_reasoning.py +210 -0
  744. ouro_agent-0.2.0/tests/core/test_redaction.py +42 -0
  745. ouro_agent-0.2.0/tests/core/test_run_drivers.py +90 -0
  746. ouro_agent-0.2.0/tests/core/test_run_transitions.py +165 -0
  747. ouro_agent-0.2.0/tests/core/test_session_titles.py +41 -0
  748. ouro_agent-0.2.0/tests/core/test_skill_activation_content.py +74 -0
  749. ouro_agent-0.2.0/tests/core/test_tool_batch_transitions.py +139 -0
  750. ouro_agent-0.2.0/tests/core/test_tool_policies.py +112 -0
  751. ouro_agent-0.2.0/tests/core/test_tool_result_projection.py +62 -0
  752. ouro_agent-0.2.0/tests/core/test_turn_policies.py +95 -0
  753. ouro_agent-0.2.0/tests/harness_state.py +47 -0
  754. ouro_agent-0.2.0/tests/mcp/__init__.py +1 -0
  755. ouro_agent-0.2.0/tests/mcp/fixtures/echo_server.py +41 -0
  756. ouro_agent-0.2.0/tests/mcp/test_configuration.py +325 -0
  757. ouro_agent-0.2.0/tests/mcp/test_manager.py +602 -0
  758. ouro_agent-0.2.0/tests/mcp/test_sdk.py +81 -0
  759. ouro_agent-0.2.0/tests/mcp/test_sdk_integration.py +152 -0
  760. ouro_agent-0.2.0/tests/mcp/test_sse_transport.py +89 -0
  761. ouro_agent-0.2.0/tests/plugins/__init__.py +1 -0
  762. ouro_agent-0.2.0/tests/plugins/fixtures/background_model.py +116 -0
  763. ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/driver_dependency_plugin.py +37 -0
  764. ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/driver_worker.py +45 -0
  765. ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/review_driver_plugin.py +34 -0
  766. ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/service_worker.py +45 -0
  767. ouro_agent-0.2.0/tests/plugins/fixtures/dynamic_tool_worker.py +67 -0
  768. ouro_agent-0.2.0/tests/plugins/fixtures/home_service_worker.py +61 -0
  769. ouro_agent-0.2.0/tests/plugins/fixtures/model_probe.py +86 -0
  770. ouro_agent-0.2.0/tests/plugins/fixtures/native_service_driver.py +30 -0
  771. ouro_agent-0.2.0/tests/plugins/fixtures/native_service_worker.py +41 -0
  772. ouro_agent-0.2.0/tests/plugins/fixtures/provider_probe.py +176 -0
  773. ouro_agent-0.2.0/tests/plugins/fixtures/scheduled_service.py +142 -0
  774. ouro_agent-0.2.0/tests/plugins/fixtures/service_lifetime.py +128 -0
  775. ouro_agent-0.2.0/tests/plugins/test_background_models.py +208 -0
  776. ouro_agent-0.2.0/tests/plugins/test_builtin_agent_context.py +340 -0
  777. ouro_agent-0.2.0/tests/plugins/test_builtin_goal.py +831 -0
  778. ouro_agent-0.2.0/tests/plugins/test_builtin_plan.py +1080 -0
  779. ouro_agent-0.2.0/tests/plugins/test_catalog_bindings.py +172 -0
  780. ouro_agent-0.2.0/tests/plugins/test_data_lifecycle.py +177 -0
  781. ouro_agent-0.2.0/tests/plugins/test_driver_contracts.py +42 -0
  782. ouro_agent-0.2.0/tests/plugins/test_execution_contracts.py +81 -0
  783. ouro_agent-0.2.0/tests/plugins/test_harness_calls.py +230 -0
  784. ouro_agent-0.2.0/tests/plugins/test_home_services.py +175 -0
  785. ouro_agent-0.2.0/tests/plugins/test_lifecycle.py +504 -0
  786. ouro_agent-0.2.0/tests/plugins/test_media_content.py +20 -0
  787. ouro_agent-0.2.0/tests/plugins/test_observer_contract.py +239 -0
  788. ouro_agent-0.2.0/tests/plugins/test_package_retention.py +140 -0
  789. ouro_agent-0.2.0/tests/plugins/test_plugin_examples.py +36 -0
  790. ouro_agent-0.2.0/tests/plugins/test_plugin_scaffold.py +36 -0
  791. ouro_agent-0.2.0/tests/plugins/test_plugin_sources.py +89 -0
  792. ouro_agent-0.2.0/tests/plugins/test_plugin_system.py +4137 -0
  793. ouro_agent-0.2.0/tests/plugins/test_processes.py +116 -0
  794. ouro_agent-0.2.0/tests/plugins/test_product_sdk.py +146 -0
  795. ouro_agent-0.2.0/tests/plugins/test_providers.py +386 -0
  796. ouro_agent-0.2.0/tests/plugins/test_run_driver_sdk.py +135 -0
  797. ouro_agent-0.2.0/tests/plugins/test_sdk_compaction.py +172 -0
  798. ouro_agent-0.2.0/tests/plugins/test_sdk_tools.py +213 -0
  799. ouro_agent-0.2.0/tests/plugins/test_service_lifetimes.py +146 -0
  800. ouro_agent-0.2.0/tests/plugins/test_services.py +275 -0
  801. ouro_agent-0.2.0/tests/plugins/test_session_state.py +7 -0
  802. ouro_agent-0.2.0/tests/plugins/test_startup_graph.py +237 -0
  803. ouro_agent-0.2.0/tests/plugins/test_synchronization.py +149 -0
  804. ouro_agent-0.2.0/tests/plugins/test_tool_groups.py +416 -0
  805. ouro_agent-0.2.0/tests/plugins/test_worker_bidirectional.py +245 -0
  806. ouro_agent-0.2.0/tests/plugins/test_worker_harness_calls.py +139 -0
  807. ouro_agent-0.2.0/tests/plugins/test_worker_harness_usage.py +110 -0
  808. ouro_agent-0.2.0/tests/plugins/test_worker_home_services.py +155 -0
  809. ouro_agent-0.2.0/tests/plugins/test_worker_results.py +288 -0
  810. ouro_agent-0.2.0/tests/plugins/test_worker_services.py +110 -0
  811. ouro_agent-0.2.0/tests/plugins/test_worker_tool_groups.py +271 -0
  812. ouro_agent-0.2.0/tests/plugins/test_worker_tool_sdk.py +140 -0
  813. ouro_agent-0.2.0/tests/probes/test_codex_adapter.py +323 -0
  814. ouro_agent-0.2.0/tests/probes/test_codex_oauth.py +112 -0
  815. ouro_agent-0.2.0/tests/probes/test_codex_responses.py +365 -0
  816. ouro_agent-0.2.0/tests/probes/test_openai_codex.py +264 -0
  817. ouro_agent-0.2.0/tests/providers/__init__.py +1 -0
  818. ouro_agent-0.2.0/tests/providers/responses_fixtures.py +66 -0
  819. ouro_agent-0.2.0/tests/providers/test_anthropic_messages.py +558 -0
  820. ouro_agent-0.2.0/tests/providers/test_connection_check.py +60 -0
  821. ouro_agent-0.2.0/tests/providers/test_factory.py +437 -0
  822. ouro_agent-0.2.0/tests/providers/test_faux.py +75 -0
  823. ouro_agent-0.2.0/tests/providers/test_headers.py +275 -0
  824. ouro_agent-0.2.0/tests/providers/test_media_inputs.py +144 -0
  825. ouro_agent-0.2.0/tests/providers/test_model_request_timeout.py +401 -0
  826. ouro_agent-0.2.0/tests/providers/test_openai_chat_completions.py +1712 -0
  827. ouro_agent-0.2.0/tests/providers/test_openai_responses.py +495 -0
  828. ouro_agent-0.2.0/tests/providers/test_openai_responses_codec.py +328 -0
  829. ouro_agent-0.2.0/tests/providers/test_openai_responses_stream.py +437 -0
  830. ouro_agent-0.2.0/tests/providers/test_openai_templates.py +130 -0
  831. ouro_agent-0.2.0/tests/providers/test_request_authentication.py +374 -0
  832. ouro_agent-0.2.0/tests/providers/test_tool_result_content.py +150 -0
  833. ouro_agent-0.2.0/tests/providers/test_transport_diagnostics.py +145 -0
  834. ouro_agent-0.2.0/tests/resource_fixtures.py +18 -0
  835. ouro_agent-0.2.0/tests/session_summaries.py +41 -0
  836. ouro_agent-0.2.0/tests/sessions/__init__.py +1 -0
  837. ouro_agent-0.2.0/tests/sessions/test_catalog_projection.py +284 -0
  838. ouro_agent-0.2.0/tests/sessions/test_data_versions.py +94 -0
  839. ouro_agent-0.2.0/tests/sessions/test_delegations.py +138 -0
  840. ouro_agent-0.2.0/tests/sessions/test_event_tail_process.py +64 -0
  841. ouro_agent-0.2.0/tests/sessions/test_harness_commits.py +628 -0
  842. ouro_agent-0.2.0/tests/sessions/test_harness_lifecycle.py +218 -0
  843. ouro_agent-0.2.0/tests/sessions/test_local_files.py +1319 -0
  844. ouro_agent-0.2.0/tests/sessions/test_local_io.py +81 -0
  845. ouro_agent-0.2.0/tests/sessions/test_message_queries.py +173 -0
  846. ouro_agent-0.2.0/tests/sessions/test_message_truncation.py +293 -0
  847. ouro_agent-0.2.0/tests/sessions/test_sqlite_stream_persistence.py +186 -0
  848. ouro_agent-0.2.0/tests/sessions/test_sqlite_transfer.py +115 -0
  849. ouro_agent-0.2.0/tests/sessions/test_store_contract.py +567 -0
  850. ouro_agent-0.2.0/tests/sessions/test_transfer_batches.py +174 -0
  851. ouro_agent-0.2.0/tests/skills/__init__.py +1 -0
  852. ouro_agent-0.2.0/tests/skills/test_skill_loader.py +357 -0
  853. ouro_agent-0.2.0/tests/skills/test_skill_manager.py +204 -0
  854. ouro_agent-0.2.0/tests/test_local_file_access.py +63 -0
  855. ouro_agent-0.2.0/tests/test_local_locks.py +178 -0
  856. ouro_agent-0.2.0/tests/test_local_processes.py +71 -0
  857. ouro_agent-0.2.0/tests/tools/__init__.py +1 -0
  858. ouro_agent-0.2.0/tests/tools/test_builtin_agents.py +158 -0
  859. ouro_agent-0.2.0/tests/tools/test_builtin_arguments.py +50 -0
  860. ouro_agent-0.2.0/tests/tools/test_builtin_ask_user.py +88 -0
  861. ouro_agent-0.2.0/tests/tools/test_builtin_file_tools.py +416 -0
  862. ouro_agent-0.2.0/tests/tools/test_builtin_search_and_todolist.py +597 -0
  863. ouro_agent-0.2.0/tests/tools/test_builtin_shell.py +504 -0
  864. ouro_agent-0.2.0/tests/tools/test_builtin_view_image.py +273 -0
  865. ouro_agent-0.2.0/tests/tools/test_callbacks.py +41 -0
  866. ouro_agent-0.2.0/tests/tools/test_executor_permissions.py +449 -0
  867. ouro_agent-0.2.0/tests/tools/test_result_content.py +77 -0
  868. ouro_agent-0.2.0/tests/tools/test_tools.py +868 -0
  869. ouro_agent-0.2.0/tests/tui/__init__.py +1 -0
  870. ouro_agent-0.2.0/tests/tui/fixtures/README.md +16 -0
  871. ouro_agent-0.2.0/tests/tui/fixtures/welcome-frames.json.gz +0 -0
  872. ouro_agent-0.2.0/tests/tui/helpers.py +121 -0
  873. ouro_agent-0.2.0/tests/tui/test_app.py +13913 -0
  874. ouro_agent-0.2.0/tests/tui/test_archive_paths.py +97 -0
  875. ouro_agent-0.2.0/tests/tui/test_async_observation.py +57 -0
  876. ouro_agent-0.2.0/tests/tui/test_attachment_editor.py +70 -0
  877. ouro_agent-0.2.0/tests/tui/test_attachments.py +574 -0
  878. ouro_agent-0.2.0/tests/tui/test_background_navigation.py +401 -0
  879. ouro_agent-0.2.0/tests/tui/test_clipboard.py +330 -0
  880. ouro_agent-0.2.0/tests/tui/test_commands.py +154 -0
  881. ouro_agent-0.2.0/tests/tui/test_controller.py +2531 -0
  882. ouro_agent-0.2.0/tests/tui/test_conversation_history.py +906 -0
  883. ouro_agent-0.2.0/tests/tui/test_data_transfer.py +665 -0
  884. ouro_agent-0.2.0/tests/tui/test_dot_animation.py +140 -0
  885. ouro_agent-0.2.0/tests/tui/test_endpoint_menus.py +165 -0
  886. ouro_agent-0.2.0/tests/tui/test_history_commands.py +466 -0
  887. ouro_agent-0.2.0/tests/tui/test_inline_editor.py +97 -0
  888. ouro_agent-0.2.0/tests/tui/test_input_drafts.py +118 -0
  889. ouro_agent-0.2.0/tests/tui/test_keyboard.py +58 -0
  890. ouro_agent-0.2.0/tests/tui/test_live_session_attachment.py +281 -0
  891. ouro_agent-0.2.0/tests/tui/test_menu_transitions.py +160 -0
  892. ouro_agent-0.2.0/tests/tui/test_plan_confirmation.py +43 -0
  893. ouro_agent-0.2.0/tests/tui/test_plugin_workflows.py +25 -0
  894. ouro_agent-0.2.0/tests/tui/test_preferences.py +243 -0
  895. ouro_agent-0.2.0/tests/tui/test_prompts.py +205 -0
  896. ouro_agent-0.2.0/tests/tui/test_provider_auth.py +520 -0
  897. ouro_agent-0.2.0/tests/tui/test_provider_protocols.py +254 -0
  898. ouro_agent-0.2.0/tests/tui/test_question_forms.py +169 -0
  899. ouro_agent-0.2.0/tests/tui/test_run_summaries.py +140 -0
  900. ouro_agent-0.2.0/tests/tui/test_session_input.py +338 -0
  901. ouro_agent-0.2.0/tests/tui/test_session_loading.py +171 -0
  902. ouro_agent-0.2.0/tests/tui/test_session_menus.py +276 -0
  903. ouro_agent-0.2.0/tests/tui/test_session_summaries.py +147 -0
  904. ouro_agent-0.2.0/tests/tui/test_session_titles.py +58 -0
  905. ouro_agent-0.2.0/tests/tui/test_state.py +404 -0
  906. ouro_agent-0.2.0/tests/tui/test_subagent_navigation.py +255 -0
  907. ouro_agent-0.2.0/tests/tui/test_tasks.py +736 -0
  908. ouro_agent-0.2.0/tests/tui/test_terminal.py +172 -0
  909. ouro_agent-0.2.0/tests/tui/test_text_inputs.py +78 -0
  910. ouro_agent-0.2.0/tests/tui/test_text_wrapping.py +260 -0
  911. ouro_agent-0.2.0/tests/tui/test_tool_presentations.py +645 -0
  912. ouro_agent-0.2.0/tests/tui/test_usage_presentation.py +108 -0
  913. ouro_agent-0.2.0/tests/tui/test_welcome_layout.py +88 -0
  914. ouro_agent-0.2.0/tests/tui/test_welcome_refresh.py +186 -0
  915. ouro_agent-0.2.0/tests/tui/test_welcome_styles.py +662 -0
  916. ouro_agent-0.2.0/tests/tui/test_windows_driver.py +138 -0
  917. ouro_agent-0.2.0/tests/tui/windows_console_probe.py +148 -0
  918. ouro_agent-0.2.0/uv.lock +1193 -0
@@ -0,0 +1,81 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: ci-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ architecture-unit:
16
+ name: Architecture / core unit gate
17
+ runs-on: ubuntu-latest
18
+ timeout-minutes: 5
19
+
20
+ steps:
21
+ - name: Check out repository
22
+ uses: actions/checkout@v7
23
+
24
+ - name: Install uv and Python
25
+ uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
26
+ with:
27
+ version: "0.11.28"
28
+ python-version: "3.14"
29
+ enable-cache: true
30
+
31
+ - name: Sync locked dependencies
32
+ run: uv sync --frozen --all-groups
33
+
34
+ - name: Check architecture and core units
35
+ run: uv run --frozen pytest -q tests/architecture tests/core
36
+
37
+ quality:
38
+ name: Python 3.14 / ${{ matrix.os }}
39
+ needs: architecture-unit
40
+ runs-on: ${{ matrix.os }}
41
+ timeout-minutes: 20
42
+ strategy:
43
+ fail-fast: false
44
+ matrix:
45
+ os: [ubuntu-latest, windows-latest, macos-latest]
46
+
47
+ steps:
48
+ - name: Check out repository
49
+ uses: actions/checkout@v7
50
+
51
+ - name: Install uv and Python
52
+ uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
53
+ with:
54
+ version: "0.11.28"
55
+ python-version: "3.14"
56
+ enable-cache: true
57
+
58
+ - name: Sync locked dependencies
59
+ run: uv sync --frozen --all-groups
60
+
61
+ - name: Run tests
62
+ run: uv run --frozen pytest
63
+
64
+ - name: Check lint
65
+ run: uv run --frozen ruff check ouro tests
66
+
67
+ - name: Check formatting
68
+ run: uv run --frozen ruff format --check ouro tests
69
+
70
+ - name: Check types
71
+ run: uv run --frozen mypy ouro
72
+
73
+ - name: Compile package
74
+ run: uv run --frozen python -m compileall -q ouro
75
+
76
+ - name: Build distributions
77
+ run: uv build
78
+
79
+ - name: Enforce coverage floor
80
+ if: runner.os == 'Linux'
81
+ run: uv run --frozen pytest --cov=ouro --cov-report=term-missing
@@ -0,0 +1,35 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.pyo
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+
9
+ # Virtual environments
10
+ .venv/
11
+ .venv-*/
12
+ venv/
13
+
14
+ # Testing / coverage
15
+ .coverage
16
+ .pytest_cache/
17
+ htmlcov/
18
+
19
+ # Tool caches
20
+ .ruff_cache/
21
+ .mypy_cache/
22
+
23
+ # IDE
24
+ .idea/
25
+ .vscode/
26
+ .claude/
27
+ *.swp
28
+ *.swo
29
+
30
+ # OS
31
+ .DS_Store
32
+ Thumbs.db
33
+
34
+ # User
35
+ .ouro
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ 本文件按版本记录面向使用者和维护者的主要改进,不展开实现细节。当前能力见[项目概述](docs/overview.md),版本发布遵循[发布流程](RELEASING.md)。
4
+
5
+ ## 0.2.0 — 2026-10-12
6
+
7
+ - 重构插件平台,支持可替换的智能体循环、模型接入、插件服务协作、代码执行与后台调度。
8
+ - 完善插件启停、升级和卸载,增强能力组合、在途执行及恢复的一致性。
9
+ - 优化插件启动与资源管理,减少重复初始化和无关能力的运行成本。
10
+ - 改善 TUI 会话历史显示、会话切换和连续审批的稳定性。
11
+ - 补充插件示例、开发规范与回归验证,为后续能力演进建立清晰边界。
12
+ - 正式采用 MIT 开源协议,并将协议声明纳入源码与发行包。
13
+ - 完善开源项目首页,提供 TUI 预览与快速上手说明,覆盖安装、模型配置、日常使用、数据位置与升级。
14
+
15
+ 兼容性:插件开发接口统一为 SDK v3;不受支持的旧接口、协议和数据格式会被明确拒绝,不提供自动迁移。插件需声明适用的 OURO 版本范围。
16
+
17
+ 验证:重构全量回归、版本准备定向验证及独立安装检查在 Windows 通过;其他平台与真实模型账户不属于本轮新增验收。设计与详细证据见[重构记录](docs/plans/archive/2026-10-12-plugin-platform-refactoring.md)和[审查修正记录](docs/plans/archive/2026-10-12-plugin-system-review.md)。
18
+
19
+ ## 0.1.0 — 历史开发版本
20
+
21
+ 以下汇总版本升级前的开发基线;此前未登记正式发布日期或 release tag。
22
+
23
+ - 建立本地个人智能体基础,提供 CLI / TUI、多模型接入、会话管理、工具执行和人工审批。
24
+ - 提供插件、Skills、MCP、子智能体、Goal / Plan 与自动任务能力。
25
+ - 支持文件与 SQLite 存储、会话恢复、数据传输及多模态附件输入。
26
+ - 持续改进终端交互、媒体处理、资源访问与并发存储的稳定性和效率。
27
+ - 补充工程验证与架构规范,整理用户指南、领域规格和开发文档。
@@ -0,0 +1,50 @@
1
+ # Contributing to OURO
2
+
3
+ OURO targets Python 3.14 or newer and uses `uv` for its locked development environment.
4
+
5
+ Use the fast architecture/core gate while iterating:
6
+
7
+ ```bash
8
+ uv run --frozen pytest -q tests/architecture tests/core
9
+ ```
10
+
11
+ Before handoff, run the complete local quality gate:
12
+
13
+ ```bash
14
+ uv sync --frozen --all-groups
15
+ uv run --frozen pytest --cov=ouro --cov-report=term-missing
16
+ uv run --frozen ruff check ouro tests
17
+ uv run --frozen ruff format --check ouro tests
18
+ uv run --frozen mypy ouro
19
+ uv run --frozen python -m compileall -q ouro
20
+ uv build
21
+ ```
22
+
23
+ Run platform-specific checks on their actual target systems and report skipped or unverified
24
+ platforms separately; a passing local gate is not cross-platform evidence.
25
+
26
+ Implementation and review must follow the
27
+ [Chinese coding guidelines](docs/development/coding-guidelines.zh-CN.md) or the
28
+ [English coding guidelines](docs/development/coding-guidelines.en.md). Keep domain contracts in `core`,
29
+ orchestration in `application`, adapters in infrastructure packages, and presentation behavior in
30
+ hosts such as `cli`. Do not make a Host depend directly on persistence files or configuration
31
+ managers when an application boundary exists.
32
+
33
+ Documentation follows the [documentation standard](docs/development/documentation.md). Keep user
34
+ guides, formal specifications (`docs/specs/`), future plans, and completed reviews in their respective locations;
35
+ update relative links and command examples when moving or changing them.
36
+
37
+ Changes should include focused success and failure tests. Concurrency, cancellation, recovery,
38
+ credential redaction, path handling, and durable-state changes require explicit regression
39
+ coverage. Keep generated caches, local OURO homes, credentials, and build artifacts out of commits.
40
+
41
+ Before requesting review:
42
+
43
+ - explain the behavior and compatibility impact;
44
+ - keep specs and the capability summary self-contained descriptions of current contracts;
45
+ - run the complete quality gate above;
46
+ - identify supported data formats, security assumptions, and intentionally deferred work;
47
+ - avoid bundling unrelated refactors into the same change.
48
+
49
+ OURO is distributed under the [MIT License](LICENSE). Contributions to this repository are
50
+ provided under the same license. Preserve applicable copyright and license notices.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OURO contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,198 @@
1
+ Metadata-Version: 2.5
2
+ Name: ouro-agent
3
+ Version: 0.2.0
4
+ Summary: Local-first personal agent runtime.
5
+ Project-URL: Homepage, https://github.com/djsaber/OURO
6
+ Project-URL: Documentation, https://github.com/djsaber/OURO/blob/main/docs/README.md
7
+ Project-URL: Repository, https://github.com/djsaber/OURO
8
+ Project-URL: Issues, https://github.com/djsaber/OURO/issues
9
+ Project-URL: Changelog, https://github.com/djsaber/OURO/blob/main/CHANGELOG.md
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Requires-Python: >=3.14
13
+ Requires-Dist: arrayfunc<9,>=8.5.7
14
+ Requires-Dist: httpx-sse>=0.4.3
15
+ Requires-Dist: httpx>=0.28
16
+ Requires-Dist: jsonschema>=4.25
17
+ Requires-Dist: mcp<2,>=1.28
18
+ Requires-Dist: pathspec>=1.1.1
19
+ Requires-Dist: pillow<13,>=12.3
20
+ Requires-Dist: pydantic>=2.13
21
+ Requires-Dist: pyperclip<2,>=1.11
22
+ Requires-Dist: pyyaml>=6.0.2
23
+ Requires-Dist: rich<16,>=15
24
+ Requires-Dist: textual<9,>=8.2
25
+ Requires-Dist: tzdata>=2025.2
26
+ Requires-Dist: tzlocal>=5.4.4
27
+ Requires-Dist: unicode-segmentation-rs<0.4,>=0.3.3
28
+ Requires-Dist: wcmatch>=11.0
29
+ Description-Content-Type: text/markdown
30
+
31
+ # OURO
32
+
33
+ [![PyPI](https://img.shields.io/pypi/v/ouro-agent?color=2563eb)](https://pypi.org/project/ouro-agent/)
34
+ [![Python 3.14+](https://img.shields.io/badge/Python-3.14%2B-3776ab)](https://www.python.org/downloads/)
35
+ [![MIT License](https://img.shields.io/badge/License-MIT-16a34a)](https://github.com/djsaber/OURO/blob/main/LICENSE)
36
+
37
+ **本地优先、可灵活拓展的个人智能体。**
38
+
39
+ OURO 让你在终端中与模型协作,处理文件、调用工具、管理会话和执行持续任务。它提供全屏交互界面,也可以通过命令行完成单次任务或输出 JSON。会话与配置保存在本地,模型服务由你选择。
40
+
41
+ 插件是 OURO 的核心拓展机制:除了工具、Skills 和 MCP,还可以拓展模型接入、智能体运行方式、后台任务及插件间协作,按需安装、启用和停用。
42
+
43
+ ![OURO v0.2.0 的终端交互界面](https://raw.githubusercontent.com/djsaber/OURO/v0.2.0/docs/assets/tui-welcome.png)
44
+
45
+ *OURO v0.2.0 实际界面 · Horizon 欢迎页 · 尚未配置模型的初始状态*
46
+
47
+ [使用文档](https://github.com/djsaber/OURO/blob/main/docs/README.md) · [版本记录](https://github.com/djsaber/OURO/blob/main/CHANGELOG.md) · [源码](https://github.com/djsaber/OURO) · [问题反馈](https://github.com/djsaber/OURO/issues)
48
+
49
+ ## 为你的工作方式而拓展
50
+
51
+ | 能力 | 你可以做什么 |
52
+ | --- | --- |
53
+ | 终端协作 | 在全屏 TUI 中交互,或通过 CLI 完成单次任务、输出 JSON。 |
54
+ | 本地资料 | 读取、编辑和搜索文件,使用附件及模型支持的图片、音频或视频输入。 |
55
+ | 持续任务 | 保存和恢复会话,通过子智能体、Goal / Plan 拆分任务、管理目标与计划。 |
56
+ | 模型与工具 | 配置多家模型供应商、兼容接口和 MCP 服务,为任务选择合适能力。 |
57
+ | 可组合插件 | 按需拓展工具、Skills、模型接入、智能体循环、插件协作与后台调度。 |
58
+ | 执行控制 | 通过权限、人工审批、取消操作和运行预算控制执行,查看用量与历史。 |
59
+
60
+ ## 安装
61
+
62
+ OURO 需要 **Python 3.14 或更高版本**。建议使用支持 Unicode 的现代终端。
63
+
64
+ ### 使用 uv 安装(推荐)
65
+
66
+ 安装 [uv](https://docs.astral.sh/uv/getting-started/installation/) 后执行:
67
+
68
+ ```bash
69
+ uv tool install --python 3.14 ouro-agent
70
+ ouro --version
71
+ ```
72
+
73
+ uv 会为 OURO 创建独立环境,并按需安装所需 Python。若终端提示找不到 `ouro`,执行 `uv tool update-shell` 后重新打开终端。
74
+
75
+ ### 使用 pip 安装
76
+
77
+ 如果已经有 Python 3.14+ 环境,也可以安装到自己的虚拟环境中:
78
+
79
+ ```bash
80
+ python -m pip install ouro-agent
81
+ ouro --version
82
+ ```
83
+
84
+ PyPI 包名是 `ouro-agent`,安装后的命令是 `ouro`。
85
+
86
+ ## 第一次使用
87
+
88
+ ### 1. 配置模型
89
+
90
+ 使用真实模型需要对应供应商的账户与凭据。OURO 不附带模型权重或 API 额度;尚未配置供应商时,内置 Faux 仅提供离线演示,不是真实模型。
91
+
92
+ 下面以 OpenAI API 为例。先在当前终端设置自己的 API Key:
93
+
94
+ **Windows PowerShell:**
95
+
96
+ ```powershell
97
+ $env:OPENAI_API_KEY = "替换为你的 API Key"
98
+ ```
99
+
100
+ **macOS / Linux(bash 或 zsh):**
101
+
102
+ ```bash
103
+ export OPENAI_API_KEY="替换为你的 API Key"
104
+ ```
105
+
106
+ 再添加供应商并设为默认:
107
+
108
+ ```bash
109
+ ouro provider add "OpenAI" --type openai --api-key-env OPENAI_API_KEY --default
110
+ ```
111
+
112
+ 以上环境变量设置只对当前终端及其子进程生效。重新打开终端后,需要重新设置,或通过系统环境变量管理保存。OURO 配置中记录的是变量名。
113
+
114
+ 你也可以通过 `ouro provider templates` 查看其他内置供应商模板,或在交互界面按 `Ctrl+P`,进入 `Manage providers` 管理供应商。模型是否可用取决于你的账户权限和供应商支持范围。
115
+
116
+ ### 2. 启动交互界面
117
+
118
+ 在想要处理的工作目录中执行:
119
+
120
+ ```bash
121
+ ouro
122
+ ```
123
+
124
+ 输入任务即可开始。`Ctrl+P` 打开操作菜单,`/help` 查看快捷键与命令帮助。
125
+
126
+ ### 3. 尝试命令行任务
127
+
128
+ ```bash
129
+ # 文本输出
130
+ ouro run --print "说明当前目录的用途,并给出整理建议"
131
+
132
+ # JSON 输出,便于脚本集成
133
+ ouro run --json "总结本次任务"
134
+
135
+ # 查看帮助
136
+ ouro --help
137
+ ```
138
+
139
+ 只想先检查安装是否正常,可以在独立数据目录运行离线演示,无需 API Key:
140
+
141
+ ```bash
142
+ ouro run --print --home ./.ouro-demo "hello"
143
+ ```
144
+
145
+ ## 按需增加能力
146
+
147
+ OURO 提供稳定的运行框架,插件作为独立拓展包接入。你可以从工具和 Skills 开始,也可以通过插件定制智能体的执行方式、模型接入、服务协作和后台任务。
148
+
149
+ 插件管理入口可通过 `ouro plugin --help` 查看。请只安装并启用你信任的插件;插件和工具可能读写文件、执行程序或连接外部服务。
150
+
151
+ ## 数据保存在哪里
152
+
153
+ 默认数据目录为用户主目录下的 `.ouro`,用于保存配置、会话及运行记录。可以用 `--home` 为不同用途选择独立目录:
154
+
155
+ ```bash
156
+ ouro --home ./.ouro-work
157
+ ouro session list --home ./.ouro-work
158
+ ```
159
+
160
+ 目录选择顺序为:`--home`、环境变量 `OURO_HOME`、默认的 `~/.ouro`。本地保存不代表所有处理都离线;模型请求会发送到你配置的服务。
161
+
162
+ 升级前建议备份数据。当前版本会明确拒绝不受支持的旧数据格式,不会自动迁移或清空原数据;需要隔离体验时可使用新的 `--home` 目录。
163
+
164
+ ## 升级
165
+
166
+ 使用 uv 安装:
167
+
168
+ ```bash
169
+ uv tool upgrade ouro-agent
170
+ ```
171
+
172
+ 使用 pip 安装:
173
+
174
+ ```bash
175
+ python -m pip install --upgrade ouro-agent
176
+ ```
177
+
178
+ ## 文档与源码
179
+
180
+ 完整源码位于 [GitHub](https://github.com/djsaber/OURO),安装包和源码包发布在 [PyPI](https://pypi.org/project/ouro-agent/)。
181
+
182
+ - [文档入口](https://github.com/djsaber/OURO/blob/main/docs/README.md):使用指南、插件开发、配置说明与运行契约。
183
+ - [更新记录](https://github.com/djsaber/OURO/blob/main/CHANGELOG.md):各版本的主要改进与兼容性说明。
184
+ - [贡献指南](https://github.com/djsaber/OURO/blob/main/CONTRIBUTING.md):开发流程与验证要求。
185
+ - [问题反馈](https://github.com/djsaber/OURO/issues):报告问题或提出改进建议。
186
+
187
+ 参与开发:
188
+
189
+ ```bash
190
+ git clone https://github.com/djsaber/OURO.git
191
+ cd OURO
192
+ uv sync --frozen --all-groups
193
+ uv run --frozen ouro
194
+ ```
195
+
196
+ ## 开源协议
197
+
198
+ OURO 是完全开源的项目,采用 [MIT License](https://github.com/djsaber/OURO/blob/main/LICENSE),允许使用、修改与分发。欢迎参与改进,也欢迎构建适合自己的插件。
@@ -0,0 +1,168 @@
1
+ # OURO
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/ouro-agent?color=2563eb)](https://pypi.org/project/ouro-agent/)
4
+ [![Python 3.14+](https://img.shields.io/badge/Python-3.14%2B-3776ab)](https://www.python.org/downloads/)
5
+ [![MIT License](https://img.shields.io/badge/License-MIT-16a34a)](https://github.com/djsaber/OURO/blob/main/LICENSE)
6
+
7
+ **本地优先、可灵活拓展的个人智能体。**
8
+
9
+ OURO 让你在终端中与模型协作,处理文件、调用工具、管理会话和执行持续任务。它提供全屏交互界面,也可以通过命令行完成单次任务或输出 JSON。会话与配置保存在本地,模型服务由你选择。
10
+
11
+ 插件是 OURO 的核心拓展机制:除了工具、Skills 和 MCP,还可以拓展模型接入、智能体运行方式、后台任务及插件间协作,按需安装、启用和停用。
12
+
13
+ ![OURO v0.2.0 的终端交互界面](https://raw.githubusercontent.com/djsaber/OURO/v0.2.0/docs/assets/tui-welcome.png)
14
+
15
+ *OURO v0.2.0 实际界面 · Horizon 欢迎页 · 尚未配置模型的初始状态*
16
+
17
+ [使用文档](https://github.com/djsaber/OURO/blob/main/docs/README.md) · [版本记录](https://github.com/djsaber/OURO/blob/main/CHANGELOG.md) · [源码](https://github.com/djsaber/OURO) · [问题反馈](https://github.com/djsaber/OURO/issues)
18
+
19
+ ## 为你的工作方式而拓展
20
+
21
+ | 能力 | 你可以做什么 |
22
+ | --- | --- |
23
+ | 终端协作 | 在全屏 TUI 中交互,或通过 CLI 完成单次任务、输出 JSON。 |
24
+ | 本地资料 | 读取、编辑和搜索文件,使用附件及模型支持的图片、音频或视频输入。 |
25
+ | 持续任务 | 保存和恢复会话,通过子智能体、Goal / Plan 拆分任务、管理目标与计划。 |
26
+ | 模型与工具 | 配置多家模型供应商、兼容接口和 MCP 服务,为任务选择合适能力。 |
27
+ | 可组合插件 | 按需拓展工具、Skills、模型接入、智能体循环、插件协作与后台调度。 |
28
+ | 执行控制 | 通过权限、人工审批、取消操作和运行预算控制执行,查看用量与历史。 |
29
+
30
+ ## 安装
31
+
32
+ OURO 需要 **Python 3.14 或更高版本**。建议使用支持 Unicode 的现代终端。
33
+
34
+ ### 使用 uv 安装(推荐)
35
+
36
+ 安装 [uv](https://docs.astral.sh/uv/getting-started/installation/) 后执行:
37
+
38
+ ```bash
39
+ uv tool install --python 3.14 ouro-agent
40
+ ouro --version
41
+ ```
42
+
43
+ uv 会为 OURO 创建独立环境,并按需安装所需 Python。若终端提示找不到 `ouro`,执行 `uv tool update-shell` 后重新打开终端。
44
+
45
+ ### 使用 pip 安装
46
+
47
+ 如果已经有 Python 3.14+ 环境,也可以安装到自己的虚拟环境中:
48
+
49
+ ```bash
50
+ python -m pip install ouro-agent
51
+ ouro --version
52
+ ```
53
+
54
+ PyPI 包名是 `ouro-agent`,安装后的命令是 `ouro`。
55
+
56
+ ## 第一次使用
57
+
58
+ ### 1. 配置模型
59
+
60
+ 使用真实模型需要对应供应商的账户与凭据。OURO 不附带模型权重或 API 额度;尚未配置供应商时,内置 Faux 仅提供离线演示,不是真实模型。
61
+
62
+ 下面以 OpenAI API 为例。先在当前终端设置自己的 API Key:
63
+
64
+ **Windows PowerShell:**
65
+
66
+ ```powershell
67
+ $env:OPENAI_API_KEY = "替换为你的 API Key"
68
+ ```
69
+
70
+ **macOS / Linux(bash 或 zsh):**
71
+
72
+ ```bash
73
+ export OPENAI_API_KEY="替换为你的 API Key"
74
+ ```
75
+
76
+ 再添加供应商并设为默认:
77
+
78
+ ```bash
79
+ ouro provider add "OpenAI" --type openai --api-key-env OPENAI_API_KEY --default
80
+ ```
81
+
82
+ 以上环境变量设置只对当前终端及其子进程生效。重新打开终端后,需要重新设置,或通过系统环境变量管理保存。OURO 配置中记录的是变量名。
83
+
84
+ 你也可以通过 `ouro provider templates` 查看其他内置供应商模板,或在交互界面按 `Ctrl+P`,进入 `Manage providers` 管理供应商。模型是否可用取决于你的账户权限和供应商支持范围。
85
+
86
+ ### 2. 启动交互界面
87
+
88
+ 在想要处理的工作目录中执行:
89
+
90
+ ```bash
91
+ ouro
92
+ ```
93
+
94
+ 输入任务即可开始。`Ctrl+P` 打开操作菜单,`/help` 查看快捷键与命令帮助。
95
+
96
+ ### 3. 尝试命令行任务
97
+
98
+ ```bash
99
+ # 文本输出
100
+ ouro run --print "说明当前目录的用途,并给出整理建议"
101
+
102
+ # JSON 输出,便于脚本集成
103
+ ouro run --json "总结本次任务"
104
+
105
+ # 查看帮助
106
+ ouro --help
107
+ ```
108
+
109
+ 只想先检查安装是否正常,可以在独立数据目录运行离线演示,无需 API Key:
110
+
111
+ ```bash
112
+ ouro run --print --home ./.ouro-demo "hello"
113
+ ```
114
+
115
+ ## 按需增加能力
116
+
117
+ OURO 提供稳定的运行框架,插件作为独立拓展包接入。你可以从工具和 Skills 开始,也可以通过插件定制智能体的执行方式、模型接入、服务协作和后台任务。
118
+
119
+ 插件管理入口可通过 `ouro plugin --help` 查看。请只安装并启用你信任的插件;插件和工具可能读写文件、执行程序或连接外部服务。
120
+
121
+ ## 数据保存在哪里
122
+
123
+ 默认数据目录为用户主目录下的 `.ouro`,用于保存配置、会话及运行记录。可以用 `--home` 为不同用途选择独立目录:
124
+
125
+ ```bash
126
+ ouro --home ./.ouro-work
127
+ ouro session list --home ./.ouro-work
128
+ ```
129
+
130
+ 目录选择顺序为:`--home`、环境变量 `OURO_HOME`、默认的 `~/.ouro`。本地保存不代表所有处理都离线;模型请求会发送到你配置的服务。
131
+
132
+ 升级前建议备份数据。当前版本会明确拒绝不受支持的旧数据格式,不会自动迁移或清空原数据;需要隔离体验时可使用新的 `--home` 目录。
133
+
134
+ ## 升级
135
+
136
+ 使用 uv 安装:
137
+
138
+ ```bash
139
+ uv tool upgrade ouro-agent
140
+ ```
141
+
142
+ 使用 pip 安装:
143
+
144
+ ```bash
145
+ python -m pip install --upgrade ouro-agent
146
+ ```
147
+
148
+ ## 文档与源码
149
+
150
+ 完整源码位于 [GitHub](https://github.com/djsaber/OURO),安装包和源码包发布在 [PyPI](https://pypi.org/project/ouro-agent/)。
151
+
152
+ - [文档入口](https://github.com/djsaber/OURO/blob/main/docs/README.md):使用指南、插件开发、配置说明与运行契约。
153
+ - [更新记录](https://github.com/djsaber/OURO/blob/main/CHANGELOG.md):各版本的主要改进与兼容性说明。
154
+ - [贡献指南](https://github.com/djsaber/OURO/blob/main/CONTRIBUTING.md):开发流程与验证要求。
155
+ - [问题反馈](https://github.com/djsaber/OURO/issues):报告问题或提出改进建议。
156
+
157
+ 参与开发:
158
+
159
+ ```bash
160
+ git clone https://github.com/djsaber/OURO.git
161
+ cd OURO
162
+ uv sync --frozen --all-groups
163
+ uv run --frozen ouro
164
+ ```
165
+
166
+ ## 开源协议
167
+
168
+ OURO 是完全开源的项目,采用 [MIT License](https://github.com/djsaber/OURO/blob/main/LICENSE),允许使用、修改与分发。欢迎参与改进,也欢迎构建适合自己的插件。
@@ -0,0 +1,49 @@
1
+ # Release Process
2
+
3
+ Release versions are owned by `pyproject.toml`, `ouro.__version__`, the lockfile, and release tags.
4
+ Completion of a feature milestone does not change those metadata automatically. Supported interfaces
5
+ and persistence formats are defined in the [current specs](docs/specs/README.md).
6
+ Unsupported stored formats fail explicitly; the current implementation does not provide historical
7
+ format adapters or migration commands.
8
+
9
+ OURO uses the [MIT License](LICENSE). Release metadata must declare MIT, and both wheel and source
10
+ archives must include the license text. Dependencies retain their own licenses.
11
+
12
+ For a release:
13
+
14
+ 1. Update [CHANGELOG.md](CHANGELOG.md) for every version iteration. Keep entries in reverse
15
+ chronological order with a version, release date and concise user-facing improvements. Summarize
16
+ material compatibility impact, validation scope and known limitations; link to detailed records
17
+ instead of including implementation details, test logs or a commit-by-commit history. Preserve
18
+ earlier entries and label historical development versions without inventing release dates.
19
+ Verify the [capability overview](docs/overview.md) and affected specs against the release candidate.
20
+ 2. Update `pyproject.toml` and `ouro.__version__`, align plugin host-version ranges, and regenerate `uv.lock`.
21
+ 3. Run the full commands from `CONTRIBUTING.md`, including the coverage floor.
22
+ 4. Build with `uv build` and inspect both wheel and source archive for secrets and unintended files.
23
+ 5. Test installation and `ouro --help` from a clean environment.
24
+ 6. Commit the release metadata, create an annotated `vX.Y.Z` tag, and publish release notes from
25
+ the reviewed changelog entry. Keep guides and specs focused on current behavior; release history
26
+ belongs in the changelog.
27
+
28
+ The public package index is PyPI, under the distribution name `ouro-agent`. Local publication uses
29
+ an API token supplied through `UV_PUBLISH_TOKEN`; do not place credentials in source files, command
30
+ arguments or release notes. CI publication and signing are not automated; configure Trusted Publishing
31
+ before adding unattended CI uploads.
32
+
33
+ Before uploading, validate the user-facing README with `twine check --strict`, verify that its examples
34
+ work from an installed distribution, and use absolute links that also work on PyPI. Keep screenshots
35
+ in `docs/assets/`, capture real application state without private data, and link the published image
36
+ through an immutable release tag. Verify that all public links resolve before uploading. Keep the exact
37
+ version's wheel and source archive aligned with its release commit and tag. Pass those two filenames
38
+ explicitly to `uv publish` so older files in `dist/` are not uploaded. After uploading, verify PyPI's
39
+ version metadata, description and file hashes, and check installation from the published index.
40
+
41
+ During `0.x` development, use a new minor version for a capability milestone or incompatible public
42
+ contract change, and a patch version for compatible fixes. Plugin API, worker protocol, package and
43
+ stored-data versions remain separate contracts; changing the product version does not migrate them.
44
+ Keep plugin host-version ranges in builtins, scaffolds, examples and fixtures aligned with the release.
45
+ Runtime version reporting and installation provenance use `ouro.__version__`.
46
+
47
+ A release commit records the reviewed changes; an annotated `vX.Y.Z` tag identifies that exact
48
+ snapshot. A separate release branch is only needed when maintaining parallel release lines. Local
49
+ commits and tags do not push to a remote or publish a package.
@@ -0,0 +1,32 @@
1
+ # Security Policy
2
+
3
+ ## Supported code
4
+
5
+ Security fixes target the current default branch. Any maintained release branches must be
6
+ explicitly identified in their release notes; this policy does not infer support from the package
7
+ version or a completed feature milestone. Older snapshots are not maintained as separate security branches.
8
+
9
+ ## Reporting a vulnerability
10
+
11
+ Do not open a public issue for a suspected vulnerability. Prefer the repository's private
12
+ GitHub Security Advisory flow. If that facility is unavailable, contact a maintainer through a
13
+ private channel and include the affected revision, impact, reproduction steps, and any proposed
14
+ mitigation. Avoid including real credentials or private user data in the report.
15
+
16
+ Maintainers should acknowledge the report, reproduce and classify it, prepare a regression test
17
+ and fix, and coordinate disclosure after supported users have an upgrade path. Exact response
18
+ times depend on maintainer availability and are not guaranteed.
19
+
20
+ ## Security boundaries
21
+
22
+ - `deny` is the hard tool-disable policy; `approval` is a human authorization boundary.
23
+ - Workspace-only mode constrains built-in file paths and detected-shell working directories. It is not an
24
+ operating-system sandbox: an approved shell command can still access resources allowed to the
25
+ OURO process.
26
+ - Prefer environment-backed credential references. Inline credentials are stored as local plain
27
+ text even though public DTO and CLI output redact them.
28
+ - MCP servers, plugins, Skills, imported resources, and model-produced tool arguments are
29
+ untrusted input. Review their provenance and permissions before enabling them.
30
+
31
+ Reports involving credential disclosure, path escape, command execution without authorization,
32
+ resource integrity bypass, or cross-Session state corruption should be treated as high priority.
@@ -0,0 +1,10 @@
1
+ # 开发工具
2
+
3
+ 本目录保存开发和验证工具;产品说明、领域规格和规划统一从[文档中心](../docs/README.md)进入。
4
+
5
+ | 目录 | 用途 | 使用前提 |
6
+ |---|---|---|
7
+ | [benchmarks](benchmarks/README.md) | 本地性能测量、存储同步和响应性采样 | 使用临时数据,记录平台、规模和样本数 |
8
+ | [probes](probes/README.md) | 显式授权的订阅协议与真实服务验证 | 人工参与授权,避免保存或输出秘密 |
9
+
10
+ 基准结果不等于真实终端或外部服务的性能保证。联网探针与普通离线测试分开运行;开发门禁见[贡献指南](../CONTRIBUTING.md)。