gsd-pi 2.50.0-dev.d210a87 → 2.50.0

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 (509) hide show
  1. package/README.md +0 -2
  2. package/dist/cli.js +0 -26
  3. package/dist/loader.js +0 -4
  4. package/dist/resource-loader.d.ts +1 -4
  5. package/dist/resource-loader.js +3 -138
  6. package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -3
  7. package/dist/resources/extensions/bg-shell/interaction.js +1 -3
  8. package/dist/resources/extensions/bg-shell/process-manager.js +1 -4
  9. package/dist/resources/extensions/claude-code-cli/partial-builder.js +0 -5
  10. package/dist/resources/extensions/gsd/auto/phases.js +1 -16
  11. package/dist/resources/extensions/gsd/auto/session.js +0 -5
  12. package/dist/resources/extensions/gsd/auto-dashboard.js +3 -22
  13. package/dist/resources/extensions/gsd/auto-dispatch.js +54 -81
  14. package/dist/resources/extensions/gsd/auto-post-unit.js +76 -37
  15. package/dist/resources/extensions/gsd/auto-prompts.js +0 -57
  16. package/dist/resources/extensions/gsd/auto-recovery.js +25 -21
  17. package/dist/resources/extensions/gsd/auto.js +5 -15
  18. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +0 -16
  19. package/dist/resources/extensions/gsd/crash-recovery.js +2 -6
  20. package/dist/resources/extensions/gsd/custom-execution-policy.js +2 -3
  21. package/dist/resources/extensions/gsd/custom-verification.js +1 -3
  22. package/dist/resources/extensions/gsd/custom-workflow-engine.js +2 -3
  23. package/dist/resources/extensions/gsd/dashboard-overlay.js +0 -4
  24. package/dist/resources/extensions/gsd/detection.js +3 -589
  25. package/dist/resources/extensions/gsd/dispatch-guard.js +1 -2
  26. package/dist/resources/extensions/gsd/docs/preferences-reference.md +0 -15
  27. package/dist/resources/extensions/gsd/files.js +1 -5
  28. package/dist/resources/extensions/gsd/guided-flow.js +0 -10
  29. package/dist/resources/extensions/gsd/init-wizard.js +1 -9
  30. package/dist/resources/extensions/gsd/model-router.js +0 -25
  31. package/dist/resources/extensions/gsd/notifications.js +0 -23
  32. package/dist/resources/extensions/gsd/preferences-skills.js +5 -11
  33. package/dist/resources/extensions/gsd/preferences-types.js +0 -1
  34. package/dist/resources/extensions/gsd/preferences-validation.js +0 -25
  35. package/dist/resources/extensions/gsd/preferences.js +0 -3
  36. package/dist/resources/extensions/gsd/prompts/forensics.md +7 -11
  37. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +1 -6
  38. package/dist/resources/extensions/gsd/provider-error-pause.js +0 -8
  39. package/dist/resources/extensions/gsd/rule-registry.js +11 -10
  40. package/dist/resources/extensions/gsd/session-forensics.js +3 -7
  41. package/dist/resources/extensions/gsd/skill-discovery.js +2 -3
  42. package/dist/resources/extensions/gsd/skill-health.js +2 -2
  43. package/dist/resources/extensions/gsd/skill-telemetry.js +5 -15
  44. package/dist/resources/extensions/gsd/state.js +5 -17
  45. package/dist/resources/extensions/gsd/templates/milestone-validation.md +0 -12
  46. package/dist/resources/extensions/gsd/templates/preferences.md +0 -2
  47. package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +9 -28
  48. package/dist/resources/extensions/gsd/undo.js +7 -8
  49. package/dist/resources/extensions/gsd/unit-runtime.js +1 -2
  50. package/dist/resources/extensions/gsd/verification-gate.js +1 -3
  51. package/dist/web/standalone/.next/BUILD_ID +1 -1
  52. package/dist/web/standalone/.next/app-path-routes-manifest.json +16 -17
  53. package/dist/web/standalone/.next/build-manifest.json +4 -4
  54. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  55. package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
  56. package/dist/web/standalone/.next/required-server-files.json +3 -3
  57. package/dist/web/standalone/.next/routes-manifest.json +0 -6
  58. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  59. package/dist/web/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  60. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  61. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  62. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  63. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  64. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  65. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  66. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  67. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  68. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  69. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  70. package/dist/web/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  71. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  72. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  73. package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
  74. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  75. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  76. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  77. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  78. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  79. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  80. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  82. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  83. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  85. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  86. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  87. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  88. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  89. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  90. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  91. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  92. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js.nft.json +1 -1
  94. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  95. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  96. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  97. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  100. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js.nft.json +1 -1
  103. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  106. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  107. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  109. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  111. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  112. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  113. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  115. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  117. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  118. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  121. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  124. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  125. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  127. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  130. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  133. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  135. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  136. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  137. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/preferences/route.js.nft.json +1 -1
  139. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  142. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  145. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +26 -2
  147. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js.nft.json +1 -1
  148. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  151. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  152. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  154. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  156. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  157. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  160. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  163. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  166. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  169. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  172. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  175. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  177. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js.nft.json +1 -1
  178. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  179. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  180. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js.nft.json +1 -1
  181. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  183. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  184. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  186. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  187. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  188. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  189. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js.nft.json +1 -1
  190. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  191. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  192. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  193. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  195. package/dist/web/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  196. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  197. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  198. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  199. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  200. package/dist/web/standalone/.next/server/app/index.html +1 -1
  201. package/dist/web/standalone/.next/server/app/index.rsc +5 -5
  202. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  203. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  204. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  205. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  206. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  207. package/dist/web/standalone/.next/server/app/page.js +2 -2
  208. package/dist/web/standalone/.next/server/app/page.js.nft.json +1 -1
  209. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  210. package/dist/web/standalone/.next/server/app-paths-manifest.json +16 -17
  211. package/dist/web/standalone/.next/server/chunks/229.js +12 -0
  212. package/dist/web/standalone/.next/server/chunks/441.js +2 -0
  213. package/dist/web/standalone/.next/server/chunks/471.js +13 -0
  214. package/dist/web/standalone/.next/server/chunks/{4741.js → 741.js} +1 -1
  215. package/dist/web/standalone/.next/server/functions-config-manifest.json +0 -1
  216. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  217. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  218. package/dist/web/standalone/.next/server/middleware.js +3 -3
  219. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  220. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  221. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  222. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  223. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  224. package/dist/web/standalone/.next/server/webpack-runtime.js +1 -1
  225. package/dist/web/standalone/.next/static/MQOhBnkC_TLtNn_JvZWDj/_buildManifest.js +1 -0
  226. package/dist/web/standalone/.next/static/chunks/4024.7c75ac378de0f2b5.js +9 -0
  227. package/dist/web/standalone/.next/static/chunks/{2008.817d0885545aaea9.js → 485.243af25f0cdf50d6.js} +6 -6
  228. package/dist/web/standalone/.next/static/chunks/app/_global-error/page-d83ba70a25a85472.js +1 -0
  229. package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
  230. package/dist/web/standalone/.next/static/chunks/app/api/boot/route-d83ba70a25a85472.js +1 -0
  231. package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/input/route-d83ba70a25a85472.js +1 -0
  232. package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/resize/route-d83ba70a25a85472.js +1 -0
  233. package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/stream/route-d83ba70a25a85472.js +1 -0
  234. package/dist/web/standalone/.next/static/chunks/app/api/browse-directories/route-d83ba70a25a85472.js +1 -0
  235. package/dist/web/standalone/.next/static/chunks/app/api/captures/route-d83ba70a25a85472.js +1 -0
  236. package/dist/web/standalone/.next/static/chunks/app/api/cleanup/route-d83ba70a25a85472.js +1 -0
  237. package/dist/web/standalone/.next/static/chunks/app/api/dev-mode/route-d83ba70a25a85472.js +1 -0
  238. package/dist/web/standalone/.next/static/chunks/app/api/doctor/route-d83ba70a25a85472.js +1 -0
  239. package/dist/web/standalone/.next/static/chunks/app/api/export-data/route-d83ba70a25a85472.js +1 -0
  240. package/dist/web/standalone/.next/static/chunks/app/api/files/route-d83ba70a25a85472.js +1 -0
  241. package/dist/web/standalone/.next/static/chunks/app/api/forensics/route-d83ba70a25a85472.js +1 -0
  242. package/dist/web/standalone/.next/static/chunks/app/api/git/route-d83ba70a25a85472.js +1 -0
  243. package/dist/web/standalone/.next/static/chunks/app/api/history/route-d83ba70a25a85472.js +1 -0
  244. package/dist/web/standalone/.next/static/chunks/app/api/hooks/route-d83ba70a25a85472.js +1 -0
  245. package/dist/web/standalone/.next/static/chunks/app/api/inspect/route-d83ba70a25a85472.js +1 -0
  246. package/dist/web/standalone/.next/static/chunks/app/api/knowledge/route-d83ba70a25a85472.js +1 -0
  247. package/dist/web/standalone/.next/static/chunks/app/api/live-state/route-d83ba70a25a85472.js +1 -0
  248. package/dist/web/standalone/.next/static/chunks/app/api/onboarding/route-d83ba70a25a85472.js +1 -0
  249. package/dist/web/standalone/.next/static/chunks/app/api/preferences/route-d83ba70a25a85472.js +1 -0
  250. package/dist/web/standalone/.next/static/chunks/app/api/projects/route-d83ba70a25a85472.js +1 -0
  251. package/dist/web/standalone/.next/static/chunks/app/api/recovery/route-d83ba70a25a85472.js +1 -0
  252. package/dist/web/standalone/.next/static/chunks/app/api/remote-questions/route-d83ba70a25a85472.js +1 -0
  253. package/dist/web/standalone/.next/static/chunks/app/api/session/browser/route-d83ba70a25a85472.js +1 -0
  254. package/dist/web/standalone/.next/static/chunks/app/api/session/command/route-d83ba70a25a85472.js +1 -0
  255. package/dist/web/standalone/.next/static/chunks/app/api/session/events/route-d83ba70a25a85472.js +1 -0
  256. package/dist/web/standalone/.next/static/chunks/app/api/session/manage/route-d83ba70a25a85472.js +1 -0
  257. package/dist/web/standalone/.next/static/chunks/app/api/settings-data/route-d83ba70a25a85472.js +1 -0
  258. package/dist/web/standalone/.next/static/chunks/app/api/shutdown/route-d83ba70a25a85472.js +1 -0
  259. package/dist/web/standalone/.next/static/chunks/app/api/skill-health/route-d83ba70a25a85472.js +1 -0
  260. package/dist/web/standalone/.next/static/chunks/app/api/steer/route-d83ba70a25a85472.js +1 -0
  261. package/dist/web/standalone/.next/static/chunks/app/api/switch-root/route-d83ba70a25a85472.js +1 -0
  262. package/dist/web/standalone/.next/static/chunks/app/api/terminal/input/route-d83ba70a25a85472.js +1 -0
  263. package/dist/web/standalone/.next/static/chunks/app/api/terminal/resize/route-d83ba70a25a85472.js +1 -0
  264. package/dist/web/standalone/.next/static/chunks/app/api/terminal/sessions/route-d83ba70a25a85472.js +1 -0
  265. package/dist/web/standalone/.next/static/chunks/app/api/terminal/stream/route-d83ba70a25a85472.js +1 -0
  266. package/dist/web/standalone/.next/static/chunks/app/api/terminal/upload/route-d83ba70a25a85472.js +1 -0
  267. package/dist/web/standalone/.next/static/chunks/app/api/undo/route-d83ba70a25a85472.js +1 -0
  268. package/dist/web/standalone/.next/static/chunks/app/api/update/route-d83ba70a25a85472.js +1 -0
  269. package/dist/web/standalone/.next/static/chunks/app/api/visualizer/route-d83ba70a25a85472.js +1 -0
  270. package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
  271. package/dist/web/standalone/.next/static/chunks/app/page-12dd5ece0df4badc.js +1 -0
  272. package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
  273. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-d83ba70a25a85472.js +1 -0
  274. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-d83ba70a25a85472.js +1 -0
  275. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
  276. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-d83ba70a25a85472.js +1 -0
  277. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d83ba70a25a85472.js +1 -0
  278. package/dist/web/standalone/.next/static/chunks/webpack-2473ce2c3879fff4.js +1 -0
  279. package/dist/web/standalone/.next/static/css/dd4ae3f58ac9b600.css +1 -0
  280. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  281. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  282. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  283. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  284. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  285. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  286. package/dist/web/standalone/server.js +1 -1
  287. package/package.json +1 -1
  288. package/packages/pi-ai/dist/types.d.ts +0 -1
  289. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  290. package/packages/pi-ai/dist/types.js.map +1 -1
  291. package/packages/pi-ai/pnpm-lock.yaml +2022 -0
  292. package/packages/pi-ai/src/types.ts +1 -1
  293. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +0 -1
  294. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  295. package/packages/pi-coding-agent/dist/core/agent-session.js +0 -1
  296. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  297. package/packages/pi-coding-agent/dist/core/bash-executor.d.ts +1 -3
  298. package/packages/pi-coding-agent/dist/core/bash-executor.d.ts.map +1 -1
  299. package/packages/pi-coding-agent/dist/core/bash-executor.js +1 -10
  300. package/packages/pi-coding-agent/dist/core/bash-executor.js.map +1 -1
  301. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  302. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  303. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  304. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +0 -1
  305. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  306. package/packages/pi-coding-agent/dist/core/extensions/runner.js +0 -13
  307. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  308. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +1 -19
  309. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  310. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  311. package/packages/pi-coding-agent/dist/core/extensions/wrapper.d.ts.map +1 -1
  312. package/packages/pi-coding-agent/dist/core/extensions/wrapper.js +0 -8
  313. package/packages/pi-coding-agent/dist/core/extensions/wrapper.js.map +1 -1
  314. package/packages/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  315. package/packages/pi-coding-agent/dist/core/package-manager.js +1 -8
  316. package/packages/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  317. package/packages/pi-coding-agent/dist/core/skills.d.ts +1 -11
  318. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  319. package/packages/pi-coding-agent/dist/core/skills.js +8 -30
  320. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  321. package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  322. package/packages/pi-coding-agent/dist/core/slash-commands.js +0 -1
  323. package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  324. package/packages/pi-coding-agent/dist/index.d.ts +2 -2
  325. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  326. package/packages/pi-coding-agent/dist/index.js +1 -1
  327. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  328. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  329. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +2 -3
  330. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  331. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  332. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +4 -6
  333. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  334. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts +0 -5
  335. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
  336. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +0 -12
  337. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  338. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  339. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +1 -2
  340. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  341. package/packages/pi-coding-agent/pnpm-lock.yaml +454 -0
  342. package/packages/pi-coding-agent/src/core/agent-session.ts +1 -2
  343. package/packages/pi-coding-agent/src/core/bash-executor.ts +2 -10
  344. package/packages/pi-coding-agent/src/core/extensions/index.ts +0 -2
  345. package/packages/pi-coding-agent/src/core/extensions/runner.ts +0 -18
  346. package/packages/pi-coding-agent/src/core/extensions/types.ts +0 -21
  347. package/packages/pi-coding-agent/src/core/extensions/wrapper.ts +0 -9
  348. package/packages/pi-coding-agent/src/core/package-manager.ts +1 -10
  349. package/packages/pi-coding-agent/src/core/skills.ts +10 -35
  350. package/packages/pi-coding-agent/src/core/slash-commands.ts +0 -1
  351. package/packages/pi-coding-agent/src/index.ts +0 -4
  352. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +2 -3
  353. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +4 -6
  354. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +0 -15
  355. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +1 -2
  356. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
  357. package/pkg/dist/modes/interactive/theme/themes.js +1 -2
  358. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  359. package/scripts/postinstall.js +6 -163
  360. package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -3
  361. package/src/resources/extensions/bg-shell/interaction.ts +1 -3
  362. package/src/resources/extensions/bg-shell/process-manager.ts +1 -4
  363. package/src/resources/extensions/claude-code-cli/partial-builder.ts +0 -5
  364. package/src/resources/extensions/gsd/auto/phases.ts +1 -15
  365. package/src/resources/extensions/gsd/auto/session.ts +0 -6
  366. package/src/resources/extensions/gsd/auto-dashboard.ts +3 -31
  367. package/src/resources/extensions/gsd/auto-dispatch.ts +51 -84
  368. package/src/resources/extensions/gsd/auto-post-unit.ts +83 -56
  369. package/src/resources/extensions/gsd/auto-prompts.ts +0 -48
  370. package/src/resources/extensions/gsd/auto-recovery.ts +26 -19
  371. package/src/resources/extensions/gsd/auto.ts +5 -15
  372. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +0 -17
  373. package/src/resources/extensions/gsd/crash-recovery.ts +2 -6
  374. package/src/resources/extensions/gsd/custom-execution-policy.ts +2 -3
  375. package/src/resources/extensions/gsd/custom-verification.ts +1 -3
  376. package/src/resources/extensions/gsd/custom-workflow-engine.ts +2 -3
  377. package/src/resources/extensions/gsd/dashboard-overlay.ts +0 -7
  378. package/src/resources/extensions/gsd/detection.ts +3 -662
  379. package/src/resources/extensions/gsd/dispatch-guard.ts +1 -2
  380. package/src/resources/extensions/gsd/docs/preferences-reference.md +0 -15
  381. package/src/resources/extensions/gsd/files.ts +1 -6
  382. package/src/resources/extensions/gsd/guided-flow.ts +0 -11
  383. package/src/resources/extensions/gsd/init-wizard.ts +1 -9
  384. package/src/resources/extensions/gsd/model-router.ts +0 -25
  385. package/src/resources/extensions/gsd/notifications.ts +0 -23
  386. package/src/resources/extensions/gsd/preferences-skills.ts +5 -11
  387. package/src/resources/extensions/gsd/preferences-types.ts +0 -20
  388. package/src/resources/extensions/gsd/preferences-validation.ts +0 -26
  389. package/src/resources/extensions/gsd/preferences.ts +0 -3
  390. package/src/resources/extensions/gsd/prompts/forensics.md +7 -11
  391. package/src/resources/extensions/gsd/prompts/validate-milestone.md +1 -6
  392. package/src/resources/extensions/gsd/provider-error-pause.ts +0 -9
  393. package/src/resources/extensions/gsd/rule-registry.ts +11 -10
  394. package/src/resources/extensions/gsd/session-forensics.ts +3 -7
  395. package/src/resources/extensions/gsd/skill-discovery.ts +2 -3
  396. package/src/resources/extensions/gsd/skill-health.ts +2 -2
  397. package/src/resources/extensions/gsd/skill-telemetry.ts +5 -15
  398. package/src/resources/extensions/gsd/state.ts +5 -16
  399. package/src/resources/extensions/gsd/templates/milestone-validation.md +0 -12
  400. package/src/resources/extensions/gsd/templates/preferences.md +0 -2
  401. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -16
  402. package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +2 -2
  403. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +0 -68
  404. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +2 -2
  405. package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +3 -5
  406. package/src/resources/extensions/gsd/tests/custom-verification.test.ts +0 -33
  407. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +3 -4
  408. package/src/resources/extensions/gsd/tests/detection.test.ts +0 -838
  409. package/src/resources/extensions/gsd/tests/dist-redirect.mjs +9 -28
  410. package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -63
  411. package/src/resources/extensions/gsd/tests/model-router.test.ts +0 -40
  412. package/src/resources/extensions/gsd/tests/notifications.test.ts +6 -28
  413. package/src/resources/extensions/gsd/tests/preferences.test.ts +0 -50
  414. package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -40
  415. package/src/resources/extensions/gsd/tests/reactive-executor.test.ts +6 -6
  416. package/src/resources/extensions/gsd/tests/retry-state-reset.test.ts +5 -4
  417. package/src/resources/extensions/gsd/tests/run-uat.test.ts +0 -146
  418. package/src/resources/extensions/gsd/tests/sidecar-queue.test.ts +12 -12
  419. package/src/resources/extensions/gsd/tests/terminated-transient.test.ts +0 -24
  420. package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +2 -2
  421. package/src/resources/extensions/gsd/types.ts +0 -2
  422. package/src/resources/extensions/gsd/undo.ts +7 -8
  423. package/src/resources/extensions/gsd/unit-runtime.ts +1 -2
  424. package/src/resources/extensions/gsd/verification-gate.ts +1 -3
  425. package/dist/resources/extensions/gsd/auto-observability.js +0 -54
  426. package/dist/resources/extensions/gsd/auto-utils.js +0 -20
  427. package/dist/resources/extensions/gsd/observability-validator.js +0 -422
  428. package/dist/resources/extensions/gsd/roadmap-mutations.js +0 -110
  429. package/dist/resources/extensions/gsd/rtk-status.js +0 -43
  430. package/dist/resources/extensions/gsd/skill-catalog.js +0 -1026
  431. package/dist/resources/extensions/shared/rtk-session-stats.js +0 -189
  432. package/dist/resources/extensions/shared/rtk.js +0 -100
  433. package/dist/rtk.d.ts +0 -52
  434. package/dist/rtk.js +0 -332
  435. package/dist/web/standalone/.next/server/app/api/experimental/route.js +0 -3
  436. package/dist/web/standalone/.next/server/app/api/experimental/route.js.nft.json +0 -1
  437. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +0 -1
  438. package/dist/web/standalone/.next/server/chunks/2229.js +0 -12
  439. package/dist/web/standalone/.next/server/chunks/2331.js +0 -25
  440. package/dist/web/standalone/.next/server/chunks/5822.js +0 -2
  441. package/dist/web/standalone/.next/server/chunks/7471.js +0 -13
  442. package/dist/web/standalone/.next/static/chunks/4024.9ad5def014d90ce4.js +0 -9
  443. package/dist/web/standalone/.next/static/chunks/app/_global-error/page-c4cc189e7b117ea2.js +0 -1
  444. package/dist/web/standalone/.next/static/chunks/app/api/boot/route-c4cc189e7b117ea2.js +0 -1
  445. package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/input/route-c4cc189e7b117ea2.js +0 -1
  446. package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/resize/route-c4cc189e7b117ea2.js +0 -1
  447. package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/stream/route-c4cc189e7b117ea2.js +0 -1
  448. package/dist/web/standalone/.next/static/chunks/app/api/browse-directories/route-c4cc189e7b117ea2.js +0 -1
  449. package/dist/web/standalone/.next/static/chunks/app/api/captures/route-c4cc189e7b117ea2.js +0 -1
  450. package/dist/web/standalone/.next/static/chunks/app/api/cleanup/route-c4cc189e7b117ea2.js +0 -1
  451. package/dist/web/standalone/.next/static/chunks/app/api/dev-mode/route-c4cc189e7b117ea2.js +0 -1
  452. package/dist/web/standalone/.next/static/chunks/app/api/doctor/route-c4cc189e7b117ea2.js +0 -1
  453. package/dist/web/standalone/.next/static/chunks/app/api/experimental/route-c4cc189e7b117ea2.js +0 -1
  454. package/dist/web/standalone/.next/static/chunks/app/api/export-data/route-c4cc189e7b117ea2.js +0 -1
  455. package/dist/web/standalone/.next/static/chunks/app/api/files/route-c4cc189e7b117ea2.js +0 -1
  456. package/dist/web/standalone/.next/static/chunks/app/api/forensics/route-c4cc189e7b117ea2.js +0 -1
  457. package/dist/web/standalone/.next/static/chunks/app/api/git/route-c4cc189e7b117ea2.js +0 -1
  458. package/dist/web/standalone/.next/static/chunks/app/api/history/route-c4cc189e7b117ea2.js +0 -1
  459. package/dist/web/standalone/.next/static/chunks/app/api/hooks/route-c4cc189e7b117ea2.js +0 -1
  460. package/dist/web/standalone/.next/static/chunks/app/api/inspect/route-c4cc189e7b117ea2.js +0 -1
  461. package/dist/web/standalone/.next/static/chunks/app/api/knowledge/route-c4cc189e7b117ea2.js +0 -1
  462. package/dist/web/standalone/.next/static/chunks/app/api/live-state/route-c4cc189e7b117ea2.js +0 -1
  463. package/dist/web/standalone/.next/static/chunks/app/api/onboarding/route-c4cc189e7b117ea2.js +0 -1
  464. package/dist/web/standalone/.next/static/chunks/app/api/preferences/route-c4cc189e7b117ea2.js +0 -1
  465. package/dist/web/standalone/.next/static/chunks/app/api/projects/route-c4cc189e7b117ea2.js +0 -1
  466. package/dist/web/standalone/.next/static/chunks/app/api/recovery/route-c4cc189e7b117ea2.js +0 -1
  467. package/dist/web/standalone/.next/static/chunks/app/api/remote-questions/route-c4cc189e7b117ea2.js +0 -1
  468. package/dist/web/standalone/.next/static/chunks/app/api/session/browser/route-c4cc189e7b117ea2.js +0 -1
  469. package/dist/web/standalone/.next/static/chunks/app/api/session/command/route-c4cc189e7b117ea2.js +0 -1
  470. package/dist/web/standalone/.next/static/chunks/app/api/session/events/route-c4cc189e7b117ea2.js +0 -1
  471. package/dist/web/standalone/.next/static/chunks/app/api/session/manage/route-c4cc189e7b117ea2.js +0 -1
  472. package/dist/web/standalone/.next/static/chunks/app/api/settings-data/route-c4cc189e7b117ea2.js +0 -1
  473. package/dist/web/standalone/.next/static/chunks/app/api/shutdown/route-c4cc189e7b117ea2.js +0 -1
  474. package/dist/web/standalone/.next/static/chunks/app/api/skill-health/route-c4cc189e7b117ea2.js +0 -1
  475. package/dist/web/standalone/.next/static/chunks/app/api/steer/route-c4cc189e7b117ea2.js +0 -1
  476. package/dist/web/standalone/.next/static/chunks/app/api/switch-root/route-c4cc189e7b117ea2.js +0 -1
  477. package/dist/web/standalone/.next/static/chunks/app/api/terminal/input/route-c4cc189e7b117ea2.js +0 -1
  478. package/dist/web/standalone/.next/static/chunks/app/api/terminal/resize/route-c4cc189e7b117ea2.js +0 -1
  479. package/dist/web/standalone/.next/static/chunks/app/api/terminal/sessions/route-c4cc189e7b117ea2.js +0 -1
  480. package/dist/web/standalone/.next/static/chunks/app/api/terminal/stream/route-c4cc189e7b117ea2.js +0 -1
  481. package/dist/web/standalone/.next/static/chunks/app/api/terminal/upload/route-c4cc189e7b117ea2.js +0 -1
  482. package/dist/web/standalone/.next/static/chunks/app/api/undo/route-c4cc189e7b117ea2.js +0 -1
  483. package/dist/web/standalone/.next/static/chunks/app/api/update/route-c4cc189e7b117ea2.js +0 -1
  484. package/dist/web/standalone/.next/static/chunks/app/api/visualizer/route-c4cc189e7b117ea2.js +0 -1
  485. package/dist/web/standalone/.next/static/chunks/app/page-b950e4e384cc62b3.js +0 -1
  486. package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
  487. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c4cc189e7b117ea2.js +0 -1
  488. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c4cc189e7b117ea2.js +0 -1
  489. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
  490. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c4cc189e7b117ea2.js +0 -1
  491. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c4cc189e7b117ea2.js +0 -1
  492. package/dist/web/standalone/.next/static/chunks/webpack-cfc9a116e6450a6b.js +0 -1
  493. package/dist/web/standalone/.next/static/css/de141508b083f922.css +0 -1
  494. package/dist/web/standalone/.next/static/yJIyd5cXPNpmXTv18ZlyC/_buildManifest.js +0 -1
  495. package/src/resources/extensions/claude-code-cli/tests/partial-builder.test.ts +0 -105
  496. package/src/resources/extensions/gsd/auto-observability.ts +0 -72
  497. package/src/resources/extensions/gsd/auto-utils.ts +0 -25
  498. package/src/resources/extensions/gsd/observability-validator.ts +0 -456
  499. package/src/resources/extensions/gsd/roadmap-mutations.ts +0 -134
  500. package/src/resources/extensions/gsd/rtk-status.ts +0 -53
  501. package/src/resources/extensions/gsd/skill-catalog.ts +0 -1085
  502. package/src/resources/extensions/gsd/tests/double-merge-guard.test.ts +0 -97
  503. package/src/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -474
  504. package/src/resources/extensions/gsd/tests/retry-diagnostic-reasoning.test.ts +0 -161
  505. package/src/resources/extensions/gsd/tests/rewrite-count-persist.test.ts +0 -82
  506. package/src/resources/extensions/gsd/tests/skill-catalog.test.ts +0 -193
  507. package/src/resources/extensions/shared/rtk-session-stats.ts +0 -249
  508. package/src/resources/extensions/shared/rtk.ts +0 -120
  509. /package/dist/web/standalone/.next/static/{yJIyd5cXPNpmXTv18ZlyC → MQOhBnkC_TLtNn_JvZWDj}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -19,8 +19,6 @@ One command. Walk away. Come back to a built project with clean git history.
