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.
Files changed (541) hide show
  1. package/README.md +1 -1
  2. package/dist/cli-registry.d.mts +88 -1
  3. package/dist/cli-registry.mjs +68 -111
  4. package/dist/cli-registry.mjs.map +1 -1
  5. package/dist/commands/execute/render-bundle.mjs +0 -1
  6. package/dist/commands/execute/render-bundle.mjs.map +1 -1
  7. package/dist/commands/execute/run.mjs +8 -3
  8. package/dist/commands/execute/run.mjs.map +1 -1
  9. package/dist/commands/lifecycle/check-project.mjs +1 -14
  10. package/dist/commands/lifecycle/check-project.mjs.map +1 -1
  11. package/dist/commands/lifecycle/config.mjs +38 -40
  12. package/dist/commands/lifecycle/config.mjs.map +1 -1
  13. package/dist/commands/lifecycle/doctor.d.mts +22 -7
  14. package/dist/commands/lifecycle/doctor.mjs +77 -49
  15. package/dist/commands/lifecycle/doctor.mjs.map +1 -1
  16. package/dist/commands/lifecycle/install.d.mts +12 -10
  17. package/dist/commands/lifecycle/install.mjs +104 -39
  18. package/dist/commands/lifecycle/install.mjs.map +1 -1
  19. package/dist/commands/lifecycle/paths.mjs +8 -3
  20. package/dist/commands/lifecycle/paths.mjs.map +1 -1
  21. package/dist/commands/lifecycle/preflight.mjs +2 -1
  22. package/dist/commands/lifecycle/preflight.mjs.map +1 -1
  23. package/dist/commands/lifecycle/setup.mjs +22 -36
  24. package/dist/commands/lifecycle/setup.mjs.map +1 -1
  25. package/dist/commands/lifecycle/uninstall.d.mts +4 -2
  26. package/dist/commands/lifecycle/uninstall.mjs +59 -15
  27. package/dist/commands/lifecycle/uninstall.mjs.map +1 -1
  28. package/dist/commands/memory/memory.mjs +7 -1
  29. package/dist/commands/memory/memory.mjs.map +1 -1
  30. package/dist/lib/helper-scripts.d.mts +1 -1
  31. package/dist/lib/helper-scripts.mjs +10 -18
  32. package/dist/lib/helper-scripts.mjs.map +1 -1
  33. package/dist/lib/host-config.d.mts +72 -0
  34. package/dist/lib/host-config.mjs +404 -0
  35. package/dist/lib/host-config.mjs.map +1 -0
  36. package/dist/lib/host-registry-client.d.mts +2 -2
  37. package/dist/lib/host-registry-client.mjs +0 -3
  38. package/dist/lib/host-registry-client.mjs.map +1 -1
  39. package/dist/lib/install-assets.d.mts +1 -0
  40. package/dist/lib/install-assets.mjs +4 -0
  41. package/dist/lib/install-assets.mjs.map +1 -1
  42. package/dist/lib/proc.d.mts +2 -0
  43. package/dist/lib/proc.mjs +12 -0
  44. package/dist/lib/proc.mjs.map +1 -1
  45. package/dist/lib/python-command.d.mts +2 -0
  46. package/dist/lib/python-command.mjs +52 -0
  47. package/dist/lib/python-command.mjs.map +1 -0
  48. package/dist/lib/python-helper.d.mts +2 -5
  49. package/dist/lib/python-helper.mjs +3 -52
  50. package/dist/lib/python-helper.mjs.map +1 -1
  51. package/dist/lib/runtime-payload.d.mts +23 -0
  52. package/dist/lib/runtime-payload.mjs +57 -0
  53. package/dist/lib/runtime-payload.mjs.map +1 -0
  54. package/dist/lib/types.d.mts +24 -13
  55. package/docs/architecture/storage-model.md +21 -5
  56. package/docs/architecture.md +37 -36
  57. package/docs/cli.md +55 -76
  58. package/docs/coding-rules.md +295 -0
  59. package/docs/container.md +10 -36
  60. package/docs/contributor-change-matrix.md +1 -1
  61. package/docs/for-ai/skills/okstra-code-review.md +0 -1
  62. package/docs/for-ai/skills/okstra-container-build.md +8 -41
  63. package/docs/for-ai/skills/okstra-inspect.md +4 -4
  64. package/docs/for-ai/skills/okstra-manager.md +2 -2
  65. package/docs/for-ai/skills/okstra-rollup.md +0 -1
  66. package/docs/for-ai/skills/okstra-run.md +3 -3
  67. package/docs/for-ai/skills/okstra-user-response.md +0 -1
  68. package/docs/performance-improvement-plan-v2.md +1 -1
  69. package/docs/project-structure-overview.md +62 -62
  70. package/docs/task-process/README.md +3 -3
  71. package/docs/task-process/common-flow.md +1 -1
  72. package/docs/task-process/error-analysis.md +3 -3
  73. package/docs/task-process/implementation-planning.md +3 -1
  74. package/docs/task-process/release-handoff.md +1 -1
  75. package/package.json +3 -2
  76. package/runtime/BUILD.json +2 -2
  77. package/runtime/agents/workers/claude-worker.md +6 -11
  78. package/runtime/agents/workers/report-writer-worker.md +1 -1
  79. package/runtime/bin/lib/okstra/cli.sh +4 -0
  80. package/runtime/bin/lib/okstra/globals.sh +2 -0
  81. package/runtime/bin/lib/okstra/interactive.sh +26 -173
  82. package/runtime/bin/lib/okstra/project-resolver.sh +23 -61
  83. package/runtime/bin/lib/okstra/usage.sh +3 -3
  84. package/runtime/bin/okstra-compact-reminder.sh +1 -5
  85. package/runtime/bin/okstra-error-log.py +19 -2
  86. package/runtime/bin/okstra-import-check.py +26 -0
  87. package/runtime/bin/okstra-inject-report-index.py +5 -4
  88. package/runtime/bin/okstra-provider-exec.py +22 -17
  89. package/runtime/bin/okstra-render-final-report.py +16 -6
  90. package/runtime/bin/okstra-render-report-views.py +25 -18
  91. package/runtime/bin/okstra-report-translate.py +30 -18
  92. package/runtime/bin/okstra-spawn-followups.py +4 -0
  93. package/runtime/bin/okstra-token-usage.py +3 -0
  94. package/runtime/bin/okstra.sh +4 -2
  95. package/runtime/bin/okstra_bootstrap.py +58 -0
  96. package/runtime/prompts/coding-preflight/overview.md +1 -1
  97. package/runtime/prompts/duties/planning-worker.md +1 -1
  98. package/runtime/prompts/launch.template.md +35 -9
  99. package/runtime/prompts/lead/convergence.md +96 -87
  100. package/runtime/prompts/lead/okstra-lead-contract.md +63 -12
  101. package/runtime/prompts/lead/plan-body-verification.md +65 -46
  102. package/runtime/prompts/lead/report-writer.md +34 -4
  103. package/runtime/prompts/lead/team-contract.md +4 -1
  104. package/runtime/prompts/profiles/_clarification-recommendation.md +2 -1
  105. package/runtime/prompts/profiles/_coding-conventions-preflight.md +1 -1
  106. package/runtime/prompts/profiles/_common-contract.md +3 -3
  107. package/runtime/prompts/profiles/_coverage-critic.md +1 -1
  108. package/runtime/prompts/profiles/_implementation-deliverable.md +2 -2
  109. package/runtime/prompts/profiles/_implementation-executor.md +3 -1
  110. package/runtime/prompts/profiles/_implementation-verifier.md +16 -2
  111. package/runtime/prompts/profiles/error-analysis.md +4 -3
  112. package/runtime/prompts/profiles/final-verification.md +2 -2
  113. package/runtime/prompts/profiles/implementation-planning.md +22 -17
  114. package/runtime/prompts/profiles/implementation.md +3 -2
  115. package/runtime/prompts/profiles/requirements-discovery.md +2 -1
  116. package/runtime/prompts/wizard/prompts.ko.json +29 -8
  117. package/runtime/python/okstra_ctl/__init__.py +6 -27
  118. package/runtime/python/okstra_ctl/adapters/hosts/claude-code/relay.md +4 -5
  119. package/runtime/python/okstra_ctl/adapters/hosts/codex/adapter.py +21 -2
  120. package/runtime/python/okstra_ctl/adapters/hosts/external/adapter.py +3 -12
  121. package/runtime/python/okstra_ctl/adapters/providers/antigravity/adapter.py +40 -22
  122. package/runtime/python/okstra_ctl/adapters/providers/claude/adapter.py +14 -21
  123. package/runtime/python/okstra_ctl/adapters/providers/codex/adapter.py +37 -20
  124. package/runtime/python/okstra_ctl/adapters/providers/grok/adapter.py +86 -14
  125. package/runtime/python/okstra_ctl/adapters/providers/kimi/adapter.py +12 -12
  126. package/runtime/python/okstra_ctl/adapters/runtime/cmux.py +4 -7
  127. package/runtime/python/okstra_ctl/agent/__init__.py +1 -0
  128. package/runtime/python/okstra_ctl/{agent_activity.py → agent/activity.py} +12 -1
  129. package/runtime/python/okstra_ctl/{agent_invocation.py → agent/invocation.py} +34 -5
  130. package/runtime/python/okstra_ctl/agent/prompt_cli/__init__.py +19 -0
  131. package/runtime/python/okstra_ctl/agent/prompt_cli/__main__.py +11 -0
  132. package/runtime/python/okstra_ctl/agent/prompt_cli/cli.py +215 -0
  133. package/runtime/python/okstra_ctl/agent/prompt_cli/dynamic_verifier.py +155 -0
  134. package/runtime/python/okstra_ctl/agent/prompt_cli/emit.py +66 -0
  135. package/runtime/python/okstra_ctl/agent/prompt_cli/inputs.py +138 -0
  136. package/runtime/python/okstra_ctl/agent/prompt_cli/materialize.py +408 -0
  137. package/runtime/python/okstra_ctl/agent/prompt_cli/results.py +197 -0
  138. package/runtime/python/okstra_ctl/agent/prompt_cli/run_identity.py +107 -0
  139. package/runtime/python/okstra_ctl/analysis_packet.py +47 -4
  140. package/runtime/python/okstra_ctl/approval_decisions.py +260 -8
  141. package/runtime/python/okstra_ctl/assignment_resolver.py +0 -12
  142. package/runtime/python/okstra_ctl/attempt_evidence.py +12 -24
  143. package/runtime/python/okstra_ctl/blocking_checks.py +251 -0
  144. package/runtime/python/okstra_ctl/brief_frontmatter.py +0 -7
  145. package/runtime/python/okstra_ctl/clarification_items/__init__.py +102 -0
  146. package/runtime/python/okstra_ctl/clarification_items/carry.py +224 -0
  147. package/runtime/python/okstra_ctl/clarification_items/dispositions.py +135 -0
  148. package/runtime/python/okstra_ctl/clarification_items/parsing.py +253 -0
  149. package/runtime/python/okstra_ctl/clarification_items/rows.py +115 -0
  150. package/runtime/python/okstra_ctl/clarification_items/scan.py +215 -0
  151. package/runtime/python/okstra_ctl/clarification_items/sidecars.py +211 -0
  152. package/runtime/python/okstra_ctl/cmux.py +38 -31
  153. package/runtime/python/okstra_ctl/code_review_target.py +163 -1
  154. package/runtime/python/okstra_ctl/conformance.py +23 -0
  155. package/runtime/python/okstra_ctl/container.py +38 -421
  156. package/runtime/python/okstra_ctl/context_cost.py +16 -2
  157. package/runtime/python/okstra_ctl/contract_graph_cli.py +7 -0
  158. package/runtime/python/okstra_ctl/convergence.py +101 -15
  159. package/runtime/python/okstra_ctl/convergence_critic_prompt.py +345 -0
  160. package/runtime/python/okstra_ctl/convergence_engine.py +382 -70
  161. package/runtime/python/okstra_ctl/convergence_store.py +5 -29
  162. package/runtime/python/okstra_ctl/design_prep.py +108 -12
  163. package/runtime/python/okstra_ctl/design_snapshot.py +11 -1
  164. package/runtime/python/okstra_ctl/design_surfaces.py +29 -2
  165. package/runtime/python/okstra_ctl/dispatch_core.py +102 -25
  166. package/runtime/python/okstra_ctl/dispatch_state.py +268 -39
  167. package/runtime/python/okstra_ctl/doctor_cli.py +48 -0
  168. package/runtime/python/okstra_ctl/domain/worker_exec.py +10 -5
  169. package/runtime/python/okstra_ctl/domain/worker_presentation.py +21 -1
  170. package/runtime/python/okstra_ctl/domain/worker_stream.py +52 -21
  171. package/runtime/python/okstra_ctl/domain/write_policy.py +219 -0
  172. package/runtime/python/okstra_ctl/entrypoints/hosts.py +9 -2
  173. package/runtime/python/okstra_ctl/error_log_core.py +1 -1
  174. package/runtime/python/okstra_ctl/error_report.py +14 -0
  175. package/runtime/python/okstra_ctl/error_zip.py +18 -2
  176. package/runtime/python/okstra_ctl/execution_identity.py +100 -7
  177. package/runtime/python/okstra_ctl/execution_manifest.py +67 -20
  178. package/runtime/python/okstra_ctl/execution_mutation_audit.py +90 -8
  179. package/runtime/python/okstra_ctl/final_report_paths.py +17 -0
  180. package/runtime/python/okstra_ctl/final_report_schema.py +90 -16
  181. package/runtime/python/okstra_ctl/git_reconcile.py +22 -2
  182. package/runtime/python/okstra_ctl/handoff.py +24 -1
  183. package/runtime/python/okstra_ctl/ids.py +6 -16
  184. package/runtime/python/okstra_ctl/implementation_direction.py +142 -33
  185. package/runtime/python/okstra_ctl/implementation_options.py +25 -11
  186. package/runtime/python/okstra_ctl/implementation_outcome.py +5 -2
  187. package/runtime/python/okstra_ctl/improvement_lenses.py +0 -14
  188. package/runtime/python/okstra_ctl/incremental_carry.py +69 -8
  189. package/runtime/python/okstra_ctl/incremental_scope.py +173 -12
  190. package/runtime/python/okstra_ctl/index.py +2 -2
  191. package/runtime/python/okstra_ctl/initial_prompt_materialization.py +48 -8
  192. package/runtime/python/okstra_ctl/interactive_cli.py +223 -0
  193. package/runtime/python/okstra_ctl/json_boundary.py +10 -0
  194. package/runtime/python/okstra_ctl/listing.py +0 -91
  195. package/runtime/python/okstra_ctl/locks.py +5 -19
  196. package/runtime/python/okstra_ctl/log_report.py +14 -0
  197. package/runtime/python/okstra_ctl/manager_cli.py +22 -3
  198. package/runtime/python/okstra_ctl/manager_launch.py +4 -8
  199. package/runtime/python/okstra_ctl/material.py +2 -2
  200. package/runtime/python/okstra_ctl/migrate.py +23 -1
  201. package/runtime/python/okstra_ctl/model_cli.py +19 -5
  202. package/runtime/python/okstra_ctl/model_discovery.py +46 -47
  203. package/runtime/python/okstra_ctl/model_io/__init__.py +1 -0
  204. package/runtime/python/okstra_ctl/model_io/lines.py +163 -0
  205. package/runtime/python/okstra_ctl/model_io/references.py +370 -0
  206. package/runtime/python/okstra_ctl/model_io/renderers.py +498 -0
  207. package/runtime/python/okstra_ctl/model_io_cli.py +30 -945
  208. package/runtime/python/okstra_ctl/model_pool.py +10 -6
  209. package/runtime/python/okstra_ctl/models.py +8 -8
  210. package/runtime/python/okstra_ctl/mutation_recovery.py +5 -63
  211. package/runtime/python/okstra_ctl/next_phase.py +121 -69
  212. package/runtime/python/okstra_ctl/pane_reclaim.py +23 -0
  213. package/runtime/python/okstra_ctl/pane_title.py +11 -8
  214. package/runtime/python/okstra_ctl/path_hints.py +36 -11
  215. package/runtime/python/okstra_ctl/paths.py +76 -8
  216. package/runtime/python/okstra_ctl/plan_items.py +132 -16
  217. package/runtime/python/okstra_ctl/plan_items_cli.py +486 -36
  218. package/runtime/python/okstra_ctl/plan_run_root.py +1 -1
  219. package/runtime/python/okstra_ctl/plan_validate_cli.py +51 -0
  220. package/runtime/python/okstra_ctl/plan_verify_cli.py +80 -0
  221. package/runtime/python/okstra_ctl/prepare_error.py +20 -0
  222. package/runtime/python/okstra_ctl/prior_planning.py +157 -0
  223. package/runtime/python/okstra_ctl/profile_show.py +18 -1
  224. package/runtime/python/okstra_ctl/project_setup_cli.py +140 -0
  225. package/runtime/python/okstra_ctl/recap.py +22 -1
  226. package/runtime/python/okstra_ctl/reconcile.py +84 -0
  227. package/runtime/python/okstra_ctl/registry/host_registry.py +18 -1
  228. package/runtime/python/okstra_ctl/render.py +98 -32
  229. package/runtime/python/okstra_ctl/render_final_report.py +3 -7
  230. package/runtime/python/okstra_ctl/report_assembly.py +297 -7
  231. package/runtime/python/okstra_ctl/report_contract.py +30 -7
  232. package/runtime/python/okstra_ctl/report_finalize.py +206 -15
  233. package/runtime/python/okstra_ctl/report_html/common.py +2 -2
  234. package/runtime/python/okstra_ctl/report_html/render.py +8 -12
  235. package/runtime/python/okstra_ctl/report_language.py +8 -4
  236. package/runtime/python/okstra_ctl/report_narrative.py +90 -3
  237. package/runtime/python/okstra_ctl/report_projections.py +8 -2
  238. package/runtime/python/okstra_ctl/report_synthesis_packet.py +258 -1
  239. package/runtime/python/okstra_ctl/report_translation.py +2 -35
  240. package/runtime/python/okstra_ctl/report_views.py +4 -22
  241. package/runtime/python/okstra_ctl/resolve_task_key.py +13 -0
  242. package/runtime/python/okstra_ctl/rollup.py +13 -0
  243. package/runtime/python/okstra_ctl/run.py +639 -138
  244. package/runtime/python/okstra_ctl/run_audit.py +13 -0
  245. package/runtime/python/okstra_ctl/run_index_row.py +0 -12
  246. package/runtime/python/okstra_ctl/seeding.py +21 -11
  247. package/runtime/python/okstra_ctl/sequence.py +1 -1
  248. package/runtime/python/okstra_ctl/session.py +64 -14
  249. package/runtime/python/okstra_ctl/set_work_status.py +18 -0
  250. package/runtime/python/okstra_ctl/stage_integrate.py +15 -1
  251. package/runtime/python/okstra_ctl/stage_ledger.py +1 -1
  252. package/runtime/python/okstra_ctl/stage_map.py +57 -11
  253. package/runtime/python/okstra_ctl/stage_map_cli.py +83 -0
  254. package/runtime/python/okstra_ctl/stage_map_view.py +65 -0
  255. package/runtime/python/okstra_ctl/stage_targets.py +3 -12
  256. package/runtime/python/okstra_ctl/task_list_cli.py +138 -0
  257. package/runtime/python/okstra_ctl/task_show_cli.py +66 -0
  258. package/runtime/python/okstra_ctl/task_target.py +4 -16
  259. package/runtime/python/okstra_ctl/team.py +49 -2
  260. package/runtime/python/okstra_ctl/time_report.py +17 -2
  261. package/runtime/python/okstra_ctl/usage_report.py +11 -0
  262. package/runtime/python/okstra_ctl/user_response.py +55 -218
  263. package/runtime/python/okstra_ctl/user_response_values.py +242 -0
  264. package/runtime/python/okstra_ctl/validation_contract.py +3 -0
  265. package/runtime/python/okstra_ctl/verification_target.py +68 -0
  266. package/runtime/python/okstra_ctl/wizard.py +457 -92
  267. package/runtime/python/okstra_ctl/worker_artifacts.py +75 -16
  268. package/runtime/python/okstra_ctl/worker_audit_check.py +22 -0
  269. package/runtime/python/okstra_ctl/worker_dispatch.py +21 -0
  270. package/runtime/python/okstra_ctl/worker_liveness.py +33 -0
  271. package/runtime/python/okstra_ctl/worker_prompt_body.py +15 -2
  272. package/runtime/python/okstra_ctl/worker_prompt_contract.py +98 -7
  273. package/runtime/python/okstra_ctl/worker_prompt_headers.py +24 -2
  274. package/runtime/python/okstra_ctl/worker_prompt_policy.py +18 -3
  275. package/runtime/python/okstra_ctl/worker_request.py +2 -1
  276. package/runtime/python/okstra_ctl/worker_runner.py +16 -9
  277. package/runtime/python/okstra_ctl/worker_state.py +16 -1
  278. package/runtime/python/okstra_ctl/workflow.py +18 -1
  279. package/runtime/python/okstra_ctl/worktree/__init__.py +92 -0
  280. package/runtime/python/okstra_ctl/worktree/cleanliness.py +89 -0
  281. package/runtime/python/okstra_ctl/worktree/decisions.py +127 -0
  282. package/runtime/python/okstra_ctl/worktree/git_ops.py +165 -0
  283. package/runtime/python/okstra_ctl/worktree/linking.py +249 -0
  284. package/runtime/python/okstra_ctl/worktree/naming.py +91 -0
  285. package/runtime/python/okstra_ctl/worktree/provision.py +385 -0
  286. package/runtime/python/okstra_ctl/worktree/sync_config.py +181 -0
  287. package/runtime/python/okstra_ctl/worktree_cli.py +75 -0
  288. package/runtime/python/okstra_ctl/worktree_lookup_cli.py +39 -0
  289. package/runtime/python/okstra_ctl/worktree_registry.py +7 -0
  290. package/runtime/python/okstra_ctl/worktree_status_cli.py +53 -0
  291. package/runtime/python/okstra_ctl/write_policy.py +90 -213
  292. package/runtime/python/okstra_project/__init__.py +0 -4
  293. package/runtime/python/okstra_project/dirs.py +2 -2
  294. package/runtime/python/okstra_project/phase_pointer.py +84 -0
  295. package/runtime/python/okstra_project/slug.py +24 -0
  296. package/runtime/python/okstra_project/state.py +22 -230
  297. package/runtime/python/okstra_token_usage/claude.py +9 -1
  298. package/runtime/python/okstra_token_usage/cli.py +3 -1
  299. package/runtime/python/okstra_token_usage/collect.py +71 -10
  300. package/runtime/python/okstra_token_usage/cursor.py +2 -0
  301. package/runtime/python/okstra_token_usage/grok.py +1 -5
  302. package/runtime/python/okstra_token_usage/paths.py +26 -0
  303. package/runtime/python/okstra_token_usage/pricing.py +19 -7
  304. package/runtime/schemas/convergence-critic-results-v1.0.schema.json +5 -0
  305. package/runtime/schemas/execution-manifest-v2.schema.json +10 -10
  306. package/runtime/schemas/final-report-v2.0.schema.json +9 -26
  307. package/runtime/schemas/final-report-v3.0.schema.json +173 -41
  308. package/runtime/schemas/report-narrative-v3.0.schema.json +3 -2
  309. package/runtime/skills/okstra-brief-gen/SKILL.md +35 -2
  310. package/runtime/skills/okstra-container-build/SKILL.md +16 -47
  311. package/runtime/skills/okstra-inspect/facets/history.md +1 -1
  312. package/runtime/skills/okstra-inspect/facets/status.md +7 -6
  313. package/runtime/skills/okstra-pr-gen/SKILL.md +1 -1
  314. package/runtime/skills/okstra-run/SKILL.md +7 -5
  315. package/runtime/templates/report-writer-prompt-preamble.md +1 -1
  316. package/runtime/templates/reports/brief.template.md +6 -2
  317. package/runtime/templates/reports/error-analysis-input.template.md +2 -0
  318. package/runtime/templates/reports/final-verification-input.template.md +2 -0
  319. package/runtime/templates/reports/implementation-input.template.md +7 -1
  320. package/runtime/templates/reports/implementation-planning-input.template.md +4 -0
  321. package/runtime/templates/reports/quick-input.template.md +2 -0
  322. package/runtime/templates/reports/release-handoff-input.template.md +6 -1
  323. package/runtime/templates/reports/report.js +20 -3
  324. package/runtime/templates/reports/schedule.template.md +2 -0
  325. package/runtime/templates/reports/settings.template.json +0 -10
  326. package/runtime/templates/reports/task-brief.template.md +3 -0
  327. package/runtime/templates/reports/user-response.template.md +7 -3
  328. package/runtime/validators/checks/fixtures-01.py +57 -0
  329. package/runtime/validators/checks/fixtures-02.py +565 -0
  330. package/runtime/validators/checks/runners-01.py +108 -0
  331. package/runtime/validators/checks/validate-assets-01.py +60 -0
  332. package/runtime/validators/checks/validate-prompt-metadata-01.py +261 -0
  333. package/runtime/validators/checks/validate-tasks-01.py +46 -0
  334. package/runtime/validators/checks/validate-tasks-02.py +85 -0
  335. package/runtime/validators/checks/validate-tasks-03.py +61 -0
  336. package/runtime/validators/checks/validate-tasks-04.py +118 -0
  337. package/runtime/validators/forbidden_actions.py +73 -3
  338. package/runtime/validators/lib/common.sh +5 -0
  339. package/runtime/validators/lib/fixtures.sh +7 -591
  340. package/runtime/validators/lib/paths.sh +13 -0
  341. package/runtime/validators/lib/runners.sh +6 -104
  342. package/runtime/validators/lib/summary.sh +1 -1
  343. package/runtime/validators/lib/validate-assets.sh +6 -56
  344. package/runtime/validators/lib/validate-prompt-metadata.sh +6 -257
  345. package/runtime/validators/lib/validate-tasks.sh +9 -294
  346. package/runtime/validators/validate-implementation-plan-stages.py +4 -4
  347. package/runtime/validators/validate-run.py +1369 -2654
  348. package/runtime/validators/validate-workflow.sh +56 -16
  349. package/runtime/validators/validate_improvement_report.py +2 -1
  350. package/runtime/validators/validate_session_conformance.py +295 -49
  351. package/dist/commands/execute/agent-prompt.d.mts +0 -1
  352. package/dist/commands/execute/agent-prompt.mjs +0 -24
  353. package/dist/commands/execute/agent-prompt.mjs.map +0 -1
  354. package/dist/commands/execute/codex-dispatch.d.mts +0 -3
  355. package/dist/commands/execute/codex-dispatch.mjs +0 -6
  356. package/dist/commands/execute/codex-dispatch.mjs.map +0 -1
  357. package/dist/commands/execute/codex-run.d.mts +0 -3
  358. package/dist/commands/execute/codex-run.mjs +0 -62
  359. package/dist/commands/execute/codex-run.mjs.map +0 -1
  360. package/dist/commands/execute/convergence.d.mts +0 -1
  361. package/dist/commands/execute/convergence.mjs +0 -38
  362. package/dist/commands/execute/convergence.mjs.map +0 -1
  363. package/dist/commands/execute/error-log.d.mts +0 -1
  364. package/dist/commands/execute/error-log.mjs +0 -18
  365. package/dist/commands/execute/error-log.mjs.map +0 -1
  366. package/dist/commands/execute/git-reconcile.d.mts +0 -1
  367. package/dist/commands/execute/git-reconcile.mjs +0 -30
  368. package/dist/commands/execute/git-reconcile.mjs.map +0 -1
  369. package/dist/commands/execute/handoff.d.mts +0 -1
  370. package/dist/commands/execute/handoff.mjs +0 -31
  371. package/dist/commands/execute/handoff.mjs.map +0 -1
  372. package/dist/commands/execute/incremental-carry.d.mts +0 -1
  373. package/dist/commands/execute/incremental-carry.mjs +0 -20
  374. package/dist/commands/execute/incremental-carry.mjs.map +0 -1
  375. package/dist/commands/execute/incremental-scope.d.mts +0 -1
  376. package/dist/commands/execute/incremental-scope.mjs +0 -29
  377. package/dist/commands/execute/incremental-scope.mjs.map +0 -1
  378. package/dist/commands/execute/integrate-stages.d.mts +0 -1
  379. package/dist/commands/execute/integrate-stages.mjs +0 -24
  380. package/dist/commands/execute/integrate-stages.mjs.map +0 -1
  381. package/dist/commands/execute/pane-title.d.mts +0 -1
  382. package/dist/commands/execute/pane-title.mjs +0 -20
  383. package/dist/commands/execute/pane-title.mjs.map +0 -1
  384. package/dist/commands/execute/plan-items.d.mts +0 -1
  385. package/dist/commands/execute/plan-items.mjs +0 -9
  386. package/dist/commands/execute/plan-items.mjs.map +0 -1
  387. package/dist/commands/execute/plan-validate.d.mts +0 -1
  388. package/dist/commands/execute/plan-validate.mjs +0 -68
  389. package/dist/commands/execute/plan-validate.mjs.map +0 -1
  390. package/dist/commands/execute/plan-verify.d.mts +0 -1
  391. package/dist/commands/execute/plan-verify.mjs +0 -43
  392. package/dist/commands/execute/plan-verify.mjs.map +0 -1
  393. package/dist/commands/execute/spawn-followups.d.mts +0 -1
  394. package/dist/commands/execute/spawn-followups.mjs +0 -22
  395. package/dist/commands/execute/spawn-followups.mjs.map +0 -1
  396. package/dist/commands/execute/team.d.mts +0 -3
  397. package/dist/commands/execute/team.mjs +0 -66
  398. package/dist/commands/execute/team.mjs.map +0 -1
  399. package/dist/commands/execute/token-usage.d.mts +0 -1
  400. package/dist/commands/execute/token-usage.mjs +0 -19
  401. package/dist/commands/execute/token-usage.mjs.map +0 -1
  402. package/dist/commands/execute/worker-audit-check.d.mts +0 -1
  403. package/dist/commands/execute/worker-audit-check.mjs +0 -34
  404. package/dist/commands/execute/worker-audit-check.mjs.map +0 -1
  405. package/dist/commands/execute/worker-dispatch.d.mts +0 -7
  406. package/dist/commands/execute/worker-dispatch.mjs +0 -64
  407. package/dist/commands/execute/worker-dispatch.mjs.map +0 -1
  408. package/dist/commands/execute/worker-state.d.mts +0 -1
  409. package/dist/commands/execute/worker-state.mjs +0 -28
  410. package/dist/commands/execute/worker-state.mjs.map +0 -1
  411. package/dist/commands/execute/worktree-lookup.d.mts +0 -1
  412. package/dist/commands/execute/worktree-lookup.mjs +0 -92
  413. package/dist/commands/execute/worktree-lookup.mjs.map +0 -1
  414. package/dist/commands/execute/worktree-status.d.mts +0 -1
  415. package/dist/commands/execute/worktree-status.mjs +0 -121
  416. package/dist/commands/execute/worktree-status.mjs.map +0 -1
  417. package/dist/commands/inspect/code-review.d.mts +0 -1
  418. package/dist/commands/inspect/code-review.mjs +0 -32
  419. package/dist/commands/inspect/code-review.mjs.map +0 -1
  420. package/dist/commands/inspect/container.d.mts +0 -1
  421. package/dist/commands/inspect/container.mjs +0 -25
  422. package/dist/commands/inspect/container.mjs.map +0 -1
  423. package/dist/commands/inspect/context-cost.d.mts +0 -1
  424. package/dist/commands/inspect/context-cost.mjs +0 -25
  425. package/dist/commands/inspect/context-cost.mjs.map +0 -1
  426. package/dist/commands/inspect/design-prep.d.mts +0 -1
  427. package/dist/commands/inspect/design-prep.mjs +0 -22
  428. package/dist/commands/inspect/design-prep.mjs.map +0 -1
  429. package/dist/commands/inspect/error-report.d.mts +0 -1
  430. package/dist/commands/inspect/error-report.mjs +0 -25
  431. package/dist/commands/inspect/error-report.mjs.map +0 -1
  432. package/dist/commands/inspect/error-zip.d.mts +0 -1
  433. package/dist/commands/inspect/error-zip.mjs +0 -24
  434. package/dist/commands/inspect/error-zip.mjs.map +0 -1
  435. package/dist/commands/inspect/log-report.d.mts +0 -1
  436. package/dist/commands/inspect/log-report.mjs +0 -26
  437. package/dist/commands/inspect/log-report.mjs.map +0 -1
  438. package/dist/commands/inspect/model-io.d.mts +0 -1
  439. package/dist/commands/inspect/model-io.mjs +0 -25
  440. package/dist/commands/inspect/model-io.mjs.map +0 -1
  441. package/dist/commands/inspect/profile-show.d.mts +0 -1
  442. package/dist/commands/inspect/profile-show.mjs +0 -28
  443. package/dist/commands/inspect/profile-show.mjs.map +0 -1
  444. package/dist/commands/inspect/recap.d.mts +0 -1
  445. package/dist/commands/inspect/recap.mjs +0 -30
  446. package/dist/commands/inspect/recap.mjs.map +0 -1
  447. package/dist/commands/inspect/resolve-task-key.d.mts +0 -1
  448. package/dist/commands/inspect/resolve-task-key.mjs +0 -24
  449. package/dist/commands/inspect/resolve-task-key.mjs.map +0 -1
  450. package/dist/commands/inspect/rollup.d.mts +0 -1
  451. package/dist/commands/inspect/rollup.mjs +0 -25
  452. package/dist/commands/inspect/rollup.mjs.map +0 -1
  453. package/dist/commands/inspect/run-audit.d.mts +0 -1
  454. package/dist/commands/inspect/run-audit.mjs +0 -25
  455. package/dist/commands/inspect/run-audit.mjs.map +0 -1
  456. package/dist/commands/inspect/set-work-status.d.mts +0 -1
  457. package/dist/commands/inspect/set-work-status.mjs +0 -29
  458. package/dist/commands/inspect/set-work-status.mjs.map +0 -1
  459. package/dist/commands/inspect/stage-map.d.mts +0 -1
  460. package/dist/commands/inspect/stage-map.mjs +0 -131
  461. package/dist/commands/inspect/stage-map.mjs.map +0 -1
  462. package/dist/commands/inspect/task-list.d.mts +0 -1
  463. package/dist/commands/inspect/task-list.mjs +0 -149
  464. package/dist/commands/inspect/task-list.mjs.map +0 -1
  465. package/dist/commands/inspect/task-show.d.mts +0 -1
  466. package/dist/commands/inspect/task-show.mjs +0 -108
  467. package/dist/commands/inspect/task-show.mjs.map +0 -1
  468. package/dist/commands/inspect/time-report.d.mts +0 -1
  469. package/dist/commands/inspect/time-report.mjs +0 -24
  470. package/dist/commands/inspect/time-report.mjs.map +0 -1
  471. package/dist/commands/inspect/usage-report.d.mts +0 -1
  472. package/dist/commands/inspect/usage-report.mjs +0 -23
  473. package/dist/commands/inspect/usage-report.mjs.map +0 -1
  474. package/dist/commands/inspect/user-response.d.mts +0 -1
  475. package/dist/commands/inspect/user-response.mjs +0 -35
  476. package/dist/commands/inspect/user-response.mjs.map +0 -1
  477. package/dist/commands/inspect/worker-liveness.d.mts +0 -1
  478. package/dist/commands/inspect/worker-liveness.mjs +0 -45
  479. package/dist/commands/inspect/worker-liveness.mjs.map +0 -1
  480. package/dist/commands/lifecycle/contract-check.d.mts +0 -1
  481. package/dist/commands/lifecycle/contract-check.mjs +0 -18
  482. package/dist/commands/lifecycle/contract-check.mjs.map +0 -1
  483. package/dist/commands/lifecycle/migrate.d.mts +0 -1
  484. package/dist/commands/lifecycle/migrate.mjs +0 -30
  485. package/dist/commands/lifecycle/migrate.mjs.map +0 -1
  486. package/dist/commands/lifecycle/model.d.mts +0 -1
  487. package/dist/commands/lifecycle/model.mjs +0 -22
  488. package/dist/commands/lifecycle/model.mjs.map +0 -1
  489. package/dist/commands/manager.d.mts +0 -3
  490. package/dist/commands/manager.mjs +0 -50
  491. package/dist/commands/manager.mjs.map +0 -1
  492. package/dist/commands/report/agent-activity.d.mts +0 -1
  493. package/dist/commands/report/agent-activity.mjs +0 -20
  494. package/dist/commands/report/agent-activity.mjs.map +0 -1
  495. package/dist/commands/report/approval-decision.d.mts +0 -1
  496. package/dist/commands/report/approval-decision.mjs +0 -21
  497. package/dist/commands/report/approval-decision.mjs.map +0 -1
  498. package/dist/commands/report/design-snapshot.d.mts +0 -1
  499. package/dist/commands/report/design-snapshot.mjs +0 -19
  500. package/dist/commands/report/design-snapshot.mjs.map +0 -1
  501. package/dist/commands/report/finalize.d.mts +0 -4
  502. package/dist/commands/report/finalize.mjs +0 -64
  503. package/dist/commands/report/finalize.mjs.map +0 -1
  504. package/dist/commands/report/inject-report-index.d.mts +0 -1
  505. package/dist/commands/report/inject-report-index.mjs +0 -21
  506. package/dist/commands/report/inject-report-index.mjs.map +0 -1
  507. package/dist/commands/report/render-final-report.d.mts +0 -1
  508. package/dist/commands/report/render-final-report.mjs +0 -23
  509. package/dist/commands/report/render-final-report.mjs.map +0 -1
  510. package/dist/commands/report/render-views.d.mts +0 -1
  511. package/dist/commands/report/render-views.mjs +0 -27
  512. package/dist/commands/report/render-views.mjs.map +0 -1
  513. package/dist/commands/report/translate.d.mts +0 -1
  514. package/dist/commands/report/translate.mjs +0 -33
  515. package/dist/commands/report/translate.mjs.map +0 -1
  516. package/runtime/bin/lib/okstra/tmux-pane.sh +0 -40
  517. package/runtime/bin/lib/okstra-ctl/cmd-batch.sh +0 -59
  518. package/runtime/bin/lib/okstra-ctl/cmd-list.sh +0 -35
  519. package/runtime/bin/lib/okstra-ctl/cmd-open.sh +0 -36
  520. package/runtime/bin/lib/okstra-ctl/cmd-projects.sh +0 -26
  521. package/runtime/bin/lib/okstra-ctl/cmd-reconcile.sh +0 -29
  522. package/runtime/bin/lib/okstra-ctl/cmd-reindex.sh +0 -38
  523. package/runtime/bin/lib/okstra-ctl/cmd-rerun.sh +0 -345
  524. package/runtime/bin/lib/okstra-ctl/cmd-show.sh +0 -27
  525. package/runtime/bin/lib/okstra-ctl/cmd-tail.sh +0 -92
  526. package/runtime/bin/lib/okstra-ctl/main.sh +0 -41
  527. package/runtime/bin/lib/okstra-ctl/prepare.sh +0 -31
  528. package/runtime/bin/lib/okstra-ctl/usage.sh +0 -23
  529. package/runtime/bin/okstra-central.sh +0 -152
  530. package/runtime/bin/okstra-incremental-carry.py +0 -10
  531. package/runtime/bin/okstra-incremental-scope.py +0 -10
  532. package/runtime/bin/okstra-team-reconcile.sh +0 -36
  533. package/runtime/python/okstra_ctl/agent_prompt_cli.py +0 -1156
  534. package/runtime/python/okstra_ctl/batch.py +0 -60
  535. package/runtime/python/okstra_ctl/clarification_items.py +0 -1050
  536. package/runtime/python/okstra_ctl/container_registry.py +0 -72
  537. package/runtime/python/okstra_ctl/improvement_assignment.py +0 -61
  538. package/runtime/python/okstra_ctl/resolver.py +0 -54
  539. package/runtime/python/okstra_ctl/team_reconcile.py +0 -275
  540. package/runtime/python/okstra_ctl/tmux.py +0 -134
  541. package/runtime/python/okstra_ctl/worktree.py +0 -1099
