gsd-pi 2.38.0-dev.eeb3520 → 2.39.0-dev.38f11d1

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 (335) hide show
  1. package/README.md +15 -11
  2. package/dist/app-paths.js +1 -1
  3. package/dist/cli.js +9 -0
  4. package/dist/extension-discovery.d.ts +5 -3
  5. package/dist/extension-discovery.js +14 -9
  6. package/dist/extension-registry.js +2 -2
  7. package/dist/remote-questions-config.js +2 -2
  8. package/dist/resource-loader.js +34 -1
  9. package/dist/resources/extensions/async-jobs/index.js +10 -0
  10. package/dist/resources/extensions/browser-tools/index.js +3 -1
  11. package/dist/resources/extensions/browser-tools/package.json +3 -1
  12. package/dist/resources/extensions/browser-tools/tools/verify.js +97 -0
  13. package/dist/resources/extensions/cmux/index.js +55 -1
  14. package/dist/resources/extensions/context7/package.json +1 -1
  15. package/dist/resources/extensions/env-utils.js +29 -0
  16. package/dist/resources/extensions/get-secrets-from-user.js +5 -24
  17. package/dist/resources/extensions/github-sync/cli.js +284 -0
  18. package/dist/resources/extensions/github-sync/index.js +73 -0
  19. package/dist/resources/extensions/github-sync/mapping.js +67 -0
  20. package/dist/resources/extensions/github-sync/sync.js +424 -0
  21. package/dist/resources/extensions/github-sync/templates.js +118 -0
  22. package/dist/resources/extensions/github-sync/types.js +7 -0
  23. package/dist/resources/extensions/google-search/package.json +3 -1
  24. package/dist/resources/extensions/gsd/auto/session.js +6 -23
  25. package/dist/resources/extensions/gsd/auto-dashboard.js +7 -0
  26. package/dist/resources/extensions/gsd/auto-dispatch.js +8 -9
  27. package/dist/resources/extensions/gsd/auto-loop.js +923 -787
  28. package/dist/resources/extensions/gsd/auto-post-unit.js +107 -70
  29. package/dist/resources/extensions/gsd/auto-prompts.js +205 -51
  30. package/dist/resources/extensions/gsd/auto-start.js +19 -3
  31. package/dist/resources/extensions/gsd/auto-worktree-sync.js +13 -5
  32. package/dist/resources/extensions/gsd/auto-worktree.js +3 -3
  33. package/dist/resources/extensions/gsd/auto.js +147 -98
  34. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +126 -0
  35. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +233 -0
  36. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +59 -0
  37. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +38 -0
  38. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +156 -0
  39. package/dist/resources/extensions/gsd/bootstrap/register-shortcuts.js +46 -0
  40. package/dist/resources/extensions/gsd/bootstrap/system-context.js +300 -0
  41. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +38 -0
  42. package/dist/resources/extensions/gsd/captures.js +9 -1
  43. package/dist/resources/extensions/gsd/commands/catalog.js +278 -0
  44. package/dist/resources/extensions/gsd/commands/context.js +84 -0
  45. package/dist/resources/extensions/gsd/commands/dispatcher.js +21 -0
  46. package/dist/resources/extensions/gsd/commands/handlers/auto.js +72 -0
  47. package/dist/resources/extensions/gsd/commands/handlers/core.js +246 -0
  48. package/dist/resources/extensions/gsd/commands/handlers/ops.js +166 -0
  49. package/dist/resources/extensions/gsd/commands/handlers/parallel.js +94 -0
  50. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +102 -0
  51. package/dist/resources/extensions/gsd/commands/index.js +11 -0
  52. package/dist/resources/extensions/gsd/commands-extensions.js +3 -2
  53. package/dist/resources/extensions/gsd/commands-handlers.js +17 -4
  54. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +1 -1
  55. package/dist/resources/extensions/gsd/commands.js +8 -1169
  56. package/dist/resources/extensions/gsd/context-budget.js +2 -10
  57. package/dist/resources/extensions/gsd/dashboard-overlay.js +9 -0
  58. package/dist/resources/extensions/gsd/detection.js +1 -2
  59. package/dist/resources/extensions/gsd/docs/preferences-reference.md +0 -2
  60. package/dist/resources/extensions/gsd/doctor-checks.js +82 -0
  61. package/dist/resources/extensions/gsd/doctor-environment.js +78 -0
  62. package/dist/resources/extensions/gsd/doctor-format.js +15 -0
  63. package/dist/resources/extensions/gsd/doctor-proactive.js +80 -10
  64. package/dist/resources/extensions/gsd/doctor-providers.js +30 -11
  65. package/dist/resources/extensions/gsd/doctor.js +234 -12
  66. package/dist/resources/extensions/gsd/exit-command.js +2 -1
  67. package/dist/resources/extensions/gsd/export-html.js +46 -0
  68. package/dist/resources/extensions/gsd/export.js +1 -1
  69. package/dist/resources/extensions/gsd/files.js +48 -9
  70. package/dist/resources/extensions/gsd/forensics.js +1 -1
  71. package/dist/resources/extensions/gsd/git-service.js +30 -12
  72. package/dist/resources/extensions/gsd/gitignore.js +16 -3
  73. package/dist/resources/extensions/gsd/guided-flow.js +149 -38
  74. package/dist/resources/extensions/gsd/health-widget-core.js +32 -70
  75. package/dist/resources/extensions/gsd/health-widget.js +4 -87
  76. package/dist/resources/extensions/gsd/index.js +4 -1111
  77. package/dist/resources/extensions/gsd/migrate/parsers.js +1 -1
  78. package/dist/resources/extensions/gsd/migrate-external.js +18 -1
  79. package/dist/resources/extensions/gsd/native-git-bridge.js +37 -0
  80. package/dist/resources/extensions/gsd/package.json +1 -1
  81. package/dist/resources/extensions/gsd/paths.js +3 -0
  82. package/dist/resources/extensions/gsd/preferences-models.js +0 -12
  83. package/dist/resources/extensions/gsd/preferences-types.js +1 -1
  84. package/dist/resources/extensions/gsd/preferences-validation.js +59 -11
  85. package/dist/resources/extensions/gsd/preferences.js +22 -11
  86. package/dist/resources/extensions/gsd/progress-score.js +20 -1
  87. package/dist/resources/extensions/gsd/prompt-loader.js +6 -2
  88. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
  89. package/dist/resources/extensions/gsd/prompts/complete-slice.md +1 -1
  90. package/dist/resources/extensions/gsd/prompts/discuss.md +11 -14
  91. package/dist/resources/extensions/gsd/prompts/execute-task.md +5 -3
  92. package/dist/resources/extensions/gsd/prompts/forensics.md +121 -46
  93. package/dist/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
  94. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +11 -12
  95. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -10
  96. package/dist/resources/extensions/gsd/prompts/guided-execute-task.md +1 -1
  97. package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +1 -1
  98. package/dist/resources/extensions/gsd/prompts/guided-plan-slice.md +1 -1
  99. package/dist/resources/extensions/gsd/prompts/guided-research-slice.md +1 -1
  100. package/dist/resources/extensions/gsd/prompts/guided-resume-task.md +1 -1
  101. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +1 -1
  102. package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  103. package/dist/resources/extensions/gsd/prompts/queue.md +4 -8
  104. package/dist/resources/extensions/gsd/prompts/reactive-execute.md +11 -8
  105. package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
  106. package/dist/resources/extensions/gsd/prompts/research-milestone.md +1 -1
  107. package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -1
  108. package/dist/resources/extensions/gsd/prompts/run-uat.md +28 -11
  109. package/dist/resources/extensions/gsd/prompts/workflow-start.md +2 -2
  110. package/dist/resources/extensions/gsd/repo-identity.js +21 -4
  111. package/dist/resources/extensions/gsd/resource-version.js +2 -1
  112. package/dist/resources/extensions/gsd/roadmap-mutations.js +24 -0
  113. package/dist/resources/extensions/gsd/state.js +42 -23
  114. package/dist/resources/extensions/gsd/templates/runtime.md +21 -0
  115. package/dist/resources/extensions/gsd/templates/task-plan.md +3 -0
  116. package/dist/resources/extensions/gsd/visualizer-data.js +27 -2
  117. package/dist/resources/extensions/gsd/visualizer-views.js +52 -0
  118. package/dist/resources/extensions/gsd/worktree.js +35 -16
  119. package/dist/resources/extensions/mcp-client/index.js +14 -1
  120. package/dist/resources/extensions/remote-questions/status.js +4 -1
  121. package/dist/resources/extensions/remote-questions/store.js +4 -1
  122. package/dist/resources/extensions/search-the-web/provider.js +2 -1
  123. package/dist/resources/extensions/shared/frontmatter.js +1 -1
  124. package/dist/resources/extensions/subagent/index.js +12 -3
  125. package/dist/resources/extensions/subagent/isolation.js +2 -1
  126. package/dist/resources/extensions/ttsr/rule-loader.js +2 -1
  127. package/dist/resources/extensions/universal-config/package.json +1 -1
  128. package/dist/welcome-screen.d.ts +12 -0
  129. package/dist/welcome-screen.js +53 -0
  130. package/package.json +1 -1
  131. package/packages/pi-ai/dist/utils/oauth/anthropic.js +2 -2
  132. package/packages/pi-ai/dist/utils/oauth/anthropic.js.map +1 -1
  133. package/packages/pi-ai/src/utils/oauth/anthropic.ts +2 -2
  134. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  135. package/packages/pi-coding-agent/dist/core/extensions/loader.js +205 -7
  136. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  137. package/packages/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  138. package/packages/pi-coding-agent/dist/core/package-manager.js +8 -4
  139. package/packages/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  140. package/packages/pi-coding-agent/dist/core/skills.d.ts +1 -0
  141. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  142. package/packages/pi-coding-agent/dist/core/skills.js +6 -1
  143. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  144. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  145. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  146. package/packages/pi-coding-agent/dist/index.js +1 -1
  147. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  148. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +17 -0
  149. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -0
  150. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +244 -0
  151. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -0
  152. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.d.ts +3 -0
  153. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -0
  154. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js +58 -0
  155. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -0
  156. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts +12 -0
  157. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -0
  158. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js +54 -0
  159. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js.map +1 -0
  160. package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-controller.d.ts +6 -0
  161. package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-controller.d.ts.map +1 -0
  162. package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-controller.js +63 -0
  163. package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-controller.js.map +1 -0
  164. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +38 -0
  165. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -0
  166. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js +2 -0
  167. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -0
  168. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  169. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +13 -453
  170. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  171. package/packages/pi-coding-agent/package.json +1 -1
  172. package/packages/pi-coding-agent/src/core/extensions/loader.ts +223 -7
  173. package/packages/pi-coding-agent/src/core/package-manager.ts +8 -4
  174. package/packages/pi-coding-agent/src/core/skills.ts +9 -1
  175. package/packages/pi-coding-agent/src/index.ts +1 -0
  176. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +302 -0
  177. package/packages/pi-coding-agent/src/modes/interactive/controllers/extension-ui-controller.ts +59 -0
  178. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.ts +68 -0
  179. package/packages/pi-coding-agent/src/modes/interactive/controllers/model-controller.ts +71 -0
  180. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +37 -0
  181. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +16 -506
  182. package/pkg/package.json +1 -1
  183. package/src/resources/extensions/async-jobs/index.ts +11 -0
  184. package/src/resources/extensions/browser-tools/index.ts +3 -0
  185. package/src/resources/extensions/browser-tools/tools/verify.ts +117 -0
  186. package/src/resources/extensions/cmux/index.ts +57 -1
  187. package/src/resources/extensions/env-utils.ts +31 -0
  188. package/src/resources/extensions/get-secrets-from-user.ts +5 -24
  189. package/src/resources/extensions/github-sync/cli.ts +364 -0
  190. package/src/resources/extensions/github-sync/index.ts +93 -0
  191. package/src/resources/extensions/github-sync/mapping.ts +81 -0
  192. package/src/resources/extensions/github-sync/sync.ts +556 -0
  193. package/src/resources/extensions/github-sync/templates.ts +183 -0
  194. package/src/resources/extensions/github-sync/tests/cli.test.ts +20 -0
  195. package/src/resources/extensions/github-sync/tests/commit-linking.test.ts +39 -0
  196. package/src/resources/extensions/github-sync/tests/mapping.test.ts +104 -0
  197. package/src/resources/extensions/github-sync/tests/templates.test.ts +110 -0
  198. package/src/resources/extensions/github-sync/types.ts +47 -0
  199. package/src/resources/extensions/gsd/auto/session.ts +7 -25
  200. package/src/resources/extensions/gsd/auto-dashboard.ts +10 -0
  201. package/src/resources/extensions/gsd/auto-dispatch.ts +7 -9
  202. package/src/resources/extensions/gsd/auto-loop.ts +1285 -1138
  203. package/src/resources/extensions/gsd/auto-post-unit.ts +90 -46
  204. package/src/resources/extensions/gsd/auto-prompts.ts +250 -53
  205. package/src/resources/extensions/gsd/auto-start.ts +24 -3
  206. package/src/resources/extensions/gsd/auto-worktree-sync.ts +15 -4
  207. package/src/resources/extensions/gsd/auto-worktree.ts +3 -3
  208. package/src/resources/extensions/gsd/auto.ts +143 -102
  209. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +142 -0
  210. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +238 -0
  211. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +90 -0
  212. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +46 -0
  213. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +167 -0
  214. package/src/resources/extensions/gsd/bootstrap/register-shortcuts.ts +55 -0
  215. package/src/resources/extensions/gsd/bootstrap/system-context.ts +340 -0
  216. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +51 -0
  217. package/src/resources/extensions/gsd/captures.ts +10 -1
  218. package/src/resources/extensions/gsd/commands/catalog.ts +301 -0
  219. package/src/resources/extensions/gsd/commands/context.ts +101 -0
  220. package/src/resources/extensions/gsd/commands/dispatcher.ts +32 -0
  221. package/src/resources/extensions/gsd/commands/handlers/auto.ts +74 -0
  222. package/src/resources/extensions/gsd/commands/handlers/core.ts +274 -0
  223. package/src/resources/extensions/gsd/commands/handlers/ops.ts +169 -0
  224. package/src/resources/extensions/gsd/commands/handlers/parallel.ts +118 -0
  225. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +109 -0
  226. package/src/resources/extensions/gsd/commands/index.ts +14 -0
  227. package/src/resources/extensions/gsd/commands-extensions.ts +4 -2
  228. package/src/resources/extensions/gsd/commands-handlers.ts +18 -3
  229. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +1 -1
  230. package/src/resources/extensions/gsd/commands.ts +10 -1307
  231. package/src/resources/extensions/gsd/context-budget.ts +2 -12
  232. package/src/resources/extensions/gsd/dashboard-overlay.ts +10 -0
  233. package/src/resources/extensions/gsd/detection.ts +2 -2
  234. package/src/resources/extensions/gsd/docs/preferences-reference.md +0 -2
  235. package/src/resources/extensions/gsd/doctor-checks.ts +75 -0
  236. package/src/resources/extensions/gsd/doctor-environment.ts +82 -1
  237. package/src/resources/extensions/gsd/doctor-format.ts +20 -0
  238. package/src/resources/extensions/gsd/doctor-proactive.ts +106 -10
  239. package/src/resources/extensions/gsd/doctor-providers.ts +30 -9
  240. package/src/resources/extensions/gsd/doctor-types.ts +16 -1
  241. package/src/resources/extensions/gsd/doctor.ts +243 -14
  242. package/src/resources/extensions/gsd/exit-command.ts +2 -2
  243. package/src/resources/extensions/gsd/export-html.ts +51 -0
  244. package/src/resources/extensions/gsd/export.ts +1 -1
  245. package/src/resources/extensions/gsd/files.ts +51 -11
  246. package/src/resources/extensions/gsd/forensics.ts +1 -1
  247. package/src/resources/extensions/gsd/git-service.ts +44 -10
  248. package/src/resources/extensions/gsd/gitignore.ts +17 -3
  249. package/src/resources/extensions/gsd/guided-flow.ts +177 -44
  250. package/src/resources/extensions/gsd/health-widget-core.ts +28 -80
  251. package/src/resources/extensions/gsd/health-widget.ts +4 -89
  252. package/src/resources/extensions/gsd/index.ts +12 -1307
  253. package/src/resources/extensions/gsd/migrate/parsers.ts +1 -1
  254. package/src/resources/extensions/gsd/migrate-external.ts +18 -1
  255. package/src/resources/extensions/gsd/native-git-bridge.ts +37 -0
  256. package/src/resources/extensions/gsd/paths.ts +4 -0
  257. package/src/resources/extensions/gsd/preferences-models.ts +0 -12
  258. package/src/resources/extensions/gsd/preferences-types.ts +4 -4
  259. package/src/resources/extensions/gsd/preferences-validation.ts +51 -11
  260. package/src/resources/extensions/gsd/preferences.ts +25 -11
  261. package/src/resources/extensions/gsd/progress-score.ts +23 -0
  262. package/src/resources/extensions/gsd/prompt-loader.ts +7 -2
  263. package/src/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
  264. package/src/resources/extensions/gsd/prompts/complete-slice.md +1 -1
  265. package/src/resources/extensions/gsd/prompts/discuss.md +11 -14
  266. package/src/resources/extensions/gsd/prompts/execute-task.md +5 -3
  267. package/src/resources/extensions/gsd/prompts/forensics.md +121 -46
  268. package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
  269. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +11 -12
  270. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -10
  271. package/src/resources/extensions/gsd/prompts/guided-execute-task.md +1 -1
  272. package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +1 -1
  273. package/src/resources/extensions/gsd/prompts/guided-plan-slice.md +1 -1
  274. package/src/resources/extensions/gsd/prompts/guided-research-slice.md +1 -1
  275. package/src/resources/extensions/gsd/prompts/guided-resume-task.md +1 -1
  276. package/src/resources/extensions/gsd/prompts/plan-milestone.md +1 -1
  277. package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  278. package/src/resources/extensions/gsd/prompts/queue.md +4 -8
  279. package/src/resources/extensions/gsd/prompts/reactive-execute.md +11 -8
  280. package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
  281. package/src/resources/extensions/gsd/prompts/research-milestone.md +1 -1
  282. package/src/resources/extensions/gsd/prompts/research-slice.md +1 -1
  283. package/src/resources/extensions/gsd/prompts/run-uat.md +28 -11
  284. package/src/resources/extensions/gsd/prompts/workflow-start.md +2 -2
  285. package/src/resources/extensions/gsd/repo-identity.ts +23 -4
  286. package/src/resources/extensions/gsd/resource-version.ts +3 -1
  287. package/src/resources/extensions/gsd/roadmap-mutations.ts +29 -0
  288. package/src/resources/extensions/gsd/state.ts +39 -21
  289. package/src/resources/extensions/gsd/templates/runtime.md +21 -0
  290. package/src/resources/extensions/gsd/templates/task-plan.md +3 -0
  291. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +21 -18
  292. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +135 -77
  293. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +4 -3
  294. package/src/resources/extensions/gsd/tests/cmux.test.ts +93 -0
  295. package/src/resources/extensions/gsd/tests/derive-state.test.ts +43 -0
  296. package/src/resources/extensions/gsd/tests/doctor-enhancements.test.ts +266 -0
  297. package/src/resources/extensions/gsd/tests/doctor-proactive.test.ts +3 -3
  298. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +86 -3
  299. package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +50 -0
  300. package/src/resources/extensions/gsd/tests/health-widget.test.ts +16 -54
  301. package/src/resources/extensions/gsd/tests/parsers.test.ts +131 -14
  302. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +209 -0
  303. package/src/resources/extensions/gsd/tests/preferences.test.ts +2 -7
  304. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +59 -0
  305. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +16 -16
  306. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +21 -1
  307. package/src/resources/extensions/gsd/tests/run-uat.test.ts +16 -4
  308. package/src/resources/extensions/gsd/tests/skill-activation.test.ts +140 -0
  309. package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +10 -10
  310. package/src/resources/extensions/gsd/tests/worktree.test.ts +47 -0
  311. package/src/resources/extensions/gsd/types.ts +18 -1
  312. package/src/resources/extensions/gsd/verification-evidence.ts +16 -0
  313. package/src/resources/extensions/gsd/visualizer-data.ts +52 -2
  314. package/src/resources/extensions/gsd/visualizer-views.ts +58 -0
  315. package/src/resources/extensions/gsd/worktree.ts +35 -15
  316. package/src/resources/extensions/mcp-client/index.ts +17 -1
  317. package/src/resources/extensions/remote-questions/status.ts +5 -1
  318. package/src/resources/extensions/remote-questions/store.ts +5 -1
  319. package/src/resources/extensions/search-the-web/provider.ts +2 -1
  320. package/src/resources/extensions/shared/frontmatter.ts +1 -1
  321. package/src/resources/extensions/subagent/index.ts +12 -3
  322. package/src/resources/extensions/subagent/isolation.ts +3 -1
  323. package/src/resources/extensions/ttsr/rule-loader.ts +3 -1
  324. package/dist/resources/extensions/gsd/prompt-compressor.js +0 -393
  325. package/dist/resources/extensions/gsd/semantic-chunker.js +0 -254
  326. package/dist/resources/extensions/gsd/summary-distiller.js +0 -212
  327. package/src/resources/extensions/gsd/prompt-compressor.ts +0 -508
  328. package/src/resources/extensions/gsd/semantic-chunker.ts +0 -336
  329. package/src/resources/extensions/gsd/summary-distiller.ts +0 -258
  330. package/src/resources/extensions/gsd/tests/context-compression.test.ts +0 -193
  331. package/src/resources/extensions/gsd/tests/prompt-compressor.test.ts +0 -529
  332. package/src/resources/extensions/gsd/tests/semantic-chunker.test.ts +0 -426
  333. package/src/resources/extensions/gsd/tests/summary-distiller.test.ts +0 -323
  334. package/src/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +0 -1272
  335. package/src/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +0 -164
