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.
- {crewplane-0.2.0 → crewplane-0.2.2}/PKG-INFO +95 -48
- {crewplane-0.2.0 → crewplane-0.2.2}/README.md +93 -47
- {crewplane-0.2.0 → crewplane-0.2.2}/pyproject.toml +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/artifacts/filesystem.py +5 -9
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/artifacts/terminal_history.py +1 -1
- crewplane-0.2.2/src/crewplane/adapters/invokers/cli.py +374 -0
- crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/claude_json.py +129 -0
- crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/claude_json_parser.py +457 -0
- crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/env_command.py +223 -0
- crewplane-0.2.2/src/crewplane/adapters/invokers/cli_invoker/json_number.py +106 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/reasoning.py +6 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/__init__.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/integration.py +1 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/integration_secrets.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/invocation.py +23 -8
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/__init__.py +4 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/artifacts.py +52 -16
- crewplane-0.2.2/src/crewplane/architecture/ports/invoker.py +19 -0
- crewplane-0.2.2/src/crewplane/architecture/ports/options.py +17 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/ui.py +4 -14
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/safe_files.py +9 -5
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/catalog.py +73 -42
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/__init__.py +3 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/manifest.py +6 -21
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/findings.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/stage_document.py +4 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/stage_outputs.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/writer.py +1 -3
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/hydration.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/validation.py +5 -4
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/run_history.py +6 -21
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/bundle_validation.py +53 -81
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/git_blob_hash.py +4 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/source_validation.py +15 -22
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/fields.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/invocations.py +7 -20
- crewplane-0.2.2/src/crewplane/artifacts/workspace/state/lineage.py +45 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/validation.py +5 -3
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/bootstrap/container.py +5 -6
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/bootstrap/runtime_config.py +1 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/app.py +21 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/cleanup.py +9 -9
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/dry_run.py +3 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/execution.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/execution_helpers.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/historical_summary.py +3 -32
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/manifest.py +10 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/observability.py +7 -4
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/resume.py +6 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/detection.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/__init__.py +4 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/execution_nodes.py +12 -10
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/fragment_handlers.py +7 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_signatures.py +14 -13
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/references.py +10 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/runner.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/runtime_config/__init__.py +13 -8
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/runtime_config/redaction.py +41 -82
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/serialization.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/static_resources.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/token_catalog.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/value_fingerprints.py +3 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/variables.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/locators.py +3 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/observability.py +6 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/value_checks.py +5 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/api.py +8 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/policies.py +16 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/templates.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/workspace_diagnostics.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/yaml_loader.py +1 -3
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/dag_graph.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/builders.py +12 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/reducer.py +11 -3
- crewplane-0.2.2/src/crewplane/observability/log_headers.py +42 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/formatters.py +3 -7
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/json_extract.py +42 -31
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/sanitize.py +1 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/tail.py +3 -29
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/builder.py +6 -4
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/markdown.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/models.py +36 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/spend.py +36 -8
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/terminal.py +2 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/client.py +3 -8
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/compact.py +2 -8
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/log_tail.py +2 -31
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/session_lifecycle.py +2 -8
- crewplane-0.2.2/src/crewplane/observability/tmux/warnings.py +19 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/evidence.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/command.py +40 -16
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/state.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/stream_capture.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/streams.py +4 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/workspace_environment.py +2 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/events.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/fragment_assembler.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/prompt_budgeting.py +11 -7
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/events.py +3 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/workspace.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/resume.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/audit_round.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/recovery.py +5 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/executor_round.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/orchestration.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/state.py +5 -7
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/validation.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/runtime_context.py +6 -3
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/sequential.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/state.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workspace_files/__init__.py +2 -11
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workspace_files/source_resolution.py +4 -13
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/fulfillment.py +3 -4
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/records.py +2 -5
- crewplane-0.2.2/src/crewplane/runtime/workspace/plan_nodes.py +18 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/prepared_workspace.py +1 -3
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/common.py +2 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/setup.py +6 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/state.py +1 -1
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/descriptors.py +7 -2
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/source_refs.py +2 -11
- crewplane-0.2.0/src/crewplane/adapters/invokers/cli.py +0 -220
- crewplane-0.2.0/src/crewplane/adapters/invokers/cli_invoker/claude_json.py +0 -435
- crewplane-0.2.0/src/crewplane/adapters/invokers/cli_invoker/env_command.py +0 -168
- crewplane-0.2.0/src/crewplane/architecture/ports/invoker.py +0 -29
- {crewplane-0.2.0 → crewplane-0.2.2}/.gitignore +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/LICENSE +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/artifacts/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/capabilities.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/machine_json.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/streaming.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/cli_invoker/usage_decoders.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/context.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/fixtures.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/invoker.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/logging.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/mutations.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/options.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/outputs.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/invokers/mock_invoker/selectors.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/ui/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/ui/null.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/adapters/ui/tmux.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/artifacts.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/execution_event.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/integration_options.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/json.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/contracts/observer.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/errors.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/loader.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/ports/runtime.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/architecture/registry.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/atomic.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/directory_manager.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/failure_artifacts.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/detection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/snapshot_io.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/generated_files/snapshot_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/process_identity.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/locks/provider_processes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/manager.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/naming.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/provider_process_publisher.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/aggregation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/review_loop_status.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/results/selection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/decision.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/generated_files.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/resume/verified_copy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/verification.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/node_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/rendered_file_validation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/artifacts/workspace/state/expected_set.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/bootstrap/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/constants.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/history.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/messages.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config_agents.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config_invoker.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_config_validation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_defaults.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_errors.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_providers.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_workflow.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_yaml_blocks.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/rendering_yaml_loading.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/onboarding/runner.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/paths.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/project_init.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/best_effort_thread.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/branch_export_output.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/components.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/context.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/preflight.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/preflight_success.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/terminalization.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/topology.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/cache_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/diagnostic_text.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/disk_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/filesystem_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/git_attributes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/git_index.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/git_source.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/preflight_diagnostics.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/repo_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/source_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/run/workspace/source_types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/templates.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/runner.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/update/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/cli/workflow_runner.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/config.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/execution_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/file_hashing.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/platform.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/compile_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/compiler.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/dependency_edges.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/diagnostics.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/input_sources.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/models.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_artifacts.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_dependencies.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_nodes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_records.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_shape.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_workspace_lineage.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/plan_contract_workspace_locators.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/prompt_transport_warnings.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/render_plans.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/secrets.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/signatures.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/source.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/validation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/git_reads.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/paths.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/files/selection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/models.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/records.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/preflight/workspace/snapshot_guard.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/prompt_segments.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/provider_names.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/provider_process_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/review_contract.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/state_paths.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/token_budget.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/imports.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/models.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/nodes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/parsing.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/rewrites.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/composition/traversal.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/diagnostics.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/graph.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/keywords.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/loading.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/frontmatter.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/markers.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/models.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/payloads.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/markdown/sections.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/models.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/normalization.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/source_locations.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/syntax.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/modes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/nodes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workflow/validation/workspace.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/cache.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/git_policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/selection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/core/workspace/settings.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/config.yml +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/code-review-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/composition/review-findings-producer-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/composition/review-fix-composed-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/composition/review-fix-consumer-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/design-review-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/feature-implement-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/multi-executor-review-chain-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/refactoring-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/sample-inputs/coding-standards.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/sample-inputs/feature-brief.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/sample-inputs/review-findings.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/test-generation-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/worktree/workspace-alternatives-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/example-templates/worktree/workspace-inherited-worktree-example.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/example_templates/single-agent-review.task.md +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/dag_render.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/dashboard_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/execution_event.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/log.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/payloads.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/reader.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/events/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/layout.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/follow.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/limits.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/models.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_presentation/throttle.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/log_stream.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/node_order.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/observer.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/observer_lifecycle.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/persistent.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/cells.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/header.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/text.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/timeline.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/render/viewport.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/accumulator.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/formatting.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/issues.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/logger.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace_readers.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace_state_paths.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/run_summary/workspace_values.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/runtime.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/status_icons.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/text_layout.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/timing.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/bindings.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/commands.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/control_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/inspect_control.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/inspect_launcher.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/inspect_snapshot.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/labels.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/refresh.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/rendering.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/runtime.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/runtime_files.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/selected_invocation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/selection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/selection_control.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/session.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/shell_commands.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/snapshot_types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/viewport.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/tmux/window.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/observability/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/py.typed +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/classifier.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/formatting.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/patterns.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/failures/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/loop.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/output.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/retry.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/retry_reset.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/telemetry.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invocation/transitions.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/invoker.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/diagnostics.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/log_rendering.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/runner.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/process/signals.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/classifier.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/evidence.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/lexicons.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/quota/waits.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/retry_units.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/usage.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/usage_costs.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/agent/usage_types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/console.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/activity/telemetry.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/common.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/consensus.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/deferred_cleanup.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/errors.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/input.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/log_presentation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/parallel.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/artifact_capture.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/cancellation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/display.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/generated_file_changes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/generated_files.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/lifecycle.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/lifecycle_state.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/provider_output.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/provider_call/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/publication_registry.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/capture.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/comparison.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/detection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/events.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/guard.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/node.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/reserved.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/drift/snapshots.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/prompts.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/reviewer_round.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/rounds.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/review_loop/workspace_state_paths.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/consensus.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/fingerprints.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/markdown.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/plain_language.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/structured.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/reviews/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/stage_finalize_events.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/stage_tasks.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/cleanup.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/execution_session.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/node.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/orchestration.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/postconditions.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workflow/scheduling.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/execution/workspace_files/generated.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/checkpoint.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/branch_export/git.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/cleanup.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/cleanup_notes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/git.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/invocation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/locks.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/materialization.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/snapshot.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/types.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/worktree.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/service/worktree_failures.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/snapshot.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/state_selection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/__init__.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/attributes.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/cache.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/cleanup.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/commit.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/inspection.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/lineage.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/materialization.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/orchestration.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/policy.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/protected_refs.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/ref_cleanup.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/refs.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/reset.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/result_validation.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/reuse.py +0 -0
- {crewplane-0.2.0 → crewplane-0.2.2}/src/crewplane/runtime/workspace/worktree/types.py +0 -0
- {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.
|
|
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
|
-
|
|
37
|
-
|
|
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
|
|
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
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
·
|
|
65
|
-
<a href="
|
|
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
|
·
|
|
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
|
|
307
|
-
* What
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
|
493
|
-
|
|
|
494
|
-
|
|
|
495
|
-
|
|
|
496
|
-
|
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
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
|
-
|
|
6
|
-
|
|
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
|
|
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
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
·
|
|
34
|
-
<a href="
|
|
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
|
·
|
|
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
|
|
276
|
-
* What
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
|
462
|
-
|
|
|
463
|
-
|
|
|
464
|
-
|
|
|
465
|
-
|
|
|
466
|
-
|
|
|
467
|
-
|
|
|
468
|
-
|
|
|
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.
|
|
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
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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(
|