prizmkit 1.1.99 → 1.1.101

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 (321) hide show
  1. package/bin/create-prizmkit.js +4 -4
  2. package/bundled/VERSION.json +3 -3
  3. package/bundled/dev-pipeline/.env.example +3 -3
  4. package/bundled/dev-pipeline/README.md +110 -90
  5. package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
  6. package/bundled/dev-pipeline/cli.py +27 -0
  7. package/bundled/dev-pipeline/prizmkit_runtime/__init__.py +13 -0
  8. package/bundled/dev-pipeline/prizmkit_runtime/__main__.py +9 -0
  9. package/bundled/dev-pipeline/prizmkit_runtime/cli.py +193 -0
  10. package/bundled/dev-pipeline/prizmkit_runtime/commands.py +313 -0
  11. package/bundled/dev-pipeline/prizmkit_runtime/compat.py +32 -0
  12. package/bundled/dev-pipeline/prizmkit_runtime/config.py +410 -0
  13. package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +478 -0
  14. package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +734 -0
  15. package/bundled/dev-pipeline/prizmkit_runtime/heartbeat.py +256 -0
  16. package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +109 -0
  17. package/bundled/dev-pipeline/prizmkit_runtime/paths.py +110 -0
  18. package/bundled/dev-pipeline/prizmkit_runtime/processes.py +373 -0
  19. package/bundled/dev-pipeline/prizmkit_runtime/reset.py +389 -0
  20. package/bundled/dev-pipeline/prizmkit_runtime/runner_bookkeeping.py +51 -0
  21. package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +179 -0
  22. package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +345 -0
  23. package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +118 -0
  24. package/bundled/dev-pipeline/prizmkit_runtime/runner_recovery.py +187 -0
  25. package/bundled/dev-pipeline/prizmkit_runtime/runner_status.py +147 -0
  26. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +422 -0
  27. package/bundled/dev-pipeline/prizmkit_runtime/sessions.py +552 -0
  28. package/bundled/dev-pipeline/prizmkit_runtime/status.py +71 -0
  29. package/bundled/dev-pipeline/scripts/check-session-status.py +74 -1
  30. package/bundled/dev-pipeline/scripts/continuation.py +374 -0
  31. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +64 -52
  32. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +35 -25
  33. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +2 -2
  34. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +15 -20
  35. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +185 -16
  36. package/bundled/dev-pipeline/scripts/update-bug-status.py +214 -6
  37. package/bundled/dev-pipeline/scripts/update-feature-status.py +237 -6
  38. package/bundled/dev-pipeline/scripts/update-refactor-status.py +214 -6
  39. package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +8 -2
  40. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +4 -0
  41. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +14 -5
  42. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +16 -6
  43. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +16 -6
  44. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +1 -1
  45. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +3 -3
  46. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +2 -0
  47. package/bundled/dev-pipeline/templates/sections/log-size-awareness.md +13 -69
  48. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +15 -7
  49. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +42 -29
  50. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +41 -39
  51. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +4 -0
  52. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +4 -0
  53. package/bundled/dev-pipeline/templates/session-status-schema.json +1 -1
  54. package/bundled/dev-pipeline/tests/conftest.py +1 -0
  55. package/bundled/dev-pipeline/tests/test_auto_skip.py +932 -0
  56. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +207 -0
  57. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +100 -0
  58. package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +43 -0
  59. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +1138 -0
  60. package/bundled/dev-pipeline/tests/test_unified_cli.py +1045 -0
  61. package/bundled/skills/_metadata.json +1 -1
  62. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +29 -34
  63. package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +6 -5
  64. package/bundled/skills/feature-pipeline-launcher/SKILL.md +29 -35
  65. package/bundled/skills/feature-pipeline-launcher/references/configuration.md +7 -6
  66. package/bundled/skills/feature-workflow/SKILL.md +3 -6
  67. package/bundled/skills/recovery-workflow/SKILL.md +23 -32
  68. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +29 -35
  69. package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +7 -6
  70. package/bundled/skills/refactor-workflow/SKILL.md +3 -6
  71. package/bundled/templates/hooks/commit-intent.json +2 -2
  72. package/bundled/templates/hooks/diff-prizm-docs.py +226 -0
  73. package/bundled/templates/hooks/prizm-pre-commit.py +45 -0
  74. package/bundled/templates/hooks/validate-prizm-docs.py +240 -0
  75. package/package.json +1 -1
  76. package/src/config.js +33 -12
  77. package/src/index.js +3 -6
  78. package/src/manifest.js +3 -2
  79. package/src/metadata.js +7 -18
  80. package/src/prompts.js +0 -12
  81. package/src/runtimes.js +18 -11
  82. package/src/scaffold.js +133 -116
  83. package/src/upgrade.js +1 -1
  84. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +0 -500
  85. package/bundled/dev-pipeline/launch-feature-daemon.sh +0 -657
  86. package/bundled/dev-pipeline/launch-refactor-daemon.sh +0 -502
  87. package/bundled/dev-pipeline/lib/branch.sh +0 -326
  88. package/bundled/dev-pipeline/lib/common.sh +0 -1257
  89. package/bundled/dev-pipeline/lib/heartbeat.sh +0 -469
  90. package/bundled/dev-pipeline/reset-bug.sh +0 -395
  91. package/bundled/dev-pipeline/reset-feature.sh +0 -406
  92. package/bundled/dev-pipeline/reset-refactor.sh +0 -393
  93. package/bundled/dev-pipeline/run-bugfix.sh +0 -1315
  94. package/bundled/dev-pipeline/run-feature.sh +0 -1602
  95. package/bundled/dev-pipeline/run-recovery.sh +0 -648
  96. package/bundled/dev-pipeline/run-refactor.sh +0 -1348
  97. package/bundled/dev-pipeline/scripts/monitor-log.sh +0 -104
  98. package/bundled/dev-pipeline/tests/test-path-resolution.sh +0 -100
  99. package/bundled/dev-pipeline-windows/.env.example +0 -36
  100. package/bundled/dev-pipeline-windows/README.md +0 -30
  101. package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +0 -533
  102. package/bundled/dev-pipeline-windows/assets/feature-list-example.json +0 -146
  103. package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +0 -137
  104. package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +0 -9
  105. package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +0 -9
  106. package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +0 -9
  107. package/bundled/dev-pipeline-windows/lib/branch.ps1 +0 -235
  108. package/bundled/dev-pipeline-windows/lib/common.ps1 +0 -829
  109. package/bundled/dev-pipeline-windows/lib/daemon.ps1 +0 -140
  110. package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +0 -967
  111. package/bundled/dev-pipeline-windows/lib/reset.ps1 +0 -87
  112. package/bundled/dev-pipeline-windows/reset-bug.ps1 +0 -9
  113. package/bundled/dev-pipeline-windows/reset-feature.ps1 +0 -9
  114. package/bundled/dev-pipeline-windows/reset-refactor.ps1 +0 -9
  115. package/bundled/dev-pipeline-windows/run-bugfix.ps1 +0 -9
  116. package/bundled/dev-pipeline-windows/run-feature.ps1 +0 -9
  117. package/bundled/dev-pipeline-windows/run-recovery.ps1 +0 -179
  118. package/bundled/dev-pipeline-windows/run-refactor.ps1 +0 -9
  119. package/bundled/dev-pipeline-windows/scripts/check-session-status.py +0 -228
  120. package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +0 -530
  121. package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +0 -2282
  122. package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +0 -767
  123. package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +0 -805
  124. package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +0 -845
  125. package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +0 -316
  126. package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +0 -134
  127. package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +0 -382
  128. package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +0 -399
  129. package/bundled/dev-pipeline-windows/scripts/monitor-log.ps1 +0 -102
  130. package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +0 -1232
  131. package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +0 -191
  132. package/bundled/dev-pipeline-windows/scripts/prizmkit-test-gate.py +0 -446
  133. package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +0 -913
  134. package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +0 -173
  135. package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +0 -1558
  136. package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +0 -1119
  137. package/bundled/dev-pipeline-windows/scripts/utils.py +0 -542
  138. package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +0 -7
  139. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +0 -7
  140. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +0 -65
  141. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +0 -5
  142. package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +0 -7
  143. package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +0 -73
  144. package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +0 -589
  145. package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +0 -710
  146. package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +0 -791
  147. package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +0 -263
  148. package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +0 -326
  149. package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +0 -237
  150. package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +0 -340
  151. package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +0 -270
  152. package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +0 -7
  153. package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +0 -91
  154. package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +0 -34
  155. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +0 -10
  156. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +0 -12
  157. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +0 -7
  158. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +0 -8
  159. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +0 -9
  160. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +0 -6
  161. package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +0 -21
  162. package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +0 -21
  163. package/bundled/dev-pipeline-windows/templates/sections/log-size-awareness.md +0 -78
  164. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +0 -283
  165. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +0 -112
  166. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +0 -168
  167. package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +0 -82
  168. package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +0 -75
  169. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +0 -23
  170. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +0 -14
  171. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +0 -19
  172. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +0 -63
  173. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +0 -42
  174. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +0 -44
  175. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +0 -59
  176. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +0 -39
  177. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +0 -27
  178. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +0 -27
  179. package/bundled/dev-pipeline-windows/templates/sections/phase-prizmkit-test.md +0 -39
  180. package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +0 -35
  181. package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +0 -35
  182. package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +0 -73
  183. package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +0 -13
  184. package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +0 -21
  185. package/bundled/dev-pipeline-windows/templates/sections/session-context.md +0 -5
  186. package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +0 -6
  187. package/bundled/dev-pipeline-windows/templates/sections/task-contract.md +0 -34
  188. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +0 -48
  189. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +0 -48
  190. package/bundled/dev-pipeline-windows/templates/session-status-schema.json +0 -83
  191. package/bundled/skills-windows/app-planner/SKILL.md +0 -296
  192. package/bundled/skills-windows/app-planner/assets/app-design-guide.md +0 -101
  193. package/bundled/skills-windows/app-planner/references/architecture-decisions.md +0 -52
  194. package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +0 -101
  195. package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +0 -71
  196. package/bundled/skills-windows/app-planner/references/infrastructure-convention-discovery.md +0 -108
  197. package/bundled/skills-windows/app-planner/references/project-brief-guide.md +0 -82
  198. package/bundled/skills-windows/app-planner/references/project-conventions-discovery.md +0 -59
  199. package/bundled/skills-windows/app-planner/references/project-state-detection.md +0 -90
  200. package/bundled/skills-windows/app-planner/references/red-team-checklist.md +0 -40
  201. package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +0 -619
  202. package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +0 -285
  203. package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +0 -249
  204. package/bundled/skills-windows/app-planner/references/rules/backend/question-manifest.json +0 -46
  205. package/bundled/skills-windows/app-planner/references/rules/backend/template.md +0 -173
  206. package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +0 -382
  207. package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +0 -211
  208. package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +0 -184
  209. package/bundled/skills-windows/app-planner/references/rules/database/question-manifest.json +0 -39
  210. package/bundled/skills-windows/app-planner/references/rules/database/template.md +0 -158
  211. package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +0 -820
  212. package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +0 -188
  213. package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +0 -319
  214. package/bundled/skills-windows/app-planner/references/rules/frontend/question-manifest.json +0 -51
  215. package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +0 -339
  216. package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +0 -649
  217. package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +0 -290
  218. package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +0 -232
  219. package/bundled/skills-windows/app-planner/references/rules/mobile/question-manifest.json +0 -47
  220. package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +0 -175
  221. package/bundled/skills-windows/app-planner/references/rules-configuration.md +0 -46
  222. package/bundled/skills-windows/bug-fix-workflow/SKILL.md +0 -379
  223. package/bundled/skills-windows/bug-fix-workflow/references/bug-diagnosis.md +0 -41
  224. package/bundled/skills-windows/bug-planner/SKILL.md +0 -402
  225. package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +0 -43
  226. package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +0 -44
  227. package/bundled/skills-windows/bug-planner/references/error-recovery.md +0 -73
  228. package/bundled/skills-windows/bug-planner/references/input-formats.md +0 -53
  229. package/bundled/skills-windows/bug-planner/references/schema-validation.md +0 -25
  230. package/bundled/skills-windows/bug-planner/references/severity-rules.md +0 -16
  231. package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +0 -322
  232. package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +0 -304
  233. package/bundled/skills-windows/bugfix-pipeline-launcher/references/configuration.md +0 -84
  234. package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +0 -381
  235. package/bundled/skills-windows/feature-pipeline-launcher/references/configuration.md +0 -67
  236. package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +0 -462
  237. package/bundled/skills-windows/feature-planner/SKILL.md +0 -397
  238. package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +0 -64
  239. package/bundled/skills-windows/feature-planner/assets/planning-guide.md +0 -214
  240. package/bundled/skills-windows/feature-planner/references/browser-interaction.md +0 -59
  241. package/bundled/skills-windows/feature-planner/references/completeness-review.md +0 -57
  242. package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +0 -75
  243. package/bundled/skills-windows/feature-planner/references/error-recovery.md +0 -90
  244. package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +0 -112
  245. package/bundled/skills-windows/feature-planner/references/new-project-planning.md +0 -85
  246. package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +0 -1020
  247. package/bundled/skills-windows/feature-workflow/SKILL.md +0 -374
  248. package/bundled/skills-windows/feature-workflow/references/brainstorm-guide.md +0 -137
  249. package/bundled/skills-windows/prizm-kit/SKILL.md +0 -93
  250. package/bundled/skills-windows/prizmkit-code-review/SKILL.md +0 -161
  251. package/bundled/skills-windows/prizmkit-code-review/references/dev-agent-prompt.md +0 -30
  252. package/bundled/skills-windows/prizmkit-code-review/references/review-report-template.md +0 -31
  253. package/bundled/skills-windows/prizmkit-code-review/references/reviewer-agent-prompt.md +0 -66
  254. package/bundled/skills-windows/prizmkit-code-review/scripts/check_loop.py +0 -186
  255. package/bundled/skills-windows/prizmkit-committer/SKILL.md +0 -89
  256. package/bundled/skills-windows/prizmkit-deploy/SKILL.md +0 -444
  257. package/bundled/skills-windows/prizmkit-deploy/references/ci-cd-workflows.md +0 -115
  258. package/bundled/skills-windows/prizmkit-deploy/references/cloud-platform-deploy.md +0 -93
  259. package/bundled/skills-windows/prizmkit-deploy/references/data-safety-examples.md +0 -120
  260. package/bundled/skills-windows/prizmkit-deploy/references/database-setup.md +0 -46
  261. package/bundled/skills-windows/prizmkit-deploy/references/deploy-config-schema.md +0 -148
  262. package/bundled/skills-windows/prizmkit-deploy/references/deploy-history-schema.md +0 -62
  263. package/bundled/skills-windows/prizmkit-deploy/references/deployment-modes.md +0 -50
  264. package/bundled/skills-windows/prizmkit-deploy/references/direct-upload.md +0 -26
  265. package/bundled/skills-windows/prizmkit-deploy/references/dns-setup.md +0 -42
  266. package/bundled/skills-windows/prizmkit-deploy/references/docker-deploy.md +0 -31
  267. package/bundled/skills-windows/prizmkit-deploy/references/firewall-setup.md +0 -37
  268. package/bundled/skills-windows/prizmkit-deploy/references/live-validation-notes.md +0 -21
  269. package/bundled/skills-windows/prizmkit-deploy/references/nginx-blue-green.md +0 -59
  270. package/bundled/skills-windows/prizmkit-deploy/references/ssh-bootstrap-flow.md +0 -49
  271. package/bundled/skills-windows/prizmkit-deploy/references/ssh-execution-flow.md +0 -41
  272. package/bundled/skills-windows/prizmkit-deploy/references/ssh-takeover.md +0 -20
  273. package/bundled/skills-windows/prizmkit-deploy/references/ssl-setup.md +0 -56
  274. package/bundled/skills-windows/prizmkit-implement/SKILL.md +0 -71
  275. package/bundled/skills-windows/prizmkit-init/SKILL.md +0 -356
  276. package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +0 -82
  277. package/bundled/skills-windows/prizmkit-init/references/config-schema.md +0 -70
  278. package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +0 -41
  279. package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +0 -13
  280. package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +0 -9
  281. package/bundled/skills-windows/prizmkit-plan/SKILL.md +0 -102
  282. package/bundled/skills-windows/prizmkit-plan/assets/plan-template.md +0 -115
  283. package/bundled/skills-windows/prizmkit-plan/assets/spec-template.md +0 -73
  284. package/bundled/skills-windows/prizmkit-plan/references/clarify-guide.md +0 -67
  285. package/bundled/skills-windows/prizmkit-plan/references/examples.md +0 -85
  286. package/bundled/skills-windows/prizmkit-plan/references/verification-checklist.md +0 -60
  287. package/bundled/skills-windows/prizmkit-prizm-docs/SKILL.md +0 -129
  288. package/bundled/skills-windows/prizmkit-prizm-docs/assets/prizm-docs-format.md +0 -613
  289. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-init.md +0 -45
  290. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-rebuild.md +0 -15
  291. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-status.md +0 -14
  292. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-update.md +0 -19
  293. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-validate.md +0 -17
  294. package/bundled/skills-windows/prizmkit-retrospective/SKILL.md +0 -87
  295. package/bundled/skills-windows/prizmkit-retrospective/references/knowledge-injection-steps.md +0 -50
  296. package/bundled/skills-windows/prizmkit-retrospective/references/structural-sync-steps.md +0 -43
  297. package/bundled/skills-windows/prizmkit-test/SKILL.md +0 -227
  298. package/bundled/skills-windows/prizmkit-test/references/boundary-coverage-protocol.md +0 -220
  299. package/bundled/skills-windows/prizmkit-test/references/examples.md +0 -143
  300. package/bundled/skills-windows/prizmkit-test/references/service-boundary-test-catalog.md +0 -225
  301. package/bundled/skills-windows/prizmkit-test/references/test-generation-steps.md +0 -109
  302. package/bundled/skills-windows/prizmkit-test/references/test-report-template.md +0 -111
  303. package/bundled/skills-windows/prizmkit-test/scripts/validate_boundary_report.py +0 -347
  304. package/bundled/skills-windows/recovery-workflow/SKILL.md +0 -355
  305. package/bundled/skills-windows/recovery-workflow/evals/evals.json +0 -46
  306. package/bundled/skills-windows/recovery-workflow/references/detection.md +0 -58
  307. package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +0 -544
  308. package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +0 -346
  309. package/bundled/skills-windows/refactor-pipeline-launcher/references/configuration.md +0 -72
  310. package/bundled/skills-windows/refactor-planner/SKILL.md +0 -398
  311. package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +0 -292
  312. package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +0 -301
  313. package/bundled/skills-windows/refactor-planner/references/fast-path.md +0 -59
  314. package/bundled/skills-windows/refactor-planner/references/planning-phases.md +0 -135
  315. package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +0 -221
  316. package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +0 -858
  317. package/bundled/skills-windows/refactor-workflow/SKILL.md +0 -343
  318. package/bundled/skills-windows/refactor-workflow/references/brainstorm-guide.md +0 -116
  319. package/bundled/templates/hooks/diff-prizm-docs.sh +0 -158
  320. package/bundled/templates/hooks/prizm-pre-commit.sh +0 -108
  321. package/bundled/templates/hooks/validate-prizm-docs.sh +0 -139
