@openeryc/pi-coding-agent 0.75.11 → 0.75.13

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 (591) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  3. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  4. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  5. package/examples/extensions/sandbox/package-lock.json +2 -2
  6. package/examples/extensions/sandbox/package.json +1 -1
  7. package/examples/extensions/with-deps/package-lock.json +2 -2
  8. package/examples/extensions/with-deps/package.json +1 -1
  9. package/npm-shrinkwrap.json +12 -12
  10. package/package.json +4 -4
  11. package/dist/bun/cli.d.ts +0 -3
  12. package/dist/bun/cli.d.ts.map +0 -1
  13. package/dist/bun/cli.js +0 -9
  14. package/dist/bun/cli.js.map +0 -1
  15. package/dist/bun/register-bedrock.d.ts +0 -2
  16. package/dist/bun/register-bedrock.d.ts.map +0 -1
  17. package/dist/bun/register-bedrock.js +0 -4
  18. package/dist/bun/register-bedrock.js.map +0 -1
  19. package/dist/bun/restore-sandbox-env.d.ts +0 -13
  20. package/dist/bun/restore-sandbox-env.d.ts.map +0 -1
  21. package/dist/bun/restore-sandbox-env.js +0 -32
  22. package/dist/bun/restore-sandbox-env.js.map +0 -1
  23. package/dist/cli/args.d.ts +0 -53
  24. package/dist/cli/args.d.ts.map +0 -1
  25. package/dist/cli/args.js +0 -341
  26. package/dist/cli/args.js.map +0 -1
  27. package/dist/cli/config-selector.d.ts +0 -14
  28. package/dist/cli/config-selector.d.ts.map +0 -1
  29. package/dist/cli/config-selector.js +0 -31
  30. package/dist/cli/config-selector.js.map +0 -1
  31. package/dist/cli/file-processor.d.ts +0 -15
  32. package/dist/cli/file-processor.d.ts.map +0 -1
  33. package/dist/cli/file-processor.js +0 -83
  34. package/dist/cli/file-processor.js.map +0 -1
  35. package/dist/cli/initial-message.d.ts +0 -18
  36. package/dist/cli/initial-message.d.ts.map +0 -1
  37. package/dist/cli/initial-message.js +0 -22
  38. package/dist/cli/initial-message.js.map +0 -1
  39. package/dist/cli/list-models.d.ts +0 -9
  40. package/dist/cli/list-models.d.ts.map +0 -1
  41. package/dist/cli/list-models.js +0 -98
  42. package/dist/cli/list-models.js.map +0 -1
  43. package/dist/cli/session-picker.d.ts +0 -9
  44. package/dist/cli/session-picker.d.ts.map +0 -1
  45. package/dist/cli/session-picker.js +0 -35
  46. package/dist/cli/session-picker.js.map +0 -1
  47. package/dist/cli.d.ts +0 -3
  48. package/dist/cli.d.ts.map +0 -1
  49. package/dist/cli.js +0 -18
  50. package/dist/cli.js.map +0 -1
  51. package/dist/config.d.ts +0 -92
  52. package/dist/config.d.ts.map +0 -1
  53. package/dist/config.js +0 -422
  54. package/dist/config.js.map +0 -1
  55. package/dist/core/agent-session-runtime.d.ts +0 -117
  56. package/dist/core/agent-session-runtime.d.ts.map +0 -1
  57. package/dist/core/agent-session-runtime.js +0 -299
  58. package/dist/core/agent-session-runtime.js.map +0 -1
  59. package/dist/core/agent-session-services.d.ts +0 -86
  60. package/dist/core/agent-session-services.d.ts.map +0 -1
  61. package/dist/core/agent-session-services.js +0 -117
  62. package/dist/core/agent-session-services.js.map +0 -1
  63. package/dist/core/agent-session.d.ts +0 -605
  64. package/dist/core/agent-session.d.ts.map +0 -1
  65. package/dist/core/agent-session.js +0 -2519
  66. package/dist/core/agent-session.js.map +0 -1
  67. package/dist/core/auth-guidance.d.ts +0 -5
  68. package/dist/core/auth-guidance.d.ts.map +0 -1
  69. package/dist/core/auth-guidance.js +0 -21
  70. package/dist/core/auth-guidance.js.map +0 -1
  71. package/dist/core/auth-storage.d.ts +0 -141
  72. package/dist/core/auth-storage.d.ts.map +0 -1
  73. package/dist/core/auth-storage.js +0 -441
  74. package/dist/core/auth-storage.js.map +0 -1
  75. package/dist/core/bash-executor.d.ts +0 -32
  76. package/dist/core/bash-executor.d.ts.map +0 -1
  77. package/dist/core/bash-executor.js +0 -111
  78. package/dist/core/bash-executor.js.map +0 -1
  79. package/dist/core/compaction/branch-summarization.d.ts +0 -88
  80. package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
  81. package/dist/core/compaction/branch-summarization.js +0 -243
  82. package/dist/core/compaction/branch-summarization.js.map +0 -1
  83. package/dist/core/compaction/compaction.d.ts +0 -121
  84. package/dist/core/compaction/compaction.d.ts.map +0 -1
  85. package/dist/core/compaction/compaction.js +0 -638
  86. package/dist/core/compaction/compaction.js.map +0 -1
  87. package/dist/core/compaction/index.d.ts +0 -7
  88. package/dist/core/compaction/index.d.ts.map +0 -1
  89. package/dist/core/compaction/index.js +0 -7
  90. package/dist/core/compaction/index.js.map +0 -1
  91. package/dist/core/compaction/utils.d.ts +0 -38
  92. package/dist/core/compaction/utils.d.ts.map +0 -1
  93. package/dist/core/compaction/utils.js +0 -153
  94. package/dist/core/compaction/utils.js.map +0 -1
  95. package/dist/core/defaults.d.ts +0 -3
  96. package/dist/core/defaults.d.ts.map +0 -1
  97. package/dist/core/defaults.js +0 -2
  98. package/dist/core/defaults.js.map +0 -1
  99. package/dist/core/diagnostics.d.ts +0 -15
  100. package/dist/core/diagnostics.d.ts.map +0 -1
  101. package/dist/core/diagnostics.js +0 -2
  102. package/dist/core/diagnostics.js.map +0 -1
  103. package/dist/core/event-bus.d.ts +0 -9
  104. package/dist/core/event-bus.d.ts.map +0 -1
  105. package/dist/core/event-bus.js +0 -25
  106. package/dist/core/event-bus.js.map +0 -1
  107. package/dist/core/exec.d.ts +0 -29
  108. package/dist/core/exec.d.ts.map +0 -1
  109. package/dist/core/exec.js +0 -75
  110. package/dist/core/exec.js.map +0 -1
  111. package/dist/core/export-html/ansi-to-html.d.ts +0 -22
  112. package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
  113. package/dist/core/export-html/ansi-to-html.js +0 -249
  114. package/dist/core/export-html/ansi-to-html.js.map +0 -1
  115. package/dist/core/export-html/index.d.ts +0 -37
  116. package/dist/core/export-html/index.d.ts.map +0 -1
  117. package/dist/core/export-html/index.js +0 -224
  118. package/dist/core/export-html/index.js.map +0 -1
  119. package/dist/core/export-html/template.css +0 -1066
  120. package/dist/core/export-html/template.html +0 -55
  121. package/dist/core/export-html/template.js +0 -1848
  122. package/dist/core/export-html/tool-renderer.d.ts +0 -34
  123. package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
  124. package/dist/core/export-html/tool-renderer.js +0 -108
  125. package/dist/core/export-html/tool-renderer.js.map +0 -1
  126. package/dist/core/export-html/vendor/highlight.min.js +0 -1213
  127. package/dist/core/export-html/vendor/marked.min.js +0 -6
  128. package/dist/core/extensions/index.d.ts +0 -12
  129. package/dist/core/extensions/index.d.ts.map +0 -1
  130. package/dist/core/extensions/index.js +0 -9
  131. package/dist/core/extensions/index.js.map +0 -1
  132. package/dist/core/extensions/loader.d.ts +0 -24
  133. package/dist/core/extensions/loader.d.ts.map +0 -1
  134. package/dist/core/extensions/loader.js +0 -508
  135. package/dist/core/extensions/loader.js.map +0 -1
  136. package/dist/core/extensions/runner.d.ts +0 -159
  137. package/dist/core/extensions/runner.d.ts.map +0 -1
  138. package/dist/core/extensions/runner.js +0 -826
  139. package/dist/core/extensions/runner.js.map +0 -1
  140. package/dist/core/extensions/types.d.ts +0 -1181
  141. package/dist/core/extensions/types.d.ts.map +0 -1
  142. package/dist/core/extensions/types.js +0 -45
  143. package/dist/core/extensions/types.js.map +0 -1
  144. package/dist/core/extensions/wrapper.d.ts +0 -20
  145. package/dist/core/extensions/wrapper.d.ts.map +0 -1
  146. package/dist/core/extensions/wrapper.js +0 -22
  147. package/dist/core/extensions/wrapper.js.map +0 -1
  148. package/dist/core/footer-data-provider.d.ts +0 -52
  149. package/dist/core/footer-data-provider.d.ts.map +0 -1
  150. package/dist/core/footer-data-provider.js +0 -310
  151. package/dist/core/footer-data-provider.js.map +0 -1
  152. package/dist/core/http-dispatcher.d.ts +0 -21
  153. package/dist/core/http-dispatcher.d.ts.map +0 -1
  154. package/dist/core/http-dispatcher.js +0 -48
  155. package/dist/core/http-dispatcher.js.map +0 -1
  156. package/dist/core/index.d.ts +0 -12
  157. package/dist/core/index.d.ts.map +0 -1
  158. package/dist/core/index.js +0 -12
  159. package/dist/core/index.js.map +0 -1
  160. package/dist/core/keybindings.d.ts +0 -353
  161. package/dist/core/keybindings.d.ts.map +0 -1
  162. package/dist/core/keybindings.js +0 -295
  163. package/dist/core/keybindings.js.map +0 -1
  164. package/dist/core/messages.d.ts +0 -77
  165. package/dist/core/messages.d.ts.map +0 -1
  166. package/dist/core/messages.js +0 -123
  167. package/dist/core/messages.js.map +0 -1
  168. package/dist/core/model-registry.d.ts +0 -150
  169. package/dist/core/model-registry.d.ts.map +0 -1
  170. package/dist/core/model-registry.js +0 -728
  171. package/dist/core/model-registry.js.map +0 -1
  172. package/dist/core/model-resolver.d.ts +0 -110
  173. package/dist/core/model-resolver.d.ts.map +0 -1
  174. package/dist/core/model-resolver.js +0 -495
  175. package/dist/core/model-resolver.js.map +0 -1
  176. package/dist/core/output-guard.d.ts +0 -6
  177. package/dist/core/output-guard.d.ts.map +0 -1
  178. package/dist/core/output-guard.js +0 -59
  179. package/dist/core/output-guard.js.map +0 -1
  180. package/dist/core/package-manager.d.ts +0 -203
  181. package/dist/core/package-manager.d.ts.map +0 -1
  182. package/dist/core/package-manager.js +0 -2013
  183. package/dist/core/package-manager.js.map +0 -1
  184. package/dist/core/prompt-templates.d.ts +0 -52
  185. package/dist/core/prompt-templates.d.ts.map +0 -1
  186. package/dist/core/prompt-templates.js +0 -252
  187. package/dist/core/prompt-templates.js.map +0 -1
  188. package/dist/core/provider-display-names.d.ts +0 -2
  189. package/dist/core/provider-display-names.d.ts.map +0 -1
  190. package/dist/core/provider-display-names.js +0 -33
  191. package/dist/core/provider-display-names.js.map +0 -1
  192. package/dist/core/resolve-config-value.d.ts +0 -23
  193. package/dist/core/resolve-config-value.d.ts.map +0 -1
  194. package/dist/core/resolve-config-value.js +0 -126
  195. package/dist/core/resolve-config-value.js.map +0 -1
  196. package/dist/core/resource-loader.d.ts +0 -197
  197. package/dist/core/resource-loader.d.ts.map +0 -1
  198. package/dist/core/resource-loader.js +0 -757
  199. package/dist/core/resource-loader.js.map +0 -1
  200. package/dist/core/sdk.d.ts +0 -107
  201. package/dist/core/sdk.d.ts.map +0 -1
  202. package/dist/core/sdk.js +0 -282
  203. package/dist/core/sdk.js.map +0 -1
  204. package/dist/core/session-cwd.d.ts +0 -19
  205. package/dist/core/session-cwd.d.ts.map +0 -1
  206. package/dist/core/session-cwd.js +0 -38
  207. package/dist/core/session-cwd.js.map +0 -1
  208. package/dist/core/session-manager.d.ts +0 -363
  209. package/dist/core/session-manager.d.ts.map +0 -1
  210. package/dist/core/session-manager.js +0 -1318
  211. package/dist/core/session-manager.js.map +0 -1
  212. package/dist/core/settings-manager.d.ts +0 -264
  213. package/dist/core/settings-manager.d.ts.map +0 -1
  214. package/dist/core/settings-manager.js +0 -802
  215. package/dist/core/settings-manager.js.map +0 -1
  216. package/dist/core/skills.d.ts +0 -60
  217. package/dist/core/skills.d.ts.map +0 -1
  218. package/dist/core/skills.js +0 -401
  219. package/dist/core/skills.js.map +0 -1
  220. package/dist/core/slash-commands.d.ts +0 -14
  221. package/dist/core/slash-commands.d.ts.map +0 -1
  222. package/dist/core/slash-commands.js +0 -28
  223. package/dist/core/slash-commands.js.map +0 -1
  224. package/dist/core/source-info.d.ts +0 -18
  225. package/dist/core/source-info.d.ts.map +0 -1
  226. package/dist/core/source-info.js +0 -19
  227. package/dist/core/source-info.js.map +0 -1
  228. package/dist/core/system-prompt.d.ts +0 -30
  229. package/dist/core/system-prompt.d.ts.map +0 -1
  230. package/dist/core/system-prompt.js +0 -132
  231. package/dist/core/system-prompt.js.map +0 -1
  232. package/dist/core/telemetry.d.ts +0 -3
  233. package/dist/core/telemetry.d.ts.map +0 -1
  234. package/dist/core/telemetry.js +0 -9
  235. package/dist/core/telemetry.js.map +0 -1
  236. package/dist/core/timings.d.ts +0 -8
  237. package/dist/core/timings.d.ts.map +0 -1
  238. package/dist/core/timings.js +0 -31
  239. package/dist/core/timings.js.map +0 -1
  240. package/dist/core/tools/bash.d.ts +0 -68
  241. package/dist/core/tools/bash.d.ts.map +0 -1
  242. package/dist/core/tools/bash.js +0 -336
  243. package/dist/core/tools/bash.js.map +0 -1
  244. package/dist/core/tools/edit-diff.d.ts +0 -85
  245. package/dist/core/tools/edit-diff.d.ts.map +0 -1
  246. package/dist/core/tools/edit-diff.js +0 -338
  247. package/dist/core/tools/edit-diff.js.map +0 -1
  248. package/dist/core/tools/edit.d.ts +0 -49
  249. package/dist/core/tools/edit.d.ts.map +0 -1
  250. package/dist/core/tools/edit.js +0 -324
  251. package/dist/core/tools/edit.js.map +0 -1
  252. package/dist/core/tools/file-mutation-queue.d.ts +0 -6
  253. package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
  254. package/dist/core/tools/file-mutation-queue.js +0 -37
  255. package/dist/core/tools/file-mutation-queue.js.map +0 -1
  256. package/dist/core/tools/find.d.ts +0 -35
  257. package/dist/core/tools/find.d.ts.map +0 -1
  258. package/dist/core/tools/find.js +0 -298
  259. package/dist/core/tools/find.js.map +0 -1
  260. package/dist/core/tools/grep.d.ts +0 -37
  261. package/dist/core/tools/grep.d.ts.map +0 -1
  262. package/dist/core/tools/grep.js +0 -304
  263. package/dist/core/tools/grep.js.map +0 -1
  264. package/dist/core/tools/index.d.ts +0 -40
  265. package/dist/core/tools/index.d.ts.map +0 -1
  266. package/dist/core/tools/index.js +0 -112
  267. package/dist/core/tools/index.js.map +0 -1
  268. package/dist/core/tools/ls.d.ts +0 -37
  269. package/dist/core/tools/ls.d.ts.map +0 -1
  270. package/dist/core/tools/ls.js +0 -169
  271. package/dist/core/tools/ls.js.map +0 -1
  272. package/dist/core/tools/output-accumulator.d.ts +0 -50
  273. package/dist/core/tools/output-accumulator.d.ts.map +0 -1
  274. package/dist/core/tools/output-accumulator.js +0 -178
  275. package/dist/core/tools/output-accumulator.js.map +0 -1
  276. package/dist/core/tools/path-utils.d.ts +0 -8
  277. package/dist/core/tools/path-utils.d.ts.map +0 -1
  278. package/dist/core/tools/path-utils.js +0 -81
  279. package/dist/core/tools/path-utils.js.map +0 -1
  280. package/dist/core/tools/read.d.ts +0 -35
  281. package/dist/core/tools/read.d.ts.map +0 -1
  282. package/dist/core/tools/read.js +0 -291
  283. package/dist/core/tools/read.js.map +0 -1
  284. package/dist/core/tools/render-utils.d.ts +0 -21
  285. package/dist/core/tools/render-utils.d.ts.map +0 -1
  286. package/dist/core/tools/render-utils.js +0 -49
  287. package/dist/core/tools/render-utils.js.map +0 -1
  288. package/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  289. package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
  290. package/dist/core/tools/tool-definition-wrapper.js +0 -34
  291. package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
  292. package/dist/core/tools/truncate.d.ts +0 -70
  293. package/dist/core/tools/truncate.d.ts.map +0 -1
  294. package/dist/core/tools/truncate.js +0 -205
  295. package/dist/core/tools/truncate.js.map +0 -1
  296. package/dist/core/tools/write.d.ts +0 -26
  297. package/dist/core/tools/write.d.ts.map +0 -1
  298. package/dist/core/tools/write.js +0 -213
  299. package/dist/core/tools/write.js.map +0 -1
  300. package/dist/index.d.ts +0 -29
  301. package/dist/index.d.ts.map +0 -1
  302. package/dist/index.js +0 -42
  303. package/dist/index.js.map +0 -1
  304. package/dist/main.d.ts +0 -12
  305. package/dist/main.d.ts.map +0 -1
  306. package/dist/main.js +0 -587
  307. package/dist/main.js.map +0 -1
  308. package/dist/migrations.d.ts +0 -33
  309. package/dist/migrations.d.ts.map +0 -1
  310. package/dist/migrations.js +0 -281
  311. package/dist/migrations.js.map +0 -1
  312. package/dist/modes/index.d.ts +0 -10
  313. package/dist/modes/index.d.ts.map +0 -1
  314. package/dist/modes/index.js +0 -9
  315. package/dist/modes/index.js.map +0 -1
  316. package/dist/modes/interactive/assets/clankolas.png +0 -0
  317. package/dist/modes/interactive/components/armin.d.ts +0 -34
  318. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  319. package/dist/modes/interactive/components/armin.js +0 -333
  320. package/dist/modes/interactive/components/armin.js.map +0 -1
  321. package/dist/modes/interactive/components/assistant-message.d.ts +0 -20
  322. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  323. package/dist/modes/interactive/components/assistant-message.js +0 -121
  324. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  325. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  326. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  327. package/dist/modes/interactive/components/bash-execution.js +0 -175
  328. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  329. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  330. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  331. package/dist/modes/interactive/components/bordered-loader.js +0 -54
  332. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  333. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  334. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  335. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  336. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  337. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  338. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  339. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  340. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  341. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  342. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  343. package/dist/modes/interactive/components/config-selector.js +0 -506
  344. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  345. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  346. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  347. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  348. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  349. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  350. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  351. package/dist/modes/interactive/components/custom-editor.js +0 -70
  352. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  353. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  354. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  355. package/dist/modes/interactive/components/custom-message.js +0 -79
  356. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  357. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  358. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  359. package/dist/modes/interactive/components/daxnuts.js +0 -140
  360. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  361. package/dist/modes/interactive/components/diff.d.ts +0 -12
  362. package/dist/modes/interactive/components/diff.d.ts.map +0 -1
  363. package/dist/modes/interactive/components/diff.js +0 -133
  364. package/dist/modes/interactive/components/diff.js.map +0 -1
  365. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  366. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  367. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  368. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  369. package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  370. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
  371. package/dist/modes/interactive/components/earendil-announcement.js +0 -40
  372. package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
  373. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  374. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  375. package/dist/modes/interactive/components/extension-editor.js +0 -119
  376. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  377. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  378. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  379. package/dist/modes/interactive/components/extension-input.js +0 -61
  380. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  381. package/dist/modes/interactive/components/extension-selector.d.ts +0 -26
  382. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  383. package/dist/modes/interactive/components/extension-selector.js +0 -83
  384. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  385. package/dist/modes/interactive/components/footer.d.ts +0 -27
  386. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  387. package/dist/modes/interactive/components/footer.js +0 -201
  388. package/dist/modes/interactive/components/footer.js.map +0 -1
  389. package/dist/modes/interactive/components/index.d.ts +0 -32
  390. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  391. package/dist/modes/interactive/components/index.js +0 -33
  392. package/dist/modes/interactive/components/index.js.map +0 -1
  393. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -13
  394. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  395. package/dist/modes/interactive/components/keybinding-hints.js +0 -36
  396. package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  397. package/dist/modes/interactive/components/login-dialog.d.ts +0 -46
  398. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  399. package/dist/modes/interactive/components/login-dialog.js +0 -160
  400. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  401. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  402. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  403. package/dist/modes/interactive/components/model-selector.js +0 -278
  404. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  405. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -31
  406. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  407. package/dist/modes/interactive/components/oauth-selector.js +0 -165
  408. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  409. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  410. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  411. package/dist/modes/interactive/components/scoped-models-selector.js +0 -290
  412. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  413. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  414. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  415. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  416. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  417. package/dist/modes/interactive/components/session-selector.d.ts +0 -96
  418. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  419. package/dist/modes/interactive/components/session-selector.js +0 -861
  420. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  421. package/dist/modes/interactive/components/settings-selector.d.ts +0 -69
  422. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  423. package/dist/modes/interactive/components/settings-selector.js +0 -390
  424. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  425. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  426. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  427. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  428. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  429. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  430. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  431. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  432. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  433. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  434. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  435. package/dist/modes/interactive/components/theme-selector.js +0 -50
  436. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  437. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  438. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  439. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  440. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  441. package/dist/modes/interactive/components/tool-execution.d.ts +0 -63
  442. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  443. package/dist/modes/interactive/components/tool-execution.js +0 -295
  444. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  445. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  446. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  447. package/dist/modes/interactive/components/tree-selector.js +0 -1093
  448. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  449. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  450. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  451. package/dist/modes/interactive/components/user-message-selector.js +0 -114
  452. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  453. package/dist/modes/interactive/components/user-message.d.ts +0 -10
  454. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  455. package/dist/modes/interactive/components/user-message.js +0 -29
  456. package/dist/modes/interactive/components/user-message.js.map +0 -1
  457. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  458. package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  459. package/dist/modes/interactive/components/visual-truncate.js +0 -33
  460. package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  461. package/dist/modes/interactive/interactive-mode.d.ts +0 -373
  462. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  463. package/dist/modes/interactive/interactive-mode.js +0 -4750
  464. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  465. package/dist/modes/interactive/theme/dark.json +0 -86
  466. package/dist/modes/interactive/theme/light.json +0 -85
  467. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  468. package/dist/modes/interactive/theme/theme.d.ts +0 -100
  469. package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
  470. package/dist/modes/interactive/theme/theme.js +0 -1015
  471. package/dist/modes/interactive/theme/theme.js.map +0 -1
  472. package/dist/modes/print-mode.d.ts +0 -28
  473. package/dist/modes/print-mode.d.ts.map +0 -1
  474. package/dist/modes/print-mode.js +0 -131
  475. package/dist/modes/print-mode.js.map +0 -1
  476. package/dist/modes/rpc/jsonl.d.ts +0 -17
  477. package/dist/modes/rpc/jsonl.d.ts.map +0 -1
  478. package/dist/modes/rpc/jsonl.js +0 -49
  479. package/dist/modes/rpc/jsonl.js.map +0 -1
  480. package/dist/modes/rpc/rpc-client.d.ts +0 -228
  481. package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  482. package/dist/modes/rpc/rpc-client.js +0 -416
  483. package/dist/modes/rpc/rpc-client.js.map +0 -1
  484. package/dist/modes/rpc/rpc-mode.d.ts +0 -20
  485. package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  486. package/dist/modes/rpc/rpc-mode.js +0 -609
  487. package/dist/modes/rpc/rpc-mode.js.map +0 -1
  488. package/dist/modes/rpc/rpc-types.d.ts +0 -428
  489. package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  490. package/dist/modes/rpc/rpc-types.js +0 -8
  491. package/dist/modes/rpc/rpc-types.js.map +0 -1
  492. package/dist/modes/web/web-mode.d.ts +0 -3
  493. package/dist/modes/web/web-mode.d.ts.map +0 -1
  494. package/dist/modes/web/web-mode.js +0 -243
  495. package/dist/modes/web/web-mode.js.map +0 -1
  496. package/dist/package-manager-cli.d.ts +0 -4
  497. package/dist/package-manager-cli.d.ts.map +0 -1
  498. package/dist/package-manager-cli.js +0 -515
  499. package/dist/package-manager-cli.js.map +0 -1
  500. package/dist/utils/ansi.d.ts +0 -2
  501. package/dist/utils/ansi.d.ts.map +0 -1
  502. package/dist/utils/ansi.js +0 -52
  503. package/dist/utils/ansi.js.map +0 -1
  504. package/dist/utils/changelog.d.ts +0 -21
  505. package/dist/utils/changelog.d.ts.map +0 -1
  506. package/dist/utils/changelog.js +0 -87
  507. package/dist/utils/changelog.js.map +0 -1
  508. package/dist/utils/child-process.d.ts +0 -15
  509. package/dist/utils/child-process.d.ts.map +0 -1
  510. package/dist/utils/child-process.js +0 -88
  511. package/dist/utils/child-process.js.map +0 -1
  512. package/dist/utils/clipboard-image.d.ts +0 -11
  513. package/dist/utils/clipboard-image.d.ts.map +0 -1
  514. package/dist/utils/clipboard-image.js +0 -245
  515. package/dist/utils/clipboard-image.js.map +0 -1
  516. package/dist/utils/clipboard-native.d.ts +0 -8
  517. package/dist/utils/clipboard-native.d.ts.map +0 -1
  518. package/dist/utils/clipboard-native.js +0 -14
  519. package/dist/utils/clipboard-native.js.map +0 -1
  520. package/dist/utils/clipboard.d.ts +0 -2
  521. package/dist/utils/clipboard.d.ts.map +0 -1
  522. package/dist/utils/clipboard.js +0 -117
  523. package/dist/utils/clipboard.js.map +0 -1
  524. package/dist/utils/exif-orientation.d.ts +0 -5
  525. package/dist/utils/exif-orientation.d.ts.map +0 -1
  526. package/dist/utils/exif-orientation.js +0 -158
  527. package/dist/utils/exif-orientation.js.map +0 -1
  528. package/dist/utils/frontmatter.d.ts +0 -8
  529. package/dist/utils/frontmatter.d.ts.map +0 -1
  530. package/dist/utils/frontmatter.js +0 -26
  531. package/dist/utils/frontmatter.js.map +0 -1
  532. package/dist/utils/fs-watch.d.ts +0 -5
  533. package/dist/utils/fs-watch.d.ts.map +0 -1
  534. package/dist/utils/fs-watch.js +0 -25
  535. package/dist/utils/fs-watch.js.map +0 -1
  536. package/dist/utils/git.d.ts +0 -26
  537. package/dist/utils/git.d.ts.map +0 -1
  538. package/dist/utils/git.js +0 -163
  539. package/dist/utils/git.js.map +0 -1
  540. package/dist/utils/html.d.ts +0 -7
  541. package/dist/utils/html.d.ts.map +0 -1
  542. package/dist/utils/html.js +0 -40
  543. package/dist/utils/html.js.map +0 -1
  544. package/dist/utils/image-convert.d.ts +0 -9
  545. package/dist/utils/image-convert.d.ts.map +0 -1
  546. package/dist/utils/image-convert.js +0 -39
  547. package/dist/utils/image-convert.js.map +0 -1
  548. package/dist/utils/image-resize.d.ts +0 -36
  549. package/dist/utils/image-resize.d.ts.map +0 -1
  550. package/dist/utils/image-resize.js +0 -137
  551. package/dist/utils/image-resize.js.map +0 -1
  552. package/dist/utils/mime.d.ts +0 -3
  553. package/dist/utils/mime.d.ts.map +0 -1
  554. package/dist/utils/mime.js +0 -69
  555. package/dist/utils/mime.js.map +0 -1
  556. package/dist/utils/paths.d.ts +0 -17
  557. package/dist/utils/paths.d.ts.map +0 -1
  558. package/dist/utils/paths.js +0 -66
  559. package/dist/utils/paths.js.map +0 -1
  560. package/dist/utils/photon.d.ts +0 -21
  561. package/dist/utils/photon.d.ts.map +0 -1
  562. package/dist/utils/photon.js +0 -121
  563. package/dist/utils/photon.js.map +0 -1
  564. package/dist/utils/pi-user-agent.d.ts +0 -2
  565. package/dist/utils/pi-user-agent.d.ts.map +0 -1
  566. package/dist/utils/pi-user-agent.js +0 -5
  567. package/dist/utils/pi-user-agent.js.map +0 -1
  568. package/dist/utils/shell.d.ts +0 -30
  569. package/dist/utils/shell.d.ts.map +0 -1
  570. package/dist/utils/shell.js +0 -195
  571. package/dist/utils/shell.js.map +0 -1
  572. package/dist/utils/sleep.d.ts +0 -5
  573. package/dist/utils/sleep.d.ts.map +0 -1
  574. package/dist/utils/sleep.js +0 -17
  575. package/dist/utils/sleep.js.map +0 -1
  576. package/dist/utils/syntax-highlight.d.ts +0 -12
  577. package/dist/utils/syntax-highlight.d.ts.map +0 -1
  578. package/dist/utils/syntax-highlight.js +0 -118
  579. package/dist/utils/syntax-highlight.js.map +0 -1
  580. package/dist/utils/tools-manager.d.ts +0 -3
  581. package/dist/utils/tools-manager.d.ts.map +0 -1
  582. package/dist/utils/tools-manager.js +0 -328
  583. package/dist/utils/tools-manager.js.map +0 -1
  584. package/dist/utils/version-check.d.ts +0 -15
  585. package/dist/utils/version-check.d.ts.map +0 -1
  586. package/dist/utils/version-check.js +0 -82
  587. package/dist/utils/version-check.js.map +0 -1
  588. package/dist/utils/windows-self-update.d.ts +0 -3
  589. package/dist/utils/windows-self-update.d.ts.map +0 -1
  590. package/dist/utils/windows-self-update.js +0 -77
  591. package/dist/utils/windows-self-update.js.map +0 -1
