ouroboros-ai 0.1.0__tar.gz → 0.1.1__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.

Files changed (199) hide show
  1. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/PKG-INFO +27 -1
  2. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/README.md +26 -0
  3. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/docs/running-with-claude-code.md +11 -3
  4. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/pyproject.toml +1 -1
  5. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/event_store.py +8 -1
  6. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/orchestrator/test_adapter.py +36 -23
  7. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/uv.lock +1 -1
  8. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/.gitignore +0 -0
  9. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/.pre-commit-config.yaml +0 -0
  10. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/.python-version +0 -0
  11. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/LICENSE +0 -0
  12. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/PR-43-CODE-REVIEW-REPORT.md +0 -0
  13. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/github-issue-mapping.yaml +0 -0
  14. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/sprint-status.yaml +0 -0
  15. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-1-project-initialization-with-uv.md +0 -0
  16. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-2-core-types-and-error-handling.md +0 -0
  17. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-3-event-store-with-sqlalchemy-core.md +0 -0
  18. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-4-configuration-and-credentials-management.md +0 -0
  19. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-5-llm-provider-adapter-with-litellm.md +0 -0
  20. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-6-cli-skeleton-with-typer-and-rich.md +0 -0
  21. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-7-structured-logging-with-structlog.md +0 -0
  22. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-8-checkpoint-and-recovery-system.md +0 -0
  23. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/0-9-context-compression-engine.md +0 -0
  24. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/1-1-interview-protocol-engine.md +0 -0
  25. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/1-2-ambiguity-score-calculation.md +0 -0
  26. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/1-3-immutable-seed-generation.md +0 -0
  27. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/2-1-three-tier-model-configuration.md +0 -0
  28. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/2-2-complexity-based-routing.md +0 -0
  29. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/2-3-escalation-on-failure.md +0 -0
  30. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/2-4-downgrade-on-success.md +0 -0
  31. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/3-1-double-diamond-cycle-implementation.md +0 -0
  32. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/3-2-hierarchical-ac-decomposition.md +0 -0
  33. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/3-3-atomicity-detection.md +0 -0
  34. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/3-4-subagent-isolation.md +0 -0
  35. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/4-1-stagnation-detection-4-patterns.md +0 -0
  36. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/4-2-lateral-thinking-personas.md +0 -0
  37. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/4-3-persona-rotation-strategy.md +0 -0
  38. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/5-1-stage-1-mechanical-verification.md +0 -0
  39. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/5-2-stage-2-semantic-evaluation.md +0 -0
  40. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/5-3-stage-3-multi-model-consensus.md +0 -0
  41. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/5-4-consensus-trigger-matrix.md +0 -0
  42. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/6-1-drift-measurement-engine.md +0 -0
  43. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/6-2-automatic-retrospective.md +0 -0
  44. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/7-1-todo-registry.md +0 -0
  45. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/implementation-artifacts/stories/7-2-secondary-loop-batch-processing.md +0 -0
  46. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/planning-artifacts/architecture.md +0 -0
  47. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/planning-artifacts/bmm-workflow-status.yaml +0 -0
  48. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/planning-artifacts/epics.md +0 -0
  49. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/_bmad-output/update-stories.sh +0 -0
  50. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/project-context.md +0 -0
  51. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/requirement/1_EXECUTIVE_SUMMARY.md +0 -0
  52. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/requirement/2_FULL_SPECIFICATION.md +0 -0
  53. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/requirement/3_CONFIG_TEMPLATE.yaml +0 -0
  54. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/requirement/4_REDDIT_EXAMPLE.md +0 -0
  55. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/__init__.py +0 -0
  56. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/__main__.py +0 -0
  57. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/bigbang/__init__.py +0 -0
  58. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/bigbang/ambiguity.py +0 -0
  59. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/bigbang/interview.py +0 -0
  60. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/bigbang/seed_generator.py +0 -0
  61. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/__init__.py +0 -0
  62. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/commands/__init__.py +0 -0
  63. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/commands/config.py +0 -0
  64. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/commands/init.py +0 -0
  65. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/commands/run.py +0 -0
  66. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/commands/status.py +0 -0
  67. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/formatters/__init__.py +0 -0
  68. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/formatters/panels.py +0 -0
  69. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/formatters/progress.py +0 -0
  70. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/formatters/tables.py +0 -0
  71. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/cli/main.py +0 -0
  72. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/config/__init__.py +0 -0
  73. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/config/loader.py +0 -0
  74. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/config/models.py +0 -0
  75. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/core/__init__.py +0 -0
  76. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/core/ac_tree.py +0 -0
  77. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/core/context.py +0 -0
  78. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/core/errors.py +0 -0
  79. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/core/seed.py +0 -0
  80. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/core/types.py +0 -0
  81. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/__init__.py +0 -0
  82. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/consensus.py +0 -0
  83. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/mechanical.py +0 -0
  84. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/models.py +0 -0
  85. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/pipeline.py +0 -0
  86. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/semantic.py +0 -0
  87. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/evaluation/trigger.py +0 -0
  88. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/events/__init__.py +0 -0
  89. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/events/base.py +0 -0
  90. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/events/decomposition.py +0 -0
  91. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/events/evaluation.py +0 -0
  92. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/execution/__init__.py +0 -0
  93. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/execution/atomicity.py +0 -0
  94. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/execution/decomposition.py +0 -0
  95. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/execution/double_diamond.py +0 -0
  96. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/execution/subagent.py +0 -0
  97. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/observability/__init__.py +0 -0
  98. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/observability/drift.py +0 -0
  99. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/observability/logging.py +0 -0
  100. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/observability/retrospective.py +0 -0
  101. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/orchestrator/__init__.py +0 -0
  102. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/orchestrator/adapter.py +0 -0
  103. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/orchestrator/events.py +0 -0
  104. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/orchestrator/runner.py +0 -0
  105. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/orchestrator/session.py +0 -0
  106. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/__init__.py +0 -0
  107. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/checkpoint.py +0 -0
  108. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/migrations/__init__.py +0 -0
  109. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/migrations/runner.py +0 -0
  110. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/migrations/scripts/001_initial.sql +0 -0
  111. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/schema.py +0 -0
  112. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/persistence/uow.py +0 -0
  113. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/providers/__init__.py +0 -0
  114. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/providers/base.py +0 -0
  115. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/providers/claude_code_adapter.py +0 -0
  116. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/providers/litellm_adapter.py +0 -0
  117. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/py.typed +0 -0
  118. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/resilience/__init__.py +0 -0
  119. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/resilience/lateral.py +0 -0
  120. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/resilience/stagnation.py +0 -0
  121. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/routing/__init__.py +0 -0
  122. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/routing/complexity.py +0 -0
  123. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/routing/downgrade.py +0 -0
  124. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/routing/escalation.py +0 -0
  125. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/routing/router.py +0 -0
  126. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/routing/tiers.py +0 -0
  127. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/secondary/__init__.py +0 -0
  128. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/secondary/scheduler.py +0 -0
  129. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/src/ouroboros/secondary/todo_registry.py +0 -0
  130. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/conftest.py +0 -0
  131. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/integration/test_entry_point.py +0 -0
  132. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/bigbang/__init__.py +0 -0
  133. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/bigbang/test_ambiguity.py +0 -0
  134. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/bigbang/test_interview.py +0 -0
  135. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/bigbang/test_seed_generator.py +0 -0
  136. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/__init__.py +0 -0
  137. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/formatters/__init__.py +0 -0
  138. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/formatters/test_console.py +0 -0
  139. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/formatters/test_panels.py +0 -0
  140. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/formatters/test_progress.py +0 -0
  141. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/formatters/test_tables.py +0 -0
  142. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/cli/test_main.py +0 -0
  143. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/config/__init__.py +0 -0
  144. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/config/test_loader.py +0 -0
  145. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/config/test_models.py +0 -0
  146. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/core/__init__.py +0 -0
  147. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/core/test_ac_tree.py +0 -0
  148. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/core/test_context.py +0 -0
  149. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/core/test_errors.py +0 -0
  150. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/core/test_seed.py +0 -0
  151. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/core/test_types.py +0 -0
  152. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/evaluation/__init__.py +0 -0
  153. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/evaluation/test_consensus.py +0 -0
  154. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/evaluation/test_mechanical.py +0 -0
  155. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/evaluation/test_models.py +0 -0
  156. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/evaluation/test_semantic.py +0 -0
  157. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/evaluation/test_trigger.py +0 -0
  158. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/events/__init__.py +0 -0
  159. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/events/test_base.py +0 -0
  160. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/events/test_decomposition_events.py +0 -0
  161. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/execution/__init__.py +0 -0
  162. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/execution/test_atomicity.py +0 -0
  163. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/execution/test_decomposition.py +0 -0
  164. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/execution/test_double_diamond.py +0 -0
  165. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/execution/test_subagent_isolation.py +0 -0
  166. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/observability/__init__.py +0 -0
  167. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/observability/test_drift.py +0 -0
  168. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/observability/test_logging.py +0 -0
  169. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/observability/test_retrospective.py +0 -0
  170. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/orchestrator/__init__.py +0 -0
  171. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/orchestrator/test_events.py +0 -0
  172. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/orchestrator/test_runner.py +0 -0
  173. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/orchestrator/test_session.py +0 -0
  174. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/persistence/__init__.py +0 -0
  175. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/persistence/test_checkpoint.py +0 -0
  176. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/persistence/test_event_store.py +0 -0
  177. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/persistence/test_schema.py +0 -0
  178. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/persistence/test_uow.py +0 -0
  179. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/providers/__init__.py +0 -0
  180. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/providers/test_base.py +0 -0
  181. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/providers/test_litellm_adapter.py +0 -0
  182. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/resilience/__init__.py +0 -0
  183. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/resilience/test_lateral.py +0 -0
  184. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/resilience/test_stagnation.py +0 -0
  185. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/routing/__init__.py +0 -0
  186. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/routing/test_complexity.py +0 -0
  187. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/routing/test_downgrade.py +0 -0
  188. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/routing/test_escalation.py +0 -0
  189. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/routing/test_router.py +0 -0
  190. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/routing/test_tiers.py +0 -0
  191. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/secondary/__init__.py +0 -0
  192. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/secondary/test_scheduler.py +0 -0
  193. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/secondary/test_todo_registry.py +0 -0
  194. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/test_dependencies_configured.py +0 -0
  195. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/test_main_entry_point.py +0 -0
  196. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/test_module_structure.py +0 -0
  197. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/test_project_initialization.py +0 -0
  198. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tests/unit/test_tooling_configuration.py +0 -0
  199. {ouroboros_ai-0.1.0 → ouroboros_ai-0.1.1}/tools/sync_github_project.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ouroboros-ai
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Self-Improving AI Workflow System
5
5
  Author-email: Q00 <jqyu.lee@gmail.com>
6
6
  License-File: LICENSE
@@ -415,6 +415,22 @@ not to restart, but to **re-crystallize** with new understanding.
415
415
 
416
416
  <br/>
417
417
 
418
+ ## ◈ Installation
419
+
420
+ <br/>
421
+
422
+ ```bash
423
+ pip install ouroboros-ai
424
+ # or
425
+ uv pip install ouroboros-ai
426
+ ```
427
+
428
+ <br/>
429
+
430
+ ---
431
+
432
+ <br/>
433
+
418
434
  ## ◈ Quick Start
419
435
 
420
436
  <br/>
@@ -423,6 +439,16 @@ not to restart, but to **re-crystallize** with new understanding.
423
439
 
424
440
  No API key required — uses your Claude Code subscription directly.
425
441
 
442
+ ```bash
443
+ # Begin the Big Bang (interactive interview)
444
+ ouroboros init start --orchestrator "I want to build a task management CLI"
445
+
446
+ # Execute via Claude Agent SDK
447
+ ouroboros run workflow --orchestrator seed.yaml
448
+ ```
449
+
450
+ ### From Source (Development)
451
+
426
452
  ```bash
427
453
  # Clone
428
454
  git clone https://github.com/Q00/ouroboros
@@ -395,6 +395,22 @@ not to restart, but to **re-crystallize** with new understanding.
395
395
 
396
396
  <br/>
397
397
 
398
+ ## ◈ Installation
399
+
400
+ <br/>
401
+
402
+ ```bash
403
+ pip install ouroboros-ai
404
+ # or
405
+ uv pip install ouroboros-ai
406
+ ```
407
+
408
+ <br/>
409
+
410
+ ---
411
+
412
+ <br/>
413
+
398
414
  ## ◈ Quick Start
399
415
 
400
416
  <br/>
@@ -403,6 +419,16 @@ not to restart, but to **re-crystallize** with new understanding.
403
419
 
404
420
  No API key required — uses your Claude Code subscription directly.
405
421
 
422
+ ```bash
423
+ # Begin the Big Bang (interactive interview)
424
+ ouroboros init start --orchestrator "I want to build a task management CLI"
425
+
426
+ # Execute via Claude Agent SDK
427
+ ouroboros run workflow --orchestrator seed.yaml
428
+ ```
429
+
430
+ ### From Source (Development)
431
+
406
432
  ```bash
