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,111 +0,0 @@
1
- /**
2
- * GSD Milestone Actions — Park, Unpark, and Discard operations.
3
- *
4
- * Park: Creates a PARKED.md marker file. deriveState() skips parked milestones
5
- * when finding the active milestone, but keeps them in the registry.
6
- *
7
- * Unpark: Removes the PARKED.md marker. The milestone resumes normal state
8
- * derivation (active/pending depending on position and dependencies).
9
- *
10
- * Discard: Permanently removes the milestone directory. Also prunes
11
- * QUEUE-ORDER.json if the discarded milestone was in it.
12
- */
13
- import { existsSync, rmSync, writeFileSync, readFileSync, unlinkSync } from "node:fs";
14
- import { join } from "node:path";
15
- import { resolveMilestonePath, resolveMilestoneFile, buildMilestoneFileName, } from "./paths.js";
16
- import { invalidateAllCaches } from "./cache.js";
17
- import { loadQueueOrder, saveQueueOrder } from "./queue-order.js";
18
- // ─── Park ──────────────────────────────────────────────────────────────────
19
- /**
20
- * Park a milestone — creates a PARKED.md marker file with reason and timestamp.
21
- * Parked milestones are skipped during active-milestone discovery but stay on disk.
22
- * Returns true if successfully parked, false if milestone not found or already parked.
23
- */
24
- export function parkMilestone(basePath, milestoneId, reason) {
25
- const mDir = resolveMilestonePath(basePath, milestoneId);
26
- if (!mDir || !existsSync(mDir))
27
- return false;
28
- // Guard: do not park a completed milestone — it would corrupt depends_on satisfaction
29
- const summaryFile = resolveMilestoneFile(basePath, milestoneId, "SUMMARY");
30
- if (summaryFile)
31
- return false;
32
- const parkedPath = join(mDir, buildMilestoneFileName(milestoneId, "PARKED"));
33
- if (existsSync(parkedPath))
34
- return false; // already parked
35
- const content = [
36
- "---",
37
- `parked_at: ${new Date().toISOString()}`,
38
- `reason: "${reason.replace(/"/g, '\\"')}"`,
39
- "---",
40
- "",
41
- `# ${milestoneId} — Parked`,
42
- "",
43
- `> ${reason}`,
44
- "",
45
- ].join("\n");
46
- writeFileSync(parkedPath, content, "utf-8");
47
- invalidateAllCaches();
48
- return true;
49
- }
50
- // ─── Unpark ────────────────────────────────────────────────────────────────
51
- /**
52
- * Unpark a milestone — removes the PARKED.md marker file.
53
- * Returns true if successfully unparked, false if milestone not found or not parked.
54
- */
55
- export function unparkMilestone(basePath, milestoneId) {
56
- const mDir = resolveMilestonePath(basePath, milestoneId);
57
- if (!mDir || !existsSync(mDir))
58
- return false;
59
- const parkedPath = join(mDir, buildMilestoneFileName(milestoneId, "PARKED"));
60
- if (!existsSync(parkedPath))
61
- return false; // not parked
62
- unlinkSync(parkedPath);
63
- invalidateAllCaches();
64
- return true;
65
- }
66
- // ─── Discard ───────────────────────────────────────────────────────────────
67
- /**
68
- * Discard a milestone — permanently removes the milestone directory and
69
- * prunes it from QUEUE-ORDER.json if present.
70
- * Returns true if successfully discarded, false if milestone not found.
71
- */
72
- export function discardMilestone(basePath, milestoneId) {
73
- const mDir = resolveMilestonePath(basePath, milestoneId);
74
- if (!mDir || !existsSync(mDir))
75
- return false;
76
- rmSync(mDir, { recursive: true, force: true });
77
- // Prune from queue order if present
78
- const order = loadQueueOrder(basePath);
79
- if (order && order.includes(milestoneId)) {
80
- saveQueueOrder(basePath, order.filter(id => id !== milestoneId));
81
- }
82
- invalidateAllCaches();
83
- return true;
84
- }
85
- // ─── Query ─────────────────────────────────────────────────────────────────
86
- /**
87
- * Check whether a milestone is parked (PARKED.md exists).
88
- */
89
- export function isParked(basePath, milestoneId) {
90
- return !!resolveMilestoneFile(basePath, milestoneId, "PARKED");
91
- }
92
- /**
93
- * Read the park reason from PARKED.md frontmatter.
94
- * Returns null if the milestone is not parked or the reason can't be extracted.
95
- */
96
- export function getParkedReason(basePath, milestoneId) {
97
- const parkedFile = resolveMilestoneFile(basePath, milestoneId, "PARKED");
98
- if (!parkedFile)
99
- return null;
100
- try {
101
- const content = readFileSync(parkedFile, "utf-8");
102
- const match = content.match(/^---\n([\s\S]*?)\n---/);
103
- if (!match)
104
- return null;
105
- const reasonMatch = match[1].match(/reason:\s*"([^"]*?)"/);
106
- return reasonMatch ? reasonMatch[1] : null;
107
- }
108
- catch {
109
- return null;
110
- }
111
- }
@@ -1,48 +0,0 @@
1
- // GSD Extension — Model Cost Table
2
- // Static cost reference for known models, used by the dynamic router
3
- // for cross-provider cost comparison.
4
- //
5
- // Costs are approximate per-1K-token rates in USD (input tokens).
6
- // Updated with GSD releases. Users can override via preferences.
7
- /**
8
- * Bundled cost table for known models.
9
- * Updated periodically with GSD releases.
10
- */
11
- export const BUNDLED_COST_TABLE = [
12
- // Anthropic
13
- { id: "claude-opus-4-6", inputPer1k: 0.015, outputPer1k: 0.075, updatedAt: "2025-03-15" },
14
- { id: "claude-sonnet-4-6", inputPer1k: 0.003, outputPer1k: 0.015, updatedAt: "2025-03-15" },
15
- { id: "claude-haiku-4-5", inputPer1k: 0.0008, outputPer1k: 0.004, updatedAt: "2025-03-15" },
16
- { id: "claude-sonnet-4-5-20250514", inputPer1k: 0.003, outputPer1k: 0.015, updatedAt: "2025-03-15" },
17
- { id: "claude-3-5-sonnet-latest", inputPer1k: 0.003, outputPer1k: 0.015, updatedAt: "2025-03-15" },
18
- { id: "claude-3-5-haiku-latest", inputPer1k: 0.0008, outputPer1k: 0.004, updatedAt: "2025-03-15" },
19
- { id: "claude-3-opus-latest", inputPer1k: 0.015, outputPer1k: 0.075, updatedAt: "2025-03-15" },
20
- // OpenAI
21
- { id: "gpt-4o", inputPer1k: 0.0025, outputPer1k: 0.01, updatedAt: "2025-03-15" },
22
- { id: "gpt-4o-mini", inputPer1k: 0.00015, outputPer1k: 0.0006, updatedAt: "2025-03-15" },
23
- { id: "o1", inputPer1k: 0.015, outputPer1k: 0.06, updatedAt: "2025-03-15" },
24
- { id: "o3", inputPer1k: 0.015, outputPer1k: 0.06, updatedAt: "2025-03-15" },
25
- { id: "gpt-4-turbo", inputPer1k: 0.01, outputPer1k: 0.03, updatedAt: "2025-03-15" },
26
- // Google
27
- { id: "gemini-2.0-flash", inputPer1k: 0.0001, outputPer1k: 0.0004, updatedAt: "2025-03-15" },
28
- { id: "gemini-flash-2.0", inputPer1k: 0.0001, outputPer1k: 0.0004, updatedAt: "2025-03-15" },
29
- { id: "gemini-2.5-pro", inputPer1k: 0.00125, outputPer1k: 0.005, updatedAt: "2025-03-15" },
30
- // DeepSeek
31
- { id: "deepseek-chat", inputPer1k: 0.00014, outputPer1k: 0.00028, updatedAt: "2025-03-15" },
32
- ];
33
- /**
34
- * Lookup cost for a model ID. Returns undefined if not found.
35
- */
36
- export function lookupModelCost(modelId) {
37
- const bareId = modelId.includes("/") ? modelId.split("/").pop() : modelId;
38
- return BUNDLED_COST_TABLE.find(e => e.id === bareId)
39
- ?? BUNDLED_COST_TABLE.find(e => bareId.includes(e.id) || e.id.includes(bareId));
40
- }
41
- /**
42
- * Compare two models by input cost. Returns negative if a is cheaper.
43
- */
44
- export function compareModelCost(modelIdA, modelIdB) {
45
- const costA = lookupModelCost(modelIdA)?.inputPer1k ?? 999;
46
- const costB = lookupModelCost(modelIdB)?.inputPer1k ?? 999;
47
- return costA - costB;
48
- }
@@ -1,187 +0,0 @@
1
- // GSD Extension — Dynamic Model Router
2
- // Maps complexity tiers to models, enforcing downgrade-only semantics.
3
- // The user's configured model is always the ceiling.
4
- import { tierOrdinal } from "./complexity-classifier.js";
5
- // ─── Known Model Tiers ───────────────────────────────────────────────────────
6
- // Maps known model IDs to their capability tier. Used when tier_models is not
7
- // explicitly configured to pick the best available model for each tier.
8
- const MODEL_CAPABILITY_TIER = {
9
- // Light-tier models (cheapest)
10
- "claude-haiku-4-5": "light",
11
- "claude-3-5-haiku-latest": "light",
12
- "claude-3-haiku-20240307": "light",
13
- "gpt-4o-mini": "light",
14
- "gemini-2.0-flash": "light",
15
- "gemini-flash-2.0": "light",
16
- // Standard-tier models
17
- "claude-sonnet-4-6": "standard",
18
- "claude-sonnet-4-5-20250514": "standard",
19
- "claude-3-5-sonnet-latest": "standard",
20
- "gpt-4o": "standard",
21
- "gemini-2.5-pro": "standard",
22
- "deepseek-chat": "standard",
23
- // Heavy-tier models (most capable)
24
- "claude-opus-4-6": "heavy",
25
- "claude-3-opus-latest": "heavy",
26
- "gpt-4-turbo": "heavy",
27
- "o1": "heavy",
28
- "o3": "heavy",
29
- };
30
- // ─── Cost Table (per 1K input tokens, approximate USD) ───────────────────────
31
- // Used for cross-provider cost comparison when multiple providers offer
32
- // the same capability tier.
33
- const MODEL_COST_PER_1K_INPUT = {
34
- "claude-haiku-4-5": 0.0008,
35
- "claude-3-5-haiku-latest": 0.0008,
36
- "claude-sonnet-4-6": 0.003,
37
- "claude-sonnet-4-5-20250514": 0.003,
38
- "claude-opus-4-6": 0.015,
39
- "gpt-4o-mini": 0.00015,
40
- "gpt-4o": 0.0025,
41
- "gemini-2.0-flash": 0.0001,
42
- "gemini-2.5-pro": 0.00125,
43
- "deepseek-chat": 0.00014,
44
- };
45
- // ─── Public API ──────────────────────────────────────────────────────────────
46
- /**
47
- * Resolve the model to use for a given complexity tier.
48
- *
49
- * Downgrade-only: the returned model is always equal to or cheaper than
50
- * the user's configured primary model. Never upgrades beyond configuration.
51
- *
52
- * @param classification The complexity classification result
53
- * @param phaseConfig The user's configured model for this phase (ceiling)
54
- * @param routingConfig Dynamic routing configuration
55
- * @param availableModelIds List of available model IDs (from registry)
56
- */
57
- export function resolveModelForComplexity(classification, phaseConfig, routingConfig, availableModelIds) {
58
- // If no phase config or routing disabled, pass through
59
- if (!phaseConfig || !routingConfig.enabled) {
60
- return {
61
- modelId: phaseConfig?.primary ?? "",
62
- fallbacks: phaseConfig?.fallbacks ?? [],
63
- tier: classification.tier,
64
- wasDowngraded: false,
65
- reason: "dynamic routing disabled or no phase config",
66
- };
67
- }
68
- const configuredPrimary = phaseConfig.primary;
69
- const configuredTier = getModelTier(configuredPrimary);
70
- const requestedTier = classification.tier;
71
- // Downgrade-only: if requested tier >= configured tier, no change
72
- if (tierOrdinal(requestedTier) >= tierOrdinal(configuredTier)) {
73
- return {
74
- modelId: configuredPrimary,
75
- fallbacks: phaseConfig.fallbacks,
76
- tier: requestedTier,
77
- wasDowngraded: false,
78
- reason: `tier ${requestedTier} >= configured ${configuredTier}`,
79
- };
80
- }
81
- // Find the best model for the requested tier
82
- const targetModelId = findModelForTier(requestedTier, routingConfig, availableModelIds, routingConfig.cross_provider !== false);
83
- if (!targetModelId) {
84
- // No suitable model found — use configured primary
85
- return {
86
- modelId: configuredPrimary,
87
- fallbacks: phaseConfig.fallbacks,
88
- tier: requestedTier,
89
- wasDowngraded: false,
90
- reason: `no ${requestedTier}-tier model available`,
91
- };
92
- }
93
- // Build fallback chain: [downgraded_model, ...configured_fallbacks, configured_primary]
94
- const fallbacks = [
95
- ...phaseConfig.fallbacks.filter(f => f !== targetModelId),
96
- configuredPrimary,
97
- ].filter(f => f !== targetModelId);
98
- return {
99
- modelId: targetModelId,
100
- fallbacks,
101
- tier: requestedTier,
102
- wasDowngraded: true,
103
- reason: classification.reason,
104
- };
105
- }
106
- /**
107
- * Escalate to the next tier after a failure.
108
- * Returns the new tier, or null if already at heavy (max).
109
- */
110
- export function escalateTier(currentTier) {
111
- switch (currentTier) {
112
- case "light": return "standard";
113
- case "standard": return "heavy";
114
- case "heavy": return null;
115
- }
116
- }
117
- /**
118
- * Get the default routing config (all features enabled).
119
- */
120
- export function defaultRoutingConfig() {
121
- return {
122
- enabled: false,
123
- escalate_on_failure: true,
124
- budget_pressure: true,
125
- cross_provider: true,
126
- hooks: true,
127
- };
128
- }
129
- // ─── Internal ────────────────────────────────────────────────────────────────
130
- function getModelTier(modelId) {
131
- // Strip provider prefix if present
132
- const bareId = modelId.includes("/") ? modelId.split("/").pop() : modelId;
133
- // Check exact match first
134
- if (MODEL_CAPABILITY_TIER[bareId])
135
- return MODEL_CAPABILITY_TIER[bareId];
136
- // Check if any known model ID is a prefix/suffix match
137
- for (const [knownId, tier] of Object.entries(MODEL_CAPABILITY_TIER)) {
138
- if (bareId.includes(knownId) || knownId.includes(bareId))
139
- return tier;
140
- }
141
- // Unknown models are assumed heavy (safest assumption)
142
- return "heavy";
143
- }
144
- function findModelForTier(tier, config, availableModelIds, crossProvider) {
145
- // 1. Check explicit tier_models config
146
- const explicitModel = config.tier_models?.[tier];
147
- if (explicitModel && availableModelIds.includes(explicitModel)) {
148
- return explicitModel;
149
- }
150
- // Also check with provider prefix stripped
151
- if (explicitModel) {
152
- const match = availableModelIds.find(id => {
153
- const bareAvail = id.includes("/") ? id.split("/").pop() : id;
154
- const bareExplicit = explicitModel.includes("/") ? explicitModel.split("/").pop() : explicitModel;
155
- return bareAvail === bareExplicit;
156
- });
157
- if (match)
158
- return match;
159
- }
160
- // 2. Auto-detect: find the cheapest available model in the requested tier
161
- const candidates = availableModelIds
162
- .filter(id => {
163
- const modelTier = getModelTier(id);
164
- return modelTier === tier;
165
- })
166
- .sort((a, b) => {
167
- if (!crossProvider)
168
- return 0;
169
- const costA = getModelCost(a);
170
- const costB = getModelCost(b);
171
- return costA - costB;
172
- });
173
- return candidates[0] ?? null;
174
- }
175
- function getModelCost(modelId) {
176
- const bareId = modelId.includes("/") ? modelId.split("/").pop() : modelId;
177
- if (MODEL_COST_PER_1K_INPUT[bareId] !== undefined) {
178
- return MODEL_COST_PER_1K_INPUT[bareId];
179
- }
180
- // Check partial matches
181
- for (const [knownId, cost] of Object.entries(MODEL_COST_PER_1K_INPUT)) {
182
- if (bareId.includes(knownId) || knownId.includes(bareId))
183
- return cost;
184
- }
185
- // Unknown cost — assume expensive to avoid routing to unknown cheap models
186
- return 999;
187
- }
@@ -1,322 +0,0 @@
1
- /**
2
- * Namespaced Component Registry Module
3
- *
4
- * Provides the canonical identity model for imported plugin components.
5
- * Supports both namespaced (plugin:component) and flat (bare name) components,
6
- * detects collisions at registration time, and provides lookup by canonical name
7
- * or namespace listing.
8
- *
9
- * This registry serves as the bridge between S01's plugin discovery output
10
- * and Pi's internal component resolution system.
11
- */
12
- // ============================================================================
13
- // NamespacedRegistry Class
14
- // ============================================================================
15
- /**
16
- * Registry for namespaced plugin components.
17
- *
18
- * Features:
19
- * - Computes canonical names from namespace + name
20
- * - Detects and reports collisions at registration time
21
- * - First registration wins; subsequent duplicates return diagnostic
22
- * - Lookup by canonical name or namespace listing
23
- * - Compatible with both namespaced and flat (non-namespaced) components
24
- *
25
- * Usage:
26
- * ```typescript
27
- * const registry = new NamespacedRegistry();
28
- *
29
- * // Register a namespaced component
30
- * const diag = registry.register({
31
- * name: 'code-review',
32
- * namespace: 'my-plugin',
33
- * type: 'skill',
34
- * filePath: '/plugins/my-plugin/skills/code-review/SKILL.md',
35
- * source: 'plugin:my-plugin',
36
- * description: 'Reviews code for quality issues',
37
- * metadata: { pluginVersion: '1.0.0' }
38
- * });
39
- *
40
- * // Lookup by canonical name
41
- * const skill = registry.getByCanonical('my-plugin:code-review');
42
- *
43
- * // List all components in a namespace
44
- * const allSkills = registry.getByNamespace('my-plugin');
45
- * ```
46
- */
47
- export class NamespacedRegistry {
48
- /** Internal storage: canonicalName -> component */
49
- components = new Map();
50
- /** Internal storage: alias -> canonicalName */
51
- aliasMap = new Map();
52
- /** Collision diagnostics collected during registration */
53
- diagnostics = [];
54
- /**
55
- * Register a component in the registry.
56
- *
57
- * Computes the canonical name as `${namespace}:${name}` when namespace is present,
58
- * or bare `name` otherwise. Returns a diagnostic if the canonical name already exists.
59
- *
60
- * @param component - Component data (without canonicalName, which is computed)
61
- * @returns Diagnostic if collision detected, undefined otherwise
62
- */
63
- register(component) {
64
- // Compute canonical name
65
- const canonicalName = component.namespace
66
- ? `${component.namespace}:${component.name}`
67
- : component.name;
68
- // Create full component with canonical name
69
- const fullComponent = {
70
- ...component,
71
- canonicalName,
72
- };
73
- // Check for collision
74
- const existing = this.components.get(canonicalName);
75
- if (existing) {
76
- const diagnostic = {
77
- type: 'collision',
78
- message: `canonical name "${canonicalName}" collision`,
79
- collision: {
80
- canonicalName,
81
- winnerPath: existing.filePath,
82
- loserPath: component.filePath,
83
- winnerSource: existing.source,
84
- loserSource: component.source,
85
- },
86
- };
87
- this.diagnostics.push(diagnostic);
88
- return diagnostic;
89
- }
90
- // Register the component
91
- this.components.set(canonicalName, fullComponent);
92
- return undefined;
93
- }
94
- /**
95
- * Get a component by its canonical name.
96
- *
97
- * @param canonicalName - The canonical name (e.g., "my-plugin:code-review" or "code-review")
98
- * @returns The component if found, undefined otherwise
99
- */
100
- getByCanonical(canonicalName) {
101
- return this.components.get(canonicalName);
102
- }
103
- /**
104
- * Get all components belonging to a specific namespace.
105
- *
106
- * @param namespace - The namespace to filter by (e.g., "my-plugin")
107
- * @returns Array of components in that namespace
108
- */
109
- getByNamespace(namespace) {
110
- const results = [];
111
- for (const component of this.components.values()) {
112
- if (component.namespace === namespace) {
113
- results.push(component);
114
- }
115
- }
116
- return results;
117
- }
118
- /**
119
- * Get all registered components.
120
- *
121
- * @returns Array of all components
122
- */
123
- getAll() {
124
- return Array.from(this.components.values());
125
- }
126
- /**
127
- * Get all diagnostics collected during registration.
128
- *
129
- * Returns deep copies to prevent external mutation of internal state.
130
- *
131
- * @returns Array of diagnostics (collisions, etc.)
132
- */
133
- getDiagnostics() {
134
- return this.diagnostics.map((d) => ({
135
- type: d.type,
136
- message: d.message,
137
- collision: { ...d.collision },
138
- }));
139
- }
140
- /**
141
- * Check if a canonical name is already registered.
142
- *
143
- * @param canonicalName - The canonical name to check
144
- * @returns true if registered, false otherwise
145
- */
146
- has(canonicalName) {
147
- return this.components.has(canonicalName);
148
- }
149
- /**
150
- * Get the count of registered components.
151
- *
152
- * @returns Number of components
153
- */
154
- get size() {
155
- return this.components.size;
156
- }
157
- // ============================================================================
158
- // Alias Management
159
- // ============================================================================
160
- /**
161
- * Register an alias for a canonical name.
162
- *
163
- * Validates:
164
- * 1. The target canonical name must exist
165
- * 2. The alias cannot shadow an existing canonical name
166
- * 3. The alias cannot already exist pointing to a different target
167
- *
168
- * @param alias - The short alias (e.g., "py3d")
169
- * @param canonicalName - The target canonical name (e.g., "python-tools:3d-visualizer")
170
- * @returns Result indicating success or failure with reason
171
- */
172
- registerAlias(alias, canonicalName) {
173
- // Check that target canonical name exists
174
- if (!this.components.has(canonicalName)) {
175
- return {
176
- success: false,
177
- reason: 'canonical-not-found',
178
- message: `Cannot create alias "${alias}": target canonical name "${canonicalName}" does not exist`,
179
- };
180
- }
181
- // Check that alias doesn't shadow an existing canonical name
182
- if (this.components.has(alias)) {
183
- return {
184
- success: false,
185
- reason: 'shadows-canonical',
186
- message: `Cannot create alias "${alias}": it shadows an existing canonical name`,
187
- };
188
- }
189
- // Check for duplicate alias pointing to different target
190
- const existingTarget = this.aliasMap.get(alias);
191
- if (existingTarget !== undefined && existingTarget !== canonicalName) {
192
- return {
193
- success: false,
194
- reason: 'duplicate-alias',
195
- message: `Cannot create alias "${alias}": already exists pointing to "${existingTarget}"`,
196
- };
197
- }
198
- // Register the alias (idempotent if same target)
199
- this.aliasMap.set(alias, canonicalName);
200
- return { success: true };
201
- }
202
- /**
203
- * Remove an alias.
204
- *
205
- * @param alias - The alias to remove
206
- * @returns true if the alias existed and was removed, false otherwise
207
- */
208
- removeAlias(alias) {
209
- return this.aliasMap.delete(alias);
210
- }
211
- /**
212
- * Resolve an alias to its canonical name.
213
- *
214
- * @param alias - The alias to resolve
215
- * @returns The canonical name if alias exists, undefined otherwise
216
- */
217
- resolveAlias(alias) {
218
- return this.aliasMap.get(alias);
219
- }
220
- /**
221
- * Get all registered aliases.
222
- *
223
- * @returns A copy of the alias map (alias -> canonicalName)
224
- */
225
- getAliases() {
226
- return new Map(this.aliasMap);
227
- }
228
- /**
229
- * Check if an alias exists.
230
- *
231
- * @param alias - The alias to check
232
- * @returns true if the alias exists, false otherwise
233
- */
234
- hasAlias(alias) {
235
- return this.aliasMap.has(alias);
236
- }
237
- }
238
- // ============================================================================
239
- // Discovery Bridge Helper
240
- // ============================================================================
241
- /**
242
- * Convert a discovered plugin's inventory into registerable component entries.
243
- *
244
- * This helper bridges S01's discovery output (DiscoveredPlugin) with the
245
- * namespaced registry. It maps skill and agent directory names to component
246
- * entries with the plugin's namespace.
247
- *
248
- * @param plugin - A discovered plugin from S01's discovery process
249
- * @returns Array of registerable component entries (without canonicalName)
250
- */
251
- export function componentsFromDiscovery(plugin) {
252
- const components = [];
253
- // Use the plugin's canonical name as the namespace
254
- const namespace = plugin.canonicalName;
255
- // Extract common metadata from the plugin
256
- const commonMetadata = {
257
- pluginVersion: plugin.version,
258
- pluginAuthor: plugin.author?.name,
259
- pluginHomepage: plugin.homepage,
260
- pluginCategory: plugin.category,
261
- };
262
- // Process skills
263
- for (const skillName of plugin.inventory.skills) {
264
- // Resolve the skill file path
265
- // Skills are in <plugin>/skills/<name>/SKILL.md or <plugin>/skills/<name>.md
266
- let filePath;
267
- if (plugin.resolvedPath) {
268
- const skillDirPath = `${plugin.resolvedPath}/skills/${skillName}`;
269
- // Prefer direct markdown file entries, otherwise directory with SKILL.md
270
- filePath = skillName.endsWith('.md')
271
- ? `${plugin.resolvedPath}/skills/${skillName}`
272
- : `${skillDirPath}/SKILL.md`;
273
- }
274
- else {
275
- // External plugin - use placeholder path
276
- filePath = `<external>/${namespace}/skills/${skillName}/SKILL.md`;
277
- }
278
- components.push({
279
- name: skillName.replace(/\.md$/, ''), // Strip .md if present
280
- namespace,
281
- type: 'skill',
282
- filePath,
283
- source: `plugin:${namespace}`,
284
- description: undefined, // Would require reading the file
285
- metadata: {
286
- ...commonMetadata,
287
- componentDir: skillName,
288
- },
289
- });
290
- }
291
- // Process agents
292
- for (const agentName of plugin.inventory.agents) {
293
- // Resolve the agent file path
294
- let filePath;
295
- if (plugin.resolvedPath) {
296
- const agentDirPath = `${plugin.resolvedPath}/agents/${agentName}`;
297
- filePath = agentName.endsWith('.md')
298
- ? `${plugin.resolvedPath}/agents/${agentName}`
299
- : `${agentDirPath}/AGENT.md`;
300
- }
301
- else {
302
- filePath = `<external>/${namespace}/agents/${agentName}/AGENT.md`;
303
- }
304
- components.push({
305
- name: agentName.replace(/\.md$/, ''), // Strip .md if present
306
- namespace,
307
- type: 'agent',
308
- filePath,
309
- source: `plugin:${namespace}`,
310
- description: undefined, // Would require reading the file
311
- metadata: {
312
- ...commonMetadata,
313
- componentDir: agentName,
314
- },
315
- });
316
- }
317
- return components;
318
- }
319
- // ============================================================================
320
- // Exports
321
- // ============================================================================
322
- export default NamespacedRegistry;