okstra 0.173.0 → 0.175.1
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/dist/commands/execute/team.mjs +56 -0
- 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/dist/commands/execute/worktree-status.mjs +115 -0
- 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/dist/commands/report/finalize.mjs +64 -0
- 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 +17 -3
- package/docs/architecture.md +12 -22
- package/docs/cli.md +29 -8
- package/docs/container.md +1 -1
- package/docs/contributor-change-matrix.md +3 -3
- package/docs/project-structure-overview.md +29 -20
- package/docs/task-process/README.md +3 -1
- package/docs/task-process/implementation-planning.md +2 -2
- package/docs/task-process/implementation.md +1 -1
- package/package.json +11 -5
- package/runtime/BUILD.json +2 -2
- package/runtime/agents/workers/claude-worker.md +3 -2
- 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 +4 -1
- package/runtime/bin/lib/okstra/usage.sh +4 -4
- package/runtime/bin/okstra-error-log.py +27 -0
- package/runtime/bin/okstra-provider-exec.py +245 -16
- package/runtime/bin/okstra-trace-cleanup.sh +58 -129
- package/runtime/bin/okstra.sh +10 -0
- package/runtime/prompts/lead/adapters/cmux.md +2 -0
- package/runtime/prompts/lead/convergence.md +27 -18
- package/runtime/prompts/lead/okstra-lead-contract.md +4 -2
- package/runtime/prompts/lead/plan-body-verification.md +13 -6
- package/runtime/prompts/lead/report-writer.md +6 -6
- package/runtime/prompts/lead/team-contract.md +1 -1
- package/runtime/prompts/profiles/_common-contract.md +2 -2
- package/runtime/prompts/profiles/_implementation-executor.md +2 -0
- package/runtime/prompts/profiles/_implementation-verifier.md +2 -2
- package/runtime/prompts/profiles/change-impact-analysis.md +16 -0
- package/runtime/prompts/profiles/error-analysis.md +21 -1
- package/runtime/prompts/profiles/feature-analysis.md +16 -0
- package/runtime/prompts/profiles/final-verification.md +16 -0
- package/runtime/prompts/profiles/implementation-option-selection.md +16 -0
- package/runtime/prompts/profiles/implementation-planning.md +32 -9
- package/runtime/prompts/profiles/implementation.md +17 -1
- package/runtime/prompts/profiles/improvement-discovery.md +16 -0
- package/runtime/prompts/profiles/project-analysis.md +16 -0
- package/runtime/prompts/profiles/release-handoff.md +5 -1
- package/runtime/prompts/profiles/requirements-discovery.md +20 -0
- package/runtime/prompts/wizard/prompts.ko.json +18 -0
- package/runtime/python/okstra_ctl/adapters/dispatch/__init__.py +1 -6
- 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/external/relay.md +4 -4
- 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 +100 -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/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/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/conformance.py +68 -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 +1181 -102
- package/runtime/python/okstra_ctl/dispatch_state.py +835 -22
- package/runtime/python/okstra_ctl/doctor.py +16 -2
- package/runtime/python/okstra_ctl/domain/host.py +32 -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 +13 -0
- package/runtime/python/okstra_ctl/domain/worker_exec.py +39 -1
- package/runtime/python/okstra_ctl/domain/worker_role.py +13 -3
- 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/final_report_schema.py +5 -4
- 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 +490 -0
- 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/pane_reclaim.py +13 -22
- 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/registry/provider_registry.py +8 -4
- package/runtime/python/okstra_ctl/render.py +78 -10
- package/runtime/python/okstra_ctl/render_final_report.py +34 -19
- package/runtime/python/okstra_ctl/report_contract.py +39 -1
- package/runtime/python/okstra_ctl/report_finalize.py +84 -9
- package/runtime/python/okstra_ctl/report_html/render.py +1 -0
- package/runtime/python/okstra_ctl/role_requirements.py +217 -0
- package/runtime/python/okstra_ctl/run.py +1250 -260
- package/runtime/python/okstra_ctl/run_index_row.py +7 -1
- package/runtime/python/okstra_ctl/schema_excerpt.py +1 -1
- package/runtime/python/okstra_ctl/scope_provenance.py +1 -1
- package/runtime/python/okstra_ctl/session.py +69 -12
- package/runtime/python/okstra_ctl/team.py +51 -25
- package/runtime/python/okstra_ctl/time_report.py +38 -4
- package/runtime/python/okstra_ctl/tmux.py +19 -149
- 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 +1253 -62
- package/runtime/python/okstra_ctl/worker_audit_ledger.py +68 -65
- package/runtime/python/okstra_ctl/worker_request.py +9 -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/worktree.py +69 -3
- package/runtime/python/okstra_ctl/write_policy.py +571 -0
- package/runtime/python/okstra_token_usage/cli.py +1 -1
- package/runtime/python/okstra_token_usage/collect.py +66 -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 +25 -0
- package/runtime/skills/okstra-run/SKILL.md +9 -9
- package/runtime/skills/okstra-setup/references/project-config.md +11 -0
- 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/settings.template.json +0 -24
- package/runtime/templates/worker-prompt-preamble.md +6 -2
- package/runtime/validators/lib/fixtures.sh +98 -33
- package/runtime/validators/validate-implementation-plan-stages.py +63 -3
- package/runtime/validators/validate-run.py +443 -508
- package/runtime/validators/validate_session_conformance.py +26 -8
- package/runtime/bin/okstra-subagent-reclaim.sh +0 -26
- package/runtime/schemas/final-report-v1.0.schema.json +0 -6366
- package/runtime/templates/reports/final-report.template.md +0 -1258
- package/src/cli-registry.mjs +0 -532
- 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/team.mjs +0 -63
- 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 -1172
- 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/commands/report/finalize.mjs +0 -64
- 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
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { join, resolve as resolvePath } from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { buildPythonpath, resolvePaths } from "./paths.mjs";
|
|
6
|
-
|
|
7
|
-
export function resolveInstalledScript(paths, scriptName) {
|
|
8
|
-
// Prefer the installed copy under ~/.okstra/bin (what production users run);
|
|
9
|
-
// fall back to the in-repo source when invoked from a checkout that has not
|
|
10
|
-
// been installed (dev / CI).
|
|
11
|
-
const installed = join(paths.bin, scriptName);
|
|
12
|
-
if (existsSync(installed)) return installed;
|
|
13
|
-
const repoRoot = fileURLToPath(new URL("../..", import.meta.url));
|
|
14
|
-
const dev = resolvePath(repoRoot, "scripts", scriptName);
|
|
15
|
-
return existsSync(dev) ? dev : null;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function resolveInstalledValidator(paths, validatorName) {
|
|
19
|
-
// `okstra install` lands the validators tree at ~/.okstra/lib/validators;
|
|
20
|
-
// a checkout that has not been installed still has the in-repo source.
|
|
21
|
-
const installed = join(paths.home, "lib", "validators", validatorName);
|
|
22
|
-
if (existsSync(installed)) return installed;
|
|
23
|
-
const repoRoot = fileURLToPath(new URL("../..", import.meta.url));
|
|
24
|
-
const dev = resolvePath(repoRoot, "validators", validatorName);
|
|
25
|
-
return existsSync(dev) ? dev : null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async function spawnPythonEntry(entry, args, paths) {
|
|
29
|
-
return await new Promise((resolve) => {
|
|
30
|
-
const child = spawn("python3", [entry, ...args], {
|
|
31
|
-
stdio: "inherit",
|
|
32
|
-
env: { ...process.env, PYTHONPATH: buildPythonpath(paths) },
|
|
33
|
-
});
|
|
34
|
-
child.on("error", (err) => {
|
|
35
|
-
process.stderr.write(`error: failed to spawn python3: ${err.message}\n`);
|
|
36
|
-
resolve(1);
|
|
37
|
-
});
|
|
38
|
-
child.on("close", (code) => resolve(typeof code === "number" ? code : 1));
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Thin spawn shim shared by every `okstra <cmd>` subcommand that fronts a
|
|
43
|
-
// `scripts/okstra-*.py` entry point. Centralizing it keeps PYTHONPATH wiring
|
|
44
|
-
// and installed/dev resolution in one place so skills call `okstra <cmd>`
|
|
45
|
-
// instead of emitting `python3 "$HOME/..."` (which breaks `Bash(okstra:*)`
|
|
46
|
-
// permission matching and prompts on every call).
|
|
47
|
-
export async function runInstalledScript({ scriptName, args, usage, emptyArgsCode = 2 }) {
|
|
48
|
-
if (args.length === 0) {
|
|
49
|
-
process.stdout.write(usage);
|
|
50
|
-
return emptyArgsCode;
|
|
51
|
-
}
|
|
52
|
-
// Only a bare `--help` / `-h` prints the wrapper usage. A `--help` that
|
|
53
|
-
// follows a subcommand (e.g. `error-log append-observed --help`) must reach
|
|
54
|
-
// the python helper so its own per-subcommand help shows through.
|
|
55
|
-
if (args.length === 1 && (args[0] === "--help" || args[0] === "-h")) {
|
|
56
|
-
process.stdout.write(usage);
|
|
57
|
-
return 0;
|
|
58
|
-
}
|
|
59
|
-
const paths = await resolvePaths();
|
|
60
|
-
const entry = resolveInstalledScript(paths, scriptName);
|
|
61
|
-
if (!entry) {
|
|
62
|
-
process.stderr.write(
|
|
63
|
-
`error: ${scriptName} not found — run 'okstra install' (or 'okstra ensure-installed') first\n`,
|
|
64
|
-
);
|
|
65
|
-
return 1;
|
|
66
|
-
}
|
|
67
|
-
return await spawnPythonEntry(entry, args, paths);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export async function runInstalledValidator({ validatorName, args }) {
|
|
71
|
-
const paths = await resolvePaths();
|
|
72
|
-
const entry = resolveInstalledValidator(paths, validatorName);
|
|
73
|
-
if (!entry) {
|
|
74
|
-
process.stderr.write(
|
|
75
|
-
`error: ${validatorName} not found — run 'okstra install' (or 'okstra ensure-installed') first\n`,
|
|
76
|
-
);
|
|
77
|
-
return 1;
|
|
78
|
-
}
|
|
79
|
-
return await spawnPythonEntry(entry, args, paths);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export async function runPythonSnippet({ script, args = [], extraEnv = {} }) {
|
|
83
|
-
const paths = await resolvePaths();
|
|
84
|
-
return new Promise((resolve) => {
|
|
85
|
-
const child = spawn("python3", ["-c", script, ...args], {
|
|
86
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
87
|
-
env: { ...process.env, PYTHONPATH: buildPythonpath(paths), ...extraEnv },
|
|
88
|
-
});
|
|
89
|
-
// Collect chunks and join once: repeated `s += chunk` is O(n^2) for the
|
|
90
|
-
// large rendered prompts some capture-mode callers stream through here.
|
|
91
|
-
const outChunks = [];
|
|
92
|
-
const errChunks = [];
|
|
93
|
-
child.stdout.on("data", (b) => outChunks.push(b));
|
|
94
|
-
child.stderr.on("data", (b) => errChunks.push(b));
|
|
95
|
-
child.on("error", (err) =>
|
|
96
|
-
resolve({ code: -1, stdout: Buffer.concat(outChunks).toString(), stderr: err.message }),
|
|
97
|
-
);
|
|
98
|
-
child.on("close", (code) =>
|
|
99
|
-
resolve({
|
|
100
|
-
code,
|
|
101
|
-
stdout: Buffer.concat(outChunks).toString(),
|
|
102
|
-
stderr: Buffer.concat(errChunks).toString(),
|
|
103
|
-
}),
|
|
104
|
-
);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export async function runPythonModule({ module, args = [], extraEnv = {}, stdio = "inherit-stdout" }) {
|
|
109
|
-
const paths = await resolvePaths();
|
|
110
|
-
return new Promise((resolve) => {
|
|
111
|
-
const child = spawn("python3", ["-m", module, ...args], {
|
|
112
|
-
stdio: stdio === "capture" ? ["ignore", "pipe", "pipe"] : ["ignore", "inherit", "inherit"],
|
|
113
|
-
env: { ...process.env, PYTHONPATH: buildPythonpath(paths), ...extraEnv },
|
|
114
|
-
});
|
|
115
|
-
// Collect chunks and join once: repeated `s += chunk` is O(n^2) for the
|
|
116
|
-
// large rendered prompts some capture-mode callers stream through here.
|
|
117
|
-
const outChunks = [];
|
|
118
|
-
const errChunks = [];
|
|
119
|
-
if (stdio === "capture") {
|
|
120
|
-
child.stdout.on("data", (b) => outChunks.push(b));
|
|
121
|
-
child.stderr.on("data", (b) => errChunks.push(b));
|
|
122
|
-
}
|
|
123
|
-
child.on("error", (err) =>
|
|
124
|
-
resolve({ code: -1, stdout: Buffer.concat(outChunks).toString(), stderr: err.message }),
|
|
125
|
-
);
|
|
126
|
-
// A signal-killed child reports code === null; normalize to a non-zero exit
|
|
127
|
-
// here so every consumer inherits correct failure semantics from one place.
|
|
128
|
-
child.on("close", (code) =>
|
|
129
|
-
resolve({
|
|
130
|
-
code: typeof code === "number" ? code : 1,
|
|
131
|
-
stdout: Buffer.concat(outChunks).toString(),
|
|
132
|
-
stderr: Buffer.concat(errChunks).toString(),
|
|
133
|
-
}),
|
|
134
|
-
);
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export function emitJsonError({ stage, reason, extra = {} }) {
|
|
139
|
-
process.stdout.write(
|
|
140
|
-
JSON.stringify({ ok: false, stage, reason, ...extra }, null, 2) + "\n",
|
|
141
|
-
);
|
|
142
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
export const RUNTIMES_MANIFEST_REL = "installed-runtimes.json";
|
|
2
|
-
export const RUNTIME_MANIFEST_SCHEMA_VERSION = 2;
|
|
3
|
-
export function runtimeListForSelection(runtime, resolution = null) {
|
|
4
|
-
if (runtime === "all") return [...(resolution?.catalogHostIds ?? [])];
|
|
5
|
-
if (runtime === "auto") {
|
|
6
|
-
const resolved = resolution?.resolvedRuntime;
|
|
7
|
-
return resolved && resolved !== "all" ? [resolved] : [];
|
|
8
|
-
}
|
|
9
|
-
return [runtime];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function includesClaudeAssets(resolution) {
|
|
13
|
-
return resolution?.installTargets?.includes("claude") === true;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function defaultResolution(runtime) {
|
|
17
|
-
if (runtime === "auto") return null;
|
|
18
|
-
return {
|
|
19
|
-
requestedRuntime: runtime,
|
|
20
|
-
resolvedRuntime: runtime,
|
|
21
|
-
launchMode: null,
|
|
22
|
-
installTargets: [],
|
|
23
|
-
host: "explicit",
|
|
24
|
-
confidence: "high",
|
|
25
|
-
reason: `Explicit runtime '${runtime}' requested.`,
|
|
26
|
-
fallbackFrom: null,
|
|
27
|
-
warnings: [],
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function buildRuntimeManifest(
|
|
32
|
-
runtime,
|
|
33
|
-
installedAt = new Date().toISOString(),
|
|
34
|
-
resolution = null,
|
|
35
|
-
installedAssets = null,
|
|
36
|
-
) {
|
|
37
|
-
const runtimeResolution = resolution ?? defaultResolution(runtime);
|
|
38
|
-
const includesClaude = includesClaudeAssets(runtimeResolution);
|
|
39
|
-
const defaultAssets = {
|
|
40
|
-
sharedRuntime: true,
|
|
41
|
-
claudeSkills: includesClaude,
|
|
42
|
-
claudeAgents: includesClaude,
|
|
43
|
-
binWrappers: true,
|
|
44
|
-
templates: true,
|
|
45
|
-
schemas: true,
|
|
46
|
-
validators: true,
|
|
47
|
-
};
|
|
48
|
-
return {
|
|
49
|
-
schemaVersion: RUNTIME_MANIFEST_SCHEMA_VERSION,
|
|
50
|
-
installedAt,
|
|
51
|
-
installRequest: runtime,
|
|
52
|
-
runtimeResolution,
|
|
53
|
-
installedRuntimes: runtimeListForSelection(runtime, runtimeResolution),
|
|
54
|
-
installedAssets: { ...defaultAssets, ...(installedAssets ?? {}) },
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export function installedRuntimesFromManifest(data) {
|
|
59
|
-
if (Array.isArray(data?.installedRuntimes)) return data.installedRuntimes;
|
|
60
|
-
if (Array.isArray(data?.runtimes)) return data.runtimes;
|
|
61
|
-
if (typeof data?.runtime === "string" && data.runtime) return runtimeListForSelection(data.runtime);
|
|
62
|
-
return [];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function runtimeManifestIncludesClaudeAssets(data) {
|
|
66
|
-
if (data?.schemaVersion === RUNTIME_MANIFEST_SCHEMA_VERSION) {
|
|
67
|
-
return data?.installedAssets?.claudeSkills === true || data?.installedAssets?.claudeAgents === true;
|
|
68
|
-
}
|
|
69
|
-
return data?.assets?.claudeSkills === true || data?.assets?.claudeAgents === true;
|
|
70
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// Single source of truth for which okstra skills are user-facing and which
|
|
2
|
-
// former or renamed skill directories must be pruned from agent skill homes on
|
|
3
|
-
// (re)install. The Claude plugin manifest (.claude-plugin/plugin.json) and the
|
|
4
|
-
// installer both derive their skill list from here, so the public surface
|
|
5
|
-
// cannot drift between discovery and install.
|
|
6
|
-
|
|
7
|
-
export const USER_SKILL_NAMES = Object.freeze([
|
|
8
|
-
"okstra-setup",
|
|
9
|
-
"okstra-brief-gen",
|
|
10
|
-
"okstra-run",
|
|
11
|
-
"okstra-manager",
|
|
12
|
-
"okstra-memory",
|
|
13
|
-
"okstra-inspect",
|
|
14
|
-
"okstra-rollup",
|
|
15
|
-
"okstra-usage",
|
|
16
|
-
"okstra-schedule-gen",
|
|
17
|
-
"okstra-container-build",
|
|
18
|
-
"okstra-pr-gen",
|
|
19
|
-
"okstra-user-response",
|
|
20
|
-
"okstra-code-review",
|
|
21
|
-
]);
|
|
22
|
-
|
|
23
|
-
// Names okstra used to install as skills before they were renamed or moved
|
|
24
|
-
// into the runtime resource tree. Install prunes these exact directories from
|
|
25
|
-
// each target skill home so upgrades do not leave stale slash commands behind.
|
|
26
|
-
// Exact-name only — never wildcard.
|
|
27
|
-
export const OBSOLETE_SKILL_NAMES = Object.freeze([
|
|
28
|
-
"okstra",
|
|
29
|
-
"okstra-context-loader",
|
|
30
|
-
"okstra-team-contract",
|
|
31
|
-
"okstra-convergence",
|
|
32
|
-
"okstra-report-writer",
|
|
33
|
-
"okstra-coding-preflight",
|
|
34
|
-
"okstra-container",
|
|
35
|
-
"okstra-brief",
|
|
36
|
-
"okstra-schedule",
|
|
37
|
-
// Pre-merge status/history/logs/report/time skills, since folded into
|
|
38
|
-
// okstra-inspect. Absent here, upgrades left them stranded in agent skill
|
|
39
|
-
// homes and their pre-.okstra-migration bodies kept triggering.
|
|
40
|
-
"okstra-status",
|
|
41
|
-
"okstra-history",
|
|
42
|
-
"okstra-logs",
|
|
43
|
-
"okstra-report-finder",
|
|
44
|
-
"okstra-time-summary",
|
|
45
|
-
]);
|
|
46
|
-
|
|
47
|
-
export function userSkillNames() {
|
|
48
|
-
return [...USER_SKILL_NAMES];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function obsoleteSkillNames() {
|
|
52
|
-
return [...OBSOLETE_SKILL_NAMES];
|
|
53
|
-
}
|
package/src/lib/version.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
3
|
-
import { dirname, join } from "node:path";
|
|
4
|
-
|
|
5
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
6
|
-
const packageJsonPath = join(here, "..", "..", "package.json");
|
|
7
|
-
|
|
8
|
-
let cachedVersion = null;
|
|
9
|
-
|
|
10
|
-
export async function getPackageVersion() {
|
|
11
|
-
if (cachedVersion) return cachedVersion;
|
|
12
|
-
const raw = await readFile(packageJsonPath, "utf8");
|
|
13
|
-
const { version } = JSON.parse(raw);
|
|
14
|
-
cachedVersion = version;
|
|
15
|
-
return version;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function getPackageRoot() {
|
|
19
|
-
return join(here, "..", "..");
|
|
20
|
-
}
|
|
File without changes
|