gsd-pi 2.77.0-dev.538325aea → 2.77.0-dev.c9c8932c6

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 (688) hide show
  1. package/dist/cli.js +35 -13
  2. package/dist/extension-discovery.d.ts +6 -0
  3. package/dist/extension-discovery.js +37 -0
  4. package/dist/extension-registry.d.ts +3 -0
  5. package/dist/extension-registry.js +1 -1
  6. package/dist/extension-sort.d.ts +18 -0
  7. package/dist/extension-sort.js +114 -0
  8. package/dist/extension-validator.d.ts +47 -0
  9. package/dist/extension-validator.js +127 -0
  10. package/dist/headless-ui.d.ts +1 -1
  11. package/dist/headless.js +4 -2
  12. package/dist/loader.js +36 -7
  13. package/dist/onboarding.js +5 -5
  14. package/dist/provider-migrations.d.ts +2 -2
  15. package/dist/provider-migrations.js +1 -2
  16. package/dist/remote-questions-config.js +1 -1
  17. package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -1
  18. package/dist/resources/extensions/aws-auth/index.js +1 -2
  19. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +9 -6
  20. package/dist/resources/extensions/bg-shell/process-manager.js +1 -2
  21. package/dist/resources/extensions/browser-tools/index.js +1 -0
  22. package/dist/resources/extensions/claude-code-cli/index.js +1 -1
  23. package/dist/resources/extensions/claude-code-cli/partial-builder.js +17 -106
  24. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +57 -47
  25. package/dist/resources/extensions/cmux/index.js +20 -0
  26. package/dist/resources/extensions/google-search/extension-manifest.json +5 -4
  27. package/dist/resources/extensions/google-search/index.js +2 -375
  28. package/dist/resources/extensions/gsd/auto.js +27 -14
  29. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +11 -0
  30. package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -6
  31. package/dist/resources/extensions/gsd/commands-cmux.js +9 -6
  32. package/dist/resources/extensions/gsd/commands-extensions.js +634 -43
  33. package/dist/resources/extensions/gsd/guided-flow.js +1 -1
  34. package/dist/resources/extensions/gsd/notifications.js +30 -16
  35. package/dist/resources/extensions/mcp-client/index.js +1 -1
  36. package/dist/resources/extensions/ollama/index.js +2 -1
  37. package/dist/resources/extensions/ollama/ollama-chat-provider.js +15 -5
  38. package/dist/resources/extensions/remote-questions/config.js +1 -12
  39. package/dist/resources/extensions/shared/cmux-events.js +12 -0
  40. package/dist/resources/extensions/shared/rtk-session-stats.js +1 -2
  41. package/dist/resources/extensions/universal-config/index.js +1 -1
  42. package/dist/security-overrides.d.ts +1 -4
  43. package/dist/security-overrides.js +3 -16
  44. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  45. package/dist/web/standalone/.next/BUILD_ID +1 -1
  46. package/dist/web/standalone/.next/app-path-routes-manifest.json +9 -9
  47. package/dist/web/standalone/.next/build-manifest.json +2 -2
  48. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  49. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  50. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  51. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  52. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  53. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  54. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  55. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  56. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  57. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  58. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  59. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  60. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  61. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  62. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  63. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  64. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  65. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  66. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +1 -1
  67. package/dist/web/standalone/.next/server/app/index.html +1 -1
  68. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  69. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  70. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  71. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  72. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  73. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  74. package/dist/web/standalone/.next/server/app-paths-manifest.json +9 -9
  75. package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
  76. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  77. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  78. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  79. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  80. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  81. package/dist/web-mode.js +1 -1
  82. package/dist/welcome-screen.js +20 -19
  83. package/dist/wizard.js +5 -2
  84. package/package.json +14 -30
  85. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  86. package/packages/mcp-server/dist/server.js +11 -15
  87. package/packages/mcp-server/dist/server.js.map +1 -1
  88. package/packages/mcp-server/package.json +5 -0
  89. package/packages/mcp-server/src/readers/readers.test.ts +5 -1
  90. package/packages/mcp-server/src/server.ts +16 -17
  91. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  92. package/packages/native/package.json +5 -0
  93. package/packages/native/src/__tests__/clipboard.test.mjs +69 -23
  94. package/packages/native/tsconfig.json +1 -2
  95. package/packages/native/tsconfig.tsbuildinfo +1 -0
  96. package/packages/pi-agent-core/package.json +5 -0
  97. package/packages/pi-agent-core/src/agent-loop.test.ts +220 -15
  98. package/packages/pi-ai/package.json +5 -0
  99. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  100. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +25 -0
  101. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  102. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +105 -6
  103. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  104. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +230 -28
  105. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +1 -1
  106. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +30 -2
  107. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  108. package/packages/pi-coding-agent/dist/core/compaction/utils.js +113 -12
  109. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  110. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -1
  111. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +8 -2
  112. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -1
  113. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js +56 -1
  114. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js.map +1 -1
  115. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js +8 -15
  116. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js.map +1 -1
  117. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts +25 -0
  118. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts.map +1 -0
  119. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js +109 -0
  120. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js.map +1 -0
  121. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts +67 -0
  122. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts.map +1 -0
  123. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js +167 -0
  124. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js.map +1 -0
  125. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +3 -2
  126. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  127. package/packages/pi-coding-agent/dist/core/extensions/loader.js +24 -8
  128. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  129. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +7 -0
  130. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  131. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  132. package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js +11 -0
  133. package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js.map +1 -1
  134. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +2 -2
  135. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  136. package/packages/pi-coding-agent/dist/core/resource-loader.js +1 -1
  137. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  138. package/packages/pi-coding-agent/dist/core/system-prompt.js +3 -3
  139. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  140. package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js +2 -1
  141. package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js.map +1 -1
  142. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +14 -0
  143. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  144. package/packages/pi-coding-agent/package.json +5 -0
  145. package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +368 -28
  146. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +122 -6
  147. package/packages/pi-coding-agent/src/core/compaction/utils.ts +111 -13
  148. package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +8 -1
  149. package/packages/pi-coding-agent/src/core/compaction-utils.test.ts +68 -1
  150. package/packages/pi-coding-agent/src/core/discovery-cache.test.ts +9 -18
  151. package/packages/pi-coding-agent/src/core/extensions/extension-discovery.ts +119 -0
  152. package/packages/pi-coding-agent/src/core/extensions/extension-registry.ts +222 -0
  153. package/packages/pi-coding-agent/src/core/extensions/loader.ts +24 -11
  154. package/packages/pi-coding-agent/src/core/extensions/types.ts +8 -0
  155. package/packages/pi-coding-agent/src/core/lsp/lsp-integration.test.ts +13 -0
  156. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +2 -2
  157. package/packages/pi-coding-agent/src/core/resource-loader.ts +1 -1
  158. package/packages/pi-coding-agent/src/core/system-prompt.ts +3 -3
  159. package/packages/pi-coding-agent/src/core/tools/path-utils.test.ts +2 -1
  160. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +14 -0
  161. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  162. package/packages/pi-tui/dist/__tests__/autocomplete.test.js +12 -5
  163. package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -1
  164. package/packages/pi-tui/package.json +5 -0
  165. package/packages/pi-tui/src/__tests__/autocomplete.test.ts +20 -5
  166. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  167. package/packages/rpc-client/package.json +5 -0
  168. package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  169. package/pkg/dist/core/export-html/ansi-to-html.js +0 -1
  170. package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
  171. package/pkg/dist/core/export-html/index.d.ts +1 -1
  172. package/pkg/dist/core/export-html/index.d.ts.map +1 -1
  173. package/pkg/dist/core/export-html/index.js +5 -39
  174. package/pkg/dist/core/export-html/index.js.map +1 -1
  175. package/pkg/dist/core/export-html/tool-renderer.d.ts +2 -2
  176. package/pkg/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  177. package/pkg/dist/core/export-html/tool-renderer.js.map +1 -1
  178. package/scripts/ensure-workspace-builds.cjs +0 -2
  179. package/scripts/lib/workspace-manifest.cjs +86 -0
  180. package/scripts/link-workspace-packages.cjs +5 -19
  181. package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -1
  182. package/src/resources/extensions/aws-auth/index.ts +1 -2
  183. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +7 -4
  184. package/src/resources/extensions/bg-shell/index.ts +1 -2
  185. package/src/resources/extensions/bg-shell/process-manager.ts +1 -2
  186. package/src/resources/extensions/browser-tools/index.ts +1 -2
  187. package/src/resources/extensions/claude-code-cli/index.ts +1 -1
  188. package/src/resources/extensions/claude-code-cli/partial-builder.ts +23 -115
  189. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +67 -51
  190. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +69 -6
  191. package/src/resources/extensions/cmux/index.ts +35 -10
  192. package/src/resources/extensions/google-search/extension-manifest.json +5 -4
  193. package/src/resources/extensions/google-search/index.ts +8 -470
  194. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -1
  195. package/src/resources/extensions/gsd/auto/types.ts +1 -1
  196. package/src/resources/extensions/gsd/auto.ts +32 -18
  197. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +11 -0
  198. package/src/resources/extensions/gsd/bootstrap/system-context.ts +13 -9
  199. package/src/resources/extensions/gsd/commands-cmux.ts +10 -6
  200. package/src/resources/extensions/gsd/commands-extensions.ts +747 -41
  201. package/src/resources/extensions/gsd/guided-flow.ts +1 -1
  202. package/src/resources/extensions/gsd/notifications.ts +27 -15
  203. package/src/resources/extensions/gsd/tests/cmux.test.ts +5 -9
  204. package/src/resources/extensions/gsd/tests/google-search-stub.test.ts +121 -0
  205. package/src/resources/extensions/gsd/tests/milestone-transition-state-rebuild.test.ts +4 -2
  206. package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +5 -0
  207. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +150 -0
  208. package/src/resources/extensions/gsd/tests/validate-extension-package.test.ts +168 -0
  209. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +25 -2
  210. package/src/resources/extensions/mcp-client/index.ts +1 -1
  211. package/src/resources/extensions/ollama/index.ts +3 -3
  212. package/src/resources/extensions/ollama/ollama-chat-provider.ts +18 -6
  213. package/src/resources/extensions/remote-questions/config.ts +4 -15
  214. package/src/resources/extensions/search-the-web/index.ts +1 -2
  215. package/src/resources/extensions/shared/cmux-events.ts +59 -0
  216. package/src/resources/extensions/shared/rtk-session-stats.ts +1 -2
  217. package/src/resources/extensions/shared/tests/format-utils.test.ts +3 -5
  218. package/src/resources/extensions/universal-config/index.ts +1 -1
  219. package/packages/gsd-agent-core/dist/agent-session.d.ts +0 -716
  220. package/packages/gsd-agent-core/dist/agent-session.d.ts.map +0 -1
  221. package/packages/gsd-agent-core/dist/agent-session.js +0 -2595
  222. package/packages/gsd-agent-core/dist/agent-session.js.map +0 -1
  223. package/packages/gsd-agent-core/dist/artifact-manager.d.ts +0 -52
  224. package/packages/gsd-agent-core/dist/artifact-manager.d.ts.map +0 -1
  225. package/packages/gsd-agent-core/dist/artifact-manager.js +0 -118
  226. package/packages/gsd-agent-core/dist/artifact-manager.js.map +0 -1
  227. package/packages/gsd-agent-core/dist/bash-executor.d.ts +0 -57
  228. package/packages/gsd-agent-core/dist/bash-executor.d.ts.map +0 -1
  229. package/packages/gsd-agent-core/dist/bash-executor.js +0 -282
  230. package/packages/gsd-agent-core/dist/bash-executor.js.map +0 -1
  231. package/packages/gsd-agent-core/dist/blob-store.d.ts +0 -39
  232. package/packages/gsd-agent-core/dist/blob-store.d.ts.map +0 -1
  233. package/packages/gsd-agent-core/dist/blob-store.js +0 -151
  234. package/packages/gsd-agent-core/dist/blob-store.js.map +0 -1
  235. package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts +0 -90
  236. package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts.map +0 -1
  237. package/packages/gsd-agent-core/dist/compaction/branch-summarization.js +0 -207
  238. package/packages/gsd-agent-core/dist/compaction/branch-summarization.js.map +0 -1
  239. package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +0 -137
  240. package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +0 -1
  241. package/packages/gsd-agent-core/dist/compaction/compaction.js +0 -621
  242. package/packages/gsd-agent-core/dist/compaction/compaction.js.map +0 -1
  243. package/packages/gsd-agent-core/dist/compaction/index.d.ts +0 -7
  244. package/packages/gsd-agent-core/dist/compaction/index.d.ts.map +0 -1
  245. package/packages/gsd-agent-core/dist/compaction/index.js +0 -7
  246. package/packages/gsd-agent-core/dist/compaction/index.js.map +0 -1
  247. package/packages/gsd-agent-core/dist/compaction/utils.d.ts +0 -78
  248. package/packages/gsd-agent-core/dist/compaction/utils.d.ts.map +0 -1
  249. package/packages/gsd-agent-core/dist/compaction/utils.js +0 -263
  250. package/packages/gsd-agent-core/dist/compaction/utils.js.map +0 -1
  251. package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts +0 -90
  252. package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts.map +0 -1
  253. package/packages/gsd-agent-core/dist/compaction-orchestrator.js +0 -338
  254. package/packages/gsd-agent-core/dist/compaction-orchestrator.js.map +0 -1
  255. package/packages/gsd-agent-core/dist/contextual-tips.d.ts +0 -43
  256. package/packages/gsd-agent-core/dist/contextual-tips.d.ts.map +0 -1
  257. package/packages/gsd-agent-core/dist/contextual-tips.js +0 -208
  258. package/packages/gsd-agent-core/dist/contextual-tips.js.map +0 -1
  259. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts +0 -18
  260. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts.map +0 -1
  261. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js +0 -250
  262. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js.map +0 -1
  263. package/packages/gsd-agent-core/dist/export-html/index.d.ts +0 -37
  264. package/packages/gsd-agent-core/dist/export-html/index.d.ts.map +0 -1
  265. package/packages/gsd-agent-core/dist/export-html/index.js +0 -257
  266. package/packages/gsd-agent-core/dist/export-html/index.js.map +0 -1
  267. package/packages/gsd-agent-core/dist/export-html/template.css +0 -971
  268. package/packages/gsd-agent-core/dist/export-html/template.html +0 -54
  269. package/packages/gsd-agent-core/dist/export-html/template.js +0 -1583
  270. package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts +0 -38
  271. package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts.map +0 -1
  272. package/packages/gsd-agent-core/dist/export-html/tool-renderer.js +0 -70
  273. package/packages/gsd-agent-core/dist/export-html/tool-renderer.js.map +0 -1
  274. package/packages/gsd-agent-core/dist/export-html/vendor/highlight.min.js +0 -1213
  275. package/packages/gsd-agent-core/dist/export-html/vendor/marked.min.js +0 -6
  276. package/packages/gsd-agent-core/dist/fallback-resolver.d.ts +0 -75
  277. package/packages/gsd-agent-core/dist/fallback-resolver.d.ts.map +0 -1
  278. package/packages/gsd-agent-core/dist/fallback-resolver.js +0 -118
  279. package/packages/gsd-agent-core/dist/fallback-resolver.js.map +0 -1
  280. package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts +0 -44
  281. package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts.map +0 -1
  282. package/packages/gsd-agent-core/dist/image-overflow-recovery.js +0 -99
  283. package/packages/gsd-agent-core/dist/image-overflow-recovery.js.map +0 -1
  284. package/packages/gsd-agent-core/dist/index.d.ts +0 -14
  285. package/packages/gsd-agent-core/dist/index.d.ts.map +0 -1
  286. package/packages/gsd-agent-core/dist/index.js +0 -19
  287. package/packages/gsd-agent-core/dist/index.js.map +0 -1
  288. package/packages/gsd-agent-core/dist/keybindings.d.ts +0 -47
  289. package/packages/gsd-agent-core/dist/keybindings.d.ts.map +0 -1
  290. package/packages/gsd-agent-core/dist/keybindings.js +0 -156
  291. package/packages/gsd-agent-core/dist/keybindings.js.map +0 -1
  292. package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts +0 -42
  293. package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts.map +0 -1
  294. package/packages/gsd-agent-core/dist/lifecycle-hooks.js +0 -204
  295. package/packages/gsd-agent-core/dist/lifecycle-hooks.js.map +0 -1
  296. package/packages/gsd-agent-core/dist/retry-handler.d.ts +0 -128
  297. package/packages/gsd-agent-core/dist/retry-handler.d.ts.map +0 -1
  298. package/packages/gsd-agent-core/dist/retry-handler.js +0 -518
  299. package/packages/gsd-agent-core/dist/retry-handler.js.map +0 -1
  300. package/packages/gsd-agent-core/dist/sdk.d.ts +0 -159
  301. package/packages/gsd-agent-core/dist/sdk.d.ts.map +0 -1
  302. package/packages/gsd-agent-core/dist/sdk.js +0 -375
  303. package/packages/gsd-agent-core/dist/sdk.js.map +0 -1
  304. package/packages/gsd-agent-core/dist/system-prompt.d.ts +0 -28
  305. package/packages/gsd-agent-core/dist/system-prompt.d.ts.map +0 -1
  306. package/packages/gsd-agent-core/dist/system-prompt.js +0 -201
  307. package/packages/gsd-agent-core/dist/system-prompt.js.map +0 -1
  308. package/packages/gsd-agent-core/package.json +0 -25
  309. package/packages/gsd-agent-core/scripts/copy-assets.cjs +0 -43
  310. package/packages/gsd-agent-core/src/agent-session.test.ts +0 -169
  311. package/packages/gsd-agent-core/src/agent-session.ts +0 -3358
  312. package/packages/gsd-agent-core/src/artifact-manager.ts +0 -126
  313. package/packages/gsd-agent-core/src/bash-executor.ts +0 -352
  314. package/packages/gsd-agent-core/src/blob-store.ts +0 -154
  315. package/packages/gsd-agent-core/src/compaction/branch-summarization.ts +0 -317
  316. package/packages/gsd-agent-core/src/compaction/compaction.ts +0 -855
  317. package/packages/gsd-agent-core/src/compaction/index.ts +0 -7
  318. package/packages/gsd-agent-core/src/compaction/utils.ts +0 -312
  319. package/packages/gsd-agent-core/src/compaction-orchestrator.ts +0 -449
  320. package/packages/gsd-agent-core/src/contextual-tips.ts +0 -232
  321. package/packages/gsd-agent-core/src/export-html/ansi-to-html.ts +0 -259
  322. package/packages/gsd-agent-core/src/export-html/index.ts +0 -345
  323. package/packages/gsd-agent-core/src/export-html/template.css +0 -971
  324. package/packages/gsd-agent-core/src/export-html/template.html +0 -54
  325. package/packages/gsd-agent-core/src/export-html/template.js +0 -1583
  326. package/packages/gsd-agent-core/src/export-html/tool-renderer.ts +0 -114
  327. package/packages/gsd-agent-core/src/export-html/vendor/highlight.min.js +0 -1213
  328. package/packages/gsd-agent-core/src/export-html/vendor/marked.min.js +0 -6
  329. package/packages/gsd-agent-core/src/fallback-resolver.ts +0 -193
  330. package/packages/gsd-agent-core/src/image-overflow-recovery.ts +0 -120
  331. package/packages/gsd-agent-core/src/index.ts +0 -68
  332. package/packages/gsd-agent-core/src/keybindings.ts +0 -220
  333. package/packages/gsd-agent-core/src/lifecycle-hooks.ts +0 -284
  334. package/packages/gsd-agent-core/src/retry-handler.ts +0 -620
  335. package/packages/gsd-agent-core/src/sdk.ts +0 -550
  336. package/packages/gsd-agent-core/src/system-prompt.ts +0 -270
  337. package/packages/gsd-agent-core/tsconfig.json +0 -28
  338. package/packages/gsd-agent-core/tsconfig.tsbuildinfo +0 -1
  339. package/packages/gsd-agent-modes/dist/cli/args.d.ts +0 -58
  340. package/packages/gsd-agent-modes/dist/cli/args.d.ts.map +0 -1
  341. package/packages/gsd-agent-modes/dist/cli/args.js +0 -324
  342. package/packages/gsd-agent-modes/dist/cli/args.js.map +0 -1
  343. package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts +0 -13
  344. package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts.map +0 -1
  345. package/packages/gsd-agent-modes/dist/cli/config-selector.js +0 -32
  346. package/packages/gsd-agent-modes/dist/cli/config-selector.js.map +0 -1
  347. package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts +0 -15
  348. package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts.map +0 -1
  349. package/packages/gsd-agent-modes/dist/cli/file-processor.js +0 -86
  350. package/packages/gsd-agent-modes/dist/cli/file-processor.js.map +0 -1
  351. package/packages/gsd-agent-modes/dist/cli/list-models.d.ts +0 -21
  352. package/packages/gsd-agent-modes/dist/cli/list-models.d.ts.map +0 -1
  353. package/packages/gsd-agent-modes/dist/cli/list-models.js +0 -114
  354. package/packages/gsd-agent-modes/dist/cli/list-models.js.map +0 -1
  355. package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts +0 -10
  356. package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts.map +0 -1
  357. package/packages/gsd-agent-modes/dist/cli/session-picker.js +0 -37
  358. package/packages/gsd-agent-modes/dist/cli/session-picker.js.map +0 -1
  359. package/packages/gsd-agent-modes/dist/index.d.ts +0 -7
  360. package/packages/gsd-agent-modes/dist/index.d.ts.map +0 -1
  361. package/packages/gsd-agent-modes/dist/index.js +0 -7
  362. package/packages/gsd-agent-modes/dist/index.js.map +0 -1
  363. package/packages/gsd-agent-modes/dist/main.d.ts +0 -8
  364. package/packages/gsd-agent-modes/dist/main.d.ts.map +0 -1
  365. package/packages/gsd-agent-modes/dist/main.js +0 -491
  366. package/packages/gsd-agent-modes/dist/main.js.map +0 -1
  367. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts +0 -34
  368. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts.map +0 -1
  369. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js +0 -330
  370. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js.map +0 -1
  371. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +0 -29
  372. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  373. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +0 -141
  374. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +0 -1
  375. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts +0 -36
  376. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  377. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +0 -157
  378. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +0 -1
  379. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  380. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  381. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js +0 -48
  382. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  383. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  384. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  385. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +0 -43
  386. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  387. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts +0 -11
  388. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts.map +0 -1
  389. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js +0 -47
  390. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js.map +0 -1
  391. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  392. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  393. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +0 -44
  394. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  395. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts +0 -71
  396. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  397. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js +0 -474
  398. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js.map +0 -1
  399. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts +0 -15
  400. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  401. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js +0 -32
  402. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  403. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +0 -22
  404. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  405. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +0 -70
  406. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +0 -1
  407. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts +0 -20
  408. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  409. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js +0 -75
  410. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js.map +0 -1
  411. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  412. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  413. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js +0 -140
  414. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js.map +0 -1
  415. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts +0 -12
  416. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts.map +0 -1
  417. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js +0 -133
  418. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js.map +0 -1
  419. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts +0 -33
  420. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  421. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js +0 -82
  422. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  423. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  424. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  425. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +0 -111
  426. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +0 -1
  427. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +0 -24
  428. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  429. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +0 -63
  430. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +0 -1
  431. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +0 -33
  432. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  433. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +0 -118
  434. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +0 -1
  435. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +0 -32
  436. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +0 -1
  437. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +0 -230
  438. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +0 -1
  439. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +0 -34
  440. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +0 -1
  441. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +0 -36
  442. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +0 -1
  443. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts +0 -48
  444. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  445. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js +0 -72
  446. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  447. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +0 -63
  448. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  449. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +0 -213
  450. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +0 -1
  451. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts +0 -86
  452. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  453. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js +0 -536
  454. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js.map +0 -1
  455. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
  456. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  457. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +0 -93
  458. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  459. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts +0 -30
  460. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts.map +0 -1
  461. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js +0 -169
  462. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js.map +0 -1
  463. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
  464. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  465. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js +0 -267
  466. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  467. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts +0 -21
  468. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  469. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js +0 -155
  470. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  471. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts +0 -97
  472. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  473. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js +0 -810
  474. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js.map +0 -1
  475. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +0 -71
  476. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  477. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +0 -320
  478. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +0 -1
  479. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  480. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  481. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js +0 -34
  482. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  483. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  484. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  485. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +0 -46
  486. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  487. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  488. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  489. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js +0 -45
  490. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js.map +0 -1
  491. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  492. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  493. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js +0 -46
  494. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  495. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts +0 -15
  496. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts.map +0 -1
  497. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js +0 -40
  498. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js.map +0 -1
  499. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +0 -111
  500. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  501. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +0 -984
  502. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +0 -1
  503. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts +0 -44
  504. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts.map +0 -1
  505. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js +0 -61
  506. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js.map +0 -1
  507. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts +0 -109
  508. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  509. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js +0 -1035
  510. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js.map +0 -1
  511. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  512. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  513. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js +0 -112
  514. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  515. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +0 -12
  516. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  517. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +0 -38
  518. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +0 -1
  519. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  520. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  521. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js +0 -33
  522. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  523. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +0 -27
  524. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +0 -1
  525. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +0 -793
  526. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +0 -1
  527. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts +0 -4
  528. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +0 -1
  529. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +0 -62
  530. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +0 -1
  531. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts +0 -22
  532. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +0 -1
  533. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +0 -118
  534. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +0 -1
  535. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts +0 -7
  536. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts.map +0 -1
  537. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js +0 -68
  538. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js.map +0 -1
  539. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +0 -50
  540. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +0 -1
  541. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +0 -2
  542. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +0 -1
  543. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +0 -358
  544. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  545. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +0 -3409
  546. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +0 -1
  547. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts +0 -77
  548. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts.map +0 -1
  549. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js +0 -529
  550. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js.map +0 -1
  551. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts +0 -6
  552. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts.map +0 -1
  553. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js +0 -15
  554. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js.map +0 -1
  555. package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts +0 -28
  556. package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts.map +0 -1
  557. package/packages/gsd-agent-modes/dist/modes/print-mode.js +0 -84
  558. package/packages/gsd-agent-modes/dist/modes/print-mode.js.map +0 -1
  559. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts +0 -17
  560. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts.map +0 -1
  561. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js +0 -49
  562. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js.map +0 -1
  563. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts +0 -37
  564. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts.map +0 -1
  565. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js +0 -84
  566. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js.map +0 -1
  567. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +0 -243
  568. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  569. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +0 -464
  570. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +0 -1
  571. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts +0 -25
  572. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  573. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +0 -750
  574. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +0 -1
  575. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts +0 -511
  576. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  577. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js +0 -8
  578. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js.map +0 -1
  579. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts +0 -19
  580. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts.map +0 -1
  581. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js +0 -45
  582. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js.map +0 -1
  583. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts +0 -22
  584. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts.map +0 -1
  585. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js +0 -21
  586. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js.map +0 -1
  587. package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts +0 -4
  588. package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts.map +0 -1
  589. package/packages/gsd-agent-modes/dist/pi-tui-compat.js +0 -3
  590. package/packages/gsd-agent-modes/dist/pi-tui-compat.js.map +0 -1
  591. package/packages/gsd-agent-modes/dist/theme.d.ts +0 -15
  592. package/packages/gsd-agent-modes/dist/theme.d.ts.map +0 -1
  593. package/packages/gsd-agent-modes/dist/theme.js +0 -23
  594. package/packages/gsd-agent-modes/dist/theme.js.map +0 -1
  595. package/packages/gsd-agent-modes/dist/utils/theme.d.ts +0 -16
  596. package/packages/gsd-agent-modes/dist/utils/theme.d.ts.map +0 -1
  597. package/packages/gsd-agent-modes/dist/utils/theme.js +0 -11
  598. package/packages/gsd-agent-modes/dist/utils/theme.js.map +0 -1
  599. package/packages/gsd-agent-modes/package.json +0 -23
  600. package/packages/gsd-agent-modes/src/cli/args.ts +0 -350
  601. package/packages/gsd-agent-modes/src/cli/config-selector.ts +0 -54
  602. package/packages/gsd-agent-modes/src/cli/file-processor.ts +0 -107
  603. package/packages/gsd-agent-modes/src/cli/list-models.ts +0 -141
  604. package/packages/gsd-agent-modes/src/cli/session-picker.ts +0 -59
  605. package/packages/gsd-agent-modes/src/index.ts +0 -6
  606. package/packages/gsd-agent-modes/src/main.ts +0 -614
  607. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/login-dialog.test.ts +0 -24
  608. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/provider-display-name.test.ts +0 -18
  609. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/timestamp.test.ts +0 -38
  610. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/tool-execution.test.ts +0 -171
  611. package/packages/gsd-agent-modes/src/modes/interactive/components/armin.ts +0 -382
  612. package/packages/gsd-agent-modes/src/modes/interactive/components/assistant-message.ts +0 -178
  613. package/packages/gsd-agent-modes/src/modes/interactive/components/bash-execution.ts +0 -212
  614. package/packages/gsd-agent-modes/src/modes/interactive/components/bordered-loader.ts +0 -66
  615. package/packages/gsd-agent-modes/src/modes/interactive/components/branch-summary-message.ts +0 -59
  616. package/packages/gsd-agent-modes/src/modes/interactive/components/chat-frame.ts +0 -67
  617. package/packages/gsd-agent-modes/src/modes/interactive/components/compaction-summary-message.ts +0 -60
  618. package/packages/gsd-agent-modes/src/modes/interactive/components/config-selector.ts +0 -597
  619. package/packages/gsd-agent-modes/src/modes/interactive/components/countdown-timer.ts +0 -41
  620. package/packages/gsd-agent-modes/src/modes/interactive/components/custom-editor.ts +0 -88
  621. package/packages/gsd-agent-modes/src/modes/interactive/components/custom-message.ts +0 -100
  622. package/packages/gsd-agent-modes/src/modes/interactive/components/daxnuts.ts +0 -165
  623. package/packages/gsd-agent-modes/src/modes/interactive/components/diff.ts +0 -147
  624. package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.test.ts +0 -73
  625. package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.ts +0 -89
  626. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-editor.ts +0 -151
  627. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-input.ts +0 -100
  628. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-selector.ts +0 -156
  629. package/packages/gsd-agent-modes/src/modes/interactive/components/footer.ts +0 -257
  630. package/packages/gsd-agent-modes/src/modes/interactive/components/index.ts +0 -35
  631. package/packages/gsd-agent-modes/src/modes/interactive/components/keybinding-hints.ts +0 -84
  632. package/packages/gsd-agent-modes/src/modes/interactive/components/login-dialog.ts +0 -257
  633. package/packages/gsd-agent-modes/src/modes/interactive/components/model-selector.ts +0 -656
  634. package/packages/gsd-agent-modes/src/modes/interactive/components/oauth-selector.ts +0 -122
  635. package/packages/gsd-agent-modes/src/modes/interactive/components/provider-manager.ts +0 -210
  636. package/packages/gsd-agent-modes/src/modes/interactive/components/scoped-models-selector.ts +0 -342
  637. package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector-search.ts +0 -194
  638. package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector.ts +0 -1011
  639. package/packages/gsd-agent-modes/src/modes/interactive/components/settings-selector.ts +0 -452
  640. package/packages/gsd-agent-modes/src/modes/interactive/components/show-images-selector.ts +0 -45
  641. package/packages/gsd-agent-modes/src/modes/interactive/components/skill-invocation-message.ts +0 -56
  642. package/packages/gsd-agent-modes/src/modes/interactive/components/theme-selector.ts +0 -63
  643. package/packages/gsd-agent-modes/src/modes/interactive/components/thinking-selector.ts +0 -64
  644. package/packages/gsd-agent-modes/src/modes/interactive/components/timestamp.ts +0 -48
  645. package/packages/gsd-agent-modes/src/modes/interactive/components/tool-execution.ts +0 -1157
  646. package/packages/gsd-agent-modes/src/modes/interactive/components/tree-render-utils.ts +0 -81
  647. package/packages/gsd-agent-modes/src/modes/interactive/components/tree-selector.ts +0 -1208
  648. package/packages/gsd-agent-modes/src/modes/interactive/components/user-message-selector.ts +0 -145
  649. package/packages/gsd-agent-modes/src/modes/interactive/components/user-message.ts +0 -44
  650. package/packages/gsd-agent-modes/src/modes/interactive/components/visual-truncate.ts +0 -50
  651. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller-ordering.test.ts +0 -1430
  652. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.test.ts +0 -71
  653. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.ts +0 -957
  654. package/packages/gsd-agent-modes/src/modes/interactive/controllers/extension-ui-controller.ts +0 -63
  655. package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.test.ts +0 -183
  656. package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.ts +0 -140
  657. package/packages/gsd-agent-modes/src/modes/interactive/controllers/model-controller.ts +0 -77
  658. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-ordering.test.ts +0 -44
  659. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-state.ts +0 -49
  660. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode.ts +0 -4195
  661. package/packages/gsd-agent-modes/src/modes/interactive/slash-command-handlers.ts +0 -670
  662. package/packages/gsd-agent-modes/src/modes/interactive/utils/shorten-path.ts +0 -14
  663. package/packages/gsd-agent-modes/src/modes/print-mode.ts +0 -106
  664. package/packages/gsd-agent-modes/src/modes/rpc/jsonl.ts +0 -58
  665. package/packages/gsd-agent-modes/src/modes/rpc/remote-terminal.ts +0 -109
  666. package/packages/gsd-agent-modes/src/modes/rpc/rpc-client.ts +0 -572
  667. package/packages/gsd-agent-modes/src/modes/rpc/rpc-mode.ts +0 -902
  668. package/packages/gsd-agent-modes/src/modes/rpc/rpc-protocol-v2.test.ts +0 -971
  669. package/packages/gsd-agent-modes/src/modes/rpc/rpc-types.ts +0 -335
  670. package/packages/gsd-agent-modes/src/modes/shared/command-context-actions.ts +0 -53
  671. package/packages/gsd-agent-modes/src/pi-coding-agent-compat.ts +0 -42
  672. package/packages/gsd-agent-modes/src/pi-tui-compat.ts +0 -4
  673. package/packages/gsd-agent-modes/src/theme.ts +0 -25
  674. package/packages/gsd-agent-modes/src/utils/theme.ts +0 -24
  675. package/packages/gsd-agent-modes/tsconfig.json +0 -28
  676. package/packages/gsd-agent-modes/tsconfig.tsbuildinfo +0 -1
  677. package/packages/gsd-agent-types/dist/index.d.ts +0 -176
  678. package/packages/gsd-agent-types/dist/index.d.ts.map +0 -1
  679. package/packages/gsd-agent-types/dist/index.js +0 -24
  680. package/packages/gsd-agent-types/dist/index.js.map +0 -1
  681. package/packages/gsd-agent-types/package.json +0 -24
  682. package/packages/gsd-agent-types/src/index.ts +0 -206
  683. package/packages/gsd-agent-types/tsconfig.json +0 -25
  684. package/packages/gsd-agent-types/tsconfig.tsbuildinfo +0 -1
  685. package/packages/native/dist/tsconfig.tsbuildinfo +0 -1
  686. package/src/resources/extensions/claude-code-cli/tests/provider-registration.test.ts +0 -27
  687. /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → H51SzzS_EEgdBsDVhrLBv}/_buildManifest.js +0 -0
  688. /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → H51SzzS_EEgdBsDVhrLBv}/_ssgManifest.js +0 -0
