prizmkit 1.1.100 → 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 (309) 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/generate-bootstrap-prompt.py +38 -23
  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 +7 -1
  34. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +4 -0
  35. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +12 -3
  36. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +13 -3
  37. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +13 -3
  38. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +2 -0
  39. package/bundled/dev-pipeline/templates/sections/log-size-awareness.md +9 -30
  40. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +15 -7
  41. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +42 -29
  42. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +41 -39
  43. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +4 -0
  44. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +4 -0
  45. package/bundled/dev-pipeline/tests/test_auto_skip.py +436 -14
  46. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +104 -0
  47. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +40 -0
  48. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +1138 -0
  49. package/bundled/dev-pipeline/tests/test_unified_cli.py +1045 -0
  50. package/bundled/skills/_metadata.json +1 -1
  51. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +29 -34
  52. package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +6 -5
  53. package/bundled/skills/feature-pipeline-launcher/SKILL.md +29 -35
  54. package/bundled/skills/feature-pipeline-launcher/references/configuration.md +7 -6
  55. package/bundled/skills/feature-workflow/SKILL.md +3 -6
  56. package/bundled/skills/recovery-workflow/SKILL.md +23 -32
  57. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +29 -35
  58. package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +7 -6
  59. package/bundled/skills/refactor-workflow/SKILL.md +3 -6
  60. package/bundled/templates/hooks/commit-intent.json +2 -2
  61. package/bundled/templates/hooks/diff-prizm-docs.py +226 -0
  62. package/bundled/templates/hooks/prizm-pre-commit.py +45 -0
  63. package/bundled/templates/hooks/validate-prizm-docs.py +240 -0
  64. package/package.json +1 -1
  65. package/src/config.js +33 -12
  66. package/src/index.js +3 -6
  67. package/src/manifest.js +3 -2
  68. package/src/metadata.js +7 -18
  69. package/src/prompts.js +0 -12
  70. package/src/runtimes.js +18 -11
  71. package/src/scaffold.js +133 -116
  72. package/src/upgrade.js +1 -1
  73. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +0 -500
  74. package/bundled/dev-pipeline/launch-feature-daemon.sh +0 -657
  75. package/bundled/dev-pipeline/launch-refactor-daemon.sh +0 -502
  76. package/bundled/dev-pipeline/lib/branch.sh +0 -326
  77. package/bundled/dev-pipeline/lib/common.sh +0 -1476
  78. package/bundled/dev-pipeline/lib/heartbeat.sh +0 -469
  79. package/bundled/dev-pipeline/reset-bug.sh +0 -425
  80. package/bundled/dev-pipeline/reset-feature.sh +0 -436
  81. package/bundled/dev-pipeline/reset-refactor.sh +0 -423
  82. package/bundled/dev-pipeline/run-bugfix.sh +0 -1430
  83. package/bundled/dev-pipeline/run-feature.sh +0 -1718
  84. package/bundled/dev-pipeline/run-recovery.sh +0 -648
  85. package/bundled/dev-pipeline/run-refactor.sh +0 -1463
  86. package/bundled/dev-pipeline/tests/test-path-resolution.sh +0 -100
  87. package/bundled/dev-pipeline-windows/.env.example +0 -36
  88. package/bundled/dev-pipeline-windows/README.md +0 -30
  89. package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +0 -533
  90. package/bundled/dev-pipeline-windows/assets/feature-list-example.json +0 -146
  91. package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +0 -137
  92. package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +0 -9
  93. package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +0 -9
  94. package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +0 -9
  95. package/bundled/dev-pipeline-windows/lib/branch.ps1 +0 -235
  96. package/bundled/dev-pipeline-windows/lib/common.ps1 +0 -991
  97. package/bundled/dev-pipeline-windows/lib/daemon.ps1 +0 -140
  98. package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +0 -1051
  99. package/bundled/dev-pipeline-windows/lib/reset.ps1 +0 -121
  100. package/bundled/dev-pipeline-windows/reset-bug.ps1 +0 -10
  101. package/bundled/dev-pipeline-windows/reset-feature.ps1 +0 -10
  102. package/bundled/dev-pipeline-windows/reset-refactor.ps1 +0 -10
  103. package/bundled/dev-pipeline-windows/run-bugfix.ps1 +0 -9
  104. package/bundled/dev-pipeline-windows/run-feature.ps1 +0 -9
  105. package/bundled/dev-pipeline-windows/run-recovery.ps1 +0 -179
  106. package/bundled/dev-pipeline-windows/run-refactor.ps1 +0 -9
  107. package/bundled/dev-pipeline-windows/scripts/check-session-status.py +0 -301
  108. package/bundled/dev-pipeline-windows/scripts/continuation.py +0 -374
  109. package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +0 -530
  110. package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +0 -2279
  111. package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +0 -763
  112. package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +0 -805
  113. package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +0 -841
  114. package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +0 -316
  115. package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +0 -134
  116. package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +0 -382
  117. package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +0 -399
  118. package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +0 -1362
  119. package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +0 -191
  120. package/bundled/dev-pipeline-windows/scripts/prizmkit-test-gate.py +0 -446
  121. package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +0 -1121
  122. package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +0 -173
  123. package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +0 -1789
  124. package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +0 -1327
  125. package/bundled/dev-pipeline-windows/scripts/utils.py +0 -542
  126. package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +0 -7
  127. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +0 -7
  128. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +0 -65
  129. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +0 -5
  130. package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +0 -7
  131. package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +0 -73
  132. package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +0 -589
  133. package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +0 -710
  134. package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +0 -791
  135. package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +0 -263
  136. package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +0 -326
  137. package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +0 -237
  138. package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +0 -340
  139. package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +0 -270
  140. package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +0 -7
  141. package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +0 -91
  142. package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +0 -34
  143. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +0 -10
  144. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +0 -12
  145. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +0 -7
  146. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +0 -8
  147. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +0 -9
  148. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +0 -6
  149. package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +0 -21
  150. package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +0 -21
  151. package/bundled/dev-pipeline-windows/templates/sections/log-size-awareness.md +0 -41
  152. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +0 -283
  153. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +0 -112
  154. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +0 -168
  155. package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +0 -82
  156. package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +0 -75
  157. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +0 -23
  158. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +0 -14
  159. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +0 -19
  160. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +0 -63
  161. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +0 -42
  162. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +0 -44
  163. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +0 -59
  164. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +0 -39
  165. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +0 -27
  166. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +0 -27
  167. package/bundled/dev-pipeline-windows/templates/sections/phase-prizmkit-test.md +0 -39
  168. package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +0 -35
  169. package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +0 -35
  170. package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +0 -73
  171. package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +0 -13
  172. package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +0 -21
  173. package/bundled/dev-pipeline-windows/templates/sections/session-context.md +0 -5
  174. package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +0 -6
  175. package/bundled/dev-pipeline-windows/templates/sections/task-contract.md +0 -34
  176. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +0 -48
  177. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +0 -48
  178. package/bundled/dev-pipeline-windows/templates/session-status-schema.json +0 -83
  179. package/bundled/skills-windows/app-planner/SKILL.md +0 -296
  180. package/bundled/skills-windows/app-planner/assets/app-design-guide.md +0 -101
  181. package/bundled/skills-windows/app-planner/references/architecture-decisions.md +0 -52
  182. package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +0 -101
  183. package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +0 -71
  184. package/bundled/skills-windows/app-planner/references/infrastructure-convention-discovery.md +0 -108
  185. package/bundled/skills-windows/app-planner/references/project-brief-guide.md +0 -82
  186. package/bundled/skills-windows/app-planner/references/project-conventions-discovery.md +0 -59
  187. package/bundled/skills-windows/app-planner/references/project-state-detection.md +0 -90
  188. package/bundled/skills-windows/app-planner/references/red-team-checklist.md +0 -40
  189. package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +0 -619
  190. package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +0 -285
  191. package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +0 -249
  192. package/bundled/skills-windows/app-planner/references/rules/backend/question-manifest.json +0 -46
  193. package/bundled/skills-windows/app-planner/references/rules/backend/template.md +0 -173
  194. package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +0 -382
  195. package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +0 -211
  196. package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +0 -184
  197. package/bundled/skills-windows/app-planner/references/rules/database/question-manifest.json +0 -39
  198. package/bundled/skills-windows/app-planner/references/rules/database/template.md +0 -158
  199. package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +0 -820
  200. package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +0 -188
  201. package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +0 -319
  202. package/bundled/skills-windows/app-planner/references/rules/frontend/question-manifest.json +0 -51
  203. package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +0 -339
  204. package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +0 -649
  205. package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +0 -290
  206. package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +0 -232
  207. package/bundled/skills-windows/app-planner/references/rules/mobile/question-manifest.json +0 -47
  208. package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +0 -175
  209. package/bundled/skills-windows/app-planner/references/rules-configuration.md +0 -46
  210. package/bundled/skills-windows/bug-fix-workflow/SKILL.md +0 -379
  211. package/bundled/skills-windows/bug-fix-workflow/references/bug-diagnosis.md +0 -41
  212. package/bundled/skills-windows/bug-planner/SKILL.md +0 -402
  213. package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +0 -43
  214. package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +0 -44
  215. package/bundled/skills-windows/bug-planner/references/error-recovery.md +0 -73
  216. package/bundled/skills-windows/bug-planner/references/input-formats.md +0 -53
  217. package/bundled/skills-windows/bug-planner/references/schema-validation.md +0 -25
  218. package/bundled/skills-windows/bug-planner/references/severity-rules.md +0 -16
  219. package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +0 -322
  220. package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +0 -304
  221. package/bundled/skills-windows/bugfix-pipeline-launcher/references/configuration.md +0 -84
  222. package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +0 -381
  223. package/bundled/skills-windows/feature-pipeline-launcher/references/configuration.md +0 -67
  224. package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +0 -462
  225. package/bundled/skills-windows/feature-planner/SKILL.md +0 -397
  226. package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +0 -64
  227. package/bundled/skills-windows/feature-planner/assets/planning-guide.md +0 -214
  228. package/bundled/skills-windows/feature-planner/references/browser-interaction.md +0 -59
  229. package/bundled/skills-windows/feature-planner/references/completeness-review.md +0 -57
  230. package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +0 -75
  231. package/bundled/skills-windows/feature-planner/references/error-recovery.md +0 -90
  232. package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +0 -112
  233. package/bundled/skills-windows/feature-planner/references/new-project-planning.md +0 -85
  234. package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +0 -1020
  235. package/bundled/skills-windows/feature-workflow/SKILL.md +0 -374
  236. package/bundled/skills-windows/feature-workflow/references/brainstorm-guide.md +0 -137
  237. package/bundled/skills-windows/prizm-kit/SKILL.md +0 -93
  238. package/bundled/skills-windows/prizmkit-code-review/SKILL.md +0 -161
  239. package/bundled/skills-windows/prizmkit-code-review/references/dev-agent-prompt.md +0 -30
  240. package/bundled/skills-windows/prizmkit-code-review/references/review-report-template.md +0 -31
  241. package/bundled/skills-windows/prizmkit-code-review/references/reviewer-agent-prompt.md +0 -66
  242. package/bundled/skills-windows/prizmkit-code-review/scripts/check_loop.py +0 -186
  243. package/bundled/skills-windows/prizmkit-committer/SKILL.md +0 -89
  244. package/bundled/skills-windows/prizmkit-deploy/SKILL.md +0 -444
  245. package/bundled/skills-windows/prizmkit-deploy/references/ci-cd-workflows.md +0 -115
  246. package/bundled/skills-windows/prizmkit-deploy/references/cloud-platform-deploy.md +0 -93
  247. package/bundled/skills-windows/prizmkit-deploy/references/data-safety-examples.md +0 -120
  248. package/bundled/skills-windows/prizmkit-deploy/references/database-setup.md +0 -46
  249. package/bundled/skills-windows/prizmkit-deploy/references/deploy-config-schema.md +0 -148
  250. package/bundled/skills-windows/prizmkit-deploy/references/deploy-history-schema.md +0 -62
  251. package/bundled/skills-windows/prizmkit-deploy/references/deployment-modes.md +0 -50
  252. package/bundled/skills-windows/prizmkit-deploy/references/direct-upload.md +0 -26
  253. package/bundled/skills-windows/prizmkit-deploy/references/dns-setup.md +0 -42
  254. package/bundled/skills-windows/prizmkit-deploy/references/docker-deploy.md +0 -31
  255. package/bundled/skills-windows/prizmkit-deploy/references/firewall-setup.md +0 -37
  256. package/bundled/skills-windows/prizmkit-deploy/references/live-validation-notes.md +0 -21
  257. package/bundled/skills-windows/prizmkit-deploy/references/nginx-blue-green.md +0 -59
  258. package/bundled/skills-windows/prizmkit-deploy/references/ssh-bootstrap-flow.md +0 -49
  259. package/bundled/skills-windows/prizmkit-deploy/references/ssh-execution-flow.md +0 -41
  260. package/bundled/skills-windows/prizmkit-deploy/references/ssh-takeover.md +0 -20
  261. package/bundled/skills-windows/prizmkit-deploy/references/ssl-setup.md +0 -56
  262. package/bundled/skills-windows/prizmkit-implement/SKILL.md +0 -71
  263. package/bundled/skills-windows/prizmkit-init/SKILL.md +0 -356
  264. package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +0 -82
  265. package/bundled/skills-windows/prizmkit-init/references/config-schema.md +0 -70
  266. package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +0 -41
  267. package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +0 -13
  268. package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +0 -9
  269. package/bundled/skills-windows/prizmkit-plan/SKILL.md +0 -102
  270. package/bundled/skills-windows/prizmkit-plan/assets/plan-template.md +0 -115
  271. package/bundled/skills-windows/prizmkit-plan/assets/spec-template.md +0 -73
  272. package/bundled/skills-windows/prizmkit-plan/references/clarify-guide.md +0 -67
  273. package/bundled/skills-windows/prizmkit-plan/references/examples.md +0 -85
  274. package/bundled/skills-windows/prizmkit-plan/references/verification-checklist.md +0 -60
  275. package/bundled/skills-windows/prizmkit-prizm-docs/SKILL.md +0 -129
  276. package/bundled/skills-windows/prizmkit-prizm-docs/assets/prizm-docs-format.md +0 -613
  277. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-init.md +0 -45
  278. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-rebuild.md +0 -15
  279. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-status.md +0 -14
  280. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-update.md +0 -19
  281. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-validate.md +0 -17
  282. package/bundled/skills-windows/prizmkit-retrospective/SKILL.md +0 -87
  283. package/bundled/skills-windows/prizmkit-retrospective/references/knowledge-injection-steps.md +0 -50
  284. package/bundled/skills-windows/prizmkit-retrospective/references/structural-sync-steps.md +0 -43
  285. package/bundled/skills-windows/prizmkit-test/SKILL.md +0 -227
  286. package/bundled/skills-windows/prizmkit-test/references/boundary-coverage-protocol.md +0 -220
  287. package/bundled/skills-windows/prizmkit-test/references/examples.md +0 -143
  288. package/bundled/skills-windows/prizmkit-test/references/service-boundary-test-catalog.md +0 -225
  289. package/bundled/skills-windows/prizmkit-test/references/test-generation-steps.md +0 -109
  290. package/bundled/skills-windows/prizmkit-test/references/test-report-template.md +0 -111
  291. package/bundled/skills-windows/prizmkit-test/scripts/validate_boundary_report.py +0 -347
  292. package/bundled/skills-windows/recovery-workflow/SKILL.md +0 -355
  293. package/bundled/skills-windows/recovery-workflow/evals/evals.json +0 -46
  294. package/bundled/skills-windows/recovery-workflow/references/detection.md +0 -58
  295. package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +0 -544
  296. package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +0 -346
  297. package/bundled/skills-windows/refactor-pipeline-launcher/references/configuration.md +0 -72
  298. package/bundled/skills-windows/refactor-planner/SKILL.md +0 -398
  299. package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +0 -292
  300. package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +0 -301
  301. package/bundled/skills-windows/refactor-planner/references/fast-path.md +0 -59
  302. package/bundled/skills-windows/refactor-planner/references/planning-phases.md +0 -135
  303. package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +0 -221
  304. package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +0 -858
  305. package/bundled/skills-windows/refactor-workflow/SKILL.md +0 -343
  306. package/bundled/skills-windows/refactor-workflow/references/brainstorm-guide.md +0 -116
  307. package/bundled/templates/hooks/diff-prizm-docs.sh +0 -158
  308. package/bundled/templates/hooks/prizm-pre-commit.sh +0 -108
  309. package/bundled/templates/hooks/validate-prizm-docs.sh +0 -139