@@ -1,25 +0,0 @@
1
- import { runPythonModule } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra error-report — aggregate okstra-run error logs into a task report
3
-
4
- Usage:
5
- okstra error-report <task-root>
6
- okstra error-report <task-key> --project-root <dir>
7
- okstra error-report <task-key> --cwd <dir>
8
-
9
- Writes a timestamped markdown report under <task-root>/error-reports/ and
10
- prints a JSON summary (counts by errorType / source / phase / agent) to stdout.
11
- This is read-only against task state; 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.error_report",
20
- args,
21
- stdio: "inherit-stdout",
22
- });
23
- return result.code;
24
- }
25
- //# sourceMappingURL=error-report.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-report.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/error-report.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,24 +0,0 @@
1
- import { runPythonModule } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra error-zip — bundle cross-project okstra error logs into a zip
3
-
4
- Usage:
5
- okstra error-zip --out <path>
6
-
7
- Walks the global run-index (~/.okstra/recent.jsonl + active.jsonl), collects
8
- every target project's runs/*/logs/errors-*.jsonl, anonymizes records, and
9
- writes a .zip (report.md + errors/anonymized.jsonl) to <path>. Read-only
10
- against every target's .okstra/. Prints a JSON summary to stdout.
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
- const result = await runPythonModule({
18
- module: "okstra_ctl.error_zip",
19
- args,
20
- stdio: "inherit-stdout",
21
- });
22
- return result.code;
23
- }
24
- //# sourceMappingURL=error-zip.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-zip.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/error-zip.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,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,26 +0,0 @@
1
- import { runPythonModule } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra log-report — inventory wrapper sidecar logs by size and task
3
-
4
- Usage:
5
- okstra log-report [--project-root <dir>] [--cwd <dir>] [--top <N>] [--json]
6
-
7
- Output: JSON { ok, projectRoot, logsRoot, topLargest[], perTask[], totals }.
8
- Scans <project-root>/.okstra/tasks/**/runs/*/prompts/*.log. Each entry reports
9
- the wrapper transcript as transcriptBytes and its sibling prompt Markdown as
10
- promptBytes; sizeBytes remains the transcript-size compatibility field. Sizes
11
- are raw bytes and mtimes are epoch seconds — the caller formats KB/MB and ages.
12
- Read-only: it never deletes logs (cleanup commands stay in the skill).
13
- `;
14
- export async function run(args) {
15
- if (args.includes("--help") || args.includes("-h")) {
16
- process.stdout.write(USAGE);
17
- return 0;
18
- }
19
- const result = await runPythonModule({
20
- module: "okstra_ctl.log_report",
21
- args,
22
- stdio: "inherit-stdout",
23
- });
24
- return result.code;
25
- }
26
- //# sourceMappingURL=log-report.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-report.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/log-report.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;CAWb,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,uBAAuB;QAC/B,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 model-io — render fixed Markdown views of Okstra-owned JSON
3
-
4
- Usage:
5
- okstra model-io project-context --project-root <dir> [--task-ref <task-id|task-key|task-manifest-path>]
6
- okstra model-io run-input --run-manifest <path>
7
- okstra model-io active-context-input --project-root <dir> --run-manifest <path>
8
- okstra model-io schedule-input --project-root <dir> --task-group <id>
9
- okstra model-io code-review-input --project-root <dir> --base <ref> --head <ref>
10
-
11
- Output: purpose-specific Markdown only. This command has no generic JSON path,
12
- key lookup, or JSON-output option.
13
- `;
14
- export async function run(args) {
15
- if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
16
- process.stdout.write(USAGE);
17
- return args.length === 0 ? 2 : 0;
18
- }
19
- const result = await runPythonModule({
20
- module: "okstra_ctl.model_io_cli",
21
- args,
22
- });
23
- return result.code ?? 1;
24
- }
25
- //# sourceMappingURL=model-io.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-io.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/model-io.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;CAWb,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,yBAAyB;QACjC,IAAI;KACL,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AAC1B,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 profile show — print a phase profile, fully resolved
3
-
4
- Usage:
5
- okstra profile show <task-type> [--resolved]
6
-
7
- --resolved expand {{INCLUDE:}} targets and append the lazy-read sidecars
8
-
9
- A profile is assembled from the top-level body, its {{INCLUDE:}} targets, and
10
- the sidecars its own table names — so grepping the top-level file and finding
11
- nothing does not mean the rule is absent. This prints all of it, so one grep
12
- answers "does this task-type cover X".
13
-
14
- Read-only: writes no manifest and registers no run. That is what separates it
15
- from 'okstra render-bundle', which answers the same question with side effects.
16
- `;
17
- export async function run(args) {
18
- if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
19
- process.stdout.write(USAGE);
20
- return args.length === 0 ? 2 : 0;
21
- }
22
- const { code } = await runPythonModule({
23
- module: "okstra_ctl.profile_show",
24
- args,
25
- });
26
- return code ?? 1;
27
- }
28
- //# sourceMappingURL=profile-show.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-show.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/profile-show.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;CAcb,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,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,CAAC;QACrC,MAAM,EAAE,yBAAyB;QACjC,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>;
@@ -1,30 +0,0 @@
1
- import { runPythonModule } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra recap — assemble a task's run-to-run phase recap, append a recap log entry, or write an agent note
3
-
4
- Usage:
5
- okstra recap assemble <task-root|task-key> [--project-root <dir>] [--cwd <dir>]
6
- okstra recap record <task-root|task-key> --kind <summary|qa> --mode <artifact|code> \\
7
- [--question <text>] --answer <text> [--citation <path:line> ...]
8
- okstra recap note <task-root|task-key> \\
9
- --kind <verification-evidence|decision-draft|analysis-note> --slug <topic> \\
10
- --purpose <text> --scope-note <text> (--body <markdown> | --body-file <path>)
11
-
12
- \`assemble\` is read-only and prints a JSON summary of phase transitions across runs.
13
- \`record\` appends one line to <task-root>/recap/recap-log.jsonl; it never mutates
14
- other task artifacts.
15
- \`note\` writes an agent-authored markdown note to <task-root>/notes/ and prints its
16
- path plus the \`--clarification-response\` argument for feeding it into a later run.
17
- `;
18
- export async function run(args) {
19
- if (args.includes("--help") || args.includes("-h")) {
20
- process.stdout.write(USAGE);
21
- return 0;
22
- }
23
- const result = await runPythonModule({
24
- module: "okstra_ctl.recap",
25
- args,
26
- stdio: "inherit-stdout",
27
- });
28
- return result.code;
29
- }
30
- //# sourceMappingURL=recap.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recap.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/recap.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;CAeb,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,kBAAkB;QAC1B,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,24 +0,0 @@
1
- import { runPythonModule } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra resolve-task-key — resolve a bare task-id to catalog task-keys
3
-
4
- Usage:
5
- okstra resolve-task-key <task-id> [--task-group <g>] [--project-root <dir>] [--cwd <dir>] [--json]
6
-
7
- Output: JSON { ok, projectRoot, matches: [ { taskKey, taskGroup, taskId,
8
- taskGroupPathSegment, taskIdPathSegment, taskManifestPath, ... } ] }.
9
- matches.length 0 = not found, 1 = unambiguous, N = ambiguous (caller asks).
10
- This is read-only; it never mutates task state.
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
- const result = await runPythonModule({
18
- module: "okstra_ctl.resolve_task_key",
19
- args,
20
- stdio: "inherit-stdout",
21
- });
22
- return result.code;
23
- }
24
- //# sourceMappingURL=resolve-task-key.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-task-key.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/resolve-task-key.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;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,MAAM,EAAE,6BAA6B;QACrC,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 rollup — roll up run results across a task-group's tasks
3
-
4
- Usage:
5
- okstra rollup [--task-group <group>] [--project-root <dir>] [--cwd <dir>]
6
-
7
- Read-only. Prints a JSON roll-up of every catalog task (optionally scoped to one
8
- task-group): per-task run count, elapsed time (raw ms), error count, and the
9
- latest report path, plus group-level totals and status/category/phase tallies.
10
- With no --task-group it covers the whole project catalog. Time is raw ms; the
11
- caller formats HH:MM:SS and synthesizes the prose digest from the report files.
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.rollup",
20
- args,
21
- stdio: "inherit-stdout",
22
- });
23
- return result.code;
24
- }
25
- //# sourceMappingURL=rollup.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rollup.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/rollup.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,mBAAmB;QAC3B,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 run-audit — check okstra run artifacts against progress invariants
3
-
4
- Usage:
5
- okstra run-audit
6
-
7
- Walks the global run-index and checks each run's artifacts (run-manifest,
8
- final-report data, worker results) against invariants that no error log
9
- would catch: verification rounds that never ran, reports that never
10
- appeared, rosters that came up short, approvals waiting past the window.
11
- Read-only. Prints a JSON summary to stdout.
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.run_audit",
20
- args,
21
- stdio: "inherit-stdout",
22
- });
23
- return result.code;
24
- }
25
- //# sourceMappingURL=run-audit.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-audit.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/run-audit.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;IACD,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,29 +0,0 @@
1
- import { runPythonModule } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra set-work-status — set a task's user-managed workStatus
3
-
4
- Usage:
5
- okstra set-work-status <token> <status> [--note <text>] [--task-group <g>]
6
- [--project-root <dir>] [--cwd <dir>] [--json]
7
-
8
- <token> is a full task-key (<project-id>:<task-group>:<task-id>) or a bare
9
- task-id. <status> is one of: todo | in-progress | blocked | done.
10
-
11
- Updates workStatus + workStatusUpdatedAt in task-manifest.json (workStatusNote
12
- only when --note is passed) using the same JSON serialization as the manifest
13
- renderer. Output: JSON { ok, taskKey, previousWorkStatus, workStatus, ... };
14
- ok:false stages: resolve | catalog | not-found | ambiguous (pick from
15
- matches[]) | manifest-missing | manifest-invalid.
16
- `;
17
- export async function run(args) {
18
- if (args.includes("--help") || args.includes("-h")) {
19
- process.stdout.write(USAGE);
20
- return 0;
21
- }
22
- const result = await runPythonModule({
23
- module: "okstra_ctl.set_work_status",
24
- args,
25
- stdio: "inherit-stdout",
26
- });
27
- return result.code;
28
- }
29
- //# sourceMappingURL=set-work-status.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-work-status.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/set-work-status.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;CAcb,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,4BAA4B;QACpC,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,131 +0,0 @@
1
- import { runPythonSnippet, emitJsonError } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra stage-map — dump a task's implementation-planning Stage Map + done stages
3
-
4
- Usage:
5
- okstra stage-map <task-key> task-key is project-id:task-group:task-id
6
- okstra stage-map <task-key> --cwd <dir> Resolve PROJECT_ROOT from <dir>
7
- okstra stage-map <task-key> --project <dir> Use <dir> directly as PROJECT_ROOT
8
- okstra stage-map <task-key> --text Emit fixed text fields for model use
9
-
10
- Output: default and --json emit JSON { ok, taskKey, taskRoot, state, sourcePlanPath,
11
- stages:[…], doneStages:[int], planning:{…} }; --text emits fixed count/name/value fields.
12
- Each stage row carries stage_number, title, depends_on, step_count and exit_contract_summary; a
13
- schema-v2 report adds that stage's sliceValue, acceptance and exitContract.
14
- planning carries the report's task-level rows — rollbackStrategy, validationChecklist,
15
- crossProjectDependencies, dependencyMigrationRisk, recommendedOption — so a consumer renders the
16
- plan instead of re-summarising the report body. Both are absent for a schema-v1 report.
17
- stages is [] when no implementation-planning Stage Map exists.
18
- `;
19
- function parseArgs(args) {
20
- const opts = { cwd: process.cwd(), projectRoot: "", taskKey: "", text: false };
21
- const positional = [];
22
- for (let i = 0; i < args.length; i++) {
23
- const a = args[i];
24
- if (a === undefined)
25
- continue;
26
- if (a === "--cwd") {
27
- const value = args[++i];
28
- opts.cwd = value ?? "";
29
- if (!opts.cwd)
30
- throw new Error("--cwd requires a path");
31
- }
32
- else if (a === "--project") {
33
- const value = args[++i];
34
- opts.projectRoot = value ?? "";
35
- if (!opts.projectRoot)
36
- throw new Error("--project requires a path");
37
- }
38
- else if (a === "--json") {
39
- // JSON is always emitted; accept the flag for parity with sibling commands.
40
- }
41
- else if (a === "--text") {
42
- opts.text = true;
43
- }
44
- else if (a.startsWith("--")) {
45
- throw new Error(`unknown argument '${a}'`);
46
- }
47
- else {
48
- positional.push(a);
49
- }
50
- }
51
- if (positional.length !== 1) {
52
- throw new Error("expected exactly one positional argument: <task-key>");
53
- }
54
- const taskKey = positional[0];
55
- if (taskKey === undefined)
56
- throw new Error("expected exactly one positional argument: <task-key>");
57
- opts.taskKey = taskKey;
58
- return opts;
59
- }
60
- const SCRIPT = `
61
- import json, sys
62
- from pathlib import Path
63
- from okstra_project import (
64
- resolve_project_root, stage_map_read_side_snapshot, ResolverError, StateError,
65
- )
66
- from okstra_ctl.stage_map import render_stage_map_text
67
-
68
- explicit, cwd, task_key, output_mode = sys.argv[1:5]
69
-
70
- def emit(payload):
71
- print(render_stage_map_text(payload) if output_mode == "text" else json.dumps(
72
- payload, ensure_ascii=False, indent=2
73
- ))
74
-
75
- try:
76
- pr = resolve_project_root(explicit_root=explicit, cwd=cwd)
77
- except ResolverError as e:
78
- emit({"ok": False, "stage": "resolve", "reason": str(e)})
79
- sys.exit(2)
80
-
81
- try:
82
- snapshot = stage_map_read_side_snapshot(Path(pr), task_key)
83
- except StateError as e:
84
- emit({
85
- "ok": False,
86
- "stage": getattr(e, "stage", None) or "stage_map",
87
- "reason": str(e),
88
- })
89
- sys.exit(1)
90
-
91
- emit({"ok": True, **snapshot})
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.projectRoot, opts.cwd, opts.taskKey, opts.text ? "text" : "json"],
110
- });
111
- if (result.code !== 0 && !result.stdout.trim()) {
112
- if (opts.text) {
113
- const reason = result.code === -1
114
- ? "Python runtime could not be started"
115
- : "Python invocation failed";
116
- process.stdout.write("Okstra stage map\n"
117
- + "- Status: `error`\n"
118
- + "- Failure stage: `python`\n"
119
- + `- Failure reason: \`${reason}\`\n`);
120
- return 1;
121
- }
122
- emitJsonError({
123
- stage: "python",
124
- reason: `python invocation failed: ${result.stderr.trim() || "no output"}`,
125
- });
126
- return 1;
127
- }
128
- process.stdout.write(result.stdout);
129
- return result.code === 0 ? 0 : result.code;
130
- }
131
- //# sourceMappingURL=stage-map.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stage-map.mjs","sourceRoot":"","sources":["../../../src/commands/inspect/stage-map.mts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function run(args: readonly string[]): Promise<number>;
@@ -1,149 +0,0 @@
1
- import { runPythonSnippet, emitJsonError } from "../../lib/python-helper.mjs";
2
- const USAGE = `okstra task-list — list okstra tasks registered in this project
3
-
4
- Usage:
5
- okstra task-list Resolve PROJECT_ROOT from cwd, list tasks
6
- okstra task-list --cwd <dir> Start resolution from <dir> instead of cwd
7
- okstra task-list --project <dir> Use <dir> directly as PROJECT_ROOT
8
- okstra task-list --task-type <type> Filter by taskType
9
- okstra task-list --latest-run-status <s> Filter by latestRunStatus
10
- okstra task-list --task-group <group> Filter by taskGroup
11
- okstra task-list --limit <N> Keep the first N (catalog is updatedAt desc)
12
- okstra task-list --text Emit fixed task identity fields for model use
13
-
14
- Output: default emits JSON { ok, projectRoot, tasks: [...], latest: {...}|null }.
15
- --text emits fixed task key/type/group/title/latest-status/updated fields.
16
- Filters are AND-combined and all optional.
17
-
18
- Replaces the common pattern of loading okstra_project and calling
19
- list_project_tasks + read_latest_task from a python heredoc.
20
- `;
21
- function parseArgs(args) {
22
- const opts = {
23
- cwd: process.cwd(), projectRoot: "", taskType: "", latestRunStatus: "",
24
- taskGroup: "", limit: "", text: false,
25
- };
26
- const valued = {
27
- "--cwd": "cwd", "--project": "projectRoot", "--task-type": "taskType",
28
- "--latest-run-status": "latestRunStatus", "--task-group": "taskGroup", "--limit": "limit",
29
- };
30
- for (let i = 0; i < args.length; i++) {
31
- const a = args[i];
32
- if (a === undefined)
33
- continue;
34
- if (a === "--text") {
35
- opts.text = true;
36
- continue;
37
- }
38
- if (!isValuedFlag(a))
39
- throw new Error(`unknown argument '${a}'`);
40
- const key = valued[a];
41
- if (!key)
42
- throw new Error(`unknown argument '${a}'`);
43
- const v = args[++i];
44
- if (v === undefined || v === "")
45
- throw new Error(`${a} requires a value`);
46
- opts[key] = v;
47
- }
48
- return opts;
49
- }
50
- function isValuedFlag(value) {
51
- return value === "--cwd" || value === "--project" || value === "--task-type" ||
52
- value === "--latest-run-status" || value === "--task-group" || value === "--limit";
53
- }
54
- const SCRIPT = `
55
- import json, sys
56
- from pathlib import Path
57
- from okstra_ctl.fixed_text import line
58
- from okstra_project import (
59
- list_project_tasks, read_latest_task,
60
- resolve_project_root, ResolverError,
61
- )
62
-
63
- explicit = sys.argv[1]
64
- cwd = sys.argv[2]
65
- task_type = sys.argv[3] or None
66
- latest_run_status = sys.argv[4] or None
67
- task_group = sys.argv[5] or None
68
- limit = int(sys.argv[6]) if sys.argv[6] else None
69
- output_mode = sys.argv[7]
70
- try:
71
- pr = resolve_project_root(explicit_root=explicit, cwd=cwd)
72
- except ResolverError as e:
73
- if output_mode == "text":
74
- print(
75
- "Okstra task list\\n"
76
- + line("Status", "error")
77
- + line("Failure stage", "resolve")
78
- + line("Failure reason", str(e)),
79
- end="",
80
- )
81
- else:
82
- print(json.dumps({"ok": False, "stage": "resolve", "reason": str(e)}))
83
- sys.exit(2)
84
-
85
- pr_path = Path(pr)
86
- payload = {
87
- "ok": True,
88
- "projectRoot": str(pr_path),
89
- "tasks": list_project_tasks(
90
- pr_path, task_type=task_type, latest_run_status=latest_run_status,
91
- task_group=task_group, limit=limit),
92
- "latest": read_latest_task(pr_path),
93
- }
94
- if output_mode == "text":
95
- parts = ["# Okstra Task List\\n\\n", line("Task count", len(payload["tasks"]))]
96
- for task in payload["tasks"]:
97
- parts.extend((
98
- "\\n## Task\\n\\n",
99
- line("Task key", task.get("taskKey")),
100
- line("Task type", task.get("taskType")),
101
- line("Task group", task.get("taskGroup")),
102
- line("Title", task.get("title") or task.get("taskTitle")),
103
- line("Latest run status", task.get("latestRunStatus")),
104
- line("Updated at", task.get("updatedAt")),
105
- ))
106
- print("".join(parts), end="")
107
- else:
108
- print(json.dumps(payload, default=str))
109
- `;
110
- export async function run(args) {
111
- if (args.includes("--help") || args.includes("-h")) {
112
- process.stdout.write(USAGE);
113
- return 0;
114
- }
115
- let opts;
116
- try {
117
- opts = parseArgs(args);
118
- }
119
- catch (err) {
120
- const message = err instanceof Error ? err.message : String(err);
121
- process.stderr.write(`error: ${message}\n\n${USAGE}`);
122
- return 2;
123
- }
124
- const result = await runPythonSnippet({
125
- script: SCRIPT,
126
- args: [opts.projectRoot, opts.cwd, opts.taskType, opts.latestRunStatus,
127
- opts.taskGroup, opts.limit, opts.text ? "text" : "json"],
128
- });
129
- if (result.code !== 0 && !result.stdout.trim()) {
130
- if (opts.text) {
131
- const reason = result.code === -1
132
- ? "Python runtime could not be started"
133
- : "Python invocation failed";
134
- process.stdout.write("Okstra task list\n"
135
- + "- Status: `error`\n"
136
- + "- Failure stage: `python`\n"
137
- + `- Failure reason: \`${reason}\`\n`);
138
- return 1;
139
- }
140
- emitJsonError({
141
- stage: "python",
142
- reason: `python invocation failed: ${result.stderr.trim() || "no output"}`,
143
- });
144
- return 1;
145
- }
146
- process.stdout.write(result.stdout);
147
- return result.code === 0 ? 0 : result.code;
148
- }
149
- //# sourceMappingURL=task-list.mjs.map