package/dist/cli.js CHANGED
@@ -1,6 +1,4 @@
1
- import { AuthStorage, DefaultResourceLoader, ModelRegistry, SettingsManager, SessionManager, } from '@gsd/pi-coding-agent';
2
- import { runInteractiveMode as InteractiveMode, runPrintMode, runRpcMode, } from '@gsd/agent-modes';
3
- import { createAgentSession } from '@gsd/agent-core';
1
+ import { AuthStorage, DefaultResourceLoader, ModelRegistry, runPackageCommand, SettingsManager, SessionManager, createAgentSession, InteractiveMode, runPrintMode, runRpcMode, } from '@gsd/pi-coding-agent';
4
2
  import { readFileSync } from 'node:fs';
5
3
  import { join } from 'node:path';
6
4
  import { agentDir, sessionsDir, authFilePath } from './app-paths.js';
@@ -76,6 +74,18 @@ function printExtensionErrors(errors) {
76
74
  process.stderr.write(`[gsd] ${prefix}: ${err.error}\n`);
77
75
  }
78
76
  }
77
+ /**
78
+ * Print extension load warnings (non-fatal, e.g. missing declared deps from
79
+ * the topological sort). Complements printExtensionErrors — fatal errors go
80
+ * there, advisory warnings go here.
81
+ */
82
+ function printExtensionWarnings(warnings) {
83
+ if (!warnings)
84
+ return;
85
+ for (const w of warnings) {
86
+ process.stderr.write(`[gsd] Extension warning: ${w.message}\n`);
87
+ }
88
+ }
79
89
  /**
80
90
  * Re-apply the validated model to the session when `createAgentSession()`
81
91
  * reports that it had to use a fallback. Prevents silently overriding the
@@ -235,8 +245,18 @@ const hasSubcommand = cliFlags.messages.length > 0;
235
245
  if (!process.stdin.isTTY && !isPrintMode && !hasSubcommand && !cliFlags.listModels && !cliFlags.web) {
236
246
  printNonTtyErrorAndExit(undefined, false);
237
247
  }
238
- // Package management subcommands (install, remove, list) were handled here
239
- // via pi-coding-agent prior to 0.67.2. That API was removed upstream.
248
+ const packageCommand = await runPackageCommand({
249
+ appName: 'gsd',
250
+ args: process.argv.slice(2),
251
+ cwd: process.cwd(),
252
+ agentDir,
253
+ stdout: process.stdout,
254
+ stderr: process.stderr,
255
+ allowedCommands: new Set(['install', 'remove', 'list']),
256
+ });
257
+ if (packageCommand.handled) {
258
+ process.exit(packageCommand.exitCode);
259
+ }
240
260
  // `gsd config` — replay the setup wizard and exit
241
261
  if (cliFlags.messages[0] === 'config') {
242
262
  const authStorage = AuthStorage.create(authFilePath);
@@ -417,7 +437,7 @@ if (cliFlags.listModels !== undefined) {
417
437
  let filtered = models;
418
438
  if (searchPattern) {
419
439
  const q = searchPattern.toLowerCase();
420
- filtered = models.filter((model) => `${model.provider} ${model.id} ${model.name}`.toLowerCase().includes(q));
440
+ filtered = models.filter((m) => `${m.provider} ${m.id} ${m.name}`.toLowerCase().includes(q));
421
441
  }
422
442
  // Sort by name descending (newest first), then provider, then id
423
443
  filtered.sort((a, b) => {
@@ -430,13 +450,13 @@ if (cliFlags.listModels !== undefined) {
430
450
  return a.id.localeCompare(b.id);
431
451
  });
432
452
  const fmt = (n) => n >= 1_000_000 ? `${n / 1_000_000}M` : n >= 1_000 ? `${n / 1_000}K` : `${n}`;
433
- const rows = filtered.map((model) => [
434
- model.provider,
435
- model.id,
436
- model.name,
437
- fmt(model.contextWindow),
438
- fmt(model.maxTokens),
439
- model.reasoning ? 'yes' : 'no',
453
+ const rows = filtered.map((m) => [
454
+ m.provider,
455
+ m.id,
456
+ m.name,
457
+ fmt(m.contextWindow),
458
+ fmt(m.maxTokens),
459
+ m.reasoning ? 'yes' : 'no',
440
460
  ]);
441
461
  const hdrs = ['provider', 'model', 'name', 'context', 'max-out', 'thinking'];
442
462
  const widths = hdrs.map((h, i) => Math.max(h.length, ...rows.map((r) => r[i].length)));
@@ -499,6 +519,7 @@ if (isPrintMode) {
499
519
  validateConfiguredModel(modelRegistry, settingsManager);
500
520
  await reapplyValidatedModelOnFallback(session, modelRegistry, settingsManager, modelFallbackMessage);
501
521
  printExtensionErrors(extensionsResult.errors);
522
+ printExtensionWarnings(extensionsResult.warnings);
502
523
  // Apply --model override if specified
503
524
  if (cliFlags.model) {
504
525
  const available = modelRegistry.getAvailable();
@@ -636,6 +657,7 @@ markStartup('createAgentSession');
636
657
  validateConfiguredModel(modelRegistry, settingsManager);
637
658
  await reapplyValidatedModelOnFallback(session, modelRegistry, settingsManager, interactiveFallbackMsg);
638
659
  printExtensionErrors(extensionsResult.errors);
660
+ printExtensionWarnings(extensionsResult.warnings);
639
661
  // Restore scoped models from settings on startup.
640
662
  // The upstream InteractiveMode reads enabledModels from settings when /scoped-models is opened,
641
663
  // but doesn't apply them to the session at startup — so Ctrl+P cycles all models instead of
@@ -16,3 +16,9 @@ export declare function resolveExtensionEntries(dir: string): string[];
16
16
  * pi.extensions, then index.ts/index.js fallback).
17
17
  */
