okstra 0.186.7 → 0.187.0
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.
- package/README.md +1 -1
- package/dist/cli-registry.d.mts +88 -1
- package/dist/cli-registry.mjs +68 -111
- package/dist/cli-registry.mjs.map +1 -1
- package/dist/commands/execute/render-bundle.mjs +0 -1
- package/dist/commands/execute/render-bundle.mjs.map +1 -1
- package/dist/commands/execute/run.mjs +8 -3
- package/dist/commands/execute/run.mjs.map +1 -1
- package/dist/commands/lifecycle/check-project.mjs +1 -14
- package/dist/commands/lifecycle/check-project.mjs.map +1 -1
- package/dist/commands/lifecycle/config.mjs +38 -40
- package/dist/commands/lifecycle/config.mjs.map +1 -1
- package/dist/commands/lifecycle/doctor.d.mts +22 -7
- package/dist/commands/lifecycle/doctor.mjs +77 -49
- package/dist/commands/lifecycle/doctor.mjs.map +1 -1
- package/dist/commands/lifecycle/install.d.mts +12 -10
- package/dist/commands/lifecycle/install.mjs +104 -39
- package/dist/commands/lifecycle/install.mjs.map +1 -1
- package/dist/commands/lifecycle/paths.mjs +8 -3
- package/dist/commands/lifecycle/paths.mjs.map +1 -1
- package/dist/commands/lifecycle/preflight.mjs +2 -1
- package/dist/commands/lifecycle/preflight.mjs.map +1 -1
- package/dist/commands/lifecycle/setup.mjs +22 -36
- package/dist/commands/lifecycle/setup.mjs.map +1 -1
- package/dist/commands/lifecycle/uninstall.d.mts +4 -2
- package/dist/commands/lifecycle/uninstall.mjs +59 -15
- package/dist/commands/lifecycle/uninstall.mjs.map +1 -1
- package/dist/commands/memory/memory.mjs +7 -1
- package/dist/commands/memory/memory.mjs.map +1 -1
- package/dist/lib/helper-scripts.d.mts +1 -1
- package/dist/lib/helper-scripts.mjs +10 -18
- package/dist/lib/helper-scripts.mjs.map +1 -1
- package/dist/lib/host-config.d.mts +72 -0
- package/dist/lib/host-config.mjs +404 -0
- package/dist/lib/host-config.mjs.map +1 -0
- package/dist/lib/host-registry-client.d.mts +2 -2
- package/dist/lib/host-registry-client.mjs +0 -3
- package/dist/lib/host-registry-client.mjs.map +1 -1
- package/dist/lib/install-assets.d.mts +1 -0
- package/dist/lib/install-assets.mjs +4 -0
- package/dist/lib/install-assets.mjs.map +1 -1
- package/dist/lib/proc.d.mts +2 -0
- package/dist/lib/proc.mjs +12 -0
- package/dist/lib/proc.mjs.map +1 -1
- package/dist/lib/python-command.d.mts +2 -0
- package/dist/lib/python-command.mjs +52 -0
- package/dist/lib/python-command.mjs.map +1 -0
- package/dist/lib/python-helper.d.mts +2 -5
- package/dist/lib/python-helper.mjs +3 -52
- package/dist/lib/python-helper.mjs.map +1 -1
- package/dist/lib/runtime-payload.d.mts +23 -0
- package/dist/lib/runtime-payload.mjs +57 -0
- package/dist/lib/runtime-payload.mjs.map +1 -0
- package/dist/lib/types.d.mts +24 -13
- package/docs/architecture/storage-model.md +21 -5
- package/docs/architecture.md +37 -36
- package/docs/cli.md +55 -76
- package/docs/coding-rules.md +295 -0
- package/docs/container.md +10 -36
- package/docs/contributor-change-matrix.md +1 -1
- package/docs/for-ai/skills/okstra-code-review.md +0 -1
- package/docs/for-ai/skills/okstra-container-build.md +8 -41
- package/docs/for-ai/skills/okstra-inspect.md +4 -4
- package/docs/for-ai/skills/okstra-manager.md +2 -2
- package/docs/for-ai/skills/okstra-rollup.md +0 -1
- package/docs/for-ai/skills/okstra-run.md +3 -3
- package/docs/for-ai/skills/okstra-user-response.md +0 -1
- package/docs/performance-improvement-plan-v2.md +1 -1
- package/docs/project-structure-overview.md +62 -62
- package/docs/task-process/README.md +3 -3
- package/docs/task-process/common-flow.md +1 -1
- package/docs/task-process/error-analysis.md +3 -3
- package/docs/task-process/implementation-planning.md +3 -1
- package/docs/task-process/release-handoff.md +1 -1
- package/package.json +3 -2
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/workers/claude-worker.md +6 -11
- package/runtime/agents/workers/report-writer-worker.md +1 -1
- package/runtime/bin/lib/okstra/cli.sh +4 -0
- package/runtime/bin/lib/okstra/globals.sh +2 -0
- package/runtime/bin/lib/okstra/interactive.sh +26 -173
- package/runtime/bin/lib/okstra/project-resolver.sh +23 -61
- package/runtime/bin/lib/okstra/usage.sh +3 -3
- package/runtime/bin/okstra-compact-reminder.sh +1 -5
- package/runtime/bin/okstra-error-log.py +19 -2
- package/runtime/bin/okstra-import-check.py +26 -0
- package/runtime/bin/okstra-inject-report-index.py +5 -4
- package/runtime/bin/okstra-provider-exec.py +22 -17
- package/runtime/bin/okstra-render-final-report.py +16 -6
- package/runtime/bin/okstra-render-report-views.py +25 -18
- package/runtime/bin/okstra-report-translate.py +30 -18
- package/runtime/bin/okstra-spawn-followups.py +4 -0
- package/runtime/bin/okstra-token-usage.py +3 -0
- package/runtime/bin/okstra.sh +4 -2
- package/runtime/bin/okstra_bootstrap.py +58 -0
- package/runtime/prompts/coding-preflight/overview.md +1 -1
- package/runtime/prompts/duties/planning-worker.md +1 -1
- package/runtime/prompts/launch.template.md +35 -9
- package/runtime/prompts/lead/convergence.md +96 -87
- package/runtime/prompts/lead/okstra-lead-contract.md +63 -12
- package/runtime/prompts/lead/plan-body-verification.md +65 -46
- package/runtime/prompts/lead/report-writer.md +34 -4
- package/runtime/prompts/lead/team-contract.md +4 -1
- package/runtime/prompts/profiles/_clarification-recommendation.md +2 -1
- package/runtime/prompts/profiles/_coding-conventions-preflight.md +1 -1
- package/runtime/prompts/profiles/_common-contract.md +3 -3
- package/runtime/prompts/profiles/_coverage-critic.md +1 -1
- package/runtime/prompts/profiles/_implementation-deliverable.md +2 -2
- package/runtime/prompts/profiles/_implementation-executor.md +3 -1
- package/runtime/prompts/profiles/_implementation-verifier.md +16 -2
- package/runtime/prompts/profiles/error-analysis.md +4 -3
- package/runtime/prompts/profiles/final-verification.md +2 -2
- package/runtime/prompts/profiles/implementation-planning.md +22 -17
- package/runtime/prompts/profiles/implementation.md +3 -2
- package/runtime/prompts/profiles/requirements-discovery.md +2 -1
- package/runtime/prompts/wizard/prompts.ko.json +29 -8
- package/runtime/python/okstra_ctl/__init__.py +6 -27
- package/runtime/python/okstra_ctl/adapters/hosts/claude-code/relay.md +4 -5
- package/runtime/python/okstra_ctl/adapters/hosts/codex/adapter.py +21 -2
- package/runtime/python/okstra_ctl/adapters/hosts/external/adapter.py +3 -12
- package/runtime/python/okstra_ctl/adapters/providers/antigravity/adapter.py +40 -22
- package/runtime/python/okstra_ctl/adapters/providers/claude/adapter.py +14 -21
- package/runtime/python/okstra_ctl/adapters/providers/codex/adapter.py +37 -20
- package/runtime/python/okstra_ctl/adapters/providers/grok/adapter.py +86 -14
- package/runtime/python/okstra_ctl/adapters/providers/kimi/adapter.py +12 -12
- package/runtime/python/okstra_ctl/adapters/runtime/cmux.py +4 -7
- package/runtime/python/okstra_ctl/agent/__init__.py +1 -0
- package/runtime/python/okstra_ctl/{agent_activity.py → agent/activity.py} +12 -1
- package/runtime/python/okstra_ctl/{agent_invocation.py → agent/invocation.py} +34 -5
- package/runtime/python/okstra_ctl/agent/prompt_cli/__init__.py +19 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/__main__.py +11 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/cli.py +215 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/dynamic_verifier.py +155 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/emit.py +66 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/inputs.py +138 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/materialize.py +408 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/results.py +197 -0
- package/runtime/python/okstra_ctl/agent/prompt_cli/run_identity.py +107 -0
- package/runtime/python/okstra_ctl/analysis_packet.py +47 -4
- package/runtime/python/okstra_ctl/approval_decisions.py +260 -8
- package/runtime/python/okstra_ctl/assignment_resolver.py +0 -12
- package/runtime/python/okstra_ctl/attempt_evidence.py +12 -24
- package/runtime/python/okstra_ctl/blocking_checks.py +251 -0
- package/runtime/python/okstra_ctl/brief_frontmatter.py +0 -7
- package/runtime/python/okstra_ctl/clarification_items/__init__.py +102 -0
- package/runtime/python/okstra_ctl/clarification_items/carry.py +224 -0
- package/runtime/python/okstra_ctl/clarification_items/dispositions.py +135 -0
- package/runtime/python/okstra_ctl/clarification_items/parsing.py +253 -0
- package/runtime/python/okstra_ctl/clarification_items/rows.py +115 -0
- package/runtime/python/okstra_ctl/clarification_items/scan.py +215 -0
- package/runtime/python/okstra_ctl/clarification_items/sidecars.py +211 -0
- package/runtime/python/okstra_ctl/cmux.py +38 -31
- package/runtime/python/okstra_ctl/code_review_target.py +163 -1
- package/runtime/python/okstra_ctl/conformance.py +23 -0
- package/runtime/python/okstra_ctl/container.py +38 -421
- package/runtime/python/okstra_ctl/context_cost.py +16 -2
- package/runtime/python/okstra_ctl/contract_graph_cli.py +7 -0
- package/runtime/python/okstra_ctl/convergence.py +101 -15
- package/runtime/python/okstra_ctl/convergence_critic_prompt.py +345 -0
- package/runtime/python/okstra_ctl/convergence_engine.py +382 -70
- package/runtime/python/okstra_ctl/convergence_store.py +5 -29
- package/runtime/python/okstra_ctl/design_prep.py +108 -12
- package/runtime/python/okstra_ctl/design_snapshot.py +11 -1
- package/runtime/python/okstra_ctl/design_surfaces.py +29 -2
- package/runtime/python/okstra_ctl/dispatch_core.py +102 -25
- package/runtime/python/okstra_ctl/dispatch_state.py +268 -39
- package/runtime/python/okstra_ctl/doctor_cli.py +48 -0
- package/runtime/python/okstra_ctl/domain/worker_exec.py +10 -5
- package/runtime/python/okstra_ctl/domain/worker_presentation.py +21 -1
- package/runtime/python/okstra_ctl/domain/worker_stream.py +52 -21
- package/runtime/python/okstra_ctl/domain/write_policy.py +219 -0
- package/runtime/python/okstra_ctl/entrypoints/hosts.py +9 -2
- package/runtime/python/okstra_ctl/error_log_core.py +1 -1
- package/runtime/python/okstra_ctl/error_report.py +14 -0
- package/runtime/python/okstra_ctl/error_zip.py +18 -2
- package/runtime/python/okstra_ctl/execution_identity.py +100 -7
- package/runtime/python/okstra_ctl/execution_manifest.py +67 -20
- package/runtime/python/okstra_ctl/execution_mutation_audit.py +90 -8
- package/runtime/python/okstra_ctl/final_report_paths.py +17 -0
- package/runtime/python/okstra_ctl/final_report_schema.py +90 -16
- package/runtime/python/okstra_ctl/git_reconcile.py +22 -2
- package/runtime/python/okstra_ctl/handoff.py +24 -1
- package/runtime/python/okstra_ctl/ids.py +6 -16
- package/runtime/python/okstra_ctl/implementation_direction.py +142 -33
- package/runtime/python/okstra_ctl/implementation_options.py +25 -11
- package/runtime/python/okstra_ctl/implementation_outcome.py +5 -2
- package/runtime/python/okstra_ctl/improvement_lenses.py +0 -14
- package/runtime/python/okstra_ctl/incremental_carry.py +69 -8
- package/runtime/python/okstra_ctl/incremental_scope.py +173 -12
- package/runtime/python/okstra_ctl/index.py +2 -2
- package/runtime/python/okstra_ctl/initial_prompt_materialization.py +48 -8
- package/runtime/python/okstra_ctl/interactive_cli.py +223 -0
- package/runtime/python/okstra_ctl/json_boundary.py +10 -0
- package/runtime/python/okstra_ctl/listing.py +0 -91
- package/runtime/python/okstra_ctl/locks.py +5 -19
- package/runtime/python/okstra_ctl/log_report.py +14 -0
- package/runtime/python/okstra_ctl/manager_cli.py +22 -3
- package/runtime/python/okstra_ctl/manager_launch.py +4 -8
- package/runtime/python/okstra_ctl/material.py +2 -2
- package/runtime/python/okstra_ctl/migrate.py +23 -1
- package/runtime/python/okstra_ctl/model_cli.py +19 -5
- package/runtime/python/okstra_ctl/model_discovery.py +46 -47
- package/runtime/python/okstra_ctl/model_io/__init__.py +1 -0
- package/runtime/python/okstra_ctl/model_io/lines.py +163 -0
- package/runtime/python/okstra_ctl/model_io/references.py +370 -0
- package/runtime/python/okstra_ctl/model_io/renderers.py +498 -0
- package/runtime/python/okstra_ctl/model_io_cli.py +30 -945
- package/runtime/python/okstra_ctl/model_pool.py +10 -6
- package/runtime/python/okstra_ctl/models.py +8 -8
- package/runtime/python/okstra_ctl/mutation_recovery.py +5 -63
- package/runtime/python/okstra_ctl/next_phase.py +121 -69
- package/runtime/python/okstra_ctl/pane_reclaim.py +23 -0
- package/runtime/python/okstra_ctl/pane_title.py +11 -8
- package/runtime/python/okstra_ctl/path_hints.py +36 -11
- package/runtime/python/okstra_ctl/paths.py +76 -8
- package/runtime/python/okstra_ctl/plan_items.py +132 -16
- package/runtime/python/okstra_ctl/plan_items_cli.py +486 -36
- package/runtime/python/okstra_ctl/plan_run_root.py +1 -1
- package/runtime/python/okstra_ctl/plan_validate_cli.py +51 -0
- package/runtime/python/okstra_ctl/plan_verify_cli.py +80 -0
- package/runtime/python/okstra_ctl/prepare_error.py +20 -0
- package/runtime/python/okstra_ctl/prior_planning.py +157 -0
- package/runtime/python/okstra_ctl/profile_show.py +18 -1
- package/runtime/python/okstra_ctl/project_setup_cli.py +140 -0
- package/runtime/python/okstra_ctl/recap.py +22 -1
- package/runtime/python/okstra_ctl/reconcile.py +84 -0
- package/runtime/python/okstra_ctl/registry/host_registry.py +18 -1
- package/runtime/python/okstra_ctl/render.py +98 -32
- package/runtime/python/okstra_ctl/render_final_report.py +3 -7
- package/runtime/python/okstra_ctl/report_assembly.py +297 -7
- package/runtime/python/okstra_ctl/report_contract.py +30 -7
- package/runtime/python/okstra_ctl/report_finalize.py +206 -15
- package/runtime/python/okstra_ctl/report_html/common.py +2 -2
- package/runtime/python/okstra_ctl/report_html/render.py +8 -12
- package/runtime/python/okstra_ctl/report_language.py +8 -4
- package/runtime/python/okstra_ctl/report_narrative.py +90 -3
- package/runtime/python/okstra_ctl/report_projections.py +8 -2
- package/runtime/python/okstra_ctl/report_synthesis_packet.py +258 -1
- package/runtime/python/okstra_ctl/report_translation.py +2 -35
- package/runtime/python/okstra_ctl/report_views.py +4 -22
- package/runtime/python/okstra_ctl/resolve_task_key.py +13 -0
- package/runtime/python/okstra_ctl/rollup.py +13 -0
- package/runtime/python/okstra_ctl/run.py +639 -138
- package/runtime/python/okstra_ctl/run_audit.py +13 -0
- package/runtime/python/okstra_ctl/run_index_row.py +0 -12
- package/runtime/python/okstra_ctl/seeding.py +21 -11
- package/runtime/python/okstra_ctl/sequence.py +1 -1
- package/runtime/python/okstra_ctl/session.py +64 -14
- package/runtime/python/okstra_ctl/set_work_status.py +18 -0
- package/runtime/python/okstra_ctl/stage_integrate.py +15 -1
- package/runtime/python/okstra_ctl/stage_ledger.py +1 -1
- package/runtime/python/okstra_ctl/stage_map.py +57 -11
- package/runtime/python/okstra_ctl/stage_map_cli.py +83 -0
- package/runtime/python/okstra_ctl/stage_map_view.py +65 -0
- package/runtime/python/okstra_ctl/stage_targets.py +3 -12
- package/runtime/python/okstra_ctl/task_list_cli.py +138 -0
- package/runtime/python/okstra_ctl/task_show_cli.py +66 -0
- package/runtime/python/okstra_ctl/task_target.py +4 -16
- package/runtime/python/okstra_ctl/team.py +49 -2
- package/runtime/python/okstra_ctl/time_report.py +17 -2
- package/runtime/python/okstra_ctl/usage_report.py +11 -0
- package/runtime/python/okstra_ctl/user_response.py +55 -218
- package/runtime/python/okstra_ctl/user_response_values.py +242 -0
- package/runtime/python/okstra_ctl/validation_contract.py +3 -0
- package/runtime/python/okstra_ctl/verification_target.py +68 -0
- package/runtime/python/okstra_ctl/wizard.py +457 -92
- package/runtime/python/okstra_ctl/worker_artifacts.py +75 -16
- package/runtime/python/okstra_ctl/worker_audit_check.py +22 -0
- package/runtime/python/okstra_ctl/worker_dispatch.py +21 -0
- package/runtime/python/okstra_ctl/worker_liveness.py +33 -0
- package/runtime/python/okstra_ctl/worker_prompt_body.py +15 -2
- package/runtime/python/okstra_ctl/worker_prompt_contract.py +98 -7
- package/runtime/python/okstra_ctl/worker_prompt_headers.py +24 -2
- package/runtime/python/okstra_ctl/worker_prompt_policy.py +18 -3
- package/runtime/python/okstra_ctl/worker_request.py +2 -1
- package/runtime/python/okstra_ctl/worker_runner.py +16 -9
- package/runtime/python/okstra_ctl/worker_state.py +16 -1
- package/runtime/python/okstra_ctl/workflow.py +18 -1
- package/runtime/python/okstra_ctl/worktree/__init__.py +92 -0
- package/runtime/python/okstra_ctl/worktree/cleanliness.py +89 -0
- package/runtime/python/okstra_ctl/worktree/decisions.py +127 -0
- package/runtime/python/okstra_ctl/worktree/git_ops.py +165 -0
- package/runtime/python/okstra_ctl/worktree/linking.py +249 -0
- package/runtime/python/okstra_ctl/worktree/naming.py +91 -0
- package/runtime/python/okstra_ctl/worktree/provision.py +385 -0
- package/runtime/python/okstra_ctl/worktree/sync_config.py +181 -0
- package/runtime/python/okstra_ctl/worktree_cli.py +75 -0
- package/runtime/python/okstra_ctl/worktree_lookup_cli.py +39 -0
- package/runtime/python/okstra_ctl/worktree_registry.py +7 -0
- package/runtime/python/okstra_ctl/worktree_status_cli.py +53 -0
- package/runtime/python/okstra_ctl/write_policy.py +90 -213
- package/runtime/python/okstra_project/__init__.py +0 -4
- package/runtime/python/okstra_project/dirs.py +2 -2
- package/runtime/python/okstra_project/phase_pointer.py +84 -0
- package/runtime/python/okstra_project/slug.py +24 -0
- package/runtime/python/okstra_project/state.py +22 -230
- package/runtime/python/okstra_token_usage/claude.py +9 -1
- package/runtime/python/okstra_token_usage/cli.py +3 -1
- package/runtime/python/okstra_token_usage/collect.py +71 -10
- package/runtime/python/okstra_token_usage/cursor.py +2 -0
- package/runtime/python/okstra_token_usage/grok.py +1 -5
- package/runtime/python/okstra_token_usage/paths.py +26 -0
- package/runtime/python/okstra_token_usage/pricing.py +19 -7
- package/runtime/schemas/convergence-critic-results-v1.0.schema.json +5 -0
- package/runtime/schemas/execution-manifest-v2.schema.json +10 -10
- package/runtime/schemas/final-report-v2.0.schema.json +9 -26
- package/runtime/schemas/final-report-v3.0.schema.json +173 -41
- package/runtime/schemas/report-narrative-v3.0.schema.json +3 -2
- package/runtime/skills/okstra-brief-gen/SKILL.md +35 -2
- package/runtime/skills/okstra-container-build/SKILL.md +16 -47
- package/runtime/skills/okstra-inspect/facets/history.md +1 -1
- package/runtime/skills/okstra-inspect/facets/status.md +7 -6
- package/runtime/skills/okstra-pr-gen/SKILL.md +1 -1
- package/runtime/skills/okstra-run/SKILL.md +7 -5
- package/runtime/templates/report-writer-prompt-preamble.md +1 -1
- package/runtime/templates/reports/brief.template.md +6 -2
- package/runtime/templates/reports/error-analysis-input.template.md +2 -0
- package/runtime/templates/reports/final-verification-input.template.md +2 -0
- package/runtime/templates/reports/implementation-input.template.md +7 -1
- package/runtime/templates/reports/implementation-planning-input.template.md +4 -0
- package/runtime/templates/reports/quick-input.template.md +2 -0
- package/runtime/templates/reports/release-handoff-input.template.md +6 -1
- package/runtime/templates/reports/report.js +20 -3
- package/runtime/templates/reports/schedule.template.md +2 -0
- package/runtime/templates/reports/settings.template.json +0 -10
- package/runtime/templates/reports/task-brief.template.md +3 -0
- package/runtime/templates/reports/user-response.template.md +7 -3
- package/runtime/validators/checks/fixtures-01.py +57 -0
- package/runtime/validators/checks/fixtures-02.py +565 -0
- package/runtime/validators/checks/runners-01.py +108 -0
- package/runtime/validators/checks/validate-assets-01.py +60 -0
- package/runtime/validators/checks/validate-prompt-metadata-01.py +261 -0
- package/runtime/validators/checks/validate-tasks-01.py +46 -0
- package/runtime/validators/checks/validate-tasks-02.py +85 -0
- package/runtime/validators/checks/validate-tasks-03.py +61 -0
- package/runtime/validators/checks/validate-tasks-04.py +118 -0
- package/runtime/validators/forbidden_actions.py +73 -3
- package/runtime/validators/lib/common.sh +5 -0
- package/runtime/validators/lib/fixtures.sh +7 -591
- package/runtime/validators/lib/paths.sh +13 -0
- package/runtime/validators/lib/runners.sh +6 -104
- package/runtime/validators/lib/summary.sh +1 -1
- package/runtime/validators/lib/validate-assets.sh +6 -56
- package/runtime/validators/lib/validate-prompt-metadata.sh +6 -257
- package/runtime/validators/lib/validate-tasks.sh +9 -294
- package/runtime/validators/validate-implementation-plan-stages.py +4 -4
- package/runtime/validators/validate-run.py +1369 -2654
- package/runtime/validators/validate-workflow.sh +56 -16
- package/runtime/validators/validate_improvement_report.py +2 -1
- package/runtime/validators/validate_session_conformance.py +295 -49
- package/dist/commands/execute/agent-prompt.d.mts +0 -1
- package/dist/commands/execute/agent-prompt.mjs +0 -24
- package/dist/commands/execute/agent-prompt.mjs.map +0 -1
- package/dist/commands/execute/codex-dispatch.d.mts +0 -3
- package/dist/commands/execute/codex-dispatch.mjs +0 -6
- package/dist/commands/execute/codex-dispatch.mjs.map +0 -1
- package/dist/commands/execute/codex-run.d.mts +0 -3
- package/dist/commands/execute/codex-run.mjs +0 -62
- package/dist/commands/execute/codex-run.mjs.map +0 -1
- package/dist/commands/execute/convergence.d.mts +0 -1
- package/dist/commands/execute/convergence.mjs +0 -38
- package/dist/commands/execute/convergence.mjs.map +0 -1
- package/dist/commands/execute/error-log.d.mts +0 -1
- package/dist/commands/execute/error-log.mjs +0 -18
- package/dist/commands/execute/error-log.mjs.map +0 -1
- package/dist/commands/execute/git-reconcile.d.mts +0 -1
- package/dist/commands/execute/git-reconcile.mjs +0 -30
- package/dist/commands/execute/git-reconcile.mjs.map +0 -1
- package/dist/commands/execute/handoff.d.mts +0 -1
- package/dist/commands/execute/handoff.mjs +0 -31
- package/dist/commands/execute/handoff.mjs.map +0 -1
- package/dist/commands/execute/incremental-carry.d.mts +0 -1
- package/dist/commands/execute/incremental-carry.mjs +0 -20
- package/dist/commands/execute/incremental-carry.mjs.map +0 -1
- package/dist/commands/execute/incremental-scope.d.mts +0 -1
- package/dist/commands/execute/incremental-scope.mjs +0 -29
- package/dist/commands/execute/incremental-scope.mjs.map +0 -1
- package/dist/commands/execute/integrate-stages.d.mts +0 -1
- package/dist/commands/execute/integrate-stages.mjs +0 -24
- package/dist/commands/execute/integrate-stages.mjs.map +0 -1
- package/dist/commands/execute/pane-title.d.mts +0 -1
- package/dist/commands/execute/pane-title.mjs +0 -20
- package/dist/commands/execute/pane-title.mjs.map +0 -1
- package/dist/commands/execute/plan-items.d.mts +0 -1
- package/dist/commands/execute/plan-items.mjs +0 -9
- package/dist/commands/execute/plan-items.mjs.map +0 -1
- package/dist/commands/execute/plan-validate.d.mts +0 -1
- package/dist/commands/execute/plan-validate.mjs +0 -68
- package/dist/commands/execute/plan-validate.mjs.map +0 -1
- package/dist/commands/execute/plan-verify.d.mts +0 -1
- package/dist/commands/execute/plan-verify.mjs +0 -43
- package/dist/commands/execute/plan-verify.mjs.map +0 -1
- package/dist/commands/execute/spawn-followups.d.mts +0 -1
- package/dist/commands/execute/spawn-followups.mjs +0 -22
- package/dist/commands/execute/spawn-followups.mjs.map +0 -1
- package/dist/commands/execute/team.d.mts +0 -3
- package/dist/commands/execute/team.mjs +0 -66
- package/dist/commands/execute/team.mjs.map +0 -1
- package/dist/commands/execute/token-usage.d.mts +0 -1
- package/dist/commands/execute/token-usage.mjs +0 -19
- package/dist/commands/execute/token-usage.mjs.map +0 -1
- package/dist/commands/execute/worker-audit-check.d.mts +0 -1
- package/dist/commands/execute/worker-audit-check.mjs +0 -34
- package/dist/commands/execute/worker-audit-check.mjs.map +0 -1
- package/dist/commands/execute/worker-dispatch.d.mts +0 -7
- package/dist/commands/execute/worker-dispatch.mjs +0 -64
- package/dist/commands/execute/worker-dispatch.mjs.map +0 -1
- package/dist/commands/execute/worker-state.d.mts +0 -1
- package/dist/commands/execute/worker-state.mjs +0 -28
- package/dist/commands/execute/worker-state.mjs.map +0 -1
- package/dist/commands/execute/worktree-lookup.d.mts +0 -1
- package/dist/commands/execute/worktree-lookup.mjs +0 -92
- package/dist/commands/execute/worktree-lookup.mjs.map +0 -1
- package/dist/commands/execute/worktree-status.d.mts +0 -1
- package/dist/commands/execute/worktree-status.mjs +0 -121
- package/dist/commands/execute/worktree-status.mjs.map +0 -1
- package/dist/commands/inspect/code-review.d.mts +0 -1
- package/dist/commands/inspect/code-review.mjs +0 -32
- package/dist/commands/inspect/code-review.mjs.map +0 -1
- package/dist/commands/inspect/container.d.mts +0 -1
- package/dist/commands/inspect/container.mjs +0 -25
- package/dist/commands/inspect/container.mjs.map +0 -1
- package/dist/commands/inspect/context-cost.d.mts +0 -1
- package/dist/commands/inspect/context-cost.mjs +0 -25
- package/dist/commands/inspect/context-cost.mjs.map +0 -1
- package/dist/commands/inspect/design-prep.d.mts +0 -1
- package/dist/commands/inspect/design-prep.mjs +0 -22
- package/dist/commands/inspect/design-prep.mjs.map +0 -1
- package/dist/commands/inspect/error-report.d.mts +0 -1
- package/dist/commands/inspect/error-report.mjs +0 -25
- package/dist/commands/inspect/error-report.mjs.map +0 -1
- package/dist/commands/inspect/error-zip.d.mts +0 -1
- package/dist/commands/inspect/error-zip.mjs +0 -24
- package/dist/commands/inspect/error-zip.mjs.map +0 -1
- package/dist/commands/inspect/log-report.d.mts +0 -1
- package/dist/commands/inspect/log-report.mjs +0 -26
- package/dist/commands/inspect/log-report.mjs.map +0 -1
- package/dist/commands/inspect/model-io.d.mts +0 -1
- package/dist/commands/inspect/model-io.mjs +0 -25
- package/dist/commands/inspect/model-io.mjs.map +0 -1
- package/dist/commands/inspect/profile-show.d.mts +0 -1
- package/dist/commands/inspect/profile-show.mjs +0 -28
- package/dist/commands/inspect/profile-show.mjs.map +0 -1
- package/dist/commands/inspect/recap.d.mts +0 -1
- package/dist/commands/inspect/recap.mjs +0 -30
- package/dist/commands/inspect/recap.mjs.map +0 -1
- package/dist/commands/inspect/resolve-task-key.d.mts +0 -1
- package/dist/commands/inspect/resolve-task-key.mjs +0 -24
- package/dist/commands/inspect/resolve-task-key.mjs.map +0 -1
- package/dist/commands/inspect/rollup.d.mts +0 -1
- package/dist/commands/inspect/rollup.mjs +0 -25
- package/dist/commands/inspect/rollup.mjs.map +0 -1
- package/dist/commands/inspect/run-audit.d.mts +0 -1
- package/dist/commands/inspect/run-audit.mjs +0 -25
- package/dist/commands/inspect/run-audit.mjs.map +0 -1
- package/dist/commands/inspect/set-work-status.d.mts +0 -1
- package/dist/commands/inspect/set-work-status.mjs +0 -29
- package/dist/commands/inspect/set-work-status.mjs.map +0 -1
- package/dist/commands/inspect/stage-map.d.mts +0 -1
- package/dist/commands/inspect/stage-map.mjs +0 -131
- package/dist/commands/inspect/stage-map.mjs.map +0 -1
- package/dist/commands/inspect/task-list.d.mts +0 -1
- package/dist/commands/inspect/task-list.mjs +0 -149
- package/dist/commands/inspect/task-list.mjs.map +0 -1
- package/dist/commands/inspect/task-show.d.mts +0 -1
- package/dist/commands/inspect/task-show.mjs +0 -108
- package/dist/commands/inspect/task-show.mjs.map +0 -1
- package/dist/commands/inspect/time-report.d.mts +0 -1
- package/dist/commands/inspect/time-report.mjs +0 -24
- package/dist/commands/inspect/time-report.mjs.map +0 -1
- package/dist/commands/inspect/usage-report.d.mts +0 -1
- package/dist/commands/inspect/usage-report.mjs +0 -23
- package/dist/commands/inspect/usage-report.mjs.map +0 -1
- package/dist/commands/inspect/user-response.d.mts +0 -1
- package/dist/commands/inspect/user-response.mjs +0 -35
- package/dist/commands/inspect/user-response.mjs.map +0 -1
- package/dist/commands/inspect/worker-liveness.d.mts +0 -1
- package/dist/commands/inspect/worker-liveness.mjs +0 -45
- package/dist/commands/inspect/worker-liveness.mjs.map +0 -1
- package/dist/commands/lifecycle/contract-check.d.mts +0 -1
- package/dist/commands/lifecycle/contract-check.mjs +0 -18
- package/dist/commands/lifecycle/contract-check.mjs.map +0 -1
- package/dist/commands/lifecycle/migrate.d.mts +0 -1
- package/dist/commands/lifecycle/migrate.mjs +0 -30
- package/dist/commands/lifecycle/migrate.mjs.map +0 -1
- package/dist/commands/lifecycle/model.d.mts +0 -1
- package/dist/commands/lifecycle/model.mjs +0 -22
- package/dist/commands/lifecycle/model.mjs.map +0 -1
- package/dist/commands/manager.d.mts +0 -3
- package/dist/commands/manager.mjs +0 -50
- package/dist/commands/manager.mjs.map +0 -1
- package/dist/commands/report/agent-activity.d.mts +0 -1
- package/dist/commands/report/agent-activity.mjs +0 -20
- package/dist/commands/report/agent-activity.mjs.map +0 -1
- package/dist/commands/report/approval-decision.d.mts +0 -1
- package/dist/commands/report/approval-decision.mjs +0 -21
- package/dist/commands/report/approval-decision.mjs.map +0 -1
- package/dist/commands/report/design-snapshot.d.mts +0 -1
- package/dist/commands/report/design-snapshot.mjs +0 -19
- package/dist/commands/report/design-snapshot.mjs.map +0 -1
- package/dist/commands/report/finalize.d.mts +0 -4
- package/dist/commands/report/finalize.mjs +0 -64
- package/dist/commands/report/finalize.mjs.map +0 -1
- package/dist/commands/report/inject-report-index.d.mts +0 -1
- package/dist/commands/report/inject-report-index.mjs +0 -21
- package/dist/commands/report/inject-report-index.mjs.map +0 -1
- package/dist/commands/report/render-final-report.d.mts +0 -1
- package/dist/commands/report/render-final-report.mjs +0 -23
- package/dist/commands/report/render-final-report.mjs.map +0 -1
- package/dist/commands/report/render-views.d.mts +0 -1
- package/dist/commands/report/render-views.mjs +0 -27
- package/dist/commands/report/render-views.mjs.map +0 -1
- package/dist/commands/report/translate.d.mts +0 -1
- package/dist/commands/report/translate.mjs +0 -33
- package/dist/commands/report/translate.mjs.map +0 -1
- package/runtime/bin/lib/okstra/tmux-pane.sh +0 -40
- package/runtime/bin/lib/okstra-ctl/cmd-batch.sh +0 -59
- package/runtime/bin/lib/okstra-ctl/cmd-list.sh +0 -35
- package/runtime/bin/lib/okstra-ctl/cmd-open.sh +0 -36
- package/runtime/bin/lib/okstra-ctl/cmd-projects.sh +0 -26
- package/runtime/bin/lib/okstra-ctl/cmd-reconcile.sh +0 -29
- package/runtime/bin/lib/okstra-ctl/cmd-reindex.sh +0 -38
- package/runtime/bin/lib/okstra-ctl/cmd-rerun.sh +0 -345
- package/runtime/bin/lib/okstra-ctl/cmd-show.sh +0 -27
- package/runtime/bin/lib/okstra-ctl/cmd-tail.sh +0 -92
- package/runtime/bin/lib/okstra-ctl/main.sh +0 -41
- package/runtime/bin/lib/okstra-ctl/prepare.sh +0 -31
- package/runtime/bin/lib/okstra-ctl/usage.sh +0 -23
- package/runtime/bin/okstra-central.sh +0 -152
- package/runtime/bin/okstra-incremental-carry.py +0 -10
- package/runtime/bin/okstra-incremental-scope.py +0 -10
- package/runtime/bin/okstra-team-reconcile.sh +0 -36
- package/runtime/python/okstra_ctl/agent_prompt_cli.py +0 -1156
- package/runtime/python/okstra_ctl/batch.py +0 -60
- package/runtime/python/okstra_ctl/clarification_items.py +0 -1050
- package/runtime/python/okstra_ctl/container_registry.py +0 -72
- package/runtime/python/okstra_ctl/improvement_assignment.py +0 -61
- package/runtime/python/okstra_ctl/resolver.py +0 -54
- package/runtime/python/okstra_ctl/team_reconcile.py +0 -275
- package/runtime/python/okstra_ctl/tmux.py +0 -134
- package/runtime/python/okstra_ctl/worktree.py +0 -1099
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
import { resolvePaths } from "../../lib/paths.mjs";
|
|
3
|
-
const USAGE = `okstra team — dispatch, await, and close okstra-owned worker panes
|
|
4
|
-
|
|
5
|
-
Usage:
|
|
6
|
-
okstra team dispatch --project-root <dir> --run-manifest <path> \
|
|
7
|
-
[--workers <csv>] [--jobs-file <path>] [--dry-run] \
|
|
8
|
-
[--idle-timeout-seconds <n>] [--dispatch-kind <kind>]
|
|
9
|
-
okstra team await --project-root <dir> --run-manifest <path> \
|
|
10
|
-
[--poll-interval-seconds <n>] [--timeout-seconds <n>] \
|
|
11
|
-
[--heartbeat-seconds <n>] [--json]
|
|
12
|
-
okstra team reclaim --project-root <dir> --run-manifest <path> \
|
|
13
|
-
[--dry-run] [--json]
|
|
14
|
-
okstra team teardown --project-root <dir> --run-manifest <path> \
|
|
15
|
-
[--dry-run] [--json]
|
|
16
|
-
|
|
17
|
-
Who may use it is read from the run manifest, never from a flag. A cmux run
|
|
18
|
-
(terminalBackend=cmux-pane) admits any lead, because okstra owns the panes there
|
|
19
|
-
rather than the host. Outside cmux it is refused unless the lead's host
|
|
20
|
-
descriptor owns the team lifecycle (launch_mode=team) — a worker there is a CLI
|
|
21
|
-
wrapper subprocess holding no pane, so there is nothing to close.
|
|
22
|
-
|
|
23
|
-
reclaim round boundary: closes the panes of dispatches that have finished and
|
|
24
|
-
leaves the in-progress ones open. Run it with --dry-run first to
|
|
25
|
-
count, then again to close.
|
|
26
|
-
teardown end of run: closes every recorded pane and writes off any dispatch
|
|
27
|
-
that never reached a terminal status.
|
|
28
|
-
|
|
29
|
-
--workspace-root and --okstra-bin are owned by this command.
|
|
30
|
-
`;
|
|
31
|
-
const OWNED_FLAGS = new Set(["--workspace-root", "--okstra-bin"]);
|
|
32
|
-
function isOwnedFlag(arg) {
|
|
33
|
-
if (OWNED_FLAGS.has(arg))
|
|
34
|
-
return true;
|
|
35
|
-
return [...OWNED_FLAGS].some((flag) => arg.startsWith(`${flag}=`));
|
|
36
|
-
}
|
|
37
|
-
export function buildTeamArgs(args, paths) {
|
|
38
|
-
return [
|
|
39
|
-
"--workspace-root", paths.workspace,
|
|
40
|
-
"--okstra-bin", paths.bin,
|
|
41
|
-
...args,
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
export async function run(args) {
|
|
45
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
46
|
-
process.stdout.write(USAGE);
|
|
47
|
-
return 0;
|
|
48
|
-
}
|
|
49
|
-
if (args.length === 0) {
|
|
50
|
-
process.stdout.write(USAGE);
|
|
51
|
-
return 2;
|
|
52
|
-
}
|
|
53
|
-
const forbidden = args.find(isOwnedFlag);
|
|
54
|
-
if (forbidden) {
|
|
55
|
-
process.stderr.write(`error: ${forbidden} is set by 'okstra team' itself — remove it from your args\n`);
|
|
56
|
-
return 2;
|
|
57
|
-
}
|
|
58
|
-
const paths = await resolvePaths();
|
|
59
|
-
const result = await runPythonModule({
|
|
60
|
-
module: "okstra_ctl.team",
|
|
61
|
-
args: buildTeamArgs(args, paths),
|
|
62
|
-
stdio: "inherit-stdout",
|
|
63
|
-
});
|
|
64
|
-
return result.code;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=team.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"team.mjs","sourceRoot":"","sources":["../../../src/commands/execute/team.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Bb,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC;AAElE,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAa,EAAE,KAAmB;IAC9D,OAAO;QACL,kBAAkB,EAAE,KAAK,CAAC,SAAS;QACnC,cAAc,EAAE,KAAK,CAAC,GAAG;QACzB,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,SAAS,8DAA8D,CAClF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;QAChC,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { runInstalledScript } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra token-usage — collect token usage for a run
|
|
3
|
-
|
|
4
|
-
Wraps the python helper (\`okstra-token-usage.py\`) installed under
|
|
5
|
-
\`~/.okstra/bin/\` so skills can call this command without emitting a
|
|
6
|
-
shell-expansion-bearing \`python3 "$HOME/..."\` invocation (which would
|
|
7
|
-
break \`Bash(okstra:*)\` permission matching and force a confirmation
|
|
8
|
-
prompt every call).
|
|
9
|
-
|
|
10
|
-
Usage:
|
|
11
|
-
okstra token-usage <state-file> [--write] [--summary] [...]
|
|
12
|
-
|
|
13
|
-
Arguments and flags after the state-file path are forwarded verbatim to
|
|
14
|
-
the python helper. See \`okstra token-usage --help\` for the full option list.
|
|
15
|
-
`;
|
|
16
|
-
export async function run(args) {
|
|
17
|
-
return runInstalledScript({ scriptName: "okstra-token-usage.py", args, usage: USAGE });
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=token-usage.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage.mjs","sourceRoot":"","sources":["../../../src/commands/execute/token-usage.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,KAAK,GAAG;;;;;;;;;;;;;CAab,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,OAAO,kBAAkB,CAAC,EAAE,UAAU,EAAE,uBAAuB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra worker-audit-check — check one run's worker audit sidecars
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra worker-audit-check --run-dir <runs/<task-type>/> --task-type <type> \\
|
|
6
|
-
--seq <nnn> [--worker <id>]
|
|
7
|
-
|
|
8
|
-
--run-dir the run directory; worker-results/ and prompts/ hang off it
|
|
9
|
-
--worker check only this worker (default: every worker in the run)
|
|
10
|
-
|
|
11
|
-
Emits one JSON object — \`{ok, failures[]}\` — and exits 2 when failures[] is
|
|
12
|
-
non-empty, 0 otherwise.
|
|
13
|
-
|
|
14
|
-
Runs the Phase 7 audit-sidecar rules now, while the worker session is still
|
|
15
|
-
alive: that every result file carries no \`## 0. Reading Confirmation\` heading,
|
|
16
|
-
that its audit sidecar exists, and that every backticked \`path:line\` citation
|
|
17
|
-
has a matching Evidence read row in that sidecar.
|
|
18
|
-
|
|
19
|
-
Call it right after collecting a worker result. The same failure at Phase 7
|
|
20
|
-
leaves only a retroactive edit — which breaks the audit chain — or a failed run.
|
|
21
|
-
`;
|
|
22
|
-
export async function run(args) {
|
|
23
|
-
if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
|
|
24
|
-
process.stdout.write(USAGE);
|
|
25
|
-
return args.length === 0 ? 2 : 0;
|
|
26
|
-
}
|
|
27
|
-
const result = await runPythonModule({
|
|
28
|
-
module: "okstra_ctl.worker_audit_check",
|
|
29
|
-
args,
|
|
30
|
-
stdio: "inherit-stdout",
|
|
31
|
-
});
|
|
32
|
-
return result.code;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=worker-audit-check.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-audit-check.mjs","sourceRoot":"","sources":["../../../src/commands/execute/worker-audit-check.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;CAmBb,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,+BAA+B;QACvC,IAAI;QACJ,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { CliArgs, RuntimePaths } from "../../lib/types.mjs";
|
|
2
|
-
export declare const USAGE = "okstra worker-dispatch \u2014 dispatch verified CLI-backed workers\n\nUsage:\n okstra worker-dispatch --project-root <dir> --run-manifest <path> \\\n [--workers <cli-assigned-worker-ids>] [--dry-run] \\\n [--idle-timeout-seconds <n>]\n\nThis command reads a prepared run manifest and dispatches only assignments\nwhose persisted runner is 'cli-wrapper'. It verifies each invocation contract\nbefore execution and uses the persisted provider, model, and registered CLI.\nNative-session assignments remain owned by the active host session.\n\nMissing worker prompt files are generated automatically from the immutable run snapshot.\nExisting prompt and metadata files are never overwritten.\nWhen report-writer completes, this command also runs the idempotent post-report\nsteps: token-usage substitution, render-views, spawn-followups, and validate-run.\n\n --workspace-root and --okstra-bin are owned by this command.\n";
|
|
3
|
-
export declare function buildWorkerDispatchArgs(args: CliArgs, paths: RuntimePaths): string[];
|
|
4
|
-
export declare function runWorkerDispatch(args: CliArgs, { commandName }?: {
|
|
5
|
-
readonly commandName?: string;
|
|
6
|
-
}): Promise<number>;
|
|
7
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
import { resolvePaths } from "../../lib/paths.mjs";
|
|
3
|
-
export const USAGE = `okstra worker-dispatch — dispatch verified CLI-backed workers
|
|
4
|
-
|
|
5
|
-
Usage:
|
|
6
|
-
okstra worker-dispatch --project-root <dir> --run-manifest <path> \\
|
|
7
|
-
[--workers <cli-assigned-worker-ids>] [--dry-run] \\
|
|
8
|
-
[--idle-timeout-seconds <n>]
|
|
9
|
-
|
|
10
|
-
This command reads a prepared run manifest and dispatches only assignments
|
|
11
|
-
whose persisted runner is 'cli-wrapper'. It verifies each invocation contract
|
|
12
|
-
before execution and uses the persisted provider, model, and registered CLI.
|
|
13
|
-
Native-session assignments remain owned by the active host session.
|
|
14
|
-
|
|
15
|
-
Missing worker prompt files are generated automatically from the immutable run snapshot.
|
|
16
|
-
Existing prompt and metadata files are never overwritten.
|
|
17
|
-
When report-writer completes, this command also runs the idempotent post-report
|
|
18
|
-
steps: token-usage substitution, render-views, spawn-followups, and validate-run.
|
|
19
|
-
|
|
20
|
-
--workspace-root and --okstra-bin are owned by this command.
|
|
21
|
-
`;
|
|
22
|
-
const OWNED_FLAGS = new Set(["--workspace-root", "--okstra-bin"]);
|
|
23
|
-
function isOwnedFlag(arg) {
|
|
24
|
-
if (OWNED_FLAGS.has(arg))
|
|
25
|
-
return true;
|
|
26
|
-
return [...OWNED_FLAGS].some((flag) => arg.startsWith(`${flag}=`));
|
|
27
|
-
}
|
|
28
|
-
export function buildWorkerDispatchArgs(args, paths) {
|
|
29
|
-
return [
|
|
30
|
-
"--workspace-root", paths.workspace,
|
|
31
|
-
"--okstra-bin", paths.bin,
|
|
32
|
-
...args,
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
export async function runWorkerDispatch(args, { commandName = "worker-dispatch" } = {}) {
|
|
36
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
37
|
-
process.stdout.write(commandName === "worker-dispatch"
|
|
38
|
-
? USAGE
|
|
39
|
-
: USAGE.replaceAll("worker-dispatch", commandName));
|
|
40
|
-
return 0;
|
|
41
|
-
}
|
|
42
|
-
if (args.length === 0) {
|
|
43
|
-
process.stdout.write(commandName === "worker-dispatch"
|
|
44
|
-
? USAGE
|
|
45
|
-
: USAGE.replaceAll("worker-dispatch", commandName));
|
|
46
|
-
return 2;
|
|
47
|
-
}
|
|
48
|
-
const forbidden = args.find(isOwnedFlag);
|
|
49
|
-
if (forbidden) {
|
|
50
|
-
process.stderr.write(`error: ${forbidden} is set by 'okstra ${commandName}' itself — remove it from your args\n`);
|
|
51
|
-
return 2;
|
|
52
|
-
}
|
|
53
|
-
const paths = await resolvePaths();
|
|
54
|
-
const result = await runPythonModule({
|
|
55
|
-
module: "okstra_ctl.worker_dispatch",
|
|
56
|
-
args: buildWorkerDispatchArgs(args, paths),
|
|
57
|
-
stdio: "inherit-stdout",
|
|
58
|
-
});
|
|
59
|
-
return result.code;
|
|
60
|
-
}
|
|
61
|
-
export async function run(args) {
|
|
62
|
-
return runWorkerDispatch(args);
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=worker-dispatch.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-dispatch.mjs","sourceRoot":"","sources":["../../../src/commands/execute/worker-dispatch.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;CAkBpB,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC;AAElE,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAa,EAAE,KAAmB;IACxE,OAAO;QACL,kBAAkB,EAAE,KAAK,CAAC,SAAS;QACnC,cAAc,EAAE,KAAK,CAAC,GAAG;QACzB,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAa,EACb,EAAE,WAAW,GAAG,iBAAiB,EAAE,GAAsC,EAAE;IAE3E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,KAAK,iBAAiB;YAC/B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,CACrD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,KAAK,iBAAiB;YAC/B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,CACrD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,SAAS,sBAAsB,WAAW,uCAAuC,CAC5F,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC;QAC1C,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra worker-state — atomically transition persisted worker status
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra worker-state transition --team-state <path> --worker <worker-id> \\
|
|
6
|
-
--status <in-progress|completed|timeout|error|not-run> \\
|
|
7
|
-
[--reason <text>] [--model <execution-value>]
|
|
8
|
-
|
|
9
|
-
in-progress records startedAt and clears endedAt. completed, timeout, and error
|
|
10
|
-
record endedAt. timeout, error, and not-run require --reason.
|
|
11
|
-
`;
|
|
12
|
-
export async function run(args) {
|
|
13
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
14
|
-
process.stdout.write(USAGE);
|
|
15
|
-
return 0;
|
|
16
|
-
}
|
|
17
|
-
if (args.length === 0) {
|
|
18
|
-
process.stdout.write(USAGE);
|
|
19
|
-
return 2;
|
|
20
|
-
}
|
|
21
|
-
const result = await runPythonModule({
|
|
22
|
-
module: "okstra_ctl.worker_state",
|
|
23
|
-
args,
|
|
24
|
-
stdio: "inherit-stdout",
|
|
25
|
-
});
|
|
26
|
-
return result.code;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=worker-state.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-state.mjs","sourceRoot":"","sources":["../../../src/commands/execute/worker-state.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;CASb,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,yBAAyB;QACjC,IAAI;QACJ,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { runPythonSnippet, emitJsonError } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra worktree-lookup — look up registered worktree for a task-key
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra worktree-lookup <project-id> <task-group> <task-id>
|
|
6
|
-
|
|
7
|
-
The three identifiers are slugified by the runtime before lookup, so
|
|
8
|
-
case/whitespace variants are tolerated.
|
|
9
|
-
|
|
10
|
-
Output: JSON with the registry entry (worktreePath, branch, baseRef,
|
|
11
|
-
status, lastPhase, createdAt). Emits {"ok": true, "entry": null} when
|
|
12
|
-
the task-key has no active worktree.
|
|
13
|
-
|
|
14
|
-
Replaces the okstra_ctl.worktree_registry.lookup() heredoc pattern.
|
|
15
|
-
`;
|
|
16
|
-
function parseArgs(args) {
|
|
17
|
-
const positional = args.filter((a) => !a.startsWith("--"));
|
|
18
|
-
const unknown = args.filter((a) => a.startsWith("--"));
|
|
19
|
-
if (unknown.length)
|
|
20
|
-
throw new Error(`unknown argument '${unknown[0]}'`);
|
|
21
|
-
if (positional.length !== 3) {
|
|
22
|
-
throw new Error("expected exactly three positional arguments: <project-id> <task-group> <task-id>");
|
|
23
|
-
}
|
|
24
|
-
const [projectId, taskGroup, taskId] = positional;
|
|
25
|
-
if (projectId === undefined || taskGroup === undefined || taskId === undefined) {
|
|
26
|
-
throw new Error("expected exactly three positional arguments: <project-id> <task-group> <task-id>");
|
|
27
|
-
}
|
|
28
|
-
return { projectId, taskGroup, taskId };
|
|
29
|
-
}
|
|
30
|
-
const SCRIPT = `
|
|
31
|
-
import json, sys
|
|
32
|
-
from dataclasses import asdict
|
|
33
|
-
from okstra_ctl import worktree_registry
|
|
34
|
-
from okstra_ctl.ids import _safe_fs_segment
|
|
35
|
-
|
|
36
|
-
pid, tg, tid = sys.argv[1], sys.argv[2], sys.argv[3]
|
|
37
|
-
entry = worktree_registry.lookup(
|
|
38
|
-
_safe_fs_segment(pid),
|
|
39
|
-
_safe_fs_segment(tg),
|
|
40
|
-
_safe_fs_segment(tid),
|
|
41
|
-
)
|
|
42
|
-
if entry is None:
|
|
43
|
-
print(json.dumps({"ok": True, "entry": None}))
|
|
44
|
-
else:
|
|
45
|
-
d = asdict(entry)
|
|
46
|
-
# rename for camelCase API symmetry
|
|
47
|
-
out = {
|
|
48
|
-
"ok": True,
|
|
49
|
-
"entry": {
|
|
50
|
-
"taskKey": d.get("task_key"),
|
|
51
|
-
"projectId": d.get("project_id"),
|
|
52
|
-
"taskGroup": d.get("task_group"),
|
|
53
|
-
"taskId": d.get("task_id"),
|
|
54
|
-
"worktreePath": d.get("worktree_path"),
|
|
55
|
-
"branch": d.get("branch"),
|
|
56
|
-
"baseRef": d.get("base_ref"),
|
|
57
|
-
"createdAt": d.get("created_at"),
|
|
58
|
-
"lastPhase": d.get("last_phase"),
|
|
59
|
-
"status": d.get("status"),
|
|
60
|
-
},
|
|
61
|
-
}
|
|
62
|
-
print(json.dumps(out, ensure_ascii=False, default=str, indent=2))
|
|
63
|
-
`;
|
|
64
|
-
export async function run(args) {
|
|
65
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
66
|
-
process.stdout.write(USAGE);
|
|
67
|
-
return 0;
|
|
68
|
-
}
|
|
69
|
-
let opts;
|
|
70
|
-
try {
|
|
71
|
-
opts = parseArgs(args);
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
75
|
-
process.stderr.write(`error: ${message}\n\n${USAGE}`);
|
|
76
|
-
return 2;
|
|
77
|
-
}
|
|
78
|
-
const result = await runPythonSnippet({
|
|
79
|
-
script: SCRIPT,
|
|
80
|
-
args: [opts.projectId, opts.taskGroup, opts.taskId],
|
|
81
|
-
});
|
|
82
|
-
if (result.code !== 0 && !result.stdout.trim()) {
|
|
83
|
-
emitJsonError({
|
|
84
|
-
stage: "python",
|
|
85
|
-
reason: `python invocation failed: ${result.stderr.trim() || "no output"}`,
|
|
86
|
-
});
|
|
87
|
-
return 1;
|
|
88
|
-
}
|
|
89
|
-
process.stdout.write(result.stdout);
|
|
90
|
-
return result.code === 0 ? 0 : result.code;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=worktree-lookup.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-lookup.mjs","sourceRoot":"","sources":["../../../src/commands/execute/worktree-lookup.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG9E,MAAM,KAAK,GAAG;;;;;;;;;;;;;CAab,CAAC;AAEF,SAAS,SAAS,CAAC,IAAa;IAK9B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC;IAClD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCd,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;QACpC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;KACpD,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,aAAa,CAAC;YACZ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,6BAA6B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE;SAC3E,CAAC,CAAC;QACH,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { runPythonSnippet, emitJsonError } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra worktree-status — clean-worktree check that ignores okstra's own scaffolding
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra worktree-status [--path <dir>] [--check-clean]
|
|
6
|
-
|
|
7
|
-
--path <dir> directory to inspect (default: current directory). This
|
|
8
|
-
command takes no --project-root; point --path at the stage
|
|
9
|
-
or task worktree you mean, or run it from inside one.
|
|
10
|
-
--check-clean exit 1 when the tree is dirty (default: always exit 0)
|
|
11
|
-
|
|
12
|
-
okstra provisions \`.okstra\` plus the configured sync entries (\`.project-docs\`,
|
|
13
|
-
\`.claude\`, …) into every task worktree, and an \`implementation\` stage worktree
|
|
14
|
-
sits inside its task worktree. A bare \`git status --porcelain\` therefore never
|
|
15
|
-
comes back empty there, so a plan step asserting a clean tree with one fails on
|
|
16
|
-
okstra's scaffolding rather than on the stage's own work. This command asks the
|
|
17
|
-
same question against source paths only — the exact gate okstra's own handoff
|
|
18
|
-
and stage-integration steps use.
|
|
19
|
-
|
|
20
|
-
Use it as the assertion in a plan step:
|
|
21
|
-
okstra worktree-status --check-clean
|
|
22
|
-
|
|
23
|
-
Do not chain a \`git tag stage-<N>-exit\` onto it. okstra writes that tag when it
|
|
24
|
-
settles the stage, at the commit the carry evidence records; a step that tags
|
|
25
|
-
while the stage is still running puts it on an earlier commit.
|
|
26
|
-
|
|
27
|
-
Output: JSON { ok, path, clean, entries, excluded }. \`entries\` holds the
|
|
28
|
-
\`git status --short\` rows that made it dirty; \`excluded\` lists the paths left
|
|
29
|
-
out of the question.
|
|
30
|
-
`;
|
|
31
|
-
function parseArgs(args) {
|
|
32
|
-
const opts = { path: ".", checkClean: false };
|
|
33
|
-
for (let i = 0; i < args.length; i += 1) {
|
|
34
|
-
const arg = args[i];
|
|
35
|
-
if (arg === undefined)
|
|
36
|
-
continue;
|
|
37
|
-
if (arg === "--check-clean") {
|
|
38
|
-
opts.checkClean = true;
|
|
39
|
-
}
|
|
40
|
-
else if (arg === "--path") {
|
|
41
|
-
i += 1;
|
|
42
|
-
if (i >= args.length)
|
|
43
|
-
throw new Error("--path requires a directory");
|
|
44
|
-
const path = args[i];
|
|
45
|
-
if (path === undefined)
|
|
46
|
-
throw new Error("--path requires a directory");
|
|
47
|
-
opts.path = path;
|
|
48
|
-
}
|
|
49
|
-
else if (arg.startsWith("--path=")) {
|
|
50
|
-
opts.path = arg.slice("--path=".length);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
throw new Error(`unknown argument '${arg}'`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (!opts.path)
|
|
57
|
-
throw new Error("--path requires a directory");
|
|
58
|
-
return opts;
|
|
59
|
-
}
|
|
60
|
-
const SCRIPT = `
|
|
61
|
-
import json, sys
|
|
62
|
-
from pathlib import Path
|
|
63
|
-
from okstra_ctl.worktree import (
|
|
64
|
-
dirty_entries_excluding_okstra,
|
|
65
|
-
is_git_work_tree,
|
|
66
|
-
nested_worktree_excludes,
|
|
67
|
-
okstra_clean_gate_excludes,
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
path = Path(sys.argv[1]).resolve()
|
|
71
|
-
check_clean = sys.argv[2] == "1"
|
|
72
|
-
|
|
73
|
-
if not path.is_dir():
|
|
74
|
-
print(json.dumps({"ok": False, "stage": "input",
|
|
75
|
-
"reason": f"not a directory: {path}"}))
|
|
76
|
-
sys.exit(2)
|
|
77
|
-
if not is_git_work_tree(path):
|
|
78
|
-
print(json.dumps({"ok": False, "stage": "input",
|
|
79
|
-
"reason": f"not inside a git work tree: {path}"}))
|
|
80
|
-
sys.exit(2)
|
|
81
|
-
|
|
82
|
-
entries = dirty_entries_excluding_okstra(path)
|
|
83
|
-
excluded = [*okstra_clean_gate_excludes(path), *nested_worktree_excludes(path)]
|
|
84
|
-
print(json.dumps({
|
|
85
|
-
"ok": True,
|
|
86
|
-
"path": str(path),
|
|
87
|
-
"clean": not entries,
|
|
88
|
-
"entries": entries,
|
|
89
|
-
"excluded": excluded,
|
|
90
|
-
}, ensure_ascii=False, indent=2))
|
|
91
|
-
sys.exit(1 if (check_clean and entries) else 0)
|
|
92
|
-
`;
|
|
93
|
-
export async function run(args) {
|
|
94
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
95
|
-
process.stdout.write(USAGE);
|
|
96
|
-
return 0;
|
|
97
|
-
}
|
|
98
|
-
let opts;
|
|
99
|
-
try {
|
|
100
|
-
opts = parseArgs(args);
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
104
|
-
process.stderr.write(`error: ${message}\n\n${USAGE}`);
|
|
105
|
-
return 2;
|
|
106
|
-
}
|
|
107
|
-
const result = await runPythonSnippet({
|
|
108
|
-
script: SCRIPT,
|
|
109
|
-
args: [opts.path, opts.checkClean ? "1" : "0"],
|
|
110
|
-
});
|
|
111
|
-
if (result.code !== 0 && !result.stdout.trim()) {
|
|
112
|
-
emitJsonError({
|
|
113
|
-
stage: "python",
|
|
114
|
-
reason: `python invocation failed: ${result.stderr.trim() || "no output"}`,
|
|
115
|
-
});
|
|
116
|
-
return 1;
|
|
117
|
-
}
|
|
118
|
-
process.stdout.write(result.stdout);
|
|
119
|
-
return result.code;
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=worktree-status.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-status.mjs","sourceRoot":"","sources":["../../../src/commands/execute/worktree-status.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG9E,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bb,CAAC;AAEF,SAAS,SAAS,CAAC,IAAa;IAC9B,MAAM,IAAI,GAA0C,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCd,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;QACpC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;KAC/C,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,aAAa,CAAC;YACZ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,6BAA6B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE;SAC3E,CAAC,CAAC;QACH,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra code-review — resolve a code review's diff range and result path
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra code-review target --task-key <k> --stage <N> [--project-root <dir>] [--cwd <dir>] --json
|
|
6
|
-
okstra code-review target --branch <name> [--base <ref>] [--date <YYYY-MM-DD>] [--project-root <dir>] --json
|
|
7
|
-
|
|
8
|
-
Output: JSON { ok, mode, worktreePath, branch, baseCommit, headCommit,
|
|
9
|
-
reviewPath, round }. Stage mode reads the base commit from the stage
|
|
10
|
-
registry row; branch mode falls back to the merge-base with the default
|
|
11
|
-
branch. An empty worktreePath means the review reads the branch ref
|
|
12
|
-
instead of a checked-out tree. This is read-only — it never creates
|
|
13
|
-
directories or files.
|
|
14
|
-
`;
|
|
15
|
-
export async function run(args) {
|
|
16
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
17
|
-
process.stdout.write(USAGE);
|
|
18
|
-
return 0;
|
|
19
|
-
}
|
|
20
|
-
const [subcommand, ...rest] = args;
|
|
21
|
-
if (subcommand !== "target") {
|
|
22
|
-
process.stderr.write(`error: unknown subcommand '${subcommand ?? ""}'\n\n${USAGE}`);
|
|
23
|
-
return 2;
|
|
24
|
-
}
|
|
25
|
-
const result = await runPythonModule({
|
|
26
|
-
module: "okstra_ctl.code_review_target",
|
|
27
|
-
args: rest,
|
|
28
|
-
stdio: "inherit-stdout",
|
|
29
|
-
});
|
|
30
|
-
return result.code;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=code-review.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-review.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/code-review.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;;CAYb,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,UAAU,IAAI,EAAE,QAAQ,KAAK,EAAE,CAC9D,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,+BAA+B;QACvC,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra container — manage the okstra container runtime
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra container up [options]
|
|
6
|
-
okstra container status [options]
|
|
7
|
-
okstra container logs [options]
|
|
8
|
-
okstra container stop-watcher [options]
|
|
9
|
-
okstra container down [options]
|
|
10
|
-
|
|
11
|
-
Each sub-command delegates to the okstra_ctl.container python entrypoint.
|
|
12
|
-
`;
|
|
13
|
-
export async function run(args) {
|
|
14
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
15
|
-
process.stdout.write(USAGE);
|
|
16
|
-
return 0;
|
|
17
|
-
}
|
|
18
|
-
const result = await runPythonModule({
|
|
19
|
-
module: "okstra_ctl.container",
|
|
20
|
-
args,
|
|
21
|
-
stdio: "inherit-stdout",
|
|
22
|
-
});
|
|
23
|
-
return result.code;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=container.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/container.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;CAUb,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,sBAAsB;QAC9B,IAAI;QACJ,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra context-cost — estimate context/read cost for a task bundle
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra context-cost <task-root>
|
|
6
|
-
okstra context-cost <task-key> --project-root <dir>
|
|
7
|
-
okstra context-cost <task-key> --cwd <dir>
|
|
8
|
-
|
|
9
|
-
Output: JSON with task file counts, current-run counts, lead Phase 1 read
|
|
10
|
-
surface, analysis-worker initial read surface, and report-writer synthesis
|
|
11
|
-
surface. This is read-only; it never mutates task artifacts.
|
|
12
|
-
`;
|
|
13
|
-
export async function run(args) {
|
|
14
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
15
|
-
process.stdout.write(USAGE);
|
|
16
|
-
return 0;
|
|
17
|
-
}
|
|
18
|
-
const result = await runPythonModule({
|
|
19
|
-
module: "okstra_ctl.context_cost",
|
|
20
|
-
args,
|
|
21
|
-
stdio: "inherit-stdout",
|
|
22
|
-
});
|
|
23
|
-
return result.code;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=context-cost.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-cost.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/context-cost.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;CAUb,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,yBAAyB;QACjC,IAAI;QACJ,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { runPythonModule } from "../../lib/python-helper.mjs";
|
|
2
|
-
const USAGE = `okstra design-prep — review AI-prepared implementation design inputs
|
|
3
|
-
|
|
4
|
-
Usage:
|
|
5
|
-
okstra design-prep list [--project-root <path>] [--report <path>]
|
|
6
|
-
okstra design-prep show --report <path> [--item PREP-001]
|
|
7
|
-
okstra design-prep write --report <path> --item PREP-001 \\
|
|
8
|
-
--decision <accept-draft|modify-draft|reject-draft|defer> \\
|
|
9
|
-
[--overrides <json-object>] [--notes <text>] --confirmed
|
|
10
|
-
`;
|
|
11
|
-
export async function run(args) {
|
|
12
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
13
|
-
process.stdout.write(USAGE);
|
|
14
|
-
return 0;
|
|
15
|
-
}
|
|
16
|
-
const { code } = await runPythonModule({
|
|
17
|
-
module: "okstra_ctl.design_prep",
|
|
18
|
-
args,
|
|
19
|
-
});
|
|
20
|
-
return code ?? 1;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=design-prep.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"design-prep.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/design-prep.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;CAQb,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,CAAC;QACrC,MAAM,EAAE,wBAAwB;QAChC,IAAI;KACL,CAAC,CAAC;IACH,OAAO,IAAI,IAAI,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function run(args: readonly string[]): Promise<number>;
|