codeframe-ai 0.9.0__tar.gz → 0.9.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/PKG-INFO +76 -26
  2. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/README.md +59 -19
  3. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/e2b/adapter.py +130 -25
  4. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/e2b/budget.py +4 -2
  5. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/e2b/credential_scanner.py +12 -7
  6. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/llm/__init__.py +30 -4
  7. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/llm/anthropic.py +72 -33
  8. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/llm/base.py +17 -5
  9. codeframe_ai-0.9.2/codeframe/adapters/llm/errors.py +189 -0
  10. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/llm/openai.py +48 -19
  11. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/auth/api_key_router.py +48 -2
  12. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/auth/api_keys.py +15 -7
  13. codeframe_ai-0.9.2/codeframe/auth/dependencies.py +916 -0
  14. codeframe_ai-0.9.2/codeframe/auth/manager.py +389 -0
  15. codeframe_ai-0.9.2/codeframe/auth/router.py +324 -0
  16. codeframe_ai-0.9.2/codeframe/auth/stream_tickets.py +106 -0
  17. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/api_client.py +35 -1
  18. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/app.py +1142 -285
  19. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/auth.py +22 -8
  20. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/auth_commands.py +335 -26
  21. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/engines_commands.py +34 -4
  22. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/env_commands.py +29 -12
  23. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/hooks_commands.py +66 -0
  24. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/pr_commands.py +159 -15
  25. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/proof_commands.py +175 -20
  26. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/stats_commands.py +70 -74
  27. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/validators.py +53 -23
  28. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/adapters/__init__.py +0 -2
  29. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/adapters/agent_adapter.py +6 -10
  30. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/adapters/builtin.py +94 -12
  31. codeframe_ai-0.9.2/codeframe/core/adapters/claude_code.py +245 -0
  32. codeframe_ai-0.9.2/codeframe/core/adapters/codex.py +593 -0
  33. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/adapters/git_utils.py +29 -1
  34. codeframe_ai-0.9.2/codeframe/core/adapters/kilocode.py +276 -0
  35. codeframe_ai-0.9.2/codeframe/core/adapters/opencode.py +210 -0
  36. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/adapters/streaming_chat.py +142 -34
  37. codeframe_ai-0.9.2/codeframe/core/adapters/subprocess_adapter.py +459 -0
  38. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/adapters/verification_wrapper.py +41 -12
  39. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/agent.py +96 -103
  40. codeframe_ai-0.9.2/codeframe/core/agent_env.py +284 -0
  41. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/api_key_service.py +12 -1
  42. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/artifacts.py +53 -21
  43. codeframe_ai-0.9.2/codeframe/core/atomic_io.py +214 -0
  44. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/blockers.py +132 -104
  45. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/checkpoints.py +2 -0
  46. codeframe_ai-0.9.2/codeframe/core/claude_code_guard.py +87 -0
  47. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/conductor.py +743 -203
  48. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/config.py +167 -41
  49. codeframe_ai-0.9.2/codeframe/core/cost_tracker.py +247 -0
  50. codeframe_ai-0.9.2/codeframe/core/credentials.py +1062 -0
  51. codeframe_ai-0.9.2/codeframe/core/dangerous_commands.py +105 -0
  52. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/dependency_analyzer.py +83 -26
  53. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/diagnostics.py +19 -0
  54. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/editor.py +27 -4
  55. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/engine_registry.py +70 -5
  56. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/engine_stats.py +0 -13
  57. codeframe_ai-0.9.2/codeframe/core/env_provenance.py +315 -0
  58. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/environment.py +2 -0
  59. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/events.py +23 -6
  60. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/executor.py +100 -61
  61. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/gates.py +339 -90
  62. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/git.py +158 -20
  63. codeframe_ai-0.9.2/codeframe/core/github_integration_config.py +208 -0
  64. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/github_issues_service.py +119 -26
  65. codeframe_ai-0.9.2/codeframe/core/hook_trust.py +116 -0
  66. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/hooks.py +81 -9
  67. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/installer.py +51 -25
  68. codeframe_ai-0.9.2/codeframe/core/llm_json.py +62 -0
  69. codeframe_ai-0.9.2/codeframe/core/llm_resolution.py +179 -0
  70. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/models.py +4 -2
  71. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/notifications_config.py +101 -10
  72. codeframe_ai-0.9.2/codeframe/core/path_safety.py +35 -0
  73. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/prd.py +102 -6
  74. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/prd_discovery.py +137 -35
  75. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/prd_stress_test.py +140 -17
  76. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/proof/capture.py +14 -9
  77. codeframe_ai-0.9.2/codeframe/core/proof/evidence.py +203 -0
  78. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/proof/ledger.py +331 -40
  79. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/proof/models.py +16 -1
  80. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/proof/obligations.py +33 -16
  81. codeframe_ai-0.9.2/codeframe/core/proof/runner.py +437 -0
  82. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/proof/scope.py +43 -11
  83. codeframe_ai-0.9.2/codeframe/core/proof/stubs.py +307 -0
  84. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/quick_fixes.py +82 -5
  85. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/react_agent.py +296 -47
  86. codeframe_ai-0.9.2/codeframe/core/reconciliation.py +430 -0
  87. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/review.py +114 -12
  88. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/runtime.py +427 -186
  89. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/sandbox/__init__.py +2 -2
  90. codeframe_ai-0.9.2/codeframe/core/sandbox/context.py +199 -0
  91. codeframe_ai-0.9.2/codeframe/core/sandbox/worktree.py +23 -0
  92. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/schedule.py +20 -9
  93. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/state_machine.py +28 -0
  94. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/streaming.py +133 -0
  95. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/task_tree.py +109 -31
  96. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/tasks.py +610 -146
  97. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/telemetry.py +1 -1
  98. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/templates.py +27 -10
  99. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/tools.py +49 -25
  100. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/workspace.py +420 -245
  101. codeframe_ai-0.9.2/codeframe/core/worktrees.py +313 -0
  102. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/git/github_integration.py +55 -15
  103. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/audit_logger.py +130 -9
  104. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/metrics_tracker.py +240 -111
  105. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/quality/complexity_analyzer.py +1 -1
  106. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/quality/owasp_patterns.py +1 -1
  107. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/quality/security_scanner.py +38 -3
  108. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/rate_limiter.py +210 -32
  109. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/notifications/webhook.py +123 -146
  110. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/planning/__init__.py +0 -9
  111. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/planning/prd_templates.py +24 -50
  112. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/database.py +26 -7
  113. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/api_key_repository.py +20 -13
  114. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/audit_repository.py +8 -3
  115. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/base.py +45 -0
  116. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/interactive_sessions.py +49 -23
  117. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/token_repository.py +260 -254
  118. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/workspace_registry_repository.py +36 -15
  119. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/schema_manager.py +137 -3
  120. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/tui/app.py +44 -8
  121. codeframe_ai-0.9.2/codeframe/tui/data_service.py +113 -0
  122. codeframe_ai-0.9.2/codeframe/ui/dependencies.py +235 -0
  123. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/response_models.py +40 -0
  124. codeframe_ai-0.9.2/codeframe/ui/routers/_helpers.py +9 -0
  125. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/batches_v2.py +18 -12
  126. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/blockers_v2.py +15 -1
  127. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/checkpoints_v2.py +0 -2
  128. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/costs_v2.py +25 -17
  129. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/diagnose_v2.py +3 -1
  130. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/discovery_v2.py +65 -16
  131. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/environment_v2.py +13 -3
  132. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/events_v2.py +0 -3
  133. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/gates_v2.py +8 -1
  134. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/git_v2.py +52 -20
  135. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/github_integrations_v2.py +210 -58
  136. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/interactive_sessions_v2.py +69 -19
  137. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/pr_v2.py +248 -61
  138. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/prd_v2.py +151 -60
  139. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/proof_v2.py +172 -48
  140. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/review_v2.py +51 -18
  141. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/schedule_v2.py +0 -2
  142. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/session_chat_ws.py +108 -55
  143. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/settings_v2.py +153 -23
  144. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/streaming_v2.py +19 -1
  145. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/tasks_v2.py +414 -142
  146. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/templates_v2.py +0 -2
  147. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/terminal_ws.py +49 -51
  148. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/workspace_v2.py +48 -17
  149. codeframe_ai-0.9.2/codeframe/ui/server.py +962 -0
  150. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/shared.py +12 -1
  151. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe_ai.egg-info/PKG-INFO +76 -26
  152. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe_ai.egg-info/SOURCES.txt +21 -5
  153. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe_ai.egg-info/requires.txt +16 -6
  154. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/pyproject.toml +24 -9
  155. codeframe_ai-0.9.2/tests/test_ambient_workspace_guard.py +100 -0
  156. codeframe_ai-0.9.2/tests/test_claude_review_workflow_1011.py +143 -0
  157. codeframe_ai-0.9.2/tests/test_deploy_config.py +308 -0
  158. codeframe_ai-0.9.2/tests/test_lifecycle_gates_948.py +267 -0
  159. codeframe_ai-0.9.2/tests/test_offline_default_946.py +223 -0
  160. codeframe_ai-0.9.2/tests/test_pm2_scoping_912.py +112 -0
  161. codeframe_ai-0.9.2/tests/test_root_docs_950.py +264 -0
  162. codeframe_ai-0.9.2/tests/test_workflow_lint_wiring_1122.py +167 -0
  163. codeframe_ai-0.9.0/codeframe/auth/dependencies.py +0 -358
  164. codeframe_ai-0.9.0/codeframe/auth/manager.py +0 -178
  165. codeframe_ai-0.9.0/codeframe/auth/router.py +0 -93
  166. codeframe_ai-0.9.0/codeframe/core/adapters/claude_code.py +0 -62
  167. codeframe_ai-0.9.0/codeframe/core/adapters/codex.py +0 -393
  168. codeframe_ai-0.9.0/codeframe/core/adapters/kilocode.py +0 -126
  169. codeframe_ai-0.9.0/codeframe/core/adapters/opencode.py +0 -48
  170. codeframe_ai-0.9.0/codeframe/core/adapters/subprocess_adapter.py +0 -213
  171. codeframe_ai-0.9.0/codeframe/core/credentials.py +0 -735
  172. codeframe_ai-0.9.0/codeframe/core/github_integration_config.py +0 -118
  173. codeframe_ai-0.9.0/codeframe/core/proof/evidence.py +0 -56
  174. codeframe_ai-0.9.0/codeframe/core/proof/runner.py +0 -233
  175. codeframe_ai-0.9.0/codeframe/core/proof/stubs.py +0 -156
  176. codeframe_ai-0.9.0/codeframe/core/reconciliation.py +0 -183
  177. codeframe_ai-0.9.0/codeframe/core/sandbox/context.py +0 -98
  178. codeframe_ai-0.9.0/codeframe/core/sandbox/worktree.py +0 -20
  179. codeframe_ai-0.9.0/codeframe/core/worktrees.py +0 -276
  180. codeframe_ai-0.9.0/codeframe/planning/issue_generator.py +0 -219
  181. codeframe_ai-0.9.0/codeframe/planning/prd_template_functions.py +0 -137
  182. codeframe_ai-0.9.0/codeframe/tui/data_service.py +0 -103
  183. codeframe_ai-0.9.0/codeframe/ui/dependencies.py +0 -103
  184. codeframe_ai-0.9.0/codeframe/ui/routers/_helpers.py +0 -29
  185. codeframe_ai-0.9.0/codeframe/ui/server.py +0 -568
  186. codeframe_ai-0.9.0/codeframe/workspace/__init__.py +0 -5
  187. codeframe_ai-0.9.0/codeframe/workspace/manager.py +0 -249
  188. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/LICENSE +0 -0
  189. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/__init__.py +0 -0
  190. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/__main__.py +0 -0
  191. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/__init__.py +0 -0
  192. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/e2b/__init__.py +0 -0
  193. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/adapters/llm/mock.py +0 -0
  194. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/agents/__init__.py +0 -0
  195. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/agents/dependency_resolver.py +0 -0
  196. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/auth/__init__.py +0 -0
  197. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/auth/models.py +0 -0
  198. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/auth/schemas.py +0 -0
  199. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/auth/scopes.py +0 -0
  200. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/__init__.py +0 -0
  201. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/__main__.py +0 -0
  202. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/commands/__init__.py +0 -0
  203. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/config_commands.py +0 -0
  204. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/dashboard_commands.py +0 -0
  205. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/helpers.py +0 -0
  206. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/import_commands.py +0 -0
  207. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/cli/telemetry_runtime.py +0 -0
  208. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/config/rate_limits.py +0 -0
  209. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/__init__.py +0 -0
  210. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/agents_config.py +0 -0
  211. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/blocker_detection.py +0 -0
  212. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/config_watcher.py +0 -0
  213. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/context.py +0 -0
  214. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/context_packager.py +0 -0
  215. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/dependency_graph.py +0 -0
  216. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/diagnostic_agent.py +0 -0
  217. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/fix_tracker.py +0 -0
  218. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/github_connect_service.py +0 -0
  219. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/importers/__init__.py +0 -0
  220. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/importers/ralph.py +0 -0
  221. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/planner.py +0 -0
  222. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/progress.py +0 -0
  223. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/proof/__init__.py +0 -0
  224. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/replay.py +0 -0
  225. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/stall_detector.py +0 -0
  226. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/core/stall_monitor.py +0 -0
  227. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/git/__init__.py +0 -0
  228. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/__init__.py +0 -0
  229. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/lib/quality/__init__.py +0 -0
  230. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/notifications/__init__.py +0 -0
  231. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/planning/task_scheduler.py +0 -0
  232. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/planning/task_templates.py +0 -0
  233. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/__init__.py +0 -0
  234. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/platform_store/repositories/__init__.py +0 -0
  235. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/templates/AGENTS.md.default +0 -0
  236. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/tui/__init__.py +0 -0
  237. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/__init__.py +0 -0
  238. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/models.py +0 -0
  239. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe/ui/routers/__init__.py +0 -0
  240. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe_ai.egg-info/dependency_links.txt +0 -0
  241. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe_ai.egg-info/entry_points.txt +0 -0
  242. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/codeframe_ai.egg-info/top_level.txt +0 -0
  243. {codeframe_ai-0.9.0 → codeframe_ai-0.9.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeframe-ai
3
- Version: 0.9.0
3
+ Version: 0.9.2
4
4
  Summary: A project delivery system that orchestrates frontier coding agents: Think, Build, Prove, Ship.
5
5
  Author-email: Frank Bria <hello@codeframe.sh>
6
6
  License: AGPL-3.0-or-later
@@ -18,24 +18,24 @@ Requires-Python: >=3.11
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
20
  Requires-Dist: anthropic>=0.18.0
21
+ Requires-Dist: bandit>=1.8.6
21
22
  Requires-Dist: tenacity>=8.2.0
22
- Requires-Dist: claude-agent-sdk>=0.1.10
23
23
  Requires-Dist: openai>=1.12.0
24
24
  Requires-Dist: fastapi>=0.109.0
25
25
  Requires-Dist: uvicorn[standard]>=0.27.0
26
26
  Requires-Dist: websockets>=12.0
27
27
  Requires-Dist: pydantic>=2.6.0
28
28
  Requires-Dist: pydantic-settings>=2.1.0
29
- Requires-Dist: python-dotenv>=1.0.0
29
+ Requires-Dist: python-dotenv>=1.2.2
30
30
  Requires-Dist: sqlalchemy>=2.0.0
31
31
  Requires-Dist: aiosqlite>=0.19.0
32
- Requires-Dist: aiohttp>=3.9.0
32
+ Requires-Dist: aiohttp>=3.14.0
33
33
  Requires-Dist: httpx>=0.27.0
34
34
  Requires-Dist: typer>=0.9.0
35
35
  Requires-Dist: rich>=13.7.0
36
36
  Requires-Dist: textual>=0.86.0
37
- Requires-Dist: requests>=2.31.0
38
- Requires-Dist: gitpython>=3.1.40
37
+ Requires-Dist: requests>=2.33.0
38
+ Requires-Dist: gitpython>=3.1.50
39
39
  Requires-Dist: pyyaml>=6.0.0
40
40
  Requires-Dist: tree-sitter>=0.20.4
41
41
  Requires-Dist: tree-sitter-python>=0.20.4
@@ -49,12 +49,21 @@ Requires-Dist: pytest-asyncio>=1.2.0
49
49
  Requires-Dist: pytest-json-report>=1.5.0
50
50
  Requires-Dist: hypothesis>=6.148.0
51
51
  Requires-Dist: fastapi-users[sqlalchemy]>=15.0.2
52
+ Requires-Dist: filelock>=3.0
52
53
  Requires-Dist: python-jose[cryptography]>=3.4.0
53
54
  Requires-Dist: passlib[argon2]>=1.7.4
54
55
  Requires-Dist: keyring>=24.0.0
55
56
  Requires-Dist: jinja2>=3.1.6
56
57
  Requires-Dist: slowapi>=0.1.9
57
58
  Requires-Dist: rapidfuzz>=3.0.0
59
+ Requires-Dist: starlette>=1.0.1
60
+ Requires-Dist: python-multipart>=0.0.27
61
+ Requires-Dist: pyjwt>=2.12.0
62
+ Requires-Dist: cryptography>=46.0.7
63
+ Requires-Dist: urllib3>=2.7.0
64
+ Requires-Dist: pyasn1>=0.6.3
65
+ Requires-Dist: mcp>=1.23.0
66
+ Requires-Dist: idna>=3.15
58
67
  Provides-Extra: cloud
59
68
  Requires-Dist: e2b>=2.0.0; extra == "cloud"
60
69
  Provides-Extra: dev
@@ -63,28 +72,29 @@ Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
63
72
  Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
64
73
  Requires-Dist: pytest-json-report>=1.5.0; extra == "dev"
65
74
  Requires-Dist: pytest-timeout>=2.3.0; extra == "dev"
66
- Requires-Dist: black>=24.1.0; extra == "dev"
75
+ Requires-Dist: black>=26.3.1; extra == "dev"
67
76
  Requires-Dist: ruff>=0.2.0; extra == "dev"
68
77
  Requires-Dist: mypy>=1.8.0; extra == "dev"
69
78
  Requires-Dist: pre-commit>=3.5.0; extra == "dev"
70
79
  Requires-Dist: hypothesis>=6.0.0; extra == "dev"
71
80
  Requires-Dist: e2b>=2.0.0; extra == "dev"
81
+ Requires-Dist: jsonschema>=4.0.0; extra == "dev"
72
82
  Dynamic: license-file
73
83
 
74
84
  ![CodeFRAME Header](./codeframe_github_header_1600x500.png)
75
85
 
76
- # CodeFRAME
86
+ # CodeFRAME™
77
87
 
78
88
  ![Status](https://img.shields.io/badge/status-beta-orange)
79
89
  [![PyPI](https://img.shields.io/pypi/v/codeframe-ai)](https://pypi.org/project/codeframe-ai/)
80
90
  ![License](https://img.shields.io/badge/license-AGPL--3.0-blue)
81
91
  ![Python](https://img.shields.io/badge/python-3.11%2B-blue)
82
92
  [![CI](https://github.com/frankbria/codeframe/actions/workflows/test.yml/badge.svg)](https://github.com/frankbria/codeframe/actions/workflows/test.yml)
83
- ![Coverage](https://img.shields.io/badge/coverage-88%25-brightgreen)
93
+ ![Coverage](https://img.shields.io/badge/coverage-80%25-brightgreen)
84
94
  [![Follow on X](https://img.shields.io/twitter/follow/FrankBria18044?style=social)](https://x.com/FrankBria18044)
85
95
 
86
96
  > [!WARNING]
87
- > **Prerequisite:** CodeFRAME requires an `ANTHROPIC_API_KEY` from [console.anthropic.com](https://console.anthropic.com/). Get your key before running any `cf` command.
97
+ > **Prerequisite:** CodeFRAME requires an API key matching your LLM provider — by default an `ANTHROPIC_API_KEY` from [console.anthropic.com](https://console.anthropic.com/), or `OPENAI_API_KEY` when using `--llm-provider openai` (local providers like Ollama need no key). Get your key before running any `cf` command.
88
98
 
89
99
  ---
90
100
 
@@ -147,7 +157,7 @@ THE CLOSED LOOP
147
157
  ---
148
158
 
149
159
  > [!NOTE]
150
- > **CodeFRAME is in public beta (`0.9.0`).** The vision and the Golden Path CLI
160
+ > **CodeFRAME is in public beta (`0.9.2`).** The vision and the Golden Path CLI
151
161
  > (`cf init/prd/tasks/work/proof/pr`) and v2 API are stable enough to build on;
152
162
  > the web UI and anything marked "in progress" in
153
163
  > [`docs/PRODUCT_ROADMAP.md`](docs/PRODUCT_ROADMAP.md) are still moving, and
@@ -199,7 +209,20 @@ cf tasks generate # Decompose PRD into atomic tasks with dependencies
199
209
  cf tasks list # Review what was generated
200
210
  ```
201
211
 
202
- **Step 5 — Build, Prove, and Ship**
212
+ **Step 5 — Promote the tasks you want to run**
213
+
214
+ `cf tasks generate` creates tasks in `BACKLOG` so you can review them before an
215
+ agent touches your code. Move the ones you approve to `READY`:
216
+
217
+ ```bash
218
+ cf tasks set status READY --all --from BACKLOG # every BACKLOG task
219
+ cf tasks set status <task-id> READY # one task (note: id before status)
220
+ ```
221
+
222
+ Skipping this step is why `--all-ready` below would otherwise report
223
+ `No READY tasks found` and do nothing.
224
+
225
+ **Step 6 — Build, Prove, and Ship**
203
226
 
204
227
  ```bash
205
228
  cf work batch run --all-ready # Execute all READY tasks (delegates to agent)
@@ -209,6 +232,11 @@ cf pr create # Open a PR with proof report attached
209
232
 
210
233
  That is the entire workflow. Everything else is optional.
211
234
 
235
+ > **See it run from scratch.** [Cold start on a clean machine](docs/demos/quickstart-cleanroom.md)
236
+ > is a narrated walkthrough of exactly these steps in a throwaway container —
237
+ > real transcripts, per-step timings, and the rough edges left in. Reproduce it
238
+ > with `scripts/quickstart-cleanroom/run.sh`.
239
+
212
240
  ---
213
241
 
214
242
  ## Architecture
@@ -336,6 +364,21 @@ cf proof list # List all proof requirements
336
364
  cf proof status # Summary status across all gates
337
365
  cf proof show <id> # Detail for a specific requirement
338
366
  cf proof waive <id> --reason "..." # Waive a requirement with justification
367
+ ```
368
+
369
+ **How each gate is verified.** `UNIT` and `CONTRACT` run pytest and `SEC` runs
370
+ ruff directly. The other gates — `E2E`, `VISUAL`, `A11Y`, `PERF`, `DEMO` — have
371
+ no dedicated tool runner and are enforced through their **evidence rules**:
372
+ `cf proof capture` generates a `test_a11y_*` / `test_perf_*` / … stub per
373
+ obligation, and once you implement that test it is run scoped by name, so the
374
+ obligation passes or fails on real evidence. A named test that does not exist
375
+ is a failure, not a pass.
376
+
377
+ `MANUAL` is deliberately never machine-verified — its `manual_check_*` rules
378
+ mean a human has to look — so a MANUAL obligation reports `unverifiable` and is
379
+ resolved by waiving it with a justification.
380
+
381
+ ```bash
339
382
 
340
383
  # Checkpoints and gates
341
384
  cf review # Run verification gates
@@ -345,16 +388,18 @@ cf checkpoint restore <id> # Roll back to checkpoint
345
388
 
346
389
  # Debugging
347
390
  cf work replay <id> # Replay and debug a past execution
348
- cf tui # Launch TUI dashboard
391
+ cf dashboard # Launch TUI dashboard
349
392
  ```
350
393
 
351
394
  ### SHIP -- Delivery
352
395
 
353
396
  ```bash
354
397
  cf pr create # Create PR from current branch
355
- cf pr status # PR status and review state
356
- cf pr checks # CI check results
398
+ cf pr list # List open PRs
399
+ cf pr status # PR status, review state and CI checks
400
+ cf pr get <number> # Details for one PR
357
401
  cf pr merge # Merge approved PR
402
+ cf pr close <number> # Close a PR without merging
358
403
  cf commit # Commit verified changes
359
404
  cf patch export # Export changes as patch
360
405
  ```
@@ -366,14 +411,14 @@ cf patch export # Export changes as patch
366
411
  CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser:
367
412
 
368
413
  - **THINK**: Socratic PRD generation with recursive stress-testing, LLM-powered task decomposition with dependency graphs, 5 PRD templates, 7 task templates, CPM-based scheduling
369
- - **BUILD**: ReAct agent with 7 tools, self-correction with loop prevention, verification gates (ruff/pytest/BUILD), stall detection with configurable recovery (retry/blocker/fail), batch execution (serial/parallel/auto), human-in-the-loop blockers, checkpointing, state persistence, replay/debug mode (`cf work replay`), dynamic config reload, TUI dashboard (`cf tui`)
414
+ - **BUILD**: ReAct agent with 7 tools, self-correction with loop prevention, verification gates (ruff/pytest/BUILD), stall detection with configurable recovery (retry/blocker/fail), batch execution (serial/parallel/auto), human-in-the-loop blockers, checkpointing, state persistence, replay/debug mode (`cf work replay`), dynamic config reload, TUI dashboard (`cf dashboard`)
370
415
  - **PROVE**: PROOF9 quality memory system — 9-gate evidence-based verification (`cf proof run/capture/list/status/show/waive`), every glitch becomes a permanent proof obligation
371
416
  - **SHIP**: GitHub PR workflow, environment validation, task self-diagnosis
372
417
  - **Engine adapters**: Claude Code, Codex, OpenCode, Kilocode, and built-in ReAct — all via `--engine` flag
373
418
  - **Multi-provider LLM**: Anthropic (default) or any OpenAI-compatible endpoint (OpenAI, Ollama, vLLM, LM Studio, Qwen, Deepseek) via `--llm-provider` / `--llm-model` or env vars
374
419
  - **Server layer** (optional): FastAPI with 16+ v2 routers, API key auth, rate limiting, SSE streaming, WebSocket endpoints (agent chat, interactive terminal), OpenAPI docs
375
420
  - **Web UI**: Workspace view, PRD discovery, Task board, Blocker resolution, Review/commit, PROOF9 requirements list + per-gate evidence display + run history panel + waiver audit trail, agent chat panel with streaming tool-call display, interactive terminal for session workspaces, Sessions list with active-session badge
376
- - **Test suite**: 4200+ tests, 88% coverage
421
+ - **Test suite**: 5100+ tests, 81.9% measured coverage (CI enforces an 80% floor)
377
422
 
378
423
  ---
379
424
 
@@ -389,7 +434,7 @@ CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser
389
434
  - [x] Worktree isolation for parallel agent execution
390
435
  - [x] Reconciliation layer for multi-agent output
391
436
  - [x] Replay/debug mode (`cf work replay`)
392
- - [x] TUI dashboard (`cf tui`)
437
+ - [x] TUI dashboard (`cf dashboard`)
393
438
  - [x] Dynamic config reload during batch execution
394
439
  - [x] Multi-provider LLM -- Anthropic, OpenAI, or any OpenAI-compatible endpoint
395
440
  - [ ] Engine performance tracking and automatic routing
@@ -398,12 +443,12 @@ CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser
398
443
  - [x] PROOF9 -- 9-gate evidence-based quality system
399
444
  - [x] `cf proof capture` -- Glitch-to-requirement closed loop
400
445
  - [x] Quality compounding: every failure becomes a permanent proof obligation
401
- - [ ] Run gates from the web UI (backend ready, frontend pending)
402
- - [ ] Glitch capture web UI
403
- - [ ] Merge gating on PROOF9 pass (web UI)
446
+ - [x] Run gates from the web UI -- live progress, per-gate evidence, run history
447
+ - [x] Glitch capture web UI -- `CaptureGlitchModal` plus the REQ detail view at `/proof/[req_id]`
448
+ - [x] Merge gating on PROOF9 pass -- enforced server-side at the merge API, with an explicit audited override (actor + reason)
404
449
 
405
450
  ### SHIP (delivery confidence)
406
- - [ ] PR status tracking + CI check display in web UI
451
+ - [x] PR status tracking + CI check display in web UI (`PRStatusPanel` on `/review`)
407
452
  - [ ] Post-merge glitch capture loop
408
453
 
409
454
  ### Web UI
@@ -415,8 +460,8 @@ CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser
415
460
  - [x] PROOF9 requirements list, detail, evidence history, sort/filter controls, waiver with audit trail
416
461
  - [x] Interactive Agent Sessions — chat panel (tool calls, thinking blocks), XTerm.js terminal, SplitPane layout
417
462
  - [x] Run gates button, live gate progress, per-gate evidence display, run history panel (PROOF9 page)
418
- - [ ] Glitch capture form and REQ detail view
419
- - [ ] PR status panel with PROOF9-gated merge button
463
+ - [x] Glitch capture form and REQ detail view (markdown description, scope metadata, obligations table, sortable evidence history)
464
+ - [x] PR status panel with PROOF9-gated merge button (gate also enforced server-side)
420
465
 
421
466
  ---
422
467
 
@@ -434,7 +479,7 @@ export OPENAI_BASE_URL=http://localhost:11434/v1 # for Ollama, vLLM, LM Studio,
434
479
  # Per-workspace: .codeframe/config.yaml supports an `llm:` block for the same options
435
480
 
436
481
  # Optional
437
- export DATABASE_PATH=./codeframe.db # Default: in-memory SQLite
482
+ export DATABASE_PATH=./codeframe.db # Default: ./.codeframe/state.db
438
483
  export RATE_LIMIT_ENABLED=true # API rate limiting
439
484
  export RATE_LIMIT_DEFAULT=100/minute # Default limit
440
485
  ```
@@ -489,7 +534,7 @@ cd web-ui && npm run build # Production build verification
489
534
  4. Run tests: `uv run pytest`
490
535
  5. Submit PR with tests and clear description
491
536
 
492
- Code standards: PEP 8, `ruff` for linting, type hints required, 85%+ test coverage.
537
+ Code standards: PEP 8, `ruff` for linting, type hints required, 80%+ test coverage (enforced by CI via `.coveragerc`).
493
538
 
494
539
  During the beta, feature ideas go to [Discussions -> Ideas](https://github.com/frankbria/codeframe/discussions/categories/ideas) before code. See [CONTRIBUTING.md](CONTRIBUTING.md) for what's stable, what isn't, and how to propose changes.
495
540
 
@@ -501,6 +546,7 @@ CodeFRAME is in **public beta**.
501
546
 
502
547
  - **Security:** found a vulnerability? Report it privately via [GitHub private vulnerability reporting](https://github.com/frankbria/codeframe/security/advisories/new) (or `security@codeframe.sh`) -- never a public issue. See [SECURITY.md](SECURITY.md) for scope and response expectations.
503
548
  - **Licensing:** CodeFRAME is [AGPL-3.0](LICENSE), an open-core stance. [LICENSING.md](LICENSING.md) explains what that means for individuals, internal company use, and embedding -- and how to reach us about **commercial licensing or a hosted offering** (both planned). Commercial inquiries: `licensing@codeframe.sh`.
549
+ - **Trademark:** the code is AGPL-3.0, but the **CodeFRAME name and logo are trademarks** and are *not* covered by the code license. See [TRADEMARKS.md](TRADEMARKS.md) before using the name for a fork or product.
504
550
  - **Early access / design partners:** email `hello@codeframe.sh` or reply to the pinned [Discussion](https://github.com/frankbria/codeframe/discussions) to be included.
505
551
  - **Help & community:** [Discussions -> Q&A](https://github.com/frankbria/codeframe/discussions/categories/q-a) for questions, [Ideas](https://github.com/frankbria/codeframe/discussions/categories/ideas) for feature requests, and [bug reports](https://github.com/frankbria/codeframe/issues/new/choose) for confirmed bugs.
506
552
 
@@ -510,8 +556,12 @@ CodeFRAME is in **public beta**.
510
556
 
511
557
  [AGPL-3.0](LICENSE) -- Free to use, modify, and distribute. Derivative works and network services must release source code under the same license. See [LICENSING.md](LICENSING.md) for a plain-language explanation and commercial options.
512
558
 
559
+ The code is AGPL-3.0; the **CodeFRAME™ name and logo are trademarks** of Noatak Enterprises, LLC, dba Bria Strategy Group, and are not licensed under the AGPL -- see [TRADEMARKS.md](TRADEMARKS.md).
560
+
513
561
  ---
514
562
 
515
563
  **Built by [Frank Bria](https://x.com/FrankBria18044)**
516
564
 
517
565
  [Issues](https://github.com/frankbria/codeframe/issues) | [Discussions](https://github.com/frankbria/codeframe/discussions) | [Documentation](https://github.com/frankbria/codeframe/tree/main/docs)
566
+
567
+ _CodeFRAME™ is a trademark of Noatak Enterprises, LLC, dba Bria Strategy Group. All rights reserved._
@@ -1,17 +1,17 @@
1
1
  ![CodeFRAME Header](./codeframe_github_header_1600x500.png)
2
2
 
3
- # CodeFRAME
3
+ # CodeFRAME™
4
4
 
5
5
  ![Status](https://img.shields.io/badge/status-beta-orange)
6
6
  [![PyPI](https://img.shields.io/pypi/v/codeframe-ai)](https://pypi.org/project/codeframe-ai/)
7
7
  ![License](https://img.shields.io/badge/license-AGPL--3.0-blue)
8
8
  ![Python](https://img.shields.io/badge/python-3.11%2B-blue)
9
9
  [![CI](https://github.com/frankbria/codeframe/actions/workflows/test.yml/badge.svg)](https://github.com/frankbria/codeframe/actions/workflows/test.yml)
10
- ![Coverage](https://img.shields.io/badge/coverage-88%25-brightgreen)
10
+ ![Coverage](https://img.shields.io/badge/coverage-80%25-brightgreen)
11
11
  [![Follow on X](https://img.shields.io/twitter/follow/FrankBria18044?style=social)](https://x.com/FrankBria18044)
12
12
 
13
13
  > [!WARNING]
14
- > **Prerequisite:** CodeFRAME requires an `ANTHROPIC_API_KEY` from [console.anthropic.com](https://console.anthropic.com/). Get your key before running any `cf` command.
14
+ > **Prerequisite:** CodeFRAME requires an API key matching your LLM provider — by default an `ANTHROPIC_API_KEY` from [console.anthropic.com](https://console.anthropic.com/), or `OPENAI_API_KEY` when using `--llm-provider openai` (local providers like Ollama need no key). Get your key before running any `cf` command.
15
15
 
16
16
  ---
17
17
 
@@ -74,7 +74,7 @@ THE CLOSED LOOP
74
74
  ---
75
75
 
76
76
  > [!NOTE]
77
- > **CodeFRAME is in public beta (`0.9.0`).** The vision and the Golden Path CLI
77
+ > **CodeFRAME is in public beta (`0.9.2`).** The vision and the Golden Path CLI
78
78
  > (`cf init/prd/tasks/work/proof/pr`) and v2 API are stable enough to build on;
79
79
  > the web UI and anything marked "in progress" in
80
80
  > [`docs/PRODUCT_ROADMAP.md`](docs/PRODUCT_ROADMAP.md) are still moving, and
@@ -126,7 +126,20 @@ cf tasks generate # Decompose PRD into atomic tasks with dependencies
126
126
  cf tasks list # Review what was generated
127
127
  ```
128
128
 
129
- **Step 5 — Build, Prove, and Ship**
129
+ **Step 5 — Promote the tasks you want to run**
130
+
131
+ `cf tasks generate` creates tasks in `BACKLOG` so you can review them before an
132
+ agent touches your code. Move the ones you approve to `READY`:
133
+
134
+ ```bash
135
+ cf tasks set status READY --all --from BACKLOG # every BACKLOG task
136
+ cf tasks set status <task-id> READY # one task (note: id before status)
137
+ ```
138
+
139
+ Skipping this step is why `--all-ready` below would otherwise report
140
+ `No READY tasks found` and do nothing.
141
+
142
+ **Step 6 — Build, Prove, and Ship**
130
143
 
131
144
  ```bash
132
145
  cf work batch run --all-ready # Execute all READY tasks (delegates to agent)
@@ -136,6 +149,11 @@ cf pr create # Open a PR with proof report attached
136
149
 
137
150
  That is the entire workflow. Everything else is optional.
138
151
 
152
+ > **See it run from scratch.** [Cold start on a clean machine](docs/demos/quickstart-cleanroom.md)
153
+ > is a narrated walkthrough of exactly these steps in a throwaway container —
154
+ > real transcripts, per-step timings, and the rough edges left in. Reproduce it
155
+ > with `scripts/quickstart-cleanroom/run.sh`.
156
+
139
157
  ---
140
158
 
141
159
  ## Architecture
@@ -263,6 +281,21 @@ cf proof list # List all proof requirements
263
281
  cf proof status # Summary status across all gates
264
282
  cf proof show <id> # Detail for a specific requirement
265
283
  cf proof waive <id> --reason "..." # Waive a requirement with justification
284
+ ```
285
+
286
+ **How each gate is verified.** `UNIT` and `CONTRACT` run pytest and `SEC` runs
287
+ ruff directly. The other gates — `E2E`, `VISUAL`, `A11Y`, `PERF`, `DEMO` — have
288
+ no dedicated tool runner and are enforced through their **evidence rules**:
289
+ `cf proof capture` generates a `test_a11y_*` / `test_perf_*` / … stub per
290
+ obligation, and once you implement that test it is run scoped by name, so the
291
+ obligation passes or fails on real evidence. A named test that does not exist
292
+ is a failure, not a pass.
293
+
294
+ `MANUAL` is deliberately never machine-verified — its `manual_check_*` rules
295
+ mean a human has to look — so a MANUAL obligation reports `unverifiable` and is
296
+ resolved by waiving it with a justification.
297
+
298
+ ```bash
266
299
 
267
300
  # Checkpoints and gates
268
301
  cf review # Run verification gates
@@ -272,16 +305,18 @@ cf checkpoint restore <id> # Roll back to checkpoint
272
305
 
273
306
  # Debugging
274
307
  cf work replay <id> # Replay and debug a past execution
275
- cf tui # Launch TUI dashboard
308
+ cf dashboard # Launch TUI dashboard
276
309
  ```
277
310
 
278
311
  ### SHIP -- Delivery
279
312
 
280
313
  ```bash
281
314
  cf pr create # Create PR from current branch
282
- cf pr status # PR status and review state
283
- cf pr checks # CI check results
315
+ cf pr list # List open PRs
316
+ cf pr status # PR status, review state and CI checks
317
+ cf pr get <number> # Details for one PR
284
318
  cf pr merge # Merge approved PR
319
+ cf pr close <number> # Close a PR without merging
285
320
  cf commit # Commit verified changes
286
321
  cf patch export # Export changes as patch
287
322
  ```
@@ -293,14 +328,14 @@ cf patch export # Export changes as patch
293
328
  CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser:
294
329
 
295
330
  - **THINK**: Socratic PRD generation with recursive stress-testing, LLM-powered task decomposition with dependency graphs, 5 PRD templates, 7 task templates, CPM-based scheduling
296
- - **BUILD**: ReAct agent with 7 tools, self-correction with loop prevention, verification gates (ruff/pytest/BUILD), stall detection with configurable recovery (retry/blocker/fail), batch execution (serial/parallel/auto), human-in-the-loop blockers, checkpointing, state persistence, replay/debug mode (`cf work replay`), dynamic config reload, TUI dashboard (`cf tui`)
331
+ - **BUILD**: ReAct agent with 7 tools, self-correction with loop prevention, verification gates (ruff/pytest/BUILD), stall detection with configurable recovery (retry/blocker/fail), batch execution (serial/parallel/auto), human-in-the-loop blockers, checkpointing, state persistence, replay/debug mode (`cf work replay`), dynamic config reload, TUI dashboard (`cf dashboard`)
297
332
  - **PROVE**: PROOF9 quality memory system — 9-gate evidence-based verification (`cf proof run/capture/list/status/show/waive`), every glitch becomes a permanent proof obligation
298
333
  - **SHIP**: GitHub PR workflow, environment validation, task self-diagnosis
299
334
  - **Engine adapters**: Claude Code, Codex, OpenCode, Kilocode, and built-in ReAct — all via `--engine` flag
300
335
  - **Multi-provider LLM**: Anthropic (default) or any OpenAI-compatible endpoint (OpenAI, Ollama, vLLM, LM Studio, Qwen, Deepseek) via `--llm-provider` / `--llm-model` or env vars
301
336
  - **Server layer** (optional): FastAPI with 16+ v2 routers, API key auth, rate limiting, SSE streaming, WebSocket endpoints (agent chat, interactive terminal), OpenAPI docs
302
337
  - **Web UI**: Workspace view, PRD discovery, Task board, Blocker resolution, Review/commit, PROOF9 requirements list + per-gate evidence display + run history panel + waiver audit trail, agent chat panel with streaming tool-call display, interactive terminal for session workspaces, Sessions list with active-session badge
303
- - **Test suite**: 4200+ tests, 88% coverage
338
+ - **Test suite**: 5100+ tests, 81.9% measured coverage (CI enforces an 80% floor)
304
339
 
305
340
  ---
306
341
 
@@ -316,7 +351,7 @@ CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser
316
351
  - [x] Worktree isolation for parallel agent execution
317
352
  - [x] Reconciliation layer for multi-agent output
318
353
  - [x] Replay/debug mode (`cf work replay`)
319
- - [x] TUI dashboard (`cf tui`)
354
+ - [x] TUI dashboard (`cf dashboard`)
320
355
  - [x] Dynamic config reload during batch execution
321
356
  - [x] Multi-provider LLM -- Anthropic, OpenAI, or any OpenAI-compatible endpoint
322
357
  - [ ] Engine performance tracking and automatic routing
@@ -325,12 +360,12 @@ CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser
325
360
  - [x] PROOF9 -- 9-gate evidence-based quality system
326
361
  - [x] `cf proof capture` -- Glitch-to-requirement closed loop
327
362
  - [x] Quality compounding: every failure becomes a permanent proof obligation
328
- - [ ] Run gates from the web UI (backend ready, frontend pending)
329
- - [ ] Glitch capture web UI
330
- - [ ] Merge gating on PROOF9 pass (web UI)
363
+ - [x] Run gates from the web UI -- live progress, per-gate evidence, run history
364
+ - [x] Glitch capture web UI -- `CaptureGlitchModal` plus the REQ detail view at `/proof/[req_id]`
365
+ - [x] Merge gating on PROOF9 pass -- enforced server-side at the merge API, with an explicit audited override (actor + reason)
331
366
 
332
367
  ### SHIP (delivery confidence)
333
- - [ ] PR status tracking + CI check display in web UI
368
+ - [x] PR status tracking + CI check display in web UI (`PRStatusPanel` on `/review`)
334
369
  - [ ] Post-merge glitch capture loop
335
370
 
336
371
  ### Web UI
@@ -342,8 +377,8 @@ CodeFRAME delivers the full Think-Build-Prove-Ship loop from the CLI and browser
342
377
  - [x] PROOF9 requirements list, detail, evidence history, sort/filter controls, waiver with audit trail
343
378
  - [x] Interactive Agent Sessions — chat panel (tool calls, thinking blocks), XTerm.js terminal, SplitPane layout
344
379
  - [x] Run gates button, live gate progress, per-gate evidence display, run history panel (PROOF9 page)
345
- - [ ] Glitch capture form and REQ detail view
346
- - [ ] PR status panel with PROOF9-gated merge button
380
+ - [x] Glitch capture form and REQ detail view (markdown description, scope metadata, obligations table, sortable evidence history)
381
+ - [x] PR status panel with PROOF9-gated merge button (gate also enforced server-side)
347
382
 
348
383
  ---
349
384
 
@@ -361,7 +396,7 @@ export OPENAI_BASE_URL=http://localhost:11434/v1 # for Ollama, vLLM, LM Studio,
361
396
  # Per-workspace: .codeframe/config.yaml supports an `llm:` block for the same options
362
397
 
363
398
  # Optional
364
- export DATABASE_PATH=./codeframe.db # Default: in-memory SQLite
399
+ export DATABASE_PATH=./codeframe.db # Default: ./.codeframe/state.db
365
400
  export RATE_LIMIT_ENABLED=true # API rate limiting
366
401
  export RATE_LIMIT_DEFAULT=100/minute # Default limit
367
402
  ```
@@ -416,7 +451,7 @@ cd web-ui && npm run build # Production build verification
416
451
  4. Run tests: `uv run pytest`
417
452
  5. Submit PR with tests and clear description
418
453
 
419
- Code standards: PEP 8, `ruff` for linting, type hints required, 85%+ test coverage.
454
+ Code standards: PEP 8, `ruff` for linting, type hints required, 80%+ test coverage (enforced by CI via `.coveragerc`).
420
455
 
421
456
  During the beta, feature ideas go to [Discussions -> Ideas](https://github.com/frankbria/codeframe/discussions/categories/ideas) before code. See [CONTRIBUTING.md](CONTRIBUTING.md) for what's stable, what isn't, and how to propose changes.
422
457
 
@@ -428,6 +463,7 @@ CodeFRAME is in **public beta**.
428
463
 
429
464
  - **Security:** found a vulnerability? Report it privately via [GitHub private vulnerability reporting](https://github.com/frankbria/codeframe/security/advisories/new) (or `security@codeframe.sh`) -- never a public issue. See [SECURITY.md](SECURITY.md) for scope and response expectations.
430
465
  - **Licensing:** CodeFRAME is [AGPL-3.0](LICENSE), an open-core stance. [LICENSING.md](LICENSING.md) explains what that means for individuals, internal company use, and embedding -- and how to reach us about **commercial licensing or a hosted offering** (both planned). Commercial inquiries: `licensing@codeframe.sh`.
466
+ - **Trademark:** the code is AGPL-3.0, but the **CodeFRAME name and logo are trademarks** and are *not* covered by the code license. See [TRADEMARKS.md](TRADEMARKS.md) before using the name for a fork or product.
431
467
  - **Early access / design partners:** email `hello@codeframe.sh` or reply to the pinned [Discussion](https://github.com/frankbria/codeframe/discussions) to be included.
432
468
  - **Help & community:** [Discussions -> Q&A](https://github.com/frankbria/codeframe/discussions/categories/q-a) for questions, [Ideas](https://github.com/frankbria/codeframe/discussions/categories/ideas) for feature requests, and [bug reports](https://github.com/frankbria/codeframe/issues/new/choose) for confirmed bugs.
433
469
 
@@ -437,8 +473,12 @@ CodeFRAME is in **public beta**.
437
473
 
438
474
  [AGPL-3.0](LICENSE) -- Free to use, modify, and distribute. Derivative works and network services must release source code under the same license. See [LICENSING.md](LICENSING.md) for a plain-language explanation and commercial options.
439
475
 
476
+ The code is AGPL-3.0; the **CodeFRAME™ name and logo are trademarks** of Noatak Enterprises, LLC, dba Bria Strategy Group, and are not licensed under the AGPL -- see [TRADEMARKS.md](TRADEMARKS.md).
477
+
440
478
  ---
441
479
 
442
480
  **Built by [Frank Bria](https://x.com/FrankBria18044)**
443
481
 
444
482
  [Issues](https://github.com/frankbria/codeframe/issues) | [Discussions](https://github.com/frankbria/codeframe/discussions) | [Documentation](https://github.com/frankbria/codeframe/tree/main/docs)
483
+
484
+ _CodeFRAME™ is a trademark of Noatak Enterprises, LLC, dba Bria Strategy Group. All rights reserved._