pi-kot 0.1.20 → 0.1.21

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 (330) hide show
  1. package/README.md +253 -17
  2. package/package.json +8 -60
  3. package/bin/pi-kot.mjs +0 -148
  4. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  6. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  7. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  12. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  13. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  18. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  19. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  21. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  22. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  24. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  25. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  27. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  28. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  30. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  31. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  33. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  34. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  36. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  37. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  45. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  46. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  48. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  49. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  51. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  52. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  54. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  55. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  56. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  57. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  59. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  60. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  62. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  63. package/dist/client/assets/index-C5quN7Km.js +0 -448
  64. package/dist/client/assets/index-C5quN7Km.js.map +0 -1
  65. package/dist/client/assets/index-CuQOwQs1.css +0 -1
  66. package/dist/client/index.html +0 -14
  67. package/dist/server/ask-user-question/envelope.d.ts +0 -11
  68. package/dist/server/ask-user-question/envelope.d.ts.map +0 -1
  69. package/dist/server/ask-user-question/envelope.js +0 -41
  70. package/dist/server/ask-user-question/envelope.js.map +0 -1
  71. package/dist/server/ask-user-question/plan-mode-question-tool.d.ts +0 -26
  72. package/dist/server/ask-user-question/plan-mode-question-tool.d.ts.map +0 -1
  73. package/dist/server/ask-user-question/plan-mode-question-tool.js +0 -273
  74. package/dist/server/ask-user-question/plan-mode-question-tool.js.map +0 -1
  75. package/dist/server/ask-user-question/prompt-strings.d.ts +0 -4
  76. package/dist/server/ask-user-question/prompt-strings.d.ts.map +0 -1
  77. package/dist/server/ask-user-question/prompt-strings.js +0 -18
  78. package/dist/server/ask-user-question/prompt-strings.js.map +0 -1
  79. package/dist/server/ask-user-question/registry.d.ts +0 -39
  80. package/dist/server/ask-user-question/registry.d.ts.map +0 -1
  81. package/dist/server/ask-user-question/registry.js +0 -124
  82. package/dist/server/ask-user-question/registry.js.map +0 -1
  83. package/dist/server/ask-user-question/tool.d.ts +0 -4
  84. package/dist/server/ask-user-question/tool.d.ts.map +0 -1
  85. package/dist/server/ask-user-question/tool.js +0 -68
  86. package/dist/server/ask-user-question/tool.js.map +0 -1
  87. package/dist/server/ask-user-question/types.d.ts +0 -50
  88. package/dist/server/ask-user-question/types.d.ts.map +0 -1
  89. package/dist/server/ask-user-question/types.js +0 -7
  90. package/dist/server/ask-user-question/types.js.map +0 -1
  91. package/dist/server/ask-user-question/validate.d.ts +0 -3
  92. package/dist/server/ask-user-question/validate.d.ts.map +0 -1
  93. package/dist/server/ask-user-question/validate.js +0 -67
  94. package/dist/server/ask-user-question/validate.js.map +0 -1
  95. package/dist/server/compaction-continuation.d.ts +0 -113
  96. package/dist/server/compaction-continuation.d.ts.map +0 -1
  97. package/dist/server/compaction-continuation.js +0 -65
  98. package/dist/server/compaction-continuation.js.map +0 -1
  99. package/dist/server/compaction-history.d.ts +0 -62
  100. package/dist/server/compaction-history.d.ts.map +0 -1
  101. package/dist/server/compaction-history.js +0 -180
  102. package/dist/server/compaction-history.js.map +0 -1
  103. package/dist/server/config-manager.d.ts +0 -97
  104. package/dist/server/config-manager.d.ts.map +0 -1
  105. package/dist/server/config-manager.js +0 -352
  106. package/dist/server/config-manager.js.map +0 -1
  107. package/dist/server/config.d.ts +0 -24
  108. package/dist/server/config.d.ts.map +0 -1
  109. package/dist/server/config.js +0 -67
  110. package/dist/server/config.js.map +0 -1
  111. package/dist/server/extension-manager.d.ts +0 -116
  112. package/dist/server/extension-manager.d.ts.map +0 -1
  113. package/dist/server/extension-manager.js +0 -586
  114. package/dist/server/extension-manager.js.map +0 -1
  115. package/dist/server/extension-ui-bridge.d.ts +0 -35
  116. package/dist/server/extension-ui-bridge.d.ts.map +0 -1
  117. package/dist/server/extension-ui-bridge.js +0 -228
  118. package/dist/server/extension-ui-bridge.js.map +0 -1
  119. package/dist/server/extensions-discovery.d.ts +0 -26
  120. package/dist/server/extensions-discovery.d.ts.map +0 -1
  121. package/dist/server/extensions-discovery.js +0 -107
  122. package/dist/server/extensions-discovery.js.map +0 -1
  123. package/dist/server/file-manager.d.ts +0 -79
  124. package/dist/server/file-manager.d.ts.map +0 -1
  125. package/dist/server/file-manager.js +0 -535
  126. package/dist/server/file-manager.js.map +0 -1
  127. package/dist/server/file-references.d.ts +0 -5
  128. package/dist/server/file-references.d.ts.map +0 -1
  129. package/dist/server/file-references.js +0 -249
  130. package/dist/server/file-references.js.map +0 -1
  131. package/dist/server/file-searcher.d.ts +0 -29
  132. package/dist/server/file-searcher.d.ts.map +0 -1
  133. package/dist/server/file-searcher.js +0 -318
  134. package/dist/server/file-searcher.js.map +0 -1
  135. package/dist/server/git-clone.d.ts +0 -56
  136. package/dist/server/git-clone.d.ts.map +0 -1
  137. package/dist/server/git-clone.js +0 -173
  138. package/dist/server/git-clone.js.map +0 -1
  139. package/dist/server/git-hunk-stager.d.ts +0 -56
  140. package/dist/server/git-hunk-stager.d.ts.map +0 -1
  141. package/dist/server/git-hunk-stager.js +0 -137
  142. package/dist/server/git-hunk-stager.js.map +0 -1
  143. package/dist/server/git-runner.d.ts +0 -346
  144. package/dist/server/git-runner.d.ts.map +0 -1
  145. package/dist/server/git-runner.js +0 -884
  146. package/dist/server/git-runner.js.map +0 -1
  147. package/dist/server/index.d.ts +0 -22
  148. package/dist/server/index.d.ts.map +0 -1
  149. package/dist/server/index.js +0 -262
  150. package/dist/server/index.js.map +0 -1
  151. package/dist/server/lifecycle-notifications.d.ts +0 -28
  152. package/dist/server/lifecycle-notifications.d.ts.map +0 -1
  153. package/dist/server/lifecycle-notifications.js +0 -38
  154. package/dist/server/lifecycle-notifications.js.map +0 -1
  155. package/dist/server/mcp/config.d.ts +0 -23
  156. package/dist/server/mcp/config.d.ts.map +0 -1
  157. package/dist/server/mcp/config.js +0 -139
  158. package/dist/server/mcp/config.js.map +0 -1
  159. package/dist/server/mcp/manager.d.ts +0 -40
  160. package/dist/server/mcp/manager.d.ts.map +0 -1
  161. package/dist/server/mcp/manager.js +0 -435
  162. package/dist/server/mcp/manager.js.map +0 -1
  163. package/dist/server/mcp/stdio-trust.d.ts +0 -5
  164. package/dist/server/mcp/stdio-trust.d.ts.map +0 -1
  165. package/dist/server/mcp/stdio-trust.js +0 -78
  166. package/dist/server/mcp/stdio-trust.js.map +0 -1
  167. package/dist/server/mcp/tool-bridge.d.ts +0 -33
  168. package/dist/server/mcp/tool-bridge.d.ts.map +0 -1
  169. package/dist/server/mcp/tool-bridge.js +0 -138
  170. package/dist/server/mcp/tool-bridge.js.map +0 -1
  171. package/dist/server/orchestration/config.d.ts +0 -5
  172. package/dist/server/orchestration/config.d.ts.map +0 -1
  173. package/dist/server/orchestration/config.js +0 -35
  174. package/dist/server/orchestration/config.js.map +0 -1
  175. package/dist/server/orchestration/event-bridge.d.ts +0 -32
  176. package/dist/server/orchestration/event-bridge.d.ts.map +0 -1
  177. package/dist/server/orchestration/event-bridge.js +0 -110
  178. package/dist/server/orchestration/event-bridge.js.map +0 -1
  179. package/dist/server/orchestration/inbox.d.ts +0 -9
  180. package/dist/server/orchestration/inbox.d.ts.map +0 -1
  181. package/dist/server/orchestration/inbox.js +0 -186
  182. package/dist/server/orchestration/inbox.js.map +0 -1
  183. package/dist/server/orchestration/init.d.ts +0 -2
  184. package/dist/server/orchestration/init.d.ts.map +0 -1
  185. package/dist/server/orchestration/init.js +0 -22
  186. package/dist/server/orchestration/init.js.map +0 -1
  187. package/dist/server/orchestration/store.d.ts +0 -33
  188. package/dist/server/orchestration/store.d.ts.map +0 -1
  189. package/dist/server/orchestration/store.js +0 -331
  190. package/dist/server/orchestration/store.js.map +0 -1
  191. package/dist/server/orchestration/tools.d.ts +0 -15
  192. package/dist/server/orchestration/tools.d.ts.map +0 -1
  193. package/dist/server/orchestration/tools.js +0 -621
  194. package/dist/server/orchestration/tools.js.map +0 -1
  195. package/dist/server/orchestration/types.d.ts +0 -68
  196. package/dist/server/orchestration/types.d.ts.map +0 -1
  197. package/dist/server/orchestration/types.js +0 -43
  198. package/dist/server/orchestration/types.js.map +0 -1
  199. package/dist/server/orchestration/worker-lifecycle.d.ts +0 -15
  200. package/dist/server/orchestration/worker-lifecycle.d.ts.map +0 -1
  201. package/dist/server/orchestration/worker-lifecycle.js +0 -45
  202. package/dist/server/orchestration/worker-lifecycle.js.map +0 -1
  203. package/dist/server/project-manager.d.ts +0 -25
  204. package/dist/server/project-manager.d.ts.map +0 -1
  205. package/dist/server/project-manager.js +0 -157
  206. package/dist/server/project-manager.js.map +0 -1
  207. package/dist/server/pty-manager.d.ts +0 -54
  208. package/dist/server/pty-manager.d.ts.map +0 -1
  209. package/dist/server/pty-manager.js +0 -220
  210. package/dist/server/pty-manager.js.map +0 -1
  211. package/dist/server/routes/_schemas.d.ts +0 -16
  212. package/dist/server/routes/_schemas.d.ts.map +0 -1
  213. package/dist/server/routes/_schemas.js +0 -12
  214. package/dist/server/routes/_schemas.js.map +0 -1
  215. package/dist/server/routes/ask-user-question.d.ts +0 -3
  216. package/dist/server/routes/ask-user-question.d.ts.map +0 -1
  217. package/dist/server/routes/ask-user-question.js +0 -105
  218. package/dist/server/routes/ask-user-question.js.map +0 -1
  219. package/dist/server/routes/auth.d.ts +0 -8
  220. package/dist/server/routes/auth.d.ts.map +0 -1
  221. package/dist/server/routes/auth.js +0 -225
  222. package/dist/server/routes/auth.js.map +0 -1
  223. package/dist/server/routes/config.d.ts +0 -3
  224. package/dist/server/routes/config.d.ts.map +0 -1
  225. package/dist/server/routes/config.js +0 -568
  226. package/dist/server/routes/config.js.map +0 -1
  227. package/dist/server/routes/control.d.ts +0 -3
  228. package/dist/server/routes/control.d.ts.map +0 -1
  229. package/dist/server/routes/control.js +0 -365
  230. package/dist/server/routes/control.js.map +0 -1
  231. package/dist/server/routes/exec.d.ts +0 -3
  232. package/dist/server/routes/exec.d.ts.map +0 -1
  233. package/dist/server/routes/exec.js +0 -426
  234. package/dist/server/routes/exec.js.map +0 -1
  235. package/dist/server/routes/extension-commands.d.ts +0 -22
  236. package/dist/server/routes/extension-commands.d.ts.map +0 -1
  237. package/dist/server/routes/extension-commands.js +0 -178
  238. package/dist/server/routes/extension-commands.js.map +0 -1
  239. package/dist/server/routes/extensions.d.ts +0 -8
  240. package/dist/server/routes/extensions.d.ts.map +0 -1
  241. package/dist/server/routes/extensions.js +0 -414
  242. package/dist/server/routes/extensions.js.map +0 -1
  243. package/dist/server/routes/files.d.ts +0 -3
  244. package/dist/server/routes/files.d.ts.map +0 -1
  245. package/dist/server/routes/files.js +0 -835
  246. package/dist/server/routes/files.js.map +0 -1
  247. package/dist/server/routes/git.d.ts +0 -3
  248. package/dist/server/routes/git.d.ts.map +0 -1
  249. package/dist/server/routes/git.js +0 -1058
  250. package/dist/server/routes/git.js.map +0 -1
  251. package/dist/server/routes/mcp.d.ts +0 -3
  252. package/dist/server/routes/mcp.d.ts.map +0 -1
  253. package/dist/server/routes/mcp.js +0 -403
  254. package/dist/server/routes/mcp.js.map +0 -1
  255. package/dist/server/routes/orchestration.d.ts +0 -3
  256. package/dist/server/routes/orchestration.d.ts.map +0 -1
  257. package/dist/server/routes/orchestration.js +0 -251
  258. package/dist/server/routes/orchestration.js.map +0 -1
  259. package/dist/server/routes/projects.d.ts +0 -3
  260. package/dist/server/routes/projects.d.ts.map +0 -1
  261. package/dist/server/routes/projects.js +0 -421
  262. package/dist/server/routes/projects.js.map +0 -1
  263. package/dist/server/routes/prompt.d.ts +0 -3
  264. package/dist/server/routes/prompt.d.ts.map +0 -1
  265. package/dist/server/routes/prompt.js +0 -311
  266. package/dist/server/routes/prompt.js.map +0 -1
  267. package/dist/server/routes/session-extensions.d.ts +0 -11
  268. package/dist/server/routes/session-extensions.d.ts.map +0 -1
  269. package/dist/server/routes/session-extensions.js +0 -171
  270. package/dist/server/routes/session-extensions.js.map +0 -1
  271. package/dist/server/routes/sessions.d.ts +0 -3
  272. package/dist/server/routes/sessions.d.ts.map +0 -1
  273. package/dist/server/routes/sessions.js +0 -706
  274. package/dist/server/routes/sessions.js.map +0 -1
  275. package/dist/server/routes/skills.d.ts +0 -14
  276. package/dist/server/routes/skills.d.ts.map +0 -1
  277. package/dist/server/routes/skills.js +0 -448
  278. package/dist/server/routes/skills.js.map +0 -1
  279. package/dist/server/routes/stream.d.ts +0 -3
  280. package/dist/server/routes/stream.d.ts.map +0 -1
  281. package/dist/server/routes/stream.js +0 -112
  282. package/dist/server/routes/stream.js.map +0 -1
  283. package/dist/server/routes/terminal.d.ts +0 -28
  284. package/dist/server/routes/terminal.d.ts.map +0 -1
  285. package/dist/server/routes/terminal.js +0 -211
  286. package/dist/server/routes/terminal.js.map +0 -1
  287. package/dist/server/routes/tunnel.d.ts +0 -13
  288. package/dist/server/routes/tunnel.d.ts.map +0 -1
  289. package/dist/server/routes/tunnel.js +0 -231
  290. package/dist/server/routes/tunnel.js.map +0 -1
  291. package/dist/server/session-registry.d.ts +0 -164
  292. package/dist/server/session-registry.d.ts.map +0 -1
  293. package/dist/server/session-registry.js +0 -754
  294. package/dist/server/session-registry.js.map +0 -1
  295. package/dist/server/skill-overrides.d.ts +0 -47
  296. package/dist/server/skill-overrides.d.ts.map +0 -1
  297. package/dist/server/skill-overrides.js +0 -178
  298. package/dist/server/skill-overrides.js.map +0 -1
  299. package/dist/server/sse-bridge.d.ts +0 -31
  300. package/dist/server/sse-bridge.d.ts.map +0 -1
  301. package/dist/server/sse-bridge.js +0 -158
  302. package/dist/server/sse-bridge.js.map +0 -1
  303. package/dist/server/tool-overrides.d.ts +0 -39
  304. package/dist/server/tool-overrides.d.ts.map +0 -1
  305. package/dist/server/tool-overrides.js +0 -121
  306. package/dist/server/tool-overrides.js.map +0 -1
  307. package/dist/server/tunnel/executable-search.d.ts +0 -45
  308. package/dist/server/tunnel/executable-search.d.ts.map +0 -1
  309. package/dist/server/tunnel/executable-search.js +0 -150
  310. package/dist/server/tunnel/executable-search.js.map +0 -1
  311. package/dist/server/tunnel/install-help.d.ts +0 -19
  312. package/dist/server/tunnel/install-help.d.ts.map +0 -1
  313. package/dist/server/tunnel/install-help.js +0 -47
  314. package/dist/server/tunnel/install-help.js.map +0 -1
  315. package/dist/server/tunnel/providers/ngrok.d.ts +0 -34
  316. package/dist/server/tunnel/providers/ngrok.d.ts.map +0 -1
  317. package/dist/server/tunnel/providers/ngrok.js +0 -464
  318. package/dist/server/tunnel/providers/ngrok.js.map +0 -1
  319. package/dist/server/tunnel/registry.d.ts +0 -15
  320. package/dist/server/tunnel/registry.d.ts.map +0 -1
  321. package/dist/server/tunnel/registry.js +0 -58
  322. package/dist/server/tunnel/registry.js.map +0 -1
  323. package/dist/server/tunnel/service.d.ts +0 -15
  324. package/dist/server/tunnel/service.d.ts.map +0 -1
  325. package/dist/server/tunnel/service.js +0 -158
  326. package/dist/server/tunnel/service.js.map +0 -1
  327. package/dist/server/tunnel/types.d.ts +0 -166
  328. package/dist/server/tunnel/types.d.ts.map +0 -1
  329. package/dist/server/tunnel/types.js +0 -217
  330. package/dist/server/tunnel/types.js.map +0 -1
