prizmkit 1.1.99 → 1.1.101

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