ouroboros-ai 0.26.2.dev37__tar.gz → 0.26.3.dev1__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.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.claude-plugin/marketplace.json +1 -1
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.claude-plugin/plugin.json +1 -1
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/PKG-INFO +12 -1
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/README.ko.md +11 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/README.md +11 -0
- ouroboros_ai-0.26.3.dev1/UNINSTALL.md +66 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/cli-reference.md +92 -12
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/install.sh +5 -7
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/pm/SKILL.md +20 -1
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/setup/SKILL.md +40 -11
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/update/SKILL.md +31 -9
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/_version.py +2 -2
- ouroboros_ai-0.26.3.dev1/src/ouroboros/cli/commands/config.py +441 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/setup.py +126 -55
- ouroboros_ai-0.26.3.dev1/src/ouroboros/cli/commands/uninstall.py +396 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/main.py +2 -1
- ouroboros_ai-0.26.3.dev1/tests/unit/cli/test_config.py +347 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_setup.py +164 -0
- ouroboros_ai-0.26.3.dev1/tests/unit/cli/test_uninstall.py +329 -0
- ouroboros_ai-0.26.2.dev37/src/ouroboros/cli/commands/config.py +0 -79
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.claude/settings.json +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.claude-plugin/.mcp.json +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.env.example +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/workflows/dev-publish.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/workflows/lint.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/workflows/release.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.github/workflows/test.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.gitignore +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.mcp.json +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.ouroboros/mechanical.toml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.pre-commit-config.yaml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/.python-version +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/CHANGELOG.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/CLAUDE.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/CODE_OF_CONDUCT.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/CONTRIBUTING.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/HANDOFF.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/LICENSE +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/SECURITY.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/cancel.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/evaluate.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/evolve.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/help.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/interview.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/ralph.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/run.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/seed.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/setup.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/status.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/tutorial.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/unstuck.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/commands/welcome.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/.gitignore +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/Cargo.lock +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/Cargo.toml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/README.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/db.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/main.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/mock.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/state.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/views/dashboard.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/views/execution.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/views/lineage.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/views/logs.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/views/mod.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/crates/ouroboros-tui/src/views/session_selector.rs +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/README.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/api/README.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/api/core.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/api/mcp.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/architecture.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/config-reference.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/contributing/architecture-overview.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/contributing/findings-registry.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/contributing/issue-quality-policy.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/contributing/key-patterns.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/contributing/testing-guide.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/examples/mcp-config.yaml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/getting-started.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/guides/evaluation-pipeline.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/guides/evolution-loop.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/guides/issue-176-subagent-mcp-inheritance.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/guides/seed-authoring.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/guides/tui-usage.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/images/PLACEHOLDER_README.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/images/ouroboros.png +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/platform-support.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/runtime-capability-matrix.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/runtime-guides/claude-code.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/docs/runtime-guides/codex.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/coordinator_test_seed.yaml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/dummy_seed.yaml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/parallel_subac_test_seed.yaml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/subac_test_seed.yaml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/task_manager/README.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/task_manager/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/task_manager/__main__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/task_manager/cli.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/task_manager/models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/task_manager/storage.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/examples/test_display.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/hooks/hooks.json +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/llms-full.txt +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/llms.txt +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/project-context.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/pyproject.toml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/drift-monitor.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/keyword-detector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/mcp-serve.sh +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/ralph-rewind.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/ralph.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/ralph.sh +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/session-start.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/sync-plugin-version.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/scripts/version-check.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/brownfield/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/cancel/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/evaluate/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/evolve/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/help/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/interview/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/qa/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/ralph/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/run/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/seed/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/status/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/tutorial/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/unstuck/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/skills/welcome/SKILL.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/__main__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/advocate.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/analysis-agent.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/architect.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/breadth-keeper.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/code-executor.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/codebase-explorer.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/consensus-reviewer.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/contrarian.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/evaluator.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/hacker.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/judge.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/loader.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/ontologist.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/ontology-analyst.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/qa-judge.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/research-agent.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/researcher.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/seed-architect.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/seed-closer.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/semantic-evaluator.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/simplifier.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/agents/socratic-interviewer.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/ambiguity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/brownfield.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/explore.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/interview.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/pm_document.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/pm_interview.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/pm_seed.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/question_classifier.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/bigbang/seed_generator.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/cancel.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/init.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/mcp.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/pm.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/run.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/status.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/commands/tui.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/formatters/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/formatters/panels.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/formatters/progress.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/formatters/tables.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/cli/formatters/workflow_display.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/codex/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/codex/artifacts.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/codex/ouroboros.md +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/codex_permissions.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/config/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/config/loader.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/config/models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/ac_tree.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/context.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/errors.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/file_lock.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/git_workflow.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/lineage.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/ontology_aspect.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/ontology_questions.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/project_paths.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/security.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/seed.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/text.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/types.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/core/worktree.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/artifact_collector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/consensus.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/json_utils.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/languages.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/mechanical.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/pipeline.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/semantic.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/trigger.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evaluation/verification_artifacts.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/base.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/decomposition.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/evaluation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/interview.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/lineage.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/events/ontology.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/convergence.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/loop.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/projector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/reflect.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/regression.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/evolution/wonder.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/execution/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/execution/atomicity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/execution/decomposition.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/execution/double_diamond.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/execution/subagent.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/client/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/client/adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/client/manager.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/client/protocol.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/errors.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/job_manager.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/resources/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/resources/handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/server/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/server/adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/server/protocol.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/server/security.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/authoring_handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/brownfield_handler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/dashboard.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/definitions.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/evaluation_handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/evolution_handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/execution_handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/job_handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/pm_handler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/qa.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/query_handlers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/tools/registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/mcp/types.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/observability/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/observability/drift.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/observability/logging.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/observability/retrospective.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/codex_cli_runtime.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/command_dispatcher.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/coordinator.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/dependency_analyzer.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/events.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/execution_runtime_scope.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/execution_strategy.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/heartbeat.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/level_context.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/mcp_config.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/mcp_tools.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/parallel_executor.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/parallel_executor_models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/runner.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/runtime_factory.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/runtime_message_projection.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/session.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/orchestrator/workflow_state.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/brownfield.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/checkpoint.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/event_store.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/migrations/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/migrations/runner.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/migrations/scripts/002_brownfield.sql +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/schema.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/persistence/uow.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/agents/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/agents/pool.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/agents/registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/orchestration/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/orchestration/router.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/orchestration/scheduler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/skills/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/skills/docs.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/skills/executor.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/skills/keywords.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/plugin/skills/registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/pm/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/pm/renderer.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/anthropic_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/base.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/claude_code_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/codex_cli_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/codex_cli_stream.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/factory.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/providers/litellm_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/py.typed +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/resilience/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/resilience/lateral.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/resilience/stagnation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/routing/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/routing/complexity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/routing/downgrade.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/routing/escalation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/routing/router.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/routing/tiers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/secondary/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/secondary/scheduler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/secondary/todo_registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/strategies/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/strategies/devil_advocate.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/app.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/components/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/components/agents_panel.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/components/event_log.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/components/progress.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/components/token_tracker.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/events.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/confirm_rewind.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/dashboard.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/dashboard_v2.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/dashboard_v3.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/debug.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/execution.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/hud_dashboard.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/lineage_detail.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/lineage_selector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/logs.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/screens/session_selector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/ac_progress.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/ac_tree.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/agent_activity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/cost_tracker.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/drift_meter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/lineage_tree.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/parallel_graph.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/tui/widgets/phase_progress.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/verification/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/verification/extractor.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/verification/models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/src/ouroboros/verification/verifier.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/conftest.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/e2e/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/e2e/conftest.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/e2e/test_cli_commands.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/e2e/test_full_workflow.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/e2e/test_session_persistence.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/fixtures/test_atomicity_seed.yml +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/conftest.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/mcp/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/mcp/conftest.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/mcp/test_client_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/mcp/test_client_manager.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/mcp/test_server_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/plugin/test_orchestration.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/test_codex_cli_passthrough_smoke.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/test_codex_skill_fallback.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/test_codex_skill_smoke.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/integration/test_entry_point.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/agents/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/agents/test_loader.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_ambiguity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_brownfield.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_classifier_context.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_decide_later_items.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_explore.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_interview.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_pm_document_generator.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_pm_document_writer.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_pm_interview.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_pm_interview_brownfield_db.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_pm_seed_ac12.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_pm_seed_save.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_question_classifier.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/bigbang/test_seed_generator.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/formatters/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/formatters/test_console.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/formatters/test_panels.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/formatters/test_progress.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/formatters/test_tables.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/formatters/test_workflow_display.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_cancel.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_init_pm_seed_detection.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_init_runtime.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_main.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_mcp_nested_guard.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_mcp_startup_cleanup.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_pm_brownfield.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_pm_overwrite.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_pm_select_repos.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/cli/test_run_qa.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/config/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/config/test_loader.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/config/test_models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_ac_tree.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_context.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_errors.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_git_workflow.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_lineage.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_ontology_aspect.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_ontology_questions.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_security.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_seed.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_types.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/core/test_worktree.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_consensus.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_json_utils.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_languages.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_mechanical.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_models.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_semantic.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_trigger.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evaluation/test_verification_artifacts.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/events/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/events/test_base.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/events/test_decomposition_events.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/evolution/test_wonder_scope.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/execution/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/execution/test_atomicity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/execution/test_decomposition.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/execution/test_double_diamond.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/execution/test_subagent_isolation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/client/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/client/test_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/client/test_manager.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/conftest.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/server/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/server/test_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/server/test_security.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/test_errors.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/test_job_manager.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/test_types.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/conftest.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_brownfield_handler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_definitions.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_pm_handler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_pm_handler_generate.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_pm_handler_pending_reframe.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_qa_integration.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/mcp/tools/test_registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/observability/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/observability/test_drift.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/observability/test_logging.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/observability/test_retrospective.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_codex_cli_runtime.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_codex_recursion_guard.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_command_dispatcher.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_coordinator.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_dependency_analyzer.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_events.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_execution_runtime_scope.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_execution_strategy.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_inflight_cancellation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_level_context.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_mcp_config.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_mcp_tools.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_parallel_executor.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_parallel_executor_retry_resume.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_runner.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_runner_cancellation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_runtime_factory.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_runtime_message_projection.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_session.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/orchestrator/test_workflow_state.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/persistence/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/persistence/test_brownfield_store.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/persistence/test_checkpoint.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/persistence/test_event_store.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/persistence/test_schema.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/persistence/test_uow.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/agents/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/agents/test_registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/orchestration/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/orchestration/test_model_router.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/skills/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/skills/test_keywords.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/plugin/skills/test_registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/pm/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/pm/test_renderer.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/providers/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/providers/test_base.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/providers/test_claude_code_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/providers/test_codex_cli_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/providers/test_factory.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/providers/test_litellm_adapter.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/resilience/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/resilience/test_lateral.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/resilience/test_stagnation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/routing/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/routing/test_complexity.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/routing/test_downgrade.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/routing/test_escalation.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/routing/test_router.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/routing/test_tiers.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/scripts/test_keyword_detector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/scripts/test_version_check.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/secondary/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/secondary/test_scheduler.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/secondary/test_todo_registry.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_artifact_collector.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_codex_artifacts.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_convergence.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_dashboard.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_dependencies_configured.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_evolve_rewind.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_evolve_step.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_graceful_shutdown.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_main_entry_point.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_module_structure.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_project_initialization.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_projector_rewind.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_ralph_parser.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_ralph_rewind.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_regression.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_tooling_configuration.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/test_verification.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/__init__.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_app.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_cancelled_display.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_events.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_lineage_viewer.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_screens.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_session_selector_replay.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tests/unit/tui/test_widgets.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/tools/sync_github_project.py +0 -0
- {ouroboros_ai-0.26.2.dev37 → ouroboros_ai-0.26.3.dev1}/uv.lock +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.26.
|
|
13
|
+
"version": "0.26.2",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Q00",
|
|
16
16
|
"email": "jqyu.lee@gmail.com"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ouroboros-ai
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.3.dev1
|
|
4
4
|
Summary: Specification-first workflow engine for AI coding agents. Works with Claude Code and Codex CLI.
|
|
5
5
|
Author-email: Q00 <jqyu.lee@gmail.com>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -143,6 +143,17 @@ See runtime guides: [Claude Code](./docs/runtime-guides/claude-code.md) · [Code
|
|
|
143
143
|
|
|
144
144
|
</details>
|
|
145
145
|
|
|
146
|
+
<details>
|
|
147
|
+
<summary><strong>Uninstall</strong></summary>
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
ouroboros uninstall
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Removes all configuration, MCP registration, and data. See [UNINSTALL.md](./UNINSTALL.md) for details.
|
|
154
|
+
|
|
155
|
+
</details>
|
|
156
|
+
|
|
146
157
|
> **Python >= 3.12 required.** See [pyproject.toml](./pyproject.toml) for the full dependency list.
|
|
147
158
|
|
|
148
159
|
---
|
|
@@ -127,6 +127,17 @@ ouroboros setup # 런타임 설정
|
|
|
127
127
|
|
|
128
128
|
</details>
|
|
129
129
|
|
|
130
|
+
<details>
|
|
131
|
+
<summary><strong>완전 삭제</strong></summary>
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
ouroboros uninstall
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
모든 설정, MCP 등록, 데이터를 제거합니다. 자세한 내용은 [UNINSTALL.md](./UNINSTALL.md)를 참고하세요.
|
|
138
|
+
|
|
139
|
+
</details>
|
|
140
|
+
|
|
130
141
|
<details>
|
|
131
142
|
<summary><strong>무슨 일이 일어났나요?</strong></summary>
|
|
132
143
|
|
|
@@ -103,6 +103,17 @@ See runtime guides: [Claude Code](./docs/runtime-guides/claude-code.md) · [Code
|
|
|
103
103
|
|
|
104
104
|
</details>
|
|
105
105
|
|
|
106
|
+
<details>
|
|
107
|
+
<summary><strong>Uninstall</strong></summary>
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
ouroboros uninstall
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Removes all configuration, MCP registration, and data. See [UNINSTALL.md](./UNINSTALL.md) for details.
|
|
114
|
+
|
|
115
|
+
</details>
|
|
116
|
+
|
|
106
117
|
> **Python >= 3.12 required.** See [pyproject.toml](./pyproject.toml) for the full dependency list.
|
|
107
118
|
|
|
108
119
|
---
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Clean Uninstall Guide
|
|
2
|
+
|
|
3
|
+
## One Command
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
ouroboros uninstall
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
This interactively removes all Ouroboros configuration:
|
|
10
|
+
- MCP server registration (`~/.claude/mcp.json`, `~/.codex/config.toml`)
|
|
11
|
+
- CLAUDE.md integration block (`<!-- ooo:START -->` ... `<!-- ooo:END -->`)
|
|
12
|
+
- Codex rules and skills (`~/.codex/rules/ouroboros.md`, `~/.codex/skills/ouroboros/`)
|
|
13
|
+
- Project-level config (`.ouroboros/`)
|
|
14
|
+
- Data directory (`~/.ouroboros/` — config, credentials, DB, seeds, logs, locks, prefs)
|
|
15
|
+
|
|
16
|
+
Then finish with:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
uv tool uninstall ouroboros-ai # or: pip uninstall ouroboros-ai
|
|
20
|
+
claude plugin uninstall ouroboros # if using Claude Code plugin
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Options
|
|
24
|
+
|
|
25
|
+
| Flag | Effect |
|
|
26
|
+
|:-----|:-------|
|
|
27
|
+
| `-y`, `--yes` | Skip confirmation prompt |
|
|
28
|
+
| `--dry-run` | Preview what would be removed, change nothing |
|
|
29
|
+
| `--keep-data` | Keep entire `~/.ouroboros/` (config, credentials, seeds, DB, logs) |
|
|
30
|
+
|
|
31
|
+
### Inside Claude Code
|
|
32
|
+
|
|
33
|
+
Inside an active Claude Code session, type:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/ouroboros:setup --uninstall
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This is a **skill command** (not a CLI flag) that removes MCP registration and the CLAUDE.md block interactively.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## What Lives Where
|
|
44
|
+
|
|
45
|
+
| Path | Created by | Contents |
|
|
46
|
+
|:-----|:-----------|:---------|
|
|
47
|
+
| `~/.claude/mcp.json` | `ooo setup` / `ouroboros setup` | MCP server entry |
|
|
48
|
+
| `~/.codex/config.toml` | `ouroboros setup --runtime codex` | Codex MCP section |
|
|
49
|
+
| `~/.codex/rules/ouroboros.md` | `ouroboros setup --runtime codex` | Codex rules |
|
|
50
|
+
| `~/.codex/skills/ouroboros/` | `ouroboros setup --runtime codex` | Codex skills |
|
|
51
|
+
| `CLAUDE.md` | `ooo setup` | Command reference block |
|
|
52
|
+
| `~/.ouroboros/config.yaml` | `ouroboros setup` | Runtime configuration |
|
|
53
|
+
| `~/.ouroboros/credentials.yaml` | `ouroboros setup` | API credentials |
|
|
54
|
+
| `~/.ouroboros/ouroboros.db` | First run | Event store + brownfield registry |
|
|
55
|
+
| `~/.ouroboros/seeds/` | `ooo seed` / `ooo interview` | Generated seed specs |
|
|
56
|
+
| `~/.ouroboros/data/` | `ooo interview` | Interview state |
|
|
57
|
+
| `~/.ouroboros/logs/` | Any run | Log files |
|
|
58
|
+
| `~/.ouroboros/locks/` | `ooo run` | Heartbeat locks |
|
|
59
|
+
| `~/.ouroboros/prefs.json` | `ooo setup` | Preferences |
|
|
60
|
+
| `.ouroboros/` (project) | `ooo evaluate` | Mechanical eval config |
|
|
61
|
+
|
|
62
|
+
## What Is NOT Removed
|
|
63
|
+
|
|
64
|
+
- Your project source code and git history
|
|
65
|
+
- Generated seed YAML files copied outside `~/.ouroboros/seeds/`
|
|
66
|
+
- Package manager caches (run `uv cache clean ouroboros-ai` or `pip cache purge` if needed)
|
|
@@ -42,7 +42,8 @@ ouroboros [OPTIONS] COMMAND [ARGS]...
|
|
|
42
42
|
| `init` | Start interactive interview to refine requirements |
|
|
43
43
|
| `run` | Execute Ouroboros workflows |
|
|
44
44
|
| `cancel` | Cancel stuck or orphaned executions |
|
|
45
|
-
| `config` | Manage Ouroboros configuration |
|
|
45
|
+
| `config` | Manage Ouroboros configuration (show, switch backend, set values) |
|
|
46
|
+
| `uninstall` | Cleanly remove all Ouroboros configuration from your system |
|
|
46
47
|
| `status` | Check Ouroboros system status |
|
|
47
48
|
| `tui` | Interactive TUI monitor for real-time workflow monitoring |
|
|
48
49
|
| `monitor` | Shorthand for `tui monitor` |
|
|
@@ -311,11 +312,9 @@ ouroboros cancel execution orch_abc123 --reason "Stuck for 2 hours"
|
|
|
311
312
|
|
|
312
313
|
Manage Ouroboros configuration.
|
|
313
314
|
|
|
314
|
-
> **Current state:** the `config` subcommands are scaffolding. They currently print placeholder output and do not mutate `~/.ouroboros/config.yaml`. Use `ouroboros setup` for initial runtime setup, then edit `~/.ouroboros/config.yaml` directly for manual changes.
|
|
315
|
-
|
|
316
315
|
### `config show`
|
|
317
316
|
|
|
318
|
-
Display current configuration.
|
|
317
|
+
Display current configuration summary, or a specific section.
|
|
319
318
|
|
|
320
319
|
```bash
|
|
321
320
|
ouroboros config show [SECTION]
|
|
@@ -325,16 +324,43 @@ ouroboros config show [SECTION]
|
|
|
325
324
|
|
|
326
325
|
| Argument | Description |
|
|
327
326
|
|----------|-------------|
|
|
328
|
-
| `SECTION` | Configuration section to display (e.g., `
|
|
327
|
+
| `SECTION` | Configuration section to display (e.g., `orchestrator`, `llm`, `consensus`) |
|
|
329
328
|
|
|
330
329
|
**Examples:**
|
|
331
330
|
|
|
332
331
|
```bash
|
|
333
|
-
# Show
|
|
332
|
+
# Show configuration summary (backend, CLI path, DB, log level)
|
|
334
333
|
ouroboros config show
|
|
335
334
|
|
|
336
|
-
# Show only
|
|
337
|
-
ouroboros config show
|
|
335
|
+
# Show only orchestrator section
|
|
336
|
+
ouroboros config show orchestrator
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### `config backend`
|
|
340
|
+
|
|
341
|
+
Show or switch the runtime backend. This sets both `orchestrator.runtime_backend` and `llm.backend` together — they are always kept in sync for simplicity. Advanced users can decouple them with `config set`.
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
ouroboros config backend [BACKEND]
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**Arguments:**
|
|
348
|
+
|
|
349
|
+
| Argument | Description |
|
|
350
|
+
|----------|-------------|
|
|
351
|
+
| `BACKEND` | Backend to switch to: `claude` or `codex`. Omit to show current |
|
|
352
|
+
|
|
353
|
+
**Examples:**
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Show current backend
|
|
357
|
+
ouroboros config backend
|
|
358
|
+
|
|
359
|
+
# Switch to Codex CLI
|
|
360
|
+
ouroboros config backend codex
|
|
361
|
+
|
|
362
|
+
# Switch to Claude Code
|
|
363
|
+
ouroboros config backend claude
|
|
338
364
|
```
|
|
339
365
|
|
|
340
366
|
### `config init`
|
|
@@ -349,7 +375,7 @@ Creates `~/.ouroboros/config.yaml` and `~/.ouroboros/credentials.yaml` with defa
|
|
|
349
375
|
|
|
350
376
|
### `config set`
|
|
351
377
|
|
|
352
|
-
Set a configuration value.
|
|
378
|
+
Set a configuration value using dot notation.
|
|
353
379
|
|
|
354
380
|
```bash
|
|
355
381
|
ouroboros config set KEY VALUE
|
|
@@ -365,13 +391,16 @@ ouroboros config set KEY VALUE
|
|
|
365
391
|
**Examples:**
|
|
366
392
|
|
|
367
393
|
```bash
|
|
368
|
-
#
|
|
369
|
-
ouroboros config set
|
|
394
|
+
# Change log level
|
|
395
|
+
ouroboros config set logging.level debug
|
|
396
|
+
|
|
397
|
+
# Override LLM backend separately from runtime backend
|
|
398
|
+
ouroboros config set llm.backend litellm
|
|
370
399
|
```
|
|
371
400
|
|
|
372
401
|
### `config validate`
|
|
373
402
|
|
|
374
|
-
Validate current configuration.
|
|
403
|
+
Validate current configuration. Checks that the runtime backend is supported and the CLI binary path exists.
|
|
375
404
|
|
|
376
405
|
```bash
|
|
377
406
|
ouroboros config validate
|
|
@@ -379,6 +408,57 @@ ouroboros config validate
|
|
|
379
408
|
|
|
380
409
|
---
|
|
381
410
|
|
|
411
|
+
## `ouroboros uninstall`
|
|
412
|
+
|
|
413
|
+
Cleanly remove all Ouroboros configuration from your system. Reverses everything `ouroboros setup` did.
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
ouroboros uninstall [OPTIONS]
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Options:**
|
|
420
|
+
|
|
421
|
+
| Option | Description |
|
|
422
|
+
|--------|-------------|
|
|
423
|
+
| `--keep-data` | Keep entire `~/.ouroboros/` directory (config, credentials, seeds, logs, DB) |
|
|
424
|
+
| `--dry-run` | Show what would be removed without actually deleting |
|
|
425
|
+
| `-y, --yes` | Skip confirmation prompt |
|
|
426
|
+
|
|
427
|
+
**Examples:**
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
# Interactive uninstall (shows what will be removed, asks for confirmation)
|
|
431
|
+
ouroboros uninstall
|
|
432
|
+
|
|
433
|
+
# Non-interactive
|
|
434
|
+
ouroboros uninstall -y
|
|
435
|
+
|
|
436
|
+
# Preview only
|
|
437
|
+
ouroboros uninstall --dry-run
|
|
438
|
+
|
|
439
|
+
# Remove MCP/artifacts but keep ~/.ouroboros/
|
|
440
|
+
ouroboros uninstall --keep-data
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**What it removes:**
|
|
444
|
+
|
|
445
|
+
- `ouroboros` entry from `~/.claude/mcp.json`
|
|
446
|
+
- `[mcp_servers.ouroboros]` section from `~/.codex/config.toml`
|
|
447
|
+
- `~/.codex/rules/ouroboros.md` and `~/.codex/skills/ouroboros/`
|
|
448
|
+
- `<!-- ooo:START -->` … `<!-- ooo:END -->` block from `CLAUDE.md`
|
|
449
|
+
- `.ouroboros/` directory in the current project
|
|
450
|
+
- `~/.ouroboros/` directory (unless `--keep-data`)
|
|
451
|
+
|
|
452
|
+
**What it does NOT remove:**
|
|
453
|
+
|
|
454
|
+
- The Python package — run `pip uninstall ouroboros-ai` or `uv tool uninstall ouroboros-ai` separately
|
|
455
|
+
- The Claude Code plugin — run `claude plugin uninstall ouroboros` separately
|
|
456
|
+
- Your project source code or git history
|
|
457
|
+
|
|
458
|
+
See [UNINSTALL.md](../UNINSTALL.md) for the full guide.
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
382
462
|
## `ouroboros status`
|
|
383
463
|
|
|
384
464
|
Check Ouroboros system status.
|
|
@@ -140,11 +140,9 @@ if [ "$HAS_UV" = true ]; then
|
|
|
140
140
|
elif [ "$HAS_PIPX" = true ]; then
|
|
141
141
|
INSTALL_METHOD="pipx"
|
|
142
142
|
if [ -n "$PRE_FLAG" ]; then
|
|
143
|
-
pipx install --pip-args='--pre' "$INSTALL_SPEC"
|
|
144
|
-
|| pipx upgrade --pip-args='--pre' "$INSTALL_SPEC"
|
|
143
|
+
pipx install --force --pip-args='--pre' "$INSTALL_SPEC"
|
|
145
144
|
else
|
|
146
|
-
pipx install "$INSTALL_SPEC"
|
|
147
|
-
|| pipx upgrade "$INSTALL_SPEC"
|
|
145
|
+
pipx install --force "$INSTALL_SPEC"
|
|
148
146
|
fi
|
|
149
147
|
else
|
|
150
148
|
INSTALL_METHOD="pip"
|
|
@@ -184,11 +182,11 @@ if command -v claude &>/dev/null; then
|
|
|
184
182
|
|
|
185
183
|
# MCP command matches the installer that actually ran in step 3
|
|
186
184
|
if [ "$INSTALL_METHOD" = "uv" ]; then
|
|
187
|
-
OUROBOROS_ENTRY='{"command":"uvx","args":["--from","ouroboros-ai[claude]","ouroboros","mcp","serve"]
|
|
185
|
+
OUROBOROS_ENTRY='{"command":"uvx","args":["--from","ouroboros-ai[claude]","ouroboros","mcp","serve"]}'
|
|
188
186
|
elif [ "$INSTALL_METHOD" = "pipx" ]; then
|
|
189
|
-
OUROBOROS_ENTRY='{"command":"ouroboros","args":["mcp","serve"]
|
|
187
|
+
OUROBOROS_ENTRY='{"command":"ouroboros","args":["mcp","serve"]}'
|
|
190
188
|
else
|
|
191
|
-
OUROBOROS_ENTRY='{"command":"python3","args":["-m","ouroboros","mcp","serve"]
|
|
189
|
+
OUROBOROS_ENTRY='{"command":"python3","args":["-m","ouroboros","mcp","serve"]}'
|
|
192
190
|
fi
|
|
193
191
|
|
|
194
192
|
# Find a working Python: system python3, or uv-managed python
|
|
@@ -15,7 +15,26 @@ PM-focused Socratic interview that produces a Product Requirements Document.
|
|
|
15
15
|
ToolSearch query: "+ouroboros pm_interview"
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
If not found →
|
|
18
|
+
If not found → **diagnose before telling user to run setup**:
|
|
19
|
+
|
|
20
|
+
1. Check if MCP is already configured:
|
|
21
|
+
```bash
|
|
22
|
+
grep -q '"ouroboros"' ~/.claude/mcp.json 2>/dev/null && echo "CONFIGURED" || echo "NOT_CONFIGURED"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. **If NOT_CONFIGURED** → tell user to run `ooo setup` first. Stop.
|
|
26
|
+
|
|
27
|
+
3. **If CONFIGURED** → MCP is registered but the server isn't connecting. Do NOT tell the user to run `ooo setup` again. Instead show:
|
|
28
|
+
```
|
|
29
|
+
Ouroboros MCP is configured but not connected.
|
|
30
|
+
|
|
31
|
+
Try these steps in order:
|
|
32
|
+
1. Restart Claude Code (Cmd+Shift+P → "Reload Window" or close/reopen terminal)
|
|
33
|
+
2. Check MCP status: type /mcp in Claude Code
|
|
34
|
+
3. If ouroboros shows "error", try: ooo update
|
|
35
|
+
4. If still failing, re-run: ooo setup
|
|
36
|
+
```
|
|
37
|
+
Stop.
|
|
19
38
|
|
|
20
39
|
### Step 2: Start Interview
|
|
21
40
|
|
|
@@ -123,16 +123,44 @@ Runtime backend [✓] Detected
|
|
|
123
123
|
|
|
124
124
|
| Environment | Mode | Action |
|
|
125
125
|
|:------------|:-----|:-------|
|
|
126
|
-
| uvx +
|
|
127
|
-
|
|
|
126
|
+
| uvx + Python >= 3.12 | **Ready** | Proceed to MCP registration (uvx mode — extras always included) |
|
|
127
|
+
| No uvx + `ouroboros` binary in PATH | **Check deps** | Verify `[claude]` extras, then proceed (binary mode) |
|
|
128
|
+
| No uvx + Python >= 3.12 + `python3 -m ouroboros` works | **Check deps** | Verify `[claude]` extras, then proceed (pip mode) |
|
|
128
129
|
| uvx + Python < 3.12 only | **Install needed** | Run `uv python install 3.12` then proceed |
|
|
129
|
-
| No uvx | **Install needed** |
|
|
130
|
+
| No uvx + no ouroboros binary + no pip package | **Install needed** | Install uv first, then proceed |
|
|
130
131
|
|
|
131
|
-
**
|
|
132
|
+
**For binary/pip modes — verify `[claude]` extras are installed:**
|
|
133
|
+
|
|
134
|
+
Check method depends on how ouroboros was installed:
|
|
135
|
+
```bash
|
|
136
|
+
# Detect install method
|
|
137
|
+
pipx list 2>/dev/null | grep -q ouroboros && echo "PIPX" || echo "NOT_PIPX"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- **pipx users** (binary mode, installed via pipx):
|
|
141
|
+
```bash
|
|
142
|
+
pipx runpip ouroboros-ai show claude-agent-sdk 2>/dev/null && echo "DEPS_OK" || echo "DEPS_MISSING"
|
|
143
|
+
```
|
|
144
|
+
If `DEPS_MISSING`: `pipx install --force ouroboros-ai[claude]`
|
|
145
|
+
|
|
146
|
+
- **pip users** (pip mode):
|
|
147
|
+
```bash
|
|
148
|
+
python3 -c "import claude_agent_sdk" 2>/dev/null && echo "DEPS_OK" || echo "DEPS_MISSING"
|
|
149
|
+
```
|
|
150
|
+
If `DEPS_MISSING`: `python3 -m pip install ouroboros-ai[claude]`
|
|
151
|
+
|
|
152
|
+
If deps are missing and the user doesn't want to fix manually, recommend uvx:
|
|
153
|
+
```
|
|
154
|
+
Or install uvx (recommended — handles deps automatically):
|
|
155
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
156
|
+
Then re-run: ooo setup
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**IMPORTANT**: The MCP server requires one of: (1) uvx, (2) ouroboros binary in PATH, or (3) ouroboros pip-installed. For options 2 and 3, the `[claude]` extra must also be installed. If none are available, guide the user to install uv — do NOT write a non-working fallback to mcp.json.
|
|
132
160
|
|
|
133
161
|
**If prerequisites are missing, show:**
|
|
134
162
|
```
|
|
135
|
-
Ouroboros requires
|
|
163
|
+
Ouroboros requires uvx (recommended) or the ouroboros package installed.
|
|
136
164
|
|
|
137
165
|
Quick install (< 1 minute):
|
|
138
166
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -173,12 +201,13 @@ This enables:
|
|
|
173
201
|
|
|
174
202
|
**Automatically create or update `~/.claude/mcp.json`** (user-level, works across all projects).
|
|
175
203
|
|
|
176
|
-
Choose the MCP command based on how ouroboros is installed:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
204
|
+
Choose the MCP command based on how ouroboros is installed (check in order):
|
|
205
|
+
1. If `which uvx` succeeds: `{"command": "uvx", "args": ["--from", "ouroboros-ai[claude]", "ouroboros", "mcp", "serve"]}`
|
|
206
|
+
2. If `which ouroboros` succeeds: `{"command": "ouroboros", "args": ["mcp", "serve"]}`
|
|
207
|
+
3. If `python3 -c "import ouroboros"` succeeds: `{"command": "python3", "args": ["-m", "ouroboros", "mcp", "serve"]}`
|
|
208
|
+
4. If none of the above → **do NOT write to mcp.json**. Instead show the prerequisites message from Step 1 and stop.
|
|
180
209
|
|
|
181
|
-
If `~/.claude/mcp.json` already exists,
|
|
210
|
+
If `~/.claude/mcp.json` already exists, read it, **always overwrite the `ouroboros` key** with the entry above (to fix stale args from older versions), and preserve all other server entries.
|
|
182
211
|
|
|
183
212
|
**Celebration Checkpoint 2:**
|
|
184
213
|
```
|
|
@@ -217,7 +246,7 @@ A backup will be created: CLAUDE.md.bak
|
|
|
217
246
|
**If "Preview first", show:**
|
|
218
247
|
````markdown
|
|
219
248
|
<!-- ooo:START -->
|
|
220
|
-
<!-- ooo:VERSION:0.26.
|
|
249
|
+
<!-- ooo:VERSION:0.26.2 -->
|
|
221
250
|
# Ouroboros — Specification-First AI Development
|
|
222
251
|
|
|
223
252
|
> Before telling AI what to build, define what should be built.
|
|
@@ -80,38 +80,46 @@ When the user invokes this skill:
|
|
|
80
80
|
|
|
81
81
|
4. **Run update** (if user chose to update):
|
|
82
82
|
|
|
83
|
-
a. **Update PyPI package** — detect the original install method and
|
|
83
|
+
a. **Update PyPI package** — detect the original install method and preserve `[claude]` extras:
|
|
84
84
|
|
|
85
|
-
Check which installer was used
|
|
85
|
+
Check which installer was used:
|
|
86
86
|
```bash
|
|
87
87
|
uv tool list 2>/dev/null | grep -q ouroboros && echo "uv"
|
|
88
88
|
pipx list 2>/dev/null | grep -q ouroboros && echo "pipx"
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
+
> This skill runs inside Claude Code, so always use `ouroboros-ai[claude]`
|
|
92
|
+
> (includes `claude-agent-sdk` and `anthropic` required for MCP tools).
|
|
93
|
+
|
|
91
94
|
- If installed via **uv tool** (most common with install.sh):
|
|
92
95
|
```bash
|
|
93
96
|
# For pre-release targets:
|
|
94
|
-
uv tool install --upgrade --prerelease=allow ouroboros-ai
|
|
97
|
+
uv tool install --upgrade --prerelease=allow ouroboros-ai[claude]
|
|
95
98
|
# For stable targets:
|
|
96
|
-
uv tool install --upgrade ouroboros-ai
|
|
99
|
+
uv tool install --upgrade ouroboros-ai[claude]
|
|
97
100
|
```
|
|
98
101
|
|
|
99
102
|
- If installed via **pipx**:
|
|
103
|
+
> `pipx upgrade` cannot add extras to an existing venv — use `install --force` to reinstall with extras.
|
|
100
104
|
```bash
|
|
101
105
|
# For pre-release targets:
|
|
102
|
-
pipx
|
|
106
|
+
pipx install --force --pip-args='--pre' ouroboros-ai[claude]
|
|
103
107
|
# For stable targets:
|
|
104
|
-
pipx
|
|
108
|
+
pipx install --force ouroboros-ai[claude]
|
|
105
109
|
```
|
|
106
110
|
|
|
107
111
|
- If installed via **pip** (fallback):
|
|
108
112
|
```bash
|
|
109
113
|
# For pre-release targets:
|
|
110
|
-
python3 -m pip install --upgrade --pre ouroboros-ai
|
|
114
|
+
python3 -m pip install --upgrade --pre ouroboros-ai[claude]
|
|
111
115
|
# For stable targets:
|
|
112
|
-
python3 -m pip install --upgrade ouroboros-ai
|
|
116
|
+
python3 -m pip install --upgrade ouroboros-ai[claude]
|
|
113
117
|
```
|
|
114
118
|
|
|
119
|
+
> **Note**: The `[claude]` extra is critical — it installs `claude-agent-sdk` and
|
|
120
|
+
> `anthropic` which are required for MCP tool execution. Omitting it causes MCP
|
|
121
|
+
> tools to fail silently at call time.
|
|
122
|
+
|
|
115
123
|
b. **Update runtime integration**:
|
|
116
124
|
|
|
117
125
|
For Claude Code:
|
|
@@ -125,7 +133,21 @@ When the user invokes this skill:
|
|
|
125
133
|
ouroboros setup --runtime codex --non-interactive
|
|
126
134
|
```
|
|
127
135
|
|
|
128
|
-
c. **
|
|
136
|
+
c. **Refresh MCP server config** (fixes stale args from older versions):
|
|
137
|
+
|
|
138
|
+
Run the same setup command used in step b to ensure MCP config is current:
|
|
139
|
+
|
|
140
|
+
For Claude Code:
|
|
141
|
+
```bash
|
|
142
|
+
ouroboros setup --runtime claude --non-interactive
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
For Codex CLI (already handled by step b above — skip this step).
|
|
146
|
+
|
|
147
|
+
This ensures `~/.claude/mcp.json` has the latest MCP command and args
|
|
148
|
+
(e.g., `ouroboros-ai[claude]` extras). Skips if already up to date.
|
|
149
|
+
|
|
150
|
+
d. **Verify and update CLAUDE.md version marker**:
|
|
129
151
|
```bash
|
|
130
152
|
NEW_VERSION=$(ouroboros --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+[a-z0-9.]*')
|
|
131
153
|
echo "Installed: v$NEW_VERSION"
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.26.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 26,
|
|
21
|
+
__version__ = version = '0.26.3.dev1'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 26, 3, 'dev1')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|