crewplane 0.2.0__tar.gz → 0.2.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 (496) hide show
  1. {crewplane-0.2.0 → crewplane-0.2.2}/PKG-INFO +95 -48
  2. {crewplane-0.2.0 → crewplane-0.2.2}/README.md +93 -47
  3. {crewplane-0.2.0 → crewplane-0.2.2}/pyproject.toml +2 -1
  4. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/artifacts/filesystem.py +5 -9
  5. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/artifacts/terminal_history.py +1 -1
  6. crewplane-0.2.2/src/crewplane/adapters/invokers/cli.py +374 -0
  7. crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/claude_json.py +129 -0
  8. crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/claude_json_parser.py +457 -0
  9. crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/env_command.py +223 -0
  10. crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/json_number.py +106 -0
  11. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/reasoning.py +6 -1
  12. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock.py +2 -2
  13. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/__init__.py +2 -0
  14. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/integration.py +1 -2
  15. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/integration_secrets.py +2 -1
  16. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/invocation.py +23 -8
  17. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/__init__.py +4 -0
  18. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/artifacts.py +52 -16
  19. crewplane-0.2.2/src/crewplane/architecture/ports/invoker.py +19 -0
  20. crewplane-0.2.2/src/crewplane/architecture/ports/options.py +17 -0
  21. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/ui.py +4 -14
  22. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/safe_files.py +9 -5
  23. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/catalog.py +73 -42
  24. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/__init__.py +3 -1
  25. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/manifest.py +6 -21
  26. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/findings.py +2 -2
  27. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/stage_document.py +4 -2
  28. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/stage_outputs.py +1 -1
  29. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/writer.py +1 -3
  30. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/hydration.py +1 -1
  31. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/validation.py +5 -4
  32. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/run_history.py +6 -21
  33. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/bundle_validation.py +53 -81
  34. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/git_blob_hash.py +4 -2
  35. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/source_validation.py +15 -22
  36. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/fields.py +2 -1
  37. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/invocations.py +7 -20
  38. crewplane-0.2.2/src/crewplane/artifacts/workspace/state/lineage.py +45 -0
  39. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/validation.py +5 -3
  40. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/bootstrap/container.py +5 -6
  41. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/bootstrap/runtime_config.py +1 -0
  42. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/app.py +21 -1
  43. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/cleanup.py +9 -9
  44. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/dry_run.py +3 -1
  45. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/execution.py +1 -1
  46. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/execution_helpers.py +2 -1
  47. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/historical_summary.py +3 -32
  48. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/manifest.py +10 -1
  49. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/observability.py +7 -4
  50. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/resume.py +6 -2
  51. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/detection.py +1 -1
  52. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/__init__.py +4 -2
  53. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/execution_nodes.py +12 -10
  54. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/fragment_handlers.py +7 -2
  55. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_signatures.py +14 -13
  56. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/references.py +10 -2
  57. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/runner.py +2 -0
  58. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/runtime_config/__init__.py +13 -8
  59. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/runtime_config/redaction.py +41 -82
  60. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/serialization.py +2 -0
  61. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/static_resources.py +1 -1
  62. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/token_catalog.py +2 -2
  63. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/value_fingerprints.py +3 -1
  64. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/variables.py +2 -0
  65. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/locators.py +3 -2
  66. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/observability.py +6 -2
  67. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/value_checks.py +5 -1
  68. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/api.py +8 -0
  69. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/policies.py +16 -0
  70. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/templates.py +2 -0
  71. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/workspace_diagnostics.py +2 -2
  72. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/yaml_loader.py +1 -3
  73. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/dag_graph.py +1 -1
  74. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/builders.py +12 -1
  75. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/reducer.py +11 -3
  76. crewplane-0.2.2/src/crewplane/observability/log_headers.py +42 -0
  77. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/formatters.py +3 -7
  78. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/json_extract.py +42 -31
  79. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/sanitize.py +1 -2
  80. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/tail.py +3 -29
  81. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/builder.py +6 -4
  82. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/markdown.py +2 -0
  83. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/models.py +36 -0
  84. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/spend.py +36 -8
  85. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/terminal.py +2 -0
  86. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace.py +2 -2
  87. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/client.py +3 -8
  88. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/compact.py +2 -8
  89. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/log_tail.py +2 -31
  90. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/session_lifecycle.py +2 -8
  91. crewplane-0.2.2/src/crewplane/observability/tmux/warnings.py +19 -0
  92. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/evidence.py +2 -2
  93. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/command.py +40 -16
  94. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/state.py +2 -1
  95. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/stream_capture.py +1 -1
  96. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/streams.py +4 -0
  97. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/workspace_environment.py +2 -2
  98. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/events.py +2 -1
  99. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/fragment_assembler.py +1 -1
  100. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/prompt_budgeting.py +11 -7
  101. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/events.py +3 -2
  102. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/workspace.py +1 -1
  103. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/resume.py +2 -1
  104. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/audit_round.py +1 -1
  105. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/recovery.py +5 -1
  106. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/executor_round.py +1 -1
  107. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/orchestration.py +2 -1
  108. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/state.py +5 -7
  109. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/validation.py +2 -1
  110. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/runtime_context.py +6 -3
  111. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/sequential.py +1 -1
  112. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/state.py +1 -1
  113. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workspace_files/__init__.py +2 -11
  114. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workspace_files/source_resolution.py +4 -13
  115. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/fulfillment.py +3 -4
  116. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/records.py +2 -5
  117. crewplane-0.2.2/src/crewplane/runtime/workspace/plan_nodes.py +18 -0
  118. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/prepared_workspace.py +1 -3
  119. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/common.py +2 -1
  120. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/setup.py +6 -2
  121. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/state.py +1 -1
  122. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/descriptors.py +7 -2
  123. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/source_refs.py +2 -11
  124. crewplane-0.2.0/src/crewplane/adapters/invokers/cli.py +0 -220
  125. crewplane-0.2.0/src/crewplane/adapters/invokers/cli_invoker/claude_json.py +0 -435
  126. crewplane-0.2.0/src/crewplane/adapters/invokers/cli_invoker/env_command.py +0 -168
  127. crewplane-0.2.0/src/crewplane/architecture/ports/invoker.py +0 -29
  128. {crewplane-0.2.0 → crewplane-0.2.2}/.gitignore +0 -0
  129. {crewplane-0.2.0 → crewplane-0.2.2}/LICENSE +0 -0
  130. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/__init__.py +0 -0
  131. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/__init__.py +0 -0
  132. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/artifacts/__init__.py +0 -0
  133. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/__init__.py +0 -0
  134. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/__init__.py +0 -0
  135. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/capabilities.py +0 -0
  136. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/machine_json.py +0 -0
  137. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/streaming.py +0 -0
  138. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/usage_decoders.py +0 -0
  139. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/__init__.py +0 -0
  140. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/context.py +0 -0
  141. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/fixtures.py +0 -0
  142. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/invoker.py +0 -0
  143. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/logging.py +0 -0
  144. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/mutations.py +0 -0
  145. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/options.py +0 -0
  146. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/outputs.py +0 -0
  147. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/selectors.py +0 -0
  148. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/ui/__init__.py +0 -0
  149. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/ui/null.py +0 -0
  150. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/ui/tmux.py +0 -0
  151. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/__init__.py +0 -0
  152. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/artifacts.py +0 -0
  153. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/execution_event.py +0 -0
  154. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/integration_options.py +0 -0
  155. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/json.py +0 -0
  156. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/observer.py +0 -0
  157. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/errors.py +0 -0
  158. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/loader.py +0 -0
  159. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/runtime.py +0 -0
  160. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/registry.py +0 -0
  161. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/__init__.py +0 -0
  162. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/atomic.py +0 -0
  163. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/directory_manager.py +0 -0
  164. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/failure_artifacts.py +0 -0
  165. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/__init__.py +0 -0
  166. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/detection.py +0 -0
  167. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/snapshot_io.py +0 -0
  168. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/snapshot_policy.py +0 -0
  169. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/process_identity.py +0 -0
  170. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/provider_processes.py +0 -0
  171. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/manager.py +0 -0
  172. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/naming.py +0 -0
  173. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/provider_process_publisher.py +0 -0
  174. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/__init__.py +0 -0
  175. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/aggregation.py +0 -0
  176. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/review_loop_status.py +0 -0
  177. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/selection.py +0 -0
  178. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/__init__.py +0 -0
  179. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/decision.py +0 -0
  180. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/generated_files.py +0 -0
  181. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/verified_copy.py +0 -0
  182. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/verification.py +0 -0
  183. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/__init__.py +0 -0
  184. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/node_state.py +0 -0
  185. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/rendered_file_validation.py +0 -0
  186. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/__init__.py +0 -0
  187. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/expected_set.py +0 -0
  188. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/bootstrap/__init__.py +0 -0
  189. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/__init__.py +0 -0
  190. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/__init__.py +0 -0
  191. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/constants.py +0 -0
  192. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/history.py +0 -0
  193. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/messages.py +0 -0
  194. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering.py +0 -0
  195. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config.py +0 -0
  196. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config_agents.py +0 -0
  197. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config_invoker.py +0 -0
  198. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config_validation.py +0 -0
  199. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_defaults.py +0 -0
  200. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_errors.py +0 -0
  201. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_providers.py +0 -0
  202. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_workflow.py +0 -0
  203. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_yaml_blocks.py +0 -0
  204. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_yaml_loading.py +0 -0
  205. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/runner.py +0 -0
  206. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/paths.py +0 -0
  207. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/project_init.py +0 -0
  208. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/__init__.py +0 -0
  209. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/best_effort_thread.py +0 -0
  210. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/branch_export_output.py +0 -0
  211. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/components.py +0 -0
  212. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/context.py +0 -0
  213. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/preflight.py +0 -0
  214. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/preflight_success.py +0 -0
  215. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/terminalization.py +0 -0
  216. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/topology.py +0 -0
  217. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/__init__.py +0 -0
  218. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/cache_policy.py +0 -0
  219. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/diagnostic_text.py +0 -0
  220. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/disk_policy.py +0 -0
  221. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/filesystem_policy.py +0 -0
  222. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/git_attributes.py +0 -0
  223. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/git_index.py +0 -0
  224. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/git_source.py +0 -0
  225. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/preflight_diagnostics.py +0 -0
  226. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/repo_policy.py +0 -0
  227. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/source_policy.py +0 -0
  228. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/source_types.py +0 -0
  229. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/templates.py +0 -0
  230. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/__init__.py +0 -0
  231. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/runner.py +0 -0
  232. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/types.py +0 -0
  233. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/workflow_runner.py +0 -0
  234. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/__init__.py +0 -0
  235. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/config.py +0 -0
  236. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/execution_state.py +0 -0
  237. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/file_hashing.py +0 -0
  238. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/platform.py +0 -0
  239. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/compile_state.py +0 -0
  240. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/compiler.py +0 -0
  241. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/dependency_edges.py +0 -0
  242. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/diagnostics.py +0 -0
  243. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/input_sources.py +0 -0
  244. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/models.py +0 -0
  245. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract.py +0 -0
  246. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_artifacts.py +0 -0
  247. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_dependencies.py +0 -0
  248. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_nodes.py +0 -0
  249. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_records.py +0 -0
  250. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_shape.py +0 -0
  251. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_workspace_lineage.py +0 -0
  252. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_workspace_locators.py +0 -0
  253. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/prompt_transport_warnings.py +0 -0
  254. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/render_plans.py +0 -0
  255. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/secrets.py +0 -0
  256. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/signatures.py +0 -0
  257. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/source.py +0 -0
  258. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/validation.py +0 -0
  259. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/__init__.py +0 -0
  260. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/__init__.py +0 -0
  261. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/git_reads.py +0 -0
  262. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/paths.py +0 -0
  263. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/selection.py +0 -0
  264. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/models.py +0 -0
  265. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/records.py +0 -0
  266. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/snapshot_guard.py +0 -0
  267. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/prompt_segments.py +0 -0
  268. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/provider_names.py +0 -0
  269. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/provider_process_state.py +0 -0
  270. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/review_contract.py +0 -0
  271. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/state_paths.py +0 -0
  272. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/token_budget.py +0 -0
  273. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/__init__.py +0 -0
  274. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/__init__.py +0 -0
  275. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/imports.py +0 -0
  276. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/models.py +0 -0
  277. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/nodes.py +0 -0
  278. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/parsing.py +0 -0
  279. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/rewrites.py +0 -0
  280. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/traversal.py +0 -0
  281. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/diagnostics.py +0 -0
  282. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/graph.py +0 -0
  283. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/keywords.py +0 -0
  284. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/loading.py +0 -0
  285. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/__init__.py +0 -0
  286. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/frontmatter.py +0 -0
  287. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/markers.py +0 -0
  288. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/models.py +0 -0
  289. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/payloads.py +0 -0
  290. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/sections.py +0 -0
  291. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/models.py +0 -0
  292. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/normalization.py +0 -0
  293. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/source_locations.py +0 -0
  294. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/syntax.py +0 -0
  295. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/__init__.py +0 -0
  296. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/modes.py +0 -0
  297. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/nodes.py +0 -0
  298. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/workspace.py +0 -0
  299. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/__init__.py +0 -0
  300. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/cache.py +0 -0
  301. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/git_policy.py +0 -0
  302. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/policy.py +0 -0
  303. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/selection.py +0 -0
  304. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/settings.py +0 -0
  305. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/config.yml +0 -0
  306. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/code-review-example.task.md +0 -0
  307. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/composition/review-findings-producer-example.task.md +0 -0
  308. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/composition/review-fix-composed-example.task.md +0 -0
  309. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/composition/review-fix-consumer-example.task.md +0 -0
  310. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/design-review-example.task.md +0 -0
  311. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/feature-implement-example.task.md +0 -0
  312. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/multi-executor-review-chain-example.task.md +0 -0
  313. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/refactoring-example.task.md +0 -0
  314. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/sample-inputs/coding-standards.md +0 -0
  315. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/sample-inputs/feature-brief.md +0 -0
  316. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/sample-inputs/review-findings.md +0 -0
  317. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/test-generation-example.task.md +0 -0
  318. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/worktree/workspace-alternatives-example.task.md +0 -0
  319. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/worktree/workspace-inherited-worktree-example.task.md +0 -0
  320. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/single-agent-review.task.md +0 -0
  321. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/__init__.py +0 -0
  322. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/dag_render.py +0 -0
  323. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/__init__.py +0 -0
  324. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/dashboard_state.py +0 -0
  325. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/execution_event.py +0 -0
  326. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/log.py +0 -0
  327. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/payloads.py +0 -0
  328. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/reader.py +0 -0
  329. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/types.py +0 -0
  330. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/layout.py +0 -0
  331. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/__init__.py +0 -0
  332. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/follow.py +0 -0
  333. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/limits.py +0 -0
  334. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/models.py +0 -0
  335. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/throttle.py +0 -0
  336. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_stream.py +0 -0
  337. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/node_order.py +0 -0
  338. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/observer.py +0 -0
  339. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/observer_lifecycle.py +0 -0
  340. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/persistent.py +0 -0
  341. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/__init__.py +0 -0
  342. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/cells.py +0 -0
  343. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/header.py +0 -0
  344. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/text.py +0 -0
  345. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/timeline.py +0 -0
  346. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/viewport.py +0 -0
  347. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/accumulator.py +0 -0
  348. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/formatting.py +0 -0
  349. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/issues.py +0 -0
  350. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/logger.py +0 -0
  351. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace_readers.py +0 -0
  352. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace_state_paths.py +0 -0
  353. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace_values.py +0 -0
  354. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/runtime.py +0 -0
  355. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/status_icons.py +0 -0
  356. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/text_layout.py +0 -0
  357. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/timing.py +0 -0
  358. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/__init__.py +0 -0
  359. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/bindings.py +0 -0
  360. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/commands.py +0 -0
  361. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/control_state.py +0 -0
  362. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/inspect_control.py +0 -0
  363. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/inspect_launcher.py +0 -0
  364. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/inspect_snapshot.py +0 -0
  365. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/labels.py +0 -0
  366. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/refresh.py +0 -0
  367. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/rendering.py +0 -0
  368. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/runtime.py +0 -0
  369. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/runtime_files.py +0 -0
  370. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/selected_invocation.py +0 -0
  371. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/selection.py +0 -0
  372. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/selection_control.py +0 -0
  373. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/session.py +0 -0
  374. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/shell_commands.py +0 -0
  375. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/snapshot_types.py +0 -0
  376. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/viewport.py +0 -0
  377. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/window.py +0 -0
  378. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/types.py +0 -0
  379. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/py.typed +0 -0
  380. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/__init__.py +0 -0
  381. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/__init__.py +0 -0
  382. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/__init__.py +0 -0
  383. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/classifier.py +0 -0
  384. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/formatting.py +0 -0
  385. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/patterns.py +0 -0
  386. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/types.py +0 -0
  387. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/loop.py +0 -0
  388. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/output.py +0 -0
  389. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/retry.py +0 -0
  390. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/retry_reset.py +0 -0
  391. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/telemetry.py +0 -0
  392. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/transitions.py +0 -0
  393. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invoker.py +0 -0
  394. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/diagnostics.py +0 -0
  395. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/log_rendering.py +0 -0
  396. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/runner.py +0 -0
  397. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/signals.py +0 -0
  398. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/__init__.py +0 -0
  399. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/classifier.py +0 -0
  400. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/evidence.py +0 -0
  401. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/lexicons.py +0 -0
  402. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/waits.py +0 -0
  403. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/retry_units.py +0 -0
  404. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/usage.py +0 -0
  405. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/usage_costs.py +0 -0
  406. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/usage_types.py +0 -0
  407. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/__init__.py +0 -0
  408. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/__init__.py +0 -0
  409. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/console.py +0 -0
  410. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/telemetry.py +0 -0
  411. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/common.py +0 -0
  412. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/consensus.py +0 -0
  413. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/deferred_cleanup.py +0 -0
  414. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/errors.py +0 -0
  415. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/input.py +0 -0
  416. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/log_presentation.py +0 -0
  417. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/parallel.py +0 -0
  418. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/__init__.py +0 -0
  419. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/artifact_capture.py +0 -0
  420. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/cancellation.py +0 -0
  421. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/display.py +0 -0
  422. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/generated_file_changes.py +0 -0
  423. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/generated_files.py +0 -0
  424. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/lifecycle.py +0 -0
  425. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/lifecycle_state.py +0 -0
  426. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/provider_output.py +0 -0
  427. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/types.py +0 -0
  428. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/publication_registry.py +0 -0
  429. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/__init__.py +0 -0
  430. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/__init__.py +0 -0
  431. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/capture.py +0 -0
  432. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/comparison.py +0 -0
  433. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/detection.py +0 -0
  434. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/events.py +0 -0
  435. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/guard.py +0 -0
  436. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/node.py +0 -0
  437. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/reserved.py +0 -0
  438. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/snapshots.py +0 -0
  439. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/policy.py +0 -0
  440. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/prompts.py +0 -0
  441. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/reviewer_round.py +0 -0
  442. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/rounds.py +0 -0
  443. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/types.py +0 -0
  444. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/workspace_state_paths.py +0 -0
  445. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/__init__.py +0 -0
  446. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/consensus.py +0 -0
  447. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/fingerprints.py +0 -0
  448. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/markdown.py +0 -0
  449. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/plain_language.py +0 -0
  450. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/structured.py +0 -0
  451. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/types.py +0 -0
  452. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/stage_finalize_events.py +0 -0
  453. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/stage_tasks.py +0 -0
  454. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/__init__.py +0 -0
  455. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/cleanup.py +0 -0
  456. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/execution_session.py +0 -0
  457. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/node.py +0 -0
  458. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/orchestration.py +0 -0
  459. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/postconditions.py +0 -0
  460. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/scheduling.py +0 -0
  461. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workspace_files/generated.py +0 -0
  462. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/__init__.py +0 -0
  463. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/__init__.py +0 -0
  464. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/checkpoint.py +0 -0
  465. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/git.py +0 -0
  466. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/cleanup.py +0 -0
  467. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/cleanup_notes.py +0 -0
  468. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/git.py +0 -0
  469. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/invocation.py +0 -0
  470. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/locks.py +0 -0
  471. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/materialization.py +0 -0
  472. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/__init__.py +0 -0
  473. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/snapshot.py +0 -0
  474. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/types.py +0 -0
  475. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/worktree.py +0 -0
  476. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/worktree_failures.py +0 -0
  477. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/snapshot.py +0 -0
  478. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/state_selection.py +0 -0
  479. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/__init__.py +0 -0
  480. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/attributes.py +0 -0
  481. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/cache.py +0 -0
  482. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/cleanup.py +0 -0
  483. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/commit.py +0 -0
  484. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/inspection.py +0 -0
  485. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/lineage.py +0 -0
  486. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/materialization.py +0 -0
  487. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/orchestration.py +0 -0
  488. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/policy.py +0 -0
  489. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/protected_refs.py +0 -0
  490. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/ref_cleanup.py +0 -0
  491. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/refs.py +0 -0
  492. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/reset.py +0 -0
  493. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/result_validation.py +0 -0
  494. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/reuse.py +0 -0
  495. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/types.py +0 -0
  496. {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: crewplane
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: A provider-neutral CLI-first control plane for human-designed coding-agent workflows
5
5
  Project-URL: Homepage, https://github.com/crewplaneai/crewplane
6
6
  Project-URL: Repository, https://github.com/crewplaneai/crewplane
@@ -25,6 +25,7 @@ Requires-Dist: pytest-cov>=7.0; extra == 'dev'
25
25
  Requires-Dist: pytest>=9.1; extra == 'dev'
26
26
  Requires-Dist: ruff>=0.6; extra == 'dev'
27
27
  Requires-Dist: twine>=6.0; extra == 'dev'
28
+ Requires-Dist: types-pyyaml>=6.0.12; extra == 'dev'
28
29
  Provides-Extra: stress
29
30
  Requires-Dist: pytest-randomly>=4.0.1; extra == 'stress'
30
31
  Description-Content-Type: text/markdown
@@ -33,10 +34,12 @@ Description-Content-Type: text/markdown
33
34
  <h1>Crewplane</h1>
34
35
  <p><strong>Agents do the work. You own the workflow.</strong></p>
35
36
  <p>
36
- Define the whole process in Markdown — the prompts, stages, agents, handoffs,
37
- and rules for what happens next.
37
+ Crewplane is an open-source workflow runner for reviewable, resumable
38
+ coding-agent workflows. Define the whole process in Markdown — the prompts,
39
+ stages, agents, handoffs, and rules for what happens next.
38
40
  Crewplane runs Claude Code, Codex, Copilot CLI, Gemini, Kilo, or another CLI.
39
- Review becomes a gate, completed work survives failure, and every workflow handoff stays on disk.
41
+ Review becomes a gate, completed work survives failure, and every handoff
42
+ stays on disk.
40
43
  </p>
41
44
  <p>
42
45
  <a href="https://github.com/crewplaneai/crewplane/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/crewplaneai/crewplane/actions/workflows/ci.yml/badge.svg?branch=master"></a>
@@ -48,12 +51,17 @@ Description-Content-Type: text/markdown
48
51
  </div>
49
52
 
50
53
  <div align="center">
51
- <img
52
- src="https://github.com/user-attachments/assets/dca2dacb-49e4-4849-b92b-7a47b493ea52"
53
- alt="Crewplane dashboard showing a coding-agent workflow in progress"
54
- width="80%"
55
- >
56
- <p><em>Watch the workflow run. Keep the full record after the terminal closes.</em></p>
54
+ <a href="#demo-walkthrough">
55
+ <img
56
+ src="https://github.com/user-attachments/assets/dca2dacb-49e4-4849-b92b-7a47b493ea52"
57
+ alt="Crewplane dashboard showing a coding-agent workflow in progress"
58
+ width="80%"
59
+ >
60
+ </a>
61
+ <p>
62
+ <em>Watch the workflow run. Keep the full record after the terminal closes.
63
+ Click the dashboard for the walkthrough.</em>
64
+ </p>
57
65
  <p>
58
66
  ⭐ If this is how you think coding-agent workflows should work,
59
67
  click <strong>Star</strong> in the top-right to keep Crewplane in your
@@ -62,7 +70,7 @@ Description-Content-Type: text/markdown
62
70
  <p>
63
71
  <a href="#quick-start"><strong>Try it without API keys</strong></a>
64
72
  &nbsp;·&nbsp;
65
- <a href="docs/examples/index.md">See example workflows</a>
73
+ <a href="https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents"><strong>Inspect a real 8-agent run</strong></a>
66
74
  &nbsp;·&nbsp;
67
75
  <a href="docs/index.md">Read the documentation</a>
68
76
  </p>
@@ -96,6 +104,46 @@ start over.
96
104
  > CLIs you already use; their models, tools, skills, MCP servers, repository
97
105
  > instructions, authentication, and permissions remain under their native control.
98
106
 
107
+ ## Eight agents. One comparison. Every receipt.
108
+
109
+ [Crewplane Lab](https://github.com/crewplaneai/crewplane-lab) publishes
110
+ reproducible experiments with the workflow definition, generated responses,
111
+ comparison output, telemetry, manifests, and provider logs.
112
+
113
+ Eight Codex model and reasoning configurations. One algorithm challenge. Watch
114
+ them work it in parallel—then follow every saved output into a dedicated
115
+ comparison stage.
116
+
117
+ <p align="center">
118
+ <a href="https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents">
119
+ <img
120
+ src="https://raw.githubusercontent.com/crewplaneai/crewplane-lab/master/docs/images/eight-agent-run.png"
121
+ alt="Eight agent runs converging into one comparison stage, followed by preserved workflow, response, telemetry, and log artifacts"
122
+ width="90%"
123
+ >
124
+ </a>
125
+ </p>
126
+
127
+ <p align="center">
128
+ <a href="https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents">
129
+ <strong>Explore the complete recorded experiment →</strong>
130
+ </a>
131
+ </p>
132
+
133
+ **Inspect the evidence:**
134
+ [workflow](https://github.com/crewplaneai/crewplane-lab/blob/master/leetcode-3348-gpt-8-agents/.crewplane/workflows/gpt-models-reasoning-comparison.task.md)
135
+ ·
136
+ [eight responses](https://github.com/crewplaneai/crewplane-lab/blob/master/leetcode-3348-gpt-8-agents/.crewplane/execution-results/gpt-model-and-reasoning-comparison--e32358d21c7f-20260807-010927/reasoning.runs-result.md)
137
+ ·
138
+ [comparison](https://github.com/crewplaneai/crewplane-lab/blob/master/leetcode-3348-gpt-8-agents/.crewplane/execution-results/gpt-model-and-reasoning-comparison--e32358d21c7f-20260807-010927/reasoning.compare-result.md)
139
+ ·
140
+ [complete run record](https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents/.crewplane/execution-stages/gpt-model-and-reasoning-comparison--e32358d21c7f-20260807-010927)
141
+
142
+ > [!TIP]
143
+ > **Explore the complete run without installing anything.** You do not need
144
+ > Crewplane or a provider account to inspect the saved artifacts. This is one
145
+ > recorded experiment rather than a general-purpose model benchmark.
146
+
99
147
  ## Quick start
100
148
 
101
149
  Install Crewplane and run the generated workflow inside any project. The first
@@ -302,14 +350,15 @@ A final answer tells you what an agent said. A run record tells you how the work
302
350
  actually happened. Crewplane keeps the answers to questions that disappear when
303
351
  the process lives only inside terminal sessions:
304
352
 
353
+ <details>
354
+ <summary><strong>See what Crewplane records for every run</strong></summary>
355
+
305
356
  * Which workflow and compiled execution plan ran?
306
- * Which configured agent and role handled each stage?
307
- * What rendered context did that stage receive?
308
- * What output and findings did it produce?
357
+ * Which agent, role, and rendered context handled each stage?
358
+ * What output and findings did each stage produce?
309
359
  * Which reviewers approved or blocked the candidate?
310
- * Which nodes succeeded, failed, were skipped, or were resumed?
360
+ * Which nodes succeeded, failed, were skipped, resumed, or reused?
311
361
  * Which provider-reported usage totals were available?
312
- * Which prior result supplied reused work?
313
362
 
314
363
  Check the results for each node:
315
364
  ```text
@@ -339,19 +388,7 @@ See:
339
388
  * [Inspect run records](docs/guides/inspecting-artifacts.md)
340
389
  * [Artifact reference](docs/reference/artifacts.md)
341
390
 
342
- ## When one agent is enough
343
-
344
- Crewplane is not a reason to orchestrate everything.
345
-
346
- For a quick question, one-off patch, or exploratory session, use the provider directly.
347
-
348
- Crewplane begins to earn its place when agent work becomes a process: multiple
349
- stages, provider handoffs, parallel work, review loops, repeated runs, or work
350
- that must survive failure and remain inspectable afterward.
351
-
352
- A useful shell script may also be the right answer for a simple one-time
353
- handoff. Crewplane is for the point where the process itself needs to be
354
- reviewed, reused, shared, measured, or recovered.
391
+ </details>
355
392
 
356
393
  ## Where Crewplane fits
357
394
 
@@ -362,6 +399,19 @@ native execution behavior. It controls the process around them: what runs, in
362
399
  what order, with which context, under which review rules, and what remains
363
400
  afterward.
364
401
 
402
+ > [!TIP]
403
+ > **Choose the lightest tool that fits.**
404
+ >
405
+ > **Use a coding agent directly** for a quick question, one-off patch, or
406
+ > exploratory session. **Use a shell script** for a quick experiment,
407
+ > disposable automation, or a small workflow you do not expect to maintain
408
+ > long term.
409
+ >
410
+ > **Crewplane is built for reliable, reviewable, reusable agent workflows.**
411
+ > Define stages, dependencies, provider assignments, parallel work, review
412
+ > gates, and handoffs in Markdown. Crewplane validates and runs the graph,
413
+ > records the artifacts and manifests, and reuses completed stages it can
414
+ > validate—without turning a shell script into a workflow engine.
365
415
 
366
416
  ```text
367
417
  ┌──────────────────────────────────────────────┐
@@ -426,11 +476,6 @@ Watch the demo below for the full setup flow: install Crewplane, initialize a pr
426
476
  <video src="https://github.com/user-attachments/assets/b6573226-ba31-473e-aaae-ba3ddca2d3cd" autoplay loop muted playsinline width="1000"></video>
427
477
  </p>
428
478
 
429
- ---
430
-
431
- At this point you have seen the core path: install, run the generated mock
432
- workflow, inspect artifacts, and prepare a real provider when ready.
433
-
434
479
  ## Documentation and examples
435
480
 
436
481
  The full documentation starts at [docs/index.md](https://github.com/crewplaneai/crewplane/blob/master/docs/index.md).
@@ -445,6 +490,9 @@ real provider.
445
490
  to walk through workflow runs, run records, authoring, provider roles, review
446
491
  loops, composition, validation, troubleshooting, and cleanup.
447
492
 
493
+ <details>
494
+ <summary><strong>Run the full examples without starting provider CLIs</strong></summary>
495
+
448
496
  **Want to see Crewplane at full strength?** → start with one of the generated
449
497
  workflows:
450
498
 
@@ -452,9 +500,6 @@ workflows:
452
500
  - `example-templates/feature-implement-example.task.md` for brief → plan → build → review → handoff.
453
501
  - `example-templates/composition/review-fix-composed-example.task.md` for reusable workflow composition.
454
502
 
455
- <details>
456
- <summary><strong>Run the full examples without starting provider CLIs</strong></summary>
457
-
458
503
  With `settings.integrations.invoker.implementation: "mock"`, Crewplane validates
459
504
  those agent profiles but still writes deterministic mock output and does not
460
505
  start provider CLIs. Switch the invoker to `cli` only when you want real provider
@@ -486,17 +531,19 @@ Ready to hook up a real provider? Run `crewplane onboarding`, or follow the
486
531
 
487
532
  Here is a quick reference table:
488
533
 
489
- | Goal | Start here |
490
- | --------------------------------------- | ----------------------------------------------------------- |
491
- | Complete the first project | [First Project Path](docs/index.md#first-project-path) |
492
- | Learn workflow authoring | [Workflow syntax](docs/reference/workflow-syntax.md) |
493
- | Choose sequential or parallel execution | [Node modes and provider roles](docs/guides/node-modes.md) |
494
- | Add executor/reviewer behavior | [Review loops](docs/guides/review-loops.md) |
495
- | Configure real provider CLIs | [Provider setup](docs/getting-started/provider-setup.md) |
496
- | Inspect stored execution records | [Inspecting artifacts](docs/guides/inspecting-artifacts.md) |
497
- | Try generated workflows | [Examples guide](docs/examples/index.md) |
498
- | Browse all documentation | [Documentation home](docs/index.md) |
499
- | Review changes between releases | [Changelog](CHANGELOG.md) |
534
+ | Goal | Start here |
535
+ | --------------------------------------- | ------------------------------------------------------------- |
536
+ | Complete the first project | [First Project Path](docs/index.md#first-project-path) |
537
+ | Follow the guided tutorial | [Guided Tutorial Track](docs/index.md#guided-tutorial-track) |
538
+ | Learn workflow authoring | [Workflow syntax](docs/reference/workflow-syntax.md) |
539
+ | Choose sequential or parallel execution | [Node modes and provider roles](docs/guides/node-modes.md) |
540
+ | Add executor/reviewer behavior | [Review loops](docs/guides/review-loops.md) |
541
+ | Configure real provider CLIs | [Provider setup](docs/getting-started/provider-setup.md) |
542
+ | Inspect stored execution records | [Inspecting artifacts](docs/guides/inspecting-artifacts.md) |
543
+ | Inspect a published provider-backed run | [Crewplane Lab](https://github.com/crewplaneai/crewplane-lab) |
544
+ | Try generated workflows | [Examples guide](docs/examples/index.md) |
545
+ | Browse all documentation | [Documentation home](docs/index.md) |
546
+ | Review changes between releases | [Changelog](CHANGELOG.md) |
500
547
 
501
548
  </details>
502
549
 
@@ -2,10 +2,12 @@
2
2
  <h1>Crewplane</h1>
3
3
  <p><strong>Agents do the work. You own the workflow.</strong></p>
4
4
  <p>
5
- Define the whole process in Markdown — the prompts, stages, agents, handoffs,
6
- and rules for what happens next.
5
+ Crewplane is an open-source workflow runner for reviewable, resumable
6
+ coding-agent workflows. Define the whole process in Markdown — the prompts,
7
+ stages, agents, handoffs, and rules for what happens next.
7
8
  Crewplane runs Claude Code, Codex, Copilot CLI, Gemini, Kilo, or another CLI.
8
- Review becomes a gate, completed work survives failure, and every workflow handoff stays on disk.
9
+ Review becomes a gate, completed work survives failure, and every handoff
10
+ stays on disk.
9
11
  </p>
10
12
  <p>
11
13
  <a href="https://github.com/crewplaneai/crewplane/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/crewplaneai/crewplane/actions/workflows/ci.yml/badge.svg?branch=master"></a>
@@ -17,12 +19,17 @@
17
19
  </div>
18
20
 
19
21
  <div align="center">
20
- <img
21
- src="https://github.com/user-attachments/assets/dca2dacb-49e4-4849-b92b-7a47b493ea52"
22
- alt="Crewplane dashboard showing a coding-agent workflow in progress"
23
- width="80%"
24
- >
25
- <p><em>Watch the workflow run. Keep the full record after the terminal closes.</em></p>
22
+ <a href="#demo-walkthrough">
23
+ <img
24
+ src="https://github.com/user-attachments/assets/dca2dacb-49e4-4849-b92b-7a47b493ea52"
25
+ alt="Crewplane dashboard showing a coding-agent workflow in progress"
26
+ width="80%"
27
+ >
28
+ </a>
29
+ <p>
30
+ <em>Watch the workflow run. Keep the full record after the terminal closes.
31
+ Click the dashboard for the walkthrough.</em>
32
+ </p>
26
33
  <p>
27
34
  ⭐ If this is how you think coding-agent workflows should work,
28
35
  click <strong>Star</strong> in the top-right to keep Crewplane in your
@@ -31,7 +38,7 @@
31
38
  <p>
32
39
  <a href="#quick-start"><strong>Try it without API keys</strong></a>
33
40
  &nbsp;·&nbsp;
34
- <a href="docs/examples/index.md">See example workflows</a>
41
+ <a href="https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents"><strong>Inspect a real 8-agent run</strong></a>
35
42
  &nbsp;·&nbsp;
36
43
  <a href="docs/index.md">Read the documentation</a>
37
44
  </p>
@@ -65,6 +72,46 @@ start over.
65
72
  > CLIs you already use; their models, tools, skills, MCP servers, repository
66
73
  > instructions, authentication, and permissions remain under their native control.
67
74
 
75
+ ## Eight agents. One comparison. Every receipt.
76
+
77
+ [Crewplane Lab](https://github.com/crewplaneai/crewplane-lab) publishes
78
+ reproducible experiments with the workflow definition, generated responses,
79
+ comparison output, telemetry, manifests, and provider logs.
80
+
81
+ Eight Codex model and reasoning configurations. One algorithm challenge. Watch
82
+ them work it in parallel—then follow every saved output into a dedicated
83
+ comparison stage.
84
+
85
+ <p align="center">
86
+ <a href="https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents">
87
+ <img
88
+ src="https://raw.githubusercontent.com/crewplaneai/crewplane-lab/master/docs/images/eight-agent-run.png"
89
+ alt="Eight agent runs converging into one comparison stage, followed by preserved workflow, response, telemetry, and log artifacts"
90
+ width="90%"
91
+ >
92
+ </a>
93
+ </p>
94
+
95
+ <p align="center">
96
+ <a href="https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents">
97
+ <strong>Explore the complete recorded experiment →</strong>
98
+ </a>
99
+ </p>
100
+
101
+ **Inspect the evidence:**
102
+ [workflow](https://github.com/crewplaneai/crewplane-lab/blob/master/leetcode-3348-gpt-8-agents/.crewplane/workflows/gpt-models-reasoning-comparison.task.md)
103
+ ·
104
+ [eight responses](https://github.com/crewplaneai/crewplane-lab/blob/master/leetcode-3348-gpt-8-agents/.crewplane/execution-results/gpt-model-and-reasoning-comparison--e32358d21c7f-20260807-010927/reasoning.runs-result.md)
105
+ ·
106
+ [comparison](https://github.com/crewplaneai/crewplane-lab/blob/master/leetcode-3348-gpt-8-agents/.crewplane/execution-results/gpt-model-and-reasoning-comparison--e32358d21c7f-20260807-010927/reasoning.compare-result.md)
107
+ ·
108
+ [complete run record](https://github.com/crewplaneai/crewplane-lab/tree/master/leetcode-3348-gpt-8-agents/.crewplane/execution-stages/gpt-model-and-reasoning-comparison--e32358d21c7f-20260807-010927)
109
+
110
+ > [!TIP]
111
+ > **Explore the complete run without installing anything.** You do not need
112
+ > Crewplane or a provider account to inspect the saved artifacts. This is one
113
+ > recorded experiment rather than a general-purpose model benchmark.
114
+
68
115
  ## Quick start
69
116
 
70
117
  Install Crewplane and run the generated workflow inside any project. The first
@@ -271,14 +318,15 @@ A final answer tells you what an agent said. A run record tells you how the work
271
318
  actually happened. Crewplane keeps the answers to questions that disappear when
272
319
  the process lives only inside terminal sessions:
273
320
 
321
+ <details>
322
+ <summary><strong>See what Crewplane records for every run</strong></summary>
323
+
274
324
  * Which workflow and compiled execution plan ran?
275
- * Which configured agent and role handled each stage?
276
- * What rendered context did that stage receive?
277
- * What output and findings did it produce?
325
+ * Which agent, role, and rendered context handled each stage?
326
+ * What output and findings did each stage produce?
278
327
  * Which reviewers approved or blocked the candidate?
279
- * Which nodes succeeded, failed, were skipped, or were resumed?
328
+ * Which nodes succeeded, failed, were skipped, resumed, or reused?
280
329
  * Which provider-reported usage totals were available?
281
- * Which prior result supplied reused work?
282
330
 
283
331
  Check the results for each node:
284
332
  ```text
@@ -308,19 +356,7 @@ See:
308
356
  * [Inspect run records](docs/guides/inspecting-artifacts.md)
309
357
  * [Artifact reference](docs/reference/artifacts.md)
310
358
 
311
- ## When one agent is enough
312
-
313
- Crewplane is not a reason to orchestrate everything.
314
-
315
- For a quick question, one-off patch, or exploratory session, use the provider directly.
316
-
317
- Crewplane begins to earn its place when agent work becomes a process: multiple
318
- stages, provider handoffs, parallel work, review loops, repeated runs, or work
319
- that must survive failure and remain inspectable afterward.
320
-
321
- A useful shell script may also be the right answer for a simple one-time
322
- handoff. Crewplane is for the point where the process itself needs to be
323
- reviewed, reused, shared, measured, or recovered.
359
+ </details>
324
360
 
325
361
  ## Where Crewplane fits
326
362
 
@@ -331,6 +367,19 @@ native execution behavior. It controls the process around them: what runs, in
331
367
  what order, with which context, under which review rules, and what remains
332
368
  afterward.
333
369
 
370
+ > [!TIP]
371
+ > **Choose the lightest tool that fits.**
372
+ >
373
+ > **Use a coding agent directly** for a quick question, one-off patch, or
374
+ > exploratory session. **Use a shell script** for a quick experiment,
375
+ > disposable automation, or a small workflow you do not expect to maintain
376
+ > long term.
377
+ >
378
+ > **Crewplane is built for reliable, reviewable, reusable agent workflows.**
379
+ > Define stages, dependencies, provider assignments, parallel work, review
380
+ > gates, and handoffs in Markdown. Crewplane validates and runs the graph,
381
+ > records the artifacts and manifests, and reuses completed stages it can
382
+ > validate—without turning a shell script into a workflow engine.
334
383
 
335
384
  ```text
336
385
  ┌──────────────────────────────────────────────┐
@@ -395,11 +444,6 @@ Watch the demo below for the full setup flow: install Crewplane, initialize a pr
395
444
  <video src="https://github.com/user-attachments/assets/b6573226-ba31-473e-aaae-ba3ddca2d3cd" autoplay loop muted playsinline width="1000"></video>
396
445
  </p>
397
446
 
398
- ---
399
-
400
- At this point you have seen the core path: install, run the generated mock
401
- workflow, inspect artifacts, and prepare a real provider when ready.
402
-
403
447
  ## Documentation and examples
404
448
 
405
449
  The full documentation starts at [docs/index.md](https://github.com/crewplaneai/crewplane/blob/master/docs/index.md).
@@ -414,6 +458,9 @@ real provider.
414
458
  to walk through workflow runs, run records, authoring, provider roles, review
415
459
  loops, composition, validation, troubleshooting, and cleanup.
416
460
 
461
+ <details>
462
+ <summary><strong>Run the full examples without starting provider CLIs</strong></summary>
463
+
417
464
  **Want to see Crewplane at full strength?** → start with one of the generated
418
465
  workflows:
419
466
 
@@ -421,9 +468,6 @@ workflows:
421
468
  - `example-templates/feature-implement-example.task.md` for brief → plan → build → review → handoff.
422
469
  - `example-templates/composition/review-fix-composed-example.task.md` for reusable workflow composition.
423
470
 
424
- <details>
425
- <summary><strong>Run the full examples without starting provider CLIs</strong></summary>
426
-
427
471
  With `settings.integrations.invoker.implementation: "mock"`, Crewplane validates
428
472
  those agent profiles but still writes deterministic mock output and does not
429
473
  start provider CLIs. Switch the invoker to `cli` only when you want real provider
@@ -455,17 +499,19 @@ Ready to hook up a real provider? Run `crewplane onboarding`, or follow the
455
499
 
456
500
  Here is a quick reference table:
457
501
 
458
- | Goal | Start here |
459
- | --------------------------------------- | ----------------------------------------------------------- |
460
- | Complete the first project | [First Project Path](docs/index.md#first-project-path) |
461
- | Learn workflow authoring | [Workflow syntax](docs/reference/workflow-syntax.md) |
462
- | Choose sequential or parallel execution | [Node modes and provider roles](docs/guides/node-modes.md) |
463
- | Add executor/reviewer behavior | [Review loops](docs/guides/review-loops.md) |
464
- | Configure real provider CLIs | [Provider setup](docs/getting-started/provider-setup.md) |
465
- | Inspect stored execution records | [Inspecting artifacts](docs/guides/inspecting-artifacts.md) |
466
- | Try generated workflows | [Examples guide](docs/examples/index.md) |
467
- | Browse all documentation | [Documentation home](docs/index.md) |
468
- | Review changes between releases | [Changelog](CHANGELOG.md) |
502
+ | Goal | Start here |
503
+ | --------------------------------------- | ------------------------------------------------------------- |
504
+ | Complete the first project | [First Project Path](docs/index.md#first-project-path) |
505
+ | Follow the guided tutorial | [Guided Tutorial Track](docs/index.md#guided-tutorial-track) |
506
+ | Learn workflow authoring | [Workflow syntax](docs/reference/workflow-syntax.md) |
507
+ | Choose sequential or parallel execution | [Node modes and provider roles](docs/guides/node-modes.md) |
508
+ | Add executor/reviewer behavior | [Review loops](docs/guides/review-loops.md) |
509
+ | Configure real provider CLIs | [Provider setup](docs/getting-started/provider-setup.md) |
510
+ | Inspect stored execution records | [Inspecting artifacts](docs/guides/inspecting-artifacts.md) |
511
+ | Inspect a published provider-backed run | [Crewplane Lab](https://github.com/crewplaneai/crewplane-lab) |
512
+ | Try generated workflows | [Examples guide](docs/examples/index.md) |
513
+ | Browse all documentation | [Documentation home](docs/index.md) |
514
+ | Review changes between releases | [Changelog](CHANGELOG.md) |
469
515
 
470
516
  </details>
471
517
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "crewplane"
3
- version = "0.2.0"
3
+ version = "0.2.2"
4
4
  description = "A provider-neutral CLI-first control plane for human-designed coding-agent workflows"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -25,6 +25,7 @@ dev = [
25
25
  "pytest-cov>=7.0",
26
26
  "ruff>=0.6",
27
27
  "twine>=6.0",
28
+ "types-PyYAML>=6.0.12",
28
29
  ]
29
30
  stress = [
30
31
  "pytest-randomly>=4.0.1",
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- from typing import cast
5
4
 
6
5
  from crewplane.architecture.contracts import (
7
6
  CanonicalIntegrationConfig,
@@ -66,14 +65,11 @@ class FilesystemArtifactsAdapter:
66
65
 
67
66
  parsed_options = _parse_options(options)
68
67
 
69
- return cast(
70
- ArtifactStorePort,
71
- OutputManager(
72
- workflow_name,
73
- base_dir=state_dir,
74
- template_base_dir=project_root,
75
- log_cli_output=parsed_options.log_cli_output,
76
- ),
68
+ return OutputManager(
69
+ workflow_name,
70
+ base_dir=state_dir,
71
+ template_base_dir=project_root,
72
+ log_cli_output=parsed_options.log_cli_output,
77
73
  )
78
74
 
79
75
  def create_terminal_history_reader(
@@ -158,8 +158,8 @@ class FilesystemTerminalHistoryReader:
158
158
  payload=payload,
159
159
  )
160
160
 
161
+ @staticmethod
161
162
  def _matched_error(
162
- self,
163
163
  message: str,
164
164
  path: Path | None = None,
165
165
  ) -> TerminalHistoryRead: