ouroboros-ai 0.25.2.dev79__tar.gz → 0.25.3.dev2__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.
Potentially problematic release.
This version of ouroboros-ai might be problematic. Click here for more details.
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.claude-plugin/marketplace.json +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.claude-plugin/plugin.json +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/release.yml +1 -10
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.gitignore +0 -22
- {ouroboros_ai-0.25.2.dev79/.claude-plugin → ouroboros_ai-0.25.3.dev2}/.mcp.json +1 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/CHANGELOG.md +2 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/CLAUDE.md +2 -2
- ouroboros_ai-0.25.3.dev2/CONTRIBUTING.md +466 -0
- ouroboros_ai-0.25.3.dev2/PKG-INFO +409 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/README.ko.md +36 -36
- ouroboros_ai-0.25.3.dev2/README.md +379 -0
- ouroboros_ai-0.25.3.dev2/agents/qa-judge.md +60 -0
- ouroboros_ai-0.25.3.dev2/agents/seed-architect.md +63 -0
- ouroboros_ai-0.25.3.dev2/agents/socratic-interviewer.md +37 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/README.md +14 -16
- ouroboros_ai-0.25.3.dev2/docs/api/README.md +178 -0
- ouroboros_ai-0.25.3.dev2/docs/api/coordinator-agent-design.md +226 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/api/core.md +1 -1
- ouroboros_ai-0.25.3.dev2/docs/api/parallel-dx-design.md +309 -0
- ouroboros_ai-0.25.3.dev2/docs/api/parallel-execution.md +367 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/architecture.md +271 -102
- ouroboros_ai-0.25.3.dev2/docs/cli-reference.md +543 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/contributing/architecture-overview.md +4 -4
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/contributing/key-patterns.md +1 -1
- ouroboros_ai-0.25.3.dev2/docs/getting-started.md +471 -0
- ouroboros_ai-0.25.3.dev2/docs/guides/cli-usage.md +862 -0
- ouroboros_ai-0.25.3.dev2/docs/guides/common-workflows.md +249 -0
- ouroboros_ai-0.25.3.dev2/docs/guides/language-support.md +109 -0
- ouroboros_ai-0.25.3.dev2/docs/guides/quick-start.md +162 -0
- ouroboros_ai-0.25.3.dev2/docs/guides/seed-authoring.md +342 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/guides/tui-usage.md +29 -6
- ouroboros_ai-0.25.3.dev2/docs/ontological-framework/HANDOFF.md +288 -0
- ouroboros_ai-0.25.3.dev2/docs/ontological-framework/aop-design.md +930 -0
- ouroboros_ai-0.25.3.dev2/docs/ontological-framework/architecture.md +519 -0
- ouroboros_ai-0.25.3.dev2/docs/ontological-framework/requirements.md +112 -0
- ouroboros_ai-0.25.3.dev2/docs/running-with-claude-code.md +218 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/dummy_seed.yaml +1 -1
- ouroboros_ai-0.25.3.dev2/playground/src/__init__.py +1 -0
- ouroboros_ai-0.25.3.dev2/playground/src/config.py +12 -0
- ouroboros_ai-0.25.3.dev2/playground/src/models.py +14 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/project-context.md +5 -6
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/pyproject.toml +4 -13
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/evolve/SKILL.md +3 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/help/SKILL.md +3 -3
- ouroboros_ai-0.25.3.dev2/skills/interview/SKILL.md +173 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/run/SKILL.md +0 -4
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/seed/SKILL.md +3 -6
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/setup/SKILL.md +22 -27
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/status/SKILL.md +0 -3
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/update/SKILL.md +3 -3
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/welcome/SKILL.md +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/_version.py +2 -2
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/architect.md +62 -0
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/contrarian.md +64 -0
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/evaluator.md +75 -0
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/hacker.md +60 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/loader.py +23 -10
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/ontologist.md +37 -0
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/researcher.md +61 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/seed-architect.md +1 -1
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/simplifier.md +66 -0
- ouroboros_ai-0.25.3.dev2/src/ouroboros/agents/socratic-interviewer.md +40 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/ambiguity.py +33 -14
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/explore.py +4 -4
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/interview.py +66 -249
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/seed_generator.py +3 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/init.py +29 -124
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/mcp.py +3 -104
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/run.py +20 -47
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/main.py +1 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/config/__init__.py +0 -46
- ouroboros_ai-0.25.3.dev2/src/ouroboros/config/loader.py +325 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/config/models.py +2 -71
- ouroboros_ai-0.25.3.dev2/src/ouroboros/core/__init__.py +82 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/context.py +25 -20
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/lineage.py +2 -104
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/ontology_questions.py +2 -4
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/security.py +0 -28
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/consensus.py +17 -14
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/json_utils.py +9 -28
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/models.py +3 -14
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/semantic.py +4 -21
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/base.py +1 -47
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/evaluation.py +0 -3
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/loop.py +0 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/reflect.py +4 -3
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/wonder.py +26 -63
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/atomicity.py +7 -6
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/decomposition.py +4 -5
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/double_diamond.py +4 -5
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/job_manager.py +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/adapter.py +26 -98
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/__init__.py +9 -41
- ouroboros_ai-0.25.3.dev2/src/ouroboros/mcp/tools/definitions.py +3605 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/qa.py +5 -12
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/__init__.py +11 -71
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/adapter.py +33 -547
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/coordinator.py +5 -209
- ouroboros_ai-0.25.3.dev2/src/ouroboros/orchestrator/dependency_analyzer.py +368 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/events.py +28 -56
- ouroboros_ai-0.25.3.dev2/src/ouroboros/orchestrator/mcp_tools.py +482 -0
- ouroboros_ai-0.25.3.dev2/src/ouroboros/orchestrator/parallel_executor.py +1720 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/runner.py +175 -556
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/session.py +29 -307
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/workflow_state.py +26 -485
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/event_store.py +29 -263
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/__init__.py +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/agents/__init__.py +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/agents/pool.py +3 -3
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/agents/registry.py +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/keywords.py +57 -102
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/registry.py +64 -181
- ouroboros_ai-0.25.3.dev2/src/ouroboros/providers/__init__.py +35 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/claude_code_adapter.py +6 -20
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/litellm_adapter.py +6 -65
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/strategies/devil_advocate.py +2 -3
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/app.py +67 -41
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/events.py +0 -4
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/dashboard_v3.py +0 -15
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/extractor.py +4 -2
- ouroboros_ai-0.25.3.dev2/tests/conftest.py +1 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/conftest.py +0 -12
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/test_cli_commands.py +5 -15
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/test_server_adapter.py +0 -37
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/agents/test_loader.py +12 -12
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_ambiguity.py +63 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_interview.py +39 -131
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_seed_generator.py +1 -2
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/test_main.py +5 -19
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -52
- ouroboros_ai-0.25.3.dev2/tests/unit/config/test_loader.py +393 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/config/test_models.py +0 -80
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_context.py +15 -8
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_consensus.py +6 -4
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_semantic.py +8 -31
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/events/test_base.py +0 -81
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/test_definitions.py +66 -879
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/test_qa_integration.py +47 -61
- ouroboros_ai-0.25.3.dev2/tests/unit/orchestrator/test_adapter.py +421 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_coordinator.py +35 -182
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_events.py +0 -10
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_inflight_cancellation.py +26 -32
- ouroboros_ai-0.25.3.dev2/tests/unit/orchestrator/test_mcp_tools.py +469 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_runner.py +43 -947
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_runner_cancellation.py +32 -44
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_session.py +1 -473
- ouroboros_ai-0.25.3.dev2/tests/unit/orchestrator/test_workflow_state.py +241 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_event_store.py +0 -196
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/agents/test_registry.py +1 -1
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/skills/test_registry.py +5 -240
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/test_litellm_adapter.py +6 -55
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_dependencies_configured.py +4 -9
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_events.py +0 -30
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/uv.lock +5 -848
- ouroboros_ai-0.25.2.dev79/CONTRIBUTING.md +0 -758
- ouroboros_ai-0.25.2.dev79/PKG-INFO +0 -510
- ouroboros_ai-0.25.2.dev79/README.md +0 -470
- ouroboros_ai-0.25.2.dev79/SECURITY.md +0 -70
- ouroboros_ai-0.25.2.dev79/docs/api/README.md +0 -54
- ouroboros_ai-0.25.2.dev79/docs/cli-reference.md +0 -690
- ouroboros_ai-0.25.2.dev79/docs/config-reference.md +0 -654
- ouroboros_ai-0.25.2.dev79/docs/contributing/findings-registry.md +0 -1369
- ouroboros_ai-0.25.2.dev79/docs/getting-started.md +0 -408
- ouroboros_ai-0.25.2.dev79/docs/guides/evaluation-pipeline.md +0 -541
- ouroboros_ai-0.25.2.dev79/docs/guides/evolution-loop.md +0 -140
- ouroboros_ai-0.25.2.dev79/docs/guides/seed-authoring.md +0 -745
- ouroboros_ai-0.25.2.dev79/docs/images/PLACEHOLDER_README.md +0 -18
- ouroboros_ai-0.25.2.dev79/docs/images/demo-evaluation.png +0 -0
- ouroboros_ai-0.25.2.dev79/docs/images/demo-interview.png +0 -0
- ouroboros_ai-0.25.2.dev79/docs/images/demo-seed.png +0 -0
- ouroboros_ai-0.25.2.dev79/docs/images/demo-tui-dashboard.png +0 -0
- ouroboros_ai-0.25.2.dev79/docs/platform-support.md +0 -63
- ouroboros_ai-0.25.2.dev79/docs/runtime-capability-matrix.md +0 -111
- ouroboros_ai-0.25.2.dev79/docs/runtime-guides/claude-code.md +0 -128
- ouroboros_ai-0.25.2.dev79/docs/runtime-guides/codex.md +0 -274
- ouroboros_ai-0.25.2.dev79/llms-full.txt +0 -652
- ouroboros_ai-0.25.2.dev79/llms.txt +0 -127
- ouroboros_ai-0.25.2.dev79/scripts/install.sh +0 -105
- ouroboros_ai-0.25.2.dev79/scripts/mcp-serve.sh +0 -13
- ouroboros_ai-0.25.2.dev79/skills/interview/SKILL.md +0 -253
- ouroboros_ai-0.25.2.dev79/src/ouroboros/agents/breadth-keeper.md +0 -39
- ouroboros_ai-0.25.2.dev79/src/ouroboros/agents/seed-closer.md +0 -39
- ouroboros_ai-0.25.2.dev79/src/ouroboros/agents/socratic-interviewer.md +0 -48
- ouroboros_ai-0.25.2.dev79/src/ouroboros/cli/commands/setup.py +0 -398
- ouroboros_ai-0.25.2.dev79/src/ouroboros/codex/__init__.py +0 -29
- ouroboros_ai-0.25.2.dev79/src/ouroboros/codex/artifacts.py +0 -405
- ouroboros_ai-0.25.2.dev79/src/ouroboros/codex/ouroboros.md +0 -36
- ouroboros_ai-0.25.2.dev79/src/ouroboros/codex_permissions.py +0 -62
- ouroboros_ai-0.25.2.dev79/src/ouroboros/config/loader.py +0 -861
- ouroboros_ai-0.25.2.dev79/src/ouroboros/core/__init__.py +0 -71
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/authoring_handlers.py +0 -985
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/definitions.py +0 -221
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -758
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/evolution_handlers.py +0 -704
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/execution_handlers.py +0 -720
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/job_handlers.py +0 -624
- ouroboros_ai-0.25.2.dev79/src/ouroboros/mcp/tools/query_handlers.py +0 -480
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -1714
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/command_dispatcher.py +0 -238
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/dependency_analyzer.py +0 -858
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -214
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/heartbeat.py +0 -176
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/mcp_tools.py +0 -2249
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/parallel_executor.py +0 -3138
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/parallel_executor_models.py +0 -227
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/runtime_factory.py +0 -86
- ouroboros_ai-0.25.2.dev79/src/ouroboros/orchestrator/runtime_message_projection.py +0 -511
- ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/__init__.py +0 -59
- ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/codex_cli_adapter.py +0 -934
- ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/codex_cli_stream.py +0 -158
- ouroboros_ai-0.25.2.dev79/src/ouroboros/providers/factory.py +0 -123
- ouroboros_ai-0.25.2.dev79/tests/conftest.py +0 -11
- ouroboros_ai-0.25.2.dev79/tests/integration/conftest.py +0 -179
- ouroboros_ai-0.25.2.dev79/tests/integration/test_codex_cli_passthrough_smoke.py +0 -129
- ouroboros_ai-0.25.2.dev79/tests/integration/test_codex_skill_fallback.py +0 -132
- ouroboros_ai-0.25.2.dev79/tests/integration/test_codex_skill_smoke.py +0 -139
- ouroboros_ai-0.25.2.dev79/tests/unit/cli/test_init_runtime.py +0 -102
- ouroboros_ai-0.25.2.dev79/tests/unit/cli/test_mcp_nested_guard.py +0 -54
- ouroboros_ai-0.25.2.dev79/tests/unit/cli/test_setup.py +0 -256
- ouroboros_ai-0.25.2.dev79/tests/unit/config/test_loader.py +0 -787
- ouroboros_ai-0.25.2.dev79/tests/unit/core/test_lineage.py +0 -226
- ouroboros_ai-0.25.2.dev79/tests/unit/evaluation/test_json_utils.py +0 -101
- ouroboros_ai-0.25.2.dev79/tests/unit/evolution/test_wonder_scope.py +0 -133
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_adapter.py +0 -1132
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -1194
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_command_dispatcher.py +0 -338
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_dependency_analyzer.py +0 -478
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -192
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_mcp_tools.py +0 -1227
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_parallel_executor.py +0 -2812
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -155
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_runtime_factory.py +0 -209
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_runtime_message_projection.py +0 -330
- ouroboros_ai-0.25.2.dev79/tests/unit/orchestrator/test_workflow_state.py +0 -498
- ouroboros_ai-0.25.2.dev79/tests/unit/plugin/skills/test_keywords.py +0 -121
- ouroboros_ai-0.25.2.dev79/tests/unit/providers/test_codex_cli_adapter.py +0 -568
- ouroboros_ai-0.25.2.dev79/tests/unit/providers/test_factory.py +0 -201
- ouroboros_ai-0.25.2.dev79/tests/unit/test_codex_artifacts.py +0 -689
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.claude/settings.json +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2/.claude-plugin}/.mcp.json +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.env.example +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/dev-publish.yml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/lint.yml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.github/workflows/test.yml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.pre-commit-config.yaml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/.python-version +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/HANDOFF.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/LICENSE +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/architect.md +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/contrarian.md +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/evaluator.md +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/hacker.md +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/ontologist.md +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/researcher.md +0 -0
- {ouroboros_ai-0.25.2.dev79/src/ouroboros → ouroboros_ai-0.25.3.dev2}/agents/simplifier.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/cancel.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/evaluate.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/evolve.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/help.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/interview.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/ralph.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/run.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/seed.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/setup.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/status.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/tutorial.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/unstuck.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/commands/welcome.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/.gitignore +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/Cargo.lock +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/Cargo.toml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/README.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/db.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/main.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/mock.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/state.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/execution.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/logs.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/mod.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/api/mcp.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/contributing/testing-guide.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/examples/mcp-config.yaml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/docs/images/ouroboros.png +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/coordinator_test_seed.yaml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/parallel_subac_test_seed.yaml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/subac_test_seed.yaml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/README.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/__main__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/cli.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/models.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/task_manager/storage.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/examples/test_display.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/hooks/hooks.json +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/drift-monitor.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/keyword-detector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/ralph-rewind.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/ralph.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/ralph.sh +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/session-start.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/scripts/version-check.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/cancel/SKILL.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/evaluate/SKILL.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/qa/SKILL.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/ralph/SKILL.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/tutorial/SKILL.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/skills/unstuck/SKILL.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/__main__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/advocate.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/analysis-agent.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/code-executor.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/codebase-explorer.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/consensus-reviewer.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/judge.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/ontology-analyst.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/qa-judge.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/research-agent.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/agents/semantic-evaluator.md +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/bigbang/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/cancel.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/config.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/status.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/commands/tui.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/panels.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/progress.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/tables.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/ac_tree.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/errors.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/file_lock.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/git_workflow.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/ontology_aspect.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/seed.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/text.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/core/types.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/artifact_collector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/languages.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/mechanical.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/pipeline.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evaluation/trigger.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/decomposition.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/interview.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/lineage.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/events/ontology.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/convergence.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/projector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/evolution/regression.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/execution/subagent.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/adapter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/manager.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/client/protocol.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/errors.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/resources/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/resources/handlers.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/protocol.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/server/security.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/dashboard.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/tools/registry.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/mcp/types.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/drift.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/logging.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/observability/retrospective.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/level_context.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/orchestrator/mcp_config.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/checkpoint.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/migrations/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/migrations/runner.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/schema.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/persistence/uow.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/orchestration/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/orchestration/router.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/orchestration/scheduler.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/docs.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/plugin/skills/executor.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/anthropic_adapter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/providers/base.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/py.typed +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/resilience/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/resilience/lateral.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/resilience/stagnation.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/complexity.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/downgrade.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/escalation.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/router.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/routing/tiers.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/secondary/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/secondary/scheduler.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/secondary/todo_registry.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/strategies/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/agents_panel.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/event_log.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/progress.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/components/token_tracker.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/dashboard.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/debug.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/execution.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/logs.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/screens/session_selector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/models.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/src/ouroboros/verification/verifier.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/test_full_workflow.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/e2e/test_session_persistence.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/fixtures/test_atomicity_seed.yml +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/conftest.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/test_client_adapter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/mcp/test_client_manager.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/plugin/test_orchestration.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/integration/test_entry_point.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/agents/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/bigbang/test_explore.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_console.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_panels.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_progress.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_tables.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/cli/test_cancel.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/config/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_ac_tree.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_errors.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_git_workflow.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_ontology_aspect.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_ontology_questions.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_security.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_seed.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/core/test_types.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_languages.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_mechanical.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_models.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/evaluation/test_trigger.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/events/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/events/test_decomposition_events.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_atomicity.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_decomposition.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_double_diamond.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/execution/test_subagent_isolation.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/client/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/client/test_adapter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/client/test_manager.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/conftest.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/server/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/server/test_adapter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/server/test_security.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/test_errors.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/test_job_manager.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/test_types.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/mcp/tools/test_registry.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/test_drift.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/test_logging.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/observability/test_retrospective.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_level_context.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/orchestrator/test_mcp_config.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_checkpoint.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_schema.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/persistence/test_uow.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/agents/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/orchestration/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/orchestration/test_model_router.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/plugin/skills/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/test_base.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/providers/test_claude_code_adapter.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/resilience/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/resilience/test_lateral.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/resilience/test_stagnation.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_complexity.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_downgrade.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_escalation.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_router.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/routing/test_tiers.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/scripts/test_keyword_detector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/scripts/test_version_check.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/secondary/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/secondary/test_scheduler.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/secondary/test_todo_registry.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_artifact_collector.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_convergence.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_dashboard.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_evolve_rewind.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_evolve_step.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_main_entry_point.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_module_structure.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_project_initialization.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_projector_rewind.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_ralph_parser.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_ralph_rewind.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_regression.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_tooling_configuration.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/test_verification.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/__init__.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_app.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_cancelled_display.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_lineage_viewer.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_screens.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tests/unit/tui/test_widgets.py +0 -0
- {ouroboros_ai-0.25.2.dev79 → ouroboros_ai-0.25.3.dev2}/tools/sync_github_project.py +0 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "ouroboros",
|
|
12
12
|
"description": "Transform vague ideas into validated seed specifications through Socratic questioning and ontological analysis",
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.25.2",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Q00",
|
|
16
16
|
"email": "jqyu.lee@gmail.com"
|
|
@@ -41,21 +41,12 @@ jobs:
|
|
|
41
41
|
run: |
|
|
42
42
|
uv publish --dry-run dist/*
|
|
43
43
|
|
|
44
|
-
- name: Detect pre-release
|
|
45
|
-
id: prerelease
|
|
46
|
-
run: |
|
|
47
|
-
if [[ "${{ github.ref_name }}" =~ (a|alpha|b|beta|rc|dev) ]]; then
|
|
48
|
-
echo "is_prerelease=true" >> "$GITHUB_OUTPUT"
|
|
49
|
-
else
|
|
50
|
-
echo "is_prerelease=false" >> "$GITHUB_OUTPUT"
|
|
51
|
-
fi
|
|
52
|
-
|
|
53
44
|
- name: Create GitHub Release
|
|
54
45
|
uses: softprops/action-gh-release@v2
|
|
55
46
|
with:
|
|
56
47
|
files: dist/*
|
|
57
48
|
draft: false
|
|
58
|
-
prerelease:
|
|
49
|
+
prerelease: false
|
|
59
50
|
generate_release_notes: true
|
|
60
51
|
env:
|
|
61
52
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -102,29 +102,7 @@ src/ouroboros/_version.py
|
|
|
102
102
|
_bmad/
|
|
103
103
|
.claude/commands/bmad/
|
|
104
104
|
.omc/
|
|
105
|
-
.smoke-home/
|
|
106
105
|
|
|
107
106
|
|
|
108
107
|
# Local archive for removed/held docs and assets
|
|
109
108
|
archive/
|
|
110
|
-
|
|
111
|
-
# Generated doc reports (regenerable via scripts/)
|
|
112
|
-
docs/link-index.md
|
|
113
|
-
docs/link-index.json
|
|
114
|
-
docs/cross-document-link-index.md
|
|
115
|
-
docs/section-content-index.md
|
|
116
|
-
docs/section-content-index.json
|
|
117
|
-
docs/semantic-link-rot-report.md
|
|
118
|
-
docs/doc-issues-register.md
|
|
119
|
-
docs/doc-volatility-report.md
|
|
120
|
-
docs/doc-volatility-report.json
|
|
121
|
-
docs/doc-maintenance-ranking.yaml
|
|
122
|
-
docs/findings-file-inventory.md
|
|
123
|
-
docs/claim-inventory.md
|
|
124
|
-
docs/config-inventory.md
|
|
125
|
-
docs/runtime-capability-crosscheck.md
|
|
126
|
-
docs/authority-model-migration-report.json
|
|
127
|
-
docs/claim-status-derivation-audit.yaml
|
|
128
|
-
docs/code-surface-inventory.yaml
|
|
129
|
-
docs/code-surface-lookup.yaml
|
|
130
|
-
docs/cli-inventory.yaml
|
|
@@ -71,7 +71,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
71
71
|
- `ralph` - Self-referential loop with verifier verification (includes ultrawork)
|
|
72
72
|
- `ultrapilot` - Parallel autopilot with file ownership partitioning
|
|
73
73
|
- `ecomode` - Token-efficient execution using haiku and sonnet
|
|
74
|
-
- `swarm` - N coordinated agents using native
|
|
74
|
+
- `swarm` - N coordinated agents using Claude Code native teams
|
|
75
75
|
- `pipeline` - Sequential agent chaining with data passing
|
|
76
76
|
- `tutorial` - Interactive guided tour for new users
|
|
77
77
|
- `swarm` - Team coordination mode
|
|
@@ -224,7 +224,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
224
224
|
- Resilience (Phase 3) - Stagnation detection and lateral thinking
|
|
225
225
|
- Evaluation (Phase 4) - Mechanical, semantic, and consensus evaluation
|
|
226
226
|
- Secondary Loop (Phase 5) - TODO registry and batch scheduler
|
|
227
|
-
- Orchestrator (Epic 8) -
|
|
227
|
+
- Orchestrator (Epic 8) - Claude Agent SDK integration
|
|
228
228
|
- CLI interface with Typer
|
|
229
229
|
- Event sourcing with SQLite persistence
|
|
230
230
|
- Structured logging with structlog
|
|
@@ -34,10 +34,10 @@ When the user types any of these commands, read the corresponding SKILL.md file
|
|
|
34
34
|
|
|
35
35
|
## Agents
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Custom agents are in `agents/`. When a skill references an agent (e.g., `ouroboros:socratic-interviewer`), read its definition from `agents/{name}.md` and adopt that role.
|
|
38
38
|
|
|
39
39
|
<!-- ooo:START -->
|
|
40
|
-
<!-- ooo:VERSION:0.
|
|
40
|
+
<!-- ooo:VERSION:0.25.1 -->
|
|
41
41
|
# Ouroboros — Specification-First AI Development
|
|
42
42
|
|
|
43
43
|
> Before telling AI what to build, define what should be built.
|
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
# Contributing to Ouroboros
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Ouroboros! This guide covers everything you need to get started.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Quick Setup](#quick-setup)
|
|
8
|
+
- [Development Workflow](#development-workflow)
|
|
9
|
+
- [Ways to Contribute](#ways-to-contribute)
|
|
10
|
+
- [Development Environment](#development-environment)
|
|
11
|
+
- [Code Style Guide](#code-style-guide)
|
|
12
|
+
- [Commit Message Convention](#commit-message-convention)
|
|
13
|
+
- [Project Structure](#project-structure)
|
|
14
|
+
- [Key Patterns](#key-patterns)
|
|
15
|
+
- [Contributor Docs](#contributor-docs)
|
|
16
|
+
- [Code of Conduct](#code-of-conduct)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Quick Setup
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Clone and install
|
|
24
|
+
git clone https://github.com/Q00/ouroboros
|
|
25
|
+
cd ouroboros
|
|
26
|
+
uv sync
|
|
27
|
+
|
|
28
|
+
# Verify
|
|
29
|
+
uv run ouroboros --version
|
|
30
|
+
uv run pytest tests/unit/ -q
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Requirements**: Python 3.14+, [uv](https://github.com/astral-sh/uv)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Development Workflow
|
|
38
|
+
|
|
39
|
+
### 1. Find or Create an Issue
|
|
40
|
+
|
|
41
|
+
- Check [GitHub Issues](https://github.com/Q00/ouroboros/issues) for open tasks
|
|
42
|
+
- For new features, open an issue first to discuss the approach
|
|
43
|
+
- Label your issue with appropriate tags: `bug`, `enhancement`, `documentation`, etc.
|
|
44
|
+
|
|
45
|
+
### 2. Branch
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git checkout -b feat/your-feature # for new features
|
|
49
|
+
git checkout -b fix/your-bugfix # for bug fixes
|
|
50
|
+
git checkout -b docs/your-changes # for documentation
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Code
|
|
54
|
+
|
|
55
|
+
- Follow the project structure (see [Architecture for Contributors](./docs/contributing/architecture-overview.md))
|
|
56
|
+
- Use frozen dataclasses or Pydantic models for data
|
|
57
|
+
- Use the `Result[T, E]` type instead of exceptions for expected failures
|
|
58
|
+
- Write tests alongside your code
|
|
59
|
+
|
|
60
|
+
### 4. Test
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Full unit test suite
|
|
64
|
+
uv run pytest tests/unit/ -v
|
|
65
|
+
|
|
66
|
+
# Specific module
|
|
67
|
+
uv run pytest tests/unit/evaluation/ -v
|
|
68
|
+
|
|
69
|
+
# With coverage
|
|
70
|
+
uv run pytest tests/unit/ --cov=src/ouroboros --cov-report=term-missing
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
See [Testing Guide](./docs/contributing/testing-guide.md) for more details.
|
|
74
|
+
|
|
75
|
+
### 5. Lint and Format
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Check
|
|
79
|
+
uv run ruff check src/ tests/
|
|
80
|
+
uv run ruff format --check src/ tests/
|
|
81
|
+
|
|
82
|
+
# Auto-fix
|
|
83
|
+
uv run ruff check --fix src/ tests/
|
|
84
|
+
uv run ruff format src/ tests/
|
|
85
|
+
|
|
86
|
+
# Type check
|
|
87
|
+
uv run mypy src/ouroboros
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 6. Submit PR
|
|
91
|
+
|
|
92
|
+
- Write a clear PR description explaining **what** and **why**
|
|
93
|
+
- Reference the related issue (e.g., `Closes #123`)
|
|
94
|
+
- Ensure all tests pass and linting is clean
|
|
95
|
+
- Wait for code review and address feedback
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Ways to Contribute
|
|
100
|
+
|
|
101
|
+
### Bug Reports
|
|
102
|
+
|
|
103
|
+
Found a bug? Please open an issue with:
|
|
104
|
+
|
|
105
|
+
1. **Clear title**: Summarize the bug
|
|
106
|
+
2. **Description**: Steps to reproduce, expected vs actual behavior
|
|
107
|
+
3. **Environment**: Python version, OS, `uv run ouroboros --version`
|
|
108
|
+
4. **Logs**: Relevant error messages or stack traces
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
## Bug Description
|
|
112
|
+
[What went wrong]
|
|
113
|
+
|
|
114
|
+
## Steps to Reproduce
|
|
115
|
+
1. Run `ooo interview "test"`
|
|
116
|
+
2. Enter X when prompted
|
|
117
|
+
3. Observe error
|
|
118
|
+
|
|
119
|
+
## Expected Behavior
|
|
120
|
+
[What should happen]
|
|
121
|
+
|
|
122
|
+
## Environment
|
|
123
|
+
- Python: 3.14.0
|
|
124
|
+
- Ouroboros: v0.9.0
|
|
125
|
+
- OS: macOS 15.2
|
|
126
|
+
|
|
127
|
+
## Logs
|
|
128
|
+
```
|
|
129
|
+
[paste error output]
|
|
130
|
+
```
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Feature Proposals
|
|
134
|
+
|
|
135
|
+
Have an idea? Open an issue with:
|
|
136
|
+
|
|
137
|
+
1. **Problem statement**: What problem does this solve?
|
|
138
|
+
2. **Proposed solution**: How should it work?
|
|
139
|
+
3. **Alternatives considered**: What other approaches did you think about?
|
|
140
|
+
4. **Scope**: Is this a breaking change? Can it be incremental?
|
|
141
|
+
|
|
142
|
+
### Pull Requests
|
|
143
|
+
|
|
144
|
+
When submitting a PR:
|
|
145
|
+
|
|
146
|
+
1. **Small, focused changes**: One logical change per PR
|
|
147
|
+
2. **Tests included**: New features need tests
|
|
148
|
+
3. **Docs updated**: Update relevant documentation
|
|
149
|
+
4. **Clean history**: Squash commits before submitting if needed
|
|
150
|
+
|
|
151
|
+
### Documentation
|
|
152
|
+
|
|
153
|
+
Help improve docs by:
|
|
154
|
+
|
|
155
|
+
- Fixing typos and unclear explanations
|
|
156
|
+
- Adding examples to existing features
|
|
157
|
+
- Translating documentation (if you speak multiple languages)
|
|
158
|
+
- Creating tutorials or guides
|
|
159
|
+
|
|
160
|
+
### Code Review
|
|
161
|
+
|
|
162
|
+
Review open PRs to:
|
|
163
|
+
|
|
164
|
+
- Catch bugs before merge
|
|
165
|
+
- Suggest improvements
|
|
166
|
+
- Learn the codebase
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Development Environment
|
|
171
|
+
|
|
172
|
+
### Environment Setup
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# Copy environment template
|
|
176
|
+
cp .env.example .env
|
|
177
|
+
|
|
178
|
+
# Edit .env with your API keys
|
|
179
|
+
# Required: ANTHROPIC_API_KEY or OPENAI_API_KEY
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Running Tests
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Unit tests (fast, no network)
|
|
186
|
+
uv run pytest tests/unit/ -v
|
|
187
|
+
|
|
188
|
+
# Integration tests (requires MCP server)
|
|
189
|
+
uv run pytest tests/integration/ -v
|
|
190
|
+
|
|
191
|
+
# E2E tests (full system)
|
|
192
|
+
uv run pytest tests/e2e/ -v
|
|
193
|
+
|
|
194
|
+
# Skip slow tests for fast iteration
|
|
195
|
+
uv run pytest tests/ --ignore=tests/unit/mcp --ignore=tests/integration/mcp --ignore=tests/e2e
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Testing Specific Features
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# TUI tests
|
|
202
|
+
uv run pytest tests/ --ignore=tests/unit/mcp --ignore=tests/integration/mcp --ignore=tests/e2e -k "tui or tree"
|
|
203
|
+
|
|
204
|
+
# Evaluation pipeline
|
|
205
|
+
uv run pytest tests/unit/evaluation/ -v
|
|
206
|
+
|
|
207
|
+
# Orchestrator
|
|
208
|
+
uv run pytest tests/unit/orchestrator/ -v
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Pre-commit Hooks (Optional)
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Install pre-commit hooks
|
|
215
|
+
uv run pre-commit install
|
|
216
|
+
|
|
217
|
+
# Hooks run automatically on git commit
|
|
218
|
+
# Manual run:
|
|
219
|
+
uv run pre-commit run --all-files
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Code Style Guide
|
|
225
|
+
|
|
226
|
+
### Formatting
|
|
227
|
+
|
|
228
|
+
- **Line length**: 100 characters
|
|
229
|
+
- **Quotes**: Double quotes for strings
|
|
230
|
+
- **Indentation**: 4 spaces (no tabs)
|
|
231
|
+
- **Tool**: Ruff (auto-formats on save)
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Format code
|
|
235
|
+
uv run ruff format src/ tests/
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Type Checking
|
|
239
|
+
|
|
240
|
+
- **Strict mode**: Enabled (`strict = true`)
|
|
241
|
+
- **No untyped defs**: All functions must have type hints
|
|
242
|
+
- **Tool**: mypy
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Type check
|
|
246
|
+
uv run mypy src/ouroboros
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Linting
|
|
250
|
+
|
|
251
|
+
Ruff enforces:
|
|
252
|
+
- Pycodestyle (E, W)
|
|
253
|
+
- Pyflakes (F)
|
|
254
|
+
- isort (I)
|
|
255
|
+
- flake8-bugbear (B)
|
|
256
|
+
- flake8-comprehensions (C4)
|
|
257
|
+
- pyupgrade (UP)
|
|
258
|
+
- flake8-unused-arguments (ARG)
|
|
259
|
+
- flake8-simplify (SIM)
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# Lint
|
|
263
|
+
uv run ruff check src/ tests/
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Python Version
|
|
267
|
+
|
|
268
|
+
- **Minimum**: Python 3.14
|
|
269
|
+
- **Target**: Python 3.14+
|
|
270
|
+
- Use modern Python features (type unions `|`, match statements, etc.)
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Commit Message Convention
|
|
275
|
+
|
|
276
|
+
We follow a simplified semantic commit format:
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
<type>(<scope>): <subject>
|
|
280
|
+
|
|
281
|
+
[optional body]
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Types
|
|
285
|
+
|
|
286
|
+
| Type | When to Use |
|
|
287
|
+
|------|-------------|
|
|
288
|
+
| `feat` | New feature |
|
|
289
|
+
| `fix` | Bug fix |
|
|
290
|
+
| `docs` | Documentation changes |
|
|
291
|
+
| `chore` | Build, tooling, dependency updates |
|
|
292
|
+
| `refactor` | Code refactoring (no behavior change) |
|
|
293
|
+
| `test` | Test changes |
|
|
294
|
+
| `perf` | Performance improvements |
|
|
295
|
+
|
|
296
|
+
### Scopes
|
|
297
|
+
|
|
298
|
+
Common scopes: `cli`, `tui`, `evaluation`, `orchestrator`, `mcp`, `plugin`, `core`
|
|
299
|
+
|
|
300
|
+
### Examples
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# Feature
|
|
304
|
+
git commit -m "feat(evaluation): add consensus trigger for seed drift > 0.3"
|
|
305
|
+
|
|
306
|
+
# Bug fix
|
|
307
|
+
git commit -m "fix(tui): resolve crash when AC tree is empty"
|
|
308
|
+
|
|
309
|
+
# Docs
|
|
310
|
+
git commit -m "docs: update CLI reference with new flags"
|
|
311
|
+
|
|
312
|
+
# Refactor
|
|
313
|
+
git commit -m "refactor(orchestrator): extract parallel execution to separate module"
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Body (Optional)
|
|
317
|
+
|
|
318
|
+
For complex changes, add a body explaining the **why**:
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
git commit -m "feat(evaluation): add stage 3 consensus trigger
|
|
322
|
+
|
|
323
|
+
This enables multi-model voting when:
|
|
324
|
+
- Seed is modified during execution
|
|
325
|
+
- Ontology evolves significantly
|
|
326
|
+
- Drift score exceeds 0.3
|
|
327
|
+
|
|
328
|
+
Closes #42"
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Project Structure
|
|
334
|
+
|
|
335
|
+
```
|
|
336
|
+
src/ouroboros/
|
|
337
|
+
core/ # Foundation: Result type, Seed, errors, context
|
|
338
|
+
bigbang/ # Phase 0: Interview and seed generation
|
|
339
|
+
routing/ # Phase 1: PAL Router (model tier selection)
|
|
340
|
+
execution/ # Phase 2: Double Diamond execution
|
|
341
|
+
resilience/ # Phase 3: Stagnation detection, lateral thinking
|
|
342
|
+
evaluation/ # Phase 4: Three-stage evaluation pipeline
|
|
343
|
+
secondary/ # Phase 5: TODO registry
|
|
344
|
+
orchestrator/ # Claude Agent SDK integration
|
|
345
|
+
providers/ # LLM provider adapters (LiteLLM)
|
|
346
|
+
persistence/ # Event sourcing, checkpoints
|
|
347
|
+
tui/ # Terminal UI (Textual)
|
|
348
|
+
cli/ # CLI commands (Typer)
|
|
349
|
+
mcp/ # Model Context Protocol server/client
|
|
350
|
+
config/ # Configuration management
|
|
351
|
+
|
|
352
|
+
tests/
|
|
353
|
+
unit/ # Fast, isolated tests (no network, no DB)
|
|
354
|
+
integration/ # Tests with real dependencies
|
|
355
|
+
e2e/ # End-to-end CLI tests
|
|
356
|
+
fixtures/ # Shared test data
|
|
357
|
+
|
|
358
|
+
.claude-plugin/ # Claude Code plugin definitions
|
|
359
|
+
agents/ # Custom agent prompts
|
|
360
|
+
skills/ # Plugin skill definitions
|
|
361
|
+
hooks/ # Plugin hooks
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## Key Patterns
|
|
367
|
+
|
|
368
|
+
Detailed explanations: [Key Patterns](./docs/contributing/key-patterns.md)
|
|
369
|
+
|
|
370
|
+
### Result Type for Error Handling
|
|
371
|
+
|
|
372
|
+
```python
|
|
373
|
+
from ouroboros.core.types import Result
|
|
374
|
+
|
|
375
|
+
def validate_score(score: float) -> Result[float, ValidationError]:
|
|
376
|
+
if 0.0 <= score <= 1.0:
|
|
377
|
+
return Result.ok(score)
|
|
378
|
+
return Result.err(ValidationError(f"Score {score} out of range"))
|
|
379
|
+
|
|
380
|
+
# Consume
|
|
381
|
+
result = validate_score(0.85)
|
|
382
|
+
if result.is_ok:
|
|
383
|
+
process(result.value)
|
|
384
|
+
else:
|
|
385
|
+
log_error(result.error.message)
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Frozen Dataclasses
|
|
389
|
+
|
|
390
|
+
```python
|
|
391
|
+
from dataclasses import dataclass
|
|
392
|
+
|
|
393
|
+
@dataclass(frozen=True, slots=True)
|
|
394
|
+
class CheckResult:
|
|
395
|
+
check_type: CheckType
|
|
396
|
+
passed: bool
|
|
397
|
+
message: str
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### Event Sourcing
|
|
401
|
+
|
|
402
|
+
```python
|
|
403
|
+
# Events are immutable and append-only
|
|
404
|
+
event = create_stage1_completed_event(execution_id="exec_123", ...)
|
|
405
|
+
await event_store.append(event)
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Protocol Classes
|
|
409
|
+
|
|
410
|
+
```python
|
|
411
|
+
from typing import Protocol
|
|
412
|
+
|
|
413
|
+
@runtime_checkable
|
|
414
|
+
class ExecutionStrategy(Protocol):
|
|
415
|
+
def get_tools(self) -> list[str]: ...
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## Contributor Docs
|
|
421
|
+
|
|
422
|
+
- [Architecture Overview](./docs/contributing/architecture-overview.md) - How the system fits together
|
|
423
|
+
- [Testing Guide](./docs/contributing/testing-guide.md) - How to write and run tests
|
|
424
|
+
- [Key Patterns](./docs/contributing/key-patterns.md) - Core patterns with code examples
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## Getting Help
|
|
429
|
+
|
|
430
|
+
- **GitHub Issues**: [Report bugs or request features](https://github.com/Q00/ouroboros/issues)
|
|
431
|
+
- **GitHub Discussions**: [Ask questions or share ideas](https://github.com/Q00/ouroboros/discussions)
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## Code of Conduct
|
|
436
|
+
|
|
437
|
+
### Our Pledge
|
|
438
|
+
|
|
439
|
+
We pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
440
|
+
|
|
441
|
+
### Our Standards
|
|
442
|
+
|
|
443
|
+
**Positive behavior includes**:
|
|
444
|
+
- Being respectful and inclusive
|
|
445
|
+
- Gracefully accepting constructive criticism
|
|
446
|
+
- Focusing on what is best for the community
|
|
447
|
+
- Showing empathy towards other community members
|
|
448
|
+
|
|
449
|
+
**Unacceptable behavior includes**:
|
|
450
|
+
- Harassment, trolling, or derogatory comments
|
|
451
|
+
- Personal or political attacks
|
|
452
|
+
- Public or private harassment
|
|
453
|
+
- Publishing private information without permission
|
|
454
|
+
- Any other conduct which could reasonably be considered inappropriate
|
|
455
|
+
|
|
456
|
+
### Enforcement
|
|
457
|
+
|
|
458
|
+
Project maintainers may remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct.
|
|
459
|
+
|
|
460
|
+
**Contact**: For any questions or concerns, please open a GitHub issue with the `conduct` label.
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## License
|
|
465
|
+
|
|
466
|
+
By contributing to Ouroboros, you agree that your contributions will be licensed under the [MIT License](LICENSE).
|