gsd-pi 2.33.1-dev.235d83a → 2.33.1-dev.29a8268

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 (742) hide show
  1. package/dist/cli.js +0 -16
  2. package/dist/resource-loader.d.ts +0 -2
  3. package/dist/resource-loader.js +3 -36
  4. package/dist/resources/extensions/ask-user-questions.ts +290 -0
  5. package/dist/resources/extensions/async-jobs/async-bash-tool.ts +212 -0
  6. package/dist/resources/extensions/async-jobs/await-tool.ts +103 -0
  7. package/dist/resources/extensions/async-jobs/cancel-job-tool.ts +35 -0
  8. package/dist/resources/extensions/async-jobs/index.ts +141 -0
  9. package/dist/resources/extensions/async-jobs/job-manager.ts +211 -0
  10. package/dist/resources/extensions/aws-auth/index.ts +144 -0
  11. package/dist/resources/extensions/bg-shell/bg-shell-command.ts +219 -0
  12. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +400 -0
  13. package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +985 -0
  14. package/dist/resources/extensions/bg-shell/index.ts +59 -0
  15. package/dist/resources/extensions/bg-shell/interaction.ts +198 -0
  16. package/dist/resources/extensions/bg-shell/output-formatter.ts +279 -0
  17. package/dist/resources/extensions/bg-shell/overlay.ts +437 -0
  18. package/dist/resources/extensions/bg-shell/process-manager.ts +464 -0
  19. package/dist/resources/extensions/bg-shell/readiness-detector.ts +126 -0
  20. package/dist/resources/extensions/bg-shell/types.ts +303 -0
  21. package/dist/resources/extensions/bg-shell/utilities.ts +57 -0
  22. package/dist/resources/extensions/browser-tools/capture.ts +199 -0
  23. package/dist/resources/extensions/browser-tools/core.ts +1196 -0
  24. package/dist/resources/extensions/browser-tools/{evaluate-helpers.js → evaluate-helpers.ts} +1 -0
  25. package/dist/resources/extensions/browser-tools/index.ts +71 -0
  26. package/dist/resources/extensions/browser-tools/lifecycle.ts +270 -0
  27. package/dist/resources/extensions/browser-tools/refs.ts +264 -0
  28. package/dist/resources/extensions/browser-tools/settle.ts +197 -0
  29. package/dist/resources/extensions/browser-tools/state.ts +408 -0
  30. package/dist/resources/extensions/browser-tools/tools/action-cache.ts +216 -0
  31. package/dist/resources/extensions/browser-tools/tools/assertions.ts +342 -0
  32. package/dist/resources/extensions/browser-tools/tools/codegen.ts +274 -0
  33. package/dist/resources/extensions/browser-tools/tools/device.ts +183 -0
  34. package/dist/resources/extensions/browser-tools/tools/extract.ts +229 -0
  35. package/dist/resources/extensions/browser-tools/tools/forms.ts +801 -0
  36. package/dist/resources/extensions/browser-tools/tools/injection-detect.ts +221 -0
  37. package/dist/resources/extensions/browser-tools/tools/inspection.ts +492 -0
  38. package/dist/resources/extensions/browser-tools/tools/intent.ts +614 -0
  39. package/dist/resources/extensions/browser-tools/tools/interaction.ts +865 -0
  40. package/dist/resources/extensions/browser-tools/tools/navigation.ts +232 -0
  41. package/dist/resources/extensions/browser-tools/tools/network-mock.ts +244 -0
  42. package/dist/resources/extensions/browser-tools/tools/pages.ts +303 -0
  43. package/dist/resources/extensions/browser-tools/tools/pdf.ts +92 -0
  44. package/dist/resources/extensions/browser-tools/tools/refs.ts +541 -0
  45. package/dist/resources/extensions/browser-tools/tools/screenshot.ts +101 -0
  46. package/dist/resources/extensions/browser-tools/tools/session.ts +400 -0
  47. package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +202 -0
  48. package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +209 -0
  49. package/dist/resources/extensions/browser-tools/tools/wait.ts +247 -0
  50. package/dist/resources/extensions/browser-tools/tools/zoom.ts +104 -0
  51. package/dist/resources/extensions/browser-tools/utils.ts +660 -0
  52. package/dist/resources/extensions/context7/index.ts +428 -0
  53. package/dist/resources/extensions/get-secrets-from-user.ts +607 -0
  54. package/dist/resources/extensions/google-search/index.ts +466 -0
  55. package/dist/resources/extensions/gsd/activity-log.ts +162 -0
  56. package/dist/resources/extensions/gsd/atomic-write.ts +35 -0
  57. package/dist/resources/extensions/gsd/auto/session.ts +236 -0
  58. package/dist/resources/extensions/gsd/auto-budget.ts +32 -0
  59. package/dist/resources/extensions/gsd/{auto-constants.js → auto-constants.ts} +1 -0
  60. package/dist/resources/extensions/gsd/auto-dashboard.ts +626 -0
  61. package/dist/resources/extensions/gsd/auto-direct-dispatch.ts +224 -0
  62. package/dist/resources/extensions/gsd/auto-dispatch.ts +409 -0
  63. package/dist/resources/extensions/gsd/auto-idempotency.ts +151 -0
  64. package/dist/resources/extensions/gsd/auto-model-selection.ts +179 -0
  65. package/dist/resources/extensions/gsd/auto-observability.ts +72 -0
  66. package/dist/resources/extensions/gsd/auto-post-unit.ts +618 -0
  67. package/dist/resources/extensions/gsd/auto-prompts.ts +1273 -0
  68. package/dist/resources/extensions/gsd/auto-recovery.ts +578 -0
  69. package/dist/resources/extensions/gsd/auto-start.ts +483 -0
  70. package/dist/resources/extensions/gsd/auto-stuck-detection.ts +221 -0
  71. package/dist/resources/extensions/gsd/{auto-supervisor.js → auto-supervisor.ts} +33 -25
  72. package/dist/resources/extensions/gsd/auto-timeout-recovery.ts +263 -0
  73. package/dist/resources/extensions/gsd/auto-timers.ts +224 -0
  74. package/dist/resources/extensions/gsd/auto-tool-tracking.ts +54 -0
  75. package/dist/resources/extensions/gsd/auto-unit-closeout.ts +48 -0
  76. package/dist/resources/extensions/gsd/auto-verification.ts +229 -0
  77. package/dist/resources/extensions/gsd/auto-worktree.ts +658 -0
  78. package/dist/resources/extensions/gsd/auto.ts +1834 -0
  79. package/dist/resources/extensions/gsd/{cache.js → cache.ts} +7 -5
  80. package/dist/resources/extensions/gsd/captures.ts +427 -0
  81. package/dist/resources/extensions/gsd/claude-import.ts +656 -0
  82. package/dist/resources/extensions/gsd/collision-diagnostics.ts +332 -0
  83. package/dist/resources/extensions/gsd/commands-config.ts +102 -0
  84. package/dist/resources/extensions/gsd/commands-extensions.ts +328 -0
  85. package/dist/resources/extensions/gsd/commands-handlers.ts +395 -0
  86. package/dist/resources/extensions/gsd/commands-inspect.ts +91 -0
  87. package/dist/resources/extensions/gsd/commands-logs.ts +536 -0
  88. package/dist/resources/extensions/gsd/commands-maintenance.ts +206 -0
  89. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +780 -0
  90. package/dist/resources/extensions/gsd/commands-workflow-templates.ts +543 -0
  91. package/dist/resources/extensions/gsd/commands.ts +1149 -0
  92. package/dist/resources/extensions/gsd/complexity-classifier.ts +320 -0
  93. package/dist/resources/extensions/gsd/{constants.js → constants.ts} +6 -0
  94. package/dist/resources/extensions/gsd/context-budget.ts +266 -0
  95. package/dist/resources/extensions/gsd/context-store.ts +195 -0
  96. package/dist/resources/extensions/gsd/crash-recovery.ts +121 -0
  97. package/dist/resources/extensions/gsd/dashboard-overlay.ts +681 -0
  98. package/dist/resources/extensions/gsd/db-writer.ts +360 -0
  99. package/dist/resources/extensions/gsd/debug-logger.ts +178 -0
  100. package/dist/resources/extensions/gsd/detection.ts +470 -0
  101. package/dist/resources/extensions/gsd/diff-context.ts +214 -0
  102. package/dist/resources/extensions/gsd/dispatch-guard.ts +81 -0
  103. package/dist/resources/extensions/gsd/doctor-checks.ts +612 -0
  104. package/dist/resources/extensions/gsd/doctor-environment.ts +497 -0
  105. package/dist/resources/extensions/gsd/doctor-format.ts +78 -0
  106. package/dist/resources/extensions/gsd/doctor-proactive.ts +292 -0
  107. package/dist/resources/extensions/gsd/doctor-providers.ts +343 -0
  108. package/dist/resources/extensions/gsd/doctor-types.ts +87 -0
  109. package/dist/resources/extensions/gsd/doctor.ts +722 -0
  110. package/dist/resources/extensions/gsd/error-utils.ts +6 -0
  111. package/dist/resources/extensions/gsd/{errors.js → errors.ts} +11 -6
  112. package/dist/resources/extensions/gsd/exit-command.ts +18 -0
  113. package/dist/resources/extensions/gsd/{export-html.js → export-html.ts} +614 -482
  114. package/dist/resources/extensions/gsd/export.ts +317 -0
  115. package/dist/resources/extensions/gsd/file-watcher.ts +97 -0
  116. package/dist/resources/extensions/gsd/files.ts +1058 -0
  117. package/dist/resources/extensions/gsd/forensics.ts +629 -0
  118. package/dist/resources/extensions/gsd/{git-constants.js → git-constants.ts} +5 -4
  119. package/dist/resources/extensions/gsd/git-self-heal.ts +127 -0
  120. package/dist/resources/extensions/gsd/git-service.ts +586 -0
  121. package/dist/resources/extensions/gsd/{gitignore.js → gitignore.ts} +125 -98
  122. package/dist/resources/extensions/gsd/gsd-db.ts +685 -0
  123. package/dist/resources/extensions/gsd/guided-flow-queue.ts +440 -0
  124. package/dist/resources/extensions/gsd/guided-flow.ts +1303 -0
  125. package/dist/resources/extensions/gsd/health-widget.ts +167 -0
  126. package/dist/resources/extensions/gsd/history.ts +143 -0
  127. package/dist/resources/extensions/gsd/index.ts +1401 -0
  128. package/dist/resources/extensions/gsd/init-wizard.ts +587 -0
  129. package/dist/resources/extensions/gsd/json-persistence.ts +67 -0
  130. package/dist/resources/extensions/gsd/{jsonl-utils.js → jsonl-utils.ts} +7 -10
  131. package/dist/resources/extensions/gsd/key-manager.ts +996 -0
  132. package/dist/resources/extensions/gsd/marketplace-discovery.ts +508 -0
  133. package/dist/resources/extensions/gsd/md-importer.ts +527 -0
  134. package/dist/resources/extensions/gsd/mechanical-completion.ts +430 -0
  135. package/dist/resources/extensions/gsd/memory-extractor.ts +352 -0
  136. package/dist/resources/extensions/gsd/memory-store.ts +441 -0
  137. package/dist/resources/extensions/gsd/metrics.ts +532 -0
  138. package/dist/resources/extensions/gsd/migrate/command.ts +219 -0
  139. package/dist/resources/extensions/gsd/migrate/index.ts +42 -0
  140. package/dist/resources/extensions/gsd/migrate/parser.ts +323 -0
  141. package/dist/resources/extensions/gsd/migrate/parsers.ts +539 -0
  142. package/dist/resources/extensions/gsd/migrate/preview.ts +48 -0
  143. package/dist/resources/extensions/gsd/migrate/transformer.ts +346 -0
  144. package/dist/resources/extensions/gsd/migrate/types.ts +370 -0
  145. package/dist/resources/extensions/gsd/migrate/validator.ts +55 -0
  146. package/dist/resources/extensions/gsd/migrate/writer.ts +579 -0
  147. package/dist/resources/extensions/gsd/migrate-external.ts +140 -0
  148. package/dist/resources/extensions/gsd/milestone-actions.ts +126 -0
  149. package/dist/resources/extensions/gsd/{milestone-ids.js → milestone-ids.ts} +63 -50
  150. package/dist/resources/extensions/gsd/model-cost-table.ts +65 -0
  151. package/dist/resources/extensions/gsd/model-router.ts +256 -0
  152. package/dist/resources/extensions/gsd/namespaced-registry.ts +467 -0
  153. package/dist/resources/extensions/gsd/namespaced-resolver.ts +307 -0
  154. package/dist/resources/extensions/gsd/native-git-bridge.ts +1041 -0
  155. package/dist/resources/extensions/gsd/native-parser-bridge.ts +267 -0
  156. package/dist/resources/extensions/gsd/notifications.ts +87 -0
  157. package/dist/resources/extensions/gsd/observability-validator.ts +429 -0
  158. package/dist/resources/extensions/gsd/parallel-eligibility.ts +233 -0
  159. package/dist/resources/extensions/gsd/parallel-merge.ts +157 -0
  160. package/dist/resources/extensions/gsd/parallel-orchestrator.ts +826 -0
  161. package/dist/resources/extensions/gsd/paths.ts +449 -0
  162. package/dist/resources/extensions/gsd/plugin-importer.ts +411 -0
  163. package/dist/resources/extensions/gsd/post-unit-hooks.ts +520 -0
  164. package/dist/resources/extensions/gsd/preferences-models.ts +329 -0
  165. package/dist/resources/extensions/gsd/preferences-skills.ts +169 -0
  166. package/dist/resources/extensions/gsd/preferences-types.ts +229 -0
  167. package/dist/resources/extensions/gsd/preferences-validation.ts +590 -0
  168. package/dist/resources/extensions/gsd/preferences.ts +416 -0
  169. package/dist/resources/extensions/gsd/progress-score.ts +273 -0
  170. package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +213 -0
  171. package/dist/resources/extensions/gsd/prompt-compressor.ts +508 -0
  172. package/dist/resources/extensions/gsd/prompt-loader.ts +130 -0
  173. package/dist/resources/extensions/gsd/prompt-ordering.ts +200 -0
  174. package/dist/resources/extensions/gsd/provider-error-pause.ts +88 -0
  175. package/dist/resources/extensions/gsd/queue-order.ts +230 -0
  176. package/dist/resources/extensions/gsd/queue-reorder-ui.ts +276 -0
  177. package/dist/resources/extensions/gsd/quick.ts +212 -0
  178. package/dist/resources/extensions/gsd/repo-identity.ts +169 -0
  179. package/dist/resources/extensions/gsd/{reports.js → reports.ts} +241 -146
  180. package/dist/resources/extensions/gsd/{resource-version.js → resource-version.ts} +53 -50
  181. package/dist/resources/extensions/gsd/roadmap-slices.ts +149 -0
  182. package/dist/resources/extensions/gsd/routing-history.ts +286 -0
  183. package/dist/resources/extensions/gsd/safe-fs.ts +47 -0
  184. package/dist/resources/extensions/gsd/semantic-chunker.ts +336 -0
  185. package/dist/resources/extensions/gsd/session-forensics.ts +537 -0
  186. package/dist/resources/extensions/gsd/session-lock.ts +426 -0
  187. package/dist/resources/extensions/gsd/session-status-io.ts +179 -0
  188. package/dist/resources/extensions/gsd/skill-discovery.ts +139 -0
  189. package/dist/resources/extensions/gsd/skill-health.ts +417 -0
  190. package/dist/resources/extensions/gsd/{skill-telemetry.js → skill-telemetry.ts} +74 -58
  191. package/dist/resources/extensions/gsd/state.ts +727 -0
  192. package/dist/resources/extensions/gsd/structured-data-formatter.ts +144 -0
  193. package/dist/resources/extensions/gsd/summary-distiller.ts +258 -0
  194. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +213 -0
  195. package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +107 -0
  196. package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +200 -0
  197. package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +50 -0
  198. package/dist/resources/extensions/gsd/tests/auto-dashboard.test.ts +166 -0
  199. package/dist/resources/extensions/gsd/tests/auto-dispatch-loop.test.ts +691 -0
  200. package/dist/resources/extensions/gsd/tests/auto-lock-creation.test.ts +186 -0
  201. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +40 -0
  202. package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +640 -0
  203. package/dist/resources/extensions/gsd/tests/auto-reentrancy-guard.test.ts +127 -0
  204. package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +302 -0
  205. package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +257 -0
  206. package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +123 -0
  207. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +340 -0
  208. package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +167 -0
  209. package/dist/resources/extensions/gsd/tests/budget-prediction.test.ts +220 -0
  210. package/dist/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +317 -0
  211. package/dist/resources/extensions/gsd/tests/captures.test.ts +438 -0
  212. package/dist/resources/extensions/gsd/tests/claude-import-tui.test.ts +351 -0
  213. package/dist/resources/extensions/gsd/tests/collect-from-manifest.test.ts +469 -0
  214. package/dist/resources/extensions/gsd/tests/collision-diagnostics.test.ts +705 -0
  215. package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +241 -0
  216. package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +209 -0
  217. package/dist/resources/extensions/gsd/tests/complexity-classifier.test.ts +181 -0
  218. package/dist/resources/extensions/gsd/tests/context-budget.test.ts +352 -0
  219. package/dist/resources/extensions/gsd/tests/context-compression.test.ts +193 -0
  220. package/dist/resources/extensions/gsd/tests/context-store.test.ts +462 -0
  221. package/dist/resources/extensions/gsd/tests/continue-here.test.ts +285 -0
  222. package/dist/resources/extensions/gsd/tests/cost-projection.test.ts +134 -0
  223. package/dist/resources/extensions/gsd/tests/crash-recovery.test.ts +134 -0
  224. package/dist/resources/extensions/gsd/tests/dashboard-budget.test.ts +346 -0
  225. package/dist/resources/extensions/gsd/tests/db-writer.test.ts +602 -0
  226. package/dist/resources/extensions/gsd/tests/debug-logger.test.ts +185 -0
  227. package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +405 -0
  228. package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +421 -0
  229. package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +308 -0
  230. package/dist/resources/extensions/gsd/tests/derive-state.test.ts +788 -0
  231. package/dist/resources/extensions/gsd/tests/detection.test.ts +398 -0
  232. package/dist/resources/extensions/gsd/tests/diff-context.test.ts +136 -0
  233. package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +15 -0
  234. package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +128 -0
  235. package/dist/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +132 -0
  236. package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +126 -0
  237. package/dist/resources/extensions/gsd/tests/doctor-environment.test.ts +314 -0
  238. package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +245 -0
  239. package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +344 -0
  240. package/dist/resources/extensions/gsd/tests/doctor-proactive.test.ts +278 -0
  241. package/dist/resources/extensions/gsd/tests/doctor-providers.test.ts +298 -0
  242. package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +302 -0
  243. package/dist/resources/extensions/gsd/tests/doctor.test.ts +652 -0
  244. package/dist/resources/extensions/gsd/tests/draft-promotion.test.ts +169 -0
  245. package/dist/resources/extensions/gsd/tests/exit-command.test.ts +50 -0
  246. package/dist/resources/extensions/gsd/tests/export-html-all.test.ts +105 -0
  247. package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +378 -0
  248. package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +144 -0
  249. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +424 -0
  250. package/dist/resources/extensions/gsd/tests/git-self-heal.test.ts +131 -0
  251. package/dist/resources/extensions/gsd/tests/git-service.test.ts +1181 -0
  252. package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +353 -0
  253. package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +125 -0
  254. package/dist/resources/extensions/gsd/tests/gsd-tools.test.ts +326 -0
  255. package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +340 -0
  256. package/dist/resources/extensions/gsd/tests/headless-query.test.ts +162 -0
  257. package/dist/resources/extensions/gsd/tests/idle-recovery.test.ts +485 -0
  258. package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +32 -0
  259. package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +197 -0
  260. package/dist/resources/extensions/gsd/tests/integration/headless-command.ts +534 -0
  261. package/dist/resources/extensions/gsd/tests/integration-edge.test.ts +228 -0
  262. package/dist/resources/extensions/gsd/tests/integration-lifecycle.test.ts +277 -0
  263. package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +523 -0
  264. package/dist/resources/extensions/gsd/tests/key-manager.test.ts +414 -0
  265. package/dist/resources/extensions/gsd/tests/knowledge.test.ts +161 -0
  266. package/dist/resources/extensions/gsd/tests/loop-regression.test.ts +877 -0
  267. package/dist/resources/extensions/gsd/tests/manifest-status.test.ts +283 -0
  268. package/dist/resources/extensions/gsd/tests/marketplace-test-fixtures.ts +91 -0
  269. package/dist/resources/extensions/gsd/tests/md-importer.test.ts +410 -0
  270. package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
  271. package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +180 -0
  272. package/dist/resources/extensions/gsd/tests/memory-leak-guards.test.ts +91 -0
  273. package/dist/resources/extensions/gsd/tests/memory-store.test.ts +345 -0
  274. package/dist/resources/extensions/gsd/tests/metrics.test.ts +253 -0
  275. package/dist/resources/extensions/gsd/tests/migrate-command.test.ts +369 -0
  276. package/dist/resources/extensions/gsd/tests/migrate-parser.test.ts +757 -0
  277. package/dist/resources/extensions/gsd/tests/migrate-transformer.test.ts +635 -0
  278. package/dist/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +414 -0
  279. package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +303 -0
  280. package/dist/resources/extensions/gsd/tests/migrate-writer.test.ts +398 -0
  281. package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +147 -0
  282. package/dist/resources/extensions/gsd/tests/model-cost-table.test.ts +69 -0
  283. package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +157 -0
  284. package/dist/resources/extensions/gsd/tests/model-router.test.ts +167 -0
  285. package/dist/resources/extensions/gsd/tests/must-have-parser.test.ts +291 -0
  286. package/dist/resources/extensions/gsd/tests/namespaced-registry.test.ts +1027 -0
  287. package/dist/resources/extensions/gsd/tests/namespaced-resolver.test.ts +671 -0
  288. package/dist/resources/extensions/gsd/tests/native-has-changes-cache.test.ts +61 -0
  289. package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +23 -0
  290. package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +114 -0
  291. package/dist/resources/extensions/gsd/tests/notifications.test.ts +67 -0
  292. package/dist/resources/extensions/gsd/tests/overrides.test.ts +131 -0
  293. package/dist/resources/extensions/gsd/tests/parallel-budget-atomicity.test.ts +331 -0
  294. package/dist/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +298 -0
  295. package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +468 -0
  296. package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +685 -0
  297. package/dist/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +171 -0
  298. package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +354 -0
  299. package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +276 -0
  300. package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +401 -0
  301. package/dist/resources/extensions/gsd/tests/parsers.test.ts +1704 -0
  302. package/dist/resources/extensions/gsd/tests/plan-milestone.test.ts +133 -0
  303. package/dist/resources/extensions/gsd/tests/plan-quality-validator.test.ts +363 -0
  304. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +42 -0
  305. package/dist/resources/extensions/gsd/tests/plugin-importer-live.test.ts +481 -0
  306. package/dist/resources/extensions/gsd/tests/plugin-importer.test.ts +1383 -0
  307. package/dist/resources/extensions/gsd/tests/post-unit-hooks.test.ts +337 -0
  308. package/dist/resources/extensions/gsd/tests/preferences.test.ts +276 -0
  309. package/dist/resources/extensions/gsd/tests/progress-score.test.ts +206 -0
  310. package/dist/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +464 -0
  311. package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +314 -0
  312. package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +529 -0
  313. package/dist/resources/extensions/gsd/tests/prompt-db.test.ts +385 -0
  314. package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +296 -0
  315. package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +338 -0
  316. package/dist/resources/extensions/gsd/tests/queue-draft-detection.test.ts +126 -0
  317. package/dist/resources/extensions/gsd/tests/queue-order.test.ts +204 -0
  318. package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +282 -0
  319. package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +154 -0
  320. package/dist/resources/extensions/gsd/tests/reassess-prompt.test.ts +145 -0
  321. package/dist/resources/extensions/gsd/tests/regex-hardening.test.ts +281 -0
  322. package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +642 -0
  323. package/dist/resources/extensions/gsd/tests/remote-status.test.ts +99 -0
  324. package/dist/resources/extensions/gsd/tests/replan-slice.test.ts +538 -0
  325. package/dist/resources/extensions/gsd/tests/requirements.test.ts +106 -0
  326. package/dist/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +358 -0
  327. package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +66 -0
  328. package/dist/resources/extensions/gsd/tests/routing-history.test.ts +240 -0
  329. package/dist/resources/extensions/gsd/tests/run-uat.test.ts +416 -0
  330. package/dist/resources/extensions/gsd/tests/secure-env-collect.test.ts +185 -0
  331. package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +426 -0
  332. package/dist/resources/extensions/gsd/tests/session-lock-regression.test.ts +216 -0
  333. package/dist/resources/extensions/gsd/tests/session-lock.test.ts +434 -0
  334. package/dist/resources/extensions/gsd/tests/skill-lifecycle.test.ts +126 -0
  335. package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +123 -0
  336. package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +142 -0
  337. package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +156 -0
  338. package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +365 -0
  339. package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +323 -0
  340. package/dist/resources/extensions/gsd/tests/test-helpers.ts +61 -0
  341. package/dist/resources/extensions/gsd/tests/token-counter.test.ts +129 -0
  342. package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +1272 -0
  343. package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +164 -0
  344. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +268 -0
  345. package/dist/resources/extensions/gsd/tests/token-savings.test.ts +366 -0
  346. package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +340 -0
  347. package/dist/resources/extensions/gsd/tests/triage-resolution.test.ts +416 -0
  348. package/dist/resources/extensions/gsd/tests/undo.test.ts +136 -0
  349. package/dist/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +219 -0
  350. package/dist/resources/extensions/gsd/tests/unit-runtime.test.ts +258 -0
  351. package/dist/resources/extensions/gsd/tests/update-command.test.ts +67 -0
  352. package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +222 -0
  353. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +375 -0
  354. package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +745 -0
  355. package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +1208 -0
  356. package/dist/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +145 -0
  357. package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +446 -0
  358. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +237 -0
  359. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +718 -0
  360. package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +148 -0
  361. package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +173 -0
  362. package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +38 -0
  363. package/dist/resources/extensions/gsd/tests/worktree-bugfix.test.ts +120 -0
  364. package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +244 -0
  365. package/dist/resources/extensions/gsd/tests/worktree-integration.test.ts +207 -0
  366. package/dist/resources/extensions/gsd/tests/worktree-manager.test.ts +141 -0
  367. package/dist/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +165 -0
  368. package/dist/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +206 -0
  369. package/dist/resources/extensions/gsd/tests/worktree.test.ts +171 -0
  370. package/dist/resources/extensions/gsd/tests/write-gate.test.ts +211 -0
  371. package/dist/resources/extensions/gsd/token-counter.ts +65 -0
  372. package/dist/resources/extensions/gsd/triage-resolution.ts +284 -0
  373. package/dist/resources/extensions/gsd/triage-ui.ts +175 -0
  374. package/dist/resources/extensions/gsd/types.ts +425 -0
  375. package/dist/resources/extensions/gsd/undo.ts +223 -0
  376. package/dist/resources/extensions/gsd/unit-id.ts +14 -0
  377. package/dist/resources/extensions/gsd/unit-runtime.ts +192 -0
  378. package/dist/resources/extensions/gsd/validate-directory.ts +164 -0
  379. package/dist/resources/extensions/gsd/verification-evidence.ts +188 -0
  380. package/dist/resources/extensions/gsd/verification-gate.ts +643 -0
  381. package/dist/resources/extensions/gsd/visualizer-data.ts +866 -0
  382. package/dist/resources/extensions/gsd/visualizer-overlay.ts +566 -0
  383. package/dist/resources/extensions/gsd/visualizer-views.ts +1171 -0
  384. package/dist/resources/extensions/gsd/workflow-templates.ts +241 -0
  385. package/dist/resources/extensions/gsd/workspace-index.ts +217 -0
  386. package/dist/resources/extensions/gsd/worktree-command.ts +807 -0
  387. package/dist/resources/extensions/gsd/worktree-manager.ts +449 -0
  388. package/dist/resources/extensions/gsd/worktree.ts +257 -0
  389. package/dist/resources/extensions/mac-tools/index.ts +852 -0
  390. package/dist/resources/extensions/mcp-client/index.ts +459 -0
  391. package/dist/resources/extensions/remote-questions/config.ts +83 -0
  392. package/dist/resources/extensions/remote-questions/discord-adapter.ts +148 -0
  393. package/dist/resources/extensions/remote-questions/format.ts +315 -0
  394. package/dist/resources/extensions/remote-questions/http-client.ts +76 -0
  395. package/dist/resources/extensions/remote-questions/manager.ts +184 -0
  396. package/dist/resources/extensions/remote-questions/{mod.js → mod.ts} +10 -1
  397. package/dist/resources/extensions/remote-questions/notify.ts +90 -0
  398. package/dist/resources/extensions/remote-questions/remote-command.ts +457 -0
  399. package/dist/resources/extensions/remote-questions/slack-adapter.ts +141 -0
  400. package/dist/resources/extensions/remote-questions/status.ts +31 -0
  401. package/dist/resources/extensions/remote-questions/store.ts +81 -0
  402. package/dist/resources/extensions/remote-questions/telegram-adapter.ts +149 -0
  403. package/dist/resources/extensions/remote-questions/types.ts +102 -0
  404. package/dist/resources/extensions/search-the-web/cache.ts +78 -0
  405. package/dist/resources/extensions/search-the-web/command-search-provider.ts +101 -0
  406. package/dist/resources/extensions/search-the-web/format.ts +258 -0
  407. package/dist/resources/extensions/search-the-web/http.ts +238 -0
  408. package/dist/resources/extensions/search-the-web/index.ts +65 -0
  409. package/dist/resources/extensions/search-the-web/native-search.ts +193 -0
  410. package/dist/resources/extensions/search-the-web/provider.ts +148 -0
  411. package/dist/resources/extensions/search-the-web/tavily.ts +116 -0
  412. package/dist/resources/extensions/search-the-web/tool-fetch-page.ts +589 -0
  413. package/dist/resources/extensions/search-the-web/tool-llm-context.ts +608 -0
  414. package/dist/resources/extensions/search-the-web/tool-search.ts +649 -0
  415. package/dist/resources/extensions/search-the-web/url-utils.ts +125 -0
  416. package/dist/resources/extensions/shared/confirm-ui.ts +126 -0
  417. package/dist/resources/extensions/shared/{format-utils.js → format-utils.ts} +91 -85
  418. package/dist/resources/extensions/shared/frontmatter.ts +117 -0
  419. package/dist/resources/extensions/shared/interview-ui.ts +613 -0
  420. package/dist/resources/extensions/shared/{mod.js → mod.ts} +24 -2
  421. package/dist/resources/extensions/shared/next-action-ui.ts +212 -0
  422. package/dist/resources/extensions/shared/{path-display.js → path-display.ts} +3 -2
  423. package/dist/resources/extensions/shared/sanitize.ts +19 -0
  424. package/dist/resources/extensions/shared/terminal.ts +23 -0
  425. package/dist/resources/extensions/shared/tests/format-utils.test.ts +153 -0
  426. package/dist/resources/extensions/shared/ui.ts +400 -0
  427. package/dist/resources/extensions/shared/wizard-ui.ts +551 -0
  428. package/dist/resources/extensions/slash-commands/audit.ts +88 -0
  429. package/dist/resources/extensions/slash-commands/clear.ts +10 -0
  430. package/dist/resources/extensions/slash-commands/create-extension.ts +297 -0
  431. package/dist/resources/extensions/slash-commands/create-slash-command.ts +234 -0
  432. package/dist/resources/extensions/slash-commands/index.ts +12 -0
  433. package/dist/resources/extensions/subagent/agents.ts +126 -0
  434. package/dist/resources/extensions/subagent/index.ts +1121 -0
  435. package/dist/resources/extensions/subagent/isolation.ts +501 -0
  436. package/dist/resources/extensions/subagent/worker-registry.ts +99 -0
  437. package/dist/resources/extensions/ttsr/index.ts +168 -0
  438. package/dist/resources/extensions/ttsr/rule-loader.ts +74 -0
  439. package/dist/resources/extensions/ttsr/ttsr-manager.ts +456 -0
  440. package/dist/resources/extensions/universal-config/discovery.ts +104 -0
  441. package/dist/resources/extensions/universal-config/format.ts +191 -0
  442. package/dist/resources/extensions/universal-config/index.ts +120 -0
  443. package/dist/resources/extensions/universal-config/scanners.ts +642 -0
  444. package/dist/resources/extensions/universal-config/tests/discovery.test.ts +119 -0
  445. package/dist/resources/extensions/universal-config/tests/format.test.ts +127 -0
  446. package/dist/resources/extensions/universal-config/tests/scanners.test.ts +456 -0
  447. package/dist/resources/extensions/universal-config/tools.ts +60 -0
  448. package/dist/resources/extensions/universal-config/types.ts +135 -0
  449. package/dist/resources/extensions/voice/index.ts +272 -0
  450. package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
  451. package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
  452. package/package.json +1 -1
  453. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  454. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  455. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  456. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  457. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +0 -1
  458. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  459. package/packages/pi-coding-agent/dist/core/extensions/loader.js +4 -31
  460. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  461. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  462. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  463. package/packages/pi-coding-agent/dist/index.js +1 -1
  464. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  465. package/packages/pi-coding-agent/src/core/extensions/index.ts +0 -1
  466. package/packages/pi-coding-agent/src/core/extensions/loader.ts +4 -35
  467. package/packages/pi-coding-agent/src/index.ts +0 -1
  468. package/src/resources/extensions/bg-shell/index.ts +46 -41
  469. package/src/resources/extensions/browser-tools/index.ts +67 -156
  470. package/src/resources/extensions/gsd/auto-verification.ts +2 -20
  471. package/src/resources/extensions/gsd/auto-worktree.ts +2 -3
  472. package/src/resources/extensions/gsd/commands.ts +31 -39
  473. package/src/resources/extensions/gsd/git-service.ts +0 -7
  474. package/src/resources/extensions/gsd/index.ts +32 -93
  475. package/src/resources/extensions/gsd/quick.ts +3 -52
  476. package/src/resources/extensions/gsd/repo-identity.ts +22 -56
  477. package/src/resources/extensions/gsd/tests/loop-regression.test.ts +4 -1
  478. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +0 -65
  479. package/src/resources/extensions/gsd/types.ts +0 -4
  480. package/src/resources/extensions/gsd/verification-evidence.ts +1 -1
  481. package/src/resources/extensions/gsd/verification-gate.ts +2 -23
  482. package/src/resources/extensions/gsd/worktree-command.ts +11 -17
  483. package/src/resources/extensions/search-the-web/command-search-provider.ts +1 -1
  484. package/src/resources/extensions/search-the-web/index.ts +52 -35
  485. package/src/resources/extensions/search-the-web/tavily.ts +1 -1
  486. package/dist/resources/extensions/ask-user-questions.js +0 -217
  487. package/dist/resources/extensions/async-jobs/async-bash-tool.js +0 -180
  488. package/dist/resources/extensions/async-jobs/await-tool.js +0 -90
  489. package/dist/resources/extensions/async-jobs/cancel-job-tool.js +0 -28
  490. package/dist/resources/extensions/async-jobs/index.js +0 -119
  491. package/dist/resources/extensions/async-jobs/job-manager.js +0 -159
  492. package/dist/resources/extensions/aws-auth/index.js +0 -138
  493. package/dist/resources/extensions/bg-shell/bg-shell-command.js +0 -182
  494. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +0 -343
  495. package/dist/resources/extensions/bg-shell/bg-shell-tool.js +0 -831
  496. package/dist/resources/extensions/bg-shell/index.js +0 -41
  497. package/dist/resources/extensions/bg-shell/interaction.js +0 -160
  498. package/dist/resources/extensions/bg-shell/output-formatter.js +0 -245
  499. package/dist/resources/extensions/bg-shell/overlay.js +0 -378
  500. package/dist/resources/extensions/bg-shell/process-manager.js +0 -413
  501. package/dist/resources/extensions/bg-shell/readiness-detector.js +0 -109
  502. package/dist/resources/extensions/bg-shell/types.js +0 -96
  503. package/dist/resources/extensions/bg-shell/utilities.js +0 -50
  504. package/dist/resources/extensions/browser-tools/capture.js +0 -179
  505. package/dist/resources/extensions/browser-tools/core.js +0 -899
  506. package/dist/resources/extensions/browser-tools/index.js +0 -123
  507. package/dist/resources/extensions/browser-tools/lifecycle.js +0 -222
  508. package/dist/resources/extensions/browser-tools/refs.js +0 -254
  509. package/dist/resources/extensions/browser-tools/settle.js +0 -173
  510. package/dist/resources/extensions/browser-tools/state.js +0 -126
  511. package/dist/resources/extensions/browser-tools/tools/action-cache.js +0 -179
  512. package/dist/resources/extensions/browser-tools/tools/assertions.js +0 -320
  513. package/dist/resources/extensions/browser-tools/tools/codegen.js +0 -242
  514. package/dist/resources/extensions/browser-tools/tools/device.js +0 -162
  515. package/dist/resources/extensions/browser-tools/tools/extract.js +0 -191
  516. package/dist/resources/extensions/browser-tools/tools/forms.js +0 -710
  517. package/dist/resources/extensions/browser-tools/tools/injection-detect.js +0 -178
  518. package/dist/resources/extensions/browser-tools/tools/inspection.js +0 -426
  519. package/dist/resources/extensions/browser-tools/tools/intent.js +0 -556
  520. package/dist/resources/extensions/browser-tools/tools/interaction.js +0 -776
  521. package/dist/resources/extensions/browser-tools/tools/navigation.js +0 -208
  522. package/dist/resources/extensions/browser-tools/tools/network-mock.js +0 -194
  523. package/dist/resources/extensions/browser-tools/tools/pages.js +0 -280
  524. package/dist/resources/extensions/browser-tools/tools/pdf.js +0 -74
  525. package/dist/resources/extensions/browser-tools/tools/refs.js +0 -485
  526. package/dist/resources/extensions/browser-tools/tools/screenshot.js +0 -87
  527. package/dist/resources/extensions/browser-tools/tools/session.js +0 -375
  528. package/dist/resources/extensions/browser-tools/tools/state-persistence.js +0 -180
  529. package/dist/resources/extensions/browser-tools/tools/visual-diff.js +0 -174
  530. package/dist/resources/extensions/browser-tools/tools/wait.js +0 -201
  531. package/dist/resources/extensions/browser-tools/tools/zoom.js +0 -90
  532. package/dist/resources/extensions/browser-tools/utils.js +0 -490
  533. package/dist/resources/extensions/context7/index.js +0 -337
  534. package/dist/resources/extensions/get-secrets-from-user.js +0 -492
  535. package/dist/resources/extensions/google-search/index.js +0 -373
  536. package/dist/resources/extensions/gsd/activity-log.js +0 -146
  537. package/dist/resources/extensions/gsd/atomic-write.js +0 -38
  538. package/dist/resources/extensions/gsd/auto/session.js +0 -187
  539. package/dist/resources/extensions/gsd/auto-budget.js +0 -30
  540. package/dist/resources/extensions/gsd/auto-dashboard.js +0 -509
  541. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +0 -180
  542. package/dist/resources/extensions/gsd/auto-dispatch.js +0 -382
  543. package/dist/resources/extensions/gsd/auto-idempotency.js +0 -106
  544. package/dist/resources/extensions/gsd/auto-model-selection.js +0 -133
  545. package/dist/resources/extensions/gsd/auto-observability.js +0 -54
  546. package/dist/resources/extensions/gsd/auto-post-unit.js +0 -495
  547. package/dist/resources/extensions/gsd/auto-prompts.js +0 -1121
  548. package/dist/resources/extensions/gsd/auto-recovery.js +0 -550
  549. package/dist/resources/extensions/gsd/auto-start.js +0 -393
  550. package/dist/resources/extensions/gsd/auto-stuck-detection.js +0 -165
  551. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +0 -183
  552. package/dist/resources/extensions/gsd/auto-timers.js +0 -181
  553. package/dist/resources/extensions/gsd/auto-tool-tracking.js +0 -50
  554. package/dist/resources/extensions/gsd/auto-unit-closeout.js +0 -30
  555. package/dist/resources/extensions/gsd/auto-verification.js +0 -209
  556. package/dist/resources/extensions/gsd/auto-worktree.js +0 -594
  557. package/dist/resources/extensions/gsd/auto.js +0 -1485
  558. package/dist/resources/extensions/gsd/captures.js +0 -348
  559. package/dist/resources/extensions/gsd/claude-import.js +0 -540
  560. package/dist/resources/extensions/gsd/collision-diagnostics.js +0 -226
  561. package/dist/resources/extensions/gsd/commands-bootstrap.js +0 -223
  562. package/dist/resources/extensions/gsd/commands-config.js +0 -89
  563. package/dist/resources/extensions/gsd/commands-extensions.js +0 -259
  564. package/dist/resources/extensions/gsd/commands-handlers.js +0 -310
  565. package/dist/resources/extensions/gsd/commands-inspect.js +0 -70
  566. package/dist/resources/extensions/gsd/commands-logs.js +0 -468
  567. package/dist/resources/extensions/gsd/commands-maintenance.js +0 -185
  568. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +0 -660
  569. package/dist/resources/extensions/gsd/commands-workflow-templates.js +0 -408
  570. package/dist/resources/extensions/gsd/commands.js +0 -1024
  571. package/dist/resources/extensions/gsd/complexity-classifier.js +0 -257
  572. package/dist/resources/extensions/gsd/context-budget.js +0 -187
  573. package/dist/resources/extensions/gsd/context-store.js +0 -165
  574. package/dist/resources/extensions/gsd/crash-recovery.js +0 -110
  575. package/dist/resources/extensions/gsd/dashboard-overlay.js +0 -562
  576. package/dist/resources/extensions/gsd/db-writer.js +0 -298
  577. package/dist/resources/extensions/gsd/debug-logger.js +0 -161
  578. package/dist/resources/extensions/gsd/detection.js +0 -373
  579. package/dist/resources/extensions/gsd/diff-context.js +0 -168
  580. package/dist/resources/extensions/gsd/dispatch-guard.js +0 -76
  581. package/dist/resources/extensions/gsd/doctor-checks.js +0 -563
  582. package/dist/resources/extensions/gsd/doctor-environment.js +0 -429
  583. package/dist/resources/extensions/gsd/doctor-format.js +0 -71
  584. package/dist/resources/extensions/gsd/doctor-proactive.js +0 -239
  585. package/dist/resources/extensions/gsd/doctor-providers.js +0 -292
  586. package/dist/resources/extensions/gsd/doctor-types.js +0 -12
  587. package/dist/resources/extensions/gsd/doctor.js +0 -672
  588. package/dist/resources/extensions/gsd/error-utils.js +0 -6
  589. package/dist/resources/extensions/gsd/exit-command.js +0 -11
  590. package/dist/resources/extensions/gsd/export.js +0 -268
  591. package/dist/resources/extensions/gsd/file-watcher.js +0 -76
  592. package/dist/resources/extensions/gsd/files.js +0 -937
  593. package/dist/resources/extensions/gsd/forensics.js +0 -511
  594. package/dist/resources/extensions/gsd/git-self-heal.js +0 -113
  595. package/dist/resources/extensions/gsd/git-service.js +0 -460
  596. package/dist/resources/extensions/gsd/gsd-db.js +0 -590
  597. package/dist/resources/extensions/gsd/guided-flow-queue.js +0 -366
  598. package/dist/resources/extensions/gsd/guided-flow.js +0 -1149
  599. package/dist/resources/extensions/gsd/health-widget.js +0 -141
  600. package/dist/resources/extensions/gsd/history.js +0 -118
  601. package/dist/resources/extensions/gsd/index.js +0 -1250
  602. package/dist/resources/extensions/gsd/init-wizard.js +0 -479
  603. package/dist/resources/extensions/gsd/json-persistence.js +0 -62
  604. package/dist/resources/extensions/gsd/key-manager.js +0 -829
  605. package/dist/resources/extensions/gsd/marketplace-discovery.js +0 -356
  606. package/dist/resources/extensions/gsd/md-importer.js +0 -440
  607. package/dist/resources/extensions/gsd/mechanical-completion.js +0 -351
  608. package/dist/resources/extensions/gsd/memory-extractor.js +0 -295
  609. package/dist/resources/extensions/gsd/memory-store.js +0 -351
  610. package/dist/resources/extensions/gsd/metrics.js +0 -377
  611. package/dist/resources/extensions/gsd/migrate/command.js +0 -157
  612. package/dist/resources/extensions/gsd/migrate/index.js +0 -7
  613. package/dist/resources/extensions/gsd/migrate/parser.js +0 -268
  614. package/dist/resources/extensions/gsd/migrate/parsers.js +0 -477
  615. package/dist/resources/extensions/gsd/migrate/preview.js +0 -47
  616. package/dist/resources/extensions/gsd/migrate/transformer.js +0 -278
  617. package/dist/resources/extensions/gsd/migrate/types.js +0 -4
  618. package/dist/resources/extensions/gsd/migrate/validator.js +0 -41
  619. package/dist/resources/extensions/gsd/migrate/writer.js +0 -477
  620. package/dist/resources/extensions/gsd/migrate-external.js +0 -130
  621. package/dist/resources/extensions/gsd/milestone-actions.js +0 -111
  622. package/dist/resources/extensions/gsd/model-cost-table.js +0 -48
  623. package/dist/resources/extensions/gsd/model-router.js +0 -187
  624. package/dist/resources/extensions/gsd/namespaced-registry.js +0 -322
  625. package/dist/resources/extensions/gsd/namespaced-resolver.js +0 -176
  626. package/dist/resources/extensions/gsd/native-git-bridge.js +0 -842
  627. package/dist/resources/extensions/gsd/native-parser-bridge.js +0 -156
  628. package/dist/resources/extensions/gsd/notifications.js +0 -58
  629. package/dist/resources/extensions/gsd/observability-validator.js +0 -398
  630. package/dist/resources/extensions/gsd/parallel-eligibility.js +0 -182
  631. package/dist/resources/extensions/gsd/parallel-merge.js +0 -121
  632. package/dist/resources/extensions/gsd/parallel-orchestrator.js +0 -687
  633. package/dist/resources/extensions/gsd/paths.js +0 -414
  634. package/dist/resources/extensions/gsd/plugin-importer.js +0 -254
  635. package/dist/resources/extensions/gsd/post-unit-hooks.js +0 -433
  636. package/dist/resources/extensions/gsd/preferences-models.js +0 -294
  637. package/dist/resources/extensions/gsd/preferences-skills.js +0 -154
  638. package/dist/resources/extensions/gsd/preferences-types.js +0 -73
  639. package/dist/resources/extensions/gsd/preferences-validation.js +0 -607
  640. package/dist/resources/extensions/gsd/preferences.js +0 -325
  641. package/dist/resources/extensions/gsd/progress-score.js +0 -197
  642. package/dist/resources/extensions/gsd/prompt-cache-optimizer.js +0 -150
  643. package/dist/resources/extensions/gsd/prompt-compressor.js +0 -393
  644. package/dist/resources/extensions/gsd/prompt-loader.js +0 -119
  645. package/dist/resources/extensions/gsd/prompt-ordering.js +0 -170
  646. package/dist/resources/extensions/gsd/provider-error-pause.js +0 -60
  647. package/dist/resources/extensions/gsd/queue-order.js +0 -178
  648. package/dist/resources/extensions/gsd/queue-reorder-ui.js +0 -234
  649. package/dist/resources/extensions/gsd/quick.js +0 -230
  650. package/dist/resources/extensions/gsd/repo-identity.js +0 -187
  651. package/dist/resources/extensions/gsd/roadmap-slices.js +0 -130
  652. package/dist/resources/extensions/gsd/routing-history.js +0 -210
  653. package/dist/resources/extensions/gsd/safe-fs.js +0 -52
  654. package/dist/resources/extensions/gsd/semantic-chunker.js +0 -254
  655. package/dist/resources/extensions/gsd/session-forensics.js +0 -427
  656. package/dist/resources/extensions/gsd/session-lock.js +0 -376
  657. package/dist/resources/extensions/gsd/session-status-io.js +0 -134
  658. package/dist/resources/extensions/gsd/skill-discovery.js +0 -121
  659. package/dist/resources/extensions/gsd/skill-health.js +0 -324
  660. package/dist/resources/extensions/gsd/state.js +0 -653
  661. package/dist/resources/extensions/gsd/structured-data-formatter.js +0 -97
  662. package/dist/resources/extensions/gsd/summary-distiller.js +0 -212
  663. package/dist/resources/extensions/gsd/token-counter.js +0 -54
  664. package/dist/resources/extensions/gsd/triage-resolution.js +0 -217
  665. package/dist/resources/extensions/gsd/triage-ui.js +0 -125
  666. package/dist/resources/extensions/gsd/types.js +0 -4
  667. package/dist/resources/extensions/gsd/undo.js +0 -210
  668. package/dist/resources/extensions/gsd/unit-id.js +0 -7
  669. package/dist/resources/extensions/gsd/unit-runtime.js +0 -130
  670. package/dist/resources/extensions/gsd/validate-directory.js +0 -143
  671. package/dist/resources/extensions/gsd/verification-evidence.js +0 -123
  672. package/dist/resources/extensions/gsd/verification-gate.js +0 -543
  673. package/dist/resources/extensions/gsd/visualizer-data.js +0 -612
  674. package/dist/resources/extensions/gsd/visualizer-overlay.js +0 -501
  675. package/dist/resources/extensions/gsd/visualizer-views.js +0 -893
  676. package/dist/resources/extensions/gsd/workflow-templates.js +0 -188
  677. package/dist/resources/extensions/gsd/workspace-index.js +0 -139
  678. package/dist/resources/extensions/gsd/worktree-command-bootstrap.js +0 -40
  679. package/dist/resources/extensions/gsd/worktree-command.js +0 -676
  680. package/dist/resources/extensions/gsd/worktree-manager.js +0 -359
  681. package/dist/resources/extensions/gsd/worktree.js +0 -236
  682. package/dist/resources/extensions/mac-tools/index.js +0 -768
  683. package/dist/resources/extensions/mcp-client/index.js +0 -363
  684. package/dist/resources/extensions/package.json +0 -3
  685. package/dist/resources/extensions/remote-questions/config.js +0 -70
  686. package/dist/resources/extensions/remote-questions/discord-adapter.js +0 -134
  687. package/dist/resources/extensions/remote-questions/format.js +0 -234
  688. package/dist/resources/extensions/remote-questions/http-client.js +0 -43
  689. package/dist/resources/extensions/remote-questions/manager.js +0 -156
  690. package/dist/resources/extensions/remote-questions/notify.js +0 -89
  691. package/dist/resources/extensions/remote-questions/remote-command.js +0 -453
  692. package/dist/resources/extensions/remote-questions/slack-adapter.js +0 -123
  693. package/dist/resources/extensions/remote-questions/status.js +0 -25
  694. package/dist/resources/extensions/remote-questions/store.js +0 -70
  695. package/dist/resources/extensions/remote-questions/telegram-adapter.js +0 -123
  696. package/dist/resources/extensions/remote-questions/types.js +0 -5
  697. package/dist/resources/extensions/search-the-web/cache.js +0 -74
  698. package/dist/resources/extensions/search-the-web/command-search-provider.js +0 -79
  699. package/dist/resources/extensions/search-the-web/format.js +0 -161
  700. package/dist/resources/extensions/search-the-web/http.js +0 -178
  701. package/dist/resources/extensions/search-the-web/index.js +0 -41
  702. package/dist/resources/extensions/search-the-web/native-search.js +0 -166
  703. package/dist/resources/extensions/search-the-web/provider.js +0 -143
  704. package/dist/resources/extensions/search-the-web/tavily.js +0 -82
  705. package/dist/resources/extensions/search-the-web/tool-fetch-page.js +0 -452
  706. package/dist/resources/extensions/search-the-web/tool-llm-context.js +0 -455
  707. package/dist/resources/extensions/search-the-web/tool-search.js +0 -482
  708. package/dist/resources/extensions/search-the-web/url-utils.js +0 -121
  709. package/dist/resources/extensions/shared/confirm-ui.js +0 -96
  710. package/dist/resources/extensions/shared/frontmatter.js +0 -109
  711. package/dist/resources/extensions/shared/interview-ui.js +0 -569
  712. package/dist/resources/extensions/shared/next-action-ui.js +0 -168
  713. package/dist/resources/extensions/shared/sanitize.js +0 -17
  714. package/dist/resources/extensions/shared/terminal.js +0 -21
  715. package/dist/resources/extensions/shared/ui.js +0 -245
  716. package/dist/resources/extensions/shared/wizard-ui.js +0 -478
  717. package/dist/resources/extensions/slash-commands/audit.js +0 -72
  718. package/dist/resources/extensions/slash-commands/clear.js +0 -8
  719. package/dist/resources/extensions/slash-commands/create-extension.js +0 -264
  720. package/dist/resources/extensions/slash-commands/create-slash-command.js +0 -208
  721. package/dist/resources/extensions/slash-commands/index.js +0 -10
  722. package/dist/resources/extensions/subagent/agents.js +0 -103
  723. package/dist/resources/extensions/subagent/index.js +0 -905
  724. package/dist/resources/extensions/subagent/isolation.js +0 -384
  725. package/dist/resources/extensions/subagent/worker-registry.js +0 -73
  726. package/dist/resources/extensions/ttsr/index.js +0 -144
  727. package/dist/resources/extensions/ttsr/rule-loader.js +0 -70
  728. package/dist/resources/extensions/ttsr/ttsr-manager.js +0 -380
  729. package/dist/resources/extensions/universal-config/discovery.js +0 -94
  730. package/dist/resources/extensions/universal-config/format.js +0 -178
  731. package/dist/resources/extensions/universal-config/index.js +0 -99
  732. package/dist/resources/extensions/universal-config/scanners.js +0 -574
  733. package/dist/resources/extensions/universal-config/tools.js +0 -57
  734. package/dist/resources/extensions/universal-config/types.js +0 -8
  735. package/dist/resources/extensions/voice/index.js +0 -247
  736. package/dist/startup-timings.d.ts +0 -2
  737. package/dist/startup-timings.js +0 -22
  738. package/src/resources/extensions/gsd/commands-bootstrap.ts +0 -252
  739. package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +0 -281
  740. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +0 -71
  741. package/src/resources/extensions/gsd/worktree-command-bootstrap.ts +0 -46
  742. package/src/resources/extensions/package.json +0 -3
