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.
- ouro_agent-0.2.0/.github/workflows/ci.yml +81 -0
- ouro_agent-0.2.0/.gitignore +35 -0
- ouro_agent-0.2.0/CHANGELOG.md +27 -0
- ouro_agent-0.2.0/CONTRIBUTING.md +50 -0
- ouro_agent-0.2.0/LICENSE +21 -0
- ouro_agent-0.2.0/PKG-INFO +198 -0
- ouro_agent-0.2.0/README.md +168 -0
- ouro_agent-0.2.0/RELEASING.md +49 -0
- ouro_agent-0.2.0/SECURITY.md +32 -0
- ouro_agent-0.2.0/dev/README.md +10 -0
- ouro_agent-0.2.0/dev/benchmarks/README.md +104 -0
- ouro_agent-0.2.0/dev/benchmarks/harness_lifecycle.py +242 -0
- ouro_agent-0.2.0/dev/benchmarks/message_truncation.py +69 -0
- ouro_agent-0.2.0/dev/benchmarks/plugin_commands.py +281 -0
- ouro_agent-0.2.0/dev/benchmarks/plugin_lifecycle.py +124 -0
- ouro_agent-0.2.0/dev/benchmarks/plugin_scale.py +243 -0
- ouro_agent-0.2.0/dev/benchmarks/plugin_startup_graph.py +93 -0
- ouro_agent-0.2.0/dev/benchmarks/run_resources.py +238 -0
- ouro_agent-0.2.0/dev/benchmarks/session_harness_reads.py +98 -0
- ouro_agent-0.2.0/dev/benchmarks/session_pipeline.py +384 -0
- ouro_agent-0.2.0/dev/benchmarks/sqlite_sync.py +131 -0
- ouro_agent-0.2.0/dev/benchmarks/startup.py +80 -0
- ouro_agent-0.2.0/dev/benchmarks/text_wrapping.py +115 -0
- ouro_agent-0.2.0/dev/benchmarks/welcome.py +52 -0
- ouro_agent-0.2.0/dev/benchmarks/welcome_input.py +107 -0
- ouro_agent-0.2.0/dev/benchmarks/worker_results.py +166 -0
- ouro_agent-0.2.0/dev/probes/README.md +160 -0
- ouro_agent-0.2.0/dev/probes/__init__.py +1 -0
- ouro_agent-0.2.0/dev/probes/codex_adapter.py +363 -0
- ouro_agent-0.2.0/dev/probes/codex_oauth.py +161 -0
- ouro_agent-0.2.0/dev/probes/codex_responses.py +298 -0
- ouro_agent-0.2.0/dev/probes/openai_codex.py +207 -0
- ouro_agent-0.2.0/docs/README.md +45 -0
- ouro_agent-0.2.0/docs/architecture/README.md +131 -0
- ouro_agent-0.2.0/docs/architecture/authentication.md +174 -0
- ouro_agent-0.2.0/docs/architecture/file-input.md +114 -0
- ouro_agent-0.2.0/docs/architecture/session-continuity.md +83 -0
- ouro_agent-0.2.0/docs/architecture/tool-results.md +100 -0
- ouro_agent-0.2.0/docs/architecture/tui-rendering.md +431 -0
- ouro_agent-0.2.0/docs/assets/tui-welcome.png +0 -0
- ouro_agent-0.2.0/docs/development/coding-guidelines.en.md +128 -0
- ouro_agent-0.2.0/docs/development/coding-guidelines.zh-CN.md +128 -0
- ouro_agent-0.2.0/docs/development/documentation.md +42 -0
- ouro_agent-0.2.0/docs/development/plugin-development.md +690 -0
- ouro_agent-0.2.0/docs/development/welcome-styles.md +173 -0
- ouro_agent-0.2.0/docs/guides/automated-tasks.md +62 -0
- ouro_agent-0.2.0/docs/guides/configuration.md +188 -0
- ouro_agent-0.2.0/docs/guides/data-transfer.md +59 -0
- ouro_agent-0.2.0/docs/guides/mcp.md +47 -0
- ouro_agent-0.2.0/docs/guides/plugins.md +69 -0
- ouro_agent-0.2.0/docs/guides/providers.md +175 -0
- ouro_agent-0.2.0/docs/guides/running.md +66 -0
- ouro_agent-0.2.0/docs/guides/session-history.md +49 -0
- ouro_agent-0.2.0/docs/guides/sessions.md +90 -0
- ouro_agent-0.2.0/docs/guides/skills.md +43 -0
- ouro_agent-0.2.0/docs/guides/subscriptions.md +70 -0
- ouro_agent-0.2.0/docs/guides/usage.md +42 -0
- ouro_agent-0.2.0/docs/overview.md +62 -0
- ouro_agent-0.2.0/docs/plans/README.md +22 -0
- ouro_agent-0.2.0/docs/plans/advanced-agents.md +103 -0
- ouro_agent-0.2.0/docs/plans/archive/2026-09-24-refactoring-review.md +50 -0
- ouro_agent-0.2.0/docs/plans/archive/2026-10-07-code-review.md +130 -0
- ouro_agent-0.2.0/docs/plans/archive/2026-10-08-session-continuity.md +258 -0
- ouro_agent-0.2.0/docs/plans/archive/2026-10-12-plugin-platform-refactoring.md +736 -0
- ouro_agent-0.2.0/docs/plans/archive/2026-10-12-plugin-system-review.md +489 -0
- ouro_agent-0.2.0/docs/plans/archive/README.md +11 -0
- ouro_agent-0.2.0/docs/plans/attachment-validation.md +24 -0
- ouro_agent-0.2.0/docs/plans/desktop-host.md +87 -0
- ouro_agent-0.2.0/docs/plans/performance.md +54 -0
- ouro_agent-0.2.0/docs/plans/platform.md +50 -0
- ouro_agent-0.2.0/docs/plans/roadmap.md +104 -0
- ouro_agent-0.2.0/docs/plans/subscription-validation.md +27 -0
- ouro_agent-0.2.0/docs/specs/README.md +61 -0
- ouro_agent-0.2.0/docs/specs/afk.md +137 -0
- ouro_agent-0.2.0/docs/specs/attachments.md +220 -0
- ouro_agent-0.2.0/docs/specs/authorization.md +88 -0
- ouro_agent-0.2.0/docs/specs/automated-tasks.md +409 -0
- ouro_agent-0.2.0/docs/specs/cli-and-hosts.md +220 -0
- ouro_agent-0.2.0/docs/specs/context-and-compaction.md +131 -0
- ouro_agent-0.2.0/docs/specs/credentials.md +60 -0
- ouro_agent-0.2.0/docs/specs/data-transfer.md +120 -0
- ouro_agent-0.2.0/docs/specs/goal-plugin.md +666 -0
- ouro_agent-0.2.0/docs/specs/mcp.md +123 -0
- ouro_agent-0.2.0/docs/specs/performance.md +192 -0
- ouro_agent-0.2.0/docs/specs/plugins.md +1292 -0
- ouro_agent-0.2.0/docs/specs/provider-authentication.md +80 -0
- ouro_agent-0.2.0/docs/specs/provider-configuration.md +477 -0
- ouro_agent-0.2.0/docs/specs/provider-presets.md +274 -0
- ouro_agent-0.2.0/docs/specs/provider-protocols.md +139 -0
- ouro_agent-0.2.0/docs/specs/provider-templates.md +209 -0
- ouro_agent-0.2.0/docs/specs/request-authentication.md +98 -0
- ouro_agent-0.2.0/docs/specs/resources-and-supervision.md +102 -0
- ouro_agent-0.2.0/docs/specs/responses-codec.md +127 -0
- ouro_agent-0.2.0/docs/specs/runtime.md +392 -0
- ouro_agent-0.2.0/docs/specs/session-observation.md +240 -0
- ouro_agent-0.2.0/docs/specs/session-persistence.md +325 -0
- ouro_agent-0.2.0/docs/specs/session-undo.md +430 -0
- ouro_agent-0.2.0/docs/specs/skills.md +111 -0
- ouro_agent-0.2.0/docs/specs/subagents.md +1044 -0
- ouro_agent-0.2.0/docs/specs/subscription-authentication.md +183 -0
- ouro_agent-0.2.0/docs/specs/tools-and-interactions.md +207 -0
- ouro_agent-0.2.0/docs/specs/tui.md +421 -0
- ouro_agent-0.2.0/docs/specs/usage-and-billing.md +68 -0
- ouro_agent-0.2.0/examples/plugins/README.md +42 -0
- ouro_agent-0.2.0/examples/plugins/declarative-skill/.ouro-plugin/plugin.json +28 -0
- ouro_agent-0.2.0/examples/plugins/declarative-skill/skills/daily-review/SKILL.md +7 -0
- ouro_agent-0.2.0/examples/plugins/delegating-driver/.ouro-plugin/plugin.json +11 -0
- ouro_agent-0.2.0/examples/plugins/delegating-driver/README.md +28 -0
- ouro_agent-0.2.0/examples/plugins/delegating-driver/delegating_driver_plugin.py +63 -0
- ouro_agent-0.2.0/examples/plugins/delegating-driver/worker.py +41 -0
- ouro_agent-0.2.0/examples/plugins/dynamic-records/.ouro-plugin/plugin.json +14 -0
- ouro_agent-0.2.0/examples/plugins/dynamic-records/README.md +28 -0
- ouro_agent-0.2.0/examples/plugins/dynamic-records/dynamic_records_plugin.py +86 -0
- ouro_agent-0.2.0/examples/plugins/dynamic-records/worker.py +40 -0
- ouro_agent-0.2.0/examples/plugins/faux-provider/.ouro-plugin/plugin.json +10 -0
- ouro_agent-0.2.0/examples/plugins/faux-provider/README.md +31 -0
- ouro_agent-0.2.0/examples/plugins/faux-provider/faux_provider_plugin.py +49 -0
- ouro_agent-0.2.0/examples/plugins/faux-provider/worker.py +35 -0
- ouro_agent-0.2.0/examples/plugins/inprocess-command/.ouro-plugin/plugin.json +29 -0
- ouro_agent-0.2.0/examples/plugins/inprocess-command/inprocess_command_plugin.py +31 -0
- ouro_agent-0.2.0/examples/plugins/inprocess-observer/.ouro-plugin/plugin.json +30 -0
- ouro_agent-0.2.0/examples/plugins/inprocess-observer/observer_example_plugin.py +35 -0
- ouro_agent-0.2.0/examples/plugins/inprocess-prompt-policy/.ouro-plugin/plugin.json +34 -0
- ouro_agent-0.2.0/examples/plugins/inprocess-prompt-policy/prompt_policy_example_plugin.py +36 -0
- ouro_agent-0.2.0/examples/plugins/memory-client/.ouro-plugin/plugin.json +14 -0
- ouro_agent-0.2.0/examples/plugins/memory-client/worker.py +52 -0
- ouro_agent-0.2.0/examples/plugins/memory-service/.ouro-plugin/plugin.json +17 -0
- ouro_agent-0.2.0/examples/plugins/memory-service/worker.py +83 -0
- ouro_agent-0.2.0/examples/plugins/model-review/.ouro-plugin/plugin.json +16 -0
- ouro_agent-0.2.0/examples/plugins/model-review/README.md +16 -0
- ouro_agent-0.2.0/examples/plugins/model-review/model_review_plugin.py +47 -0
- ouro_agent-0.2.0/examples/plugins/model-review/worker.py +44 -0
- ouro_agent-0.2.0/examples/plugins/review-driver/.ouro-plugin/plugin.json +17 -0
- ouro_agent-0.2.0/examples/plugins/review-driver/README.md +30 -0
- ouro_agent-0.2.0/examples/plugins/review-driver/review_driver_plugin.py +57 -0
- ouro_agent-0.2.0/examples/plugins/review-driver/worker.py +53 -0
- ouro_agent-0.2.0/examples/plugins/review-service/.ouro-plugin/plugin.json +17 -0
- ouro_agent-0.2.0/examples/plugins/review-service/README.md +45 -0
- ouro_agent-0.2.0/examples/plugins/review-service/review_service_plugin.py +43 -0
- ouro_agent-0.2.0/examples/plugins/review-service/worker.py +43 -0
- ouro_agent-0.2.0/examples/plugins/scheduled-sync/.ouro-plugin/plugin.json +19 -0
- ouro_agent-0.2.0/examples/plugins/scheduled-sync/README.md +57 -0
- ouro_agent-0.2.0/examples/plugins/scheduled-sync/maintain.py +57 -0
- ouro_agent-0.2.0/examples/plugins/scheduled-sync/scheduled_sync_plugin.py +120 -0
- ouro_agent-0.2.0/examples/plugins/scheduled-sync/worker.py +106 -0
- ouro_agent-0.2.0/examples/plugins/worker-exec/.ouro-plugin/plugin.json +11 -0
- ouro_agent-0.2.0/examples/plugins/worker-exec/worker.py +53 -0
- ouro_agent-0.2.0/examples/plugins/worker-tool/.ouro-plugin/plugin.json +37 -0
- ouro_agent-0.2.0/examples/plugins/worker-tool/worker.py +54 -0
- ouro_agent-0.2.0/ouro/__init__.py +5 -0
- ouro_agent-0.2.0/ouro/application/__init__.py +155 -0
- ouro_agent-0.2.0/ouro/application/agent_definitions.py +356 -0
- ouro_agent-0.2.0/ouro/application/agent_execution.py +179 -0
- ouro_agent-0.2.0/ouro/application/agent_models.py +211 -0
- ouro_agent-0.2.0/ouro/application/agent_recovery.py +492 -0
- ouro_agent-0.2.0/ouro/application/agent_tree.py +520 -0
- ouro_agent-0.2.0/ouro/application/agents.py +2464 -0
- ouro_agent-0.2.0/ouro/application/compaction.py +1706 -0
- ouro_agent-0.2.0/ouro/application/configuration.py +1275 -0
- ouro_agent-0.2.0/ouro/application/configuration_models.py +449 -0
- ouro_agent-0.2.0/ouro/application/configuration_transfer.py +119 -0
- ouro_agent-0.2.0/ouro/application/configuration_views.py +261 -0
- ouro_agent-0.2.0/ouro/application/data_transfer.py +161 -0
- ouro_agent-0.2.0/ouro/application/dto.py +38 -0
- ouro_agent-0.2.0/ouro/application/event_models.py +199 -0
- ouro_agent-0.2.0/ouro/application/events.py +562 -0
- ouro_agent-0.2.0/ouro/application/file_inputs.py +434 -0
- ouro_agent-0.2.0/ouro/application/harness.py +47 -0
- ouro_agent-0.2.0/ouro/application/model_generation.py +127 -0
- ouro_agent-0.2.0/ouro/application/model_requests.py +303 -0
- ouro_agent-0.2.0/ouro/application/models.py +329 -0
- ouro_agent-0.2.0/ouro/application/observers.py +343 -0
- ouro_agent-0.2.0/ouro/application/plugin_commands.py +329 -0
- ouro_agent-0.2.0/ouro/application/plugin_models.py +148 -0
- ouro_agent-0.2.0/ouro/application/plugins.py +1169 -0
- ouro_agent-0.2.0/ouro/application/prompt_context.py +31 -0
- ouro_agent-0.2.0/ouro/application/provider_auth.py +368 -0
- ouro_agent-0.2.0/ouro/application/provider_auth_bindings.py +73 -0
- ouro_agent-0.2.0/ouro/application/provider_auth_models.py +42 -0
- ouro_agent-0.2.0/ouro/application/queued_inputs.py +695 -0
- ouro_agent-0.2.0/ouro/application/recovery.py +241 -0
- ouro_agent-0.2.0/ouro/application/resource_models.py +46 -0
- ouro_agent-0.2.0/ouro/application/resources.py +345 -0
- ouro_agent-0.2.0/ouro/application/run_continuations.py +696 -0
- ouro_agent-0.2.0/ouro/application/run_drivers.py +422 -0
- ouro_agent-0.2.0/ouro/application/run_ownership.py +237 -0
- ouro_agent-0.2.0/ouro/application/run_resources.py +49 -0
- ouro_agent-0.2.0/ouro/application/run_turns.py +45 -0
- ouro_agent-0.2.0/ouro/application/runs.py +1291 -0
- ouro_agent-0.2.0/ouro/application/runtime.py +4528 -0
- ouro_agent-0.2.0/ouro/application/runtime_activity.py +897 -0
- ouro_agent-0.2.0/ouro/application/runtime_configuration.py +139 -0
- ouro_agent-0.2.0/ouro/application/runtime_environment.py +42 -0
- ouro_agent-0.2.0/ouro/application/session_controls.py +613 -0
- ouro_agent-0.2.0/ouro/application/session_editing.py +204 -0
- ouro_agent-0.2.0/ouro/application/session_event_stream.py +98 -0
- ouro_agent-0.2.0/ouro/application/session_history.py +328 -0
- ouro_agent-0.2.0/ouro/application/session_models.py +321 -0
- ouro_agent-0.2.0/ouro/application/session_recovery.py +395 -0
- ouro_agent-0.2.0/ouro/application/session_transfer.py +364 -0
- ouro_agent-0.2.0/ouro/application/sessions.py +1088 -0
- ouro_agent-0.2.0/ouro/application/skill_activations.py +104 -0
- ouro_agent-0.2.0/ouro/application/supervisor.py +1421 -0
- ouro_agent-0.2.0/ouro/application/supervisor_models.py +162 -0
- ouro_agent-0.2.0/ouro/application/task_execution.py +470 -0
- ouro_agent-0.2.0/ouro/application/task_scheduler.py +118 -0
- ouro_agent-0.2.0/ouro/application/tasks.py +348 -0
- ouro_agent-0.2.0/ouro/application/tool_calls.py +1895 -0
- ouro_agent-0.2.0/ouro/application/usage.py +265 -0
- ouro_agent-0.2.0/ouro/auth/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/auth/authorization.py +106 -0
- ouro_agent-0.2.0/ouro/auth/commit.py +43 -0
- ouro_agent-0.2.0/ouro/auth/contracts.py +163 -0
- ouro_agent-0.2.0/ouro/auth/credentials.py +288 -0
- ouro_agent-0.2.0/ouro/auth/driver_contracts.py +115 -0
- ouro_agent-0.2.0/ouro/auth/drivers/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/auth/drivers/openai_callback.py +96 -0
- ouro_agent-0.2.0/ouro/auth/drivers/openai_codex.py +121 -0
- ouro_agent-0.2.0/ouro/auth/drivers/openai_errors.py +31 -0
- ouro_agent-0.2.0/ouro/auth/drivers/openai_tokens.py +213 -0
- ouro_agent-0.2.0/ouro/auth/file_permissions.py +93 -0
- ouro_agent-0.2.0/ouro/auth/managed_requests.py +148 -0
- ouro_agent-0.2.0/ouro/auth/request_auth.py +46 -0
- ouro_agent-0.2.0/ouro/auth/store.py +121 -0
- ouro_agent-0.2.0/ouro/automation/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/automation/file_records.py +66 -0
- ouro_agent-0.2.0/ouro/automation/local_files.py +383 -0
- ouro_agent-0.2.0/ouro/automation/plugin_tasks.py +32 -0
- ouro_agent-0.2.0/ouro/automation/repository.py +37 -0
- ouro_agent-0.2.0/ouro/automation/schedule.py +130 -0
- ouro_agent-0.2.0/ouro/automation/sqlite.py +279 -0
- ouro_agent-0.2.0/ouro/billing/__init__.py +6 -0
- ouro_agent-0.2.0/ouro/billing/base.py +49 -0
- ouro_agent-0.2.0/ouro/billing/local.py +353 -0
- ouro_agent-0.2.0/ouro/billing/queries.py +123 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/__init__.py +14 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/README.md +101 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/__init__.py +3 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/agent_context_plugin.py +161 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/definition.py +53 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/agent_context/instructions.py +20 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/README.md +131 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/__init__.py +3 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/commands.py +346 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/definition.py +151 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/goal_plugin.py +527 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/prompts.py +104 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/goal/state.py +150 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/plan/README.md +119 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/plan/__init__.py +3 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/plan/definition.py +116 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/plan/plan_plugin.py +558 -0
- ouro_agent-0.2.0/ouro/builtin_plugins/plan/state.py +62 -0
- ouro_agent-0.2.0/ouro/cli/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/cli/agent_commands.py +274 -0
- ouro_agent-0.2.0/ouro/cli/approval_commands.py +131 -0
- ouro_agent-0.2.0/ouro/cli/config_commands.py +489 -0
- ouro_agent-0.2.0/ouro/cli/context_output.py +65 -0
- ouro_agent-0.2.0/ouro/cli/data_commands.py +20 -0
- ouro_agent-0.2.0/ouro/cli/errors.py +13 -0
- ouro_agent-0.2.0/ouro/cli/main.py +854 -0
- ouro_agent-0.2.0/ouro/cli/mcp_commands.py +190 -0
- ouro_agent-0.2.0/ouro/cli/parser.py +1931 -0
- ouro_agent-0.2.0/ouro/cli/plugin_commands.py +375 -0
- ouro_agent-0.2.0/ouro/cli/prompt_commands.py +86 -0
- ouro_agent-0.2.0/ouro/cli/provider_auth_commands.py +159 -0
- ouro_agent-0.2.0/ouro/cli/provider_commands.py +820 -0
- ouro_agent-0.2.0/ouro/cli/resource_commands.py +194 -0
- ouro_agent-0.2.0/ouro/cli/run.py +232 -0
- ouro_agent-0.2.0/ouro/cli/session_commands.py +672 -0
- ouro_agent-0.2.0/ouro/cli/skills.py +331 -0
- ouro_agent-0.2.0/ouro/cli/usage_commands.py +293 -0
- ouro_agent-0.2.0/ouro/config/__init__.py +146 -0
- ouro_agent-0.2.0/ouro/config/agents.py +183 -0
- ouro_agent-0.2.0/ouro/config/compaction.py +228 -0
- ouro_agent-0.2.0/ouro/config/credentials.py +62 -0
- ouro_agent-0.2.0/ouro/config/endpoints.py +196 -0
- ouro_agent-0.2.0/ouro/config/file.py +106 -0
- ouro_agent-0.2.0/ouro/config/permissions.py +148 -0
- ouro_agent-0.2.0/ouro/config/prompts.py +199 -0
- ouro_agent-0.2.0/ouro/config/provider_codec.py +230 -0
- ouro_agent-0.2.0/ouro/config/provider_headers.py +134 -0
- ouro_agent-0.2.0/ouro/config/provider_models.py +657 -0
- ouro_agent-0.2.0/ouro/config/provider_runtime.py +166 -0
- ouro_agent-0.2.0/ouro/config/provider_template_store.py +504 -0
- ouro_agent-0.2.0/ouro/config/provider_templates.py +1044 -0
- ouro_agent-0.2.0/ouro/config/providers.py +1324 -0
- ouro_agent-0.2.0/ouro/config/queued_inputs.py +67 -0
- ouro_agent-0.2.0/ouro/config/reasoning.py +301 -0
- ouro_agent-0.2.0/ouro/config/run_budget.py +81 -0
- ouro_agent-0.2.0/ouro/config/skills.py +233 -0
- ouro_agent-0.2.0/ouro/config/tool_execution.py +77 -0
- ouro_agent-0.2.0/ouro/core/__init__.py +54 -0
- ouro_agent-0.2.0/ouro/core/adapter.py +264 -0
- ouro_agent-0.2.0/ouro/core/agents.py +462 -0
- ouro_agent-0.2.0/ouro/core/approvals.py +110 -0
- ouro_agent-0.2.0/ouro/core/attachment_input.py +60 -0
- ouro_agent-0.2.0/ouro/core/attachment_projection.py +89 -0
- ouro_agent-0.2.0/ouro/core/base.py +45 -0
- ouro_agent-0.2.0/ouro/core/billing.py +209 -0
- ouro_agent-0.2.0/ouro/core/callbacks.py +113 -0
- ouro_agent-0.2.0/ouro/core/cancellation.py +52 -0
- ouro_agent-0.2.0/ouro/core/compaction.py +462 -0
- ouro_agent-0.2.0/ouro/core/content.py +97 -0
- ouro_agent-0.2.0/ouro/core/context.py +360 -0
- ouro_agent-0.2.0/ouro/core/context_providers.py +242 -0
- ouro_agent-0.2.0/ouro/core/context_snapshots.py +79 -0
- ouro_agent-0.2.0/ouro/core/continuations.py +258 -0
- ouro_agent-0.2.0/ouro/core/errors.py +126 -0
- ouro_agent-0.2.0/ouro/core/events.py +91 -0
- ouro_agent-0.2.0/ouro/core/extensions.py +5 -0
- ouro_agent-0.2.0/ouro/core/harness.py +53 -0
- ouro_agent-0.2.0/ouro/core/harness_calls.py +217 -0
- ouro_agent-0.2.0/ouro/core/inner_loop.py +49 -0
- ouro_agent-0.2.0/ouro/core/input_content.py +106 -0
- ouro_agent-0.2.0/ouro/core/interactions.py +56 -0
- ouro_agent-0.2.0/ouro/core/message_frames.py +70 -0
- ouro_agent-0.2.0/ouro/core/message_roles.py +5 -0
- ouro_agent-0.2.0/ouro/core/message_semantics.py +71 -0
- ouro_agent-0.2.0/ouro/core/messages.py +339 -0
- ouro_agent-0.2.0/ouro/core/model_completion.py +50 -0
- ouro_agent-0.2.0/ouro/core/model_execution.py +226 -0
- ouro_agent-0.2.0/ouro/core/model_generation.py +55 -0
- ouro_agent-0.2.0/ouro/core/model_requests.py +46 -0
- ouro_agent-0.2.0/ouro/core/model_selection.py +3 -0
- ouro_agent-0.2.0/ouro/core/observers.py +357 -0
- ouro_agent-0.2.0/ouro/core/persistence.py +40 -0
- ouro_agent-0.2.0/ouro/core/plugin_contracts.py +19 -0
- ouro_agent-0.2.0/ouro/core/plugin_tasks.py +38 -0
- ouro_agent-0.2.0/ouro/core/prompt_policies.py +263 -0
- ouro_agent-0.2.0/ouro/core/provider.py +255 -0
- ouro_agent-0.2.0/ouro/core/reasoning.py +141 -0
- ouro_agent-0.2.0/ouro/core/redaction.py +79 -0
- ouro_agent-0.2.0/ouro/core/request_context.py +34 -0
- ouro_agent-0.2.0/ouro/core/resources.py +75 -0
- ouro_agent-0.2.0/ouro/core/results.py +16 -0
- ouro_agent-0.2.0/ouro/core/run_budget.py +74 -0
- ouro_agent-0.2.0/ouro/core/run_drivers.py +140 -0
- ouro_agent-0.2.0/ouro/core/run_transitions.py +102 -0
- ouro_agent-0.2.0/ouro/core/session_commits.py +223 -0
- ouro_agent-0.2.0/ouro/core/session_controls.py +353 -0
- ouro_agent-0.2.0/ouro/core/session_extensions.py +63 -0
- ouro_agent-0.2.0/ouro/core/session_titles.py +61 -0
- ouro_agent-0.2.0/ouro/core/state.py +267 -0
- ouro_agent-0.2.0/ouro/core/task_ports.py +35 -0
- ouro_agent-0.2.0/ouro/core/tasks.py +176 -0
- ouro_agent-0.2.0/ouro/core/tool_batch_transitions.py +146 -0
- ouro_agent-0.2.0/ouro/core/tool_batches.py +95 -0
- ouro_agent-0.2.0/ouro/core/tool_policies.py +243 -0
- ouro_agent-0.2.0/ouro/core/tool_requests.py +61 -0
- ouro_agent-0.2.0/ouro/core/tool_result_projection.py +97 -0
- ouro_agent-0.2.0/ouro/core/tools.py +198 -0
- ouro_agent-0.2.0/ouro/core/turn_policies.py +225 -0
- ouro_agent-0.2.0/ouro/core/usage_queries.py +87 -0
- ouro_agent-0.2.0/ouro/data_commands.py +65 -0
- ouro_agent-0.2.0/ouro/deployment.py +39 -0
- ouro_agent-0.2.0/ouro/local_application.py +908 -0
- ouro_agent-0.2.0/ouro/local_io.py +81 -0
- ouro_agent-0.2.0/ouro/local_locks/__init__.py +341 -0
- ouro_agent-0.2.0/ouro/local_locks/windows.py +57 -0
- ouro_agent-0.2.0/ouro/local_processes/__init__.py +96 -0
- ouro_agent-0.2.0/ouro/local_processes/commands.py +222 -0
- ouro_agent-0.2.0/ouro/local_processes/windows.py +123 -0
- ouro_agent-0.2.0/ouro/local_providers.py +48 -0
- ouro_agent-0.2.0/ouro/mcp/__init__.py +78 -0
- ouro_agent-0.2.0/ouro/mcp/client.py +48 -0
- ouro_agent-0.2.0/ouro/mcp/configuration.py +231 -0
- ouro_agent-0.2.0/ouro/mcp/connection_check.py +62 -0
- ouro_agent-0.2.0/ouro/mcp/errors.py +33 -0
- ouro_agent-0.2.0/ouro/mcp/manager.py +612 -0
- ouro_agent-0.2.0/ouro/mcp/models.py +199 -0
- ouro_agent-0.2.0/ouro/mcp/runtime.py +97 -0
- ouro_agent-0.2.0/ouro/mcp/sdk.py +337 -0
- ouro_agent-0.2.0/ouro/mcp/sse_transport.py +156 -0
- ouro_agent-0.2.0/ouro/mcp/tool_adapter.py +92 -0
- ouro_agent-0.2.0/ouro/plugins/__init__.py +22 -0
- ouro_agent-0.2.0/ouro/plugins/adapters.py +188 -0
- ouro_agent-0.2.0/ouro/plugins/api.py +1150 -0
- ouro_agent-0.2.0/ouro/plugins/builtin.py +191 -0
- ouro_agent-0.2.0/ouro/plugins/candidates.py +50 -0
- ouro_agent-0.2.0/ouro/plugins/catalog.py +1052 -0
- ouro_agent-0.2.0/ouro/plugins/compatibility.py +227 -0
- ouro_agent-0.2.0/ouro/plugins/contracts.py +301 -0
- ouro_agent-0.2.0/ouro/plugins/contribution_types.py +279 -0
- ouro_agent-0.2.0/ouro/plugins/contributions.py +1378 -0
- ouro_agent-0.2.0/ouro/plugins/dependencies.py +256 -0
- ouro_agent-0.2.0/ouro/plugins/driver_contracts.py +54 -0
- ouro_agent-0.2.0/ouro/plugins/environment.py +24 -0
- ouro_agent-0.2.0/ouro/plugins/execution_contracts.py +113 -0
- ouro_agent-0.2.0/ouro/plugins/generation.py +237 -0
- ouro_agent-0.2.0/ouro/plugins/generation_resources.py +193 -0
- ouro_agent-0.2.0/ouro/plugins/harness_calls.py +181 -0
- ouro_agent-0.2.0/ouro/plugins/implementation_contracts.py +16 -0
- ouro_agent-0.2.0/ouro/plugins/installer.py +226 -0
- ouro_agent-0.2.0/ouro/plugins/instructions.py +170 -0
- ouro_agent-0.2.0/ouro/plugins/invocation.py +66 -0
- ouro_agent-0.2.0/ouro/plugins/manifest.py +596 -0
- ouro_agent-0.2.0/ouro/plugins/mcp.py +214 -0
- ouro_agent-0.2.0/ouro/plugins/models.py +291 -0
- ouro_agent-0.2.0/ouro/plugins/native_ports.py +109 -0
- ouro_agent-0.2.0/ouro/plugins/package.py +256 -0
- ouro_agent-0.2.0/ouro/plugins/paths.py +35 -0
- ouro_agent-0.2.0/ouro/plugins/processes.py +72 -0
- ouro_agent-0.2.0/ouro/plugins/providers.py +254 -0
- ouro_agent-0.2.0/ouro/plugins/readiness.py +87 -0
- ouro_agent-0.2.0/ouro/plugins/registry.py +301 -0
- ouro_agent-0.2.0/ouro/plugins/resources.py +125 -0
- ouro_agent-0.2.0/ouro/plugins/run_drivers.py +208 -0
- ouro_agent-0.2.0/ouro/plugins/runtime.py +2102 -0
- ouro_agent-0.2.0/ouro/plugins/scaffold.py +147 -0
- ouro_agent-0.2.0/ouro/plugins/scheduling.py +155 -0
- ouro_agent-0.2.0/ouro/plugins/semver.py +134 -0
- ouro_agent-0.2.0/ouro/plugins/services.py +243 -0
- ouro_agent-0.2.0/ouro/plugins/session_controllers.py +260 -0
- ouro_agent-0.2.0/ouro/plugins/sources.py +322 -0
- ouro_agent-0.2.0/ouro/plugins/store.py +358 -0
- ouro_agent-0.2.0/ouro/plugins/tasks.py +68 -0
- ouro_agent-0.2.0/ouro/plugins/tool_content.py +51 -0
- ouro_agent-0.2.0/ouro/plugins/tool_groups.py +232 -0
- ouro_agent-0.2.0/ouro/plugins/worker.py +1833 -0
- ouro_agent-0.2.0/ouro/plugins/worker_drivers.py +95 -0
- ouro_agent-0.2.0/ouro/plugins/worker_models.py +36 -0
- ouro_agent-0.2.0/ouro/plugins/worker_processes.py +32 -0
- ouro_agent-0.2.0/ouro/plugins/worker_providers.py +52 -0
- ouro_agent-0.2.0/ouro/plugins/worker_scheduling.py +40 -0
- ouro_agent-0.2.0/ouro/plugins/worker_services.py +142 -0
- ouro_agent-0.2.0/ouro/plugins/worker_tool_groups.py +130 -0
- ouro_agent-0.2.0/ouro/prompts/__init__.py +180 -0
- ouro_agent-0.2.0/ouro/providers/__init__.py +15 -0
- ouro_agent-0.2.0/ouro/providers/anthropic_messages.py +475 -0
- ouro_agent-0.2.0/ouro/providers/anthropic_messages_codec.py +231 -0
- ouro_agent-0.2.0/ouro/providers/authentication.py +177 -0
- ouro_agent-0.2.0/ouro/providers/connection_check.py +60 -0
- ouro_agent-0.2.0/ouro/providers/factory.py +299 -0
- ouro_agent-0.2.0/ouro/providers/faux.py +74 -0
- ouro_agent-0.2.0/ouro/providers/headers.py +51 -0
- ouro_agent-0.2.0/ouro/providers/http_transport.py +382 -0
- ouro_agent-0.2.0/ouro/providers/openai_chat_completions.py +446 -0
- ouro_agent-0.2.0/ouro/providers/openai_chat_completions_codec.py +346 -0
- ouro_agent-0.2.0/ouro/providers/openai_responses.py +232 -0
- ouro_agent-0.2.0/ouro/providers/openai_responses_codec.py +281 -0
- ouro_agent-0.2.0/ouro/providers/openai_responses_errors.py +32 -0
- ouro_agent-0.2.0/ouro/providers/openai_responses_items.py +73 -0
- ouro_agent-0.2.0/ouro/providers/openai_responses_stream.py +316 -0
- ouro_agent-0.2.0/ouro/providers/reasoning.py +27 -0
- ouro_agent-0.2.0/ouro/providers/request_context.py +26 -0
- ouro_agent-0.2.0/ouro/providers/retrying.py +84 -0
- ouro_agent-0.2.0/ouro/providers/tool_content.py +48 -0
- ouro_agent-0.2.0/ouro/py.typed +1 -0
- ouro_agent-0.2.0/ouro/resources/__init__.py +4 -0
- ouro_agent-0.2.0/ouro/resources/base.py +53 -0
- ouro_agent-0.2.0/ouro/resources/files.py +86 -0
- ouro_agent-0.2.0/ouro/resources/local.py +219 -0
- ouro_agent-0.2.0/ouro/sdk/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/content.py +36 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/environment.py +17 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/interactions.py +155 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/models.py +65 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/processes.py +39 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/providers.py +183 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/run_drivers.py +205 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/scheduled.py +13 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/scheduling.py +99 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/services.py +49 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/state.py +61 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/v3.py +955 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker.py +229 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_drivers.py +170 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_environment.py +15 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_models.py +54 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_processes.py +40 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_providers.py +113 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_scheduling.py +164 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_services.py +101 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_tool_groups.py +96 -0
- ouro_agent-0.2.0/ouro/sdk/plugins/worker_tools.py +154 -0
- ouro_agent-0.2.0/ouro/sessions/__init__.py +37 -0
- ouro_agent-0.2.0/ouro/sessions/base.py +280 -0
- ouro_agent-0.2.0/ouro/sessions/catalog.py +152 -0
- ouro_agent-0.2.0/ouro/sessions/file_commits.py +255 -0
- ouro_agent-0.2.0/ouro/sessions/index.py +154 -0
- ouro_agent-0.2.0/ouro/sessions/layout.py +15 -0
- ouro_agent-0.2.0/ouro/sessions/local_files.py +1710 -0
- ouro_agent-0.2.0/ouro/sessions/local_index.py +291 -0
- ouro_agent-0.2.0/ouro/sessions/locks.py +29 -0
- ouro_agent-0.2.0/ouro/sessions/message_index.py +107 -0
- ouro_agent-0.2.0/ouro/sessions/message_journal.py +35 -0
- ouro_agent-0.2.0/ouro/sessions/portable.py +175 -0
- ouro_agent-0.2.0/ouro/sessions/sqlite.py +1589 -0
- ouro_agent-0.2.0/ouro/sessions/sqlite_commits.py +196 -0
- ouro_agent-0.2.0/ouro/sessions/transfer.py +149 -0
- ouro_agent-0.2.0/ouro/skills/__init__.py +48 -0
- ouro_agent-0.2.0/ouro/skills/context.py +222 -0
- ouro_agent-0.2.0/ouro/skills/loader.py +188 -0
- ouro_agent-0.2.0/ouro/skills/manager.py +425 -0
- ouro_agent-0.2.0/ouro/skills/models.py +60 -0
- ouro_agent-0.2.0/ouro/skills/parser.py +253 -0
- ouro_agent-0.2.0/ouro/tools/__init__.py +45 -0
- ouro_agent-0.2.0/ouro/tools/base.py +266 -0
- ouro_agent-0.2.0/ouro/tools/batch_executor.py +94 -0
- ouro_agent-0.2.0/ouro/tools/builtin.py +23 -0
- ouro_agent-0.2.0/ouro/tools/builtin_agents.py +253 -0
- ouro_agent-0.2.0/ouro/tools/builtin_ask_user.py +168 -0
- ouro_agent-0.2.0/ouro/tools/builtin_common.py +45 -0
- ouro_agent-0.2.0/ouro/tools/builtin_files.py +390 -0
- ouro_agent-0.2.0/ouro/tools/builtin_glob.py +157 -0
- ouro_agent-0.2.0/ouro/tools/builtin_grep.py +651 -0
- ouro_agent-0.2.0/ouro/tools/builtin_ignore.py +94 -0
- ouro_agent-0.2.0/ouro/tools/builtin_search.py +79 -0
- ouro_agent-0.2.0/ouro/tools/builtin_shell.py +361 -0
- ouro_agent-0.2.0/ouro/tools/builtin_todolist.py +178 -0
- ouro_agent-0.2.0/ouro/tools/builtin_view_image.py +165 -0
- ouro_agent-0.2.0/ouro/tools/executor.py +501 -0
- ouro_agent-0.2.0/ouro/tools/registry.py +197 -0
- ouro_agent-0.2.0/ouro/tools/result_content.py +52 -0
- ouro_agent-0.2.0/ouro/tools/schema.py +51 -0
- ouro_agent-0.2.0/ouro/transfer/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/transfer/archive.py +206 -0
- ouro_agent-0.2.0/ouro/transfer/skills.py +160 -0
- ouro_agent-0.2.0/ouro/tui/__init__.py +5 -0
- ouro_agent-0.2.0/ouro/tui/app.py +5548 -0
- ouro_agent-0.2.0/ouro/tui/archive_paths.py +120 -0
- ouro_agent-0.2.0/ouro/tui/attachment_editor.py +215 -0
- ouro_agent-0.2.0/ouro/tui/attachment_paths.py +47 -0
- ouro_agent-0.2.0/ouro/tui/attachment_picker.py +120 -0
- ouro_agent-0.2.0/ouro/tui/clipboard.py +31 -0
- ouro_agent-0.2.0/ouro/tui/commands.py +299 -0
- ouro_agent-0.2.0/ouro/tui/configuration_screens.py +1773 -0
- ouro_agent-0.2.0/ouro/tui/configuration_workflows.py +1658 -0
- ouro_agent-0.2.0/ouro/tui/controller.py +2632 -0
- ouro_agent-0.2.0/ouro/tui/conversation_history.py +1887 -0
- ouro_agent-0.2.0/ouro/tui/data_transfer.py +423 -0
- ouro_agent-0.2.0/ouro/tui/entry.py +42 -0
- ouro_agent-0.2.0/ouro/tui/inline_editor.py +170 -0
- ouro_agent-0.2.0/ouro/tui/input_drafts.py +146 -0
- ouro_agent-0.2.0/ouro/tui/keyboard.py +29 -0
- ouro_agent-0.2.0/ouro/tui/markdown.py +85 -0
- ouro_agent-0.2.0/ouro/tui/menu_labels.py +34 -0
- ouro_agent-0.2.0/ouro/tui/menu_sorting.py +63 -0
- ouro_agent-0.2.0/ouro/tui/model_menus.py +101 -0
- ouro_agent-0.2.0/ouro/tui/plan_confirmation.py +25 -0
- ouro_agent-0.2.0/ouro/tui/plugin_workflows.py +509 -0
- ouro_agent-0.2.0/ouro/tui/preferences.py +126 -0
- ouro_agent-0.2.0/ouro/tui/prompt_screens.py +126 -0
- ouro_agent-0.2.0/ouro/tui/prompt_workflows.py +147 -0
- ouro_agent-0.2.0/ouro/tui/provider_auth_screens.py +346 -0
- ouro_agent-0.2.0/ouro/tui/provider_screens.py +819 -0
- ouro_agent-0.2.0/ouro/tui/provider_workflows.py +1059 -0
- ouro_agent-0.2.0/ouro/tui/question_forms.py +163 -0
- ouro_agent-0.2.0/ouro/tui/screens.py +1821 -0
- ouro_agent-0.2.0/ouro/tui/selection.py +8 -0
- ouro_agent-0.2.0/ouro/tui/state.py +538 -0
- ouro_agent-0.2.0/ouro/tui/subagent_navigation.py +303 -0
- ouro_agent-0.2.0/ouro/tui/task_screens.py +443 -0
- ouro_agent-0.2.0/ouro/tui/task_workflows.py +284 -0
- ouro_agent-0.2.0/ouro/tui/terminal.py +167 -0
- ouro_agent-0.2.0/ouro/tui/text_inputs.py +80 -0
- ouro_agent-0.2.0/ouro/tui/text_wrapping.py +103 -0
- ouro_agent-0.2.0/ouro/tui/theme.py +582 -0
- ouro_agent-0.2.0/ouro/tui/tool_presentations.py +263 -0
- ouro_agent-0.2.0/ouro/tui/welcome/__init__.py +50 -0
- ouro_agent-0.2.0/ouro/tui/welcome/centered.py +84 -0
- ouro_agent-0.2.0/ouro/tui/welcome/components.py +454 -0
- ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/field.py +102 -0
- ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/raster.py +151 -0
- ouro_agent-0.2.0/ouro/tui/welcome/dot_matrix/widget.py +200 -0
- ouro_agent-0.2.0/ouro/tui/welcome/host.py +139 -0
- ouro_agent-0.2.0/ouro/tui/welcome/model.py +68 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/__init__.py +1 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/basic.py +36 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/clifford.py +95 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/crystal.py +71 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/electron_bloom.py +64 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/event_horizon.py +93 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/interference.py +60 -0
- ouro_agent-0.2.0/ouro/tui/welcome/styles/julia_reliquary.py +161 -0
- ouro_agent-0.2.0/ouro/tui/widgets.py +3512 -0
- ouro_agent-0.2.0/ouro/tui/windows_console.py +60 -0
- ouro_agent-0.2.0/ouro/tui/windows_driver.py +97 -0
- ouro_agent-0.2.0/ouro/tui/wrapped_document.py +141 -0
- ouro_agent-0.2.0/pyproject.toml +79 -0
- ouro_agent-0.2.0/tests/__init__.py +1 -0
- ouro_agent-0.2.0/tests/application/__init__.py +1 -0
- ouro_agent-0.2.0/tests/application/test_agent_definitions.py +293 -0
- ouro_agent-0.2.0/tests/application/test_agent_multi_host.py +511 -0
- ouro_agent-0.2.0/tests/application/test_agent_recovery.py +539 -0
- ouro_agent-0.2.0/tests/application/test_agent_result_delivery.py +185 -0
- ouro_agent-0.2.0/tests/application/test_agents.py +3580 -0
- ouro_agent-0.2.0/tests/application/test_async_session_pipeline.py +396 -0
- ouro_agent-0.2.0/tests/application/test_attachments.py +239 -0
- ouro_agent-0.2.0/tests/application/test_billing_attribution.py +199 -0
- ouro_agent-0.2.0/tests/application/test_codex_subscription.py +248 -0
- ouro_agent-0.2.0/tests/application/test_compaction.py +1300 -0
- ouro_agent-0.2.0/tests/application/test_configuration.py +751 -0
- ouro_agent-0.2.0/tests/application/test_data_transfer.py +750 -0
- ouro_agent-0.2.0/tests/application/test_data_transfer_selection.py +95 -0
- ouro_agent-0.2.0/tests/application/test_driver_agents.py +230 -0
- ouro_agent-0.2.0/tests/application/test_driver_contract_loading.py +543 -0
- ouro_agent-0.2.0/tests/application/test_driver_inputs.py +557 -0
- ouro_agent-0.2.0/tests/application/test_dynamic_tool_groups.py +157 -0
- ouro_agent-0.2.0/tests/application/test_environment_continuity.py +558 -0
- ouro_agent-0.2.0/tests/application/test_events.py +834 -0
- ouro_agent-0.2.0/tests/application/test_harness_commands.py +278 -0
- ouro_agent-0.2.0/tests/application/test_harness_continuations.py +297 -0
- ouro_agent-0.2.0/tests/application/test_harness_controls.py +222 -0
- ouro_agent-0.2.0/tests/application/test_harness_tools.py +348 -0
- ouro_agent-0.2.0/tests/application/test_harness_usage.py +174 -0
- ouro_agent-0.2.0/tests/application/test_history_editing.py +503 -0
- ouro_agent-0.2.0/tests/application/test_history_execution.py +461 -0
- ouro_agent-0.2.0/tests/application/test_history_observation.py +90 -0
- ouro_agent-0.2.0/tests/application/test_host_plugin_commands.py +522 -0
- ouro_agent-0.2.0/tests/application/test_image_inputs.py +111 -0
- ouro_agent-0.2.0/tests/application/test_interaction_handoff.py +69 -0
- ouro_agent-0.2.0/tests/application/test_local_application.py +239 -0
- ouro_agent-0.2.0/tests/application/test_local_provider_auth.py +59 -0
- ouro_agent-0.2.0/tests/application/test_media_inputs.py +356 -0
- ouro_agent-0.2.0/tests/application/test_model_completion.py +213 -0
- ouro_agent-0.2.0/tests/application/test_model_generation.py +267 -0
- ouro_agent-0.2.0/tests/application/test_model_requests.py +158 -0
- ouro_agent-0.2.0/tests/application/test_models.py +367 -0
- ouro_agent-0.2.0/tests/application/test_personal_prompts.py +271 -0
- ouro_agent-0.2.0/tests/application/test_plugin_extensibility.py +1849 -0
- ouro_agent-0.2.0/tests/application/test_plugin_models.py +217 -0
- ouro_agent-0.2.0/tests/application/test_plugin_native_runs.py +284 -0
- ouro_agent-0.2.0/tests/application/test_plugin_scheduling.py +463 -0
- ouro_agent-0.2.0/tests/application/test_plugin_tasks.py +367 -0
- ouro_agent-0.2.0/tests/application/test_provider_auth.py +566 -0
- ouro_agent-0.2.0/tests/application/test_queued_input_modes.py +393 -0
- ouro_agent-0.2.0/tests/application/test_queued_inputs.py +508 -0
- ouro_agent-0.2.0/tests/application/test_queued_ownership.py +180 -0
- ouro_agent-0.2.0/tests/application/test_resource_io.py +100 -0
- ouro_agent-0.2.0/tests/application/test_resources.py +737 -0
- ouro_agent-0.2.0/tests/application/test_responses_runtime.py +509 -0
- ouro_agent-0.2.0/tests/application/test_run_continuations.py +1336 -0
- ouro_agent-0.2.0/tests/application/test_run_drivers.py +808 -0
- ouro_agent-0.2.0/tests/application/test_run_ownership.py +197 -0
- ouro_agent-0.2.0/tests/application/test_run_resources.py +302 -0
- ouro_agent-0.2.0/tests/application/test_runtime.py +3575 -0
- ouro_agent-0.2.0/tests/application/test_runtime_activity.py +726 -0
- ouro_agent-0.2.0/tests/application/test_runtime_authentication.py +383 -0
- ouro_agent-0.2.0/tests/application/test_session_approval_modes.py +384 -0
- ouro_agent-0.2.0/tests/application/test_session_controls.py +484 -0
- ouro_agent-0.2.0/tests/application/test_session_event_following.py +535 -0
- ouro_agent-0.2.0/tests/application/test_session_file_inputs.py +254 -0
- ouro_agent-0.2.0/tests/application/test_session_import_conflicts.py +204 -0
- ouro_agent-0.2.0/tests/application/test_session_models.py +549 -0
- ouro_agent-0.2.0/tests/application/test_session_summaries.py +80 -0
- ouro_agent-0.2.0/tests/application/test_session_titles.py +145 -0
- ouro_agent-0.2.0/tests/application/test_sessions.py +1593 -0
- ouro_agent-0.2.0/tests/application/test_skill_activations.py +217 -0
- ouro_agent-0.2.0/tests/application/test_sqlite_backend.py +88 -0
- ouro_agent-0.2.0/tests/application/test_supervisor.py +950 -0
- ouro_agent-0.2.0/tests/application/test_task_schedule.py +145 -0
- ouro_agent-0.2.0/tests/application/test_task_storage.py +457 -0
- ouro_agent-0.2.0/tests/application/test_tasks.py +594 -0
- ouro_agent-0.2.0/tests/application/test_tool_call_batches.py +1129 -0
- ouro_agent-0.2.0/tests/application/test_tool_result_content.py +112 -0
- ouro_agent-0.2.0/tests/application/test_undo_inputs.py +311 -0
- ouro_agent-0.2.0/tests/application/test_usage.py +194 -0
- ouro_agent-0.2.0/tests/application/test_view_image.py +76 -0
- ouro_agent-0.2.0/tests/application/test_worker_dynamic_tools.py +169 -0
- ouro_agent-0.2.0/tests/architecture/__init__.py +1 -0
- ouro_agent-0.2.0/tests/architecture/test_boundaries.py +425 -0
- ouro_agent-0.2.0/tests/architecture/test_imports.py +43 -0
- ouro_agent-0.2.0/tests/auth/__init__.py +0 -0
- ouro_agent-0.2.0/tests/auth/openai_fixtures.py +24 -0
- ouro_agent-0.2.0/tests/auth/test_authorization.py +370 -0
- ouro_agent-0.2.0/tests/auth/test_credentials.py +569 -0
- ouro_agent-0.2.0/tests/auth/test_driver_contracts.py +230 -0
- ouro_agent-0.2.0/tests/auth/test_openai_driver.py +331 -0
- ouro_agent-0.2.0/tests/auth/test_openai_protocol.py +194 -0
- ouro_agent-0.2.0/tests/auth/test_processes.py +166 -0
- ouro_agent-0.2.0/tests/auth/test_request_auth.py +227 -0
- ouro_agent-0.2.0/tests/auth/test_store.py +284 -0
- ouro_agent-0.2.0/tests/benchmarks/test_sqlite_sync.py +51 -0
- ouro_agent-0.2.0/tests/billing/__init__.py +1 -0
- ouro_agent-0.2.0/tests/billing/test_local.py +466 -0
- ouro_agent-0.2.0/tests/cli/__init__.py +1 -0
- ouro_agent-0.2.0/tests/cli/test_agent_commands.py +356 -0
- ouro_agent-0.2.0/tests/cli/test_approval_commands.py +290 -0
- ouro_agent-0.2.0/tests/cli/test_codex_subscription.py +47 -0
- ouro_agent-0.2.0/tests/cli/test_compaction_config_commands.py +170 -0
- ouro_agent-0.2.0/tests/cli/test_data_commands.py +184 -0
- ouro_agent-0.2.0/tests/cli/test_entry.py +77 -0
- ouro_agent-0.2.0/tests/cli/test_error_codes.py +42 -0
- ouro_agent-0.2.0/tests/cli/test_help.py +98 -0
- ouro_agent-0.2.0/tests/cli/test_mcp_commands.py +395 -0
- ouro_agent-0.2.0/tests/cli/test_permissions_commands.py +175 -0
- ouro_agent-0.2.0/tests/cli/test_plugin_commands.py +370 -0
- ouro_agent-0.2.0/tests/cli/test_prompt_commands.py +64 -0
- ouro_agent-0.2.0/tests/cli/test_provider_auth_commands.py +335 -0
- ouro_agent-0.2.0/tests/cli/test_provider_error_codes.py +47 -0
- ouro_agent-0.2.0/tests/cli/test_provider_headers_commands.py +90 -0
- ouro_agent-0.2.0/tests/cli/test_provider_protocol_commands.py +249 -0
- ouro_agent-0.2.0/tests/cli/test_provider_template_commands.py +363 -0
- ouro_agent-0.2.0/tests/cli/test_queued_inputs_cli.py +50 -0
- ouro_agent-0.2.0/tests/cli/test_resource_commands.py +116 -0
- ouro_agent-0.2.0/tests/cli/test_run_budget_config_commands.py +43 -0
- ouro_agent-0.2.0/tests/cli/test_run_cli.py +1559 -0
- ouro_agent-0.2.0/tests/cli/test_session_approval_modes.py +97 -0
- ouro_agent-0.2.0/tests/cli/test_session_backend_selection.py +171 -0
- ouro_agent-0.2.0/tests/cli/test_session_commands.py +599 -0
- ouro_agent-0.2.0/tests/cli/test_session_summaries.py +66 -0
- ouro_agent-0.2.0/tests/cli/test_skill_management_cli.py +102 -0
- ouro_agent-0.2.0/tests/cli/test_skill_source_config_commands.py +83 -0
- ouro_agent-0.2.0/tests/cli/test_task_backend_selection.py +65 -0
- ouro_agent-0.2.0/tests/cli/test_tool_execution_config_commands.py +70 -0
- ouro_agent-0.2.0/tests/cli/test_usage_commands.py +278 -0
- ouro_agent-0.2.0/tests/config/__init__.py +1 -0
- ouro_agent-0.2.0/tests/config/test_agents.py +141 -0
- ouro_agent-0.2.0/tests/config/test_atomic_config.py +197 -0
- ouro_agent-0.2.0/tests/config/test_compaction_config.py +135 -0
- ouro_agent-0.2.0/tests/config/test_credentials_config.py +996 -0
- ouro_agent-0.2.0/tests/config/test_media_capabilities.py +139 -0
- ouro_agent-0.2.0/tests/config/test_prompts.py +164 -0
- ouro_agent-0.2.0/tests/config/test_provider_auth_config.py +449 -0
- ouro_agent-0.2.0/tests/config/test_provider_headers.py +153 -0
- ouro_agent-0.2.0/tests/config/test_provider_template_store.py +466 -0
- ouro_agent-0.2.0/tests/config/test_provider_template_updates.py +274 -0
- ouro_agent-0.2.0/tests/config/test_provider_templates.py +279 -0
- ouro_agent-0.2.0/tests/config/test_queued_input_config.py +26 -0
- ouro_agent-0.2.0/tests/config/test_reasoning_config.py +231 -0
- ouro_agent-0.2.0/tests/core/__init__.py +1 -0
- ouro_agent-0.2.0/tests/core/test_adapter_stream.py +289 -0
- ouro_agent-0.2.0/tests/core/test_agents.py +158 -0
- ouro_agent-0.2.0/tests/core/test_approval_modes.py +55 -0
- ouro_agent-0.2.0/tests/core/test_callbacks.py +41 -0
- ouro_agent-0.2.0/tests/core/test_compaction.py +206 -0
- ouro_agent-0.2.0/tests/core/test_context.py +395 -0
- ouro_agent-0.2.0/tests/core/test_context_providers.py +124 -0
- ouro_agent-0.2.0/tests/core/test_harness_calls.py +154 -0
- ouro_agent-0.2.0/tests/core/test_inner_loop.py +89 -0
- ouro_agent-0.2.0/tests/core/test_interactions.py +70 -0
- ouro_agent-0.2.0/tests/core/test_media_content.py +45 -0
- ouro_agent-0.2.0/tests/core/test_model_execution.py +221 -0
- ouro_agent-0.2.0/tests/core/test_models.py +106 -0
- ouro_agent-0.2.0/tests/core/test_observers.py +363 -0
- ouro_agent-0.2.0/tests/core/test_persistence.py +82 -0
- ouro_agent-0.2.0/tests/core/test_prompt_policies.py +109 -0
- ouro_agent-0.2.0/tests/core/test_provider.py +86 -0
- ouro_agent-0.2.0/tests/core/test_reasoning.py +210 -0
- ouro_agent-0.2.0/tests/core/test_redaction.py +42 -0
- ouro_agent-0.2.0/tests/core/test_run_drivers.py +90 -0
- ouro_agent-0.2.0/tests/core/test_run_transitions.py +165 -0
- ouro_agent-0.2.0/tests/core/test_session_titles.py +41 -0
- ouro_agent-0.2.0/tests/core/test_skill_activation_content.py +74 -0
- ouro_agent-0.2.0/tests/core/test_tool_batch_transitions.py +139 -0
- ouro_agent-0.2.0/tests/core/test_tool_policies.py +112 -0
- ouro_agent-0.2.0/tests/core/test_tool_result_projection.py +62 -0
- ouro_agent-0.2.0/tests/core/test_turn_policies.py +95 -0
- ouro_agent-0.2.0/tests/harness_state.py +47 -0
- ouro_agent-0.2.0/tests/mcp/__init__.py +1 -0
- ouro_agent-0.2.0/tests/mcp/fixtures/echo_server.py +41 -0
- ouro_agent-0.2.0/tests/mcp/test_configuration.py +325 -0
- ouro_agent-0.2.0/tests/mcp/test_manager.py +602 -0
- ouro_agent-0.2.0/tests/mcp/test_sdk.py +81 -0
- ouro_agent-0.2.0/tests/mcp/test_sdk_integration.py +152 -0
- ouro_agent-0.2.0/tests/mcp/test_sse_transport.py +89 -0
- ouro_agent-0.2.0/tests/plugins/__init__.py +1 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/background_model.py +116 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/driver_dependency_plugin.py +37 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/driver_worker.py +45 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/review_driver_plugin.py +34 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/driver_contracts/service_worker.py +45 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/dynamic_tool_worker.py +67 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/home_service_worker.py +61 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/model_probe.py +86 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/native_service_driver.py +30 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/native_service_worker.py +41 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/provider_probe.py +176 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/scheduled_service.py +142 -0
- ouro_agent-0.2.0/tests/plugins/fixtures/service_lifetime.py +128 -0
- ouro_agent-0.2.0/tests/plugins/test_background_models.py +208 -0
- ouro_agent-0.2.0/tests/plugins/test_builtin_agent_context.py +340 -0
- ouro_agent-0.2.0/tests/plugins/test_builtin_goal.py +831 -0
- ouro_agent-0.2.0/tests/plugins/test_builtin_plan.py +1080 -0
- ouro_agent-0.2.0/tests/plugins/test_catalog_bindings.py +172 -0
- ouro_agent-0.2.0/tests/plugins/test_data_lifecycle.py +177 -0
- ouro_agent-0.2.0/tests/plugins/test_driver_contracts.py +42 -0
- ouro_agent-0.2.0/tests/plugins/test_execution_contracts.py +81 -0
- ouro_agent-0.2.0/tests/plugins/test_harness_calls.py +230 -0
- ouro_agent-0.2.0/tests/plugins/test_home_services.py +175 -0
- ouro_agent-0.2.0/tests/plugins/test_lifecycle.py +504 -0
- ouro_agent-0.2.0/tests/plugins/test_media_content.py +20 -0
- ouro_agent-0.2.0/tests/plugins/test_observer_contract.py +239 -0
- ouro_agent-0.2.0/tests/plugins/test_package_retention.py +140 -0
- ouro_agent-0.2.0/tests/plugins/test_plugin_examples.py +36 -0
- ouro_agent-0.2.0/tests/plugins/test_plugin_scaffold.py +36 -0
- ouro_agent-0.2.0/tests/plugins/test_plugin_sources.py +89 -0
- ouro_agent-0.2.0/tests/plugins/test_plugin_system.py +4137 -0
- ouro_agent-0.2.0/tests/plugins/test_processes.py +116 -0
- ouro_agent-0.2.0/tests/plugins/test_product_sdk.py +146 -0
- ouro_agent-0.2.0/tests/plugins/test_providers.py +386 -0
- ouro_agent-0.2.0/tests/plugins/test_run_driver_sdk.py +135 -0
- ouro_agent-0.2.0/tests/plugins/test_sdk_compaction.py +172 -0
- ouro_agent-0.2.0/tests/plugins/test_sdk_tools.py +213 -0
- ouro_agent-0.2.0/tests/plugins/test_service_lifetimes.py +146 -0
- ouro_agent-0.2.0/tests/plugins/test_services.py +275 -0
- ouro_agent-0.2.0/tests/plugins/test_session_state.py +7 -0
- ouro_agent-0.2.0/tests/plugins/test_startup_graph.py +237 -0
- ouro_agent-0.2.0/tests/plugins/test_synchronization.py +149 -0
- ouro_agent-0.2.0/tests/plugins/test_tool_groups.py +416 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_bidirectional.py +245 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_harness_calls.py +139 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_harness_usage.py +110 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_home_services.py +155 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_results.py +288 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_services.py +110 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_tool_groups.py +271 -0
- ouro_agent-0.2.0/tests/plugins/test_worker_tool_sdk.py +140 -0
- ouro_agent-0.2.0/tests/probes/test_codex_adapter.py +323 -0
- ouro_agent-0.2.0/tests/probes/test_codex_oauth.py +112 -0
- ouro_agent-0.2.0/tests/probes/test_codex_responses.py +365 -0
- ouro_agent-0.2.0/tests/probes/test_openai_codex.py +264 -0
- ouro_agent-0.2.0/tests/providers/__init__.py +1 -0
- ouro_agent-0.2.0/tests/providers/responses_fixtures.py +66 -0
- ouro_agent-0.2.0/tests/providers/test_anthropic_messages.py +558 -0
- ouro_agent-0.2.0/tests/providers/test_connection_check.py +60 -0
- ouro_agent-0.2.0/tests/providers/test_factory.py +437 -0
- ouro_agent-0.2.0/tests/providers/test_faux.py +75 -0
- ouro_agent-0.2.0/tests/providers/test_headers.py +275 -0
- ouro_agent-0.2.0/tests/providers/test_media_inputs.py +144 -0
- ouro_agent-0.2.0/tests/providers/test_model_request_timeout.py +401 -0
- ouro_agent-0.2.0/tests/providers/test_openai_chat_completions.py +1712 -0
- ouro_agent-0.2.0/tests/providers/test_openai_responses.py +495 -0
- ouro_agent-0.2.0/tests/providers/test_openai_responses_codec.py +328 -0
- ouro_agent-0.2.0/tests/providers/test_openai_responses_stream.py +437 -0
- ouro_agent-0.2.0/tests/providers/test_openai_templates.py +130 -0
- ouro_agent-0.2.0/tests/providers/test_request_authentication.py +374 -0
- ouro_agent-0.2.0/tests/providers/test_tool_result_content.py +150 -0
- ouro_agent-0.2.0/tests/providers/test_transport_diagnostics.py +145 -0
- ouro_agent-0.2.0/tests/resource_fixtures.py +18 -0
- ouro_agent-0.2.0/tests/session_summaries.py +41 -0
- ouro_agent-0.2.0/tests/sessions/__init__.py +1 -0
- ouro_agent-0.2.0/tests/sessions/test_catalog_projection.py +284 -0
- ouro_agent-0.2.0/tests/sessions/test_data_versions.py +94 -0
- ouro_agent-0.2.0/tests/sessions/test_delegations.py +138 -0
- ouro_agent-0.2.0/tests/sessions/test_event_tail_process.py +64 -0
- ouro_agent-0.2.0/tests/sessions/test_harness_commits.py +628 -0
- ouro_agent-0.2.0/tests/sessions/test_harness_lifecycle.py +218 -0
- ouro_agent-0.2.0/tests/sessions/test_local_files.py +1319 -0
- ouro_agent-0.2.0/tests/sessions/test_local_io.py +81 -0
- ouro_agent-0.2.0/tests/sessions/test_message_queries.py +173 -0
- ouro_agent-0.2.0/tests/sessions/test_message_truncation.py +293 -0
- ouro_agent-0.2.0/tests/sessions/test_sqlite_stream_persistence.py +186 -0
- ouro_agent-0.2.0/tests/sessions/test_sqlite_transfer.py +115 -0
- ouro_agent-0.2.0/tests/sessions/test_store_contract.py +567 -0
- ouro_agent-0.2.0/tests/sessions/test_transfer_batches.py +174 -0
- ouro_agent-0.2.0/tests/skills/__init__.py +1 -0
- ouro_agent-0.2.0/tests/skills/test_skill_loader.py +357 -0
- ouro_agent-0.2.0/tests/skills/test_skill_manager.py +204 -0
- ouro_agent-0.2.0/tests/test_local_file_access.py +63 -0
- ouro_agent-0.2.0/tests/test_local_locks.py +178 -0
- ouro_agent-0.2.0/tests/test_local_processes.py +71 -0
- ouro_agent-0.2.0/tests/tools/__init__.py +1 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_agents.py +158 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_arguments.py +50 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_ask_user.py +88 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_file_tools.py +416 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_search_and_todolist.py +597 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_shell.py +504 -0
- ouro_agent-0.2.0/tests/tools/test_builtin_view_image.py +273 -0
- ouro_agent-0.2.0/tests/tools/test_callbacks.py +41 -0
- ouro_agent-0.2.0/tests/tools/test_executor_permissions.py +449 -0
- ouro_agent-0.2.0/tests/tools/test_result_content.py +77 -0
- ouro_agent-0.2.0/tests/tools/test_tools.py +868 -0
- ouro_agent-0.2.0/tests/tui/__init__.py +1 -0
- ouro_agent-0.2.0/tests/tui/fixtures/README.md +16 -0
- ouro_agent-0.2.0/tests/tui/fixtures/welcome-frames.json.gz +0 -0
- ouro_agent-0.2.0/tests/tui/helpers.py +121 -0
- ouro_agent-0.2.0/tests/tui/test_app.py +13913 -0
- ouro_agent-0.2.0/tests/tui/test_archive_paths.py +97 -0
- ouro_agent-0.2.0/tests/tui/test_async_observation.py +57 -0
- ouro_agent-0.2.0/tests/tui/test_attachment_editor.py +70 -0
- ouro_agent-0.2.0/tests/tui/test_attachments.py +574 -0
- ouro_agent-0.2.0/tests/tui/test_background_navigation.py +401 -0
- ouro_agent-0.2.0/tests/tui/test_clipboard.py +330 -0
- ouro_agent-0.2.0/tests/tui/test_commands.py +154 -0
- ouro_agent-0.2.0/tests/tui/test_controller.py +2531 -0
- ouro_agent-0.2.0/tests/tui/test_conversation_history.py +906 -0
- ouro_agent-0.2.0/tests/tui/test_data_transfer.py +665 -0
- ouro_agent-0.2.0/tests/tui/test_dot_animation.py +140 -0
- ouro_agent-0.2.0/tests/tui/test_endpoint_menus.py +165 -0
- ouro_agent-0.2.0/tests/tui/test_history_commands.py +466 -0
- ouro_agent-0.2.0/tests/tui/test_inline_editor.py +97 -0
- ouro_agent-0.2.0/tests/tui/test_input_drafts.py +118 -0
- ouro_agent-0.2.0/tests/tui/test_keyboard.py +58 -0
- ouro_agent-0.2.0/tests/tui/test_live_session_attachment.py +281 -0
- ouro_agent-0.2.0/tests/tui/test_menu_transitions.py +160 -0
- ouro_agent-0.2.0/tests/tui/test_plan_confirmation.py +43 -0
- ouro_agent-0.2.0/tests/tui/test_plugin_workflows.py +25 -0
- ouro_agent-0.2.0/tests/tui/test_preferences.py +243 -0
- ouro_agent-0.2.0/tests/tui/test_prompts.py +205 -0
- ouro_agent-0.2.0/tests/tui/test_provider_auth.py +520 -0
- ouro_agent-0.2.0/tests/tui/test_provider_protocols.py +254 -0
- ouro_agent-0.2.0/tests/tui/test_question_forms.py +169 -0
- ouro_agent-0.2.0/tests/tui/test_run_summaries.py +140 -0
- ouro_agent-0.2.0/tests/tui/test_session_input.py +338 -0
- ouro_agent-0.2.0/tests/tui/test_session_loading.py +171 -0
- ouro_agent-0.2.0/tests/tui/test_session_menus.py +276 -0
- ouro_agent-0.2.0/tests/tui/test_session_summaries.py +147 -0
- ouro_agent-0.2.0/tests/tui/test_session_titles.py +58 -0
- ouro_agent-0.2.0/tests/tui/test_state.py +404 -0
- ouro_agent-0.2.0/tests/tui/test_subagent_navigation.py +255 -0
- ouro_agent-0.2.0/tests/tui/test_tasks.py +736 -0
- ouro_agent-0.2.0/tests/tui/test_terminal.py +172 -0
- ouro_agent-0.2.0/tests/tui/test_text_inputs.py +78 -0
- ouro_agent-0.2.0/tests/tui/test_text_wrapping.py +260 -0
- ouro_agent-0.2.0/tests/tui/test_tool_presentations.py +645 -0
- ouro_agent-0.2.0/tests/tui/test_usage_presentation.py +108 -0
- ouro_agent-0.2.0/tests/tui/test_welcome_layout.py +88 -0
- ouro_agent-0.2.0/tests/tui/test_welcome_refresh.py +186 -0
- ouro_agent-0.2.0/tests/tui/test_welcome_styles.py +662 -0
- ouro_agent-0.2.0/tests/tui/test_windows_driver.py +138 -0
- ouro_agent-0.2.0/tests/tui/windows_console_probe.py +148 -0
- 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.
|
ouro_agent-0.2.0/LICENSE
ADDED
|
@@ -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
|
+
[](https://pypi.org/project/ouro-agent/)
|
|
34
|
+
[](https://www.python.org/downloads/)
|
|
35
|
+
[](https://github.com/djsaber/OURO/blob/main/LICENSE)
|
|
36
|
+
|
|
37
|
+
**本地优先、可灵活拓展的个人智能体。**
|
|
38
|
+
|
|
39
|
+
OURO 让你在终端中与模型协作,处理文件、调用工具、管理会话和执行持续任务。它提供全屏交互界面,也可以通过命令行完成单次任务或输出 JSON。会话与配置保存在本地,模型服务由你选择。
|
|
40
|
+
|
|
41
|
+
插件是 OURO 的核心拓展机制:除了工具、Skills 和 MCP,还可以拓展模型接入、智能体运行方式、后台任务及插件间协作,按需安装、启用和停用。
|
|
42
|
+
|
|
43
|
+

|
|
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
|
+
[](https://pypi.org/project/ouro-agent/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://github.com/djsaber/OURO/blob/main/LICENSE)
|
|
6
|
+
|
|
7
|
+
**本地优先、可灵活拓展的个人智能体。**
|
|
8
|
+
|
|
9
|
+
OURO 让你在终端中与模型协作,处理文件、调用工具、管理会话和执行持续任务。它提供全屏交互界面,也可以通过命令行完成单次任务或输出 JSON。会话与配置保存在本地,模型服务由你选择。
|
|
10
|
+
|
|
11
|
+
插件是 OURO 的核心拓展机制:除了工具、Skills 和 MCP,还可以拓展模型接入、智能体运行方式、后台任务及插件间协作,按需安装、启用和停用。
|
|
12
|
+
|
|
13
|
+

|
|
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)。
|