okstra 0.174.0 → 0.176.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 +18 -9
- package/bin/okstra +8 -4
- package/dist/cli-registry.d.mts +16 -0
- package/dist/cli-registry.mjs +560 -0
- package/dist/cli-registry.mjs.map +1 -0
- package/dist/commands/execute/agent-prompt.d.mts +1 -0
- package/{src → dist}/commands/execute/agent-prompt.mjs +10 -11
- package/dist/commands/execute/agent-prompt.mjs.map +1 -0
- package/dist/commands/execute/codex-dispatch.d.mts +3 -0
- package/dist/commands/execute/codex-dispatch.mjs +6 -0
- package/dist/commands/execute/codex-dispatch.mjs.map +1 -0
- package/dist/commands/execute/codex-run.d.mts +3 -0
- package/{src → dist}/commands/execute/codex-run.mjs +30 -37
- package/dist/commands/execute/codex-run.mjs.map +1 -0
- package/dist/commands/execute/convergence.d.mts +1 -0
- package/{src → dist}/commands/execute/convergence.mjs +15 -16
- package/dist/commands/execute/convergence.mjs.map +1 -0
- package/dist/commands/execute/error-log.d.mts +1 -0
- package/{src → dist}/commands/execute/error-log.mjs +2 -3
- package/dist/commands/execute/error-log.mjs.map +1 -0
- package/dist/commands/execute/git-reconcile.d.mts +1 -0
- package/{src → dist}/commands/execute/git-reconcile.mjs +10 -11
- package/dist/commands/execute/git-reconcile.mjs.map +1 -0
- package/dist/commands/execute/handoff.d.mts +1 -0
- package/{src → dist}/commands/execute/handoff.mjs +10 -11
- package/dist/commands/execute/handoff.mjs.map +1 -0
- package/dist/commands/execute/incremental-carry.d.mts +1 -0
- package/{src → dist}/commands/execute/incremental-carry.mjs +2 -3
- package/dist/commands/execute/incremental-carry.mjs.map +1 -0
- package/dist/commands/execute/incremental-scope.d.mts +1 -0
- package/{src → dist}/commands/execute/incremental-scope.mjs +2 -3
- package/dist/commands/execute/incremental-scope.mjs.map +1 -0
- package/dist/commands/execute/integrate-stages.d.mts +1 -0
- package/{src → dist}/commands/execute/integrate-stages.mjs +10 -11
- package/dist/commands/execute/integrate-stages.mjs.map +1 -0
- package/dist/commands/execute/pane-title.d.mts +1 -0
- package/dist/commands/execute/pane-title.mjs +20 -0
- package/dist/commands/execute/pane-title.mjs.map +1 -0
- package/dist/commands/execute/plan-items.d.mts +1 -0
- package/dist/commands/execute/plan-items.mjs +9 -0
- package/dist/commands/execute/plan-items.mjs.map +1 -0
- package/dist/commands/execute/plan-validate.d.mts +1 -0
- package/dist/commands/execute/plan-validate.mjs +68 -0
- package/dist/commands/execute/plan-validate.mjs.map +1 -0
- package/dist/commands/execute/plan-verify.d.mts +1 -0
- package/{src → dist}/commands/execute/plan-verify.mjs +13 -16
- package/dist/commands/execute/plan-verify.mjs.map +1 -0
- package/dist/commands/execute/render-bundle.d.mts +3 -0
- package/{src → dist}/commands/execute/render-bundle.mjs +65 -61
- package/dist/commands/execute/render-bundle.mjs.map +1 -0
- package/dist/commands/execute/run.d.mts +24 -0
- package/dist/commands/execute/run.mjs +196 -0
- package/dist/commands/execute/run.mjs.map +1 -0
- package/dist/commands/execute/spawn-followups.d.mts +1 -0
- package/{src → dist}/commands/execute/spawn-followups.mjs +6 -7
- package/dist/commands/execute/spawn-followups.mjs.map +1 -0
- package/dist/commands/execute/team.d.mts +3 -0
- package/{src → dist}/commands/execute/team.mjs +29 -36
- package/dist/commands/execute/team.mjs.map +1 -0
- package/dist/commands/execute/token-usage.d.mts +1 -0
- package/{src → dist}/commands/execute/token-usage.mjs +2 -3
- package/dist/commands/execute/token-usage.mjs.map +1 -0
- package/dist/commands/execute/wizard.d.mts +8 -0
- package/dist/commands/execute/wizard.mjs +191 -0
- package/dist/commands/execute/wizard.mjs.map +1 -0
- package/dist/commands/execute/worker-audit-check.d.mts +1 -0
- package/{src → dist}/commands/execute/worker-audit-check.mjs +11 -12
- package/dist/commands/execute/worker-audit-check.mjs.map +1 -0
- package/dist/commands/execute/worker-dispatch.d.mts +7 -0
- package/{src → dist}/commands/execute/worker-dispatch.mjs +34 -46
- package/dist/commands/execute/worker-dispatch.mjs.map +1 -0
- package/dist/commands/execute/worker-state.d.mts +1 -0
- package/{src → dist}/commands/execute/worker-state.mjs +15 -16
- package/dist/commands/execute/worker-state.mjs.map +1 -0
- package/dist/commands/execute/worktree-lookup.d.mts +1 -0
- package/{src → dist}/commands/execute/worktree-lookup.mjs +38 -37
- package/dist/commands/execute/worktree-lookup.mjs.map +1 -0
- package/dist/commands/execute/worktree-status.d.mts +1 -0
- package/{src → dist}/commands/execute/worktree-status.mjs +52 -46
- package/dist/commands/execute/worktree-status.mjs.map +1 -0
- package/dist/commands/inspect/code-review.d.mts +1 -0
- package/{src → dist}/commands/inspect/code-review.mjs +16 -19
- package/dist/commands/inspect/code-review.mjs.map +1 -0
- package/dist/commands/inspect/container.d.mts +1 -0
- package/{src → dist}/commands/inspect/container.mjs +11 -13
- package/dist/commands/inspect/container.mjs.map +1 -0
- package/dist/commands/inspect/context-cost.d.mts +1 -0
- package/{src → dist}/commands/inspect/context-cost.mjs +11 -13
- package/dist/commands/inspect/context-cost.mjs.map +1 -0
- package/dist/commands/inspect/design-prep.d.mts +1 -0
- package/{src → dist}/commands/inspect/design-prep.mjs +10 -11
- package/dist/commands/inspect/design-prep.mjs.map +1 -0
- package/dist/commands/inspect/error-report.d.mts +1 -0
- package/{src → dist}/commands/inspect/error-report.mjs +11 -13
- package/dist/commands/inspect/error-report.mjs.map +1 -0
- package/dist/commands/inspect/error-zip.d.mts +1 -0
- package/{src → dist}/commands/inspect/error-zip.mjs +11 -12
- package/dist/commands/inspect/error-zip.mjs.map +1 -0
- package/dist/commands/inspect/log-report.d.mts +1 -0
- package/{src → dist}/commands/inspect/log-report.mjs +11 -13
- package/dist/commands/inspect/log-report.mjs.map +1 -0
- package/dist/commands/inspect/profile-show.d.mts +1 -0
- package/{src → dist}/commands/inspect/profile-show.mjs +10 -11
- package/dist/commands/inspect/profile-show.mjs.map +1 -0
- package/dist/commands/inspect/recap.d.mts +1 -0
- package/{src → dist}/commands/inspect/recap.mjs +11 -13
- package/dist/commands/inspect/recap.mjs.map +1 -0
- package/dist/commands/inspect/resolve-task-key.d.mts +1 -0
- package/{src → dist}/commands/inspect/resolve-task-key.mjs +11 -13
- package/dist/commands/inspect/resolve-task-key.mjs.map +1 -0
- package/dist/commands/inspect/rollup.d.mts +1 -0
- package/{src → dist}/commands/inspect/rollup.mjs +11 -13
- package/dist/commands/inspect/rollup.mjs.map +1 -0
- package/dist/commands/inspect/run-audit.d.mts +1 -0
- package/{src → dist}/commands/inspect/run-audit.mjs +11 -12
- package/dist/commands/inspect/run-audit.mjs.map +1 -0
- package/dist/commands/inspect/set-work-status.d.mts +1 -0
- package/{src → dist}/commands/inspect/set-work-status.mjs +11 -13
- package/dist/commands/inspect/set-work-status.mjs.map +1 -0
- package/dist/commands/inspect/stage-map.d.mts +1 -0
- package/dist/commands/inspect/stage-map.mjs +110 -0
- package/dist/commands/inspect/stage-map.mjs.map +1 -0
- package/dist/commands/inspect/task-list.d.mts +1 -0
- package/dist/commands/inspect/task-list.mjs +103 -0
- package/dist/commands/inspect/task-list.mjs.map +1 -0
- package/dist/commands/inspect/task-show.d.mts +1 -0
- package/dist/commands/inspect/task-show.mjs +108 -0
- package/dist/commands/inspect/task-show.mjs.map +1 -0
- package/dist/commands/inspect/time-report.d.mts +1 -0
- package/{src → dist}/commands/inspect/time-report.mjs +11 -13
- package/dist/commands/inspect/time-report.mjs.map +1 -0
- package/dist/commands/inspect/usage-report.d.mts +1 -0
- package/{src → dist}/commands/inspect/usage-report.mjs +11 -13
- package/dist/commands/inspect/usage-report.mjs.map +1 -0
- package/dist/commands/inspect/user-response.d.mts +1 -0
- package/{src → dist}/commands/inspect/user-response.mjs +10 -11
- package/dist/commands/inspect/user-response.mjs.map +1 -0
- package/dist/commands/inspect/worker-liveness.d.mts +1 -0
- package/{src → dist}/commands/inspect/worker-liveness.mjs +11 -13
- package/dist/commands/inspect/worker-liveness.mjs.map +1 -0
- package/dist/commands/lifecycle/check-project.d.mts +21 -0
- package/dist/commands/lifecycle/check-project.mjs +175 -0
- package/dist/commands/lifecycle/check-project.mjs.map +1 -0
- package/dist/commands/lifecycle/config.d.mts +1 -0
- package/dist/commands/lifecycle/config.mjs +369 -0
- package/dist/commands/lifecycle/config.mjs.map +1 -0
- package/dist/commands/lifecycle/doctor.d.mts +10 -0
- package/dist/commands/lifecycle/doctor.mjs +317 -0
- package/dist/commands/lifecycle/doctor.mjs.map +1 -0
- package/dist/commands/lifecycle/install.d.mts +17 -0
- package/dist/commands/lifecycle/install.mjs +1077 -0
- package/dist/commands/lifecycle/install.mjs.map +1 -0
- package/dist/commands/lifecycle/migrate.d.mts +1 -0
- package/{src → dist}/commands/lifecycle/migrate.mjs +10 -11
- package/dist/commands/lifecycle/migrate.mjs.map +1 -0
- package/dist/commands/lifecycle/model.d.mts +1 -0
- package/dist/commands/lifecycle/model.mjs +22 -0
- package/dist/commands/lifecycle/model.mjs.map +1 -0
- package/dist/commands/lifecycle/paths.d.mts +1 -0
- package/dist/commands/lifecycle/paths.mjs +102 -0
- package/dist/commands/lifecycle/paths.mjs.map +1 -0
- package/dist/commands/lifecycle/preflight.d.mts +1 -0
- package/dist/commands/lifecycle/preflight.mjs +124 -0
- package/dist/commands/lifecycle/preflight.mjs.map +1 -0
- package/dist/commands/lifecycle/setup.d.mts +1 -0
- package/dist/commands/lifecycle/setup.mjs +297 -0
- package/dist/commands/lifecycle/setup.mjs.map +1 -0
- package/dist/commands/lifecycle/uninstall.d.mts +4 -0
- package/dist/commands/lifecycle/uninstall.mjs +262 -0
- package/dist/commands/lifecycle/uninstall.mjs.map +1 -0
- package/dist/commands/manager.d.mts +3 -0
- package/{src → dist}/commands/manager.mjs +25 -32
- package/dist/commands/manager.mjs.map +1 -0
- package/dist/commands/memory/memory.d.mts +1 -0
- package/dist/commands/memory/memory.mjs +569 -0
- package/dist/commands/memory/memory.mjs.map +1 -0
- package/dist/commands/pr/pr.d.mts +33 -0
- package/dist/commands/pr/pr.mjs +296 -0
- package/dist/commands/pr/pr.mjs.map +1 -0
- package/dist/commands/report/agent-activity.d.mts +1 -0
- package/{src → dist}/commands/report/agent-activity.mjs +11 -12
- package/dist/commands/report/agent-activity.mjs.map +1 -0
- package/dist/commands/report/finalize.d.mts +4 -0
- package/{src → dist}/commands/report/finalize.mjs +25 -32
- package/dist/commands/report/finalize.mjs.map +1 -0
- package/dist/commands/report/inject-report-index.d.mts +1 -0
- package/{src → dist}/commands/report/inject-report-index.mjs +6 -7
- package/dist/commands/report/inject-report-index.mjs.map +1 -0
- package/dist/commands/report/render-final-report.d.mts +1 -0
- package/{src → dist}/commands/report/render-final-report.mjs +6 -7
- package/dist/commands/report/render-final-report.mjs.map +1 -0
- package/dist/commands/report/render-views.d.mts +1 -0
- package/{src → dist}/commands/report/render-views.mjs +6 -7
- package/dist/commands/report/render-views.mjs.map +1 -0
- package/dist/commands/report/translate.d.mts +1 -0
- package/{src → dist}/commands/report/translate.mjs +6 -7
- package/dist/commands/report/translate.mjs.map +1 -0
- package/dist/lib/helper-scripts.d.mts +3 -0
- package/{src → dist}/lib/helper-scripts.mjs +11 -14
- package/dist/lib/helper-scripts.mjs.map +1 -0
- package/dist/lib/host-registry-client.d.mts +25 -0
- package/dist/lib/host-registry-client.mjs +152 -0
- package/dist/lib/host-registry-client.mjs.map +1 -0
- package/dist/lib/install-assets.d.mts +8 -0
- package/{src → dist}/lib/install-assets.mjs +17 -20
- package/dist/lib/install-assets.mjs.map +1 -0
- package/dist/lib/okstra-dirs.d.mts +4 -0
- package/{src → dist}/lib/okstra-dirs.mjs +3 -6
- package/dist/lib/okstra-dirs.mjs.map +1 -0
- package/dist/lib/paths.d.mts +4 -0
- package/dist/lib/paths.mjs +78 -0
- package/dist/lib/paths.mjs.map +1 -0
- package/dist/lib/proc.d.mts +3 -0
- package/dist/lib/proc.mjs +31 -0
- package/dist/lib/proc.mjs.map +1 -0
- package/dist/lib/python-helper.d.mts +8 -0
- package/dist/lib/python-helper.mjs +123 -0
- package/dist/lib/python-helper.mjs.map +1 -0
- package/dist/lib/runtime-manifest.d.mts +7 -0
- package/dist/lib/runtime-manifest.mjs +73 -0
- package/dist/lib/runtime-manifest.mjs.map +1 -0
- package/dist/lib/skill-catalog.d.mts +4 -0
- package/dist/lib/skill-catalog.mjs +50 -0
- package/dist/lib/skill-catalog.mjs.map +1 -0
- package/dist/lib/types.d.mts +129 -0
- package/dist/lib/types.mjs +2 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/lib/version.d.mts +2 -0
- package/dist/lib/version.mjs +27 -0
- package/dist/lib/version.mjs.map +1 -0
- package/docs/architecture/storage-model.md +6 -2
- package/docs/architecture.md +29 -20
- package/docs/cli.md +40 -16
- package/docs/contributor-change-matrix.md +2 -2
- package/docs/for-ai/skills/okstra-inspect.md +2 -3
- package/docs/for-ai/skills/okstra-rollup.md +1 -0
- package/docs/project-structure-overview.md +72 -62
- package/docs/task-process/README.md +12 -8
- package/docs/task-process/common-flow.md +13 -16
- package/docs/task-process/error-analysis.md +9 -10
- package/docs/task-process/final-verification.md +7 -7
- package/docs/task-process/implementation-planning.md +9 -9
- package/docs/task-process/implementation.md +6 -6
- package/docs/task-process/release-handoff.md +8 -7
- package/docs/task-process/requirements-discovery.md +8 -8
- package/package.json +11 -5
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/workers/claude-worker.md +2 -1
- package/runtime/agents/workers/report-writer-worker.md +3 -1
- package/runtime/agents/workers/translator-worker.md +3 -1
- package/runtime/bin/lib/okstra/cli.sh +12 -0
- package/runtime/bin/lib/okstra/globals.sh +3 -0
- package/runtime/bin/lib/okstra/interactive.sh +12 -6
- package/runtime/bin/lib/okstra/usage.sh +7 -6
- package/runtime/bin/okstra-error-log.py +27 -0
- package/runtime/bin/okstra-provider-exec.py +217 -5
- package/runtime/bin/okstra-spawn-followups.py +4 -2
- package/runtime/bin/okstra.sh +10 -0
- package/runtime/prompts/launch.template.md +2 -2
- package/runtime/prompts/lead/context-loader.md +1 -2
- package/runtime/prompts/lead/convergence.md +27 -18
- package/runtime/prompts/lead/okstra-lead-contract.md +6 -5
- package/runtime/prompts/lead/plan-body-verification.md +10 -3
- package/runtime/prompts/lead/report-writer.md +15 -1
- package/runtime/prompts/lead/team-contract.md +17 -13
- package/runtime/prompts/profiles/_implementation-deliverable.md +1 -1
- package/runtime/prompts/profiles/_implementation-executor.md +0 -3
- package/runtime/prompts/profiles/_implementation-verifier.md +3 -7
- package/runtime/prompts/profiles/change-impact-analysis.md +20 -0
- package/runtime/prompts/profiles/error-analysis.md +27 -1
- package/runtime/prompts/profiles/feature-analysis.md +20 -0
- package/runtime/prompts/profiles/final-verification.md +20 -1
- package/runtime/prompts/profiles/implementation-option-selection.md +20 -0
- package/runtime/prompts/profiles/implementation-planning.md +26 -0
- package/runtime/prompts/profiles/implementation.md +19 -0
- package/runtime/prompts/profiles/improvement-discovery.md +21 -1
- package/runtime/prompts/profiles/project-analysis.md +20 -0
- package/runtime/prompts/profiles/release-handoff.md +4 -0
- package/runtime/prompts/profiles/requirements-discovery.md +27 -1
- package/runtime/prompts/wizard/prompts.ko.json +35 -0
- package/runtime/python/okstra_ctl/adapters/dispatch/cli_wrapper.py +8 -0
- package/runtime/python/okstra_ctl/adapters/dispatch/cmux.py +8 -0
- package/runtime/python/okstra_ctl/adapters/dispatch/native_team.py +13 -0
- package/runtime/python/okstra_ctl/adapters/hosts/antigravity/adapter.py +2 -2
- package/runtime/python/okstra_ctl/adapters/hosts/claude-code/adapter.py +25 -5
- package/runtime/python/okstra_ctl/adapters/hosts/codex/adapter.py +2 -2
- package/runtime/python/okstra_ctl/adapters/hosts/external/adapter.py +4 -1
- package/runtime/python/okstra_ctl/adapters/hosts/grok/adapter.py +2 -2
- package/runtime/python/okstra_ctl/adapters/hosts/kimi/adapter.py +2 -2
- package/runtime/python/okstra_ctl/adapters/providers/antigravity/adapter.py +79 -11
- package/runtime/python/okstra_ctl/adapters/providers/claude/adapter.py +95 -25
- package/runtime/python/okstra_ctl/adapters/providers/codex/adapter.py +59 -14
- package/runtime/python/okstra_ctl/adapters/providers/grok/adapter.py +55 -9
- package/runtime/python/okstra_ctl/adapters/providers/kimi/adapter.py +51 -12
- package/runtime/python/okstra_ctl/adapters/runtime/__init__.py +1 -0
- package/runtime/python/okstra_ctl/adapters/runtime/assembly.py +27 -0
- package/runtime/python/okstra_ctl/adapters/runtime/cli_wrapper.py +49 -0
- package/runtime/python/okstra_ctl/adapters/runtime/cmux.py +74 -0
- package/runtime/python/okstra_ctl/agent_activity.py +5 -1
- package/runtime/python/okstra_ctl/agent_invocation.py +608 -14
- package/runtime/python/okstra_ctl/agent_prompt_cli.py +249 -50
- package/runtime/python/okstra_ctl/application/open_worker.py +29 -0
- package/runtime/python/okstra_ctl/application/resolve_assignment.py +53 -12
- package/runtime/python/okstra_ctl/assignment_environment.py +102 -0
- package/runtime/python/okstra_ctl/assignment_resolver.py +790 -0
- package/runtime/python/okstra_ctl/attempt_evidence.py +342 -0
- package/runtime/python/okstra_ctl/convergence.py +409 -3
- package/runtime/python/okstra_ctl/convergence_engine.py +248 -15
- package/runtime/python/okstra_ctl/convergence_store.py +170 -1
- package/runtime/python/okstra_ctl/dispatch_core.py +1204 -155
- package/runtime/python/okstra_ctl/dispatch_state.py +696 -11
- package/runtime/python/okstra_ctl/doctor.py +14 -0
- package/runtime/python/okstra_ctl/domain/host.py +34 -1
- package/runtime/python/okstra_ctl/domain/provider.py +212 -6
- package/runtime/python/okstra_ctl/domain/role.py +125 -0
- package/runtime/python/okstra_ctl/domain/wizard/interaction.py +18 -0
- package/runtime/python/okstra_ctl/domain/worker_exec.py +34 -1
- package/runtime/python/okstra_ctl/domain/worker_role.py +13 -3
- package/runtime/python/okstra_ctl/domain/worker_runtime.py +44 -0
- package/runtime/python/okstra_ctl/domain/worker_stream.py +24 -0
- package/runtime/python/okstra_ctl/error_log_write.py +9 -0
- package/runtime/python/okstra_ctl/error_report.py +21 -1
- package/runtime/python/okstra_ctl/execution_identity.py +529 -0
- package/runtime/python/okstra_ctl/execution_manifest.py +1281 -0
- package/runtime/python/okstra_ctl/execution_mutation_audit.py +619 -0
- package/runtime/python/okstra_ctl/implementation_outcome.py +21 -5
- package/runtime/python/okstra_ctl/index.py +6 -2
- package/runtime/python/okstra_ctl/initial_prompt_materialization.py +43 -3
- package/runtime/python/okstra_ctl/legacy_model_selection.py +578 -0
- package/runtime/python/okstra_ctl/manager_sync.py +4 -1
- package/runtime/python/okstra_ctl/model_cli.py +278 -0
- package/runtime/python/okstra_ctl/model_defaults.py +46 -0
- package/runtime/python/okstra_ctl/model_discovery.py +26 -7
- package/runtime/python/okstra_ctl/model_pool.py +501 -0
- package/runtime/python/okstra_ctl/models.py +47 -27
- package/runtime/python/okstra_ctl/mutation_recovery.py +293 -0
- package/runtime/python/okstra_ctl/next_phase.py +236 -0
- package/runtime/python/okstra_ctl/pane_title.py +151 -0
- package/runtime/python/okstra_ctl/ports/host_model.py +48 -17
- package/runtime/python/okstra_ctl/ports/worker_dispatch.py +4 -0
- package/runtime/python/okstra_ctl/ports/worker_runtime.py +26 -0
- package/runtime/python/okstra_ctl/recap.py +4 -1
- package/runtime/python/okstra_ctl/registry/provider_registry.py +8 -4
- package/runtime/python/okstra_ctl/render.py +124 -57
- package/runtime/python/okstra_ctl/render_final_report.py +19 -0
- package/runtime/python/okstra_ctl/report_contract.py +39 -0
- package/runtime/python/okstra_ctl/report_finalize.py +16 -0
- package/runtime/python/okstra_ctl/report_html/render.py +1 -0
- package/runtime/python/okstra_ctl/role_requirements.py +210 -0
- package/runtime/python/okstra_ctl/rollup.py +4 -1
- package/runtime/python/okstra_ctl/run.py +1210 -258
- package/runtime/python/okstra_ctl/run_index_row.py +7 -1
- package/runtime/python/okstra_ctl/stage_fix_carry.py +17 -1
- package/runtime/python/okstra_ctl/team.py +14 -18
- package/runtime/python/okstra_ctl/time_report.py +38 -4
- package/runtime/python/okstra_ctl/usage_identity.py +86 -0
- package/runtime/python/okstra_ctl/usage_report.py +15 -3
- package/runtime/python/okstra_ctl/wizard.py +1449 -66
- package/runtime/python/okstra_ctl/worker_audit_ledger.py +68 -65
- package/runtime/python/okstra_ctl/worker_prompt_body.py +18 -2
- package/runtime/python/okstra_ctl/worker_prompt_contract.py +40 -9
- package/runtime/python/okstra_ctl/worker_prompt_headers.py +16 -1
- package/runtime/python/okstra_ctl/worker_request.py +7 -1
- package/runtime/python/okstra_ctl/worker_runner.py +130 -5
- package/runtime/python/okstra_ctl/workers.py +7 -5
- package/runtime/python/okstra_ctl/workflow.py +18 -32
- package/runtime/python/okstra_ctl/worktree.py +3 -3
- package/runtime/python/okstra_ctl/worktree_registry.py +5 -4
- package/runtime/python/okstra_ctl/write_policy.py +571 -0
- package/runtime/python/okstra_project/state.py +54 -6
- package/runtime/schemas/convergence-groups-v2.0.schema.json +128 -0
- package/runtime/schemas/execution-manifest-v2.schema.json +340 -0
- package/runtime/schemas/final-report-v2.0.schema.json +68 -5
- package/runtime/skills/okstra-inspect/facets/recap.md +2 -0
- package/runtime/skills/okstra-inspect/facets/report.md +1 -1
- package/runtime/skills/okstra-inspect/facets/status.md +15 -13
- package/runtime/skills/okstra-rollup/SKILL.md +1 -0
- package/runtime/skills/okstra-run/SKILL.md +14 -14
- package/runtime/templates/implementation-worker-preamble.md +3 -18
- package/runtime/templates/project-docs/task-index.template.md +0 -1
- package/runtime/templates/report-writer-prompt-preamble.md +2 -0
- package/runtime/templates/reports/final-report-v2.template.md +7 -1
- package/runtime/templates/reports/html/base.template.html +21 -0
- package/runtime/templates/reports/html/i18n/en.json +4 -0
- package/runtime/templates/reports/html/i18n/ko.json +4 -0
- package/runtime/templates/reports/html/macros/forms.html +5 -4
- package/runtime/templates/reports/html/tasks/final-verification.template.html +1 -1
- package/runtime/templates/reports/html/tasks/implementation.template.html +1 -1
- package/runtime/templates/worker-prompt-preamble.md +6 -35
- package/runtime/validators/lib/fixtures.sh +49 -16
- package/runtime/validators/validate-run.py +486 -134
- package/runtime/validators/validate_session_conformance.py +25 -7
- package/src/cli-registry.mjs +0 -539
- package/src/commands/execute/codex-dispatch.mjs +0 -10
- package/src/commands/execute/plan-items.mjs +0 -9
- package/src/commands/execute/plan-validate.mjs +0 -68
- package/src/commands/execute/run.mjs +0 -208
- package/src/commands/execute/wizard.mjs +0 -167
- package/src/commands/inspect/stage-map.mjs +0 -98
- package/src/commands/inspect/task-list.mjs +0 -97
- package/src/commands/inspect/task-show.mjs +0 -100
- package/src/commands/lifecycle/check-project.mjs +0 -187
- package/src/commands/lifecycle/config.mjs +0 -385
- package/src/commands/lifecycle/doctor.mjs +0 -308
- package/src/commands/lifecycle/install.mjs +0 -1170
- package/src/commands/lifecycle/paths.mjs +0 -104
- package/src/commands/lifecycle/preflight.mjs +0 -125
- package/src/commands/lifecycle/setup.mjs +0 -333
- package/src/commands/lifecycle/uninstall.mjs +0 -279
- package/src/commands/memory/memory.mjs +0 -524
- package/src/commands/pr/pr.mjs +0 -261
- package/src/lib/host-registry-client.mjs +0 -176
- package/src/lib/paths.mjs +0 -86
- package/src/lib/proc.mjs +0 -31
- package/src/lib/python-helper.mjs +0 -142
- package/src/lib/runtime-manifest.mjs +0 -70
- package/src/lib/skill-catalog.mjs +0 -53
- package/src/lib/version.mjs +0 -20
- /package/{src → dist}/commands/pr/default.md +0 -0
package/README.md
CHANGED
|
@@ -32,11 +32,15 @@ Role assignments are persisted separately from the host runtime, but the lead pr
|
|
|
32
32
|
|
|
33
33
|
| Provider | Native host | CLI wrapper | Public roles |
|
|
34
34
|
|---|---|---|---|
|
|
35
|
-
| Claude | Claude Code | `okstra-claude-exec.sh` |
|
|
36
|
-
| Codex | Codex | `okstra-codex-exec.sh` |
|
|
37
|
-
| Antigravity | Antigravity CLI | `okstra-antigravity-exec.sh` |
|
|
38
|
-
| Grok | Grok CLI | `okstra-grok-exec.sh` |
|
|
39
|
-
| Kimi | Kimi CLI | `okstra-kimi-exec.sh` |
|
|
35
|
+
| Claude | Claude Code | `okstra-claude-exec.sh` | leader, analyser, designer, planner, implementer, verifier, report-writer, translator |
|
|
36
|
+
| Codex | Codex | `okstra-codex-exec.sh` | leader, analyser, designer, planner, implementer, verifier, report-writer, translator |
|
|
37
|
+
| Antigravity | Antigravity CLI | `okstra-antigravity-exec.sh` | leader, analyser, critic, implementer, verifier |
|
|
38
|
+
| Grok | Grok CLI | `okstra-grok-exec.sh` | leader, read-only analyser, and critic |
|
|
39
|
+
| Kimi | Kimi CLI | `okstra-kimi-exec.sh` | leader, read-only analyser, and critic |
|
|
40
|
+
|
|
41
|
+
Canonical role names are `leader`, `analyser`, `critic`, `designer`, `planner`, `implementer`, `verifier`, `report-writer`, and `translator`. `lead` is a compatibility alias for `leader`. `executor` is a compatibility alias for `implementer`. New records write only the canonical names.
|
|
42
|
+
|
|
43
|
+
Role count becomes a `RoleInstance` ordinal. `ModelPool` selects one model per ordinal. A pinned model is kept only when the host can bind it exactly. The resulting `RoleExecution` owns `Invocation` and `Attempt` rows and the stored `executionLabel`. Pane titles use that label. `okstra model list` and `okstra doctor --json` report pool state without an inference call.
|
|
40
44
|
|
|
41
45
|
Grok and Kimi can now lead through their registered host adapters. Their worker roles remain read-only analyser and critic; executor, verifier, and report-writer roles were not added. A real authenticated local invocation still depends on the corresponding CLI being installed and configured.
|
|
42
46
|
|
|
@@ -56,7 +60,8 @@ okstra is **not** a one-shot code review tool. It is for work that **spans multi
|
|
|
56
60
|
okstra/ npm package = repo root
|
|
57
61
|
├── package.json name: "okstra"
|
|
58
62
|
├── bin/okstra Node CLI entry point
|
|
59
|
-
├── src/ Node CLI
|
|
63
|
+
├── src/ TypeScript Node CLI sources (`*.mts`)
|
|
64
|
+
├── dist/ compiled `.mjs` CLI artifacts used by `bin/okstra`
|
|
60
65
|
├── tools/build.mjs runtime/ synchronization script (invoked by prepack)
|
|
61
66
|
├── runtime/ gitignored install payload copied to ~/.okstra
|
|
62
67
|
├── scripts/ Python + Bash runtime sources
|
|
@@ -70,7 +75,7 @@ okstra/ npm package = repo root
|
|
|
70
75
|
└── RELEASING.md, CHANGELOG.md, README.md
|
|
71
76
|
```
|
|
72
77
|
|
|
73
|
-
|
|
78
|
+
The package requires Node.js 22 or newer. TypeScript sources under `src/` compile to `dist/**/*.mjs` before `tools/build.mjs` rebuilds `runtime/` from `scripts/`, `skills/`, `agents/`, `prompts/`, `schemas/`, `templates/`, and `validators/`. `bin/okstra` executes `dist/`; the npm package ships the compiled CLI, runtime payload, documentation, and README.
|
|
74
79
|
|
|
75
80
|
<a id="user-machine-layout-after-install"></a>
|
|
76
81
|
### 2.2 User-machine layout after install
|
|
@@ -217,7 +222,9 @@ This starts a new `claude` process in the lead role. For the complete argument l
|
|
|
217
222
|
|
|
218
223
|
Notable workflow flags:
|
|
219
224
|
|
|
220
|
-
- `--
|
|
225
|
+
- `--role-count <role>=<N>` — sets the total instance count for one static role. `lead` is a compatibility alias for `leader`.
|
|
226
|
+
- `--role-model <role>=<modelRef>` — pins `<provider>/<model>` onto role instances in ordinal order. Unknown models fail before any side effect.
|
|
227
|
+
- `--executor claude|codex|antigravity` — compatibility input that selects the implementer provider for `--task-type implementation`. The other two providers are dispatched as strict read-only verifiers in the same run ([`docs/cli.md`](docs/cli.md#--executor)).
|
|
221
228
|
- `--work-category bugfix|feature|refactor|ops|improvement` — directly classifies work when the lifecycle skips the `requirements-discovery` phase.
|
|
222
229
|
- `--approve` — with `--approved-plan`, toggles the plan's YAML frontmatter `approved` field from `false` to `true`, replacing the removed `--ack-approved` alias and the former `[ ] Approved` checkbox marker.
|
|
223
230
|
- `--selected-direction <selection-final-report.md>` — starts a new `implementation-planning` run from a validated `implementation-option-selection` report. Existing planning reruns continue through `--clarification-response`.
|
|
@@ -246,7 +253,9 @@ Major workflow changes added to `main` after 0.8.0:
|
|
|
246
253
|
| Command | Purpose |
|
|
247
254
|
|---|---|
|
|
248
255
|
| `npx -y okstra@latest paths` | Print runtime paths (`--field <name>` or `--shell`) |
|
|
249
|
-
| `npx -y okstra@latest doctor [--runtime claude-code\|codex\|antigravity\|external\|all] [--phase <phase>]` | Diagnose runtime, skills, and
|
|
256
|
+
| `npx -y okstra@latest doctor [--runtime claude-code\|codex\|antigravity\|external\|all] [--phase <phase>]` | Diagnose runtime, skills, Python imports, and model-pool state. `codex`, `antigravity`, and `external` exclude Claude skill checks; `--phase` adds readiness checks for implementation, final-verification, release-handoff, and improvement-discovery. JSON includes `modelPool` and never sends an inference call |
|
|
257
|
+
| `npx -y okstra@latest model list [--role <role>] [--host <host>] [--json]` | List catalog models and exact-binding availability without an inference call |
|
|
258
|
+
| `npx -y okstra@latest model default set\|unset <role> ... --scope project\|global` | Write or remove role model defaults in `.okstra/project.json` or `~/.okstra/config.json` |
|
|
250
259
|
| `npx -y okstra@latest ensure-installed` | Run an idempotent check and automatically reinstall stale assets (skills call this internally) |
|
|
251
260
|
| `npx -y okstra@latest setup --project-id <id>` | Register the current project in `.okstra/project.json` |
|
|
252
261
|
| `npx -y okstra@latest check-project` | Verify that the current project was registered with `setup` |
|
package/bin/okstra
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { getPackageVersion } from "../
|
|
3
|
-
import { COMMANDS, USAGE } from "../
|
|
2
|
+
import { getPackageVersion } from "../dist/lib/version.mjs";
|
|
3
|
+
import { COMMANDS, USAGE } from "../dist/cli-registry.mjs";
|
|
4
4
|
|
|
5
|
+
/** @param {readonly string[]} argv */
|
|
5
6
|
async function main(argv) {
|
|
6
7
|
const args = argv.slice(2);
|
|
7
8
|
|
|
@@ -40,8 +41,11 @@ async function main(argv) {
|
|
|
40
41
|
const exitCode = await run(rest);
|
|
41
42
|
return typeof exitCode === "number" ? exitCode : 0;
|
|
42
43
|
} catch (err) {
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
45
|
+
process.stderr.write(`error: ${message}\n`);
|
|
46
|
+
if (process.env.OKSTRA_DEBUG && err instanceof Error && err.stack) {
|
|
47
|
+
process.stderr.write(`${err.stack}\n`);
|
|
48
|
+
}
|
|
45
49
|
return 1;
|
|
46
50
|
}
|
|
47
51
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CommandRunner } from "./lib/types.mjs";
|
|
2
|
+
export declare const COMMAND_REGISTRY: ({
|
|
3
|
+
name: string;
|
|
4
|
+
module: string;
|
|
5
|
+
export: string;
|
|
6
|
+
category: "admin";
|
|
7
|
+
summary: string[];
|
|
8
|
+
} | {
|
|
9
|
+
name: string;
|
|
10
|
+
module: string;
|
|
11
|
+
export: string;
|
|
12
|
+
category: "introspection";
|
|
13
|
+
summary: string[];
|
|
14
|
+
})[];
|
|
15
|
+
export declare const COMMANDS: Map<string, () => Promise<CommandRunner>>;
|
|
16
|
+
export declare const USAGE: string;
|
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
const SUMMARY_COLUMN = 25;
|
|
2
|
+
export const COMMAND_REGISTRY = [
|
|
3
|
+
{
|
|
4
|
+
name: "install",
|
|
5
|
+
module: "./commands/lifecycle/install.mjs",
|
|
6
|
+
export: "runInstall",
|
|
7
|
+
category: "admin",
|
|
8
|
+
summary: ["Install runtime; seed skills into Agent and Claude homes"],
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: "ensure-installed",
|
|
12
|
+
module: "./commands/lifecycle/install.mjs",
|
|
13
|
+
export: "runEnsureInstalled",
|
|
14
|
+
category: "admin",
|
|
15
|
+
summary: ["Verify install is fresh; reinstall if stale (idempotent)"],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "uninstall",
|
|
19
|
+
module: "./commands/lifecycle/uninstall.mjs",
|
|
20
|
+
export: "runUninstall",
|
|
21
|
+
category: "admin",
|
|
22
|
+
summary: ["Remove runtime + skills (user data preserved by default)"],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "setup",
|
|
26
|
+
module: "./commands/lifecycle/setup.mjs",
|
|
27
|
+
export: "run",
|
|
28
|
+
category: "admin",
|
|
29
|
+
summary: ["Register the current project (.okstra/project.json)"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "doctor",
|
|
33
|
+
module: "./commands/lifecycle/doctor.mjs",
|
|
34
|
+
export: "run",
|
|
35
|
+
category: "admin",
|
|
36
|
+
summary: [
|
|
37
|
+
"Diagnostic check; --runtime selects assets, --phase checks readiness",
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "check-project",
|
|
42
|
+
module: "./commands/lifecycle/check-project.mjs",
|
|
43
|
+
export: "run",
|
|
44
|
+
category: "admin",
|
|
45
|
+
summary: ["Verify the current project has been registered with setup"],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: "preflight",
|
|
49
|
+
module: "./commands/lifecycle/preflight.mjs",
|
|
50
|
+
export: "run",
|
|
51
|
+
category: "admin",
|
|
52
|
+
summary: ["One-call skill preflight: ensure-installed + check-project (JSON)"],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: "config",
|
|
56
|
+
module: "./commands/lifecycle/config.mjs",
|
|
57
|
+
export: "run",
|
|
58
|
+
category: "admin",
|
|
59
|
+
summary: ["Read / write okstra settings (e.g. PR template path)"],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "migrate",
|
|
63
|
+
module: "./commands/lifecycle/migrate.mjs",
|
|
64
|
+
export: "run",
|
|
65
|
+
category: "admin",
|
|
66
|
+
summary: ["Move legacy .project-docs/okstra/ to .okstra/ (one-shot)"],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "convergence",
|
|
70
|
+
module: "./commands/execute/convergence.mjs",
|
|
71
|
+
export: "run",
|
|
72
|
+
category: "admin",
|
|
73
|
+
summary: ["Advance and validate deterministic re-verification state"],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "plan-items",
|
|
77
|
+
module: "./commands/execute/plan-items.mjs",
|
|
78
|
+
export: "run",
|
|
79
|
+
category: "admin",
|
|
80
|
+
summary: ["Extract and validate deterministic plan-body items"],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "agent-prompt",
|
|
84
|
+
module: "./commands/execute/agent-prompt.mjs",
|
|
85
|
+
export: "run",
|
|
86
|
+
category: "admin",
|
|
87
|
+
summary: ["Materialize and verify auditable agent invocations"],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "pane-title",
|
|
91
|
+
module: "./commands/execute/pane-title.mjs",
|
|
92
|
+
export: "run",
|
|
93
|
+
category: "admin",
|
|
94
|
+
summary: ["Lease pane titles from stored execution labels"],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "model",
|
|
98
|
+
module: "./commands/lifecycle/model.mjs",
|
|
99
|
+
export: "run",
|
|
100
|
+
category: "admin",
|
|
101
|
+
summary: ["List models and set or unset role model defaults"],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "worker-dispatch",
|
|
105
|
+
module: "./commands/execute/worker-dispatch.mjs",
|
|
106
|
+
export: "run",
|
|
107
|
+
category: "admin",
|
|
108
|
+
summary: ["Dispatch verified CLI-backed worker assignments"],
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "plan-verify",
|
|
112
|
+
module: "./commands/execute/plan-verify.mjs",
|
|
113
|
+
export: "run",
|
|
114
|
+
category: "admin",
|
|
115
|
+
summary: ["Score the §5.5.9 plan-body gate for one self-fix round"],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "worker-audit-check",
|
|
119
|
+
module: "./commands/execute/worker-audit-check.mjs",
|
|
120
|
+
export: "run",
|
|
121
|
+
category: "admin",
|
|
122
|
+
summary: [
|
|
123
|
+
"Check a run's worker audit sidecars while the workers",
|
|
124
|
+
"are still alive (the Phase 7 rules, run early)",
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: "git-reconcile",
|
|
129
|
+
module: "./commands/execute/git-reconcile.mjs",
|
|
130
|
+
export: "run",
|
|
131
|
+
category: "admin",
|
|
132
|
+
summary: ["Reconcile stale stage SHAs after external git history changes"],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: "handoff",
|
|
136
|
+
module: "./commands/execute/handoff.mjs",
|
|
137
|
+
export: "run",
|
|
138
|
+
category: "admin",
|
|
139
|
+
summary: ["Stage-group release-handoff helpers (eligible/assemble/record)"],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: "integrate-stages",
|
|
143
|
+
module: "./commands/execute/integrate-stages.mjs",
|
|
144
|
+
export: "run",
|
|
145
|
+
category: "admin",
|
|
146
|
+
summary: ["stage 들을 task 브랜치에 통합 머지하고 stage worktree 를 정리"],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: "paths",
|
|
150
|
+
module: "./commands/lifecycle/paths.mjs",
|
|
151
|
+
export: "run",
|
|
152
|
+
category: "admin",
|
|
153
|
+
summary: [
|
|
154
|
+
"Print runtime paths (workspace/agents/pythonpath/bin/home/version)",
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: "task-list",
|
|
159
|
+
module: "./commands/inspect/task-list.mjs",
|
|
160
|
+
export: "run",
|
|
161
|
+
category: "introspection",
|
|
162
|
+
summary: ["List tasks registered in the current project"],
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: "task-show",
|
|
166
|
+
module: "./commands/inspect/task-show.mjs",
|
|
167
|
+
export: "run",
|
|
168
|
+
category: "introspection",
|
|
169
|
+
summary: ["Summarize a task's manifest + workflow phase state"],
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: "stage-map",
|
|
173
|
+
module: "./commands/inspect/stage-map.mjs",
|
|
174
|
+
export: "run",
|
|
175
|
+
category: "introspection",
|
|
176
|
+
summary: ["Dump a task's implementation-planning Stage Map + done stages"],
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: "context-cost",
|
|
180
|
+
module: "./commands/inspect/context-cost.mjs",
|
|
181
|
+
export: "run",
|
|
182
|
+
category: "introspection",
|
|
183
|
+
summary: ["Estimate file/read context cost for a task bundle"],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: "resolve-task-key",
|
|
187
|
+
module: "./commands/inspect/resolve-task-key.mjs",
|
|
188
|
+
export: "run",
|
|
189
|
+
category: "introspection",
|
|
190
|
+
summary: ["Resolve a bare task-id to candidate task-keys from the catalog"],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "code-review",
|
|
194
|
+
module: "./commands/inspect/code-review.mjs",
|
|
195
|
+
export: "run",
|
|
196
|
+
category: "introspection",
|
|
197
|
+
summary: ["Resolve a code review's diff range and result file path"],
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: "set-work-status",
|
|
201
|
+
module: "./commands/inspect/set-work-status.mjs",
|
|
202
|
+
export: "run",
|
|
203
|
+
category: "introspection",
|
|
204
|
+
summary: ["Set a task's user-managed workStatus in task-manifest.json"],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: "time-report",
|
|
208
|
+
module: "./commands/inspect/time-report.mjs",
|
|
209
|
+
export: "run",
|
|
210
|
+
category: "introspection",
|
|
211
|
+
summary: ["Aggregate elapsed work time across a task's runs (raw ms)"],
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: "usage-report",
|
|
215
|
+
module: "./commands/inspect/usage-report.mjs",
|
|
216
|
+
export: "run",
|
|
217
|
+
category: "introspection",
|
|
218
|
+
summary: ["Aggregate recent token, cost, and time usage by task type"],
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: "log-report",
|
|
222
|
+
module: "./commands/inspect/log-report.mjs",
|
|
223
|
+
export: "run",
|
|
224
|
+
category: "introspection",
|
|
225
|
+
summary: ["Inventory wrapper sidecar logs by size and task (read-only)"],
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: "worker-liveness",
|
|
229
|
+
module: "./commands/inspect/worker-liveness.mjs",
|
|
230
|
+
export: "run",
|
|
231
|
+
category: "introspection",
|
|
232
|
+
summary: ["Report whether pending workers are still alive (read-only)"],
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: "error-report",
|
|
236
|
+
module: "./commands/inspect/error-report.mjs",
|
|
237
|
+
export: "run",
|
|
238
|
+
category: "introspection",
|
|
239
|
+
summary: ["Aggregate okstra-run error logs into a task-level report"],
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
name: "error-zip",
|
|
243
|
+
module: "./commands/inspect/error-zip.mjs",
|
|
244
|
+
export: "run",
|
|
245
|
+
category: "introspection",
|
|
246
|
+
summary: ["Bundle cross-project okstra error logs into a zip"],
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
name: "run-audit",
|
|
250
|
+
module: "./commands/inspect/run-audit.mjs",
|
|
251
|
+
export: "run",
|
|
252
|
+
category: "introspection",
|
|
253
|
+
summary: ["Check okstra run artifacts against progress invariants"],
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
name: "recap",
|
|
257
|
+
module: "./commands/inspect/recap.mjs",
|
|
258
|
+
export: "run",
|
|
259
|
+
category: "introspection",
|
|
260
|
+
summary: ["Assemble a task's run-to-run phase recap or append a recap log entry"],
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
name: "user-response",
|
|
264
|
+
module: "./commands/inspect/user-response.mjs",
|
|
265
|
+
export: "run",
|
|
266
|
+
category: "introspection",
|
|
267
|
+
summary: ["Answer a task's open clarification questions in-session and write the response sidecar"],
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
name: "design-prep",
|
|
271
|
+
module: "./commands/inspect/design-prep.mjs",
|
|
272
|
+
export: "run",
|
|
273
|
+
category: "introspection",
|
|
274
|
+
summary: ["Review and record AI-prepared implementation design inputs"],
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
name: "rollup",
|
|
278
|
+
module: "./commands/inspect/rollup.mjs",
|
|
279
|
+
export: "run",
|
|
280
|
+
category: "introspection",
|
|
281
|
+
summary: ["Roll up run results across a task-group's tasks (raw ms + tallies)"],
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
name: "container",
|
|
285
|
+
module: "./commands/inspect/container.mjs",
|
|
286
|
+
export: "run",
|
|
287
|
+
category: "introspection",
|
|
288
|
+
summary: ["Manage the okstra container runtime (up/status/logs/stop-watcher/down)"],
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
name: "manager",
|
|
292
|
+
module: "./commands/manager.mjs",
|
|
293
|
+
export: "run",
|
|
294
|
+
category: "introspection",
|
|
295
|
+
summary: ["Manage cross-project okstra tasks"],
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
name: "worktree-lookup",
|
|
299
|
+
module: "./commands/execute/worktree-lookup.mjs",
|
|
300
|
+
export: "run",
|
|
301
|
+
category: "introspection",
|
|
302
|
+
summary: ["Look up registered worktree for a task-key"],
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: "worktree-status",
|
|
306
|
+
module: "./commands/execute/worktree-status.mjs",
|
|
307
|
+
export: "run",
|
|
308
|
+
category: "introspection",
|
|
309
|
+
summary: ["Clean-worktree check that ignores okstra's own scaffolding"],
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
name: "plan-validate",
|
|
313
|
+
module: "./commands/execute/plan-validate.mjs",
|
|
314
|
+
export: "run",
|
|
315
|
+
category: "introspection",
|
|
316
|
+
summary: ["Check an approved-plan file for the approval marker"],
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
name: "render-bundle",
|
|
320
|
+
module: "./commands/execute/render-bundle.mjs",
|
|
321
|
+
export: "run",
|
|
322
|
+
category: "introspection",
|
|
323
|
+
summary: [
|
|
324
|
+
"Preview prepare_task_bundle() output (forwards to",
|
|
325
|
+
"python3 -m okstra_ctl.run --render-only)",
|
|
326
|
+
],
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
name: "profile",
|
|
330
|
+
module: "./commands/inspect/profile-show.mjs",
|
|
331
|
+
export: "run",
|
|
332
|
+
category: "introspection",
|
|
333
|
+
summary: [
|
|
334
|
+
"Print a phase profile with {{INCLUDE:}} expanded and its",
|
|
335
|
+
"lazy-read sidecars appended (read-only)",
|
|
336
|
+
],
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: "run",
|
|
340
|
+
module: "./commands/execute/run.mjs",
|
|
341
|
+
export: "run",
|
|
342
|
+
category: "introspection",
|
|
343
|
+
summary: ["Host-aware auto execution front door"],
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
name: "codex-run",
|
|
347
|
+
module: "./commands/execute/codex-run.mjs",
|
|
348
|
+
export: "run",
|
|
349
|
+
category: "introspection",
|
|
350
|
+
summary: [
|
|
351
|
+
"Prepare a render-only Codex lead task bundle",
|
|
352
|
+
"(--lead-runtime codex, no worker dispatch)",
|
|
353
|
+
],
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
name: "codex-dispatch",
|
|
357
|
+
module: "./commands/execute/codex-dispatch.mjs",
|
|
358
|
+
export: "run",
|
|
359
|
+
category: "introspection",
|
|
360
|
+
summary: ["Dispatch CLI-backed workers for a prepared Codex run"],
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
name: "worker-state",
|
|
364
|
+
module: "./commands/execute/worker-state.mjs",
|
|
365
|
+
export: "run",
|
|
366
|
+
category: "admin",
|
|
367
|
+
summary: ["Atomically transition persisted worker status"],
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
name: "team",
|
|
371
|
+
module: "./commands/execute/team.mjs",
|
|
372
|
+
export: "run",
|
|
373
|
+
category: "introspection",
|
|
374
|
+
summary: ["Dispatch and await pane-backed workers for external leads"],
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: "wizard",
|
|
378
|
+
module: "./commands/execute/wizard.mjs",
|
|
379
|
+
export: "run",
|
|
380
|
+
category: "introspection",
|
|
381
|
+
summary: [
|
|
382
|
+
"Drive the okstra-run interactive input state machine",
|
|
383
|
+
"(init / step / render-args / confirmation)",
|
|
384
|
+
],
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
name: "token-usage",
|
|
388
|
+
module: "./commands/execute/token-usage.mjs",
|
|
389
|
+
export: "run",
|
|
390
|
+
category: "introspection",
|
|
391
|
+
summary: [
|
|
392
|
+
"Collect token usage for a run (wraps the installed",
|
|
393
|
+
"okstra-token-usage.py so skills avoid emitting",
|
|
394
|
+
'python3 "$HOME/..." invocations).',
|
|
395
|
+
],
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
name: "render-views",
|
|
399
|
+
module: "./commands/report/render-views.mjs",
|
|
400
|
+
export: "run",
|
|
401
|
+
category: "introspection",
|
|
402
|
+
summary: ["Render slim AI + self-contained HTML views of a final report"],
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
name: "report-translate",
|
|
406
|
+
module: "./commands/report/translate.mjs",
|
|
407
|
+
export: "run",
|
|
408
|
+
category: "introspection",
|
|
409
|
+
summary: [
|
|
410
|
+
"Build and verify the translation sidecar the HTML",
|
|
411
|
+
"renderer overlays when the report language is not",
|
|
412
|
+
"English (extract | check).",
|
|
413
|
+
],
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
name: "agent-activity",
|
|
417
|
+
module: "./commands/report/agent-activity.mjs",
|
|
418
|
+
export: "run",
|
|
419
|
+
category: "introspection",
|
|
420
|
+
summary: ["Record and project structured lead activity into report data"],
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
name: "report-finalize",
|
|
424
|
+
module: "./commands/report/finalize.mjs",
|
|
425
|
+
export: "run",
|
|
426
|
+
category: "introspection",
|
|
427
|
+
summary: [
|
|
428
|
+
"Run the Phase 7 post-report sequence (token-usage,",
|
|
429
|
+
"render-views, spawn-followups, validate-run) in its",
|
|
430
|
+
"contractual order against one final report.",
|
|
431
|
+
],
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: "render-final-report",
|
|
435
|
+
module: "./commands/report/render-final-report.mjs",
|
|
436
|
+
export: "run",
|
|
437
|
+
category: "introspection",
|
|
438
|
+
summary: ["Render the markdown sibling of a final-report data.json"],
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
name: "inject-report-index",
|
|
442
|
+
module: "./commands/report/inject-report-index.mjs",
|
|
443
|
+
export: "run",
|
|
444
|
+
category: "introspection",
|
|
445
|
+
summary: ["Add the top-of-report Index + scroll anchors to a report"],
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
name: "spawn-followups",
|
|
449
|
+
module: "./commands/execute/spawn-followups.mjs",
|
|
450
|
+
export: "run",
|
|
451
|
+
category: "introspection",
|
|
452
|
+
summary: ["Create follow-up task bundles from a final report"],
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
name: "error-log",
|
|
456
|
+
module: "./commands/execute/error-log.mjs",
|
|
457
|
+
export: "run",
|
|
458
|
+
category: "introspection",
|
|
459
|
+
summary: ["Append run error events to the run error log"],
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
name: "incremental-scope",
|
|
463
|
+
module: "./commands/execute/incremental-scope.mjs",
|
|
464
|
+
export: "run",
|
|
465
|
+
category: "introspection",
|
|
466
|
+
summary: ["Decide re-verify vs carry-forward scope for a clarification re-run"],
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
name: "incremental-carry",
|
|
470
|
+
module: "./commands/execute/incremental-carry.mjs",
|
|
471
|
+
export: "run",
|
|
472
|
+
category: "introspection",
|
|
473
|
+
summary: ["Merge carried-forward plan-item verdicts into an incremental re-run"],
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
name: "memory",
|
|
477
|
+
module: "./commands/memory/memory.mjs",
|
|
478
|
+
export: "run",
|
|
479
|
+
category: "introspection",
|
|
480
|
+
summary: [
|
|
481
|
+
"Store and find user-home conversation memory under",
|
|
482
|
+
"~/.okstra/memory-book.",
|
|
483
|
+
],
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
name: "pr",
|
|
487
|
+
module: "./commands/pr/pr.mjs",
|
|
488
|
+
export: "run",
|
|
489
|
+
category: "introspection",
|
|
490
|
+
summary: [
|
|
491
|
+
"Manage PR body templates and prepare PR generation",
|
|
492
|
+
"bundles under ~/.okstra/template/pr.",
|
|
493
|
+
],
|
|
494
|
+
},
|
|
495
|
+
];
|
|
496
|
+
function isRecord(value) {
|
|
497
|
+
return typeof value === "object" && value !== null;
|
|
498
|
+
}
|
|
499
|
+
function isCommandRunner(value) {
|
|
500
|
+
return typeof value === "function";
|
|
501
|
+
}
|
|
502
|
+
async function loadCommand(definition) {
|
|
503
|
+
const moduleRecord = await import(definition.module);
|
|
504
|
+
if (!isRecord(moduleRecord)) {
|
|
505
|
+
throw new Error(`command module is not an object: ${definition.module}`);
|
|
506
|
+
}
|
|
507
|
+
const runner = moduleRecord[definition.export];
|
|
508
|
+
if (!isCommandRunner(runner)) {
|
|
509
|
+
throw new Error(`command export is not callable: ${definition.module}#${definition.export}`);
|
|
510
|
+
}
|
|
511
|
+
return runner;
|
|
512
|
+
}
|
|
513
|
+
export const COMMANDS = new Map(COMMAND_REGISTRY.map((c) => [
|
|
514
|
+
c.name,
|
|
515
|
+
() => loadCommand(c),
|
|
516
|
+
]));
|
|
517
|
+
const PREAMBLE = `okstra — host-aware multi-provider cross-verification orchestrator
|
|
518
|
+
|
|
519
|
+
This CLI is the installer/admin tool. Day-to-day usage happens inside a
|
|
520
|
+
supported agent host through installed skills (okstra-setup, okstra-run, ...).
|
|
521
|
+
|
|
522
|
+
Quick start (CLI):
|
|
523
|
+
1. npx -y okstra@latest install # one-time, this machine
|
|
524
|
+
2. cd <your project>
|
|
525
|
+
3. npx -y okstra@latest setup --project-id <id> # one-time, this project
|
|
526
|
+
4. open Claude Code, Codex, or Antigravity and run okstra-run # start a task
|
|
527
|
+
|
|
528
|
+
Inside a supported agent host you can replace step 3 with okstra-setup —
|
|
529
|
+
both write the same <PROJECT_ROOT>/.okstra/project.json.
|
|
530
|
+
|
|
531
|
+
Usage:
|
|
532
|
+
okstra <command> [options]
|
|
533
|
+
`;
|
|
534
|
+
const GLOBAL_OPTIONS = ` --version Print okstra version and exit
|
|
535
|
+
--help Print this help`;
|
|
536
|
+
const FOOTER = `
|
|
537
|
+
|
|
538
|
+
Run 'okstra <command> --help' for command-specific options.
|
|
539
|
+
Docs: https://github.com/Devonshin/okstra#readme
|
|
540
|
+
`;
|
|
541
|
+
function renderRow(command) {
|
|
542
|
+
const [first, ...rest] = command.summary;
|
|
543
|
+
const head = " " + command.name.padEnd(SUMMARY_COLUMN - 2) + first;
|
|
544
|
+
const continuations = rest.map((line) => " ".repeat(SUMMARY_COLUMN) + line);
|
|
545
|
+
return [head, ...continuations].join("\n");
|
|
546
|
+
}
|
|
547
|
+
function renderRows(category) {
|
|
548
|
+
return COMMAND_REGISTRY.filter((c) => c.category === category)
|
|
549
|
+
.map(renderRow)
|
|
550
|
+
.join("\n");
|
|
551
|
+
}
|
|
552
|
+
export const USAGE = PREAMBLE +
|
|
553
|
+
"\nAdmin commands:\n" +
|
|
554
|
+
renderRows("admin") +
|
|
555
|
+
"\n\nIntrospection commands (JSON output, used by skills to avoid python heredocs):\n" +
|
|
556
|
+
renderRows("introspection") +
|
|
557
|
+
"\n\nGlobal options:\n" +
|
|
558
|
+
GLOBAL_OPTIONS +
|
|
559
|
+
FOOTER;
|
|
560
|
+
//# sourceMappingURL=cli-registry.mjs.map
|