@@ -1,325 +0,0 @@
1
- /**
2
- * GSD Preferences -- loading, merging, and rendering.
3
- *
4
- * This module is the primary entry point for preference operations.
5
- * Type definitions live in ./preferences-types.js, validation in
6
- * ./preferences-validation.js, skill logic in ./preferences-skills.js,
7
- * and model logic in ./preferences-models.js.
8
- *
9
- * All symbols are re-exported here so that existing `import { ... } from "./preferences.js"`
10
- * statements continue to work without modification.
11
- */
12
- import { existsSync, readFileSync } from "node:fs";
13
- import { homedir } from "node:os";
14
- import { join } from "node:path";
15
- import { gsdRoot } from "./paths.js";
16
- import { parse as parseYaml } from "yaml";
17
- import { normalizeStringArray } from "../shared/mod.js";
18
- import { MODE_DEFAULTS, } from "./preferences-types.js";
19
- import { validatePreferences } from "./preferences-validation.js";
20
- import { formatSkillRef } from "./preferences-skills.js";
21
- // ─── Re-exports: validation ─────────────────────────────────────────────────
22
- export { validatePreferences } from "./preferences-validation.js";
23
- // ─── Re-exports: skills ─────────────────────────────────────────────────────
24
- export { resolveAllSkillReferences, resolveSkillDiscoveryMode, resolveSkillStalenessDays, } from "./preferences-skills.js";
25
- // ─── Re-exports: models ─────────────────────────────────────────────────────
26
- export { resolveModelForUnit, resolveModelWithFallbacksForUnit, getNextFallbackModel, isTransientNetworkError, validateModelId, updatePreferencesModels, resolveDynamicRoutingConfig, resolveAutoSupervisorConfig, resolveProfileDefaults, resolveEffectiveProfile, resolveInlineLevel, resolveCompressionStrategy, resolveContextSelection, resolveSearchProviderFromPreferences, } from "./preferences-models.js";
27
- // ─── Path Constants & Getters ───────────────────────────────────────────────
28
- const GLOBAL_PREFERENCES_PATH = join(homedir(), ".gsd", "preferences.md");
29
- const LEGACY_GLOBAL_PREFERENCES_PATH = join(homedir(), ".pi", "agent", "gsd-preferences.md");
30
- function projectPreferencesPath() {
31
- return join(gsdRoot(process.cwd()), "preferences.md");
32
- }
33
- // Bootstrap in gitignore.ts historically created PREFERENCES.md (uppercase) by mistake.
34
- // Check uppercase as a fallback so those files aren't silently ignored.
35
- const GLOBAL_PREFERENCES_PATH_UPPERCASE = join(homedir(), ".gsd", "PREFERENCES.md");
36
- function projectPreferencesPathUppercase() {
37
- return join(gsdRoot(process.cwd()), "PREFERENCES.md");
38
- }
39
- export function getGlobalGSDPreferencesPath() {
40
- return GLOBAL_PREFERENCES_PATH;
41
- }
42
- export function getLegacyGlobalGSDPreferencesPath() {
43
- return LEGACY_GLOBAL_PREFERENCES_PATH;
44
- }
45
- export function getProjectGSDPreferencesPath() {
46
- return projectPreferencesPath();
47
- }
48
- // ─── Loading ────────────────────────────────────────────────────────────────
49
- export function loadGlobalGSDPreferences() {
50
- return loadPreferencesFile(GLOBAL_PREFERENCES_PATH, "global")
51
- ?? loadPreferencesFile(GLOBAL_PREFERENCES_PATH_UPPERCASE, "global")
52
- ?? loadPreferencesFile(LEGACY_GLOBAL_PREFERENCES_PATH, "global");
53
- }
54
- export function loadProjectGSDPreferences() {
55
- return loadPreferencesFile(projectPreferencesPath(), "project")
56
- ?? loadPreferencesFile(projectPreferencesPathUppercase(), "project");
57
- }
58
- export function loadEffectiveGSDPreferences() {
59
- const globalPreferences = loadGlobalGSDPreferences();
60
- const projectPreferences = loadProjectGSDPreferences();
61
- if (!globalPreferences && !projectPreferences)
62
- return null;
63
- let result;
64
- if (!globalPreferences) {
65
- result = projectPreferences;
66
- }
67
- else if (!projectPreferences) {
68
- result = globalPreferences;
69
- }
70
- else {
71
- const mergedWarnings = [
72
- ...(globalPreferences.warnings ?? []),
73
- ...(projectPreferences.warnings ?? []),
74
- ];
75
- result = {
76
- path: projectPreferences.path,
77
- scope: "project",
78
- preferences: mergePreferences(globalPreferences.preferences, projectPreferences.preferences),
79
- ...(mergedWarnings.length > 0 ? { warnings: mergedWarnings } : {}),
80
- };
81
- }
82
- // Apply mode defaults as the lowest-priority layer
83
- if (result.preferences.mode) {
84
- result = {
85
- ...result,
86
- preferences: applyModeDefaults(result.preferences.mode, result.preferences),
87
- };
88
- }
89
- return result;
90
- }
91
- function loadPreferencesFile(path, scope) {
92
- if (!existsSync(path))
93
- return null;
94
- const raw = readFileSync(path, "utf-8");
95
- const preferences = parsePreferencesMarkdown(raw);
96
- if (!preferences)
97
- return null;
98
- const validation = validatePreferences(preferences);
99
- const allWarnings = [...validation.warnings, ...validation.errors];
100
- return {
101
- path,
102
- scope,
103
- preferences: validation.preferences,
104
- ...(allWarnings.length > 0 ? { warnings: allWarnings } : {}),
105
- };
106
- }
107
- /** @internal Exported for testing only */
108
- export function parsePreferencesMarkdown(content) {
109
- // Use indexOf instead of [\s\S]*? regex to avoid backtracking (#468)
110
- const startMarker = content.startsWith('---\r\n') ? '---\r\n' : '---\n';
111
- if (!content.startsWith(startMarker))
112
- return null;
113
- const searchStart = startMarker.length;
114
- const endIdx = content.indexOf('\n---', searchStart);
115
- if (endIdx === -1)
116
- return null;
117
- const block = content.slice(searchStart, endIdx);
118
- return parseFrontmatterBlock(block.replace(/\r/g, ''));
119
- }
120
- function parseFrontmatterBlock(frontmatter) {
121
- try {
122
- const parsed = parseYaml(frontmatter);
123
- if (typeof parsed !== 'object' || parsed === null) {
124
- return {};
125
- }
126
- return parsed;
127
- }
128
- catch (e) {
129
- console.error("[parseFrontmatterBlock] YAML parse error:", e);
130
- return {};
131
- }
132
- }
133
- // ─── Merging ────────────────────────────────────────────────────────────────
134
- /**
135
- * Apply mode defaults as the lowest-priority layer.
136
- * Mode defaults fill in undefined fields; any explicit user value wins.
137
- */
138
- export function applyModeDefaults(mode, prefs) {
139
- const defaults = MODE_DEFAULTS[mode];
140
- if (!defaults)
141
- return prefs;
142
- return mergePreferences(defaults, prefs);
143
- }
144
- function mergePreferences(base, override) {
145
- return {
146
- version: override.version ?? base.version,
147
- mode: override.mode ?? base.mode,
148
- always_use_skills: mergeStringLists(base.always_use_skills, override.always_use_skills),
149
- prefer_skills: mergeStringLists(base.prefer_skills, override.prefer_skills),
150
- avoid_skills: mergeStringLists(base.avoid_skills, override.avoid_skills),
151
- skill_rules: [...(base.skill_rules ?? []), ...(override.skill_rules ?? [])],
152
- custom_instructions: mergeStringLists(base.custom_instructions, override.custom_instructions),
153
- models: { ...(base.models ?? {}), ...(override.models ?? {}) },
154
- skill_discovery: override.skill_discovery ?? base.skill_discovery,
155
- skill_staleness_days: override.skill_staleness_days ?? base.skill_staleness_days,
156
- auto_supervisor: { ...(base.auto_supervisor ?? {}), ...(override.auto_supervisor ?? {}) },
157
- uat_dispatch: override.uat_dispatch ?? base.uat_dispatch,
158
- unique_milestone_ids: override.unique_milestone_ids ?? base.unique_milestone_ids,
159
- budget_ceiling: override.budget_ceiling ?? base.budget_ceiling,
160
- budget_enforcement: override.budget_enforcement ?? base.budget_enforcement,
161
- context_pause_threshold: override.context_pause_threshold ?? base.context_pause_threshold,
162
- notifications: (base.notifications || override.notifications)
163
- ? { ...(base.notifications ?? {}), ...(override.notifications ?? {}) }
164
- : undefined,
165
- remote_questions: override.remote_questions
166
- ? { ...(base.remote_questions ?? {}), ...override.remote_questions }
167
- : base.remote_questions,
168
- git: (base.git || override.git)
169
- ? { ...(base.git ?? {}), ...(override.git ?? {}) }
170
- : undefined,
171
- post_unit_hooks: mergePostUnitHooks(base.post_unit_hooks, override.post_unit_hooks),
172
- pre_dispatch_hooks: mergePreDispatchHooks(base.pre_dispatch_hooks, override.pre_dispatch_hooks),
173
- dynamic_routing: (base.dynamic_routing || override.dynamic_routing)
174
- ? { ...(base.dynamic_routing ?? {}), ...(override.dynamic_routing ?? {}) }
175
- : undefined,
176
- token_profile: override.token_profile ?? base.token_profile,
177
- phases: (base.phases || override.phases)
178
- ? { ...(base.phases ?? {}), ...(override.phases ?? {}) }
179
- : undefined,
180
- parallel: (base.parallel || override.parallel)
181
- ? { ...(base.parallel ?? {}), ...(override.parallel ?? {}) }
182
- : undefined,
183
- verification_commands: mergeStringLists(base.verification_commands, override.verification_commands),
184
- verification_auto_fix: override.verification_auto_fix ?? base.verification_auto_fix,
185
- verification_max_retries: override.verification_max_retries ?? base.verification_max_retries,
186
- search_provider: override.search_provider ?? base.search_provider,
187
- compression_strategy: override.compression_strategy ?? base.compression_strategy,
188
- context_selection: override.context_selection ?? base.context_selection,
189
- };
190
- }
191
- function mergeStringLists(base, override) {
192
- const merged = [
193
- ...normalizeStringArray(base),
194
- ...normalizeStringArray(override),
195
- ]
196
- .map((item) => item.trim())
197
- .filter(Boolean);
198
- return merged.length > 0 ? Array.from(new Set(merged)) : undefined;
199
- }
200
- function mergePostUnitHooks(base, override) {
201
- if (!base?.length && !override?.length)
202
- return undefined;
203
- const merged = [...(base ?? [])];
204
- for (const hook of override ?? []) {
205
- // Override hooks with same name replace base hooks
206
- const idx = merged.findIndex(h => h.name === hook.name);
207
- if (idx >= 0) {
208
- merged[idx] = hook;
209
- }
210
- else {
211
- merged.push(hook);
212
- }
213
- }
214
- return merged.length > 0 ? merged : undefined;
215
- }
216
- function mergePreDispatchHooks(base, override) {
217
- if (!base?.length && !override?.length)
218
- return undefined;
219
- const merged = [...(base ?? [])];
220
- for (const hook of override ?? []) {
221
- const idx = merged.findIndex(h => h.name === hook.name);
222
- if (idx >= 0) {
223
- merged[idx] = hook;
224
- }
225
- else {
226
- merged.push(hook);
227
- }
228
- }
229
- return merged.length > 0 ? merged : undefined;
230
- }
231
- // ─── System Prompt Rendering ──────────────────────────────────────────────────
232
- export function renderPreferencesForSystemPrompt(preferences, resolutions) {
233
- const validated = validatePreferences(preferences);
234
- const lines = ["## GSD Skill Preferences"];
235
- if (validated.errors.length > 0) {
236
- lines.push("- Validation: some preference values were ignored because they were invalid.");
237
- }
238
- for (const warning of validated.warnings) {
239
- lines.push(`- Deprecation: ${warning}`);
240
- }
241
- preferences = validated.preferences;
242
- lines.push("- Treat these as explicit skill-selection policy for GSD work.", "- If a listed skill exists and is relevant, load and follow it instead of treating it as a vague suggestion.", "- Current user instructions still override these defaults.");
243
- const fmt = (ref) => resolutions ? formatSkillRef(ref, resolutions) : ref;
244
- if (preferences.always_use_skills && preferences.always_use_skills.length > 0) {
245
- lines.push("- Always use these skills when relevant:");
246
- for (const skill of preferences.always_use_skills) {
247
- lines.push(` - ${fmt(skill)}`);
248
- }
249
- }
250
- if (preferences.prefer_skills && preferences.prefer_skills.length > 0) {
251
- lines.push("- Prefer these skills when relevant:");
252
- for (const skill of preferences.prefer_skills) {
253
- lines.push(` - ${fmt(skill)}`);
254
- }
255
- }
256
- if (preferences.avoid_skills && preferences.avoid_skills.length > 0) {
257
- lines.push("- Avoid these skills unless clearly needed:");
258
- for (const skill of preferences.avoid_skills) {
259
- lines.push(` - ${fmt(skill)}`);
260
- }
261
- }
262
- if (preferences.skill_rules && preferences.skill_rules.length > 0) {
263
- lines.push("- Situational rules:");
264
- for (const rule of preferences.skill_rules) {
265
- lines.push(` - When ${rule.when}:`);
266
- if (rule.use && rule.use.length > 0) {
267
- lines.push(` - use: ${rule.use.map(fmt).join(", ")}`);
268
- }
269
- if (rule.prefer && rule.prefer.length > 0) {
270
- lines.push(` - prefer: ${rule.prefer.map(fmt).join(", ")}`);
271
- }
272
- if (rule.avoid && rule.avoid.length > 0) {
273
- lines.push(` - avoid: ${rule.avoid.map(fmt).join(", ")}`);
274
- }
275
- }
276
- }
277
- if (preferences.custom_instructions && preferences.custom_instructions.length > 0) {
278
- lines.push("- Additional instructions:");
279
- for (const instruction of preferences.custom_instructions) {
280
- lines.push(` - ${instruction}`);
281
- }
282
- }
283
- return lines.join("\n");
284
- }
285
- // ─── Hook Resolution ──────────────────────────────────────────────────────────
286
- /**
287
- * Resolve enabled post-unit hooks from effective preferences.
288
- * Returns an empty array when no hooks are configured.
289
- */
290
- export function resolvePostUnitHooks() {
291
- const prefs = loadEffectiveGSDPreferences();
292
- return (prefs?.preferences.post_unit_hooks ?? [])
293
- .filter(h => h.enabled !== false);
294
- }
295
- /**
296
- * Resolve enabled pre-dispatch hooks from effective preferences.
297
- * Returns an empty array when no hooks are configured.
298
- */
299
- export function resolvePreDispatchHooks() {
300
- const prefs = loadEffectiveGSDPreferences();
301
- return (prefs?.preferences.pre_dispatch_hooks ?? [])
302
- .filter(h => h.enabled !== false);
303
- }
304
- // ─── Isolation & Parallel ─────────────────────────────────────────────────────
305
- /**
306
- * Resolve the effective git isolation mode from preferences.
307
- * Returns "worktree" (default), "branch", or "none".
308
- */
309
- export function getIsolationMode() {
310
- const prefs = loadEffectiveGSDPreferences()?.preferences?.git;
311
- if (prefs?.isolation === "none")
312
- return "none";
313
- if (prefs?.isolation === "branch")
314
- return "branch";
315
- return "worktree"; // default
316
- }
317
- export function resolveParallelConfig(prefs) {
318
- return {
319
- enabled: prefs?.parallel?.enabled ?? false,
320
- max_workers: Math.max(1, Math.min(4, prefs?.parallel?.max_workers ?? 2)),
321
- budget_ceiling: prefs?.parallel?.budget_ceiling,
322
- merge_strategy: prefs?.parallel?.merge_strategy ?? "per-milestone",
323
- auto_merge: prefs?.parallel?.auto_merge ?? "confirm",
324
- };
325
- }
@@ -1,197 +0,0 @@
1
- /**
2
- * GSD Progress Score — Traffic Light Status Indicator (#1221)
3
- *
4
- * Combines existing health signals into a single at-a-glance status:
5
- * - Green: progressing well
6
- * - Yellow: struggling (retries, warnings)
7
- * - Red: stuck (loops, persistent errors, no activity)
8
- *
9
- * Purely derived — no stored state. Reads from doctor-proactive health
10
- * tracking, stuck detection counters, and working-tree activity.
11
- */
12
- import { getHealthTrend, getConsecutiveErrorUnits, getHealthHistory, } from "./doctor-proactive.js";
13
- // ── Signal Evaluators ──────────────────────────────────────────────────────
14
- function evaluateHealthTrend() {
15
- const trend = getHealthTrend();
16
- switch (trend) {
17
- case "improving":
18
- return { name: "health_trend", level: "green", detail: "Health improving" };
19
- case "stable":
20
- return { name: "health_trend", level: "green", detail: "Health stable" };
21
- case "degrading":
22
- return { name: "health_trend", level: "red", detail: "Health degrading" };
23
- case "unknown":
24
- return { name: "health_trend", level: "green", detail: "Insufficient data" };
25
- }
26
- }
27
- function evaluateErrorStreak() {
28
- const streak = getConsecutiveErrorUnits();
29
- if (streak === 0) {
30
- return { name: "error_streak", level: "green", detail: "No consecutive errors" };
31
- }
32
- if (streak <= 2) {
33
- return { name: "error_streak", level: "yellow", detail: `${streak} consecutive error unit(s)` };
34
- }
35
- return { name: "error_streak", level: "red", detail: `${streak} consecutive error units` };
36
- }
37
- function evaluateRecentErrors() {
38
- const history = getHealthHistory();
39
- if (history.length === 0) {
40
- return { name: "recent_errors", level: "green", detail: "No health data yet" };
41
- }
42
- const latest = history[history.length - 1];
43
- if (latest.errors === 0 && latest.warnings <= 1) {
44
- return { name: "recent_errors", level: "green", detail: `${latest.errors}E/${latest.warnings}W` };
45
- }
46
- if (latest.errors === 0) {
47
- return { name: "recent_errors", level: "yellow", detail: `${latest.warnings} warning(s)` };
48
- }
49
- if (latest.errors <= 2) {
50
- return { name: "recent_errors", level: "yellow", detail: `${latest.errors} error(s), ${latest.warnings} warning(s)` };
51
- }
52
- return { name: "recent_errors", level: "red", detail: `${latest.errors} error(s), ${latest.warnings} warning(s)` };
53
- }
54
- function evaluateArtifactProduction() {
55
- const history = getHealthHistory();
56
- if (history.length < 2) {
57
- return { name: "artifact_production", level: "green", detail: "Insufficient data" };
58
- }
59
- const totalFixes = history.reduce((sum, s) => sum + s.fixesApplied, 0);
60
- const recent = history.slice(-3);
61
- const recentFixes = recent.reduce((sum, s) => sum + s.fixesApplied, 0);
62
- // If recent units are all producing fixes but errors aren't decreasing,
63
- // doctor is fighting fires but not making headway
64
- if (recentFixes > 3 && recent.every(s => s.errors > 0)) {
65
- return { name: "artifact_production", level: "yellow", detail: "Doctor applying fixes but errors persist" };
66
- }
67
- return { name: "artifact_production", level: "green", detail: `${totalFixes} total fixes applied` };
68
- }
69
- function evaluateDispatchVelocity() {
70
- const history = getHealthHistory();
71
- if (history.length < 3) {
72
- return { name: "dispatch_velocity", level: "green", detail: "Insufficient data" };
73
- }
74
- // Check time between recent snapshots — are units completing at a reasonable rate?
75
- const recent = history.slice(-5);
76
- if (recent.length < 2) {
77
- return { name: "dispatch_velocity", level: "green", detail: "Insufficient data" };
78
- }
79
- const timeDiffs = [];
80
- for (let i = 1; i < recent.length; i++) {
81
- timeDiffs.push(recent[i].timestamp - recent[i - 1].timestamp);
82
- }
83
- const avgTimeMs = timeDiffs.reduce((a, b) => a + b, 0) / timeDiffs.length;
84
- const avgTimeMins = Math.round(avgTimeMs / 60_000);
85
- // If average unit time is > 15 minutes, something might be wrong
86
- if (avgTimeMins > 15) {
87
- return { name: "dispatch_velocity", level: "yellow", detail: `Units averaging ${avgTimeMins}min each` };
88
- }
89
- return { name: "dispatch_velocity", level: "green", detail: `Units averaging ${avgTimeMins || "<1"}min each` };
90
- }
91
- // ── Main API ───────────────────────────────────────────────────────────────
92
- /**
93
- * Compute the current progress score by evaluating all available signals.
94
- * Returns a composite score with individual signal details.
95
- */
96
- export function computeProgressScore() {
97
- const signals = [
98
- evaluateHealthTrend(),
99
- evaluateErrorStreak(),
100
- evaluateRecentErrors(),
101
- evaluateArtifactProduction(),
102
- evaluateDispatchVelocity(),
103
- ];
104
- // Overall level: worst of all signals
105
- const level = signals.some(s => s.level === "red")
106
- ? "red"
107
- : signals.some(s => s.level === "yellow")
108
- ? "yellow"
109
- : "green";
110
- // Build summary from the most important signals
111
- const summary = buildSummary(level, signals);
112
- return { level, summary, signals };
113
- }
114
- /**
115
- * Compute progress score with additional context from the current unit.
116
- */
117
- export function computeProgressScoreWithContext(context) {
118
- const base = computeProgressScore();
119
- // Add retry signal if available
120
- if (context.retryCount !== undefined && context.maxRetries !== undefined) {
121
- const retrySignal = context.retryCount === 0
122
- ? { name: "retry_count", level: "green", detail: "No retries" }
123
- : context.retryCount <= 2
124
- ? { name: "retry_count", level: "yellow", detail: `Retry ${context.retryCount}/${context.maxRetries}` }
125
- : { name: "retry_count", level: "red", detail: `Retry ${context.retryCount}/${context.maxRetries} — looping` };
126
- base.signals.push(retrySignal);
127
- // Re-evaluate level
128
- if (retrySignal.level === "red")
129
- base.level = "red";
130
- else if (retrySignal.level === "yellow" && base.level === "green")
131
- base.level = "yellow";
132
- }
133
- // Build richer summary with context
134
- base.summary = buildSummaryWithContext(base.level, base.signals, context);
135
- return base;
136
- }
137
- // ── Formatting ─────────────────────────────────────────────────────────────
138
- function buildSummary(level, signals) {
139
- switch (level) {
140
- case "green":
141
- return "Progressing well";
142
- case "yellow": {
143
- const issues = signals.filter(s => s.level === "yellow").map(s => s.detail);
144
- return `Struggling — ${issues[0] ?? "minor issues detected"}`;
145
- }
146
- case "red": {
147
- const issues = signals.filter(s => s.level === "red").map(s => s.detail);
148
- return `Stuck — ${issues[0] ?? "critical issues detected"}`;
149
- }
150
- }
151
- }
152
- function buildSummaryWithContext(level, signals, context) {
153
- const unitLabel = context.currentUnitId
154
- ? ` ${context.currentUnitId}`
155
- : "";
156
- const progressLabel = context.completedUnits !== undefined && context.totalUnits !== undefined
157
- ? ` (${context.completedUnits} of ${context.totalUnits} done)`
158
- : "";
159
- switch (level) {
160
- case "green":
161
- return `Progressing well —${unitLabel}${progressLabel}`;
162
- case "yellow": {
163
- const issues = signals.filter(s => s.level === "yellow").map(s => s.detail);
164
- const retryInfo = context.retryCount ? `, attempt ${context.retryCount}/${context.maxRetries}` : "";
165
- return `Struggling —${unitLabel}${retryInfo}${progressLabel ? ` ${progressLabel}` : ""}, ${issues[0] ?? "issues detected"}`;
166
- }
167
- case "red": {
168
- const issues = signals.filter(s => s.level === "red").map(s => s.detail);
169
- return `Stuck —${unitLabel}${progressLabel ? ` ${progressLabel}` : ""}, ${issues[0] ?? "critical issues"}`;
170
- }
171
- }
172
- }
173
- /**
174
- * Format progress score as a single-line traffic light for TUI display.
175
- */
176
- export function formatProgressLine(score) {
177
- const icon = score.level === "green" ? "\uD83D\uDFE2"
178
- : score.level === "yellow" ? "\uD83D\uDFE1"
179
- : "\uD83D\uDD34";
180
- return `${icon} ${score.summary}`;
181
- }
182
- /**
183
- * Format a detailed progress report showing all signals.
184
- */
185
- export function formatProgressReport(score) {
186
- const lines = [];
187
- lines.push(formatProgressLine(score));
188
- lines.push("");
189
- lines.push("Signals:");
190
- for (const signal of score.signals) {
191
- const icon = signal.level === "green" ? "\u2705"
192
- : signal.level === "yellow" ? "\u26A0\uFE0F"
193
- : "\uD83D\uDED1";
194
- lines.push(` ${icon} ${signal.name}: ${signal.detail}`);
195
- }
196
- return lines.join("\n");
197
- }
@@ -1,150 +0,0 @@
1
- /**
2
- * Prompt Cache Optimizer — separates prompt content into cacheable static
3
- * prefixes and dynamic per-task suffixes to maximize provider cache hit rates.
4
- *
5
- * Anthropic caches by prefix match (up to 4 breakpoints, 90% savings).
6
- * OpenAI auto-caches prompts with 1024+ stable prefix tokens (50% savings).
7
- * Both benefit from placing static content first and dynamic content last.
8
- */
9
- // ─── Label classification maps ───────────────────────────────────────────────
10
- /** Labels that never change within a session */
11
- const STATIC_LABELS = new Set([
12
- "system-prompt",
13
- "base-instructions",
14
- "executor-constraints",
15
- ]);
16
- /** Prefix patterns for static labels (e.g. "template-*") */
17
- const STATIC_PREFIXES = ["template-"];
18
- /** Labels that change per-slice but not per-task */
19
- const SEMI_STATIC_LABELS = new Set([
20
- "slice-plan",
21
- "decisions",
22
- "requirements",
23
- "roadmap",
24
- "prior-summaries",
25
- "project-context",
26
- "overrides",
27
- ]);
28
- /** Labels that change per-task */
29
- const DYNAMIC_LABELS = new Set([
30
- "task-plan",
31
- "task-instructions",
32
- "task-context",
33
- "file-contents",
34
- "diff-context",
35
- "verification-commands",
36
- ]);
37
- // ─── Public API ──────────────────────────────────────────────────────────────
38
- /**
39
- * Classify common GSD prompt sections by their caching potential.
40
- * Returns the appropriate ContentRole for a section label.
41
- */
42
- export function classifySection(label) {
43
- if (STATIC_LABELS.has(label))
44
- return "static";
45
- if (STATIC_PREFIXES.some((p) => label.startsWith(p)))
46
- return "static";
47
- if (SEMI_STATIC_LABELS.has(label))
48
- return "semi-static";
49
- if (DYNAMIC_LABELS.has(label))
50
- return "dynamic";
51
- // Conservative default: unknown labels are treated as dynamic
52
- return "dynamic";
53
- }
54
- /**
55
- * Build a PromptSection from content with automatic role classification.
56
- *
57
- * @param label Section label (e.g., "slice-plan", "task-instructions")
58
- * @param content The section content
59
- * @param role Optional explicit role override
60
- */
61
- export function section(label, content, role) {
62
- return {
63
- label,
64
- content,
65
- role: role ?? classifySection(label),
66
- };
67
- }
68
- /**
69
- * Optimize prompt sections for maximum cache hit rates.
70
- * Reorders sections: static first, then semi-static, then dynamic.
71
- * Preserves relative order within each role group.
72
- *
73
- * @param sections Array of labeled prompt sections
74
- * @returns Cache-optimized prompt with statistics
75
- */
76
- export function optimizeForCaching(sections) {
77
- const groups = {
78
- static: [],
79
- "semi-static": [],
80
- dynamic: [],
81
- };
82
- for (const s of sections) {
83
- groups[s.role].push(s);
84
- }
85
- const ordered = [
86
- ...groups["static"],
87
- ...groups["semi-static"],
88
- ...groups["dynamic"],
89
- ];
90
- const prompt = ordered.map((s) => s.content).join("\n\n");
91
- const staticChars = groups["static"].reduce((sum, s) => sum + s.content.length, 0);
92
- const semiStaticChars = groups["semi-static"].reduce((sum, s) => sum + s.content.length, 0);
93
- // Account for separator characters between sections in the cacheable prefix
94
- const staticSeparators = groups["static"].length > 0
95
- ? (groups["static"].length - 1) * 2 // "\n\n" between static sections
96
- : 0;
97
- const semiStaticSeparators = groups["semi-static"].length > 0
98
- ? (groups["semi-static"].length - 1) * 2
99
- : 0;
100
- // Separator between static and semi-static groups
101
- const groupSeparator = groups["static"].length > 0 && groups["semi-static"].length > 0 ? 2 : 0;
102
- const cacheablePrefixChars = staticChars +
103
- semiStaticChars +
104
- staticSeparators +
105
- semiStaticSeparators +
106
- groupSeparator;
107
- const totalChars = prompt.length;
108
- const cacheEfficiency = totalChars > 0 ? cacheablePrefixChars / totalChars : 0;
109
- return {
110
- prompt,
111
- cacheablePrefixChars,
112
- totalChars,
113
- cacheEfficiency,
114
- sectionCounts: {
115
- static: groups["static"].length,
116
- "semi-static": groups["semi-static"].length,
117
- dynamic: groups["dynamic"].length,
118
- },
119
- };
120
- }
121
- /**
122
- * Estimate the cache savings for a given optimization result.
123
- * Based on provider pricing:
124
- * - Anthropic: 90% savings on cached tokens
125
- * - OpenAI: 50% savings on cached tokens
126
- *
127
- * @param result The cache-optimized prompt
128
- * @param provider Provider name for savings calculation
129
- * @returns Estimated savings as a decimal (0.0-1.0)
130
- */
131
- export function estimateCacheSavings(result, provider) {
132
- switch (provider) {
133
- case "anthropic":
134
- return result.cacheEfficiency * 0.9;
135
- case "openai":
136
- return result.cacheEfficiency * 0.5;
137
- case "other":
138
- return 0;
139
- }
140
- }
141
- /**
142
- * Compute cache hit rate from token usage metrics.
143
- * Returns a percentage 0-100.
144
- */
145
- export function computeCacheHitRate(usage) {
146
- const denominator = usage.cacheRead + usage.input;
147
- if (denominator === 0)
148
- return 0;
149
- return (usage.cacheRead / denominator) * 100;
150
- }