407
433
  # Clone
408
434
  git clone https://github.com/Q00/ouroboros
@@ -6,17 +6,25 @@ Ouroboros can leverage your **Claude Code Max Plan** subscription to execute wor
6
6
 
7
7
  - Claude Code CLI installed and authenticated (Max Plan)
8
8
  - Python 3.14+
9
- - uv package manager
10
9
 
11
- ## Quick Start
10
+ ## Installation
11
+
12
+ ```bash
13
+ pip install ouroboros-ai
14
+ # or
15
+ uv pip install ouroboros-ai
16
+ ```
12
17
 
13
- ### 1. Install Dependencies
18
+ ### From Source (Development)
14
19
 
15
20
  ```bash
21
+ git clone https://github.com/Q00/ouroboros
16
22
  cd ouroboros
17
23
  uv sync
18
24
  ```
19
25
 
26
+ ## Quick Start
27
+
20
28
  ### 2. Check System Health
21
29
 
22
30
  ```bash
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ouroboros-ai"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "Self-Improving AI Workflow System"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -5,6 +5,8 @@ with aiosqlite backend.
5
5
  """
6
6
 
7
7
 
8
+ from pathlib import Path
9
+
8
10
  from sqlalchemy import select
9
11
  from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
10
12
 
@@ -33,13 +35,18 @@ class EventStore:
33
35
  await store.close()
34
36
  """
35
37
 
36
- def __init__(self, database_url: str) -> None:
38
+ def __init__(self, database_url: str | None = None) -> None:
37
39
  """Initialize EventStore with database URL.
38
40
 
39
41
  Args:
40
42
  database_url: SQLAlchemy database URL.
43
+ If not provided, defaults to ~/.ouroboros/events.db
41
44
  For async SQLite: "sqlite+aiosqlite:///path/to/db.sqlite"
42
45
  """
46
+ if database_url is None:
47
+ db_path = Path.home() / ".ouroboros" / "events.db"
48
+ db_path.parent.mkdir(parents=True, exist_ok=True)
49
+ database_url = f"sqlite+aiosqlite:///{db_path}"
43
50
  self._database_url = database_url
44
51
  self._engine: AsyncEngine | None = None
45
52
 
@@ -15,6 +15,16 @@ from ouroboros.orchestrator.adapter import (
15
15
  )
16
16
 
17
17
 
18
+ # Helper function to create mock SDK messages with correct class names
19
+ def _create_mock_sdk_message(class_name: str, **attrs: Any) -> Any:
20
+ """Create a mock object with a specific class name for SDK message testing."""
21
+ mock_class = type(class_name, (), {})
22
+ instance = mock_class()
23
+ for key, value in attrs.items():
24
+ setattr(instance, key, value)
25
+ return instance
26
+
27
+
18
28
  class TestAgentMessage:
19
29
  """Tests for AgentMessage dataclass."""
20
30
 
@@ -123,14 +133,14 @@ class TestClaudeAgentAdapter:
123
133
  """Test converting SDK assistant message."""
124
134
  adapter = ClaudeAgentAdapter(api_key="test")
125
135
 
126
- # Mock SDK message structure
127
- mock_block = MagicMock()
128
- mock_block.text = "I am analyzing the code."
136
+ # Create mock block with correct class name
137
+ mock_block = _create_mock_sdk_message("TextBlock", text="I am analyzing the code.")
129
138
 
130
- mock_message = MagicMock()
131
- mock_message.type = "assistant"
132
- mock_message.message = MagicMock()
133
- mock_message.message.content = [mock_block]
139
+ # Create mock message with correct class name
140
+ mock_message = _create_mock_sdk_message(
141
+ "AssistantMessage",
142
+ content=[mock_block],
143
+ )
134
144
 
135
145
  result = adapter._convert_message(mock_message)
136
146
 
@@ -141,15 +151,14 @@ class TestClaudeAgentAdapter:
141
151
  """Test converting SDK tool call message."""
142
152
  adapter = ClaudeAgentAdapter(api_key="test")
143
153
 
144
- # Mock SDK message with tool call
145
- mock_block = MagicMock()
146
- mock_block.name = "Edit"
147
- del mock_block.text # Remove text attribute
154
+ # Create mock block with correct class name (ToolUseBlock)
155
+ mock_block = _create_mock_sdk_message("ToolUseBlock", name="Edit")
148
156
 
149
- mock_message = MagicMock()
150
- mock_message.type = "assistant"
151
- mock_message.message = MagicMock()
152
- mock_message.message.content = [mock_block]
157
+ # Create mock message with correct class name
158
+ mock_message = _create_mock_sdk_message(
159
+ "AssistantMessage",
160
+ content=[mock_block],
161
+ )
153
162
 
154
163
  result = adapter._convert_message(mock_message)
155
164
 
@@ -161,10 +170,12 @@ class TestClaudeAgentAdapter:
161
170
  """Test converting SDK result message."""
162
171
  adapter = ClaudeAgentAdapter(api_key="test")
163
172
 
164
- mock_message = MagicMock()
165
- mock_message.type = "result"
166
- mock_message.result = "Task completed"
167
- mock_message.subtype = "success"
173
+ # Create mock message with correct class name
174
+ mock_message = _create_mock_sdk_message(
175
+ "ResultMessage",
176
+ result="Task completed",
177
+ subtype="success",
178
+ )
168
179
 
169
180
  result = adapter._convert_message(mock_message)
170
181
 
@@ -176,10 +187,12 @@ class TestClaudeAgentAdapter:
176
187
  """Test converting SDK system init message."""
177
188
  adapter = ClaudeAgentAdapter(api_key="test")
178
189
 
179
- mock_message = MagicMock()
180
- mock_message.type = "system"
181
- mock_message.subtype = "init"
182
- mock_message.session_id = "sess_abc123"
190
+ # Create mock message with correct class name
191
+ mock_message = _create_mock_sdk_message(
192
+ "SystemMessage",
193
+ subtype="init",
194
+ data={"session_id": "sess_abc123"},
195
+ )
183
196
 
184
197
  result = adapter._convert_message(mock_message)
185
198
 
@@ -891,7 +891,7 @@ wheels = [
891
891
  ]
892
892
 
893
893
  [[package]]
894
- name = "ouroboros"
894
+ name = "ouroboros-ai"
895
895
  version = "0.1.0"
896
896
  source = { editable = "." }
897
897
  dependencies = [
File without changes
File without changes