@@ -0,0 +1,59 @@
1
+ import type { ExtensionUIContext } from "../../../core/extensions/index.js";
2
+
3
+ import { Theme, getAvailableThemesWithPaths, getThemeByName, setTheme, setThemeInstance, theme } from "../theme/theme.js";
4
+ import { appKey } from "../components/keybinding-hints.js";
5
+
6
+ export function createExtensionUIContext(host: any): ExtensionUIContext {
7
+ return {
8
+ select: (title, options, opts) => host.showExtensionSelector(title, options, opts),
9
+ confirm: (title, message, opts) => host.showExtensionConfirm(title, message, opts),
10
+ input: (title, placeholder, opts) => host.showExtensionInput(title, placeholder, opts),
11
+ notify: (message, type) => host.showExtensionNotify(message, type),
12
+ onTerminalInput: (handler) => host.addExtensionTerminalInputListener(handler),
13
+ setStatus: (key, text) => host.setExtensionStatus(key, text),
14
+ setWorkingMessage: (message) => {
15
+ if (host.loadingAnimation) {
16
+ if (message) {
17
+ host.loadingAnimation.setMessage(message);
18
+ } else {
19
+ host.loadingAnimation.setMessage(`${host.defaultWorkingMessage} (${appKey(host.keybindings, "interrupt")} to interrupt)`);
20
+ }
21
+ } else {
22
+ host.pendingWorkingMessage = message;
23
+ }
24
+ },
25
+ setWidget: (key, content, options) => host.setExtensionWidget(key, content, options),
26
+ setFooter: (factory) => host.setExtensionFooter(factory),
27
+ setHeader: (factory) => host.setExtensionHeader(factory),
28
+ setTitle: (title) => host.ui.terminal.setTitle(title),
29
+ custom: (factory, options) => host.showExtensionCustom(factory, options),
30
+ pasteToEditor: (text) => host.editor.handleInput(`\x1b[200~${text}\x1b[201~`),
31
+ setEditorText: (text) => host.editor.setText(text),
32
+ getEditorText: () => host.editor.getText(),
33
+ editor: (title, prefill) => host.showExtensionEditor(title, prefill),
34
+ setEditorComponent: (factory) => host.setCustomEditorComponent(factory),
35
+ get theme() {
36
+ return theme;
37
+ },
38
+ getAllThemes: () => getAvailableThemesWithPaths(),
39
+ getTheme: (name) => getThemeByName(name),
40
+ setTheme: (themeOrName) => {
41
+ if (themeOrName instanceof Theme) {
42
+ setThemeInstance(themeOrName);
43
+ host.ui.requestRender();
44
+ return { success: true };
45
+ }
46
+ const result = setTheme(themeOrName, true);
47
+ if (result.success) {
48
+ if (host.settingsManager.getTheme() !== themeOrName) {
49
+ host.settingsManager.setTheme(themeOrName);
50
+ }
51
+ host.ui.requestRender();
52
+ }
53
+ return result;
54
+ },
55
+ getToolsExpanded: () => host.toolOutputExpanded,
56
+ setToolsExpanded: (expanded) => host.setToolsExpanded(expanded),
57
+ };
58
+ }
59
+
@@ -0,0 +1,68 @@
1
+ import { dispatchSlashCommand } from "../slash-command-handlers.js";
2
+ import type { InteractiveModeStateHost } from "../interactive-mode-state.js";
3
+
4
+ export function setupEditorSubmitHandler(host: InteractiveModeStateHost & {
5
+ getSlashCommandContext: () => any;
6
+ handleBashCommand: (command: string, excludeFromContext?: boolean) => Promise<void>;
7
+ showWarning: (message: string) => void;
8
+ updateEditorBorderColor: () => void;
9
+ isExtensionCommand: (text: string) => boolean;
10
+ queueCompactionMessage: (text: string, mode: "steer" | "followUp") => void;
11
+ updatePendingMessagesDisplay: () => void;
12
+ flushPendingBashComponents: () => void;
13
+ }): void {
14
+ host.defaultEditor.onSubmit = async (text: string) => {
15
+ text = text.trim();
16
+ if (!text) return;
17
+
18
+ if (text.startsWith("/")) {
19
+ const handled = await dispatchSlashCommand(text, host.getSlashCommandContext());
20
+ if (handled) {
21
+ host.editor.setText("");
22
+ return;
23
+ }
24
+ }
25
+
26
+ if (text.startsWith("!")) {
27
+ const isExcluded = text.startsWith("!!");
28
+ const command = isExcluded ? text.slice(2).trim() : text.slice(1).trim();
29
+ if (command) {
30
+ if (host.session.isBashRunning) {
31
+ host.showWarning("A bash command is already running. Press Esc to cancel it first.");
32
+ host.editor.setText(text);
33
+ return;
34
+ }
35
+ host.editor.addToHistory?.(text);
36
+ await host.handleBashCommand(command, isExcluded);
37
+ host.isBashMode = false;
38
+ host.updateEditorBorderColor();
39
+ return;
40
+ }
41
+ }
42
+
43
+ if (host.session.isCompacting) {
44
+ if (host.isExtensionCommand(text)) {
45
+ host.editor.addToHistory?.(text);
46
+ host.editor.setText("");
47
+ await host.session.prompt(text);
48
+ } else {
49
+ host.queueCompactionMessage(text, "steer");
50
+ }
51
+ return;
52
+ }
53
+
54
+ if (host.session.isStreaming) {
55
+ host.editor.addToHistory?.(text);
56
+ host.editor.setText("");
57
+ await host.session.prompt(text, { streamingBehavior: "steer" });
58
+ host.updatePendingMessagesDisplay();
59
+ host.ui.requestRender();
60
+ return;
61
+ }
62
+
63
+ host.flushPendingBashComponents();
64
+ host.onInputCallback?.(text);
65
+ host.editor.addToHistory?.(text);
66
+ };
67
+ }
68
+
@@ -0,0 +1,71 @@
1
+ import type { Model } from "@gsd/pi-ai";
2
+
3
+ export async function handleModelCommand(host: any, searchTerm?: string): Promise<void> {
4
+ if (!searchTerm) {
5
+ host.showModelSelector();
6
+ return;
7
+ }
8
+
9
+ const model = await findExactModelMatch(host, searchTerm);
10
+ if (model) {
11
+ try {
12
+ await host.session.setModel(model);
13
+ host.footer.invalidate();
14
+ host.updateEditorBorderColor();
15
+ host.showStatus(`Model: ${model.id}`);
16
+ host.checkDaxnutsEasterEgg(model);
17
+ } catch (error) {
18
+ host.showError(error instanceof Error ? error.message : String(error));
19
+ }
20
+ return;
21
+ }
22
+
23
+ host.showModelSelector(searchTerm);
24
+ }
25
+
26
+ export async function findExactModelMatch(host: any, searchTerm: string): Promise<Model<any> | undefined> {
27
+ const term = searchTerm.trim();
28
+ if (!term) return undefined;
29
+
30
+ let targetProvider: string | undefined;
31
+ let targetModelId = "";
32
+
33
+ if (term.includes("/")) {
34
+ const parts = term.split("/", 2);
35
+ targetProvider = parts[0]?.trim().toLowerCase();
36
+ targetModelId = parts[1]?.trim().toLowerCase() ?? "";
37
+ } else {
38
+ targetModelId = term.toLowerCase();
39
+ }
40
+
41
+ if (!targetModelId) return undefined;
42
+
43
+ const models = await getModelCandidates(host);
44
+ const exactMatches = models.filter((item) => {
45
+ const idMatch = item.id.toLowerCase() === targetModelId;
46
+ const providerMatch = !targetProvider || item.provider.toLowerCase() === targetProvider;
47
+ return idMatch && providerMatch;
48
+ });
49
+
50
+ return exactMatches.length === 1 ? exactMatches[0] : undefined;
51
+ }
52
+
53
+ export async function getModelCandidates(host: any): Promise<Model<any>[]> {
54
+ if (host.session.scopedModels.length > 0) {
55
+ return host.session.scopedModels.map((scoped: any) => scoped.model);
56
+ }
57
+
58
+ host.session.modelRegistry.refresh();
59
+ try {
60
+ return await host.session.modelRegistry.getAvailable();
61
+ } catch {
62
+ return [];
63
+ }
64
+ }
65
+
66
+ export async function updateAvailableProviderCount(host: any): Promise<void> {
67
+ const models = await getModelCandidates(host);
68
+ const uniqueProviders = new Set(models.map((m) => m.provider));
69
+ host.footerDataProvider.setAvailableProviderCount(uniqueProviders.size);
70
+ }
71
+
@@ -0,0 +1,37 @@
1
+ import type { AgentSessionEvent } from "../../core/agent-session.js";
2
+
3
+ export interface InteractiveModeStateHost {
4
+ defaultEditor: any;
5
+ editor: any;
6
+ session: any;
7
+ ui: any;
8
+ footer: any;
9
+ keybindings: any;
10
+ statusContainer: any;
11
+ chatContainer: any;
12
+ settingsManager: any;
13
+ pendingTools: Map<string, any>;
14
+ toolOutputExpanded: boolean;
15
+ hideThinkingBlock: boolean;
16
+ isBashMode: boolean;
17
+ onInputCallback?: (text: string) => void;
18
+ isInitialized: boolean;
19
+ loadingAnimation?: any;
20
+ pendingWorkingMessage?: string;
21
+ defaultWorkingMessage: string;
22
+ streamingComponent?: any;
23
+ streamingMessage?: any;
24
+ retryEscapeHandler?: () => void;
25
+ retryLoader?: any;
26
+ autoCompactionLoader?: any;
27
+ autoCompactionEscapeHandler?: () => void;
28
+ compactionQueuedMessages: Array<{ text: string; mode: "steer" | "followUp" }>;
29
+ extensionSelector?: any;
30
+ extensionInput?: any;
31
+ extensionEditor?: any;
32
+ editorContainer: any;
33
+ keybindingsManager?: any;
34
+ }
35
+
36
+ export type InteractiveModeEvent = AgentSessionEvent;
37
+