19
19
 
20
20
  <pre><code>npm install -g gsd-pi@latest</code></pre>
21
21
 
22
- > GSD now provisions a managed [RTK](https://github.com/rtk-ai/rtk) binary on supported macOS, Linux, and Windows installs to compress shell-command output in `bash`, `async_bash`, `bg_shell`, and verification flows. GSD forces `RTK_TELEMETRY_DISABLED=1` for all managed invocations. Set `GSD_RTK_DISABLED=1` to disable the integration.
23
-
24
22
  > **📋 NOTICE: New to Node on Mac?** If you installed Node.js via Homebrew, you may be running a development release instead of LTS. **[Read this guide](./docs/node-lts-macos.md)** to pin Node 24 LTS and avoid compatibility issues.
25
23
 
26
24
  </div>
package/dist/cli.js CHANGED
@@ -14,8 +14,6 @@ import { parseCliArgs as parseWebCliArgs, runWebCliBranch, migrateLegacyFlatSess
14
14
  import { stopWebMode } from './web-mode.js';
15
15
  import { getProjectSessionsDir } from './project-sessions.js';
16
16
  import { markStartup, printStartupTimings } from './startup-timings.js';
17
- import { bootstrapRtk, GSD_RTK_DISABLED_ENV } from './rtk.js';
18
- import { loadEffectiveGSDPreferences } from './resources/extensions/gsd/preferences.js';
19
17
  // ---------------------------------------------------------------------------
20
18
  // V8 compile cache — Node 22+ can cache compiled bytecode across runs,
21
19
  // eliminating repeated parse/compile overhead for unchanged modules.
@@ -116,26 +114,6 @@ if (!process.stdin.isTTY && !isPrintMode && !hasSubcommand && !cliFlags.listMode
116
114
  process.stderr.write('[gsd] gsd --mode text "message" Text output mode\n');
117
115
  process.exit(1);
118
116
  }
119
- async function ensureRtkBootstrap() {
120
- if (ensureRtkBootstrap._done)
121
- return;
122
- // RTK is opt-in via experimental.rtk preference. Default: disabled.
123
- // Honor GSD_RTK_DISABLED if already explicitly set in the environment
124
- // (env var takes precedence over preferences for manual override).
125
- if (!process.env[GSD_RTK_DISABLED_ENV]) {
126
- const prefs = loadEffectiveGSDPreferences();
127
- const rtkEnabled = prefs?.preferences.experimental?.rtk === true;
128
- if (!rtkEnabled) {
129
- process.env[GSD_RTK_DISABLED_ENV] = "1";
130
- }
131
- }
132
- const rtkStatus = await bootstrapRtk();
133
- ensureRtkBootstrap._done = true;
134
- markStartup('bootstrapRtk');
135
- if (!rtkStatus.available && rtkStatus.supported && rtkStatus.enabled && rtkStatus.reason) {
136
- process.stderr.write(`[gsd] Warning: RTK unavailable — continuing without shell-command compression (${rtkStatus.reason}).\n`);
137
- }
138
- }
139
117
  // `gsd <subcommand> --help` — show subcommand-specific help
140
118
  const subcommand = cliFlags.messages[0];
141
119
  if (subcommand && process.argv.includes('--help')) {
@@ -183,7 +161,6 @@ if (cliFlags.messages[0] === 'web' && cliFlags.messages[1] === 'stop') {
183
161
  }
184
162
  // `gsd --web [path]` or `gsd web [start] [path]` — launch browser-only web mode
185
163
  if (cliFlags.web || (cliFlags.messages[0] === 'web' && cliFlags.messages[1] !== 'stop')) {
186
- await ensureRtkBootstrap();
187
164
  const webFlags = parseWebCliArgs(process.argv);
188
165
  const webBranch = await runWebCliBranch(webFlags, {
189
166
  stderr: process.stderr,
@@ -243,7 +220,6 @@ if (cliFlags.messages[0] === 'sessions') {
243
220
  }
244
221
  // `gsd headless` — run auto-mode without TUI
245
222
  if (cliFlags.messages[0] === 'headless') {
246
- await ensureRtkBootstrap();
247
223
  const { runHeadless, parseHeadlessArgs } = await import('./headless.js');
248
224
  await runHeadless(parseHeadlessArgs(process.argv));
249
225
  process.exit(0);
@@ -372,7 +348,6 @@ if (!settingsManager.getCollapseChangelog()) {
372
348
  // Print / subagent mode — single-shot execution, no TTY required
373
349
  // ---------------------------------------------------------------------------
374
350
  if (isPrintMode) {
375
- await ensureRtkBootstrap();
376
351
  const sessionManager = cliFlags.noSession
377
352
  ? SessionManager.inMemory()
378
353
  : SessionManager.create(process.cwd());
@@ -490,7 +465,6 @@ if (!cliFlags.worktree && !isPrintMode) {
490
465
  // ---------------------------------------------------------------------------
491
466
  // Interactive mode — normal TTY session
492
467
  // ---------------------------------------------------------------------------
493
- await ensureRtkBootstrap();
494
468
  // Per-directory session storage — same encoding as the upstream SDK so that
495
469
  // /resume only shows sessions from the current working directory.
496
470
  const cwd = process.cwd();
package/dist/loader.js CHANGED
@@ -61,7 +61,6 @@ if (firstArg === '--help' || firstArg === '-h') {
61
61
  }
62
62
  }
63
63
  import { agentDir, appRoot } from './app-paths.js';
64
- import { applyRtkProcessEnv } from './rtk.js';
65
64
  import { serializeBundledExtensionPaths } from './bundled-extension-paths.js';
66
65
  import { discoverExtensionEntryPaths } from './extension-discovery.js';
67
66
  import { loadRegistry, readManifestFromEntryPath, isExtensionEnabled } from './extension-registry.js';
@@ -93,9 +92,6 @@ if (!existsSync(appRoot)) {
93
92
  }
94
93
  // GSD_CODING_AGENT_DIR — tells pi's getAgentDir() to return ~/.gsd/agent/ instead of ~/.gsd/agent/
95
94
  process.env.GSD_CODING_AGENT_DIR = agentDir;
96
- // RTK environment — make ~/.gsd/agent/bin visible to all child-process paths,
97
- // not just the bash tool, and force-disable RTK telemetry for GSD-managed use.
98
- applyRtkProcessEnv(process.env);
99
95
  // NODE_PATH — make gsd's own node_modules available to extensions loaded via jiti.
100
96
  // Without this, extensions (e.g. browser-tools) can't resolve dependencies like
101
97
  // `playwright` because jiti resolves modules from pi-coding-agent's location, not gsd's.
@@ -8,12 +8,9 @@ export declare function getNewerManagedResourceVersion(agentDir: string, current
8
8
  *
9
9
  * - extensions/ → ~/.gsd/agent/extensions/ (overwrite when version changes)
10
10
  * - agents/ → ~/.gsd/agent/agents/ (overwrite when version changes)
11
+ * - skills/ → ~/.gsd/agent/skills/ (overwrite when version changes)
11
12
  * - GSD-WORKFLOW.md → ~/.gsd/agent/GSD-WORKFLOW.md (fallback for env var miss)
12
13
  *
13
- * Skills are NOT synced here. They are installed by the user via the
14
- * skills.sh CLI (`npx skills add <repo>`) into ~/.agents/skills/ — the
15
- * industry-standard Agent Skills ecosystem directory.
16
- *
17
14
  * Skips the copy when the managed-resources.json version matches the current
18
15
  * GSD version, avoiding ~128ms of synchronous cpSync on every startup.
19
16
  * After `npm update -g @glittercowboy/gsd`, versions will differ and the
@@ -1,7 +1,7 @@
1
1
  import { DefaultResourceLoader } from '@gsd/pi-coding-agent';
2
2
  import { createHash } from 'node:crypto';
3
3
  import { homedir } from 'node:os';
4
- import { chmodSync, copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, openSync, closeSync, readFileSync, readlinkSync, readdirSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from 'node:fs';
4
+ import { chmodSync, copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readlinkSync, readdirSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from 'node:fs';
5
5
  import { dirname, join, relative, resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { compareSemver } from './update-check.js';
@@ -352,12 +352,9 @@ function pruneRemovedBundledExtensions(manifest, agentDir) {
352
352
  *
353
353
  * - extensions/ → ~/.gsd/agent/extensions/ (overwrite when version changes)
354
354
  * - agents/ → ~/.gsd/agent/agents/ (overwrite when version changes)
355
+ * - skills/ → ~/.gsd/agent/skills/ (overwrite when version changes)
355
356
  * - GSD-WORKFLOW.md → ~/.gsd/agent/GSD-WORKFLOW.md (fallback for env var miss)
356
357
  *
357
- * Skills are NOT synced here. They are installed by the user via the
358
- * skills.sh CLI (`npx skills add <repo>`) into ~/.agents/skills/ — the
359
- * industry-standard Agent Skills ecosystem directory.
360
- *
361
358
  * Skips the copy when the managed-resources.json version matches the current
362
359
  * GSD version, avoiding ~128ms of synchronous cpSync on every startup.
363
360
  * After `npm update -g @glittercowboy/gsd`, versions will differ and the
@@ -378,9 +375,6 @@ export function initResources(agentDir) {
378
375
  // launch, not just during resource syncs. A stale/broken symlink makes ALL
379
376
  // extensions fail to resolve @gsd/* packages, rendering GSD non-functional.
380
377
  ensureNodeModulesSymlink(agentDir);
381
- // Migrate legacy skills on every launch (not gated by manifest) so that
382
- // partial-failure retries don't wait for a version bump.
383
- migrateSkillsToEcosystemDir(agentDir);
384
378
  // Skip the full copy when both version AND content fingerprint match.
385
379
  // Version-only checks miss same-version content changes (npm link dev workflow,
386
380
  // hotfixes within a release). The content hash catches those at ~1ms cost.
@@ -395,13 +389,7 @@ export function initResources(agentDir) {
395
389
  // Sync bundled resources — overwrite so updates land on next launch.
396
390
  syncResourceDir(bundledExtensionsDir, join(agentDir, 'extensions'));
397
391
  syncResourceDir(join(resourcesDir, 'agents'), join(agentDir, 'agents'));
398
- // Skills are no longer force-synced here. Users install skills via the
399
- // skills.sh CLI (`npx skills add <repo>`) into ~/.agents/skills/ which
400
- // is the industry-standard Agent Skills ecosystem directory.
401
- //
402
- // Migration from the legacy ~/.gsd/agent/skills/ directory is handled
403
- // above the manifest check so it runs on every launch (including retries
404
- // after partial copy failures).
392
+ syncResourceDir(join(resourcesDir, 'skills'), join(agentDir, 'skills'));
405
393
  // Sync GSD-WORKFLOW.md to agentDir as a fallback for when GSD_WORKFLOW_PATH
406
394
  // env var is not set (e.g. fork/dev builds, alternative entry points).
407
395
  const workflowSrc = join(resourcesDir, 'GSD-WORKFLOW.md');
@@ -417,129 +405,6 @@ export function initResources(agentDir) {
417
405
  writeManagedResourceManifest(agentDir);
418
406
  ensureRegistryEntries(join(agentDir, 'extensions'));
419
407
  }
420
- // ─── Legacy Skill Migration ──────────────────────────────────────────────────────
421
- /**
422
- * One-time migration: copy user-customized skills from the old
423
- * ~/.gsd/agent/skills/ directory into ~/.agents/skills/.
424
- *
425
- * The migration is conservative:
426
- * - Only skill directories containing a SKILL.md are considered.
427
- * - Copies, does not move — the old directory stays intact so downgrading
428
- * to a pre-migration GSD version still works.
429
- * - Collision-safe — if a skill name already exists in the target, the
430
- * existing ecosystem skill wins (user may have already installed a newer
431
- * version via skills.sh).
432
- * - Writes a `.migrated-to-agents` marker inside the legacy directory so
433
- * the migration runs at most once.
434
- */
435
- function migrateSkillsToEcosystemDir(agentDir) {
436
- const legacyDir = join(agentDir, 'skills');
437
- const markerPath = join(legacyDir, '.migrated-to-agents');
438
- // Already migrated or no legacy dir — nothing to do
439
- if (!existsSync(legacyDir))
440
- return;
441
- // Atomic marker check — 'wx' fails if file already exists, preventing races
442
- // when two GSD processes start simultaneously.
443
- let markerFd;
444
- try {
445
- markerFd = openSync(markerPath, 'wx');
446
- }
447
- catch {
448
- return; // marker already exists (another process won the race, or already migrated)
449
- }
450
- try {
451
- const ecosystemDir = join(homedir(), '.agents', 'skills');
452
- mkdirSync(ecosystemDir, { recursive: true });
453
- const entries = readdirSync(legacyDir, { withFileTypes: true });
454
- let migrated = 0;
455
- let candidates = 0;
456
- for (const entry of entries) {
457
- // Handle both real directories and symlinks pointing to directories
458
- const isDir = entry.isDirectory();
459
- const isSymlink = entry.isSymbolicLink();
460
- if (!isDir && !isSymlink)
461
- continue;
462
- const sourcePath = join(legacyDir, entry.name);
463
- // For symlinks, verify the target is a directory
464
- if (isSymlink) {
465
- try {
466
- const stat = statSync(sourcePath);
467
- if (!stat.isDirectory())
468
- continue;
469
- }
470
- catch {
471
- continue; // broken symlink — skip
472
- }
473
- }
474
- const skillMd = join(sourcePath, 'SKILL.md');
475
- if (!existsSync(skillMd))
476
- continue;
477
- const target = join(ecosystemDir, entry.name);
478
- if (existsSync(target))
479
- continue; // ecosystem version wins
480
- candidates++;
481
- try {
482
- if (isSymlink) {
483
- // Recreate the symlink in the ecosystem directory using an absolute
484
- // target. Relative symlinks would resolve from the new parent dir
485
- // (~/.agents/skills/) instead of the original (~/.gsd/agent/skills/),
486
- // pointing to the wrong location.
487
- const rawTarget = readlinkSync(sourcePath);
488
- const absTarget = resolve(dirname(sourcePath), rawTarget);
489
- symlinkSync(absTarget, target);
490
- }
491
- else {
492
- cpSync(sourcePath, target, { recursive: true });
493
- }
494
- migrated++;
495
- }
496
- catch {
497
- // non-fatal — skip this skill
498
- }
499
- }
500
- // If any skills failed to copy, remove the marker so migration retries
501
- // on the next launch. This keeps the legacy dir as fallback until every
502
- // skill has been successfully migrated.
503
- if (migrated < candidates) {
504
- try {
505
- closeSync(markerFd);
506
- markerFd = -1;
507
- }
508
- catch { /* non-fatal */ }
509
- try {
510
- unlinkSync(markerPath);
511
- }
512
- catch { /* non-fatal */ }
513
- return;
514
- }
515
- // Write migration info to the marker
516
- try {
517
- writeFileSync(markerFd, `Migrated ${migrated} skill(s) to ${ecosystemDir} on ${new Date().toISOString()}\n`);
518
- }
519
- catch { /* non-fatal */ }
520
- }
521
- catch {
522
- // can't create ecosystem dir or read legacy dir — close fd first (required on Windows
523
- // where unlinkSync fails on open handles), then remove marker so we retry next launch
524
- try {
525
- closeSync(markerFd);
526
- markerFd = -1;
527
- }
528
- catch { /* non-fatal */ }
529
- try {
530
- unlinkSync(markerPath);
531
- }
532
- catch { /* non-fatal */ }
533
- }
534
- finally {
535
- if (markerFd !== -1) {
536
- try {
537
- closeSync(markerFd);
538
- }
539
- catch { /* non-fatal */ }
540
- }
541
- }
542
- }
543
408
  export function hasStaleCompiledExtensionSiblings(extensionsDir) {
544
409
  if (!existsSync(extensionsDir))
545
410
  return false;
@@ -12,7 +12,6 @@ import { createWriteStream } from "node:fs";
12
12
  import { tmpdir } from "node:os";
13
13
  import { join } from "node:path";
14
14
  import { randomBytes } from "node:crypto";
15
- import { rewriteCommandWithRtk } from "../shared/rtk.js";
16
15
  const schema = Type.Object({
17
16
  command: Type.String({ description: "Bash command to execute in the background" }),
18
17
  timeout: Type.Optional(Type.Number({ description: "Timeout in seconds (optional)" })),
@@ -94,8 +93,7 @@ function executeBashInBackground(command, cwd, signal, timeout) {
94
93
  reject(err);
95
94
  } };
96
95
  const { shell, args } = getShellConfig();
97
- const rewrittenCommand = rewriteCommandWithRtk(command);
98
- const resolvedCommand = sanitizeCommand(rewrittenCommand);
96
+ const resolvedCommand = sanitizeCommand(command);
99
97
  const child = spawn(shell, [...args, resolvedCommand], {
100
98
  cwd,
101
99
  detached: true,
@@ -2,7 +2,6 @@
2
2
  * Expect-style interactions: send_and_wait, run on session, query shell environment.
3
3
  */
4
4
  import { randomUUID } from "node:crypto";
5
- import { rewriteCommandWithRtk } from "../shared/rtk.js";
6
5
  // ── Query Shell Environment ────────────────────────────────────────────────
7
6
  export async function queryShellEnv(bg, timeout, signal) {
8
7
  const sentinel = `__GSD_ENV_${randomUUID().slice(0, 8)}__`;
@@ -98,10 +97,9 @@ export async function runOnSession(bg, command, timeout, signal) {
98
97
  // Snapshot current output buffer position
99
98
  const startIndex = bg.output.length;
100
99
  // Write the sentinel-wrapped command to stdin
101
- const rewrittenCommand = rewriteCommandWithRtk(command);
102
100
  const wrappedCommand = [
103
101
  `echo ${startMarker}`,
104
- rewrittenCommand,
102
+ command,
105
103
  `${exitVar}=$?`,
106
104
  `echo ${endMarker} $${exitVar}`,
107
105
  ].join("\n");
@@ -7,7 +7,6 @@ import { randomUUID } from "node:crypto";
7
7
  import { writeFileSync, readFileSync, existsSync, mkdirSync } from "node:fs";
8
8
  import { join } from "node:path";
9
9
  import { getShellConfig, sanitizeCommand } from "@gsd/pi-coding-agent";
10
- import { rewriteCommandWithRtk } from "../shared/rtk.js";
11
10
  import { MAX_BUFFER_LINES, MAX_EVENTS, DEAD_PROCESS_TTL, } from "./types.js";
12
11
  import { restoreWindowsVTInput, formatUptime } from "./utilities.js";
13
12
  import { analyzeLine } from "./output-formatter.js";
@@ -102,9 +101,7 @@ export function startProcess(opts) {
102
101
  const env = { ...process.env, ...(opts.env || {}) };
103
102
  const { shell, args: shellArgs } = getShellConfig();
104
103
  // Shell sessions default to the user's shell if no command specified
105
- const command = processType === "shell" && !opts.command
106
- ? shell
107
- : rewriteCommandWithRtk(opts.command);
104
+ const command = processType === "shell" && !opts.command ? shell : opts.command;
108
105
  const proc = spawn(shell, [...shellArgs, sanitizeCommand(command)], {
109
106
  cwd: opts.cwd,
110
107
  stdio: ["pipe", "pipe", "pipe"],
@@ -210,12 +210,7 @@ export class PartialMessageBuilder {
210
210
  block.arguments = JSON.parse(jsonStr);
211
211
  }
212
212
  catch {
213
- // Stream was truncated mid-tool-call — JSON is garbage.
214
- // Preserve the raw string for diagnostics but signal the
215
- // malformation explicitly so downstream consumers can
216
- // distinguish this from a healthy tool completion (#2574).
217
213
  block.arguments = { _raw: jsonStr };
218
- return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
219
214
  }
220
215
  return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial };
221
216
  }
@@ -219,8 +219,6 @@ export async function runPreDispatch(ic, loopState) {
219
219
  if (s.currentMilestoneId) {
220
220
  try {
221
221
  deps.resolver.mergeAndExit(s.currentMilestoneId, ctx.ui);
222
- // Prevent stopAuto from attempting the same merge (#2645)
223
- s.milestoneMergedInPhases = true;
224
222
  }
225
223
  catch (mergeErr) {
226
224
  if (mergeErr instanceof MergeConflictError) {
@@ -286,8 +284,6 @@ export async function runPreDispatch(ic, loopState) {
286
284
  if (s.currentMilestoneId) {
287
285
  try {
288
286
  deps.resolver.mergeAndExit(s.currentMilestoneId, ctx.ui);
289
- // Prevent stopAuto from attempting the same merge (#2645)
290
- s.milestoneMergedInPhases = true;
291
287
  }
292
288
  catch (mergeErr) {
293
289
  if (mergeErr instanceof MergeConflictError) {
@@ -338,18 +334,7 @@ export async function runDispatch(ic, preData, loopState) {
338
334
  });
339
335
  if (dispatchResult.action === "stop") {
340
336
  deps.emitJournalEvent({ ts: new Date().toISOString(), flowId: ic.flowId, seq: ic.nextSeq(), eventType: "dispatch-stop", rule: dispatchResult.matchedRule, data: { reason: dispatchResult.reason } });
341
- // Warning-level stops are recoverable human checkpoints (e.g. UAT verdict
342
- // gate) — pause instead of hard-stopping so the session is resumable with
343
- // `/gsd auto`. Error/info-level stops remain hard stops for infrastructure
344
- // failures and terminal conditions respectively.
345
- // See: https://github.com/gsd-build/gsd-2/issues/2474
346
- if (dispatchResult.level === "warning") {
347
- ctx.ui.notify(dispatchResult.reason, "warning");
348
- await deps.pauseAuto(ctx, pi);
349
- }
350
- else {
351
- await closeoutAndStop(ctx, pi, s, deps, dispatchResult.reason);
352
- }
337
+ await closeoutAndStop(ctx, pi, s, deps, dispatchResult.reason);
353
338
  debugLog("autoLoop", { phase: "exit", reason: "dispatch-stop" });
354
339
  return { action: "break", reason: "dispatch-stop" };
355
340
  }
@@ -64,10 +64,6 @@ export class AutoSession {
64
64
  // ── Isolation degradation ────────────────────────────────────────────
65
65
  /** Set to true when worktree creation fails; prevents merge of nonexistent branch. */
66
66
  isolationDegraded = false;
67
- // ── Merge guard ──────────────────────────────────────────────────────
68
- /** Set to true after phases.ts successfully calls mergeAndExit, so that
69
- * stopAuto does not attempt the same merge a second time (#2645). */
70
- milestoneMergedInPhases = false;
71
67
  // ── Dispatch circuit breakers ──────────────────────────────────────
72
68
  rewriteAttemptCount = 0;
73
69
  // ── Metrics ──────────────────────────────────────────────────────────────
@@ -148,7 +144,6 @@ export class AutoSession {
148
144
  this.sidecarQueue = [];
149
145
  this.rewriteAttemptCount = 0;
150
146
  this.isolationDegraded = false;
151
- this.milestoneMergedInPhases = false;
152
147
  // Signal handler
153
148
  this.sigtermHandler = null;
154
149
  // Loop promise state lives in auto-loop.ts module scope
@@ -19,7 +19,6 @@ import { getActiveWorktreeName } from "./worktree-command.js";
19
19
  import { loadEffectiveGSDPreferences, getGlobalGSDPreferencesPath } from "./preferences.js";
20
20
  import { resolveServiceTierIcon, getEffectiveServiceTier } from "./service-tier.js";
21
21
  import { parseUnitId } from "./unit-id.js";
22
- import { formatRtkSavingsLabel, getRtkSessionSavings, } from "../shared/rtk-session-stats.js";
23
22
  // ─── UAT Slice Extraction ─────────────────────────────────────────────────────
24
23
  /**
25
24
  * Extract the target slice ID from a run-uat unit ID (e.g. "M001/S01" → "S01").
@@ -384,18 +383,6 @@ export function updateProgressWidget(ctx, unitType, unitId, state, accessors, ti
384
383
  let pulseBright = true;
385
384
  let cachedLines;
386
385
  let cachedWidth;
387
- let cachedRtkLabel;
388
- const refreshRtkLabel = () => {
389
- try {
390
- const sessionId = ctx.sessionManager.getSessionId();
391
- const savings = sessionId ? getRtkSessionSavings(accessors.getBasePath(), sessionId) : null;
392
- cachedRtkLabel = formatRtkSavingsLabel(savings);
393
- }
394
- catch {
395
- cachedRtkLabel = null;
396
- }
397
- };
398
- refreshRtkLabel();
399
386
  const pulseTimer = setInterval(() => {
400
387
  pulseBright = !pulseBright;
401
388
  cachedLines = undefined;
@@ -405,16 +392,13 @@ export function updateProgressWidget(ctx, unitType, unitId, state, accessors, ti
405
392
  // task/slice completion mid-unit. Without this, the progress bar only
406
393
  // updates at dispatch time, appearing frozen during long-running units.
407
394
  // 15s (vs 5s) reduces synchronous file I/O on the hot path.
408
- const progressRefreshTimer = setInterval(() => {
395
+ const progressRefreshTimer = mid ? setInterval(() => {
409
396
  try {
410
- if (mid) {
411
- updateSliceProgressCache(accessors.getBasePath(), mid.id, slice?.id);
412
- }
413
- refreshRtkLabel();
397
+ updateSliceProgressCache(accessors.getBasePath(), mid.id, slice?.id);
414
398
  cachedLines = undefined;
415
399
  }
416
400
  catch { /* non-fatal */ }
417
- }, 15_000);
401
+ }, 15_000) : null;
418
402
  return {
419
403
  render(width) {
420
404
  if (cachedLines && cachedWidth === width)
@@ -675,9 +659,6 @@ export function updateProgressWidget(ctx, unitType, unitId, state, accessors, ti
675
659
  if (statsLine) {
676
660
  lines.push(rightAlign("", statsLine, width));
677
661
  }
678
- if (cachedRtkLabel) {
679
- lines.push(rightAlign("", theme.fg("dim", cachedRtkLabel), width));
680
- }
681
662
  }
682
663
  // PWD line with last commit info right-aligned
683
664
  const lastCommit = getLastCommit(accessors.getBasePath());