@@ -1,228 +0,0 @@
1
- /**
2
- * Extension UI Bridge — adapts extension `ctx.ui` interactions (select, confirm,
3
- * notify) to the WebSocket/SSE + REST model of pi-kot's web GUI.
4
- *
5
- * When the extension calls `ctx.ui.select("Rewind to checkpoint:", items)`, this
6
- * bridge sends an `extension_ui_select` SSE event to the browser, creating a
7
- * pending request. The browser renders the selector and responds via
8
- * `POST /api/v1/sessions/:id/extension-ui/respond`, which resolves the promise
9
- * and lets the extension continue.
10
- *
11
- * Unused TUI-specific methods (setWidget, setFooter, setHeader, custom, …) are
12
- * no-ops so that any extension command works unmodified through the bridge.
13
- */
14
- import { randomUUID } from "node:crypto";
15
- const pendingSelects = new Map();
16
- const pendingConfirms = new Map();
17
- const pendingInputs = new Map();
18
- const REQUEST_TIMEOUT_MS = 120_000; // 2 minutes
19
- /**
20
- * Resolve a pending select/confirm/input request.
21
- * Called from `POST /api/v1/sessions/:id/extension-ui/respond`.
22
- */
23
- export function resolveExtensionUIRequest(requestId, value) {
24
- // Try select
25
- const sel = pendingSelects.get(requestId);
26
- if (sel !== undefined) {
27
- clearTimeout(sel.timer);
28
- sel.resolve(typeof value === "string" ? value : undefined);
29
- pendingSelects.delete(requestId);
30
- return true;
31
- }
32
- // Try confirm
33
- const con = pendingConfirms.get(requestId);
34
- if (con !== undefined) {
35
- clearTimeout(con.timer);
36
- con.resolve(value === true || value === "true" || value === "yes");
37
- pendingConfirms.delete(requestId);
38
- return true;
39
- }
40
- // Try input
41
- const inp = pendingInputs.get(requestId);
42
- if (inp !== undefined) {
43
- clearTimeout(inp.timer);
44
- inp.resolve(typeof value === "string" ? value : undefined);
45
- pendingInputs.delete(requestId);
46
- return true;
47
- }
48
- return false;
49
- }
50
- /**
51
- * Cancel all pending requests (e.g., when the command is aborted or session
52
- * is disposed). Each pending promise rejects so the extension handler sees
53
- * a cancelled/interrupted state.
54
- */
55
- export function cancelAllPendingRequests() {
56
- const err = new Error("Extension UI request cancelled");
57
- for (const [id, req] of pendingSelects) {
58
- clearTimeout(req.timer);
59
- req.reject(err);
60
- pendingSelects.delete(id);
61
- }
62
- for (const [id, req] of pendingConfirms) {
63
- clearTimeout(req.timer);
64
- req.reject(err);
65
- pendingConfirms.delete(id);
66
- }
67
- for (const [id, req] of pendingInputs) {
68
- clearTimeout(req.timer);
69
- req.reject(err);
70
- pendingInputs.delete(id);
71
- }
72
- }
73
- /**
74
- * Create an `ExtensionUIContext` that bridges extension UI interactions
75
- * to the browser GUI via SSE events + REST callbacks.
76
- *
77
- * @param clients - The live session's connected SSE clients.
78
- * @param sessionId - The session ID, included in SSE events for routing.
79
- */
80
- export function createBridgeUIContext(clients, sessionId) {
81
- /** Send a typed SSE event to all connected clients. */
82
- function send(type, extra = {}) {
83
- const payload = {
84
- type,
85
- sessionId,
86
- ...extra,
87
- };
88
- for (const client of clients) {
89
- try {
90
- client.send(payload);
91
- }
92
- catch {
93
- clients.delete(client);
94
- }
95
- }
96
- }
97
- return {
98
- // ── Interactive methods (bridge to GUI) ──
99
- select: async (title, options, _opts) => {
100
- return new Promise((resolve, reject) => {
101
- const requestId = randomUUID();
102
- send("extension_ui_select", { requestId, title, options });
103
- const timer = setTimeout(() => {
104
- pendingSelects.delete(requestId);
105
- reject(new Error(`Extension UI select timed out: ${title}`));
106
- }, REQUEST_TIMEOUT_MS);
107
- pendingSelects.set(requestId, { requestId, resolve, reject, timer });
108
- });
109
- },
110
- confirm: async (title, message, _opts) => {
111
- return new Promise((resolve, reject) => {
112
- const requestId = randomUUID();
113
- send("extension_ui_confirm", { requestId, title, message });
114
- const timer = setTimeout(() => {
115
- pendingConfirms.delete(requestId);
116
- reject(new Error(`Extension UI confirm timed out: ${title}`));
117
- }, REQUEST_TIMEOUT_MS);
118
- pendingConfirms.set(requestId, { requestId, resolve, reject, timer });
119
- });
120
- },
121
- input: async (title, placeholder, _opts) => {
122
- return new Promise((resolve, reject) => {
123
- const requestId = randomUUID();
124
- send("extension_ui_input", {
125
- requestId,
126
- title,
127
- placeholder: placeholder ?? "",
128
- });
129
- const timer = setTimeout(() => {
130
- pendingInputs.delete(requestId);
131
- reject(new Error(`Extension UI input timed out: ${title}`));
132
- }, REQUEST_TIMEOUT_MS);
133
- pendingInputs.set(requestId, { requestId, resolve, reject, timer });
134
- });
135
- },
136
- notify: (message, notificationType) => {
137
- send("extension_ui_notify", {
138
- message,
139
- notificationType: notificationType ?? "info",
140
- });
141
- },
142
- // ── No-ops (TUI-specific, not applicable in web GUI) ──
143
- onTerminalInput: (_handler) => {
144
- return () => { };
145
- },
146
- setStatus: (_key, _text) => {
147
- // Status bar is managed by the GUI.
148
- },
149
- setWorkingMessage: (_message) => {
150
- // Working message is managed by the GUI.
151
- },
152
- setWorkingVisible: (_visible) => {
153
- // Working indicator visibility is managed by the GUI.
154
- },
155
- setWorkingIndicator: (_options) => {
156
- // Working indicator animation is managed by the GUI.
157
- },
158
- setHiddenThinkingLabel: (_label) => {
159
- // Hidden thinking label is managed by the GUI.
160
- },
161
- setWidget: (_key,
162
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
163
- _content, _options) => {
164
- // Widgets are TUI-specific.
165
- },
166
- setFooter: (
167
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
- _factory) => {
169
- // Footer is TUI-specific.
170
- },
171
- setHeader: (
172
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
173
- _factory) => {
174
- // Header is TUI-specific.
175
- },
176
- setTitle: (_title) => {
177
- // Title is managed by the browser tab.
178
- },
179
- // custom is intentionally undefined so that extensions which check
180
- // `if (!ctx.ui.custom)` fall back to `ctx.ui.select()` / `ctx.ui.confirm()`
181
- // instead of calling the TUI custom component factory and getting nothing.
182
- // This fixes pi-rewind's `/rewind` command which would exit silently
183
- // when `custom` returned `Promise.resolve(undefined)` immediately.
184
- custom: undefined,
185
- pasteToEditor: (_text) => {
186
- // Editor paste is not supported in bridge mode.
187
- },
188
- setEditorText: (_text) => {
189
- // Editor text is managed by the GUI.
190
- },
191
- getEditorText: () => {
192
- return "";
193
- },
194
- editor: async (_title, _prefill) => {
195
- // Multi-line editor is not supported in bridge mode.
196
- return undefined;
197
- },
198
- addAutocompleteProvider: (_factory) => {
199
- // Autocomplete is managed by the GUI.
200
- },
201
- setEditorComponent: (_factory) => {
202
- // Editor component is managed by the GUI.
203
- },
204
- getEditorComponent: () => {
205
- return undefined;
206
- },
207
- get theme() {
208
- // Return a minimal theme stub — the server doesn't have a TUI theme.
209
- return {};
210
- },
211
- getAllThemes: () => {
212
- return [];
213
- },
214
- getTheme: () => {
215
- return undefined;
216
- },
217
- setTheme: () => {
218
- return { success: false, error: "Theme switching not supported via bridge" };
219
- },
220
- getToolsExpanded: () => {
221
- return true;
222
- },
223
- setToolsExpanded: () => {
224
- // Tool expansion is managed by the GUI.
225
- },
226
- };
227
- }
228
- //# sourceMappingURL=extension-ui-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-ui-bridge.js","sourceRoot":"","sources":["../src/extension-ui-bridge.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- export interface ExtensionToolInfo {
2
- /** Tool name as the agent sees it (<toolName> from registerTool). */
3
- name: string;
4
- /** User-visible package name (e.g. "pi-web-access", "@ayulab/pi-rewind"). */
5
- packageSource: string;
6
- /** Human-readable description from the tool definition. */
7
- description: string;
8
- }
9
- export interface ExtensionResources {
10
- tools: ExtensionToolInfo[];
11
- errors: {
12
- path: string;
13
- error: string;
14
- }[];
15
- }
16
- /**
17
- * Resolve extension-contributed tools visible to a session in `cwd`.
18
- * Uses the SDK package manager to discover installed packages, then
19
- * loads each extension to enumerate its registered tools.
20
- *
21
- * Failures inside individual packages surface as `errors[]` rather
22
- * than throwing — a single broken extension must not block the
23
- * tools listing.
24
- */
25
- export declare function discoverExtensionResources(cwd: string): Promise<ExtensionResources>;
26
- //# sourceMappingURL=extensions-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extensions-discovery.d.ts","sourceRoot":"","sources":["../src/extensions-discovery.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IACjC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC/C,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,kBAAkB,CAAC,CAgG7B"}
@@ -1,107 +0,0 @@
1
- /**
2
- * Surface extension-contributed tools from the filesystem (no live
3
- * session needed). Mirrors pi-forge's discoverExtensionResources.
4
- *
5
- * Uses the pi SDK's DefaultPackageManager + discoverAndLoadExtensions
6
- * to enumerate all registered tools from installed packages.
7
- */
8
- import { discoverAndLoadExtensions, DefaultPackageManager, SettingsManager, } from "@earendil-works/pi-coding-agent";
9
- import { config } from "./config.js";
10
- /**
11
- * Resolve extension-contributed tools visible to a session in `cwd`.
12
- * Uses the SDK package manager to discover installed packages, then
13
- * loads each extension to enumerate its registered tools.
14
- *
15
- * Failures inside individual packages surface as `errors[]` rather
16
- * than throwing — a single broken extension must not block the
17
- * tools listing.
18
- */
19
- export async function discoverExtensionResources(cwd) {
20
- const errors = [];
21
- let extensionPathToPackage;
22
- try {
23
- const settingsManager = SettingsManager.create(cwd, config.piConfigDir);
24
- await settingsManager.reload?.();
25
- const packageManager = new DefaultPackageManager({
26
- cwd,
27
- agentDir: config.piConfigDir,
28
- settingsManager,
29
- });
30
- const resolved = await packageManager.resolve();
31
- extensionPathToPackage = new Map();
32
- for (const r of resolved.extensions) {
33
- if (!r.enabled)
34
- continue;
35
- const src = r.metadata.source;
36
- if (typeof src !== "string" || src.length === 0)
37
- continue;
38
- // Normalize: strip npm: prefix so packageSource matches
39
- // ext.package from the /extensions endpoint (e.g. both
40
- // become "pi-web-access" instead of "npm:pi-web-access").
41
- const normalized = src.replace(/^npm:/, "");
42
- extensionPathToPackage.set(r.path, normalized);
43
- }
44
- // Also surface tools from extensions in the legacy extensions dir
45
- // that aren't behind a package manager entry (e.g. hand-dropped
46
- // extensions). Use their resolved path as the source name.
47
- for (const r of resolved.extensions) {
48
- if (!r.enabled)
49
- continue;
50
- const src = r.metadata.source;
51
- if (typeof src === "string" && src.length > 0)
52
- continue; // already mapped
53
- // Unattributed extension — use its name as fallback
54
- const name = r.path
55
- .split(/[/\\]/)
56
- .pop()
57
- ?.replace(/\.\w+$/, "") ?? r.path;
58
- if (!extensionPathToPackage.has(r.path)) {
59
- extensionPathToPackage.set(r.path, name);
60
- }
61
- }
62
- }
63
- catch (err) {
64
- errors.push({
65
- path: "<package-manager>",
66
- error: err instanceof Error ? err.message : String(err),
67
- });
68
- return { tools: [], errors };
69
- }
70
- if (extensionPathToPackage.size === 0) {
71
- return { tools: [], errors };
72
- }
73
- let loaded;
74
- try {
75
- loaded = await discoverAndLoadExtensions(Array.from(extensionPathToPackage.keys()), cwd, config.piConfigDir);
76
- }
77
- catch (err) {
78
- errors.push({
79
- path: "<discoverAndLoadExtensions>",
80
- error: err instanceof Error ? err.message : String(err),
81
- });
82
- return { tools: [], errors };
83
- }
84
- for (const e of loaded.errors) {
85
- errors.push({ path: e.path, error: e.error });
86
- }
87
- const tools = [];
88
- for (const ext of loaded.extensions) {
89
- const pkgSource = extensionPathToPackage.get(ext.path) ??
90
- extensionPathToPackage.get(ext.resolvedPath);
91
- if (pkgSource === undefined)
92
- continue;
93
- for (const [, registered] of ext.tools) {
94
- const def = registered.definition;
95
- const info = {
96
- name: def.name,
97
- packageSource: pkgSource,
98
- description: typeof def.description === "string" && def.description.length > 0
99
- ? def.description
100
- : "",
101
- };
102
- tools.push(info);
103
- }
104
- }
105
- return { tools, errors };
106
- }
107
- //# sourceMappingURL=extensions-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extensions-discovery.js","sourceRoot":"","sources":["../src/extensions-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- import type { Readable } from "node:stream";
2
- export declare class PathOutsideRootError extends Error {
3
- constructor(target: string, root: string);
4
- }
5
- export declare class NotFoundError extends Error {
6
- constructor(path: string);
7
- }
8
- export declare class NotAFileError extends Error {
9
- constructor(path: string);
10
- }
11
- export declare class FileTooLargeError extends Error {
12
- readonly size: number;
13
- readonly limit: number;
14
- constructor(path: string, size: number, limit: number);
15
- }
16
- export declare class DirectoryNotEmptyError extends Error {
17
- constructor(path: string);
18
- }
19
- export declare class InvalidNameError extends Error {
20
- constructor(message?: string);
21
- }
22
- export declare class ChecksumMismatchError extends Error {
23
- readonly target: string;
24
- readonly expected: string;
25
- readonly actual: string;
26
- constructor(target: string, expected: string, actual: string);
27
- }
28
- export declare class TargetExistsError extends Error {
29
- constructor(path: string);
30
- }
31
- export declare const MAX_READ_BYTES: number;
32
- export declare const SEARCH_SKIP_DIRS: ReadonlySet<string>;
33
- export declare function assertInsideRoot(target: string, root: string): string;
34
- export interface TreeNode {
35
- name: string;
36
- path: string;
37
- type: "file" | "directory";
38
- children?: TreeNode[];
39
- truncated?: boolean;
40
- }
41
- export interface GetTreeOptions {
42
- maxDepth?: number;
43
- }
44
- export declare function getTree(rootPath: string, opts?: GetTreeOptions): Promise<TreeNode>;
45
- export declare function listAllFiles(rootPath: string): Promise<string[]>;
46
- export interface ReadResult {
47
- path: string;
48
- content: string;
49
- size: number;
50
- language: string;
51
- binary: boolean;
52
- }
53
- export declare function readFile(absPath: string, root: string): Promise<ReadResult>;
54
- export declare function writeFile(absPath: string, root: string, content: string): Promise<void>;
55
- export declare function downloadStream(absPath: string, root: string): Promise<{
56
- kind: "file";
57
- filename: string;
58
- size: number;
59
- stream: Readable;
60
- } | {
61
- kind: "directory";
62
- filename: string;
63
- stream: Readable;
64
- }>;
65
- export declare function writeFileBytes(parentAbsPath: string, name: string, root: string, source: AsyncIterable<Buffer | Uint8Array>, opts?: {
66
- expectedSha256?: string;
67
- overwrite?: boolean;
68
- }): Promise<{
69
- path: string;
70
- size: number;
71
- sha256: string;
72
- }>;
73
- export declare function makeDirectory(parentAbsPath: string, root: string, name: string): Promise<string>;
74
- export declare function renameEntry(absPath: string, root: string, newName: string): Promise<string>;
75
- export declare function moveEntry(srcAbsPath: string, destAbsPath: string, root: string): Promise<string>;
76
- export declare function deleteEntry(absPath: string, root: string, opts?: {
77
- recursive?: boolean;
78
- }): Promise<void>;
79
- //# sourceMappingURL=file-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../src/file-manager.ts"],"names":[],"mappings":"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"}