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,158 +0,0 @@
1
- /**
2
- * Tunnel service — orchestrates tunnel provider lifecycle with a start mutex
3
- * to prevent concurrent starts from orphaning child processes.
4
- *
5
- * Ported from OpenChamber's packages/web/server/lib/tunnels/index.js
6
- */
7
- import { TUNNEL_MODE_QUICK, TunnelServiceError, normalizeTunnelStartRequest, validateTunnelStartRequest, } from "./types.js";
8
- /**
9
- * Create the tunnel service.
10
- *
11
- * @param deps - Service dependencies (registry, controller accessors, port, warning callback).
12
- * @returns A TunnelService with start, stop, checkAvailability, getPublicUrl, etc.
13
- */
14
- export function createTunnelService(deps) {
15
- const { registry, getController, setController, getActivePort, onQuickTunnelWarning, } = deps;
16
- if (!registry) {
17
- throw new Error("Tunnel service requires a provider registry");
18
- }
19
- const resolveActiveMode = () => {
20
- const controller = getController();
21
- if (!controller || typeof controller.mode !== "string") {
22
- return null;
23
- }
24
- return controller.mode;
25
- };
26
- const resolveActiveProvider = () => {
27
- const controller = getController();
28
- if (!controller || typeof controller.provider !== "string") {
29
- return null;
30
- }
31
- return controller.provider;
32
- };
33
- const stop = () => {
34
- const controller = getController();
35
- if (!controller) {
36
- return false;
37
- }
38
- const providerId = typeof controller.provider === "string" ? controller.provider : "";
39
- const provider = providerId ? registry.get(providerId) : null;
40
- if (provider?.stop) {
41
- provider.stop(controller);
42
- }
43
- else {
44
- controller.stop?.();
45
- }
46
- setController(null);
47
- return true;
48
- };
49
- const checkAvailability = async (providerId) => {
50
- const provider = registry.get(providerId);
51
- if (!provider) {
52
- throw new TunnelServiceError("provider_unsupported", `Unsupported tunnel provider: ${providerId}`);
53
- }
54
- const result = await provider.checkAvailability();
55
- return result;
56
- };
57
- // Mutex to prevent concurrent tunnel starts from orphaning child processes.
58
- let startLock = Promise.resolve();
59
- const start = async (rawRequest, options = {}) => {
60
- let releaseLock;
61
- const lockPromise = new Promise((resolve) => { releaseLock = resolve; });
62
- const previousLock = startLock;
63
- startLock = lockPromise;
64
- await previousLock;
65
- try {
66
- const request = normalizeTunnelStartRequest(rawRequest);
67
- const provider = registry.get(request.provider);
68
- if (!provider) {
69
- throw new TunnelServiceError("provider_unsupported", `Unsupported tunnel provider: ${request.provider}`);
70
- }
71
- validateTunnelStartRequest(request, provider.capabilities);
72
- let publicUrl = getController() ? provider.resolvePublicUrl(getController()) : null;
73
- const activeMode = resolveActiveMode();
74
- const activeProvider = resolveActiveProvider();
75
- if (publicUrl && (activeMode !== request.mode || activeProvider !== request.provider)) {
76
- stop();
77
- publicUrl = null;
78
- }
79
- if (!publicUrl) {
80
- const availability = await provider.checkAvailability();
81
- if (!availability?.available) {
82
- const missingDependencyMessage = typeof availability?.message === "string" && availability.message.trim().length > 0
83
- ? availability.message
84
- : `Required dependency for provider '${request.provider}' is missing`;
85
- throw new TunnelServiceError("missing_dependency", missingDependencyMessage);
86
- }
87
- const activePort = Number.isFinite(getActivePort?.()) ? getActivePort() : null;
88
- const originUrl = activePort !== null ? `http://127.0.0.1:${activePort}` : undefined;
89
- let controller;
90
- try {
91
- controller = await provider.start(request, {
92
- activePort,
93
- originUrl,
94
- ...options,
95
- });
96
- }
97
- catch (error) {
98
- if (error instanceof TunnelServiceError) {
99
- throw error;
100
- }
101
- const message = error instanceof Error && error.message.trim().length > 0
102
- ? error.message
103
- : "Failed to start tunnel";
104
- throw new TunnelServiceError("startup_failed", message);
105
- }
106
- controller.provider = request.provider;
107
- setController(controller);
108
- publicUrl = provider.resolvePublicUrl(controller);
109
- if (!publicUrl) {
110
- stop();
111
- throw new TunnelServiceError("startup_failed", "Tunnel started but no public URL was assigned");
112
- }
113
- if (request.mode === TUNNEL_MODE_QUICK) {
114
- onQuickTunnelWarning();
115
- }
116
- }
117
- return {
118
- publicUrl,
119
- request,
120
- activeMode: request.mode,
121
- provider: request.provider,
122
- providerMetadata: provider.getMetadata?.(getController()) ?? null,
123
- };
124
- }
125
- finally {
126
- releaseLock?.();
127
- }
128
- };
129
- const getPublicUrl = () => {
130
- const controller = getController();
131
- if (!controller) {
132
- return null;
133
- }
134
- const provider = registry.get(controller.provider);
135
- if (!provider) {
136
- return controller.getPublicUrl?.() ?? null;
137
- }
138
- return provider.resolvePublicUrl(controller);
139
- };
140
- const getProviderMetadata = () => {
141
- const controller = getController();
142
- if (!controller) {
143
- return null;
144
- }
145
- const provider = registry.get(controller.provider);
146
- return provider?.getMetadata?.(controller) ?? null;
147
- };
148
- return {
149
- start,
150
- stop,
151
- checkAvailability,
152
- getPublicUrl,
153
- getProviderMetadata,
154
- resolveActiveMode,
155
- resolveActiveProvider,
156
- };
157
- }
158
- //# sourceMappingURL=service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/tunnel/service.ts"],"names":[],"mappings":"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"}
@@ -1,166 +0,0 @@
1
- /**
2
- * Tunnel module types — constants, error class, normalizers, validators,
3
- * and the provider interface contract.
4
- *
5
- * Ported from OpenChamber's packages/web/server/lib/tunnels/types.js
6
- * and typed for pi-kot.
7
- */
8
- export declare const TUNNEL_PROVIDER_CLOUDFLARE: "cloudflare";
9
- export declare const TUNNEL_PROVIDER_NGROK: "ngrok";
10
- export type TunnelProviderId = typeof TUNNEL_PROVIDER_CLOUDFLARE | typeof TUNNEL_PROVIDER_NGROK | (string & {});
11
- export declare const TUNNEL_MODE_QUICK: "quick";
12
- export declare const TUNNEL_MODE_MANAGED_REMOTE: "managed-remote";
13
- export declare const TUNNEL_MODE_MANAGED_LOCAL: "managed-local";
14
- export type TunnelMode = typeof TUNNEL_MODE_QUICK | typeof TUNNEL_MODE_MANAGED_REMOTE | typeof TUNNEL_MODE_MANAGED_LOCAL;
15
- export declare const TUNNEL_INTENT_EPHEMERAL_PUBLIC: "ephemeral-public";
16
- export declare const TUNNEL_INTENT_PERSISTENT_PUBLIC: "persistent-public";
17
- export declare const TUNNEL_INTENT_PRIVATE_NETWORK: "private-network";
18
- export type TunnelIntent = typeof TUNNEL_INTENT_EPHEMERAL_PUBLIC | typeof TUNNEL_INTENT_PERSISTENT_PUBLIC | typeof TUNNEL_INTENT_PRIVATE_NETWORK;
19
- export declare class TunnelServiceError extends Error {
20
- readonly code: string;
21
- readonly details: unknown;
22
- constructor(code: string, message: string, details?: unknown);
23
- }
24
- export interface TunnelModeDescriptor {
25
- key: string;
26
- label: string;
27
- intent: string;
28
- requires: string[];
29
- supports: string[];
30
- stability: string;
31
- }
32
- export interface TunnelProviderCapabilities {
33
- provider: string;
34
- defaults: {
35
- mode: string;
36
- optionDefaults: Record<string, unknown>;
37
- };
38
- modes: TunnelModeDescriptor[];
39
- }
40
- export interface TunnelAvailability {
41
- available: boolean;
42
- path: string | null;
43
- version: string | null;
44
- dependency?: string;
45
- installCommand?: string;
46
- installUrl?: string;
47
- platform?: string;
48
- message?: string;
49
- }
50
- export interface TunnelStartRequest {
51
- provider: string;
52
- mode: string;
53
- intent?: string;
54
- configPath?: string | null;
55
- token?: string;
56
- hostname?: string;
57
- }
58
- export interface TunnelContext {
59
- activePort?: number | null;
60
- originUrl?: string;
61
- }
62
- export interface TunnelController {
63
- /** Set by the provider on start(). */
64
- mode: string;
65
- /** Set by the service after start(). */
66
- provider: string;
67
- /** Kill the tunnel process. */
68
- stop(): void;
69
- /** Resolve the public URL from internal state. */
70
- getPublicUrl(): string | null;
71
- /** The underlying child process, if any. */
72
- process?: import("node:child_process").ChildProcess;
73
- /** Resolve the effective config path (cloudflare managed-local). */
74
- getEffectiveConfigPath?(): string | null;
75
- /** Resolve the resolved hostname (cloudflare managed-local). */
76
- getResolvedHostname?(): string | null;
77
- }
78
- export interface TunnelCheck {
79
- id: string;
80
- label: string;
81
- status: "pass" | "fail" | "warn";
82
- detail: string;
83
- }
84
- export interface TunnelModeDiagnosis {
85
- mode: string;
86
- checks: TunnelCheck[];
87
- summary: {
88
- ready: boolean;
89
- failures: number;
90
- warnings: number;
91
- };
92
- ready: boolean;
93
- blockers: string[];
94
- }
95
- export interface TunnelDiagnosis {
96
- providerChecks: TunnelCheck[];
97
- modes: TunnelModeDiagnosis[];
98
- }
99
- export interface DoctorRequest {
100
- mode?: string | null;
101
- hostname?: string;
102
- token?: string;
103
- tokenProvided?: boolean;
104
- hostnameProvided?: boolean;
105
- configPath?: string | null;
106
- hasSavedManagedRemoteProfile?: boolean;
107
- }
108
- export interface TunnelProvider {
109
- readonly id: string;
110
- readonly capabilities: TunnelProviderCapabilities;
111
- checkAvailability(): Promise<TunnelAvailability>;
112
- diagnose?(request?: DoctorRequest, context?: {
113
- capabilities: TunnelProviderCapabilities;
114
- }): Promise<TunnelDiagnosis>;
115
- start(request: TunnelStartRequest, context: TunnelContext): Promise<TunnelController>;
116
- stop(controller: TunnelController): void;
117
- resolvePublicUrl(controller: TunnelController): string | null;
118
- getMetadata?(controller: TunnelController | null): Record<string, unknown> | null;
119
- }
120
- export interface TunnelStartResult {
121
- publicUrl: string;
122
- request: TunnelStartRequest;
123
- activeMode: string;
124
- provider: string;
125
- providerMetadata: Record<string, unknown> | null;
126
- }
127
- export interface TunnelServiceDeps {
128
- registry: TunnelProviderRegistry;
129
- getController: () => TunnelController | null;
130
- setController: (controller: TunnelController | null) => void;
131
- getActivePort: () => number | null;
132
- onQuickTunnelWarning: () => void;
133
- }
134
- export interface TunnelService {
135
- start(rawRequest: Partial<TunnelStartRequest>, options?: Record<string, unknown>): Promise<TunnelStartResult>;
136
- stop(): boolean;
137
- checkAvailability(providerId: string): Promise<TunnelAvailability>;
138
- getPublicUrl(): string | null;
139
- getProviderMetadata(): Record<string, unknown> | null;
140
- resolveActiveMode(): string | null;
141
- resolveActiveProvider(): string | null;
142
- }
143
- export interface TunnelProviderRegistry {
144
- register(provider: TunnelProvider): TunnelProvider;
145
- get(providerId: string): TunnelProvider | null;
146
- list(): TunnelProvider[];
147
- listCapabilities(): TunnelProviderCapabilities[];
148
- seal(): void;
149
- }
150
- export declare function isPathWithinDirectory(candidatePath: string, directoryPath: string, platform?: string): boolean;
151
- export declare function resolveTunnelConfigPath(value: string, home?: string, platform?: string): string;
152
- export declare function normalizeTunnelProvider(value: unknown): string;
153
- export declare function normalizeTunnelMode(value: unknown): string;
154
- export declare function normalizeOptionalPath(value: unknown): string | null | undefined;
155
- export declare function isSupportedTunnelMode(mode: string): boolean;
156
- export interface NormalizedTunnelStartRequest {
157
- provider: string;
158
- mode: string;
159
- intent?: string;
160
- configPath?: string | null;
161
- token: string;
162
- hostname: string;
163
- }
164
- export declare function normalizeTunnelStartRequest(input?: Record<string, unknown>, defaults?: Record<string, unknown>): NormalizedTunnelStartRequest;
165
- export declare function validateTunnelStartRequest(request: NormalizedTunnelStartRequest, capabilities: TunnelProviderCapabilities): void;
166
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tunnel/types.ts"],"names":[],"mappings":"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"}
@@ -1,217 +0,0 @@
1
- /**
2
- * Tunnel module types — constants, error class, normalizers, validators,
3
- * and the provider interface contract.
4
- *
5
- * Ported from OpenChamber's packages/web/server/lib/tunnels/types.js
6
- * and typed for pi-kot.
7
- */
8
- import path from "node:path";
9
- import os from "node:os";
10
- // ── Provider constants ────────────────────────────────────────────────────
11
- export const TUNNEL_PROVIDER_CLOUDFLARE = "cloudflare";
12
- export const TUNNEL_PROVIDER_NGROK = "ngrok";
13
- // ── Mode constants ────────────────────────────────────────────────────────
14
- export const TUNNEL_MODE_QUICK = "quick";
15
- export const TUNNEL_MODE_MANAGED_REMOTE = "managed-remote";
16
- export const TUNNEL_MODE_MANAGED_LOCAL = "managed-local";
17
- // ── Intent constants ──────────────────────────────────────────────────────
18
- export const TUNNEL_INTENT_EPHEMERAL_PUBLIC = "ephemeral-public";
19
- export const TUNNEL_INTENT_PERSISTENT_PUBLIC = "persistent-public";
20
- export const TUNNEL_INTENT_PRIVATE_NETWORK = "private-network";
21
- // ── Sets for validation ───────────────────────────────────────────────────
22
- const SUPPORTED_TUNNEL_PROVIDERS = new Set([
23
- TUNNEL_PROVIDER_CLOUDFLARE,
24
- TUNNEL_PROVIDER_NGROK,
25
- ]);
26
- const SUPPORTED_TUNNEL_MODES = new Set([
27
- TUNNEL_MODE_QUICK,
28
- TUNNEL_MODE_MANAGED_REMOTE,
29
- TUNNEL_MODE_MANAGED_LOCAL,
30
- ]);
31
- const SUPPORTED_TUNNEL_INTENTS = new Set([
32
- TUNNEL_INTENT_EPHEMERAL_PUBLIC,
33
- TUNNEL_INTENT_PERSISTENT_PUBLIC,
34
- TUNNEL_INTENT_PRIVATE_NETWORK,
35
- ]);
36
- // ── Error class ───────────────────────────────────────────────────────────
37
- export class TunnelServiceError extends Error {
38
- code;
39
- details;
40
- constructor(code, message, details = null) {
41
- super(message);
42
- this.name = "TunnelServiceError";
43
- this.code = code;
44
- this.details = details;
45
- }
46
- }
47
- // ── Path helpers ──────────────────────────────────────────────────────────
48
- function getPathApiForPlatform(platform) {
49
- return platform === "win32" ? path.win32 : path;
50
- }
51
- export function isPathWithinDirectory(candidatePath, directoryPath, platform = process.platform) {
52
- if (typeof candidatePath !== "string" || typeof directoryPath !== "string") {
53
- return false;
54
- }
55
- const pathApi = getPathApiForPlatform(platform);
56
- const resolvedCandidate = pathApi.resolve(candidatePath);
57
- const resolvedDirectory = pathApi.resolve(directoryPath);
58
- const comparableCandidate = platform === "win32" ? resolvedCandidate.toLowerCase() : resolvedCandidate;
59
- const comparableDirectory = platform === "win32" ? resolvedDirectory.toLowerCase() : resolvedDirectory;
60
- const directoryPrefix = comparableDirectory.endsWith(pathApi.sep)
61
- ? comparableDirectory
62
- : `${comparableDirectory}${pathApi.sep}`;
63
- return comparableCandidate === comparableDirectory || comparableCandidate.startsWith(directoryPrefix);
64
- }
65
- export function resolveTunnelConfigPath(value, home = os.homedir(), platform = process.platform) {
66
- const pathApi = getPathApiForPlatform(platform);
67
- let resolved;
68
- if (value === "~") {
69
- resolved = home;
70
- }
71
- else if (value.startsWith("~/") || value.startsWith("~\\")) {
72
- resolved = pathApi.join(home, value.slice(2));
73
- }
74
- else {
75
- resolved = pathApi.resolve(value);
76
- }
77
- if (!isPathWithinDirectory(resolved, home, platform)) {
78
- throw new TunnelServiceError("validation_error", `Config path must be within the home directory (${home}). Got: ${resolved}`);
79
- }
80
- return resolved;
81
- }
82
- // ── Normalizers ───────────────────────────────────────────────────────────
83
- export function normalizeTunnelProvider(value) {
84
- if (typeof value !== "string") {
85
- return TUNNEL_PROVIDER_CLOUDFLARE;
86
- }
87
- const provider = value.trim().toLowerCase();
88
- if (!provider || !SUPPORTED_TUNNEL_PROVIDERS.has(provider)) {
89
- return TUNNEL_PROVIDER_CLOUDFLARE;
90
- }
91
- return provider;
92
- }
93
- export function normalizeTunnelMode(value) {
94
- if (typeof value !== "string") {
95
- return TUNNEL_MODE_QUICK;
96
- }
97
- const mode = value.trim().toLowerCase();
98
- if (!mode) {
99
- return TUNNEL_MODE_QUICK;
100
- }
101
- if (mode === TUNNEL_MODE_QUICK)
102
- return TUNNEL_MODE_QUICK;
103
- return TUNNEL_MODE_QUICK;
104
- }
105
- function normalizeTunnelIntent(value) {
106
- if (typeof value !== "string") {
107
- return undefined;
108
- }
109
- const intent = value.trim().toLowerCase();
110
- if (!intent || !SUPPORTED_TUNNEL_INTENTS.has(intent)) {
111
- return undefined;
112
- }
113
- return intent;
114
- }
115
- function modeIntentFallback(mode) {
116
- if (mode === TUNNEL_MODE_QUICK)
117
- return TUNNEL_INTENT_EPHEMERAL_PUBLIC;
118
- return undefined;
119
- }
120
- function normalizeTunnelModeForRequest(value) {
121
- if (typeof value === "string") {
122
- const mode = value.trim().toLowerCase();
123
- if (mode === TUNNEL_MODE_QUICK) {
124
- return mode;
125
- }
126
- }
127
- return TUNNEL_MODE_QUICK;
128
- }
129
- export function normalizeOptionalPath(value) {
130
- if (value === null) {
131
- return null;
132
- }
133
- if (typeof value !== "string") {
134
- return undefined;
135
- }
136
- const trimmed = value.trim();
137
- if (!trimmed) {
138
- return null;
139
- }
140
- return resolveTunnelConfigPath(trimmed);
141
- }
142
- export function isSupportedTunnelMode(mode) {
143
- return SUPPORTED_TUNNEL_MODES.has(mode);
144
- }
145
- export function normalizeTunnelStartRequest(input = {}, defaults = {}) {
146
- const provider = normalizeTunnelProvider(input.provider ?? defaults.provider);
147
- const mode = normalizeTunnelModeForRequest(input.mode ?? defaults.mode);
148
- const explicitIntent = normalizeTunnelIntent(input.intent ?? defaults.intent);
149
- const intent = explicitIntent ?? modeIntentFallback(mode);
150
- const configPathValue = Object.prototype.hasOwnProperty.call(input, "configPath")
151
- ? input.configPath
152
- : defaults.configPath;
153
- const configPath = normalizeOptionalPath(configPathValue);
154
- const rawToken = input.token ?? defaults.token;
155
- const token = typeof rawToken === "string"
156
- ? rawToken.trim()
157
- : "";
158
- const rawHostname = input.hostname ?? defaults.hostname;
159
- const hostname = typeof rawHostname === "string"
160
- ? rawHostname.trim().toLowerCase()
161
- : "";
162
- return {
163
- provider,
164
- mode,
165
- intent,
166
- configPath,
167
- token,
168
- hostname,
169
- };
170
- }
171
- // ── Validator ─────────────────────────────────────────────────────────────
172
- export function validateTunnelStartRequest(request, capabilities) {
173
- if (!request || typeof request !== "object") {
174
- throw new TunnelServiceError("validation_error", "Tunnel start request must be an object");
175
- }
176
- if (!request.provider) {
177
- throw new TunnelServiceError("validation_error", "Tunnel provider is required");
178
- }
179
- if (!isSupportedTunnelMode(request.mode)) {
180
- throw new TunnelServiceError("mode_unsupported", `Unsupported tunnel mode: ${request.mode}`);
181
- }
182
- if (!capabilities || capabilities.provider !== request.provider) {
183
- throw new TunnelServiceError("provider_unsupported", `Unsupported tunnel provider: ${request.provider}`);
184
- }
185
- if (!Array.isArray(capabilities.modes)) {
186
- throw new TunnelServiceError("mode_unsupported", `Provider '${request.provider}' does not declare tunnel modes`);
187
- }
188
- const modeDescriptor = capabilities.modes.find((entry) => entry?.key === request.mode);
189
- if (!modeDescriptor) {
190
- throw new TunnelServiceError("mode_unsupported", `Provider '${request.provider}' does not support mode '${request.mode}'`);
191
- }
192
- if (typeof request.intent === "string" && request.intent.length > 0) {
193
- if (!SUPPORTED_TUNNEL_INTENTS.has(request.intent)) {
194
- throw new TunnelServiceError("validation_error", `Unsupported tunnel intent: ${request.intent}`);
195
- }
196
- if (modeDescriptor.intent !== request.intent) {
197
- throw new TunnelServiceError("validation_error", `Tunnel intent '${request.intent}' does not match mode '${request.mode}' (expected '${modeDescriptor.intent}')`);
198
- }
199
- }
200
- const requiredFields = Array.isArray(modeDescriptor.requires) ? modeDescriptor.requires : [];
201
- if (requiredFields.includes("token")) {
202
- if (!request.token) {
203
- throw new TunnelServiceError("validation_error", "Managed remote tunnel token is required");
204
- }
205
- }
206
- if (requiredFields.includes("hostname")) {
207
- if (!request.hostname) {
208
- throw new TunnelServiceError("validation_error", "Managed remote tunnel hostname is required");
209
- }
210
- }
211
- if (requiredFields.includes("configPath")) {
212
- if (request.configPath === undefined || request.configPath === null || request.configPath === "") {
213
- throw new TunnelServiceError("validation_error", `Mode '${request.mode}' requires a configPath`);
214
- }
215
- }
216
- }
217
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tunnel/types.ts"],"names":[],"mappings":"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"}