18
18
  export declare function discoverExtensionEntryPaths(extensionsDir: string): string[];
19
+ /**
20
+ * Merge bundled and installed extension entry paths.
21
+ * Installed extensions with the same manifest ID as a bundled extension take precedence (D-14).
22
+ * Loader stays dumb — receives a pre-merged path list (D-15).
23
+ */
24
+ export declare function mergeExtensionEntryPaths(bundledPaths: string[], installedExtDir: string): string[];
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
2
  import { join, resolve } from 'node:path';
3
+ import { readManifest, readManifestFromEntryPath } from './extension-registry.js';
3
4
  function isExtensionFile(name) {
4
5
  return name.endsWith('.ts') || name.endsWith('.js');
5
6
  }
@@ -69,3 +70,39 @@ export function discoverExtensionEntryPaths(extensionsDir) {
69
70
  }
70
71
  return discovered;
71
72
  }
73
+ /**
74
+ * Merge bundled and installed extension entry paths.
75
+ * Installed extensions with the same manifest ID as a bundled extension take precedence (D-14).
76
+ * Loader stays dumb — receives a pre-merged path list (D-15).
77
+ */
78
+ export function mergeExtensionEntryPaths(bundledPaths, installedExtDir) {
79
+ if (!existsSync(installedExtDir))
80
+ return bundledPaths;
81
+ // Build map: manifest ID → entry paths for installed extensions
82
+ const installedById = new Map();
83
+ for (const entry of readdirSync(installedExtDir, { withFileTypes: true })) {
84
+ if (!entry.isDirectory())
85
+ continue;
86
+ const dir = join(installedExtDir, entry.name);
87
+ const manifest = readManifest(dir);
88
+ const entries = resolveExtensionEntries(dir);
89
+ if (manifest && entries.length > 0) {
90
+ installedById.set(manifest.id, entries);
91
+ }
92
+ }
93
+ if (installedById.size === 0)
94
+ return bundledPaths;
95
+ // Filter bundled paths: skip any whose manifest id is shadowed by installed
96
+ const merged = [];
97
+ for (const entryPath of bundledPaths) {
98
+ const manifest = readManifestFromEntryPath(entryPath);
99
+ if (manifest && installedById.has(manifest.id))
100
+ continue; // shadowed by installed
101
+ merged.push(entryPath);
102
+ }
103
+ // Append all installed entries
104
+ for (const entries of installedById.values()) {
105
+ merged.push(...entries);
106
+ }
107
+ return merged;
108
+ }
@@ -31,6 +31,9 @@ export interface ExtensionRegistryEntry {
31
31
  source: "bundled" | "user" | "project";
32
32
  disabledAt?: string;
33
33
  disabledReason?: string;
34
+ version?: string;
35
+ installedFrom?: string;
36
+ installType?: "npm" | "git" | "local";
34
37
  }
