gsd-pi 2.34.0-dev.bbb5216 → 2.34.0-dev.e6d9bed

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 (416) hide show
  1. package/dist/resources/extensions/gsd/changelog.js +162 -0
  2. package/dist/resources/extensions/gsd/commands-bootstrap.js +1 -0
  3. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +5 -1
  4. package/dist/resources/extensions/gsd/commands.js +8 -1
  5. package/dist/resources/extensions/gsd/docs/preferences-reference.md +10 -0
  6. package/dist/resources/extensions/gsd/doctor-checks.js +113 -5
  7. package/dist/resources/extensions/gsd/doctor-proactive.js +22 -0
  8. package/dist/resources/extensions/gsd/doctor.js +36 -0
  9. package/dist/resources/extensions/gsd/guided-flow.js +4 -2
  10. package/dist/resources/extensions/gsd/preferences-validation.js +38 -0
  11. package/dist/resources/extensions/gsd/preferences.js +2 -0
  12. package/dist/resources/extensions/mcp-client/index.js +2 -1
  13. package/dist/resources/skills/create-gsd-extension/references/events-reference.md +4 -4
  14. package/package.json +1 -1
  15. package/packages/native/dist/native.d.ts +0 -2
  16. package/packages/native/dist/native.js +0 -2
  17. package/packages/native/src/native.ts +0 -3
  18. package/packages/pi-agent-core/dist/agent-loop.d.ts +14 -0
  19. package/packages/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  20. package/packages/pi-agent-core/dist/agent-loop.js +24 -27
  21. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  22. package/packages/pi-agent-core/dist/agent.d.ts +1 -0
  23. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  24. package/packages/pi-agent-core/dist/agent.js +11 -22
  25. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  26. package/packages/pi-agent-core/dist/proxy.d.ts +1 -25
  27. package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
  28. package/packages/pi-agent-core/dist/proxy.js +3 -9
  29. package/packages/pi-agent-core/dist/proxy.js.map +1 -1
  30. package/packages/pi-agent-core/src/agent-loop.ts +30 -27
  31. package/packages/pi-agent-core/src/agent.ts +12 -23
  32. package/packages/pi-agent-core/src/proxy.ts +3 -9
  33. package/packages/pi-ai/dist/api-registry.d.ts +0 -2
  34. package/packages/pi-ai/dist/api-registry.d.ts.map +1 -1
  35. package/packages/pi-ai/dist/api-registry.js +0 -10
  36. package/packages/pi-ai/dist/api-registry.js.map +1 -1
  37. package/packages/pi-ai/dist/providers/anthropic.d.ts +0 -8
  38. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  39. package/packages/pi-ai/dist/providers/anthropic.js +1 -1
  40. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  41. package/packages/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  42. package/packages/pi-ai/dist/providers/azure-openai-responses.js +5 -41
  43. package/packages/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  44. package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts +0 -1
  45. package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
  46. package/packages/pi-ai/dist/providers/github-copilot-headers.js +1 -1
  47. package/packages/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
  48. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts +1 -43
  49. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts.map +1 -1
  50. package/packages/pi-ai/dist/providers/google-gemini-cli.js +2 -2
  51. package/packages/pi-ai/dist/providers/google-gemini-cli.js.map +1 -1
  52. package/packages/pi-ai/dist/providers/google-shared.d.ts +0 -4
  53. package/packages/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  54. package/packages/pi-ai/dist/providers/google-shared.js +1 -1
  55. package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
  56. package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  57. package/packages/pi-ai/dist/providers/openai-completions.js +10 -73
  58. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  59. package/packages/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  60. package/packages/pi-ai/dist/providers/openai-responses.js +8 -79
  61. package/packages/pi-ai/dist/providers/openai-responses.js.map +1 -1
  62. package/packages/pi-ai/dist/providers/openai-shared.d.ts +65 -0
  63. package/packages/pi-ai/dist/providers/openai-shared.d.ts.map +1 -0
  64. package/packages/pi-ai/dist/providers/openai-shared.js +146 -0
  65. package/packages/pi-ai/dist/providers/openai-shared.js.map +1 -0
  66. package/packages/pi-ai/dist/providers/register-builtins.d.ts +0 -1
  67. package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  68. package/packages/pi-ai/dist/providers/register-builtins.js +1 -1
  69. package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
  70. package/packages/pi-ai/dist/utils/event-stream.d.ts +0 -2
  71. package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  72. package/packages/pi-ai/dist/utils/event-stream.js +0 -4
  73. package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
  74. package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  75. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +7 -135
  76. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
  77. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  78. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +7 -135
  79. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  80. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.d.ts +46 -0
  81. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.d.ts.map +1 -0
  82. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.js +160 -0
  83. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.js.map +1 -0
  84. package/packages/pi-ai/dist/utils/overflow.d.ts +0 -4
  85. package/packages/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  86. package/packages/pi-ai/dist/utils/overflow.js +0 -6
  87. package/packages/pi-ai/dist/utils/overflow.js.map +1 -1
  88. package/packages/pi-ai/dist/utils/validation.d.ts +0 -8
  89. package/packages/pi-ai/dist/utils/validation.d.ts.map +1 -1
  90. package/packages/pi-ai/dist/utils/validation.js +0 -14
  91. package/packages/pi-ai/dist/utils/validation.js.map +1 -1
  92. package/packages/pi-ai/src/api-registry.ts +0 -12
  93. package/packages/pi-ai/src/providers/anthropic.ts +1 -1
  94. package/packages/pi-ai/src/providers/azure-openai-responses.ts +11 -45
  95. package/packages/pi-ai/src/providers/github-copilot-headers.ts +1 -1
  96. package/packages/pi-ai/src/providers/google-gemini-cli.ts +2 -2
  97. package/packages/pi-ai/src/providers/google-shared.ts +1 -1
  98. package/packages/pi-ai/src/providers/openai-completions.ts +16 -86
  99. package/packages/pi-ai/src/providers/openai-responses.ts +15 -95
  100. package/packages/pi-ai/src/providers/openai-shared.ts +193 -0
  101. package/packages/pi-ai/src/providers/register-builtins.ts +1 -1
  102. package/packages/pi-ai/src/utils/event-stream.ts +0 -5
  103. package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +14 -162
  104. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +13 -161
  105. package/packages/pi-ai/src/utils/oauth/google-oauth-utils.ts +201 -0
  106. package/packages/pi-ai/src/utils/overflow.ts +1 -8
  107. package/packages/pi-ai/src/utils/validation.ts +0 -15
  108. package/packages/pi-coding-agent/dist/config.d.ts +0 -9
  109. package/packages/pi-coding-agent/dist/config.d.ts.map +1 -1
  110. package/packages/pi-coding-agent/dist/config.js +4 -8
  111. package/packages/pi-coding-agent/dist/config.js.map +1 -1
  112. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +16 -63
  113. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  114. package/packages/pi-coding-agent/dist/core/agent-session.js +104 -641
  115. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  116. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +0 -1
  117. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  118. package/packages/pi-coding-agent/dist/core/auth-storage.js +4 -35
  119. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  120. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  121. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js +5 -43
  122. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  123. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  124. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +11 -69
  125. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  126. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +40 -0
  127. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  128. package/packages/pi-coding-agent/dist/core/compaction/utils.js +78 -0
  129. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  130. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts +77 -0
  131. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -0
  132. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +331 -0
  133. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -0
  134. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts +0 -4
  135. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  136. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js +1 -1
  137. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js.map +1 -1
  138. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +2 -2
  139. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  140. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  141. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  142. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +15 -5
  143. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  144. package/packages/pi-coding-agent/dist/core/extensions/runner.js +129 -256
  145. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  146. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +49 -42
  147. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  148. package/packages/pi-coding-agent/dist/core/extensions/types.js +2 -21
  149. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  150. package/packages/pi-coding-agent/dist/core/keybindings.d.ts +0 -8
  151. package/packages/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  152. package/packages/pi-coding-agent/dist/core/keybindings.js +2 -2
  153. package/packages/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  154. package/packages/pi-coding-agent/dist/core/lock-utils.d.ts +39 -0
  155. package/packages/pi-coding-agent/dist/core/lock-utils.d.ts.map +1 -0
  156. package/packages/pi-coding-agent/dist/core/lock-utils.js +89 -0
  157. package/packages/pi-coding-agent/dist/core/lock-utils.js.map +1 -0
  158. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts +0 -17
  159. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
  160. package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -62
  161. package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
  162. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts +1 -1
  163. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts.map +1 -1
  164. package/packages/pi-coding-agent/dist/core/lsp/config.js +2 -6
  165. package/packages/pi-coding-agent/dist/core/lsp/config.js.map +1 -1
  166. package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts +0 -5
  167. package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts.map +1 -1
  168. package/packages/pi-coding-agent/dist/core/lsp/edits.js +1 -1
  169. package/packages/pi-coding-agent/dist/core/lsp/edits.js.map +1 -1
  170. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  171. package/packages/pi-coding-agent/dist/core/lsp/index.js +52 -107
  172. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  173. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts +0 -1
  174. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  175. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +3 -22
  176. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  177. package/packages/pi-coding-agent/dist/core/lsp/types.d.ts +0 -1
  178. package/packages/pi-coding-agent/dist/core/lsp/types.d.ts.map +1 -1
  179. package/packages/pi-coding-agent/dist/core/lsp/types.js +0 -28
  180. package/packages/pi-coding-agent/dist/core/lsp/types.js.map +1 -1
  181. package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts +1 -6
  182. package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts.map +1 -1
  183. package/packages/pi-coding-agent/dist/core/lsp/utils.js +1 -28
  184. package/packages/pi-coding-agent/dist/core/lsp/utils.js.map +1 -1
  185. package/packages/pi-coding-agent/dist/core/messages.d.ts +0 -8
  186. package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
  187. package/packages/pi-coding-agent/dist/core/messages.js +5 -5
  188. package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
  189. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +0 -3
  190. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  191. package/packages/pi-coding-agent/dist/core/model-registry.js +1 -3
  192. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  193. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts +1 -26
  194. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  195. package/packages/pi-coding-agent/dist/core/model-resolver.js +3 -59
  196. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  197. package/packages/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  198. package/packages/pi-coding-agent/dist/core/package-manager.js +2 -4
  199. package/packages/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  200. package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts +0 -17
  201. package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
  202. package/packages/pi-coding-agent/dist/core/prompt-templates.js +2 -2
  203. package/packages/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
  204. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts +2 -4
  205. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  206. package/packages/pi-coding-agent/dist/core/resource-loader.js +33 -58
  207. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  208. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +87 -0
  209. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -0
  210. package/packages/pi-coding-agent/dist/core/retry-handler.js +295 -0
  211. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -0
  212. package/packages/pi-coding-agent/dist/core/session-manager.d.ts +0 -5
  213. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  214. package/packages/pi-coding-agent/dist/core/session-manager.js +5 -32
  215. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  216. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +8 -12
  217. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  218. package/packages/pi-coding-agent/dist/core/settings-manager.js +78 -168
  219. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  220. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  221. package/packages/pi-coding-agent/dist/core/skills.js +1 -3
  222. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  223. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  224. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  225. package/packages/pi-coding-agent/dist/index.js +1 -1
  226. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  227. package/packages/pi-coding-agent/dist/migrations.d.ts +0 -16
  228. package/packages/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  229. package/packages/pi-coding-agent/dist/migrations.js +2 -2
  230. package/packages/pi-coding-agent/dist/migrations.js.map +1 -1
  231. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts +0 -2
  232. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  233. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js +2 -2
  234. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  235. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts +1 -1
  236. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  237. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js +9 -26
  238. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js.map +1 -1
  239. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  240. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +1 -13
  241. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  242. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.d.ts +44 -0
  243. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.d.ts.map +1 -0
  244. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.js +61 -0
  245. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.js.map +1 -0
  246. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  247. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.js +6 -9
  248. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.js.map +1 -1
  249. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +1 -24
  250. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  251. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +50 -512
  252. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  253. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts +71 -0
  254. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -0
  255. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +514 -0
  256. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -0
  257. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +65 -4
  258. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  259. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +6 -23
  260. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  261. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +12 -0
  262. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  263. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +175 -0
  264. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -0
  265. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.d.ts +6 -0
  266. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.d.ts.map +1 -0
  267. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.js +15 -0
  268. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.js.map +1 -0
  269. package/packages/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  270. package/packages/pi-coding-agent/dist/modes/print-mode.js +2 -30
  271. package/packages/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  272. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  273. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +2 -28
  274. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  275. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.d.ts +19 -0
  276. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.d.ts.map +1 -0
  277. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.js +45 -0
  278. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.js.map +1 -0
  279. package/packages/pi-coding-agent/dist/utils/changelog.d.ts +0 -4
  280. package/packages/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  281. package/packages/pi-coding-agent/dist/utils/changelog.js +1 -1
  282. package/packages/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  283. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts +0 -1
  284. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  285. package/packages/pi-coding-agent/dist/utils/clipboard-image.js +1 -1
  286. package/packages/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  287. package/packages/pi-coding-agent/dist/utils/error.d.ts +5 -0
  288. package/packages/pi-coding-agent/dist/utils/error.d.ts.map +1 -0
  289. package/packages/pi-coding-agent/dist/utils/error.js +7 -0
  290. package/packages/pi-coding-agent/dist/utils/error.js.map +1 -0
  291. package/packages/pi-coding-agent/dist/utils/photon.d.ts +0 -19
  292. package/packages/pi-coding-agent/dist/utils/photon.d.ts.map +1 -1
  293. package/packages/pi-coding-agent/dist/utils/photon.js +1 -120
  294. package/packages/pi-coding-agent/dist/utils/photon.js.map +1 -1
  295. package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts +0 -1
  296. package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
  297. package/packages/pi-coding-agent/dist/utils/tools-manager.js +1 -1
  298. package/packages/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
  299. package/packages/pi-coding-agent/src/config.ts +5 -10
  300. package/packages/pi-coding-agent/src/core/agent-session.ts +117 -745
  301. package/packages/pi-coding-agent/src/core/auth-storage.ts +4 -38
  302. package/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts +7 -53
  303. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +14 -74
  304. package/packages/pi-coding-agent/src/core/compaction/utils.ts +100 -0
  305. package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +424 -0
  306. package/packages/pi-coding-agent/src/core/export-html/ansi-to-html.ts +1 -1
  307. package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -21
  308. package/packages/pi-coding-agent/src/core/extensions/runner.ts +119 -256
  309. package/packages/pi-coding-agent/src/core/extensions/types.ts +50 -69
  310. package/packages/pi-coding-agent/src/core/keybindings.ts +2 -2
  311. package/packages/pi-coding-agent/src/core/lock-utils.ts +113 -0
  312. package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -73
  313. package/packages/pi-coding-agent/src/core/lsp/config.ts +2 -10
  314. package/packages/pi-coding-agent/src/core/lsp/edits.ts +1 -1
  315. package/packages/pi-coding-agent/src/core/lsp/index.ts +83 -152
  316. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +3 -23
  317. package/packages/pi-coding-agent/src/core/lsp/types.ts +0 -29
  318. package/packages/pi-coding-agent/src/core/lsp/utils.ts +1 -33
  319. package/packages/pi-coding-agent/src/core/messages.ts +5 -5
  320. package/packages/pi-coding-agent/src/core/model-registry.ts +0 -2
  321. package/packages/pi-coding-agent/src/core/model-resolver.ts +3 -77
  322. package/packages/pi-coding-agent/src/core/package-manager.ts +1 -4
  323. package/packages/pi-coding-agent/src/core/prompt-templates.ts +2 -2
  324. package/packages/pi-coding-agent/src/core/resource-loader.ts +43 -67
  325. package/packages/pi-coding-agent/src/core/retry-handler.ts +359 -0
  326. package/packages/pi-coding-agent/src/core/session-manager.ts +5 -34
  327. package/packages/pi-coding-agent/src/core/settings-manager.ts +87 -166
  328. package/packages/pi-coding-agent/src/core/skills.ts +1 -4
  329. package/packages/pi-coding-agent/src/index.ts +1 -7
  330. package/packages/pi-coding-agent/src/migrations.ts +2 -2
  331. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts +2 -2
  332. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts +17 -29
  333. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +1 -13
  334. package/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts +81 -0
  335. package/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts +14 -19
  336. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +50 -561
  337. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +653 -0
  338. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +7 -26
  339. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +196 -0
  340. package/packages/pi-coding-agent/src/modes/interactive/utils/shorten-path.ts +14 -0
  341. package/packages/pi-coding-agent/src/modes/print-mode.ts +2 -30
  342. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +2 -28
  343. package/packages/pi-coding-agent/src/modes/shared/command-context-actions.ts +53 -0
  344. package/packages/pi-coding-agent/src/utils/changelog.ts +1 -1
  345. package/packages/pi-coding-agent/src/utils/clipboard-image.ts +1 -1
  346. package/packages/pi-coding-agent/src/utils/error.ts +6 -0
  347. package/packages/pi-coding-agent/src/utils/photon.ts +0 -137
  348. package/packages/pi-coding-agent/src/utils/tools-manager.ts +1 -1
  349. package/packages/pi-tui/dist/components/editor.d.ts +0 -10
  350. package/packages/pi-tui/dist/components/editor.d.ts.map +1 -1
  351. package/packages/pi-tui/dist/components/editor.js +1 -1
  352. package/packages/pi-tui/dist/components/editor.js.map +1 -1
  353. package/packages/pi-tui/dist/components/markdown.d.ts +5 -0
  354. package/packages/pi-tui/dist/components/markdown.d.ts.map +1 -1
  355. package/packages/pi-tui/dist/components/markdown.js +25 -31
  356. package/packages/pi-tui/dist/components/markdown.js.map +1 -1
  357. package/packages/pi-tui/dist/keys.d.ts +0 -4
  358. package/packages/pi-tui/dist/keys.d.ts.map +1 -1
  359. package/packages/pi-tui/dist/keys.js +94 -162
  360. package/packages/pi-tui/dist/keys.js.map +1 -1
  361. package/packages/pi-tui/dist/overlay-layout.d.ts +55 -0
  362. package/packages/pi-tui/dist/overlay-layout.d.ts.map +1 -0
  363. package/packages/pi-tui/dist/overlay-layout.js +288 -0
  364. package/packages/pi-tui/dist/overlay-layout.js.map +1 -0
  365. package/packages/pi-tui/dist/tui.d.ts +0 -22
  366. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  367. package/packages/pi-tui/dist/tui.js +6 -272
  368. package/packages/pi-tui/dist/tui.js.map +1 -1
  369. package/packages/pi-tui/dist/utils.d.ts +0 -7
  370. package/packages/pi-tui/dist/utils.d.ts.map +1 -1
  371. package/packages/pi-tui/dist/utils.js +0 -44
  372. package/packages/pi-tui/dist/utils.js.map +1 -1
  373. package/packages/pi-tui/src/components/editor.ts +1 -1
  374. package/packages/pi-tui/src/components/markdown.ts +25 -29
  375. package/packages/pi-tui/src/keys.ts +94 -173
  376. package/packages/pi-tui/src/overlay-layout.ts +372 -0
  377. package/packages/pi-tui/src/tui.ts +11 -312
  378. package/packages/pi-tui/src/utils.ts +0 -43
  379. package/pkg/dist/core/export-html/ansi-to-html.d.ts +0 -4
  380. package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  381. package/pkg/dist/core/export-html/ansi-to-html.js +1 -1
  382. package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
  383. package/pkg/dist/modes/interactive/theme/theme.d.ts +65 -4
  384. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  385. package/pkg/dist/modes/interactive/theme/theme.js +6 -23
  386. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  387. package/pkg/dist/modes/interactive/theme/themes.d.ts +12 -0
  388. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  389. package/pkg/dist/modes/interactive/theme/themes.js +175 -0
  390. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -0
  391. package/src/resources/extensions/gsd/changelog.ts +213 -0
  392. package/src/resources/extensions/gsd/commands-bootstrap.ts +1 -0
  393. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +5 -1
  394. package/src/resources/extensions/gsd/commands.ts +9 -1
  395. package/src/resources/extensions/gsd/docs/preferences-reference.md +10 -0
  396. package/src/resources/extensions/gsd/doctor-checks.ts +107 -5
  397. package/src/resources/extensions/gsd/doctor-proactive.ts +24 -0
  398. package/src/resources/extensions/gsd/doctor-types.ts +9 -1
  399. package/src/resources/extensions/gsd/doctor.ts +35 -0
  400. package/src/resources/extensions/gsd/guided-flow.ts +4 -2
  401. package/src/resources/extensions/gsd/preferences-validation.ts +38 -0
  402. package/src/resources/extensions/gsd/preferences.ts +2 -0
  403. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +98 -2
  404. package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +59 -3
  405. package/src/resources/extensions/gsd/tests/preferences.test.ts +28 -0
  406. package/src/resources/extensions/mcp-client/index.ts +2 -1
  407. package/src/resources/skills/create-gsd-extension/references/events-reference.md +4 -4
  408. package/packages/pi-coding-agent/dist/modes/interactive/theme/dark.json +0 -85
  409. package/packages/pi-coding-agent/dist/modes/interactive/theme/light.json +0 -84
  410. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.json +0 -335
  411. package/packages/pi-coding-agent/src/modes/interactive/theme/dark.json +0 -85
  412. package/packages/pi-coding-agent/src/modes/interactive/theme/light.json +0 -84
  413. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.json +0 -335
  414. package/pkg/dist/modes/interactive/theme/dark.json +0 -85
  415. package/pkg/dist/modes/interactive/theme/light.json +0 -84
  416. package/pkg/dist/modes/interactive/theme/theme-schema.json +0 -335
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"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"}
@@ -38,19 +38,6 @@ const buildBuiltinKeybindings = (effectiveKeybindings) => {
38
38
  }
