prizmkit 1.1.100 → 1.1.102

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 (317) 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 +355 -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 +153 -0
  26. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +425 -0
  27. package/bundled/dev-pipeline/prizmkit_runtime/sessions.py +560 -0
  28. package/bundled/dev-pipeline/prizmkit_runtime/status.py +71 -0
  29. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +51 -36
  30. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +20 -5
  31. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +2 -2
  32. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +39 -0
  33. package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +8 -2
  34. package/bundled/dev-pipeline/templates/agent-prompts/reviewer-review.md +1 -1
  35. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +6 -2
  36. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +14 -6
  37. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +14 -4
  38. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +14 -4
  39. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +2 -0
  40. package/bundled/dev-pipeline/templates/sections/log-size-awareness.md +9 -30
  41. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +15 -7
  42. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +42 -29
  43. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +41 -39
  44. package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +8 -17
  45. package/bundled/dev-pipeline/templates/sections/phase-prizmkit-test.md +2 -2
  46. package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +1 -3
  47. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +1 -3
  48. package/bundled/dev-pipeline/templates/sections/phase0-test-baseline.md +3 -8
  49. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +6 -2
  50. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +5 -1
  51. package/bundled/dev-pipeline/tests/test_auto_skip.py +436 -14
  52. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +115 -7
  53. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +40 -0
  54. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +1226 -0
  55. package/bundled/dev-pipeline/tests/test_unified_cli.py +1045 -0
  56. package/bundled/skills/_metadata.json +1 -1
  57. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +29 -34
  58. package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +6 -5
  59. package/bundled/skills/feature-pipeline-launcher/SKILL.md +29 -35
  60. package/bundled/skills/feature-pipeline-launcher/references/configuration.md +7 -6
  61. package/bundled/skills/feature-workflow/SKILL.md +3 -6
  62. package/bundled/skills/recovery-workflow/SKILL.md +23 -32
  63. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +29 -35
  64. package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +7 -6
  65. package/bundled/skills/refactor-workflow/SKILL.md +3 -6
  66. package/bundled/templates/hooks/commit-intent.json +2 -2
  67. package/bundled/templates/hooks/diff-prizm-docs.py +226 -0
  68. package/bundled/templates/hooks/prizm-pre-commit.py +45 -0
  69. package/bundled/templates/hooks/validate-prizm-docs.py +240 -0
  70. package/package.json +1 -1
  71. package/src/config.js +42 -19
  72. package/src/external-skills.js +14 -14
  73. package/src/index.js +3 -6
  74. package/src/manifest.js +11 -5
  75. package/src/metadata.js +7 -18
  76. package/src/platforms.js +25 -0
  77. package/src/prompts.js +0 -12
  78. package/src/runtimes.js +18 -11
  79. package/src/scaffold.js +144 -122
  80. package/src/upgrade.js +12 -3
  81. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +0 -500
  82. package/bundled/dev-pipeline/launch-feature-daemon.sh +0 -657
  83. package/bundled/dev-pipeline/launch-refactor-daemon.sh +0 -502
  84. package/bundled/dev-pipeline/lib/branch.sh +0 -326
  85. package/bundled/dev-pipeline/lib/common.sh +0 -1476
  86. package/bundled/dev-pipeline/lib/heartbeat.sh +0 -469
  87. package/bundled/dev-pipeline/reset-bug.sh +0 -425
  88. package/bundled/dev-pipeline/reset-feature.sh +0 -436
  89. package/bundled/dev-pipeline/reset-refactor.sh +0 -423
  90. package/bundled/dev-pipeline/run-bugfix.sh +0 -1430
  91. package/bundled/dev-pipeline/run-feature.sh +0 -1718
  92. package/bundled/dev-pipeline/run-recovery.sh +0 -648
  93. package/bundled/dev-pipeline/run-refactor.sh +0 -1463
  94. package/bundled/dev-pipeline/tests/test-path-resolution.sh +0 -100
  95. package/bundled/dev-pipeline-windows/.env.example +0 -36
  96. package/bundled/dev-pipeline-windows/README.md +0 -30
  97. package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +0 -533
  98. package/bundled/dev-pipeline-windows/assets/feature-list-example.json +0 -146
  99. package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +0 -137
  100. package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +0 -9
  101. package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +0 -9
  102. package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +0 -9
  103. package/bundled/dev-pipeline-windows/lib/branch.ps1 +0 -235
  104. package/bundled/dev-pipeline-windows/lib/common.ps1 +0 -991
  105. package/bundled/dev-pipeline-windows/lib/daemon.ps1 +0 -140
  106. package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +0 -1051
  107. package/bundled/dev-pipeline-windows/lib/reset.ps1 +0 -121
  108. package/bundled/dev-pipeline-windows/reset-bug.ps1 +0 -10
  109. package/bundled/dev-pipeline-windows/reset-feature.ps1 +0 -10
  110. package/bundled/dev-pipeline-windows/reset-refactor.ps1 +0 -10
  111. package/bundled/dev-pipeline-windows/run-bugfix.ps1 +0 -9
  112. package/bundled/dev-pipeline-windows/run-feature.ps1 +0 -9
  113. package/bundled/dev-pipeline-windows/run-recovery.ps1 +0 -179
  114. package/bundled/dev-pipeline-windows/run-refactor.ps1 +0 -9
  115. package/bundled/dev-pipeline-windows/scripts/check-session-status.py +0 -301
  116. package/bundled/dev-pipeline-windows/scripts/continuation.py +0 -374
  117. package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +0 -530
  118. package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +0 -2279
  119. package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +0 -763
  120. package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +0 -805
  121. package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +0 -841
  122. package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +0 -316
  123. package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +0 -134
  124. package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +0 -382
  125. package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +0 -399
  126. package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +0 -1362
  127. package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +0 -191
  128. package/bundled/dev-pipeline-windows/scripts/prizmkit-test-gate.py +0 -446
  129. package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +0 -1121
  130. package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +0 -173
  131. package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +0 -1789
  132. package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +0 -1327
  133. package/bundled/dev-pipeline-windows/scripts/utils.py +0 -542
  134. package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +0 -7
  135. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +0 -7
  136. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +0 -65
  137. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +0 -5
  138. package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +0 -7
  139. package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +0 -73
  140. package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +0 -589
  141. package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +0 -710
  142. package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +0 -791
  143. package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +0 -263
  144. package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +0 -326
  145. package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +0 -237
  146. package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +0 -340
  147. package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +0 -270
  148. package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +0 -7
  149. package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +0 -91
  150. package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +0 -34
  151. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +0 -10
  152. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +0 -12
  153. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +0 -7
  154. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +0 -8
  155. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +0 -9
  156. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +0 -6
  157. package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +0 -21
  158. package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +0 -21
  159. package/bundled/dev-pipeline-windows/templates/sections/log-size-awareness.md +0 -41
  160. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +0 -283
  161. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +0 -112
  162. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +0 -168
  163. package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +0 -82
  164. package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +0 -75
  165. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +0 -23
  166. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +0 -14
  167. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +0 -19
  168. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +0 -63
  169. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +0 -42
  170. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +0 -44
  171. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +0 -59
  172. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +0 -39
  173. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +0 -27
  174. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +0 -27
  175. package/bundled/dev-pipeline-windows/templates/sections/phase-prizmkit-test.md +0 -39
  176. package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +0 -35
  177. package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +0 -35
  178. package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +0 -73
  179. package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +0 -13
  180. package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +0 -21
  181. package/bundled/dev-pipeline-windows/templates/sections/session-context.md +0 -5
  182. package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +0 -6
  183. package/bundled/dev-pipeline-windows/templates/sections/task-contract.md +0 -34
  184. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +0 -48
  185. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +0 -48
  186. package/bundled/dev-pipeline-windows/templates/session-status-schema.json +0 -83
  187. package/bundled/skills-windows/app-planner/SKILL.md +0 -296
  188. package/bundled/skills-windows/app-planner/assets/app-design-guide.md +0 -101
  189. package/bundled/skills-windows/app-planner/references/architecture-decisions.md +0 -52
  190. package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +0 -101
  191. package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +0 -71
  192. package/bundled/skills-windows/app-planner/references/infrastructure-convention-discovery.md +0 -108
  193. package/bundled/skills-windows/app-planner/references/project-brief-guide.md +0 -82
  194. package/bundled/skills-windows/app-planner/references/project-conventions-discovery.md +0 -59
  195. package/bundled/skills-windows/app-planner/references/project-state-detection.md +0 -90
  196. package/bundled/skills-windows/app-planner/references/red-team-checklist.md +0 -40
  197. package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +0 -619
  198. package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +0 -285
  199. package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +0 -249
  200. package/bundled/skills-windows/app-planner/references/rules/backend/question-manifest.json +0 -46
  201. package/bundled/skills-windows/app-planner/references/rules/backend/template.md +0 -173
  202. package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +0 -382
  203. package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +0 -211
  204. package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +0 -184
  205. package/bundled/skills-windows/app-planner/references/rules/database/question-manifest.json +0 -39
  206. package/bundled/skills-windows/app-planner/references/rules/database/template.md +0 -158
  207. package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +0 -820
  208. package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +0 -188
  209. package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +0 -319
  210. package/bundled/skills-windows/app-planner/references/rules/frontend/question-manifest.json +0 -51
  211. package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +0 -339
  212. package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +0 -649
  213. package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +0 -290
  214. package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +0 -232
  215. package/bundled/skills-windows/app-planner/references/rules/mobile/question-manifest.json +0 -47
  216. package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +0 -175
  217. package/bundled/skills-windows/app-planner/references/rules-configuration.md +0 -46
  218. package/bundled/skills-windows/bug-fix-workflow/SKILL.md +0 -379
  219. package/bundled/skills-windows/bug-fix-workflow/references/bug-diagnosis.md +0 -41
  220. package/bundled/skills-windows/bug-planner/SKILL.md +0 -402
  221. package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +0 -43
  222. package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +0 -44
  223. package/bundled/skills-windows/bug-planner/references/error-recovery.md +0 -73
  224. package/bundled/skills-windows/bug-planner/references/input-formats.md +0 -53
  225. package/bundled/skills-windows/bug-planner/references/schema-validation.md +0 -25
  226. package/bundled/skills-windows/bug-planner/references/severity-rules.md +0 -16
  227. package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +0 -322
  228. package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +0 -304
  229. package/bundled/skills-windows/bugfix-pipeline-launcher/references/configuration.md +0 -84
  230. package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +0 -381
  231. package/bundled/skills-windows/feature-pipeline-launcher/references/configuration.md +0 -67
  232. package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +0 -462
  233. package/bundled/skills-windows/feature-planner/SKILL.md +0 -397
  234. package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +0 -64
  235. package/bundled/skills-windows/feature-planner/assets/planning-guide.md +0 -214
  236. package/bundled/skills-windows/feature-planner/references/browser-interaction.md +0 -59
  237. package/bundled/skills-windows/feature-planner/references/completeness-review.md +0 -57
  238. package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +0 -75
  239. package/bundled/skills-windows/feature-planner/references/error-recovery.md +0 -90
  240. package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +0 -112
  241. package/bundled/skills-windows/feature-planner/references/new-project-planning.md +0 -85
  242. package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +0 -1020
  243. package/bundled/skills-windows/feature-workflow/SKILL.md +0 -374
  244. package/bundled/skills-windows/feature-workflow/references/brainstorm-guide.md +0 -137
  245. package/bundled/skills-windows/prizm-kit/SKILL.md +0 -93
  246. package/bundled/skills-windows/prizmkit-code-review/SKILL.md +0 -161
  247. package/bundled/skills-windows/prizmkit-code-review/references/dev-agent-prompt.md +0 -30
  248. package/bundled/skills-windows/prizmkit-code-review/references/review-report-template.md +0 -31
  249. package/bundled/skills-windows/prizmkit-code-review/references/reviewer-agent-prompt.md +0 -66
  250. package/bundled/skills-windows/prizmkit-code-review/scripts/check_loop.py +0 -186
  251. package/bundled/skills-windows/prizmkit-committer/SKILL.md +0 -89
  252. package/bundled/skills-windows/prizmkit-deploy/SKILL.md +0 -444
  253. package/bundled/skills-windows/prizmkit-deploy/references/ci-cd-workflows.md +0 -115
  254. package/bundled/skills-windows/prizmkit-deploy/references/cloud-platform-deploy.md +0 -93
  255. package/bundled/skills-windows/prizmkit-deploy/references/data-safety-examples.md +0 -120
  256. package/bundled/skills-windows/prizmkit-deploy/references/database-setup.md +0 -46
  257. package/bundled/skills-windows/prizmkit-deploy/references/deploy-config-schema.md +0 -148
  258. package/bundled/skills-windows/prizmkit-deploy/references/deploy-history-schema.md +0 -62
  259. package/bundled/skills-windows/prizmkit-deploy/references/deployment-modes.md +0 -50
  260. package/bundled/skills-windows/prizmkit-deploy/references/direct-upload.md +0 -26
  261. package/bundled/skills-windows/prizmkit-deploy/references/dns-setup.md +0 -42
  262. package/bundled/skills-windows/prizmkit-deploy/references/docker-deploy.md +0 -31
  263. package/bundled/skills-windows/prizmkit-deploy/references/firewall-setup.md +0 -37
  264. package/bundled/skills-windows/prizmkit-deploy/references/live-validation-notes.md +0 -21
  265. package/bundled/skills-windows/prizmkit-deploy/references/nginx-blue-green.md +0 -59
  266. package/bundled/skills-windows/prizmkit-deploy/references/ssh-bootstrap-flow.md +0 -49
  267. package/bundled/skills-windows/prizmkit-deploy/references/ssh-execution-flow.md +0 -41
  268. package/bundled/skills-windows/prizmkit-deploy/references/ssh-takeover.md +0 -20
  269. package/bundled/skills-windows/prizmkit-deploy/references/ssl-setup.md +0 -56
  270. package/bundled/skills-windows/prizmkit-implement/SKILL.md +0 -71
  271. package/bundled/skills-windows/prizmkit-init/SKILL.md +0 -356
  272. package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +0 -82
  273. package/bundled/skills-windows/prizmkit-init/references/config-schema.md +0 -70
  274. package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +0 -41
  275. package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +0 -13
  276. package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +0 -9
  277. package/bundled/skills-windows/prizmkit-plan/SKILL.md +0 -102
  278. package/bundled/skills-windows/prizmkit-plan/assets/plan-template.md +0 -115
  279. package/bundled/skills-windows/prizmkit-plan/assets/spec-template.md +0 -73
  280. package/bundled/skills-windows/prizmkit-plan/references/clarify-guide.md +0 -67
  281. package/bundled/skills-windows/prizmkit-plan/references/examples.md +0 -85
  282. package/bundled/skills-windows/prizmkit-plan/references/verification-checklist.md +0 -60
  283. package/bundled/skills-windows/prizmkit-prizm-docs/SKILL.md +0 -129
  284. package/bundled/skills-windows/prizmkit-prizm-docs/assets/prizm-docs-format.md +0 -613
  285. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-init.md +0 -45
  286. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-rebuild.md +0 -15
  287. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-status.md +0 -14
  288. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-update.md +0 -19
  289. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-validate.md +0 -17
  290. package/bundled/skills-windows/prizmkit-retrospective/SKILL.md +0 -87
  291. package/bundled/skills-windows/prizmkit-retrospective/references/knowledge-injection-steps.md +0 -50
  292. package/bundled/skills-windows/prizmkit-retrospective/references/structural-sync-steps.md +0 -43
  293. package/bundled/skills-windows/prizmkit-test/SKILL.md +0 -227
  294. package/bundled/skills-windows/prizmkit-test/references/boundary-coverage-protocol.md +0 -220
  295. package/bundled/skills-windows/prizmkit-test/references/examples.md +0 -143
  296. package/bundled/skills-windows/prizmkit-test/references/service-boundary-test-catalog.md +0 -225
  297. package/bundled/skills-windows/prizmkit-test/references/test-generation-steps.md +0 -109
  298. package/bundled/skills-windows/prizmkit-test/references/test-report-template.md +0 -111
  299. package/bundled/skills-windows/prizmkit-test/scripts/validate_boundary_report.py +0 -347
  300. package/bundled/skills-windows/recovery-workflow/SKILL.md +0 -355
  301. package/bundled/skills-windows/recovery-workflow/evals/evals.json +0 -46
  302. package/bundled/skills-windows/recovery-workflow/references/detection.md +0 -58
  303. package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +0 -544
  304. package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +0 -346
  305. package/bundled/skills-windows/refactor-pipeline-launcher/references/configuration.md +0 -72
  306. package/bundled/skills-windows/refactor-planner/SKILL.md +0 -398
  307. package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +0 -292
  308. package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +0 -301
  309. package/bundled/skills-windows/refactor-planner/references/fast-path.md +0 -59
  310. package/bundled/skills-windows/refactor-planner/references/planning-phases.md +0 -135
  311. package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +0 -221
  312. package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +0 -858
  313. package/bundled/skills-windows/refactor-workflow/SKILL.md +0 -343
  314. package/bundled/skills-windows/refactor-workflow/references/brainstorm-guide.md +0 -116
  315. package/bundled/templates/hooks/diff-prizm-docs.sh +0 -158
  316. package/bundled/templates/hooks/prizm-pre-commit.sh +0 -108
  317. 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)