35
38
  export interface ExtensionRegistry {
36
39
  version: 1;
@@ -150,7 +150,7 @@ export function ensureRegistryEntries(extensionsDir) {
150
150
  return;
151
151
  const registry = loadRegistry();
152
152
  let changed = false;
153
- for (const [id, _manifest] of manifests) {
153
+ for (const [id, manifest] of manifests) {
154
154
  if (!registry.entries[id]) {
155
155
  registry.entries[id] = {
156
156
  id,
@@ -0,0 +1,18 @@
1
+ export interface SortWarning {
2
+ declaringId: string;
3
+ missingId: string;
4
+ message: string;
5
+ }
6
+ export interface SortResult {
7
+ sortedPaths: string[];
8
+ warnings: SortWarning[];
9
+ }
10
+ /**
11
+ * Sort extension entry paths in topological dependency-first order using Kahn's BFS algorithm.
12
+ *
13
+ * - Extensions without manifests are prepended in input order.
14
+ * - Missing dependencies produce a structured warning but do not block loading.
15
+ * - Cycles produce warnings; cycle participants are appended alphabetically.
16
+ * - Self-dependencies are silently ignored.
17
+ */
18
+ export declare function sortExtensionPaths(paths: string[]): SortResult;
@@ -0,0 +1,114 @@
1
+ // GSD-2 — Extension Sort: Topological dependency ordering
2
+ // Copyright (c) 2026 Jeremy McSpadden <jeremy@fluxlabs.net>
3
+ import { readManifestFromEntryPath } from './extension-registry.js';
4
+ /**
5
+ * Sort extension entry paths in topological dependency-first order using Kahn's BFS algorithm.
6
+ *
7
+ * - Extensions without manifests are prepended in input order.
8
+ * - Missing dependencies produce a structured warning but do not block loading.
9
+ * - Cycles produce warnings; cycle participants are appended alphabetically.
10
+ * - Self-dependencies are silently ignored.
11
+ */
12
+ export function sortExtensionPaths(paths) {
13
+ const warnings = [];
14
+ const pathsWithoutId = [];
15
+ const idToPath = new Map();
16
+ // Step 1: Build ID map
17
+ for (const path of paths) {
18
+ const manifest = readManifestFromEntryPath(path);
19
+ if (!manifest) {
20
+ pathsWithoutId.push(path);
21
+ }
22
+ else {
23
+ idToPath.set(manifest.id, path);
24
+ }
25
+ }
26
+ // Step 2: Build graph — inDegree and dependents adjacency
27
+ const inDegree = new Map();
28
+ const dependents = new Map(); // dep → [ids that depend on dep]
29
+ for (const id of idToPath.keys()) {
30
+ if (!inDegree.has(id))
31
+ inDegree.set(id, 0);
32
+ if (!dependents.has(id))
33
+ dependents.set(id, []);
34
+ }
35
+ for (const [id, path] of idToPath) {
36
+ const manifest = readManifestFromEntryPath(path);
37
+ const rawDeps = manifest?.dependencies?.extensions ?? [];
38
+ const deps = Array.isArray(rawDeps) ? rawDeps : [];
39
+ for (const depId of deps) {
40
+ // Silently ignore self-deps
41
+ if (depId === id)
42
+ continue;
43
+ if (!idToPath.has(depId)) {
44
+ // Missing dependency — warn and skip edge
45
+ warnings.push({
46
+ declaringId: id,
47
+ missingId: depId,
48
+ message: `Extension '${id}' declares dependency '${depId}' which is not installed — loading anyway`,
49
+ });
50
+ continue;
51
+ }
52
+ // Valid edge: id depends on depId → increment inDegree[id], add id to dependents[depId]
53
+ inDegree.set(id, (inDegree.get(id) ?? 0) + 1);
54
+ const depDependents = dependents.get(depId) ?? [];
55
+ depDependents.push(id);
56
+ dependents.set(depId, depDependents);
57
+ }
58
+ }
59
+ // Step 3: Kahn's algorithm — start with nodes that have inDegree 0
60
+ const sorted = [];
61
+ // Ready queue: IDs with inDegree 0, maintained in alphabetical order
62
+ const ready = [...idToPath.keys()]
63
+ .filter(id => inDegree.get(id) === 0)
64
+ .sort();
65
+ while (ready.length > 0) {
66
+ const id = ready.shift();
67
+ sorted.push(idToPath.get(id));
68
+ const deps = dependents.get(id) ?? [];
69
+ for (const depId of deps) {
70
+ const newDegree = (inDegree.get(depId) ?? 0) - 1;
71
+ inDegree.set(depId, newDegree);
72
+ if (newDegree === 0) {
73
+ // Insert into ready queue maintaining alphabetical order
74
+ const insertIdx = ready.findIndex(r => r > depId);
75
+ if (insertIdx === -1) {
76
+ ready.push(depId);
77
+ }
78
+ else {
79
+ ready.splice(insertIdx, 0, depId);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ // Step 4: Cycle handling — any remaining IDs with inDegree > 0
85
+ const cycleIds = [...idToPath.keys()]
86
+ .filter(id => (inDegree.get(id) ?? 0) > 0)
87
+ .sort();
88
+ if (cycleIds.length > 0) {
89
+ const cycleSet = new Set(cycleIds);
90
+ for (const id of cycleIds) {
91
+ const path = idToPath.get(id);
92
+ const manifest = readManifestFromEntryPath(path);
93
+ const rawDeps = manifest?.dependencies?.extensions ?? [];
94
+ const deps = Array.isArray(rawDeps) ? rawDeps : [];
95
+ for (const depId of deps) {
96
+ if (depId === id)
97
+ continue;
98
+ if (!cycleSet.has(depId))
99
+ continue;
100
+ // Both id and depId are in cycle — emit warning
101
+ warnings.push({
102
+ declaringId: id,
103
+ missingId: depId,
104
+ message: `Extension '${id}' and '${depId}' form a dependency cycle — loading both anyway (alphabetical order)`,
105
+ });
106
+ }
107
+ sorted.push(path);
108
+ }
109
+ }
110
+ return {
111
+ sortedPaths: [...pathsWithoutId, ...sorted],
112
+ warnings,
113
+ };
114
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Install-time validator for GSD extension packages. Called by the install command
3
+ * (Phase 8) before writing files. Not called on bundled extensions — they are
4
+ * discovered at load time, not installed.
5
+ */
6
+ export interface ValidationError {
7
+ code: string;
8
+ message: string;
9
+ field?: string;
10
+ }
11
+ export interface ValidationWarning {
12
+ code: string;
13
+ message: string;
14
+ }
15
+ export interface ValidationResult {
16
+ valid: boolean;
17
+ errors: ValidationError[];
18
+ warnings: ValidationWarning[];
19
+ }
20
+ export interface ValidationOptions {
21
+ allowGsdNamespace?: boolean;
22
+ extensionId?: string;
23
+ }
24
+ /**
25
+ * Per D-03: Check that pkg.gsd.extension === true with STRICT equality (not truthiness).
26
+ * Packages without this marker are not recognized as GSD extensions.
27
+ */
28
+ export declare function checkInstallDiscriminator(pkg: unknown): ValidationError | null;
29
+ /**
30
+ * Per D-04/D-05: Check that the extension ID does not use the reserved gsd.* namespace,
31
+ * unless allowGsdNamespace is explicitly set to true.
32
+ * Per D-06: Only checks extension manifest ID — not pkg.name.
33
+ */
34
+ export declare function checkNamespaceReservation(extensionId: string, opts: ValidationOptions): ValidationError | null;
35
+ /**
36
+ * Per D-07/D-08/D-09/D-10: Scan both `dependencies` and `devDependencies` for @gsd/* packages.
37
+ * peerDependencies is the correct placement and is NOT flagged.
38
+ * Returns an error per violation naming the exact field and package.
39
+ */
40
+ export declare function checkDependencyPlacement(pkg: unknown): ValidationError[];
41
+ /**
42
+ * Run all validation checks for a GSD extension package.json.
43
+ * - If opts.extensionId is provided, runs namespace reservation check.
44
+ * - If opts.extensionId is not provided, skips namespace check and adds a warning.
45
+ * - valid is ALWAYS derived as errors.length === 0.
46
+ */
47
+ export declare function validateExtensionPackage(pkg: unknown, opts?: ValidationOptions): ValidationResult;
@@ -0,0 +1,127 @@
1
+ // GSD-2 — Extension Package Format Validator
2
+ // Copyright (c) 2026 Jeremy McSpadden <jeremy@fluxlabs.net>
3
+ // ─── Individual Check Functions ───────────────────────────────────────────────
4
+ /**
5
+ * Per D-03: Check that pkg.gsd.extension === true with STRICT equality (not truthiness).
6
+ * Packages without this marker are not recognized as GSD extensions.
7
+ */
8
+ export function checkInstallDiscriminator(pkg) {
9
+ if (typeof pkg !== 'object' || pkg === null) {
10
+ return {
11
+ code: 'MISSING_GSD_MARKER',
12
+ message: 'package.json must declare "gsd": { "extension": true } to be recognized as a GSD extension.',
13
+ field: 'gsd.extension',
14
+ };
15
+ }
16
+ const obj = pkg;
17
+ const gsd = obj.gsd;
18
+ if (typeof gsd !== 'object' || gsd === null) {
19
+ return {
20
+ code: 'MISSING_GSD_MARKER',
21
+ message: 'package.json must declare "gsd": { "extension": true } to be recognized as a GSD extension.',
22
+ field: 'gsd.extension',
23
+ };
24
+ }
25
+ const gsdObj = gsd;
26
+ if (gsdObj.extension !== true) {
27
+ return {
28
+ code: 'MISSING_GSD_MARKER',
29
+ message: 'package.json must declare "gsd": { "extension": true } to be recognized as a GSD extension.',
30
+ field: 'gsd.extension',
31
+ };
32
+ }
33
+ return null;
34
+ }
35
+ /**
36
+ * Per D-04/D-05: Check that the extension ID does not use the reserved gsd.* namespace,
37
+ * unless allowGsdNamespace is explicitly set to true.
38
+ * Per D-06: Only checks extension manifest ID — not pkg.name.
39
+ */
40
+ export function checkNamespaceReservation(extensionId, opts) {
41
+ if (opts.allowGsdNamespace === true) {
42
+ return null;
43
+ }
44
+ if (extensionId.startsWith('gsd.')) {
45
+ return {
46
+ code: 'RESERVED_NAMESPACE',
47
+ message: `Extension ID "${extensionId}" is reserved for GSD core extensions. Use a different namespace for community extensions (e.g., "my-tool" or "acme.my-tool"). To override: pass --allow-gsd-namespace (maintainers only).`,
48
+ field: 'extensionId',
49
+ };
50
+ }
51
+ return null;
52
+ }
53
+ /**
54
+ * Per D-07/D-08/D-09/D-10: Scan both `dependencies` and `devDependencies` for @gsd/* packages.
55
+ * peerDependencies is the correct placement and is NOT flagged.
56
+ * Returns an error per violation naming the exact field and package.
57
+ */
58
+ export function checkDependencyPlacement(pkg) {
59
+ const errors = [];
60
+ if (typeof pkg !== 'object' || pkg === null) {
61
+ return errors;
62
+ }
63
+ const obj = pkg;
64
+ const fieldsToCheck = [
65
+ {
66
+ field: 'dependencies',
67
+ reason: 'Extensions must not bundle GSD host packages — the host provides them at runtime.',
68
+ },
69
+ {
70
+ field: 'devDependencies',
71
+ reason: 'GSD host packages are provided by the host at runtime; listing them in devDependencies misrepresents the runtime contract.',
72
+ },
73
+ ];
74
+ for (const { field, reason } of fieldsToCheck) {
75
+ const deps = obj[field];
76
+ if (typeof deps !== 'object' || deps === null)
77
+ continue;
78
+ const depsObj = deps;
79
+ for (const pkgName of Object.keys(depsObj)) {
80
+ if (pkgName.startsWith('@gsd/')) {
81
+ errors.push({
82
+ code: 'WRONG_DEP_FIELD',
83
+ message: `"${pkgName}" must not appear in "${field}". Move it to "peerDependencies". ${reason}`,
84
+ field,
85
+ });
86
+ }
87
+ }
88
+ }
89
+ return errors;
90
+ }
91
+ // ─── Composite Validation ─────────────────────────────────────────────────────
92
+ /**
93
+ * Run all validation checks for a GSD extension package.json.
94
+ * - If opts.extensionId is provided, runs namespace reservation check.
95
+ * - If opts.extensionId is not provided, skips namespace check and adds a warning.
96
+ * - valid is ALWAYS derived as errors.length === 0.
97
+ */
98
+ export function validateExtensionPackage(pkg, opts = {}) {
99
+ const errors = [];
100
+ const warnings = [];
101
+ // Check 1: Install discriminator
102
+ const discriminatorError = checkInstallDiscriminator(pkg);
103
+ if (discriminatorError) {
104
+ errors.push(discriminatorError);
105
+ }
106
+ // Check 2: Namespace reservation (only if extensionId provided)
107
+ if (opts.extensionId !== undefined) {
108
+ const namespaceError = checkNamespaceReservation(opts.extensionId, opts);
109
+ if (namespaceError) {
110
+ errors.push(namespaceError);
111
+ }
112
+ }
113
+ else {
114
+ warnings.push({
115
+ code: 'NAMESPACE_CHECK_SKIPPED',
116
+ message: 'No extensionId provided — namespace reservation check was skipped.',
117
+ });
118
+ }
119
+ // Check 3: Dependency placement
120
+ const depErrors = checkDependencyPlacement(pkg);
121
+ errors.push(...depErrors);
122
+ return {
123
+ valid: errors.length === 0,
124
+ errors,
125
+ warnings,
126
+ };
127
+ }
@@ -5,7 +5,7 @@
5
5
  * formats progress events for stderr output, and reads orchestrator
6
6
  * commands from stdin in supervised mode.
7
7
  */
8
- import { RpcClient } from '@gsd/agent-modes';
8
+ import { RpcClient } from '@gsd/pi-coding-agent';
9
9
  interface ExtensionUIRequest {
10
10
  type: 'extension_ui_request';
11
11
  id: string;
package/dist/headless.js CHANGED
@@ -14,8 +14,7 @@
14
14
  import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
15
15
  import { join } from 'node:path';
16
16
  import { resolve } from 'node:path';
17
- import { RpcClient } from '@gsd/agent-modes';
18
- import { SessionManager } from '@gsd/pi-coding-agent';
17
+ import { RpcClient, SessionManager } from '@gsd/pi-coding-agent';
19
18
  import { getProjectSessionsDir } from './project-sessions.js';
20
19
  import { loadAndValidateAnswerFile, AnswerInjector } from './headless-answers.js';
21
20
  import { isTerminalNotification, isBlockedNotification, isMilestoneReadyNotification, isQuickCommand, FIRE_AND_FORGET_METHODS, IDLE_TIMEOUT_MS, NEW_MILESTONE_IDLE_TIMEOUT_MS, isInteractiveHeadlessTool, shouldArmHeadlessIdleTimeout, EXIT_SUCCESS, EXIT_ERROR, EXIT_BLOCKED, EXIT_CANCELLED, mapStatusToExitCode, } from './headless-events.js';
@@ -649,8 +648,10 @@ async function runHeadlessOnce(options, restartCount) {
649
648
  process.exit(1);
650
649
  }
651
650
  // v2 protocol negotiation — attempt init for structured completion events
651
+ let v2Enabled = false;
652
652
  try {
653
653
  await client.init({ clientId: 'gsd-headless' });
654
+ v2Enabled = true;
654
655
  }
655
656
  catch {
656
657
  process.stderr.write('[headless] Warning: v2 init failed, falling back to v1 string-matching\n');
@@ -742,6 +743,7 @@ async function runHeadlessOnce(options, restartCount) {
742
743
  if (timeoutTimer)
743
744
  clearTimeout(timeoutTimer);
744
745
  completed = false;
746
+ milestoneReady = false;
745
747
  blocked = false;
746
748
  const autoCompletionPromise = new Promise((resolve) => {
747
749
  resolveCompletion = resolve;
package/dist/loader.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) 2026 Jeremy McSpadden <jeremy@fluxlabs.net>
4
4
  import { fileURLToPath } from 'url';
5
5
  import { dirname, resolve, join, relative, delimiter } from 'path';
6
- import { existsSync, readFileSync, mkdirSync, symlinkSync, cpSync } from 'fs';
6
+ import { existsSync, readFileSync, readdirSync, statSync, mkdirSync, symlinkSync, cpSync } from 'fs';
7
7
  // Fast-path: handle --version/-v and --help/-h before importing any heavy
8
8
  // dependencies. This avoids loading the entire pi-coding-agent barrel import
9
9
  // (~1s) just to print a version string.
@@ -110,6 +110,7 @@ process.env.NODE_PATH = [gsdNodeModules, process.env.NODE_PATH]
110
110
  .join(delimiter);
111
111
  // Force Node to re-evaluate module search paths with the updated NODE_PATH.
112
112
  // Must happen synchronously before cli.js imports → extension loading.
113
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
113
114
  const { Module } = await import('module');
114
115
  Module._initPaths?.();
115
116
  // GSD_VERSION — expose package version so extensions can display it
@@ -154,15 +155,42 @@ if (process.env.HTTP_PROXY || process.env.HTTPS_PROXY || process.env.http_proxy
154
155
  // On Windows without Developer Mode or admin rights, symlinkSync will throw even for
155
156
  // 'junction' type — so we fall back to cpSync (a full directory copy) which works
156
157
  // everywhere without elevated permissions.
157
- const gsdScopeDir = join(gsdNodeModules, '@gsd');
158
+ // Discover linkable workspace packages by scanning packages/*/package.json for
159
+ // `gsd.linkable === true`. This is the single source of truth — the same list
160
+ // read by scripts/link-workspace-packages.cjs and scripts/validate-pack.js.
161
+ // Adding a new linkable package requires only setting `gsd.linkable` in its
162
+ // package.json; there is no enumeration to keep in sync here.
158
163
  const packagesDir = join(gsdRoot, 'packages');
159
- const wsPackages = ['native', 'pi-agent-core', 'pi-ai', 'pi-coding-agent', 'pi-tui'];
164
+ const wsPackages = [];
165
+ try {
166
+ if (existsSync(packagesDir)) {
167
+ for (const dir of readdirSync(packagesDir)) {
168
+ const pkgPath = join(packagesDir, dir);
169
+ if (!statSync(pkgPath).isDirectory())
170
+ continue;
171
+ const pkgJsonPath = join(pkgPath, 'package.json');
172
+ if (!existsSync(pkgJsonPath))
173
+ continue;
174
+ try {
175
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
176
+ const gsd = pkg.gsd;
177
+ if (!gsd || gsd.linkable !== true)
178
+ continue;
179
+ if (gsd.scope && gsd.name)
180
+ wsPackages.push({ dir, scope: gsd.scope, name: gsd.name });
181
+ }
182
+ catch { /* ignore malformed package.json */ }
183
+ }
184
+ }
185
+ }
186
+ catch { /* non-fatal — validation below catches missing critical packages */ }
160
187
  try {
161
- if (!existsSync(gsdScopeDir))
162
- mkdirSync(gsdScopeDir, { recursive: true });
163
188
  for (const pkg of wsPackages) {
164
- const target = join(gsdScopeDir, pkg);
165
- const source = join(packagesDir, pkg);
189
+ const scopeDir = join(gsdNodeModules, pkg.scope);
190
+ if (!existsSync(scopeDir))
191
+ mkdirSync(scopeDir, { recursive: true });
192
+ const target = join(scopeDir, pkg.name);
193
+ const source = join(packagesDir, pkg.dir);
166
194
  if (!existsSync(source) || existsSync(target))
167
195
  continue;
168
196
  try {
@@ -179,6 +207,7 @@ try {
179
207
  }
180
208
  }
181
209
  catch { /* non-fatal */ }
210
+ const gsdScopeDir = join(gsdNodeModules, '@gsd');
182
211
  // Validate critical workspace packages are resolvable. If still missing after the
183
212
  // symlink+copy attempts, emit a clear diagnostic instead of a cryptic
184
213
  // ERR_MODULE_NOT_FOUND from deep inside cli.js.
@@ -749,11 +749,10 @@ export async function runToolKeysStep(p, pc, authStorage) {
749
749
  }
750
750
  // ─── Remote Questions Step ────────────────────────────────────────────────────
751
751
  export async function runRemoteQuestionsStep(p, pc, authStorage) {
752
- // Check existing config — use authStorage.get() and validate the key
753
- const hasValidKey = (provider) => {
754
- const c = authStorage.get(provider);
755
- return c?.type === 'api_key' && typeof c.key === 'string' && c.key.length > 0;
756
- };
752
+ // Check existing config — use getCredentialsForProvider to skip empty-key entries
753
+ const hasValidKey = (provider) => authStorage
754
+ .getCredentialsForProvider(provider)
755
+ .some((c) => c.type === 'api_key' && typeof c.key === 'string' && c.key.length > 0);
757
756
  const hasDiscord = hasValidKey('discord_bot');
758
757
  const hasSlack = hasValidKey('slack_bot');
759
758
  const hasTelegram = hasValidKey('telegram_bot');
@@ -951,6 +950,7 @@ async function runDiscordChannelStep(p, pc, token) {
951
950
  if (p.isCancel(choice))
952
951
  return null;
953
952
  guildId = choice;
953
+ guildName = guilds.find(g => g.id === guildId)?.name ?? guildId;
954
954
  }
955
955
  // Fetch channels
956
956
  let channels;
@@ -1,10 +1,10 @@
1
1
  import type { AuthStorage } from "@gsd/pi-coding-agent";
2
2
  type AnthropicMigrationDeps = {
3
- authStorage: Pick<AuthStorage, "get">;
3
+ authStorage: Pick<AuthStorage, "getCredentialsForProvider">;
4
4
  isClaudeCodeReady: boolean;
5
5
  defaultProvider: string | undefined;
6
6
  env?: NodeJS.ProcessEnv;
7
7
  };
8
- export declare function hasDirectAnthropicApiKey(authStorage: Pick<AuthStorage, "get">, env?: NodeJS.ProcessEnv): boolean;
8
+ export declare function hasDirectAnthropicApiKey(authStorage: Pick<AuthStorage, "getCredentialsForProvider">, env?: NodeJS.ProcessEnv): boolean;
9
9
  export declare function shouldMigrateAnthropicToClaudeCode({ authStorage, isClaudeCodeReady, defaultProvider, env, }: AnthropicMigrationDeps): boolean;
10
10
  export {};
@@ -2,8 +2,7 @@ export function hasDirectAnthropicApiKey(authStorage, env = process.env) {
2
2
  if ((env.ANTHROPIC_API_KEY ?? "").trim()) {
3
3
  return true;
4
4
  }
5
- const credential = authStorage.get("anthropic");
6
- return credential?.type === "api_key" && typeof credential?.key === "string" && credential.key.trim().length > 0;
5
+ return authStorage.getCredentialsForProvider("anthropic").some((credential) => credential?.type === "api_key" && typeof credential?.key === "string" && credential.key.trim().length > 0);
7
6
  }
8
7
  export function shouldMigrateAnthropicToClaudeCode({ authStorage, isClaudeCodeReady, defaultProvider, env = process.env, }) {
9
8
  if (!isClaudeCodeReady || defaultProvider !== "anthropic") {
@@ -26,7 +26,7 @@ export function saveRemoteQuestionsConfig(channel, channelId) {
26
26
  ].join("\n");
27
27
  const content = existsSync(prefsPath) ? readFileSync(prefsPath, "utf-8") : "";
28
28
  const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
29
- let next;
29
+ let next = content;
30
30
  if (fmMatch) {
31
31
  let frontmatter = fmMatch[1];
32
32
  const regex = /remote_questions:[\s\S]*?(?=\n[a-zA-Z_]|\n---|$)/;
@@ -5,7 +5,7 @@
5
5
  * immediately. The LLM can continue working and check results later
6
6
  * with await_job.
7
7
  */
8
- import { getShellConfig, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, sanitizeCommand, } from "@gsd/pi-coding-agent";
8
+ import { getShellConfig, sanitizeCommand, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, } from "@gsd/pi-coding-agent";
9
9
  import { Type } from "@sinclair/typebox";
10
10
  import { spawn, spawnSync } from "node:child_process";
11
11
  import { createWriteStream } from "node:fs";