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,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
+ )