@@ -1,826 +0,0 @@
1
- /**
2
- * Extension runner - executes extensions and manages their lifecycle.
3
- */
4
- import { theme } from "../../modes/interactive/theme/theme.js";
5
- // Extension shortcuts compete with canonical keybinding ids from keybindings.json.
6
- // Only editor-global shortcuts are reserved here. Picker-specific bindings are not.
7
- const RESERVED_KEYBINDINGS_FOR_EXTENSION_CONFLICTS = [
8
- "app.interrupt",
9
- "app.clear",
10
- "app.exit",
11
- "app.suspend",
12
- "app.thinking.cycle",
13
- "app.model.cycleForward",
14
- "app.model.cycleBackward",
15
- "app.model.select",
16
- "app.tools.expand",
17
- "app.thinking.toggle",
18
- "app.editor.external",
19
- "app.message.followUp",
20
- "tui.input.submit",
21
- "tui.select.confirm",
22
- "tui.select.cancel",
23
- "tui.input.copy",
24
- "tui.editor.deleteToLineEnd",
25
- ];
26
- const buildBuiltinKeybindings = (resolvedKeybindings) => {
27
- const builtinKeybindings = {};
28
- for (const [keybinding, keys] of Object.entries(resolvedKeybindings)) {
29
- if (keys === undefined)
30
- continue;
31
- const keyList = Array.isArray(keys) ? keys : [keys];
32
- const restrictOverride = RESERVED_KEYBINDINGS_FOR_EXTENSION_CONFLICTS.includes(keybinding);
33
- for (const key of keyList) {
34
- const normalizedKey = key.toLowerCase();
35
- // If multiple actions bind the same key, the reserved action wins so extensions
36
- // remain blocked by reserved shortcuts regardless of iteration order.
37
- const existing = builtinKeybindings[normalizedKey];
38
- if (existing?.restrictOverride && !restrictOverride)
39
- continue;
40
- builtinKeybindings[normalizedKey] = {
41
- keybinding,
42
- restrictOverride,
43
- };
44
- }
45
- }
46
- return builtinKeybindings;
47
- };
48
- /**
49
- * Helper function to emit session_shutdown event to extensions.
50
- * Returns true if the event was emitted, false if there were no handlers.
51
- */
52
- export async function emitSessionShutdownEvent(extensionRunner, event) {
53
- if (extensionRunner.hasHandlers("session_shutdown")) {
54
- await extensionRunner.emit(event);
55
- return true;
56
- }
57
- return false;
58
- }
59
- const noOpUIContext = {
60
- select: async () => undefined,
61
- confirm: async () => false,
62
- input: async () => undefined,
63
- notify: () => { },
64
- onTerminalInput: () => () => { },
65
- setStatus: () => { },
66
- setWorkingMessage: () => { },
67
- setWorkingVisible: () => { },
68
- setWorkingIndicator: () => { },
69
- setHiddenThinkingLabel: () => { },
70
- setWidget: () => { },
71
- setFooter: () => { },
72
- setHeader: () => { },
73
- setTitle: () => { },
74
- custom: async () => undefined,
75
- pasteToEditor: () => { },
76
- setEditorText: () => { },
77
- getEditorText: () => "",
78
- editor: async () => undefined,
79
- addAutocompleteProvider: () => { },
80
- setEditorComponent: () => { },
81
- getEditorComponent: () => undefined,
82
- get theme() {
83
- return theme;
84
- },
85
- getAllThemes: () => [],
86
- getTheme: () => undefined,
87
- setTheme: (_theme) => ({ success: false, error: "UI not available" }),
88
- getToolsExpanded: () => false,
89
- setToolsExpanded: () => { },
90
- };
91
- export class ExtensionRunner {
92
- extensions;
93
- runtime;
94
- uiContext;
95
- cwd;
96
- sessionManager;
97
- modelRegistry;
98
- errorListeners = new Set();
99
- getModel = () => undefined;
100
- isIdleFn = () => true;
101
- getSignalFn = () => undefined;
102
- waitForIdleFn = async () => { };
103
- abortFn = () => { };
104
- hasPendingMessagesFn = () => false;
105
- getContextUsageFn = () => undefined;
106
- compactFn = () => { };
107
- getSystemPromptFn = () => "";
108
- newSessionHandler = async () => ({ cancelled: false });
109
- forkHandler = async () => ({ cancelled: false });
110
- navigateTreeHandler = async () => ({ cancelled: false });
111
- switchSessionHandler = async () => ({ cancelled: false });
112
- reloadHandler = async () => { };
113
- shutdownHandler = () => { };
114
- shortcutDiagnostics = [];
115
- commandDiagnostics = [];
116
- staleMessage;
117
- constructor(extensions, runtime, cwd, sessionManager, modelRegistry) {
118
- this.extensions = extensions;
119
- this.runtime = runtime;
120
- this.uiContext = noOpUIContext;
121
- this.cwd = cwd;
122
- this.sessionManager = sessionManager;
123
- this.modelRegistry = modelRegistry;
124
- }
125
- bindCore(actions, contextActions, providerActions) {
126
- // Copy actions into the shared runtime (all extension APIs reference this)
127
- this.runtime.sendMessage = actions.sendMessage;
128
- this.runtime.sendUserMessage = actions.sendUserMessage;
129
- this.runtime.appendEntry = actions.appendEntry;
130
- this.runtime.setSessionName = actions.setSessionName;
131
- this.runtime.getSessionName = actions.getSessionName;
132
- this.runtime.setSessionGoal = actions.setSessionGoal;
133
- this.runtime.getSessionGoal = actions.getSessionGoal;
134
- this.runtime.setLabel = actions.setLabel;
135
- this.runtime.getActiveTools = actions.getActiveTools;
136
- this.runtime.getAllTools = actions.getAllTools;
137
- this.runtime.setActiveTools = actions.setActiveTools;
138
- this.runtime.refreshTools = actions.refreshTools;
139
- this.runtime.getCommands = actions.getCommands;
140
- this.runtime.setModel = actions.setModel;
141
- this.runtime.getThinkingLevel = actions.getThinkingLevel;
142
- this.runtime.setThinkingLevel = actions.setThinkingLevel;
143
- // Context actions (required)
144
- this.getModel = contextActions.getModel;
145
- this.isIdleFn = contextActions.isIdle;
146
- this.getSignalFn = contextActions.getSignal;
147
- this.abortFn = contextActions.abort;
148
- this.hasPendingMessagesFn = contextActions.hasPendingMessages;
149
- this.shutdownHandler = contextActions.shutdown;
150
- this.getContextUsageFn = contextActions.getContextUsage;
151
- this.compactFn = contextActions.compact;
152
- this.getSystemPromptFn = contextActions.getSystemPrompt;
153
- // Flush provider registrations queued during extension loading
154
- for (const { name, config, extensionPath } of this.runtime.pendingProviderRegistrations) {
155
- try {
156
- if (providerActions?.registerProvider) {
157
- providerActions.registerProvider(name, config);
158
- }
159
- else {
160
- this.modelRegistry.registerProvider(name, config);
161
- }
162
- }
163
- catch (err) {
164
- this.emitError({
165
- extensionPath,
166
- event: "register_provider",
167
- error: err instanceof Error ? err.message : String(err),
168
- stack: err instanceof Error ? err.stack : undefined,
169
- });
170
- }
171
- }
172
- this.runtime.pendingProviderRegistrations = [];
173
- // From this point on, provider registration/unregistration takes effect immediately
174
- // without requiring a /reload.
175
- this.runtime.registerProvider = (name, config) => {
176
- if (providerActions?.registerProvider) {
177
- providerActions.registerProvider(name, config);
178
- return;
179
- }
180
- this.modelRegistry.registerProvider(name, config);
181
- };
182
- this.runtime.unregisterProvider = (name) => {
183
- if (providerActions?.unregisterProvider) {
184
- providerActions.unregisterProvider(name);
185
- return;
186
- }
187
- this.modelRegistry.unregisterProvider(name);
188
- };
189
- }
190
- bindCommandContext(actions) {
191
- if (actions) {
192
- this.waitForIdleFn = actions.waitForIdle;
193
- this.newSessionHandler = actions.newSession;
194
- this.forkHandler = actions.fork;
195
- this.navigateTreeHandler = actions.navigateTree;
196
- this.switchSessionHandler = actions.switchSession;
197
- this.reloadHandler = actions.reload;
198
- return;
199
- }
200
- this.waitForIdleFn = async () => { };
201
- this.newSessionHandler = async () => ({ cancelled: false });
202
- this.forkHandler = async () => ({ cancelled: false });
203
- this.navigateTreeHandler = async () => ({ cancelled: false });
204
- this.switchSessionHandler = async () => ({ cancelled: false });
205
- this.reloadHandler = async () => { };
206
- }
207
- setUIContext(uiContext) {
208
- this.uiContext = uiContext ?? noOpUIContext;
209
- }
210
- getUIContext() {
211
- return this.uiContext;
212
- }
213
- hasUI() {
214
- return this.uiContext !== noOpUIContext;
215
- }
216
- getExtensionPaths() {
217
- return this.extensions.map((e) => e.path);
218
- }
219
- /** Get all registered tools from all extensions (first registration per name wins). */
220
- getAllRegisteredTools() {
221
- const toolsByName = new Map();
222
- for (const ext of this.extensions) {
223
- for (const tool of ext.tools.values()) {
224
- if (!toolsByName.has(tool.definition.name)) {
225
- toolsByName.set(tool.definition.name, tool);
226
- }
227
- }
228
- }
229
- return Array.from(toolsByName.values());
230
- }
231
- /** Get a tool definition by name. Returns undefined if not found. */
232
- getToolDefinition(toolName) {
233
- for (const ext of this.extensions) {
234
- const tool = ext.tools.get(toolName);
235
- if (tool) {
236
- return tool.definition;
237
- }
238
- }
239
- return undefined;
240
- }
241
- getFlags() {
242
- const allFlags = new Map();
243
- for (const ext of this.extensions) {
244
- for (const [name, flag] of ext.flags) {
245
- if (!allFlags.has(name)) {
246
- allFlags.set(name, flag);
247
- }
248
- }
249
- }
250
- return allFlags;
251
- }
252
- setFlagValue(name, value) {
253
- this.runtime.flagValues.set(name, value);
254
- }
255
- getFlagValues() {
256
- return new Map(this.runtime.flagValues);
257
- }
258
- getShortcuts(resolvedKeybindings) {
259
- this.shortcutDiagnostics = [];
260
- const builtinKeybindings = buildBuiltinKeybindings(resolvedKeybindings);
261
- const extensionShortcuts = new Map();
262
- const addDiagnostic = (message, extensionPath) => {
263
- this.shortcutDiagnostics.push({ type: "warning", message, path: extensionPath });
264
- if (!this.hasUI()) {
265
- console.warn(message);
266
- }
267
- };
268
- for (const ext of this.extensions) {
269
- for (const [key, shortcut] of ext.shortcuts) {
270
- const normalizedKey = key.toLowerCase();
271
- const builtInKeybinding = builtinKeybindings[normalizedKey];
272
- if (builtInKeybinding?.restrictOverride === true) {
273
- addDiagnostic(`Extension shortcut '${key}' from ${shortcut.extensionPath} conflicts with built-in shortcut. Skipping.`, shortcut.extensionPath);
274
- continue;
275
- }
276
- if (builtInKeybinding?.restrictOverride === false) {
277
- addDiagnostic(`Extension shortcut conflict: '${key}' is built-in shortcut for ${builtInKeybinding.keybinding} and ${shortcut.extensionPath}. Using ${shortcut.extensionPath}.`, shortcut.extensionPath);
278
- }
279
- const existingExtensionShortcut = extensionShortcuts.get(normalizedKey);
280
- if (existingExtensionShortcut) {
281
- addDiagnostic(`Extension shortcut conflict: '${key}' registered by both ${existingExtensionShortcut.extensionPath} and ${shortcut.extensionPath}. Using ${shortcut.extensionPath}.`, shortcut.extensionPath);
282
- }
283
- extensionShortcuts.set(normalizedKey, shortcut);
284
- }
285
- }
286
- return extensionShortcuts;
287
- }
288
- getShortcutDiagnostics() {
289
- return this.shortcutDiagnostics;
290
- }
291
- invalidate(message = "This extension ctx is stale after session replacement or reload. Do not use a captured pi or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().") {
292
- if (!this.staleMessage) {
293
- this.staleMessage = message;
294
- this.runtime.invalidate(message);
295
- }
296
- }
297
- assertActive() {
298
- if (this.staleMessage) {
299
- throw new Error(this.staleMessage);
300
- }
301
- }
302
- onError(listener) {
303
- this.errorListeners.add(listener);
304
- return () => this.errorListeners.delete(listener);
305
- }
306
- emitError(error) {
307
- for (const listener of this.errorListeners) {
308
- listener(error);
309
- }
310
- }
311
- hasHandlers(eventType) {
312
- for (const ext of this.extensions) {
313
- const handlers = ext.handlers.get(eventType);
314
- if (handlers && handlers.length > 0) {
315
- return true;
316
- }
317
- }
318
- return false;
319
- }
320
- getMessageRenderer(customType) {
321
- for (const ext of this.extensions) {
322
- const renderer = ext.messageRenderers.get(customType);
323
- if (renderer) {
324
- return renderer;
325
- }
326
- }
327
- return undefined;
328
- }
329
- resolveRegisteredCommands() {
330
- const commands = [];
331
- const counts = new Map();
332
- for (const ext of this.extensions) {
333
- for (const command of ext.commands.values()) {
334
- commands.push(command);
335
- counts.set(command.name, (counts.get(command.name) ?? 0) + 1);
336
- }
337
- }
338
- const seen = new Map();
339
- const takenInvocationNames = new Set();
340
- return commands.map((command) => {
341
- const occurrence = (seen.get(command.name) ?? 0) + 1;
342
- seen.set(command.name, occurrence);
343
- let invocationName = (counts.get(command.name) ?? 0) > 1 ? `${command.name}:${occurrence}` : command.name;
344
- if (takenInvocationNames.has(invocationName)) {
345
- let suffix = occurrence;
346
- do {
347
- suffix++;
348
- invocationName = `${command.name}:${suffix}`;
349
- } while (takenInvocationNames.has(invocationName));
350
- }
351
- takenInvocationNames.add(invocationName);
352
- return {
353
- ...command,
354
- invocationName,
355
- };
356
- });
357
- }
358
- getRegisteredCommands() {
359
- this.commandDiagnostics = [];
360
- return this.resolveRegisteredCommands();
361
- }
362
- getCommandDiagnostics() {
363
- return this.commandDiagnostics;
364
- }
365
- getCommand(name) {
366
- return this.resolveRegisteredCommands().find((command) => command.invocationName === name);
367
- }
368
- /**
369
- * Request a graceful shutdown. Called by extension tools and event handlers.
370
- * The actual shutdown behavior is provided by the mode via bindExtensions().
371
- */
372
- shutdown() {
373
- this.shutdownHandler();
374
- }
375
- /**
376
- * Create an ExtensionContext for use in event handlers and tool execution.
377
- * Context values are resolved at call time, so changes via bindCore/bindUI are reflected.
378
- */
379
- createContext() {
380
- const runner = this;
381
- const getModel = this.getModel;
382
- return {
383
- get ui() {
384
- runner.assertActive();
385
- return runner.uiContext;
386
- },
387
- get hasUI() {
388
- runner.assertActive();
389
- return runner.hasUI();
390
- },
391
- get cwd() {
392
- runner.assertActive();
393
- return runner.cwd;
394
- },
395
- get sessionManager() {
396
- runner.assertActive();
397
- return runner.sessionManager;
398
- },
399
- get modelRegistry() {
400
- runner.assertActive();
401
- return runner.modelRegistry;
402
- },
403
- get model() {
404
- runner.assertActive();
405
- return getModel();
406
- },
407
- isIdle: () => {
408
- runner.assertActive();
409
- return runner.isIdleFn();
410
- },
411
- get signal() {
412
- runner.assertActive();
413
- return runner.getSignalFn();
414
- },
415
- abort: () => {
416
- runner.assertActive();
417
- runner.abortFn();
418
- },
419
- hasPendingMessages: () => {
420
- runner.assertActive();
421
- return runner.hasPendingMessagesFn();
422
- },
423
- shutdown: () => {
424
- runner.assertActive();
425
- runner.shutdownHandler();
426
- },
427
- getContextUsage: () => {
428
- runner.assertActive();
429
- return runner.getContextUsageFn();
430
- },
431
- compact: (options) => {
432
- runner.assertActive();
433
- runner.compactFn(options);
434
- },
435
- getSystemPrompt: () => {
436
- runner.assertActive();
437
- return runner.getSystemPromptFn();
438
- },
439
- };
440
- }
441
- createCommandContext() {
442
- // Use property descriptors instead of object spread so the guarded getters from
443
- // createContext() stay lazy. A spread would eagerly read them once and freeze the
444
- // old values into the returned object, bypassing stale-instance checks.
445
- const context = Object.defineProperties({}, Object.getOwnPropertyDescriptors(this.createContext()));
446
- context.waitForIdle = () => {
447
- this.assertActive();
448
- return this.waitForIdleFn();
449
- };
450
- context.newSession = (options) => {
451
- this.assertActive();
452
- return this.newSessionHandler(options);
453
- };
454
- context.fork = (entryId, options) => {
455
- this.assertActive();
456
- return this.forkHandler(entryId, options);
457
- };
458
- context.navigateTree = (targetId, options) => {
459
- this.assertActive();
460
- return this.navigateTreeHandler(targetId, options);
461
- };
462
- context.switchSession = (sessionPath, options) => {
463
- this.assertActive();
464
- return this.switchSessionHandler(sessionPath, options);
465
- };
466
- context.reload = () => {
467
- this.assertActive();
468
- return this.reloadHandler();
469
- };
470
- return context;
471
- }
472
- isSessionBeforeEvent(event) {
473
- return (event.type === "session_before_switch" ||
474
- event.type === "session_before_fork" ||
475
- event.type === "session_before_compact" ||
476
- event.type === "session_before_tree");
477
- }
478
- async emit(event) {
479
- const ctx = this.createContext();
480
- let result;
481
- for (const ext of this.extensions) {
482
- const handlers = ext.handlers.get(event.type);
483
- if (!handlers || handlers.length === 0)
484
- continue;
485
- for (const handler of handlers) {
486
- try {
487
- const handlerResult = await handler(event, ctx);
488
- if (this.isSessionBeforeEvent(event) && handlerResult) {
489
- result = handlerResult;
490
- if (result.cancel) {
491
- return result;
492
- }
493
- }
494
- }
495
- catch (err) {
496
- const message = err instanceof Error ? err.message : String(err);
497
- const stack = err instanceof Error ? err.stack : undefined;
498
- this.emitError({
499
- extensionPath: ext.path,
500
- event: event.type,
501
- error: message,
502
- stack,
503
- });
504
- }
505
- }
506
- }
507
- return result;
508
- }
509
- async emitMessageEnd(event) {
510
- const ctx = this.createContext();
511
- let currentMessage = event.message;
512
- let modified = false;
513
- for (const ext of this.extensions) {
514
- const handlers = ext.handlers.get("message_end");
515
- if (!handlers || handlers.length === 0)
516
- continue;
517
- for (const handler of handlers) {
518
- try {
519
- const currentEvent = { ...event, message: currentMessage };
520
- const handlerResult = (await handler(currentEvent, ctx));
521
- if (!handlerResult?.message)
522
- continue;
523
- if (handlerResult.message.role !== currentMessage.role) {
524
- this.emitError({
525
- extensionPath: ext.path,
526
- event: "message_end",
527
- error: "message_end handlers must return a message with the same role",
528
- });
529
- continue;
530
- }
531
- currentMessage = handlerResult.message;
532
- modified = true;
533
- }
534
- catch (err) {
535
- const message = err instanceof Error ? err.message : String(err);
536
- const stack = err instanceof Error ? err.stack : undefined;
537
- this.emitError({
538
- extensionPath: ext.path,
539
- event: "message_end",
540
- error: message,
541
- stack,
542
- });
543
- }
544
- }
545
- }
546
- return modified ? currentMessage : undefined;
547
- }
548
- async emitToolResult(event) {
549
- const ctx = this.createContext();
550
- const currentEvent = { ...event };
551
- let modified = false;
552
- for (const ext of this.extensions) {
553
- const handlers = ext.handlers.get("tool_result");
554
- if (!handlers || handlers.length === 0)
555
- continue;
556
- for (const handler of handlers) {
557
- try {
558
- const handlerResult = (await handler(currentEvent, ctx));
559
- if (!handlerResult)
560
- continue;
561
- if (handlerResult.content !== undefined) {
562
- currentEvent.content = handlerResult.content;
563
- modified = true;
564
- }
565
- if (handlerResult.details !== undefined) {
566
- currentEvent.details = handlerResult.details;
567
- modified = true;
568
- }
569
- if (handlerResult.isError !== undefined) {
570
- currentEvent.isError = handlerResult.isError;
571
- modified = true;
572
- }
573
- }
574
- catch (err) {
575
- const message = err instanceof Error ? err.message : String(err);
576
- const stack = err instanceof Error ? err.stack : undefined;
577
- this.emitError({
578
- extensionPath: ext.path,
579
- event: "tool_result",
580
- error: message,
581
- stack,
582
- });
583
- }
584
- }
585
- }
586
- if (!modified) {
587
- return undefined;
588
- }
589
- return {
590
- content: currentEvent.content,
591
- details: currentEvent.details,
592
- isError: currentEvent.isError,
593
- };
594
- }
595
- async emitToolCall(event) {
596
- const ctx = this.createContext();
597
- let result;
598
- for (const ext of this.extensions) {
599
- const handlers = ext.handlers.get("tool_call");
600
- if (!handlers || handlers.length === 0)
601
- continue;
602
- for (const handler of handlers) {
603
- const handlerResult = await handler(event, ctx);
604
- if (handlerResult) {
605
- result = handlerResult;
606
- if (result.block) {
607
- return result;
608
- }
609
- }
610
- }
611
- }
612
- return result;
613
- }
614
- async emitUserBash(event) {
615
- const ctx = this.createContext();
616
- for (const ext of this.extensions) {
617
- const handlers = ext.handlers.get("user_bash");
618
- if (!handlers || handlers.length === 0)
619
- continue;
620
- for (const handler of handlers) {
621
- try {
622
- const handlerResult = await handler(event, ctx);
623
- if (handlerResult) {
624
- return handlerResult;
625
- }
626
- }
627
- catch (err) {
628
- const message = err instanceof Error ? err.message : String(err);
629
- const stack = err instanceof Error ? err.stack : undefined;
630
- this.emitError({
631
- extensionPath: ext.path,
632
- event: "user_bash",
633
- error: message,
634
- stack,
635
- });
636
- }
637
- }
638
- }
639
- return undefined;
640
- }
641
- async emitContext(messages) {
642
- const ctx = this.createContext();
643
- let currentMessages = structuredClone(messages);
644
- for (const ext of this.extensions) {
645
- const handlers = ext.handlers.get("context");
646
- if (!handlers || handlers.length === 0)
647
- continue;
648
- for (const handler of handlers) {
649
- try {
650
- const event = { type: "context", messages: currentMessages };
651
- const handlerResult = await handler(event, ctx);
652
- if (handlerResult && handlerResult.messages) {
653
- currentMessages = handlerResult.messages;
654
- }
655
- }
656
- catch (err) {
657
- const message = err instanceof Error ? err.message : String(err);
658
- const stack = err instanceof Error ? err.stack : undefined;
659
- this.emitError({
660
- extensionPath: ext.path,
661
- event: "context",
662
- error: message,
663
- stack,
664
- });
665
- }
666
- }
667
- }
668
- return currentMessages;
669
- }
670
- async emitBeforeProviderRequest(payload) {
671
- const ctx = this.createContext();
672
- let currentPayload = payload;
673
- for (const ext of this.extensions) {
674
- const handlers = ext.handlers.get("before_provider_request");
675
- if (!handlers || handlers.length === 0)
676
- continue;
677
- for (const handler of handlers) {
678
- try {
679
- const event = {
680
- type: "before_provider_request",
681
- payload: currentPayload,
682
- };
683
- const handlerResult = await handler(event, ctx);
684
- if (handlerResult !== undefined) {
685
- currentPayload = handlerResult;
686
- }
687
- }
688
- catch (err) {
689
- const message = err instanceof Error ? err.message : String(err);
690
- const stack = err instanceof Error ? err.stack : undefined;
691
- this.emitError({
692
- extensionPath: ext.path,
693
- event: "before_provider_request",
694
- error: message,
695
- stack,
696
- });
697
- }
698
- }
699
- }
700
- return currentPayload;
701
- }
702
- async emitBeforeAgentStart(prompt, images, systemPrompt, systemPromptOptions) {
703
- let currentSystemPrompt = systemPrompt;
704
- const ctx = Object.defineProperties({}, Object.getOwnPropertyDescriptors(this.createContext()));
705
- ctx.getSystemPrompt = () => {
706
- this.assertActive();
707
- return currentSystemPrompt;
708
- };
709
- const messages = [];
710
- let systemPromptModified = false;
711
- for (const ext of this.extensions) {
712
- const handlers = ext.handlers.get("before_agent_start");
713
- if (!handlers || handlers.length === 0)
714
- continue;
715
- for (const handler of handlers) {
716
- try {
717
- const event = {
718
- type: "before_agent_start",
719
- prompt,
720
- images,
721
- systemPrompt: currentSystemPrompt,
722
- systemPromptOptions,
723
- };
724
- const handlerResult = await handler(event, ctx);
725
- if (handlerResult) {
726
- const result = handlerResult;
727
- if (result.message) {
728
- messages.push(result.message);
729
- }
730
- if (result.systemPrompt !== undefined) {
731
- currentSystemPrompt = result.systemPrompt;
732
- systemPromptModified = true;
733
- }
734
- }
735
- }
736
- catch (err) {
737
- const message = err instanceof Error ? err.message : String(err);
738
- const stack = err instanceof Error ? err.stack : undefined;
739
- this.emitError({
740
- extensionPath: ext.path,
741
- event: "before_agent_start",
742
- error: message,
743
- stack,
744
- });
745
- }
746
- }
747
- }
748
- if (messages.length > 0 || systemPromptModified) {
749
- return {
750
- messages: messages.length > 0 ? messages : undefined,
751
- systemPrompt: systemPromptModified ? currentSystemPrompt : undefined,
752
- };
753
- }
754
- return undefined;
755
- }
756
- async emitResourcesDiscover(cwd, reason) {
757
- const ctx = this.createContext();
758
- const skillPaths = [];
759
- const promptPaths = [];
760
- const themePaths = [];
761
- for (const ext of this.extensions) {
762
- const handlers = ext.handlers.get("resources_discover");
763
- if (!handlers || handlers.length === 0)
764
- continue;
765
- for (const handler of handlers) {
766
- try {
767
- const event = { type: "resources_discover", cwd, reason };
768
- const handlerResult = await handler(event, ctx);
769
- const result = handlerResult;
770
- if (result?.skillPaths?.length) {
771
- skillPaths.push(...result.skillPaths.map((path) => ({ path, extensionPath: ext.path })));
772
- }
773
- if (result?.promptPaths?.length) {
774
- promptPaths.push(...result.promptPaths.map((path) => ({ path, extensionPath: ext.path })));
775
- }
776
- if (result?.themePaths?.length) {
777
- themePaths.push(...result.themePaths.map((path) => ({ path, extensionPath: ext.path })));
778
- }
779
- }
780
- catch (err) {
781
- const message = err instanceof Error ? err.message : String(err);
782
- const stack = err instanceof Error ? err.stack : undefined;
783
- this.emitError({
784
- extensionPath: ext.path,
785
- event: "resources_discover",
786
- error: message,
787
- stack,
788
- });
789
- }
790
- }
791
- }
792
- return { skillPaths, promptPaths, themePaths };
793
- }
794
- /** Emit input event. Transforms chain, "handled" short-circuits. */
795
- async emitInput(text, images, source) {
796
- const ctx = this.createContext();
797
- let currentText = text;
798
- let currentImages = images;
799
- for (const ext of this.extensions) {
800
- for (const handler of ext.handlers.get("input") ?? []) {
801
- try {
802
- const event = { type: "input", text: currentText, images: currentImages, source };
803
- const result = (await handler(event, ctx));
804
- if (result?.action === "handled")
805
- return result;
806
- if (result?.action === "transform") {
807
- currentText = result.text;
808
- currentImages = result.images ?? currentImages;
809
- }
810
- }
811
- catch (err) {
812
- this.emitError({
813
- extensionPath: ext.path,
814
- event: "input",
815
- error: err instanceof Error ? err.message : String(err),
816
- stack: err instanceof Error ? err.stack : undefined,
817
- });
818
- }
819
- }
820
- }
821
- return currentText !== text || currentImages !== images
822
- ? { action: "transform", text: currentText, images: currentImages }
823
- : { action: "continue" };
824
- }
825
- }
826
- //# sourceMappingURL=runner.js.map