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
@@ -22,6 +22,77 @@ ID_FIELDS = ["feature_id", "bug_id", "refactor_id"]
22
22
 
23
23
  LOGGER = setup_logging("check-session-status")
24
24
 
25
+ CONTEXT_OVERFLOW_CODE = "context_overflow"
26
+ CONTEXT_CODE_VALUES = {
27
+ "context_overflow",
28
+ "context_too_large",
29
+ "context_length_exceeded",
30
+ "model_context_window_exceeded",
31
+ }
32
+ CONTEXT_TEXT_PATTERNS = (
33
+ "input exceeds the context window",
34
+ "context window of this model",
35
+ "context window exceeded",
36
+ "maximum context length exceeded",
37
+ "prompt is too long",
38
+ "too many tokens",
39
+ "input token count exceeds",
40
+ )
41
+ REQUEST_TOO_LARGE_TEXT = "request too large"
42
+ REQUEST_TOO_LARGE_SEMANTICS = ("context", "token", "tokens", "prompt", "input", "model")
43
+ ERROR_LIKE_STATUSES = {"failed", "crashed", "timed_out", "context_overflow"}
44
+
45
+
46
+ def _flatten_values(value):
47
+ if isinstance(value, dict):
48
+ values = []
49
+ for child in value.values():
50
+ values.extend(_flatten_values(child))
51
+ return values
52
+ if isinstance(value, list):
53
+ values = []
54
+ for child in value:
55
+ values.extend(_flatten_values(child))
56
+ return values
57
+ if value is None:
58
+ return []
59
+ return [str(value)]
60
+
61
+
62
+ def _is_error_like_status(data):
63
+ status = str(data.get("status", "")).lower()
64
+ if status in ERROR_LIKE_STATUSES:
65
+ return True
66
+ if data.get("last_result_is_error") is True or data.get("is_error") is True:
67
+ return True
68
+ if data.get("api_error_status") not in (None, ""):
69
+ return True
70
+ errors = data.get("errors")
71
+ return isinstance(errors, list) and len(errors) > 0
72
+
73
+
74
+ def has_context_overflow_signal(data):
75
+ """Return true when session-status data carries a context overflow signal.
76
+
77
+ Success remains success: direct status handling happens before this helper.
78
+ Exact machine codes are accepted only from structured code fields. Natural
79
+ language context/token phrases require a failed/error-like status or an
80
+ explicit error field to avoid prompt/documentation false positives.
81
+ """
82
+ if not isinstance(data, dict):
83
+ return False
84
+ for field in ("fatal_error_code", "api_error_code", "error_code", "stop_reason"):
85
+ value = data.get(field)
86
+ if isinstance(value, str) and value.lower() in CONTEXT_CODE_VALUES:
87
+ return True
88
+ if not _is_error_like_status(data):
89
+ return False
90
+ text = " ".join(_flatten_values(data)).lower()
91
+ if any(pattern in text for pattern in CONTEXT_TEXT_PATTERNS):
92
+ return True
93
+ return REQUEST_TOO_LARGE_TEXT in text and any(
94
+ semantic in text for semantic in REQUEST_TOO_LARGE_SEMANTICS
95
+ )
25
96
 
26
97
  def parse_args():
