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
@@ -0,0 +1,373 @@
1
+ """Process and daemon lifecycle primitives."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import signal
7
+ import subprocess
8
+ import sys
9
+ import time
10
+ from collections.abc import Mapping, Sequence
11
+ from dataclasses import dataclass, field
12
+ from pathlib import Path
13
+
14
+
15
+ @dataclass(frozen=True)
16
+ class ProcessSpec:
17
+ """Portable process launch specification for runtime porting."""
18
+
19
+ command: tuple[str, ...]
20
+ cwd: Path
21
+ environment_overrides: Mapping[str, str] = field(default_factory=dict)
22
+ environment_unsets: tuple[str, ...] = ()
23
+ stdout_log: Path | None = None
24
+ stderr_log: Path | None = None
25
+ pid_file: Path | None = None
26
+ stdin_text: str | None = None
27
+ start_new_process_group: bool = True
28
+
29
+
30
+ @dataclass(frozen=True)
31
+ class ProcessHandle:
32
+ """Observed lifecycle state for a described or launched process."""
33
+
34
+ pid: int | None
35
+ spec: ProcessSpec
36
+ status: str
37
+ return_code: int | None = None
38
+ popen: subprocess.Popen[str] | None = field(default=None, compare=False, repr=False)
39
+
40
+
41
+ @dataclass(frozen=True)
42
+ class ProcessTerminationResult:
43
+ """Best-effort process tree termination result."""
44
+
45
+ pid: int | None
46
+ reason: str
47
+ terminated: bool
48
+ forced: bool
49
+ return_code: int | None
50
+ details: tuple[str, ...] = ()
51
+
52
+
53
+ @dataclass(frozen=True)
54
+ class ProcessRunResult:
55
+ """Completed process execution result."""
56
+
57
+ handle: ProcessHandle
58
+ stdout: str
59
+ stderr: str
60
+ return_code: int | None
61
+ timed_out: bool
62
+ termination: ProcessTerminationResult | None = None
63
+
64
+
65
+ def _creationflags_for_platform(start_new_process_group: bool) -> int:
66
+ if os.name != "nt" or not start_new_process_group:
67
+ return 0
68
+ flags = 0
69
+ flags |= getattr(subprocess, "CREATE_NEW_PROCESS_GROUP", 0)
70
+ return flags
71
+
72
+
73
+ def _preexec_fn_for_platform(start_new_process_group: bool):
74
+ if os.name == "nt" or not start_new_process_group:
75
+ return None
76
+ return os.setsid
77
+
78
+
79
+ def _process_env(overrides: Mapping[str, str], unsets: Sequence[str] = ()) -> dict[str, str]:
80
+ env = dict(os.environ)
81
+ for key in unsets:
82
+ env.pop(str(key), None)
83
+ env.update({str(key): str(value) for key, value in overrides.items()})
84
+ return env
85
+
86
+
87
+ def launch_process(
88
+ spec: ProcessSpec,
89
+ *,
90
+ stdout=subprocess.PIPE,
91
+ stderr=subprocess.PIPE,
92
+ stdin=subprocess.PIPE,
93
+ text: bool = True,
94
+ ) -> ProcessHandle:
95
+ """Launch a child process with POSIX group or Windows process flags."""
96
+ spec.cwd.mkdir(parents=True, exist_ok=True)
97
+ process = subprocess.Popen(
98
+ [str(part) for part in spec.command],
99
+ cwd=spec.cwd,
100
+ env=_process_env(spec.environment_overrides, spec.environment_unsets),
101
+ stdin=stdin,
102
+ stdout=stdout,
103
+ stderr=stderr,
104
+ text=text,
105
+ preexec_fn=_preexec_fn_for_platform(spec.start_new_process_group),
106
+ creationflags=_creationflags_for_platform(spec.start_new_process_group),
107
+ )
108
+ if spec.pid_file is not None:
109
+ spec.pid_file.parent.mkdir(parents=True, exist_ok=True)
110
+ spec.pid_file.write_text(f"{process.pid}\n", encoding="utf-8")
111
+ return ProcessHandle(pid=process.pid, spec=spec, status="running", popen=process)
112
+
113
+
114
+ def is_process_running(handle: ProcessHandle) -> bool:
115
+ """Return true when the process appears alive."""
116
+ if handle.popen is not None:
117
+ return handle.popen.poll() is None
118
+ if handle.pid is None:
119
+ return False
120
+ try:
121
+ os.kill(handle.pid, 0)
122
+ except OSError:
123
+ return False
124
+ return True
125
+
126
+
127
+ def terminate_process_tree(
128
+ handle: ProcessHandle,
129
+ reason: str,
130
+ grace_seconds: float = 10.0,
131
+ ) -> ProcessTerminationResult:
132
+ """Terminate a process tree without relying on shell runtime logic.
133
+
134
+ POSIX uses the process group created at launch. Windows uses taskkill-style
135
+ tree termination when available. Both paths are best effort and safe for
136
+ tests with short-lived fake processes.
137
+ """
138
+ pid = handle.pid
139
+ if pid is None:
140
+ return ProcessTerminationResult(pid=None, reason=reason, terminated=False, forced=False, return_code=None)
141
+
142
+ details: list[str] = []
143
+ forced = False
144
+ process = handle.popen
145
+
146
+ if os.name == "nt":
147
+ completed = subprocess.run(
148
+ ["taskkill", "/PID", str(pid), "/T", "/F"],
149
+ stdout=subprocess.PIPE,
150
+ stderr=subprocess.PIPE,
151
+ text=True,
152
+ check=False,
153
+ )
154
+ details.append(f"taskkill_exit={completed.returncode}")
155
+ forced = True
156
+ else:
157
+ try:
158
+ os.killpg(pid, signal.SIGTERM)
159
+ details.append("sigterm_process_group")
160
+ except ProcessLookupError:
161
+ pass
162
+ except OSError as exc:
163
+ details.append(f"sigterm_group_failed={type(exc).__name__}")
164
+ try:
165
+ os.kill(pid, signal.SIGTERM)
166
+ details.append("sigterm_process")
167
+ except OSError as inner:
168
+ details.append(f"sigterm_process_failed={type(inner).__name__}")
169
+
170
+ deadline = time.monotonic() + max(0.0, grace_seconds)
171
+ while process is not None and process.poll() is None and time.monotonic() < deadline:
172
+ time.sleep(0.05)
173
+ if process is not None and process.poll() is None:
174
+ forced = True
175
+ try:
176
+ os.killpg(pid, signal.SIGKILL)
177
+ details.append("sigkill_process_group")
178
+ except ProcessLookupError:
179
+ pass
180
+ except OSError as exc:
181
+ details.append(f"sigkill_group_failed={type(exc).__name__}")
182
+ try:
183
+ os.kill(pid, signal.SIGKILL)
184
+ details.append("sigkill_process")
185
+ except OSError as inner:
186
+ details.append(f"sigkill_process_failed={type(inner).__name__}")
187
+
188
+ return_code = None
189
+ if process is not None:
190
+ try:
191
+ return_code = process.wait(timeout=max(0.1, grace_seconds))
192
+ except subprocess.TimeoutExpired:
193
+ return_code = process.poll()
194
+ return ProcessTerminationResult(
195
+ pid=pid,
196
+ reason=reason,
197
+ terminated=True,
198
+ forced=forced,
199
+ return_code=return_code,
200
+ details=tuple(details),
201
+ )
202
+
203
+
204
+ def is_pid_running(pid: int | None) -> bool:
205
+ """Return true when a PID appears alive."""
206
+ if pid is None or pid <= 0:
207
+ return False
208
+ try:
209
+ os.kill(pid, 0)
210
+ except ProcessLookupError:
211
+ return False
212
+ except PermissionError:
213
+ return True
214
+ except OSError:
215
+ return False
216
+ if os.name != "nt":
217
+ try:
218
+ waited_pid, _status = os.waitpid(pid, os.WNOHANG)
219
+ except ChildProcessError:
220
+ return True
221
+ except OSError:
222
+ return True
223
+ if waited_pid == pid:
224
+ return False
225
+ return True
226
+
227
+
228
+ def terminate_pid_tree(
229
+ pid: int | None,
230
+ reason: str,
231
+ grace_seconds: float = 10.0,
232
+ ) -> ProcessTerminationResult:
233
+ """Terminate a PID-backed process tree without requiring a live Popen.
234
+
235
+ Daemon stop commands reconstruct process state from a PID file, so the
236
+ original ``subprocess.Popen`` object is not available. POSIX daemons are
237
+ launched in a process group whose id is the daemon PID; Windows uses the
238
+ same taskkill-style tree termination strategy as ``terminate_process_tree``.
239
+ """
240
+ if pid is None or pid <= 0:
241
+ return ProcessTerminationResult(pid=pid, reason=reason, terminated=False, forced=False, return_code=None)
242
+
243
+ details: list[str] = []
244
+ forced = False
245
+ if not is_pid_running(pid):
246
+ return ProcessTerminationResult(pid=pid, reason=reason, terminated=False, forced=False, return_code=None, details=("not_running",))
247
+
248
+ if os.name == "nt":
249
+ completed = subprocess.run(
250
+ ["taskkill", "/PID", str(pid), "/T", "/F"],
251
+ stdout=subprocess.PIPE,
252
+ stderr=subprocess.PIPE,
253
+ text=True,
254
+ check=False,
255
+ )
256
+ details.append(f"taskkill_exit={completed.returncode}")
257
+ return ProcessTerminationResult(
258
+ pid=pid,
259
+ reason=reason,
260
+ terminated=completed.returncode == 0,
261
+ forced=True,
262
+ return_code=None,
263
+ details=tuple(details),
264
+ )
265
+
266
+ try:
267
+ os.killpg(pid, signal.SIGTERM)
268
+ details.append("sigterm_process_group")
269
+ except ProcessLookupError:
270
+ pass
271
+ except OSError as exc:
272
+ details.append(f"sigterm_group_failed={type(exc).__name__}")
273
+ try:
274
+ os.kill(pid, signal.SIGTERM)
275
+ details.append("sigterm_process")
276
+ except OSError as inner:
277
+ details.append(f"sigterm_process_failed={type(inner).__name__}")
278
+
279
+ deadline = time.monotonic() + max(0.0, grace_seconds)
280
+ while is_pid_running(pid) and time.monotonic() < deadline:
281
+ time.sleep(0.05)
282
+
283
+ if is_pid_running(pid):
284
+ forced = True
285
+ try:
286
+ os.killpg(pid, signal.SIGKILL)
287
+ details.append("sigkill_process_group")
288
+ except ProcessLookupError:
289
+ pass
290
+ except OSError as exc:
291
+ details.append(f"sigkill_group_failed={type(exc).__name__}")
292
+ try:
293
+ os.kill(pid, signal.SIGKILL)
294
+ details.append("sigkill_process")
295
+ except OSError as inner:
296
+ details.append(f"sigkill_process_failed={type(inner).__name__}")
297
+
298
+ deadline = time.monotonic() + max(0.0, min(grace_seconds, 2.0))
299
+ while is_pid_running(pid) and time.monotonic() < deadline:
300
+ time.sleep(0.05)
301
+
302
+ return ProcessTerminationResult(
303
+ pid=pid,
304
+ reason=reason,
305
+ terminated=not is_pid_running(pid),
306
+ forced=forced,
307
+ return_code=None,
308
+ details=tuple(details),
309
+ )
310
+
311
+
312
+
313
+ def run_process_with_capture(
314
+ spec: ProcessSpec,
315
+ *,
316
+ timeout_seconds: float | None = None,
317
+ grace_seconds: float = 10.0,
318
+ ) -> ProcessRunResult:
319
+ """Run a process to completion and terminate on total timeout."""
320
+ handle = launch_process(spec)
321
+ assert handle.popen is not None
322
+ try:
323
+ stdout, stderr = handle.popen.communicate(input=spec.stdin_text, timeout=timeout_seconds)
324
+ return ProcessRunResult(
325
+ handle=ProcessHandle(
326
+ pid=handle.pid,
327
+ spec=spec,
328
+ status="completed",
329
+ return_code=handle.popen.returncode,
330
+ popen=handle.popen,
331
+ ),
332
+ stdout=stdout or "",
333
+ stderr=stderr or "",
334
+ return_code=handle.popen.returncode,
335
+ timed_out=False,
336
+ )
337
+ except subprocess.TimeoutExpired:
338
+ termination = terminate_process_tree(handle, "timeout", grace_seconds=grace_seconds)
339
+ stdout = ""
340
+ stderr = ""
341
+ if handle.popen is not None:
342
+ try:
343
+ captured = handle.popen.communicate(timeout=1)
344
+ stdout = captured[0] or ""
345
+ stderr = captured[1] or ""
346
+ except subprocess.TimeoutExpired:
347
+ pass
348
+ return ProcessRunResult(
349
+ handle=ProcessHandle(
350
+ pid=handle.pid,
351
+ spec=spec,
352
+ status="timeout",
353
+ return_code=termination.return_code,
354
+ popen=handle.popen,
355
+ ),
356
+ stdout=stdout,
357
+ stderr=stderr,
358
+ return_code=termination.return_code,
359
+ timed_out=True,
360
+ termination=termination,
361
+ )
362
+
363
+
364
+ def platform_termination_strategy() -> tuple[str, ...]:
365
+ """Expose the structural termination strategy for tests/diagnostics."""
366
+ if os.name == "nt":
367
+ return ("CREATE_NEW_PROCESS_GROUP", "taskkill /PID <pid> /T /F")
368
+ return ("setsid", "killpg(SIGTERM)", "killpg(SIGKILL)")
369
+
370
+
371
+ def describe_command(command: Sequence[str]) -> str:
372
+ """Return a deterministic command description for tests."""
373
+ return " ".join(str(part) for part in command)