39
39
  return builtinKeybindings;
40
40
  };
41
- /**
42
- * Helper function to emit session_shutdown event to extensions.
43
- * Returns true if the event was emitted, false if there were no handlers.
44
- */
45
- export async function emitSessionShutdownEvent(extensionRunner) {
46
- if (extensionRunner?.hasHandlers("session_shutdown")) {
47
- await extensionRunner.emit({
48
- type: "session_shutdown",
49
- });
50
- return true;
51
- }
52
- return false;
53
- }
54
41
  const noOpUIContext = {
55
42
  select: async () => undefined,
56
43
  confirm: async () => false,
@@ -376,245 +363,152 @@ export class ExtensionRunner {
376
363
  event.type === "session_before_compact" ||
377
364
  event.type === "session_before_tree");
378
365
  }
379
- async emit(event) {
366
+ /**
367
+ * Shared handler invocation loop.
368
+ *
369
+ * Iterates every handler registered for `eventType` across all extensions,
370
+ * calling each inside a try/catch that emits an ExtensionError on failure.
371
+ *
372
+ * `getEvent` builds the event object for each handler call — callers that
373
+ * mutate state between calls (e.g. context, before_provider_request) supply
374
+ * a function; callers with a fixed event can pass a constant.
375
+ *
376
+ * `processResult` receives each handler's return value and the owning
377
+ * extension's path. It returns `{ done: true }` to short-circuit
378
+ * or `{ done: false }` to keep iterating.
379
+ */
380
+ async invokeHandlers(eventType, getEvent, processResult) {
380
381
  const ctx = this.createContext();
381
- let result;
382
382
  for (const ext of this.extensions) {
383
- const handlers = ext.handlers.get(event.type);
383
+ const handlers = ext.handlers.get(eventType);
384
384
  if (!handlers || handlers.length === 0)
385
385
  continue;
386
386
  for (const handler of handlers) {
387
387
  try {
388
+ const event = getEvent();
388
389
  const handlerResult = await handler(event, ctx);
389
- if (this.isSessionBeforeEvent(event) && handlerResult) {
390
- result = handlerResult;
391
- if (result.cancel) {
392
- return result;
393
- }
394
- }
390
+ const action = processResult(handlerResult, ext.path);
391
+ if (action.done)
392
+ return;
395
393
  }
396
394
  catch (err) {
397
395
  const message = err instanceof Error ? err.message : String(err);
398
396
  const stack = err instanceof Error ? err.stack : undefined;
399
397
  this.emitError({
400
398
  extensionPath: ext.path,
401
- event: event.type,
399
+ event: eventType,
402
400
  error: message,
403
401
  stack,
404
402
  });
405
403
  }
406
404
  }
407
405
  }
406
+ }
407
+ async emit(event) {
408
+ let result;
409
+ const isSessionBefore = this.isSessionBeforeEvent(event);
410
+ await this.invokeHandlers(event.type, () => event, (handlerResult) => {
411
+ if (isSessionBefore && handlerResult) {
412
+ result = handlerResult;
413
+ if (result.cancel)
414
+ return { done: true };
415
+ }
416
+ return { done: false };
417
+ });
408
418
  return result;
409
419
  }
410
420
  async emitToolResult(event) {
411
- const ctx = this.createContext();
412
421
  const currentEvent = { ...event };
413
422
  let modified = false;
414
- for (const ext of this.extensions) {
415
- const handlers = ext.handlers.get("tool_result");
416
- if (!handlers || handlers.length === 0)
417
- continue;
418
- for (const handler of handlers) {
419
- try {
420
- const handlerResult = (await handler(currentEvent, ctx));
421
- if (!handlerResult)
422
- continue;
423
- if (handlerResult.content !== undefined) {
424
- currentEvent.content = handlerResult.content;
425
- modified = true;
426
- }
427
- if (handlerResult.details !== undefined) {
428
- currentEvent.details = handlerResult.details;
429
- modified = true;
430
- }
431
- if (handlerResult.isError !== undefined) {
432
- currentEvent.isError = handlerResult.isError;
433
- modified = true;
434
- }
435
- }
436
- catch (err) {
437
- const message = err instanceof Error ? err.message : String(err);
438
- const stack = err instanceof Error ? err.stack : undefined;
439
- this.emitError({
440
- extensionPath: ext.path,
441
- event: "tool_result",
442
- error: message,
443
- stack,
444
- });
445
- }
423
+ await this.invokeHandlers("tool_result", () => currentEvent, (handlerResult) => {
424
+ const r = handlerResult;
425
+ if (!r)
426
+ return { done: false };
427
+ if (r.content !== undefined) {
428
+ currentEvent.content = r.content;
429
+ modified = true;
446
430
  }
447
- }
448
- if (!modified) {
431
+ if (r.details !== undefined) {
432
+ currentEvent.details = r.details;
433
+ modified = true;
434
+ }
435
+ if (r.isError !== undefined) {
436
+ currentEvent.isError = r.isError;
437
+ modified = true;
438
+ }
439
+ return { done: false };
440
+ });
441
+ if (!modified)
449
442
  return undefined;
450
- }
451
- return {
452
- content: currentEvent.content,
453
- details: currentEvent.details,
454
- isError: currentEvent.isError,
455
- };
443
+ return { content: currentEvent.content, details: currentEvent.details, isError: currentEvent.isError };
456
444
  }
457
445
  async emitToolCall(event) {
458
- const ctx = this.createContext();
459
446
  let result;
460
- for (const ext of this.extensions) {
461
- const handlers = ext.handlers.get("tool_call");
462
- if (!handlers || handlers.length === 0)
463
- continue;
464
- for (const handler of handlers) {
465
- try {
466
- const handlerResult = await handler(event, ctx);
467
- if (handlerResult) {
468
- result = handlerResult;
469
- if (result.block) {
470
- return result;
471
- }
472
- }
473
- }
474
- catch (err) {
475
- const message = err instanceof Error ? err.message : String(err);
476
- const stack = err instanceof Error ? err.stack : undefined;
477
- this.emitError({
478
- extensionPath: ext.path,
479
- event: "tool_call",
480
- error: message,
481
- stack,
482
- });
483
- }
447
+ await this.invokeHandlers("tool_call", () => event, (handlerResult) => {
448
+ if (handlerResult) {
449
+ result = handlerResult;
450
+ if (result.block)
451
+ return { done: true };
484
452
  }
485
- }
453
+ return { done: false };
454
+ });
486
455
  return result;
487
456
  }
488
457
  async emitUserBash(event) {
489
- const ctx = this.createContext();
490
- for (const ext of this.extensions) {
491
- const handlers = ext.handlers.get("user_bash");
492
- if (!handlers || handlers.length === 0)
493
- continue;
494
- for (const handler of handlers) {
495
- try {
496
- const handlerResult = await handler(event, ctx);
497
- if (handlerResult) {
498
- return handlerResult;
499
- }
500
- }
501
- catch (err) {
502
- const message = err instanceof Error ? err.message : String(err);
503
- const stack = err instanceof Error ? err.stack : undefined;
504
- this.emitError({
505
- extensionPath: ext.path,
506
- event: "user_bash",
507
- error: message,
508
- stack,
509
- });
510
- }
458
+ let result;
459
+ await this.invokeHandlers("user_bash", () => event, (handlerResult) => {
460
+ if (handlerResult) {
461
+ result = handlerResult;
462
+ return { done: true };
511
463
  }
512
- }
513
- return undefined;
464
+ return { done: false };
465
+ });
466
+ return result;
514
467
  }
515
468
  async emitContext(messages) {
516
- const ctx = this.createContext();
517
469
  let currentMessages = structuredClone(messages);
518
- for (const ext of this.extensions) {
519
- const handlers = ext.handlers.get("context");
520
- if (!handlers || handlers.length === 0)
521
- continue;
522
- for (const handler of handlers) {
523
- try {
524
- const event = { type: "context", messages: currentMessages };
525
- const handlerResult = await handler(event, ctx);
526
- if (handlerResult && handlerResult.messages) {
527
- currentMessages = handlerResult.messages;
528
- }
529
- }
530
- catch (err) {
531
- const message = err instanceof Error ? err.message : String(err);
532
- const stack = err instanceof Error ? err.stack : undefined;
533
- this.emitError({
534
- extensionPath: ext.path,
535
- event: "context",
536
- error: message,
537
- stack,
538
- });
539
- }
470
+ await this.invokeHandlers("context", () => ({ type: "context", messages: currentMessages }), (handlerResult) => {
471
+ if (handlerResult && handlerResult.messages) {
472
+ currentMessages = handlerResult.messages;
540
473
  }
541
- }
474
+ return { done: false };
475
+ });
542
476
  return currentMessages;
543
477
  }
544
478
  async emitBeforeProviderRequest(payload, model) {
545
- const ctx = this.createContext();
546
479
  let currentPayload = payload;
547
- for (const ext of this.extensions) {
548
- const handlers = ext.handlers.get("before_provider_request");
549
- if (!handlers || handlers.length === 0)
550
- continue;
551
- for (const handler of handlers) {
552
- try {
553
- const event = {
554
- type: "before_provider_request",
555
- payload: currentPayload,
556
- model,
557
- };
558
- const handlerResult = await handler(event, ctx);
559
- if (handlerResult !== undefined) {
560
- currentPayload = handlerResult;
561
- }
562
- }
563
- catch (err) {
564
- const message = err instanceof Error ? err.message : String(err);
565
- const stack = err instanceof Error ? err.stack : undefined;
566
- this.emitError({
567
- extensionPath: ext.path,
568
- event: "before_provider_request",
569
- error: message,
570
- stack,
571
- });
572
- }
573
- }
574
- }
480
+ await this.invokeHandlers("before_provider_request", () => ({
481
+ type: "before_provider_request",
482
+ payload: currentPayload,
483
+ model,
484
+ }), (handlerResult) => {
485
+ if (handlerResult !== undefined)
486
+ currentPayload = handlerResult;
487
+ return { done: false };
488
+ });
575
489
  return currentPayload;
576
490
  }
577
491
  async emitBeforeAgentStart(prompt, images, systemPrompt) {
578
- const ctx = this.createContext();
579
492
  const messages = [];
580
493
  let currentSystemPrompt = systemPrompt;
581
494
  let systemPromptModified = false;
582
- for (const ext of this.extensions) {
583
- const handlers = ext.handlers.get("before_agent_start");
584
- if (!handlers || handlers.length === 0)
585
- continue;
586
- for (const handler of handlers) {
587
- try {
588
- const event = {
589
- type: "before_agent_start",
590
- prompt,
591
- images,
592
- systemPrompt: currentSystemPrompt,
593
- };
594
- const handlerResult = await handler(event, ctx);
595
- if (handlerResult) {
596
- const result = handlerResult;
597
- if (result.message) {
598
- messages.push(result.message);
599
- }
600
- if (result.systemPrompt !== undefined) {
601
- currentSystemPrompt = result.systemPrompt;
602
- systemPromptModified = true;
603
- }
604
- }
605
- }
606
- catch (err) {
607
- const message = err instanceof Error ? err.message : String(err);
608
- const stack = err instanceof Error ? err.stack : undefined;
609
- this.emitError({
610
- extensionPath: ext.path,
611
- event: "before_agent_start",
612
- error: message,
613
- stack,
614
- });
495
+ await this.invokeHandlers("before_agent_start", () => ({
496
+ type: "before_agent_start",
497
+ prompt,
498
+ images,
499
+ systemPrompt: currentSystemPrompt,
500
+ }), (handlerResult) => {
501
+ if (handlerResult) {
502
+ const r = handlerResult;
503
+ if (r.message)
504
+ messages.push(r.message);
505
+ if (r.systemPrompt !== undefined) {
506
+ currentSystemPrompt = r.systemPrompt;
507
+ systemPromptModified = true;
615
508
  }
616
509
  }
617
- }
510
+ return { done: false };
511
+ });
618
512
  if (messages.length > 0 || systemPromptModified) {
619
513
  return {
620
514
  messages: messages.length > 0 ? messages : undefined,
@@ -624,70 +518,49 @@ export class ExtensionRunner {
624
518
  return undefined;
625
519
  }
626
520
  async emitResourcesDiscover(cwd, reason) {
627
- const ctx = this.createContext();
628
521
  const skillPaths = [];
629
522
  const promptPaths = [];
630
523
  const themePaths = [];
631
- for (const ext of this.extensions) {
632
- const handlers = ext.handlers.get("resources_discover");
633
- if (!handlers || handlers.length === 0)
634
- continue;
635
- for (const handler of handlers) {
636
- try {
637
- const event = { type: "resources_discover", cwd, reason };
638
- const handlerResult = await handler(event, ctx);
639
- const result = handlerResult;
640
- if (result?.skillPaths?.length) {
641
- skillPaths.push(...result.skillPaths.map((path) => ({ path, extensionPath: ext.path })));
642
- }
643
- if (result?.promptPaths?.length) {
644
- promptPaths.push(...result.promptPaths.map((path) => ({ path, extensionPath: ext.path })));
645
- }
646
- if (result?.themePaths?.length) {
647
- themePaths.push(...result.themePaths.map((path) => ({ path, extensionPath: ext.path })));
648
- }
649
- }
650
- catch (err) {
651
- const message = err instanceof Error ? err.message : String(err);
652
- const stack = err instanceof Error ? err.stack : undefined;
653
- this.emitError({
654
- extensionPath: ext.path,
655
- event: "resources_discover",
656
- error: message,
657
- stack,
658
- });
659
- }
660
- }
661
- }
524
+ await this.invokeHandlers("resources_discover", () => ({
525
+ type: "resources_discover",
526
+ cwd,
527
+ reason,
528
+ }), (handlerResult, extensionPath) => {
529
+ const r = handlerResult;
530
+ if (r?.skillPaths?.length)
531
+ skillPaths.push(...r.skillPaths.map((path) => ({ path, extensionPath })));
532
+ if (r?.promptPaths?.length)
533
+ promptPaths.push(...r.promptPaths.map((path) => ({ path, extensionPath })));
534
+ if (r?.themePaths?.length)
535
+ themePaths.push(...r.themePaths.map((path) => ({ path, extensionPath })));
536
+ return { done: false };
537
+ });
662
538
  return { skillPaths, promptPaths, themePaths };
663
539
  }
664
540
  /** Emit input event. Transforms chain, "handled" short-circuits. */
665
541
  async emitInput(text, images, source) {
666
- const ctx = this.createContext();
667
542
  let currentText = text;
668
543
  let currentImages = images;
669
- for (const ext of this.extensions) {
670
- for (const handler of ext.handlers.get("input") ?? []) {
671
- try {
672
- const event = { type: "input", text: currentText, images: currentImages, source };
673
- const result = (await handler(event, ctx));
674
- if (result?.action === "handled")
675
- return result;
676
- if (result?.action === "transform") {
677
- currentText = result.text;
678
- currentImages = result.images ?? currentImages;
679
- }
680
- }
681
- catch (err) {
682
- this.emitError({
683
- extensionPath: ext.path,
684
- event: "input",
685
- error: err instanceof Error ? err.message : String(err),
686
- stack: err instanceof Error ? err.stack : undefined,
687
- });
688
- }
544
+ let handled;
545
+ await this.invokeHandlers("input", () => ({
546
+ type: "input",
547
+ text: currentText,
548
+ images: currentImages,
549
+ source,
550
+ }), (handlerResult) => {
551
+ const r = handlerResult;
552
+ if (r?.action === "handled") {
553
+ handled = r;
554
+ return { done: true };
689
555
  }
690
- }
556
+ if (r?.action === "transform") {
557
+ currentText = r.text;
558
+ currentImages = r.images ?? currentImages;
559
+ }
560
+ return { done: false };
561
+ });
562
+ if (handled)
563
+ return handled;
691
564
  return currentText !== text || currentImages !== images
692
565
  ? { action: "transform", text: currentText, images: currentImages }
693
566
  : { action: "continue" };