27
98
  parser = argparse.ArgumentParser(
@@ -79,12 +150,14 @@ def determine_status(data):
79
150
  """Determine the single-line status string from the parsed data.
80
151
 
81
152
  Returns one of: success, partial_resumable, partial_not_resumable,
82
- failed, commit_missing, docs_missing, merge_conflict.
153
+ failed, commit_missing, docs_missing, merge_conflict, context_overflow.
83
154
  """
84
155
  status = data.get("status", "")
85
156
 
86
157
  if status == "success":
87
158
  return "success"
159
+ if status == "context_overflow" or has_context_overflow_signal(data):
160
+ return "context_overflow"
88
161
  elif status == "partial":
89
162
  can_resume = data.get("can_resume", False)
90
163
  if can_resume:
@@ -0,0 +1,374 @@
1
+ """Continuation prompt and durable handoff helpers for pipeline prompt generators."""
2
+
3
+ import os
4
+
5
+ SUPPORTED_CONTINUATION_MODES = {"context_overflow"}
6
+ TASK_TYPES = {"feature", "bugfix", "refactor"}
7
+
8
+
9
+ def add_continuation_args(parser, default_task_type):
10
+ """Add continuation-mode CLI arguments to a prompt generator parser."""
11
+ parser.add_argument(
12
+ "--continuation-mode",
13
+ choices=sorted(SUPPORTED_CONTINUATION_MODES),
14
+ default="",
15
+ help="Continuation recovery mode, currently context_overflow.",
16
+ )
17
+ parser.add_argument(
18
+ "--previous-session-id",
19
+ default="",
20
+ help="Session ID that triggered this continuation.",
21
+ )
22
+ parser.add_argument(
23
+ "--continuation-count",
24
+ default="0",
25
+ help="Cumulative continuation count for this task.",
26
+ )
27
+ parser.add_argument(
28
+ "--context-overflow-count",
29
+ default="0",
30
+ help="Cumulative context overflow count for this task.",
31
+ )
32
+ parser.add_argument(
33
+ "--task-type",
34
+ choices=sorted(TASK_TYPES),
35
+ default=default_task_type,
36
+ help="Task type for continuation handoff metadata.",
37
+ )
38
+ parser.add_argument(
39
+ "--active-dev-branch",
40
+ default="",
41
+ help="Development branch being reused by the continuation.",
42
+ )
43
+ parser.add_argument(
44
+ "--base-branch",
45
+ default="",
46
+ help="Base branch preserved across continuation sessions.",
47
+ )
48
+ parser.add_argument(
49
+ "--continuation-summary-path",
50
+ default="",
51
+ help="Durable continuation summary artifact path.",
52
+ )
53
+
54
+
55
+ def is_continuation(args):
56
+ """Return True when continuation mode is active."""
57
+ return bool(getattr(args, "continuation_mode", ""))
58
+
59
+
60
+ def _safe_int(value, default=0):
61
+ try:
62
+ parsed = int(value)
63
+ except (TypeError, ValueError):
64
+ return default
65
+ return parsed if parsed >= 0 else default
66
+
67
+
68
+ def _norm(path):
69
+ return str(path).replace(os.sep, "/")
70
+
71
+
72
+ def _rel_path(project_root, path):
73
+ """Return a stable project-relative path when possible."""
74
+ if not path:
75
+ return "(not available)"
76
+ text = str(path)
77
+ if text.startswith(".prizmkit/") or text.startswith(".prizmkit\\"):
78
+ return _norm(text)
79
+ try:
80
+ abs_path = os.path.abspath(text)
81
+ root = os.path.abspath(project_root)
82
+ rel = os.path.relpath(abs_path, root)
83
+ if not rel.startswith(".."): # keep paths under the project concise
84
+ return _norm(rel)
85
+ except ValueError:
86
+ pass
87
+ return _norm(text)
88
+
89
+
90
+ def _dedupe(items):
91
+ result = []
92
+ seen = set()
93
+ for item in items:
94
+ if not item:
95
+ continue
96
+ key = _norm(item)
97
+ if key in seen:
98
+ continue
99
+ seen.add(key)
100
+ result.append(item)
101
+ return result
102
+
103
+
104
+ def continuation_summary_paths(task_type, task_id, task_slug, override_path=""):
105
+ """Return all durable continuation summary paths to write."""
106
+ if task_type == "feature":
107
+ default_path = os.path.join(
108
+ ".prizmkit", "specs", task_slug, "continuation-summary.md",
109
+ )
110
+ return _dedupe([override_path, default_path])
111
+
112
+ task_dir = "bugfix" if task_type == "bugfix" else "refactor"
113
+ task_local = os.path.join(
114
+ ".prizmkit", task_dir, task_id, "continuation-summary.md",
115
+ )
116
+ specs_path = os.path.join(
117
+ ".prizmkit", "specs", task_slug or task_id, "continuation-summary.md",
118
+ )
119
+ return _dedupe([override_path, specs_path, task_local])
120
+
121
+
122
+ def durable_paths(task_type, task_id, task_slug):
123
+ """Return stable durable artifact paths for a task."""
124
+ if task_type == "feature":
125
+ artifact_dir = os.path.join(".prizmkit", "specs", task_slug)
126
+ elif task_type == "bugfix":
127
+ artifact_dir = os.path.join(".prizmkit", "bugfix", task_id)
128
+ else:
129
+ artifact_dir = os.path.join(".prizmkit", "refactor", task_id)
130
+
131
+ return {
132
+ "artifact_dir": artifact_dir,
133
+ "checkpoint": os.path.join(artifact_dir, "workflow-checkpoint.json"),
134
+ "plan": os.path.join(artifact_dir, "plan.md"),
135
+ "context_snapshot": os.path.join(artifact_dir, "context-snapshot.md"),
136
+ "failure_log": os.path.join(artifact_dir, "failure-log.md"),
137
+ }
138
+
139
+
140
+ def runtime_paths(args, project_root, task_type, task_id, previous_session_id):
141
+ """Return fresh runtime paths for the new session and previous log pointer."""
142
+ output_path = getattr(args, "output", "")
143
+ session_dir = os.path.dirname(os.path.abspath(output_path)) if output_path else ""
144
+ logs_dir = os.path.join(session_dir, "logs") if session_dir else ""
145
+ session_status = os.path.join(session_dir, "session-status.json") if session_dir else ""
146
+
147
+ state_dir = getattr(args, "state_dir", "") or os.path.join(
148
+ ".prizmkit", "state", "features" if task_type == "feature" else task_type,
149
+ )
150
+ previous_log = "(unknown)"
151
+ if previous_session_id:
152
+ previous_log = os.path.join(
153
+ state_dir, task_id, "sessions", previous_session_id, "logs", "session.log",
154
+ )
155
+
156
+ return {
157
+ "session_dir": _rel_path(project_root, session_dir),
158
+ "bootstrap_prompt": _rel_path(project_root, output_path),
159
+ "session_log": _rel_path(project_root, os.path.join(logs_dir, "session.log")),
160
+ "progress_json": _rel_path(project_root, os.path.join(logs_dir, "progress.json")),
161
+ "log_monitor_status": _rel_path(project_root, os.path.join(logs_dir, "log-monitor-status.txt")),
162
+ "log_monitor_baseline": _rel_path(project_root, os.path.join(logs_dir, "log-monitor-baseline.txt")),
163
+ "pid_file": _rel_path(project_root, os.path.join(logs_dir, "ai.pid")),
164
+ "session_status": _rel_path(project_root, session_status),
165
+ "previous_session_log": _rel_path(project_root, previous_log),
166
+ }
167
+
168
+
169
+ def checkpoint_cursor(checkpoint):
170
+ """Summarize current checkpoint state and cursor."""
171
+ steps = checkpoint.get("steps", []) if isinstance(checkpoint, dict) else []
172
+ completed = []
173
+ skipped = []
174
+ in_progress = []
175
+ pending = []
176
+ failed = []
177
+ first_cursor = None
178
+
179
+ for step in steps:
180
+ skill = step.get("skill", "unknown")
181
+ label = "{} ({})".format(step.get("id", "?"), skill)
182
+ status = step.get("status", "pending")
183
+ if status == "completed":
184
+ completed.append(label)
185
+ elif status == "skipped":
186
+ skipped.append(label)
187
+ elif status == "in_progress":
188
+ in_progress.append(label)
189
+ if first_cursor is None:
190
+ first_cursor = label
191
+ elif status == "failed":
192
+ failed.append(label)
193
+ if first_cursor is None:
194
+ first_cursor = label
195
+ else:
196
+ pending.append(label)
197
+ if first_cursor is None:
198
+ first_cursor = label
199
+
200
+ if first_cursor is None:
201
+ first_cursor = "(all checkpoint steps completed or skipped)"
202
+
203
+ return {
204
+ "completed": completed,
205
+ "skipped": skipped,
206
+ "in_progress": in_progress,
207
+ "pending": pending,
208
+ "failed": failed,
209
+ "first_cursor": first_cursor,
210
+ }
211
+
212
+
213
+ def _list_or_none(values):
214
+ if not values:
215
+ return "- (none)"
216
+ return "\n".join("- {}".format(value) for value in values)
217
+
218
+
219
+ def _build_summary(context):
220
+ cursor = context["cursor"]
221
+ durable = context["durable"]
222
+ runtime = context["runtime"]
223
+ summary_paths = context["summary_paths"]
224
+ lines = [
225
+ "# Continuation Summary",
226
+ "",
227
+ "## Reason",
228
+ "",
229
+ "- Continuation mode: {}".format(context["mode"]),
230
+ "- This continuation was started after context overflow.",
231
+ "- This artifact is the durable handoff summary; do not rely on the previous full transcript.",
232
+ "",
233
+ "## Previous Session",
234
+ "",
235
+ "- Previous session id: {}".format(context["previous_session_id"] or "(unknown)"),
236
+ "- Previous session log: {}".format(runtime["previous_session_log"]),
237
+ "- Previous full session.log should only be read if synthesized artifacts are insufficient.",
238
+ "",
239
+ "## Task Identity",
240
+ "",
241
+ "- Task type: {}".format(context["task_type"]),
242
+ "- Task id: {}".format(context["task_id"]),
243
+ "- Task slug: {}".format(context["task_slug"]),
244
+ "- Active dev branch: {}".format(context["active_dev_branch"] or "(preserve current worktree branch)"),
245
+ "- Base branch: {}".format(context["base_branch"] or "(unknown)"),
246
+ "- Continuation count: {}".format(context["continuation_count"]),
247
+ "- Context overflow count: {}".format(context["context_overflow_count"]),
248
+ "",
249
+ "## Observed Partial Progress",
250
+ "",
251
+ "- First pending/in-progress checkpoint step: {}".format(cursor["first_cursor"]),
252
+ "- Completed checkpoint steps:",
253
+ _list_or_none(cursor["completed"]),
254
+ "- Skipped checkpoint steps:",
255
+ _list_or_none(cursor["skipped"]),
256
+ "- In-progress checkpoint steps:",
257
+ _list_or_none(cursor["in_progress"]),
258
+ "- Pending checkpoint steps:",
259
+ _list_or_none(cursor["pending"]),
260
+ "- Failed checkpoint steps:",
261
+ _list_or_none(cursor["failed"]),
262
+ "",
263
+ "## Durable Pointers",
264
+ "",
265
+ "- Start with current worktree state: `git status` and `git diff`.",
266
+ "- Durable task artifact directory: {}".format(_norm(durable["artifact_dir"])),
267
+ "- Workflow checkpoint: {}".format(_norm(durable["checkpoint"])),
268
+ "- Context snapshot: {}".format(_norm(durable["context_snapshot"])),
269
+ "- Plan: {}".format(_norm(durable["plan"])),
270
+ "- Failure log: {}".format(_norm(durable["failure_log"])),
271
+ "- Continuation summaries:",
272
+ _list_or_none([_norm(path) for path in summary_paths]),
273
+ "",
274
+ ]
275
+ return "\n".join(lines)
276
+
277
+
278
+ def _build_addendum(context):
279
+ cursor = context["cursor"]
280
+ durable = context["durable"]
281
+ runtime = context["runtime"]
282
+ summary_paths = context["summary_paths"]
283
+ lines = [
284
+ "## Continuation Addendum — Context Overflow Recovery",
285
+ "",
286
+ "This is an automatic continuation after context overflow.",
287
+ "This is a fresh headless AI CLI session for the same task.",
288
+ "Continue on the current branch/worktree.",
289
+ "Do not reset, clean, switch branches, or discard work.",
290
+ "",
291
+ "### Required First Actions",
292
+ "",
293
+ "- Start with `git status` and `git diff`.",
294
+ "- Reuse the same durable task artifact directory: `{}`.".format(_norm(durable["artifact_dir"])),
295
+ "- Treat completed/skipped checkpoint steps as already done.",
296
+ "- Continue from the first pending/in-progress checkpoint step: `{}`.".format(cursor["first_cursor"]),
297
+ "- Do not read the previous full `session.log` unless explicitly necessary.",
298
+ "- If previous runtime context is needed, prefer synthesized artifacts and summaries over logs.",
299
+ "- Do not attempt `/compact` as the recovery mechanism.",
300
+ "",
301
+ "### Preserved Durable Context",
302
+ "",
303
+ "- Task type: `{}`".format(context["task_type"]),
304
+ "- Task id: `{}`".format(context["task_id"]),
305
+ "- Task slug: `{}`".format(context["task_slug"]),
306
+ "- Dev branch: `{}`".format(context["active_dev_branch"] or "(current branch)"),
307
+ "- Base branch: `{}`".format(context["base_branch"] or "(unknown)"),
308
+ "- Checkpoint path: `{}`".format(_norm(durable["checkpoint"])),
309
+ "- Plan path: `{}`".format(_norm(durable["plan"])),
310
+ "- Context snapshot path: `{}`".format(_norm(durable["context_snapshot"])),
311
+ "- Failure log path: `{}`".format(_norm(durable["failure_log"])),
312
+ "- Continuation summary path(s): `{}`".format(", ".join(_norm(p) for p in summary_paths)),
313
+ "- Continuation count: `{}`".format(context["continuation_count"]),
314
+ "- Context overflow count: `{}`".format(context["context_overflow_count"]),
315
+ "- Previous session id: `{}`".format(context["previous_session_id"] or "(unknown)"),
316
+ "- Previous session log reference: `{}`".format(runtime["previous_session_log"]),
317
+ "",
318
+ "### Fresh Session Runtime Paths",
319
+ "",
320
+ "- Fresh session directory: `{}`".format(runtime["session_dir"]),
321
+ "- Generated bootstrap prompt path: `{}`".format(runtime["bootstrap_prompt"]),
322
+ "- Session log path: `{}`".format(runtime["session_log"]),
323
+ "- Progress JSON path: `{}`".format(runtime["progress_json"]),
324
+ "- Log monitor status path: `{}`".format(runtime["log_monitor_status"]),
325
+ "- Log monitor baseline path: `{}`".format(runtime["log_monitor_baseline"]),
326
+ "- PID file: `{}`".format(runtime["pid_file"]),
327
+ "- Session status file: `{}`".format(runtime["session_status"]),
328
+ "",
329
+ ]
330
+ return "\n".join(lines)
331
+
332
+
333
+ def append_continuation_handoff(rendered_prompt, args, project_root, task_type,
334
+ task_id, task_slug, checkpoint,
335
+ summary_paths=None):
336
+ """Write continuation summaries and append the addendum to a prompt."""
337
+ if not is_continuation(args):
338
+ return rendered_prompt
339
+
340
+ mode = getattr(args, "continuation_mode", "")
341
+ if mode not in SUPPORTED_CONTINUATION_MODES:
342
+ raise ValueError("Unsupported continuation mode: {}".format(mode))
343
+
344
+ durable = durable_paths(task_type, task_id, task_slug)
345
+ paths = summary_paths or continuation_summary_paths(
346
+ task_type, task_id, task_slug, getattr(args, "continuation_summary_path", ""),
347
+ )
348
+ paths = [_rel_path(project_root, path) for path in paths]
349
+ previous_session_id = getattr(args, "previous_session_id", "")
350
+ context = {
351
+ "mode": mode,
352
+ "task_type": task_type,
353
+ "task_id": task_id,
354
+ "task_slug": task_slug,
355
+ "previous_session_id": previous_session_id,
356
+ "continuation_count": _safe_int(getattr(args, "continuation_count", 0)),
357
+ "context_overflow_count": _safe_int(getattr(args, "context_overflow_count", 0)),
358
+ "active_dev_branch": getattr(args, "active_dev_branch", ""),
359
+ "base_branch": getattr(args, "base_branch", ""),
360
+ "durable": durable,
361
+ "runtime": runtime_paths(args, project_root, task_type, task_id, previous_session_id),
362
+ "cursor": checkpoint_cursor(checkpoint or {}),
363
+ "summary_paths": paths,
364
+ }
365
+
366
+ summary_text = _build_summary(context)
367
+ for summary_path in paths:
368
+ abs_summary = os.path.join(project_root, summary_path)
369
+ os.makedirs(os.path.dirname(abs_summary), exist_ok=True)
370
+ with open(abs_summary, "w", encoding="utf-8") as f:
371
+ f.write(summary_text)
372
+
373
+ addendum = _build_addendum(context)
374
+ return rendered_prompt.rstrip() + "\n\n" + addendum