pi-kot 0.1.19 → 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-B6Hxrz4s.js +0 -448
  64. package/dist/client/assets/index-B6Hxrz4s.js.map +0 -1
  65. package/dist/client/assets/index-BPImbgFg.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,586 +0,0 @@
1
- /**
2
- * Extension manager — runtime discovery + install for pi.dev extensions.
3
- * Scans ~/.pi/agent/ for installed extensions, agents, and packages,
4
- * and exposes a curated recommendation catalog optimised for pi-kot.
5
- *
6
- * Architecture: extension dynamic detection pattern:
7
- * detect → activate — UI features light up based on what's installed.
8
- *
9
- * Update checking:
10
- * checkExtensionUpdates() compares installed vs. npm registry latest.
11
- * updateExtension() runs npm install to upgrade to latest.
12
- */
13
- import { readFile, readdir } from "node:fs/promises";
14
- import { existsSync, readFileSync } from "node:fs";
15
- import { join } from "node:path";
16
- import { homedir } from "node:os";
17
- import { execSync } from "node:child_process";
18
- // ── Path helpers ────────────────────────────────────────────────────
19
- function piAgentDir() {
20
- // getAgentDir in pi SDK defaults to ~/.pi/agent
21
- return join(homedir(), ".pi", "agent");
22
- }
23
- function extensionsDir() {
24
- return join(piAgentDir(), "extensions");
25
- }
26
- function agentsDir() {
27
- return join(piAgentDir(), "agents");
28
- }
29
- function settingsPath() {
30
- return join(piAgentDir(), "settings.json");
31
- }
32
- function npmPackagePath() {
33
- return join(piAgentDir(), "npm", "package.json");
34
- }
35
- // ── Known extension registry (curated) ──────────────────────────────
36
- const knownExtensions = [
37
- // ── Tools ──
38
- {
39
- id: "pi-web-access",
40
- name: "pi-web-access",
41
- description: "Web search, content extraction, and API interaction tools for pi. Essential for research-aware coding sessions.",
42
- package: "npm:pi-web-access",
43
- category: "tools",
44
- verified: true,
45
- enablesFeatures: ["Web search in agent sessions"],
46
- icon: "🌐",
47
- },
48
- {
49
- id: "pi-playwright",
50
- name: "pi-playwright",
51
- description: "Automated browser testing and web scraping via Playwright. Steer the agent through real web UI.",
52
- package: "npm:pi-playwright",
53
- category: "tools",
54
- enablesFeatures: ["Browser automation in agent sessions"],
55
- icon: "🎭",
56
- },
57
- {
58
- id: "pi-vision-tool",
59
- name: "pi-vision-tool",
60
- description: "Delegates image analysis to a vision-capable model. Non-vision models can call describe_image to understand screenshots, diagrams, and photos.",
61
- package: "npm:pi-vision-tool",
62
- category: "tools",
63
- verified: true,
64
- enablesFeatures: ["Image analysis via vision model delegation"],
65
- icon: "👁️",
66
- },
67
- // ── Productivity ──
68
- {
69
- id: "pi-rewind",
70
- name: "pi-rewind",
71
- description: "Session history navigation — checkpoint, rewind, and branch from any prior state. Like undo for your agent.",
72
- package: "npm:@ayulab/pi-rewind",
73
- category: "productivity",
74
- verified: true,
75
- enablesFeatures: ["Checkpoint/rewind in session history"],
76
- icon: "⏪",
77
- },
78
- {
79
- id: "context-mode",
80
- name: "context-mode",
81
- description: "⚠️ First prompt uses ~8,181 extra tokens for setup; savings start from the second turn onward. Saves ~98% of context window by capturing tool results in SQLite, sandboxed code execution (ctx_execute), session continuity across compaction, and BM25 search over indexed docs.",
82
- package: "npm:context-mode",
83
- category: "productivity",
84
- verified: true,
85
- enablesFeatures: ["⚠️ ~8,181 tokens on first prompt — then saves ~98%", "Context window savings", "Sandboxed code execution (ctx_execute)", "Session continuity after compaction", "FTS5 knowledge base with BM25 search", "Commands: /ctx-stats, /ctx-doctor"],
86
- icon: "🧠",
87
- },
88
- {
89
- id: "pi-plan-mode",
90
- name: "pi-plan-mode",
91
- description: "Codex-like structured planning. Blocks mutating tools, adds plan_mode_question for structured user questions, and guides the agent through explore → intent → final plan flow.",
92
- package: "npm:@narumitw/pi-plan-mode",
93
- category: "productivity",
94
- verified: true,
95
- enablesFeatures: ["Plan mode with /plan command", "Structured plan_mode_question tool", "Tool safety in planning phase"],
96
- icon: "📋",
97
- },
98
- ];
99
- // ── Discovery ───────────────────────────────────────────────────────
100
- /** Get installed npm packages from ~/.pi/agent/npm/package.json */
101
- async function readInstalledPackages() {
102
- const installed = new Set();
103
- try {
104
- const pkg = JSON.parse(await readFile(npmPackagePath(), "utf-8"));
105
- for (const name of Object.keys(pkg.dependencies || {})) {
106
- installed.add(`npm:${name}`);
107
- installed.add(name);
108
- }
109
- }
110
- catch {
111
- // No npm dir yet — that's fine
112
- }
113
- return installed;
114
- }
115
- /** Scan ~/.pi/agent/extensions/ for *.ts files and subdirectories */
116
- async function scanExtensionsDir() {
117
- const results = [];
118
- try {
119
- const dir = extensionsDir();
120
- if (!existsSync(dir))
121
- return results;
122
- const entries = await readdir(dir, { withFileTypes: true });
123
- for (const entry of entries) {
124
- if (entry.name.endsWith(".ts")) {
125
- const name = entry.name.replace(/\.ts$/, "");
126
- const desc = await extractDescriptionFromExtension(join(dir, entry.name));
127
- results.push({
128
- name,
129
- description: desc || `Custom extension at ~/.pi/agent/extensions/${entry.name}`,
130
- source: "extensions_dir",
131
- enablesFeatures: ["Custom extension loaded"],
132
- });
133
- }
134
- else if (entry.isDirectory()) {
135
- results.push({
136
- name: entry.name,
137
- description: `Extension directory at ~/.pi/agent/extensions/${entry.name}/`,
138
- source: "extensions_dir",
139
- enablesFeatures: ["Custom extension loaded"],
140
- });
141
- }
142
- }
143
- }
144
- catch {
145
- // No extensions dir
146
- }
147
- return results;
148
- }
149
- /** Scan ~/.pi/agent/agents/ for *.md agent definitions */
150
- async function scanAgentsDir() {
151
- const agents = [];
152
- try {
153
- const dir = agentsDir();
154
- if (!existsSync(dir))
155
- return agents;
156
- const entries = await readdir(dir, { withFileTypes: true });
157
- for (const entry of entries) {
158
- if (!entry.name.endsWith(".md"))
159
- continue;
160
- const content = await readFile(join(dir, entry.name), "utf-8");
161
- const name = entry.name.replace(/\.md$/, "");
162
- // Parse YAML frontmatter (basic, no external dep)
163
- const fM = parseFrontmatter(content);
164
- agents.push({
165
- name: fM.name || name,
166
- description: fM.description || `Agent definition from ~/.pi/agent/agents/${entry.name}`,
167
- model: fM.model,
168
- tools: fM.tools?.split(",").map((t) => t.trim()).filter(Boolean),
169
- source: "file",
170
- });
171
- }
172
- }
173
- catch {
174
- // No agents dir
175
- }
176
- return agents;
177
- }
178
- /** Crude frontmatter parser — enough for YAML name/desc/model/tools */
179
- function parseFrontmatter(content) {
180
- const result = {};
181
- const match = content.match(/^---\n([\s\S]*?)\n---/);
182
- if (!match)
183
- return result;
184
- for (const line of match[1].split("\n")) {
185
- const sep = line.indexOf(":");
186
- if (sep === -1)
187
- continue;
188
- const key = line.slice(0, sep).trim();
189
- const value = line.slice(sep + 1).trim().replace(/^["']|["']$/g, "");
190
- result[key] = value;
191
- }
192
- return result;
193
- }
194
- /** Try to grab a one-liner description from an extension file */
195
- async function extractDescriptionFromExtension(filePath) {
196
- try {
197
- const content = await readFile(filePath, "utf-8");
198
- const lines = content.split("\n").slice(0, 30);
199
- for (const line of lines) {
200
- const trimmed = line.trim();
201
- // Look for description in JSDoc
202
- if (trimmed.startsWith("*") && !trimmed.startsWith("* "))
203
- continue;
204
- if (trimmed.startsWith("* ") && trimmed.length > 5) {
205
- const text = trimmed.replace(/^\*\s?/, "");
206
- if (text.length > 10)
207
- return text;
208
- }
209
- }
210
- }
211
- catch {
212
- // ignore
213
- }
214
- return null;
215
- }
216
- /** Read settings.json for configured packages */
217
- async function readConfiguredPackages() {
218
- try {
219
- const raw = await readFile(settingsPath(), "utf-8");
220
- const settings = JSON.parse(raw);
221
- return settings.packages || [];
222
- }
223
- catch {
224
- return [];
225
- }
226
- }
227
- // ── Main API ────────────────────────────────────────────────────────
228
- export async function discoverExtensions() {
229
- const installed = await readInstalledPackages();
230
- const configured = new Set(await readConfiguredPackages());
231
- // Scan filesystem
232
- const [extFiles, agents] = await Promise.all([
233
- scanExtensionsDir(),
234
- scanAgentsDir(),
235
- ]);
236
- // Build detected list from packages
237
- const detectedPkgs = [];
238
- for (const pkg of configured) {
239
- // Look up known info
240
- const known = knownExtensions.find((k) => k.package === pkg);
241
- detectedPkgs.push({
242
- name: known?.name ?? pkg.replace("npm:", ""),
243
- description: known?.description ?? `Installed package: ${pkg}`,
244
- source: "package",
245
- version: known ? undefined : undefined,
246
- package: pkg,
247
- agentTypes: known?.providesAgentTypes,
248
- enablesFeatures: known?.enablesFeatures,
249
- });
250
- }
251
- // Build recommended list with install status
252
- const allInstalled = new Set();
253
- for (const pkg of configured)
254
- allInstalled.add(pkg);
255
- installed.forEach((p) => allInstalled.add(p));
256
- // Also check if agents dir has the agent types
257
- const agentNames = new Set(agents.map((a) => a.name));
258
- for (const ext of extFiles)
259
- allInstalled.add(ext.name);
260
- const recommended = knownExtensions.map((k) => ({
261
- ...k,
262
- installed: allInstalled.has(k.package) ||
263
- allInstalled.has(k.id) ||
264
- allInstalled.has(k.package.replace("npm:", "").replace("@", "")) ||
265
- (k.providesAgentTypes?.some((t) => agentNames.has(t)) ?? false),
266
- }));
267
- return {
268
- detected: [...detectedPkgs, ...extFiles],
269
- recommended,
270
- agents,
271
- };
272
- }
273
- export async function uninstallExtension(packageName) {
274
- try {
275
- // Remove from settings.json packages array — match the EXACT spec as stored
276
- const settingsRaw = await readFile(settingsPath(), "utf-8");
277
- const settings = JSON.parse(settingsRaw);
278
- if (settings.packages) {
279
- // Remove by exact match, npm: prefixed variant, AND translated npm ref
280
- const translated = packageName.startsWith("git:") ? specToNpmRef(packageName) : packageName;
281
- settings.packages = settings.packages.filter((p) => p !== packageName &&
282
- p !== `npm:${packageName.replace(/^npm:/, "")}` &&
283
- p !== translated);
284
- }
285
- // Write settings back atomically
286
- const tmpPath = settingsPath() + ".tmp";
287
- const { writeFile, rename } = await import("node:fs/promises");
288
- await writeFile(tmpPath, JSON.stringify(settings, null, 2), "utf-8");
289
- await rename(tmpPath, settingsPath());
290
- // Uninstall via npm in the agent dir (keep settings clean even if npm uninstall fails).
291
- // For git: specs, npm stores the dependency value as the shorthand (e.g. "github:user/repo")
292
- // but the key is the package name from the repo's package.json. We need the key.
293
- const npmDir = join(piAgentDir(), "npm");
294
- try {
295
- const pkgName = findInstalledPackageName(packageName);
296
- if (pkgName) {
297
- execSync(`npm uninstall ${pkgName}`, {
298
- cwd: npmDir,
299
- stdio: "pipe",
300
- timeout: 60_000,
301
- });
302
- }
303
- }
304
- catch {
305
- // npm uninstall may fail if the package isn't actually installed
306
- // but we already cleaned the settings — best effort
307
- }
308
- return { success: true };
309
- }
310
- catch (err) {
311
- const message = err instanceof Error ? err.message : String(err);
312
- return { success: false, error: message };
313
- }
314
- }
315
- export async function installExtension(packageName) {
316
- try {
317
- // Strip npm: prefix if present
318
- const npmName = packageName.replace(/^npm:/, "");
319
- // Add to settings.json packages array
320
- const settingsRaw = await readFile(settingsPath(), "utf-8");
321
- const settings = JSON.parse(settingsRaw);
322
- if (!settings.packages)
323
- settings.packages = [];
324
- const pkgEntry = packageName.startsWith("npm:") ? packageName : `npm:${npmName}`;
325
- if (!settings.packages.includes(pkgEntry)) {
326
- settings.packages.push(pkgEntry);
327
- }
328
- // Write settings back atomically
329
- const tmpPath = settingsPath() + ".tmp";
330
- const { writeFile, rename } = await import("node:fs/promises");
331
- await writeFile(tmpPath, JSON.stringify(settings, null, 2), "utf-8");
332
- await rename(tmpPath, settingsPath());
333
- // Install via npm in the agent dir
334
- const npmDir = join(piAgentDir(), "npm");
335
- execSync(`npm install ${npmName}`, {
336
- cwd: npmDir,
337
- stdio: "pipe",
338
- timeout: 180_000,
339
- });
340
- return { success: true };
341
- }
342
- catch (err) {
343
- const message = err instanceof Error ? err.message : String(err);
344
- return { success: false, error: message };
345
- }
346
- }
347
- /**
348
- * Hold a short-lived cache of check results to avoid hammering npm
349
- * registry on every UI render. Cleared after 60 seconds.
350
- */
351
- let _updateCache;
352
- /** Clear the update cache so the next `checkExtensionUpdates()` hits npm fresh. */
353
- export function clearExtensionCache() {
354
- _updateCache = undefined;
355
- }
356
- /**
357
- * Check for updates on all installed npm packages.
358
- * Reads installed versions from node_modules, then fetches latest
359
- * from registry.npmjs.org. Results are cached for 60 seconds.
360
- */
361
- export async function checkExtensionUpdates() {
362
- const now = Date.now();
363
- if (_updateCache && now - _updateCache.timestamp < 60_000) {
364
- return _updateCache.data;
365
- }
366
- const results = [];
367
- const npmDir = join(piAgentDir(), "npm");
368
- // Read installed packages list
369
- let packageNames = [];
370
- try {
371
- const pkg = JSON.parse(await readFile(join(npmDir, "package.json"), "utf-8"));
372
- packageNames = Object.keys(pkg.dependencies || {});
373
- }
374
- catch {
375
- // No npm dir or no packages yet
376
- }
377
- for (const name of packageNames) {
378
- // Read installed version
379
- let installed;
380
- try {
381
- const installedPkg = JSON.parse(await readFile(join(npmDir, "node_modules", name, "package.json"), "utf-8"));
382
- installed = installedPkg.version;
383
- }
384
- catch {
385
- installed = undefined;
386
- }
387
- // Fetch latest from npm registry
388
- let latest;
389
- try {
390
- const controller = new AbortController();
391
- const timeout = setTimeout(() => controller.abort(), 10_000);
392
- const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(name)}/latest`, {
393
- signal: controller.signal,
394
- });
395
- clearTimeout(timeout);
396
- if (res.ok) {
397
- const data = await res.json();
398
- latest = data.version;
399
- }
400
- }
401
- catch {
402
- latest = undefined;
403
- }
404
- // Look up display name from curated list
405
- const known = knownExtensions.find((k) => k.package === `npm:${name}`);
406
- results.push({
407
- package: name,
408
- name: known?.name ?? name,
409
- installed,
410
- latest,
411
- updateAvailable: installed !== undefined && latest !== undefined && installed !== latest,
412
- });
413
- }
414
- _updateCache = { data: results, timestamp: now };
415
- return results;
416
- }
417
- /**
418
- * Manual install — accepts any pi install spec through the SDK config path
419
- * (settings.json + npm install). No CLI dependency.
420
- *
421
- * Supported formats:
422
- * npm:package-name → npm install
423
- * git:github.com/user/repo → npm install via git URL
424
- * pi install <spec> → strips prefix first (user typed the full command)
425
- */
426
- export async function installManualExtension(installSpec) {
427
- // Strip leading "pi install " or "pi " if the user typed the full CLI command
428
- const spec = installSpec
429
- .replace(/^pi\s+install\s+/i, "")
430
- .replace(/^pi\s+/i, "")
431
- .trim();
432
- if (spec.length === 0) {
433
- return { success: false, error: "Empty install spec." };
434
- }
435
- try {
436
- const settingsRaw = await readFile(settingsPath(), "utf-8");
437
- const settings = JSON.parse(settingsRaw);
438
- if (!settings.packages)
439
- settings.packages = [];
440
- // Add the raw spec (npm:..., git:...) to settings.json packages[]
441
- if (!settings.packages.includes(spec)) {
442
- settings.packages.push(spec);
443
- }
444
- // Write settings back atomically
445
- const tmpPath = settingsPath() + ".tmp";
446
- const { writeFile, rename } = await import("node:fs/promises");
447
- await writeFile(tmpPath, JSON.stringify(settings, null, 2), "utf-8");
448
- await rename(tmpPath, settingsPath());
449
- // Translate spec to an npm-compatible package reference
450
- const npmRef = specToNpmRef(spec);
451
- // Install via npm in the agent dir
452
- const npmDir = join(piAgentDir(), "npm");
453
- execSync(`npm install ${npmRef}`, {
454
- cwd: npmDir,
455
- stdio: "pipe",
456
- timeout: 180_000,
457
- });
458
- return { success: true };
459
- }
460
- catch (err) {
461
- const message = err instanceof Error ? err.message : String(err);
462
- return { success: false, error: message };
463
- }
464
- }
465
- /**
466
- * Translate a pi install spec to an npm package reference.
467
- *
468
- * npm:foo → foo
469
- * git:github.com/user/repo → github:user/repo (npm's GitHub shortcut)
470
- * git:github.com/user/repo.git → same logic
471
- * Anything else → passed through as-is
472
- */
473
- function specToNpmRef(spec) {
474
- if (spec.startsWith("npm:")) {
475
- return spec.slice(4);
476
- }
477
- if (spec.startsWith("git:")) {
478
- const path = spec.slice(4); // github.com/user/repo
479
- // npm supports "github:user/repo" directly
480
- const match = path.match(/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);
481
- if (match) {
482
- return `github:${match[1]}`;
483
- }
484
- // For other git hosts, use the full git+https URL
485
- return `git+https://${path}`;
486
- }
487
- // Pass through as-is (bare package name, local path, etc.)
488
- return spec;
489
- }
490
- /**
491
- * Given a pi install spec (npm:foo, git:github.com/user/repo, etc.),
492
- * find the actual package name as stored in npm's package.json
493
- * dependency key. Needed because git: specs get stored by their
494
- * repo package.json name (e.g. "@user/repo") not the install shorthand.
495
- *
496
- * Returns the package name, or null if not found.
497
- */
498
- function findInstalledPackageName(packageName) {
499
- try {
500
- const npmPkgPath = npmPackagePath();
501
- const npmPkg = JSON.parse(readFileSync(npmPkgPath, "utf-8"));
502
- const deps = npmPkg.dependencies ?? {};
503
- if (packageName.startsWith("npm:")) {
504
- const bareName = packageName.slice(4);
505
- if (deps[bareName] !== undefined)
506
- return bareName;
507
- // Try scoped variants
508
- if (deps[`@${bareName}`] !== undefined)
509
- return `@${bareName}`;
510
- return null;
511
- }
512
- // Resolve to npm shorthand / URL for matching against dependency values
513
- const npmRef = specToNpmRef(packageName);
514
- // First try matching by dependency value (git: specs store the shorthand as value)
515
- for (const [key, val] of Object.entries(deps)) {
516
- if (val === npmRef)
517
- return key;
518
- if (val.includes(npmRef))
519
- return key;
520
- }
521
- // Fallback: try matching the key
522
- for (const [key, val] of Object.entries(deps)) {
523
- if (key === packageName || key === npmRef)
524
- return key;
525
- }
526
- return null;
527
- }
528
- catch {
529
- return null;
530
- }
531
- }
532
- /**
533
- * Update an installed extension to the latest version via npm install.
534
- * Equivalent to re-running the install but without touching settings.json
535
- * (since it's already in the packages list).
536
- */
537
- export async function updateExtension(packageName) {
538
- try {
539
- const npmName = packageName.replace(/^npm:/, "");
540
- const npmDir = join(piAgentDir(), "npm");
541
- execSync(`npm install ${npmName}@latest`, {
542
- cwd: npmDir,
543
- stdio: "pipe",
544
- timeout: 180_000,
545
- });
546
- // Invalidate cache so next check picks up the new version
547
- _updateCache = undefined;
548
- return { success: true };
549
- }
550
- catch (err) {
551
- const message = err instanceof Error ? err.message : String(err);
552
- return { success: false, error: message };
553
- }
554
- }
555
- /** Built-in agent definitions (builtin defaults like pi-subagents examples) */
556
- export const builtinAgentDefs = [
557
- {
558
- name: "scout",
559
- description: "Fast codebase recon — returns compressed context for handoff to other agents",
560
- model: "claude-haiku-4-5",
561
- tools: ["read", "grep", "find", "ls", "bash"],
562
- source: "builtin",
563
- },
564
- {
565
- name: "planner",
566
- description: "Creates implementation plans with structured analysis",
567
- model: "claude-sonnet-4-5",
568
- tools: ["read", "grep", "find", "ls"],
569
- source: "builtin",
570
- },
571
- {
572
- name: "reviewer",
573
- description: "Code review & quality assurance — checks for issues, security, and style",
574
- model: "claude-sonnet-4-5",
575
- tools: ["read", "grep", "find", "ls", "bash"],
576
- source: "builtin",
577
- },
578
- {
579
- name: "worker",
580
- description: "General-purpose task execution with full capabilities",
581
- model: "claude-sonnet-4-5",
582
- tools: [],
583
- source: "builtin",
584
- },
585
- ];
586
- //# sourceMappingURL=extension-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-manager.js","sourceRoot":"","sources":["../src/extension-manager.ts"],"names":[],"mappings":"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"}
@@ -1,35 +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 type { ExtensionUIContext } from "@earendil-works/pi-coding-agent";
15
- import type { SSEClient } from "./session-registry.js";
16
- /**
17
- * Resolve a pending select/confirm/input request.
18
- * Called from `POST /api/v1/sessions/:id/extension-ui/respond`.
19
- */
20
- export declare function resolveExtensionUIRequest(requestId: string, value: unknown): boolean;
21
- /**
22
- * Cancel all pending requests (e.g., when the command is aborted or session
23
- * is disposed). Each pending promise rejects so the extension handler sees
24
- * a cancelled/interrupted state.
25
- */
26
- export declare function cancelAllPendingRequests(): void;
27
- /**
28
- * Create an `ExtensionUIContext` that bridges extension UI interactions
29
- * to the browser GUI via SSE events + REST callbacks.
30
- *
31
- * @param clients - The live session's connected SSE clients.
32
- * @param sessionId - The session ID, included in SSE events for routing.
33
- */
34
- export declare function createBridgeUIContext(clients: Set<SSEClient>, sessionId: string): ExtensionUIContext;
35
- //# sourceMappingURL=extension-ui-bridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension-ui-bridge.d.ts","sourceRoot":"","sources":["../src/extension-ui-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAiBvD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CA0BT;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAiB/C;AAOD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,EACvB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAqLpB"}