@@ -0,0 +1,410 @@
1
+ """Runtime configuration and environment resolution primitives."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import os
7
+ import shutil
8
+ from collections.abc import Mapping
9
+ from dataclasses import dataclass
10
+ from pathlib import Path
11
+
12
+ from .paths import RuntimePaths
13
+
14
+
15
+ @dataclass(frozen=True)
16
+ class RuntimeEnvironment:
17
+ """Inputs that influence runtime configuration resolution."""
18
+
19
+ env_file: Path
20
+ config_file: Path
21
+ manifest_file: Path
22
+ installed_platform_markers: tuple[Path, ...]
23
+ path_entries: tuple[Path, ...]
24
+ sources: tuple[str, ...]
25
+
26
+
27
+ @dataclass(frozen=True)
28
+ class AIClientResolution:
29
+ """Resolved AI CLI command plus source and precedence metadata."""
30
+
31
+ command: str | None
32
+ platform: str | None
33
+ source: str
34
+ precedence: tuple[str, ...]
35
+ notes: tuple[str, ...] = ()
36
+
37
+
38
+ @dataclass(frozen=True)
39
+ class EffortValidationResult:
40
+ """Platform-aware validation result for PRIZMKIT_EFFORT."""
41
+
42
+ effort: str | None
43
+ platform: str | None
44
+ valid: bool
45
+ supported_values: tuple[str, ...]
46
+ message: str = ""
47
+
48
+
49
+ @dataclass(frozen=True)
50
+ class RuntimeConfig:
51
+ """Cohesive runtime configuration boundary for behavior porting."""
52
+
53
+ paths: RuntimePaths
54
+ environment: RuntimeEnvironment
55
+ ai_client: AIClientResolution
56
+ max_retries: int
57
+ heartbeat_interval_seconds: int
58
+ heartbeat_timeout_seconds: int
59
+ model: str | None
60
+ effort: str | None
61
+ effort_validation: EffortValidationResult
62
+ runtime_mode: str = "python-runtime-canonical"
63
+
64
+
65
+ AI_CLIENT_PRECEDENCE = (
66
+ "AI_CLI",
67
+ ".prizmkit/config.json:ai_cli",
68
+ ".prizmkit/manifest.json:platform",
69
+ ".prizmkit/config.json:platform",
70
+ "CODEBUDDY_CLI",
71
+ "installed-platform-markers",
72
+ "PATH:claude",
73
+ "PATH:cbc",
74
+ "PATH:codex",
75
+ )
76
+
77
+ _EFFORT_VALUES_BY_PLATFORM = {
78
+ "claude": ("low", "medium", "high", "xhigh", "max"),
79
+ "codex": ("low", "medium", "high", "xhigh"),
80
+ "codebuddy": ("low", "medium", "high", "xhigh"),
81
+ }
82
+
83
+
84
+ class RuntimeConfigError(ValueError):
85
+ """Raised when runtime configuration cannot be represented safely."""
86
+
87
+
88
+ def load_env_file(path: Path, base_env: Mapping[str, str] | None = None) -> dict[str, str]:
89
+ """Load a simple shell-style .env file without overriding base values.
90
+
91
+ This preserves the historical environment-file contract intentionally: comments, blank lines,
92
+ ``KEY=VALUE``, and one layer of single/double quotes are supported. Existing
93
+ keys in ``base_env`` win over file values.
94
+ """
95
+ merged = dict(base_env or {})
96
+ if not path.is_file():
97
+ return merged
98
+
99
+ try:
100
+ lines = path.read_text(encoding="utf-8").splitlines()
101
+ except OSError:
102
+ return merged
103
+
104
+ for raw_line in lines:
105
+ line = raw_line.strip()
106
+ if not line or line.startswith("#"):
107
+ continue
108
+ line = line.split("#", 1)[0].strip()
109
+ if not line or "=" not in line:
110
+ continue
111
+ key, value = line.split("=", 1)
112
+ key = key.strip()
113
+ if not key or not (key[0].isalpha() or key[0] == "_"):
114
+ continue
115
+ if not all(char.isalnum() or char == "_" for char in key):
116
+ continue
117
+ value = value.strip()
118
+ if len(value) >= 2 and value[0] == value[-1] and value[0] in "'\"":
119
+ value = value[1:-1]
120
+ if key not in merged:
121
+ merged[key] = value
122
+ return merged
123
+
124
+
125
+ def _path_entries(env: Mapping[str, str]) -> tuple[Path, ...]:
126
+ raw_path = env.get("PATH", "")
127
+ return tuple(Path(item) for item in raw_path.split(os.pathsep) if item)
128
+
129
+
130
+ def _int_from_env(env: Mapping[str, str], name: str, default: int) -> int:
131
+ raw_value = env.get(name)
132
+ if raw_value is None or raw_value.strip() == "":
133
+ return default
134
+ try:
135
+ return int(raw_value)
136
+ except ValueError:
137
+ return default
138
+
139
+
140
+ def _read_json_value(path: Path, key: str) -> str | None:
141
+ if not path.is_file():
142
+ return None
143
+ try:
144
+ data = json.loads(path.read_text(encoding="utf-8"))
145
+ except (OSError, json.JSONDecodeError):
146
+ return None
147
+ value = data.get(key)
148
+ return value if isinstance(value, str) and value.strip() else None
149
+
150
+
151
+ def _normalize_platform(platform: str | None) -> str:
152
+ return (platform or "").strip().lower()
153
+
154
+
155
+ def _cli_names_for_platform(platform: str | None) -> tuple[str, ...]:
156
+ normalized = _normalize_platform(platform)
157
+ if normalized == "codex":
158
+ return ("codex",)
159
+ if normalized == "claude":
160
+ return ("claude",)
161
+ if normalized == "codebuddy":
162
+ return ("cbc",)
163
+ if normalized == "both":
164
+ return ("claude", "cbc")
165
+ if normalized == "all":
166
+ return ("codex", "claude", "cbc")
167
+ return ()
168
+
169
+
170
+ def _known_platform_from_cli(cli_command: str | None) -> str | None:
171
+ if not cli_command:
172
+ return None
173
+ token = cli_command.split()[0].strip("'\"")
174
+ name = Path(token).name.lower()
175
+ if "claude" in name:
176
+ return "claude"
177
+ if "codex" in name:
178
+ return "codex"
179
+ if "cbc" in name or "codebuddy" in name:
180
+ return "codebuddy"
181
+ return None
182
+
183
+
184
+ def _concrete_platform(platform: str | None) -> str | None:
185
+ normalized = _normalize_platform(platform)
186
+ return normalized if normalized in {"claude", "codebuddy", "codex"} else None
187
+
188
+
189
+ def _resolve_cli_name(cli_name: str, env: Mapping[str, str]) -> str | None:
190
+ if cli_name == "cbc" and env.get("CODEBUDDY_CLI"):
191
+ return env["CODEBUDDY_CLI"]
192
+ return cli_name if shutil.which(cli_name, path=env.get("PATH", "")) else None
193
+
194
+
195
+ def _cli_for_platform(platform: str | None, env: Mapping[str, str]) -> str | None:
196
+ for cli_name in _cli_names_for_platform(platform):
197
+ resolved = _resolve_cli_name(cli_name, env)
198
+ if resolved:
199
+ return resolved
200
+ return None
201
+
202
+
203
+ def _expected_cli_text(platform: str | None) -> str:
204
+ return ", ".join(_cli_names_for_platform(platform))
205
+
206
+
207
+ def _installed_platform_cli(
208
+ paths: RuntimePaths,
209
+ env: Mapping[str, str],
210
+ ) -> tuple[str | None, str | None]:
211
+ if (
212
+ (paths.project_root / ".codex" / "agents" / "prizm-dev-team-dev.toml").is_file()
213
+ or (paths.project_root / ".agents" / "skills" / "prizm-kit" / "SKILL.md").is_file()
214
+ ):
215
+ resolved = _resolve_cli_name("codex", env)
216
+ if resolved:
217
+ return resolved, "installed-platform:codex"
218
+ if (paths.project_root / ".claude" / "commands" / "prizm-kit.md").is_file():
219
+ resolved = _resolve_cli_name("claude", env)
220
+ if resolved:
221
+ return resolved, "installed-platform:claude"
222
+ if (
223
+ (paths.project_root / ".codebuddy" / "agents" / "prizm-dev-team-dev.md").is_file()
224
+ or (paths.project_root / ".codebuddy" / "skills" / "prizm-kit" / "SKILL.md").is_file()
225
+ ):
226
+ resolved = _resolve_cli_name("cbc", env)
227
+ if resolved:
228
+ return resolved, "installed-platform:codebuddy"
229
+ return None, None
230
+
231
+
232
+ def _project_platform_for_cli(
233
+ cli_command: str | None,
234
+ env: Mapping[str, str],
235
+ manifest_platform: str | None,
236
+ config_platform: str | None,
237
+ ) -> str | None:
238
+ return (
239
+ _known_platform_from_cli(cli_command)
240
+ or _concrete_platform(env.get("PRIZMKIT_PLATFORM"))
241
+ or _concrete_platform(manifest_platform)
242
+ or _concrete_platform(config_platform)
243
+ or ("codebuddy" if cli_command else None)
244
+ )
245
+
246
+
247
+ def resolve_ai_client(
248
+ paths: RuntimePaths,
249
+ env: Mapping[str, str] | None = None,
250
+ ) -> AIClientResolution:
251
+ """Resolve the configured AI CLI using runtime precedence."""
252
+ runtime_env = dict(os.environ if env is None else env)
253
+ runtime_env = load_env_file(paths.prizmkit_dir / ".env", runtime_env)
254
+ return _resolve_ai_client(paths, runtime_env)
255
+
256
+
257
+ def _resolve_ai_client(paths: RuntimePaths, env: Mapping[str, str]) -> AIClientResolution:
258
+ config_ai_cli = _read_json_value(paths.prizmkit_dir / "config.json", "ai_cli")
259
+ config_platform = _read_json_value(paths.prizmkit_dir / "config.json", "platform")
260
+ manifest_platform = _read_json_value(paths.prizmkit_dir / "manifest.json", "platform")
261
+
262
+ explicit_command = env.get("AI_CLI")
263
+ if explicit_command:
264
+ return AIClientResolution(
265
+ command=explicit_command,
266
+ platform=_project_platform_for_cli(explicit_command, env, manifest_platform, config_platform),
267
+ source="environment:AI_CLI",
268
+ precedence=AI_CLIENT_PRECEDENCE,
269
+ )
270
+
271
+ if config_ai_cli:
272
+ return AIClientResolution(
273
+ command=config_ai_cli,
274
+ platform=_project_platform_for_cli(config_ai_cli, env, manifest_platform, config_platform),
275
+ source="prizmkit-config:ai_cli",
276
+ precedence=AI_CLIENT_PRECEDENCE,
277
+ )
278
+
279
+ for platform, source, configured_label in (
280
+ (manifest_platform, "prizmkit-manifest:platform", "Installed PrizmKit platform"),
281
+ (config_platform, "prizmkit-config:platform", "Configured PrizmKit platform"),
282
+ ):
283
+ resolved = _cli_for_platform(platform, env)
284
+ if resolved:
285
+ return AIClientResolution(
286
+ command=resolved,
287
+ platform=_project_platform_for_cli(resolved, env, manifest_platform, config_platform),
288
+ source=source,
289
+ precedence=AI_CLIENT_PRECEDENCE,
290
+ )
291
+ if _cli_names_for_platform(platform):
292
+ return AIClientResolution(
293
+ command=None,
294
+ platform=_concrete_platform(platform),
295
+ source=f"unresolved:{source}",
296
+ precedence=AI_CLIENT_PRECEDENCE,
297
+ notes=(
298
+ f"{configured_label} '{platform}' requires one of: "
299
+ f"{_expected_cli_text(platform)}. Install it or set AI_CLI.",
300
+ ),
301
+ )
302
+
303
+ if env.get("CODEBUDDY_CLI"):
304
+ command = env["CODEBUDDY_CLI"]
305
+ return AIClientResolution(
306
+ command=command,
307
+ platform=_project_platform_for_cli(command, env, manifest_platform, config_platform),
308
+ source="environment:CODEBUDDY_CLI",
309
+ precedence=AI_CLIENT_PRECEDENCE,
310
+ )
311
+
312
+ installed_command, installed_source = _installed_platform_cli(paths, env)
313
+ if installed_command:
314
+ return AIClientResolution(
315
+ command=installed_command,
316
+ platform=_project_platform_for_cli(installed_command, env, manifest_platform, config_platform),
317
+ source=installed_source or "installed-platform-markers",
318
+ precedence=AI_CLIENT_PRECEDENCE,
319
+ )
320
+
321
+ for candidate in ("claude", "cbc", "codex"):
322
+ resolved = _resolve_cli_name(candidate, env)
323
+ if resolved:
324
+ return AIClientResolution(
325
+ command=resolved,
326
+ platform=_project_platform_for_cli(resolved, env, manifest_platform, config_platform),
327
+ source=f"PATH:{candidate}",
328
+ precedence=AI_CLIENT_PRECEDENCE,
329
+ )
330
+
331
+ return AIClientResolution(
332
+ command=None,
333
+ platform=None,
334
+ source="unresolved",
335
+ precedence=AI_CLIENT_PRECEDENCE,
336
+ notes=("No supported AI CLI command was found in the provided environment.",),
337
+ )
338
+
339
+
340
+ def supported_effort_values(platform: str | None) -> tuple[str, ...]:
341
+ """Return supported PRIZMKIT_EFFORT values for the detected platform."""
342
+ return _EFFORT_VALUES_BY_PLATFORM.get(
343
+ _concrete_platform(platform) or "codebuddy",
344
+ _EFFORT_VALUES_BY_PLATFORM["codebuddy"],
345
+ )
346
+
347
+
348
+ def validate_effort(effort: str | None, platform: str | None) -> EffortValidationResult:
349
+ """Validate PRIZMKIT_EFFORT without exiting the process."""
350
+ supported = supported_effort_values(platform)
351
+ if effort is None or str(effort).strip() == "":
352
+ return EffortValidationResult(
353
+ effort=None,
354
+ platform=_concrete_platform(platform),
355
+ valid=True,
356
+ supported_values=supported,
357
+ )
358
+ normalized_effort = str(effort).strip()
359
+ valid = normalized_effort in supported
360
+ message = ""
361
+ if not valid:
362
+ label = {
363
+ "claude": "Claude Code",
364
+ "codex": "Codex",
365
+ "codebuddy": "CodeBuddy",
366
+ }.get(_concrete_platform(platform) or "codebuddy", "CodeBuddy")
367
+ message = (
368
+ f"PRIZMKIT_EFFORT='{normalized_effort}' is not supported by the detected CLI "
369
+ f"({label}). Supported values for {label}: {', '.join(supported)}"
370
+ )
371
+ return EffortValidationResult(
372
+ effort=normalized_effort,
373
+ platform=_concrete_platform(platform),
374
+ valid=valid,
375
+ supported_values=supported,
376
+ message=message,
377
+ )
378
+
379
+
380
+ def load_runtime_config(paths: RuntimePaths, env: Mapping[str, str] | None = None) -> RuntimeConfig:
381
+ """Load standard-library runtime configuration with canonical precedence."""
382
+ provided_env = dict(os.environ if env is None else env)
383
+ runtime_env = load_env_file(paths.prizmkit_dir / ".env", provided_env)
384
+ ai_client = _resolve_ai_client(paths, runtime_env)
385
+ effort = runtime_env.get("PRIZMKIT_EFFORT")
386
+ effort_validation = validate_effort(effort, ai_client.platform)
387
+ environment = RuntimeEnvironment(
388
+ env_file=paths.prizmkit_dir / ".env",
389
+ config_file=paths.prizmkit_dir / "config.json",
390
+ manifest_file=paths.prizmkit_dir / "manifest.json",
391
+ installed_platform_markers=(
392
+ paths.project_root / ".codebuddy",
393
+ paths.project_root / ".claude",
394
+ paths.project_root / ".codex",
395
+ ),
396
+ path_entries=_path_entries(runtime_env),
397
+ sources=("environment", "prizmkit-env", "prizmkit-config", "installed-platform-markers", "PATH"),
398
+ )
399
+
400
+ return RuntimeConfig(
401
+ paths=paths,
402
+ environment=environment,
403
+ ai_client=ai_client,
404
+ max_retries=_int_from_env(runtime_env, "MAX_RETRIES", 3),
405
+ heartbeat_interval_seconds=_int_from_env(runtime_env, "HEARTBEAT_INTERVAL", _int_from_env(runtime_env, "HEARTBEAT_INTERVAL_SECONDS", 30)),
406
+ heartbeat_timeout_seconds=_int_from_env(runtime_env, "HEARTBEAT_STALE_THRESHOLD", _int_from_env(runtime_env, "HEARTBEAT_TIMEOUT_SECONDS", 600)),
407
+ model=runtime_env.get("MODEL"),
408
+ effort=effort,
409
+ effort_validation=effort_validation,
410
+ )