@@ -1,87 +0,0 @@
1
- . "$PSScriptRoot\common.ps1"
2
-
3
- function Get-PrizmFeatureSlug {
4
- param([string]$ListPath, [string]$FeatureId)
5
- $data = Get-Content $ListPath -Raw | ConvertFrom-Json
6
- $feature = $data.features | Where-Object { $_.id -eq $FeatureId } | Select-Object -First 1
7
- if (-not $feature) { throw "Feature not found in list: $FeatureId" }
8
- $numeric = ($FeatureId -replace '^[Ff]-', '').PadLeft(3, '0')
9
- $slug = ([string]$feature.title).ToLowerInvariant()
10
- $slug = $slug -replace '[^a-z0-9\s-]', ''
11
- $slug = ($slug.Trim() -replace '\s+', '-')
12
- $slug = ($slug -replace '-+', '-').Trim('-')
13
- if (-not $slug) { $slug = 'feature' }
14
- return "$numeric-$slug"
15
- }
16
-
17
- function Invoke-PrizmReset {
18
- param(
19
- [ValidateSet('feature','bugfix','refactor')][string]$Kind,
20
- [string]$ScriptRoot,
21
- [string[]]$Args
22
- )
23
-
24
- $global:PRIZM_RESET_EXIT_CODE = 0
25
- $paths = Initialize-PrizmPaths $ScriptRoot
26
- Set-Location $paths.ProjectRoot
27
- $python = Resolve-PrizmPython
28
-
29
- $idOption = @{ feature = '--feature-id'; bugfix = '--bug-id'; refactor = '--refactor-id' }[$Kind]
30
- $listOption = @{ feature = '--feature-list'; bugfix = '--bug-list'; refactor = '--refactor-list' }[$Kind]
31
- $updateScript = @{ feature = 'update-feature-status.py'; bugfix = 'update-bug-status.py'; refactor = 'update-refactor-status.py' }[$Kind]
32
- $runScript = @{ feature = 'run-feature.ps1'; bugfix = 'run-bugfix.ps1'; refactor = 'run-refactor.ps1' }[$Kind]
33
- $idPattern = @{ feature = '^[Ff]-\d+'; bugfix = '^[Bb]-\d+'; refactor = '^[Rr]-\d+' }[$Kind]
34
- $label = @{ feature = 'feature'; bugfix = 'bug'; refactor = 'refactor' }[$Kind]
35
- $listPath = Get-PrizmListDefault $Kind $paths.ProjectRoot
36
- $stateDir = Get-PrizmStateDir $Kind $paths.ProjectRoot
37
- $itemId = $null
38
- $clean = $false
39
- $runAfterReset = $false
40
-
41
- foreach ($arg in $Args) {
42
- switch -Regex ($arg) {
43
- '^--clean$' { $clean = $true; continue }
44
- '^--run$' { $runAfterReset = $true; continue }
45
- '^(--help|-h)$' {
46
- Write-Host "Usage: .\reset-$label.ps1 [$($label)-id] [--clean] [--run] [list-path]"
47
- Write-Host " No ID clears the whole $Kind pipeline state."
48
- Write-Host " With an ID, reset only that item. --clean removes item artifacts. --run retries it immediately."
49
- return
50
- }
51
- '^-.*' { Write-PrizmWarn "Ignoring unsupported option: $arg"; continue }
52
- default {
53
- if (-not $itemId -and $arg -match $idPattern) {
54
- $itemId = $arg.ToUpperInvariant()
55
- } else {
56
- $listPath = $arg
57
- }
58
- }
59
- }
60
- }
61
-
62
- if (-not $itemId) {
63
- & (Join-Path $paths.PipelineDir $runScript) reset
64
- $global:PRIZM_RESET_EXIT_CODE = $LASTEXITCODE
65
- return
66
- }
67
-
68
- if (-not (Test-Path $listPath)) { throw "List file not found: $listPath" }
69
- New-Item -ItemType Directory -Force -Path $stateDir | Out-Null
70
-
71
- $action = if ($clean) { 'clean' } else { 'reset' }
72
- $resetArgs = @((Join-Path $paths.ScriptsDir $updateScript), $listOption, $listPath, '--state-dir', $stateDir, '--action', $action, $idOption, $itemId)
73
- if ($clean) {
74
- $resetArgs += @('--project-root', $paths.ProjectRoot)
75
- if ($Kind -eq 'feature') {
76
- $resetArgs += @('--feature-slug', (Get-PrizmFeatureSlug $listPath $itemId))
77
- }
78
- }
79
-
80
- Invoke-PrizmPythonText $python $resetArgs
81
- Write-PrizmSuccess "Reset $label item: $itemId"
82
-
83
- if ($runAfterReset) {
84
- & (Join-Path $paths.PipelineDir $runScript) run $itemId $listPath
85
- $global:PRIZM_RESET_EXIT_CODE = $LASTEXITCODE
86
- }
87
- }
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\reset.ps1"
3
- try {
4
- Invoke-PrizmReset -Kind bugfix -ScriptRoot $PSScriptRoot -Args $args
5
- exit $global:PRIZM_RESET_EXIT_CODE
6
- } catch {
7
- Write-PrizmError $_.Exception.Message
8
- exit 1
9
- }
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\reset.ps1"
3
- try {
4
- Invoke-PrizmReset -Kind feature -ScriptRoot $PSScriptRoot -Args $args
5
- exit $global:PRIZM_RESET_EXIT_CODE
6
- } catch {
7
- Write-PrizmError $_.Exception.Message
8
- exit 1
9
- }
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\reset.ps1"
3
- try {
4
- Invoke-PrizmReset -Kind refactor -ScriptRoot $PSScriptRoot -Args $args
5
- exit $global:PRIZM_RESET_EXIT_CODE
6
- } catch {
7
- Write-PrizmError $_.Exception.Message
8
- exit 1
9
- }
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\pipeline.ps1"
3
- try {
4
- Invoke-PrizmPipeline -Kind bugfix -ScriptRoot $PSScriptRoot -Args $args
5
- exit $global:PRIZM_EXIT_CODE
6
- } catch {
7
- Write-PrizmError $_.Exception.Message
8
- exit 1
9
- }
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\pipeline.ps1"
3
- try {
4
- Invoke-PrizmPipeline -Kind feature -ScriptRoot $PSScriptRoot -Args $args
5
- exit $global:PRIZM_EXIT_CODE
6
- } catch {
7
- Write-PrizmError $_.Exception.Message
8
- exit 1
9
- }
@@ -1,179 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\common.ps1"
3
- $paths = Initialize-PrizmPaths $PSScriptRoot
4
- Import-PrizmEnv (Join-Path $paths.PrizmkitDir '.env')
5
- Set-Location $paths.ProjectRoot
6
- $python = Resolve-PrizmPython
7
-
8
- $command = if ($args.Count -gt 0 -and $args[0] -in @('run','detect','help','--help','-h')) { $args[0] } else { 'run' }
9
- $remaining = if ($args.Count -gt 0 -and $args[0] -in @('run','detect','help','--help','-h')) {
10
- if ($args.Count -gt 1) { $args[1..($args.Count - 1)] } else { @() }
11
- } else {
12
- $args
13
- }
14
-
15
- if ($command -in @('help','--help','-h')) {
16
- Write-Host 'Usage: .\run-recovery.ps1 [run|detect] [--dry-run] [--yes] [--model <model>]'
17
- Write-Host ' run Auto-detect interrupted workflow and start a recovery AI session'
18
- Write-Host ' detect Print detection report only'
19
- Write-Host ' --dry-run Generate and print the recovery prompt without starting AI'
20
- Write-Host ' --yes Accepted for scripted use; no confirmation prompt is shown'
21
- Write-Host ' --model Override MODEL for this recovery session'
22
- Write-Host ''
23
- Write-Host 'Environment Variables:'
24
- Write-Host ' PRIZMKIT_EFFORT AI reasoning effort (low|medium|high|xhigh|max; max is Claude Code only)'
25
- Write-Host ''
26
- Write-Host 'Examples:'
27
- Write-Host ' .\run-recovery.ps1 # Auto-detect and recover'
28
- Write-Host ' .\run-recovery.ps1 detect # Show what would be recovered'
29
- Write-Host ' .\run-recovery.ps1 run --dry-run # Generate prompt, don''t execute'
30
- Write-Host ' .\run-recovery.ps1 run --yes # Skip confirmation prompt'
31
- Write-Host ' $env:PRIZMKIT_EFFORT=''high''; .\run-recovery.ps1 # Use high reasoning effort'
32
- exit 0
33
- }
34
-
35
- $dryRun = $false
36
- $model = $env:MODEL
37
- for ($i = 0; $i -lt $remaining.Count; $i++) {
38
- $arg = $remaining[$i]
39
- switch -Regex ($arg) {
40
- '^--dry-run$' { $dryRun = $true; continue }
41
- '^--yes$' { continue }
42
- '^--model$' {
43
- if ($i + 1 -ge $remaining.Count) { Write-PrizmError '--model requires a value'; exit 1 }
44
- $i++
45
- $model = $remaining[$i]
46
- continue
47
- }
48
- default {
49
- Write-PrizmWarn "Ignoring unsupported recovery option: $arg"
50
- }
51
- }
52
- }
53
-
54
- function Get-PrizmRecoveryIntEnv {
55
- param([string]$Name, [int]$DefaultValue, [int]$MinimumValue = 0)
56
- $value = [Environment]::GetEnvironmentVariable($Name, 'Process')
57
- if (-not $value) { return $DefaultValue }
58
- $parsed = 0
59
- if (-not [int]::TryParse($value, [ref]$parsed) -or $parsed -lt $MinimumValue) {
60
- throw "$Name must be an integer >= $MinimumValue`: $value"
61
- }
62
- return $parsed
63
- }
64
-
65
- $heartbeatInterval = Get-PrizmRecoveryIntEnv 'HEARTBEAT_INTERVAL' 30 1
66
- $staleKillThreshold = Get-PrizmRecoveryIntEnv 'STALE_KILL_THRESHOLD' 900 0
67
- $staleKillGraceSeconds = Get-PrizmRecoveryIntEnv 'STALE_KILL_GRACE_SECONDS' 10 0
68
-
69
- $recoveryDetectScript = $null
70
- foreach ($candidate in @(
71
- (Join-Path $paths.ProjectRoot '.agents\skills\recovery-workflow\scripts\detect-recovery-state.py'),
72
- (Join-Path $paths.ProjectRoot '.claude\command-assets\recovery-workflow\scripts\detect-recovery-state.py'),
73
- (Join-Path $paths.ProjectRoot '.codebuddy\skills\recovery-workflow\scripts\detect-recovery-state.py')
74
- )) {
75
- if (Test-Path $candidate) {
76
- $recoveryDetectScript = $candidate
77
- break
78
- }
79
- }
80
- if (-not $recoveryDetectScript) {
81
- Write-PrizmError 'Recovery detection script not found. Reinstall PrizmKit skills first.'
82
- exit 1
83
- }
84
-
85
- $stateDir = Join-Path $paths.PrizmkitDir 'state\recovery'
86
- New-Item -ItemType Directory -Force -Path $stateDir | Out-Null
87
- $detectionPath = Join-Path $stateDir 'detection.json'
88
-
89
- Invoke-PrizmPythonText $python @($recoveryDetectScript, '--project-root', $paths.ProjectRoot) | Set-Content -Path $detectionPath -Encoding UTF8
90
- if ($command -eq 'detect') { Get-Content $detectionPath; exit 0 }
91
-
92
- $sessionId = New-PrizmSessionId 'recovery'
93
- $sessionDir = Join-Path $stateDir "sessions\$sessionId"
94
- $logsDir = Join-Path $sessionDir 'logs'
95
- New-Item -ItemType Directory -Force -Path $logsDir | Out-Null
96
- $sessionDetectionPath = Join-Path $sessionDir 'detection.json'
97
- Copy-Item -Path $detectionPath -Destination $sessionDetectionPath -Force
98
- $promptPath = Join-Path $sessionDir 'bootstrap-prompt.md'
99
- $logPath = Join-Path $logsDir 'session.log'
100
- $progressPath = Join-Path $logsDir 'progress.json'
101
- $pidPath = Join-Path $logsDir 'ai.pid'
102
- $staleKillMarker = Join-Path $logsDir 'stale-kill.json'
103
-
104
- Invoke-PrizmPythonText $python @((Join-Path $paths.ScriptsDir 'generate-recovery-prompt.py'), '--detection-json', $sessionDetectionPath, '--project-root', $paths.ProjectRoot, '--session-id', $sessionId, '--output', $promptPath)
105
- if ($dryRun) { Get-Content $promptPath; exit 0 }
106
- $cli = Resolve-PrizmAiCli $paths.ProjectRoot $paths.PrizmkitDir
107
- $env:PRIZMKIT_PLATFORM = Get-PrizmPlatformFromProject $paths.ProjectRoot $paths.PrizmkitDir $cli
108
- Test-PrizmEffort $cli
109
- Write-PrizmInfo "Starting recovery session: $sessionId"
110
- Write-PrizmInfo "Prompt: $promptPath"
111
- Write-PrizmInfo "Log: $logPath"
112
-
113
- $parserProcess = Start-PrizmProgressParser -PythonCommand $python -ScriptsDir $paths.ScriptsDir -SessionLog $logPath -ProgressFile $progressPath -CliCommand $cli
114
- $job = Start-Job -ScriptBlock {
115
- param($commonPath, $cli, $promptPath, $logPath, $projectRoot, $model, $pidPath)
116
- . $commonPath
117
- Invoke-PrizmAiSession -CliCommand $cli -PromptPath $promptPath -LogPath $logPath -ProjectRoot $projectRoot -Model $model -PidPath $pidPath
118
- } -ArgumentList (Join-Path $paths.PipelineDir 'lib\common.ps1'), $cli, $promptPath, $logPath, $paths.ProjectRoot, $model, $pidPath
119
-
120
- $elapsedSeconds = 0
121
- $staleSeconds = 0
122
- $previousLogSize = 0
123
- $previousProgressSignature = ''
124
- $previousChildActivitySignature = ''
125
- $wasStaleKilled = $false
126
- while ($true) {
127
- $completed = Wait-Job $job -Timeout $heartbeatInterval
128
- if ($completed) { break }
129
-
130
- $elapsedSeconds += $heartbeatInterval
131
- $currentLogSize = 0
132
- if (Test-Path $logPath) { $currentLogSize = [int64](Get-Item $logPath).Length }
133
- $growth = $currentLogSize - $previousLogSize
134
- $previousLogSize = $currentLogSize
135
-
136
- $progressActivity = Get-PrizmProgressActivity -ProgressFile $progressPath
137
- $progressSignature = [string]$progressActivity.ProgressSignature
138
- $progressAdvanced = ($progressSignature -and $progressSignature -ne $previousProgressSignature)
139
- $previousProgressSignature = $progressSignature
140
- $childSignature = [string]$progressActivity.ChildSignature
141
- $childAdvanced = ($childSignature -and $childSignature -ne $previousChildActivitySignature)
142
- $previousChildActivitySignature = $childSignature
143
-
144
- if ($growth -gt 0 -or $childAdvanced -or $progressAdvanced) { $staleSeconds = 0 } else { $staleSeconds += $heartbeatInterval }
145
-
146
- if ($staleKillThreshold -gt 0 -and $staleSeconds -ge $staleKillThreshold) {
147
- $wasStaleKilled = $true
148
- Write-PrizmWarn "Recovery session stale-killed (no progress for ${staleKillThreshold}s)"
149
- Write-PrizmStaleKillMarker $staleKillMarker $staleSeconds $staleKillThreshold
150
- Stop-PrizmSessionProcess $pidPath
151
- if ($staleKillGraceSeconds -gt 0) { Start-Sleep -Seconds $staleKillGraceSeconds }
152
- break
153
- }
154
- }
155
-
156
- $exitCode = 0
157
- if ($wasStaleKilled) {
158
- Stop-Job $job
159
- Remove-Job $job
160
- $exitCode = 143
161
- } else {
162
- try {
163
- $exitCode = [int](Receive-Job $job)
164
- } catch {
165
- Write-PrizmWarn "Recovery session job failed: $($_.Exception.Message)"
166
- $exitCode = 1
167
- }
168
- Remove-Job $job
169
- }
170
- Stop-PrizmProgressParser $parserProcess
171
-
172
- if (Test-Path $logPath) {
173
- $lineCount = (Get-Content $logPath | Measure-Object -Line).Lines
174
- $sizeKb = [int](([int64](Get-Item $logPath).Length) / 1024)
175
- Write-PrizmInfo "Session log: $lineCount lines, ${sizeKb}KB"
176
- }
177
- if ($wasStaleKilled -or (Test-Path $staleKillMarker)) { Write-PrizmWarn "Recovery session was stale-killed." }
178
- if ($exitCode -eq 0) { Write-PrizmSuccess "Recovery session completed." } else { Write-PrizmError "Recovery session failed. Log: $logPath" }
179
- exit $exitCode
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env pwsh
2
- . "$PSScriptRoot\lib\pipeline.ps1"
3
- try {
4
- Invoke-PrizmPipeline -Kind refactor -ScriptRoot $PSScriptRoot -Args $args
5
- exit $global:PRIZM_EXIT_CODE
6
- } catch {
7
- Write-PrizmError $_.Exception.Message
8
- exit 1
9
- }
@@ -1,228 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Parse a session-status.json file and output a simple status string for the shell runner.
3
-
4
- Reads the session status written by an agent at session end, validates required
5
- fields, and prints a single-line result to stdout. Detailed JSON is written to
6
- stderr for logging.
7
-
8
- Usage:
9
- python3 check-session-status.py --status-file <path>
10
- """
11
-
12
- import argparse
13
- import json
14
- import sys
15
-
16
- from utils import setup_logging
17
-
18
-
19
- REQUIRED_FIELDS = ["session_id", "status", "timestamp"]
20
- # At least one of these ID fields must be present (depends on pipeline type)
21
- ID_FIELDS = ["feature_id", "bug_id", "refactor_id"]
22
-
23
- LOGGER = setup_logging("check-session-status")
24
-
25
-
26
- def parse_args():
27
- parser = argparse.ArgumentParser(
28
- description="Parse session-status.json and output a status string for the shell runner."
29
- )
30
- parser.add_argument(
31
- "--status-file",
32
- required=True,
33
- help="Path to the session-status.json file",
34
- )
35
- return parser.parse_args()
36
-
37
-
38
- def load_status_file(path):
39
- """Load and parse the session status JSON file.
40
-
41
- Returns (data, error_message). On success error_message is None.
42
- """
43
- try:
44
- with open(path, "r", encoding="utf-8") as f:
45
- data = json.load(f)
46
- except (IOError, OSError) as e:
47
- return None, "Cannot read status file: {}".format(str(e))
48
- except (json.JSONDecodeError, ValueError) as e:
49
- return None, "Malformed JSON in status file: {}".format(str(e))
50
- return data, None
51
-
52
-
53
- def validate_required_fields(data):
54
- """Check that all required fields are present and non-empty.
55
-
56
- Returns a list of missing/invalid field names.
57
- In addition to the always-required fields, at least one of
58
- feature_id / bug_id / refactor_id must be present.
59
- """
60
- missing = []
61
- for field in REQUIRED_FIELDS:
62
- if field not in data:
63
- missing.append(field)
64
- elif not isinstance(data[field], str) or not data[field].strip():
65
- missing.append(field)
66
-
67
- # Check that at least one ID field is present and non-empty
68
- has_id = any(
69
- field in data and isinstance(data[field], str) and data[field].strip()
70
- for field in ID_FIELDS
71
- )
72
- if not has_id:
73
- missing.append("feature_id|bug_id|refactor_id")
74
-
75
- return missing
76
-
77
-
78
- def determine_status(data):
79
- """Determine the single-line status string from the parsed data.
80
-
81
- Returns one of: success, partial_resumable, partial_not_resumable,
82
- failed, commit_missing, docs_missing, merge_conflict.
83
- """
84
- status = data.get("status", "")
85
-
86
- if status == "success":
87
- return "success"
88
- elif status == "partial":
89
- can_resume = data.get("can_resume", False)
90
- if can_resume:
91
- return "partial_resumable"
92
- else:
93
- return "partial_not_resumable"
94
- elif status == "partial_resumable":
95
- return "partial_resumable"
96
- elif status == "partial_not_resumable":
97
- return "partial_not_resumable"
98
- elif status == "failed":
99
- return "failed"
100
- elif status == "crashed":
101
- return "crashed"
102
- elif status == "timed_out":
103
- return "timed_out"
104
- elif status == "commit_missing":
105
- return "commit_missing"
106
- elif status == "docs_missing":
107
- return "docs_missing"
108
- elif status == "merge_conflict":
109
- return "merge_conflict"
110
- else:
111
- # Unknown status value — treat as crashed
112
- return "crashed"
113
-
114
-
115
- def build_detail_report(data, resolved_status):
116
- """Build the detailed JSON report for stderr logging."""
117
- errors = data.get("errors", [])
118
- error_count = len(errors) if isinstance(errors, list) else 0
119
-
120
- return {
121
- "status": resolved_status,
122
- "feature_id": data.get("feature_id"),
123
- "bug_id": data.get("bug_id"),
124
- "refactor_id": data.get("refactor_id"),
125
- "completed_phases": data.get("completed_phases", []),
126
- "checkpoint_reached": data.get("checkpoint_reached"),
127
- "tasks_completed": data.get("tasks_completed", 0),
128
- "tasks_total": data.get("tasks_total", 0),
129
- "error_count": error_count,
130
- "can_resume": data.get("can_resume", False),
131
- "resume_from_phase": data.get("resume_from_phase"),
132
- }
133
-
134
-
135
- def main():
136
- args = parse_args()
137
-
138
- # Load the status file
139
- data, load_error = load_status_file(args.status_file)
140
- if load_error is not None:
141
- # File missing or malformed JSON
142
- detail = {
143
- "status": "crashed",
144
- "feature_id": None,
145
- "completed_phases": [],
146
- "checkpoint_reached": None,
147
- "tasks_completed": 0,
148
- "tasks_total": 0,
149
- "error_count": 1,
150
- "can_resume": False,
151
- "resume_from_phase": None,
152
- "load_error": load_error,
153
- }
154
- sys.stderr.write(json.dumps(detail, indent=2, ensure_ascii=False) + "\n")
155
- print("crashed")
156
- sys.exit(0)
157
-
158
- # Validate required fields
159
- missing = validate_required_fields(data)
160
- if missing:
161
- detail = {
162
- "status": "crashed",
163
- "feature_id": data.get("feature_id"),
164
- "completed_phases": data.get("completed_phases", []),
165
- "checkpoint_reached": data.get("checkpoint_reached"),
166
- "tasks_completed": data.get("tasks_completed", 0),
167
- "tasks_total": data.get("tasks_total", 0),
168
- "error_count": 1,
169
- "can_resume": False,
170
- "resume_from_phase": None,
171
- "validation_error": "Missing or invalid required fields: {}".format(
172
- ", ".join(missing)
173
- ),
174
- }
175
- sys.stderr.write(json.dumps(detail, indent=2, ensure_ascii=False) + "\n")
176
- print("crashed")
177
- sys.exit(0)
178
-
179
- # Determine status
180
- resolved_status = determine_status(data)
181
-
182
- # Build and emit detail report to stderr
183
- detail = build_detail_report(data, resolved_status)
184
- sys.stderr.write(json.dumps(detail, indent=2, ensure_ascii=False) + "\n")
185
-
186
- # Emit single-line status to stdout
187
- print(resolved_status)
188
- sys.exit(0)
189
-
190
-
191
- if __name__ == "__main__":
192
- try:
193
- main()
194
- except KeyboardInterrupt:
195
- detail = {
196
- "status": "crashed",
197
- "feature_id": None,
198
- "completed_phases": [],
199
- "checkpoint_reached": None,
200
- "tasks_completed": 0,
201
- "tasks_total": 0,
202
- "error_count": 1,
203
- "can_resume": False,
204
- "resume_from_phase": None,
205
- "internal_error": "Interrupted",
206
- }
207
- sys.stderr.write(json.dumps(detail, indent=2, ensure_ascii=False) + "\n")
208
- print("crashed")
209
- sys.exit(0)
210
- except SystemExit:
211
- raise
212
- except Exception as exc:
213
- LOGGER.exception("Unhandled exception in check-session-status")
214
- detail = {
215
- "status": "crashed",
216
- "feature_id": None,
217
- "completed_phases": [],
218
- "checkpoint_reached": None,
219
- "tasks_completed": 0,
220
- "tasks_total": 0,
221
- "error_count": 1,
222
- "can_resume": False,
223
- "resume_from_phase": None,
224
- "internal_error": str(exc),
225
- }
226
- sys.stderr.write(json.dumps(detail, indent=2, ensure_ascii=False) + "\n")
227
- print("crashed")
228
- sys.exit(0)