pi-kot 0.1.21 → 0.1.22

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 (348) hide show
  1. package/bin/pi-kot.mjs +148 -0
  2. package/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  3. package/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  4. package/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  5. package/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  6. package/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  7. package/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  8. package/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  9. package/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  10. package/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  11. package/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  12. package/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  13. package/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  14. package/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  15. package/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  16. package/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  17. package/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  18. package/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  19. package/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  20. package/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  21. package/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  22. package/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  23. package/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  24. package/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  25. package/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  26. package/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  27. package/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  28. package/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  29. package/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  30. package/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  31. package/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  32. package/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  33. package/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  34. package/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  35. package/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  36. package/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  37. package/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  38. package/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  39. package/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  40. package/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  41. package/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  42. package/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  43. package/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  44. package/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  45. package/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  46. package/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  47. package/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  48. package/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  49. package/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  50. package/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  51. package/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  52. package/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  53. package/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  54. package/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  55. package/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  56. package/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  57. package/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  58. package/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  59. package/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  60. package/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  61. package/client/assets/index-CE_Na97I.js +75 -0
  62. package/client/assets/index-CE_Na97I.js.map +1 -0
  63. package/client/assets/index-QP95zkpd.css +1 -0
  64. package/client/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  65. package/client/assets/vendor-codemirror-CD3uCqRj.js +48 -0
  66. package/client/assets/vendor-codemirror-CD3uCqRj.js.map +1 -0
  67. package/client/assets/vendor-icons-W8thHNMl.js +2 -0
  68. package/client/assets/vendor-icons-W8thHNMl.js.map +1 -0
  69. package/client/assets/vendor-katex-4z5K3dyr.js +260 -0
  70. package/client/assets/vendor-katex-4z5K3dyr.js.map +1 -0
  71. package/client/assets/vendor-katex-CYlHEDRF.css +1 -0
  72. package/client/assets/vendor-markdown-BSzxNR_7.js +35 -0
  73. package/client/assets/vendor-markdown-BSzxNR_7.js.map +1 -0
  74. package/client/assets/vendor-prism-CQGp13s2.js +4 -0
  75. package/client/assets/vendor-prism-CQGp13s2.js.map +1 -0
  76. package/client/assets/vendor-xterm-BrP-ENHg.css +1 -0
  77. package/client/assets/vendor-xterm-DXwh06H3.js +36 -0
  78. package/client/assets/vendor-xterm-DXwh06H3.js.map +1 -0
  79. package/client/index.html +23 -0
  80. package/package.json +5 -3
  81. package/server/ask-user-question/envelope.d.ts +11 -0
  82. package/server/ask-user-question/envelope.d.ts.map +1 -0
  83. package/server/ask-user-question/envelope.js +41 -0
  84. package/server/ask-user-question/envelope.js.map +1 -0
  85. package/server/ask-user-question/plan-mode-question-tool.d.ts +26 -0
  86. package/server/ask-user-question/plan-mode-question-tool.d.ts.map +1 -0
  87. package/server/ask-user-question/plan-mode-question-tool.js +273 -0
  88. package/server/ask-user-question/plan-mode-question-tool.js.map +1 -0
  89. package/server/ask-user-question/prompt-strings.d.ts +4 -0
  90. package/server/ask-user-question/prompt-strings.d.ts.map +1 -0
  91. package/server/ask-user-question/prompt-strings.js +18 -0
  92. package/server/ask-user-question/prompt-strings.js.map +1 -0
  93. package/server/ask-user-question/registry.d.ts +39 -0
  94. package/server/ask-user-question/registry.d.ts.map +1 -0
  95. package/server/ask-user-question/registry.js +124 -0
  96. package/server/ask-user-question/registry.js.map +1 -0
  97. package/server/ask-user-question/tool.d.ts +4 -0
  98. package/server/ask-user-question/tool.d.ts.map +1 -0
  99. package/server/ask-user-question/tool.js +68 -0
  100. package/server/ask-user-question/tool.js.map +1 -0
  101. package/server/ask-user-question/types.d.ts +50 -0
  102. package/server/ask-user-question/types.d.ts.map +1 -0
  103. package/server/ask-user-question/types.js +7 -0
  104. package/server/ask-user-question/types.js.map +1 -0
  105. package/server/ask-user-question/validate.d.ts +3 -0
  106. package/server/ask-user-question/validate.d.ts.map +1 -0
  107. package/server/ask-user-question/validate.js +67 -0
  108. package/server/ask-user-question/validate.js.map +1 -0
  109. package/server/clone-provider.d.ts +55 -0
  110. package/server/clone-provider.d.ts.map +1 -0
  111. package/server/clone-provider.js +172 -0
  112. package/server/clone-provider.js.map +1 -0
  113. package/server/compaction-cards.d.ts +62 -0
  114. package/server/compaction-cards.d.ts.map +1 -0
  115. package/server/compaction-cards.js +180 -0
  116. package/server/compaction-cards.js.map +1 -0
  117. package/server/compaction-continuation.d.ts +112 -0
  118. package/server/compaction-continuation.d.ts.map +1 -0
  119. package/server/compaction-continuation.js +65 -0
  120. package/server/compaction-continuation.js.map +1 -0
  121. package/server/config-store.d.ts +97 -0
  122. package/server/config-store.d.ts.map +1 -0
  123. package/server/config-store.js +351 -0
  124. package/server/config-store.js.map +1 -0
  125. package/server/config.d.ts +24 -0
  126. package/server/config.d.ts.map +1 -0
  127. package/server/config.js +67 -0
  128. package/server/config.js.map +1 -0
  129. package/server/event-stream.d.ts +28 -0
  130. package/server/event-stream.d.ts.map +1 -0
  131. package/server/event-stream.js +153 -0
  132. package/server/event-stream.js.map +1 -0
  133. package/server/extension-manager.d.ts +116 -0
  134. package/server/extension-manager.d.ts.map +1 -0
  135. package/server/extension-manager.js +586 -0
  136. package/server/extension-manager.js.map +1 -0
  137. package/server/extension-scanner.d.ts +26 -0
  138. package/server/extension-scanner.d.ts.map +1 -0
  139. package/server/extension-scanner.js +107 -0
  140. package/server/extension-scanner.js.map +1 -0
  141. package/server/extension-ui-bridge.d.ts +35 -0
  142. package/server/extension-ui-bridge.d.ts.map +1 -0
  143. package/server/extension-ui-bridge.js +228 -0
  144. package/server/extension-ui-bridge.js.map +1 -0
  145. package/server/file-manager.d.ts +79 -0
  146. package/server/file-manager.d.ts.map +1 -0
  147. package/server/file-manager.js +535 -0
  148. package/server/file-manager.js.map +1 -0
  149. package/server/file-searcher.d.ts +29 -0
  150. package/server/file-searcher.d.ts.map +1 -0
  151. package/server/file-searcher.js +318 -0
  152. package/server/file-searcher.js.map +1 -0
  153. package/server/git-operations.d.ts +346 -0
  154. package/server/git-operations.d.ts.map +1 -0
  155. package/server/git-operations.js +884 -0
  156. package/server/git-operations.js.map +1 -0
  157. package/server/hunk-stager.d.ts +56 -0
  158. package/server/hunk-stager.d.ts.map +1 -0
  159. package/server/hunk-stager.js +137 -0
  160. package/server/hunk-stager.js.map +1 -0
  161. package/server/index.d.ts +21 -0
  162. package/server/index.d.ts.map +1 -0
  163. package/server/index.js +262 -0
  164. package/server/index.js.map +1 -0
  165. package/server/mcp/config.d.ts +23 -0
  166. package/server/mcp/config.d.ts.map +1 -0
  167. package/server/mcp/config.js +139 -0
  168. package/server/mcp/config.js.map +1 -0
  169. package/server/mcp/manager.d.ts +40 -0
  170. package/server/mcp/manager.d.ts.map +1 -0
  171. package/server/mcp/manager.js +435 -0
  172. package/server/mcp/manager.js.map +1 -0
  173. package/server/mcp/stdio-trust.d.ts +5 -0
  174. package/server/mcp/stdio-trust.d.ts.map +1 -0
  175. package/server/mcp/stdio-trust.js +78 -0
  176. package/server/mcp/stdio-trust.js.map +1 -0
  177. package/server/mcp/tool-bridge.d.ts +33 -0
  178. package/server/mcp/tool-bridge.d.ts.map +1 -0
  179. package/server/mcp/tool-bridge.js +138 -0
  180. package/server/mcp/tool-bridge.js.map +1 -0
  181. package/server/orchestration/config.d.ts +5 -0
  182. package/server/orchestration/config.d.ts.map +1 -0
  183. package/server/orchestration/config.js +35 -0
  184. package/server/orchestration/config.js.map +1 -0
  185. package/server/orchestration/event-bridge.d.ts +32 -0
  186. package/server/orchestration/event-bridge.d.ts.map +1 -0
  187. package/server/orchestration/event-bridge.js +110 -0
  188. package/server/orchestration/event-bridge.js.map +1 -0
  189. package/server/orchestration/inbox.d.ts +9 -0
  190. package/server/orchestration/inbox.d.ts.map +1 -0
  191. package/server/orchestration/inbox.js +186 -0
  192. package/server/orchestration/inbox.js.map +1 -0
  193. package/server/orchestration/init.d.ts +2 -0
  194. package/server/orchestration/init.d.ts.map +1 -0
  195. package/server/orchestration/init.js +22 -0
  196. package/server/orchestration/init.js.map +1 -0
  197. package/server/orchestration/store.d.ts +33 -0
  198. package/server/orchestration/store.d.ts.map +1 -0
  199. package/server/orchestration/store.js +331 -0
  200. package/server/orchestration/store.js.map +1 -0
  201. package/server/orchestration/tools.d.ts +15 -0
  202. package/server/orchestration/tools.d.ts.map +1 -0
  203. package/server/orchestration/tools.js +621 -0
  204. package/server/orchestration/tools.js.map +1 -0
  205. package/server/orchestration/types.d.ts +68 -0
  206. package/server/orchestration/types.d.ts.map +1 -0
  207. package/server/orchestration/types.js +43 -0
  208. package/server/orchestration/types.js.map +1 -0
  209. package/server/orchestration/worker-lifecycle.d.ts +15 -0
  210. package/server/orchestration/worker-lifecycle.d.ts.map +1 -0
  211. package/server/orchestration/worker-lifecycle.js +45 -0
  212. package/server/orchestration/worker-lifecycle.js.map +1 -0
  213. package/server/path-refs.d.ts +5 -0
  214. package/server/path-refs.d.ts.map +1 -0
  215. package/server/path-refs.js +249 -0
  216. package/server/path-refs.js.map +1 -0
  217. package/server/routes/_schemas.d.ts +16 -0
  218. package/server/routes/_schemas.d.ts.map +1 -0
  219. package/server/routes/_schemas.js +12 -0
  220. package/server/routes/_schemas.js.map +1 -0
  221. package/server/routes/ask-user-question.d.ts +3 -0
  222. package/server/routes/ask-user-question.d.ts.map +1 -0
  223. package/server/routes/ask-user-question.js +105 -0
  224. package/server/routes/ask-user-question.js.map +1 -0
  225. package/server/routes/auth.d.ts +8 -0
  226. package/server/routes/auth.d.ts.map +1 -0
  227. package/server/routes/auth.js +225 -0
  228. package/server/routes/auth.js.map +1 -0
  229. package/server/routes/config.d.ts +3 -0
  230. package/server/routes/config.d.ts.map +1 -0
  231. package/server/routes/config.js +602 -0
  232. package/server/routes/config.js.map +1 -0
  233. package/server/routes/control.d.ts +3 -0
  234. package/server/routes/control.d.ts.map +1 -0
  235. package/server/routes/control.js +365 -0
  236. package/server/routes/control.js.map +1 -0
  237. package/server/routes/exec.d.ts +3 -0
  238. package/server/routes/exec.d.ts.map +1 -0
  239. package/server/routes/exec.js +426 -0
  240. package/server/routes/exec.js.map +1 -0
  241. package/server/routes/extension-commands.d.ts +22 -0
  242. package/server/routes/extension-commands.d.ts.map +1 -0
  243. package/server/routes/extension-commands.js +178 -0
  244. package/server/routes/extension-commands.js.map +1 -0
  245. package/server/routes/extensions.d.ts +8 -0
  246. package/server/routes/extensions.d.ts.map +1 -0
  247. package/server/routes/extensions.js +414 -0
  248. package/server/routes/extensions.js.map +1 -0
  249. package/server/routes/files.d.ts +3 -0
  250. package/server/routes/files.d.ts.map +1 -0
  251. package/server/routes/files.js +835 -0
  252. package/server/routes/files.js.map +1 -0
  253. package/server/routes/git.d.ts +3 -0
  254. package/server/routes/git.d.ts.map +1 -0
  255. package/server/routes/git.js +1058 -0
  256. package/server/routes/git.js.map +1 -0
  257. package/server/routes/mcp.d.ts +3 -0
  258. package/server/routes/mcp.d.ts.map +1 -0
  259. package/server/routes/mcp.js +403 -0
  260. package/server/routes/mcp.js.map +1 -0
  261. package/server/routes/orchestration.d.ts +3 -0
  262. package/server/routes/orchestration.d.ts.map +1 -0
  263. package/server/routes/orchestration.js +251 -0
  264. package/server/routes/orchestration.js.map +1 -0
  265. package/server/routes/projects.d.ts +3 -0
  266. package/server/routes/projects.d.ts.map +1 -0
  267. package/server/routes/projects.js +421 -0
  268. package/server/routes/projects.js.map +1 -0
  269. package/server/routes/prompt.d.ts +3 -0
  270. package/server/routes/prompt.d.ts.map +1 -0
  271. package/server/routes/prompt.js +311 -0
  272. package/server/routes/prompt.js.map +1 -0
  273. package/server/routes/session-extensions.d.ts +11 -0
  274. package/server/routes/session-extensions.d.ts.map +1 -0
  275. package/server/routes/session-extensions.js +171 -0
  276. package/server/routes/session-extensions.js.map +1 -0
  277. package/server/routes/sessions.d.ts +3 -0
  278. package/server/routes/sessions.d.ts.map +1 -0
  279. package/server/routes/sessions.js +706 -0
  280. package/server/routes/sessions.js.map +1 -0
  281. package/server/routes/skills.d.ts +14 -0
  282. package/server/routes/skills.d.ts.map +1 -0
  283. package/server/routes/skills.js +448 -0
  284. package/server/routes/skills.js.map +1 -0
  285. package/server/routes/stream.d.ts +3 -0
  286. package/server/routes/stream.d.ts.map +1 -0
  287. package/server/routes/stream.js +112 -0
  288. package/server/routes/stream.js.map +1 -0
  289. package/server/routes/terminal.d.ts +28 -0
  290. package/server/routes/terminal.d.ts.map +1 -0
  291. package/server/routes/terminal.js +211 -0
  292. package/server/routes/terminal.js.map +1 -0
  293. package/server/routes/tunnel.d.ts +13 -0
  294. package/server/routes/tunnel.d.ts.map +1 -0
  295. package/server/routes/tunnel.js +231 -0
  296. package/server/routes/tunnel.js.map +1 -0
  297. package/server/session-alerts.d.ts +28 -0
  298. package/server/session-alerts.d.ts.map +1 -0
  299. package/server/session-alerts.js +38 -0
  300. package/server/session-alerts.js.map +1 -0
  301. package/server/session-store.d.ts +164 -0
  302. package/server/session-store.d.ts.map +1 -0
  303. package/server/session-store.js +754 -0
  304. package/server/session-store.js.map +1 -0
  305. package/server/skill-policy.d.ts +47 -0
  306. package/server/skill-policy.d.ts.map +1 -0
  307. package/server/skill-policy.js +178 -0
  308. package/server/skill-policy.js.map +1 -0
  309. package/server/terminal-provider.d.ts +54 -0
  310. package/server/terminal-provider.d.ts.map +1 -0
  311. package/server/terminal-provider.js +220 -0
  312. package/server/terminal-provider.js.map +1 -0
  313. package/server/tool-policy.d.ts +39 -0
  314. package/server/tool-policy.d.ts.map +1 -0
  315. package/server/tool-policy.js +121 -0
  316. package/server/tool-policy.js.map +1 -0
  317. package/server/tunnel/executable-search.d.ts +43 -0
  318. package/server/tunnel/executable-search.d.ts.map +1 -0
  319. package/server/tunnel/executable-search.js +148 -0
  320. package/server/tunnel/executable-search.js.map +1 -0
  321. package/server/tunnel/install-help.d.ts +19 -0
  322. package/server/tunnel/install-help.d.ts.map +1 -0
  323. package/server/tunnel/install-help.js +47 -0
  324. package/server/tunnel/install-help.js.map +1 -0
  325. package/server/tunnel/providers/ngrok.d.ts +31 -0
  326. package/server/tunnel/providers/ngrok.d.ts.map +1 -0
  327. package/server/tunnel/providers/ngrok.js +461 -0
  328. package/server/tunnel/providers/ngrok.js.map +1 -0
  329. package/server/tunnel/registry.d.ts +13 -0
  330. package/server/tunnel/registry.d.ts.map +1 -0
  331. package/server/tunnel/registry.js +56 -0
  332. package/server/tunnel/registry.js.map +1 -0
  333. package/server/tunnel/service.d.ts +13 -0
  334. package/server/tunnel/service.d.ts.map +1 -0
  335. package/server/tunnel/service.js +156 -0
  336. package/server/tunnel/service.js.map +1 -0
  337. package/server/tunnel/types.d.ts +163 -0
  338. package/server/tunnel/types.d.ts.map +1 -0
  339. package/server/tunnel/types.js +214 -0
  340. package/server/tunnel/types.js.map +1 -0
  341. package/server/ui-settings-store.d.ts +25 -0
  342. package/server/ui-settings-store.d.ts.map +1 -0
  343. package/server/ui-settings-store.js +91 -0
  344. package/server/ui-settings-store.js.map +1 -0
  345. package/server/workspace-store.d.ts +25 -0
  346. package/server/workspace-store.d.ts.map +1 -0
  347. package/server/workspace-store.js +157 -0
  348. package/server/workspace-store.js.map +1 -0
@@ -0,0 +1,535 @@
1
+ import { mkdir, readFile as fsReadFile, readdir, realpath, rename as fsRename, rm, rmdir, stat, unlink, writeFile as fsWriteFile, } from "node:fs/promises";
2
+ import { createReadStream, createWriteStream, unlinkSync } from "node:fs";
3
+ import { once } from "node:events";
4
+ import { basename, dirname, extname, join, relative, resolve, sep } from "node:path";
5
+ import { createHash, randomUUID } from "node:crypto";
6
+ import { execSync } from "node:child_process";
7
+ import { tmpdir } from "node:os";
8
+ export class PathOutsideRootError extends Error {
9
+ constructor(target, root) {
10
+ super(`path outside project root: ${target} (root=${root})`);
11
+ this.name = "PathOutsideRootError";
12
+ }
13
+ }
14
+ export class NotFoundError extends Error {
15
+ constructor(path) {
16
+ super(`not found: ${path}`);
17
+ this.name = "NotFoundError";
18
+ }
19
+ }
20
+ export class NotAFileError extends Error {
21
+ constructor(path) {
22
+ super(`not a file: ${path}`);
23
+ this.name = "NotAFileError";
24
+ }
25
+ }
26
+ export class FileTooLargeError extends Error {
27
+ size;
28
+ limit;
29
+ constructor(path, size, limit) {
30
+ super(`file too large: ${path} (${size} > ${limit})`);
31
+ this.name = "FileTooLargeError";
32
+ this.size = size;
33
+ this.limit = limit;
34
+ }
35
+ }
36
+ export class DirectoryNotEmptyError extends Error {
37
+ constructor(path) {
38
+ super(`directory not empty: ${path}`);
39
+ this.name = "DirectoryNotEmptyError";
40
+ }
41
+ }
42
+ export class InvalidNameError extends Error {
43
+ constructor(message = "invalid file name") {
44
+ super(message);
45
+ this.name = "InvalidNameError";
46
+ }
47
+ }
48
+ export class ChecksumMismatchError extends Error {
49
+ target;
50
+ expected;
51
+ actual;
52
+ constructor(target, expected, actual) {
53
+ super(`checksum mismatch at ${target} (expected ${expected}, got ${actual})`);
54
+ this.name = "ChecksumMismatchError";
55
+ this.target = target;
56
+ this.expected = expected;
57
+ this.actual = actual;
58
+ }
59
+ }
60
+ export class TargetExistsError extends Error {
61
+ constructor(path) {
62
+ super(`target already exists: ${path}`);
63
+ this.name = "TargetExistsError";
64
+ }
65
+ }
66
+ export const MAX_READ_BYTES = 5 * 1024 * 1024;
67
+ const TREE_SKIP_DIRS = new Set([
68
+ "node_modules",
69
+ ".git",
70
+ "dist",
71
+ "build",
72
+ "__pycache__",
73
+ ".next",
74
+ ".nuxt",
75
+ "coverage",
76
+ ".vite",
77
+ ".turbo",
78
+ ".cache",
79
+ ]);
80
+ export const SEARCH_SKIP_DIRS = TREE_SKIP_DIRS;
81
+ const DEFAULT_TREE_DEPTH = 32;
82
+ export function assertInsideRoot(target, root) {
83
+ if (target.includes("\0"))
84
+ throw new PathOutsideRootError(target, root);
85
+ const resolvedTarget = resolve(target);
86
+ const resolvedRoot = resolve(root);
87
+ if (resolvedTarget === resolvedRoot)
88
+ return resolvedTarget;
89
+ const rel = relative(resolvedRoot, resolvedTarget);
90
+ if (rel.length === 0 || rel.startsWith("..") || rel.startsWith(`..${sep}`)) {
91
+ throw new PathOutsideRootError(target, root);
92
+ }
93
+ return resolvedTarget;
94
+ }
95
+ async function verifyPathSafe(target, root) {
96
+ assertInsideRoot(target, root);
97
+ const realRoot = await realpath(root);
98
+ const lexicalTarget = resolve(target);
99
+ let cursor = lexicalTarget;
100
+ while (true) {
101
+ try {
102
+ const real = await realpath(cursor);
103
+ assertInsideRoot(real, realRoot);
104
+ return lexicalTarget;
105
+ }
106
+ catch (err) {
107
+ const code = err.code;
108
+ if (code !== "ENOENT")
109
+ throw err;
110
+ const parent = dirname(cursor);
111
+ if (parent === cursor) {
112
+ throw new PathOutsideRootError(target, root);
113
+ }
114
+ cursor = parent;
115
+ }
116
+ }
117
+ }
118
+ function validateName(name) {
119
+ const trimmed = name.trim();
120
+ if (trimmed.length === 0 ||
121
+ trimmed.includes("/") ||
122
+ trimmed.includes("\\") ||
123
+ trimmed.includes("\0") ||
124
+ trimmed === "." ||
125
+ trimmed === "..") {
126
+ throw new InvalidNameError();
127
+ }
128
+ return trimmed;
129
+ }
130
+ export async function getTree(rootPath, opts = {}) {
131
+ const root = resolve(rootPath);
132
+ const st = await stat(root).catch(() => undefined);
133
+ if (!st?.isDirectory()) {
134
+ throw new NotFoundError(root);
135
+ }
136
+ const maxDepth = opts.maxDepth ?? DEFAULT_TREE_DEPTH;
137
+ return walk(root, root, "", 0, maxDepth);
138
+ }
139
+ async function walk(dir, root, relPath, depth, maxDepth) {
140
+ const name = relPath === "" ? "" : (relPath.split(sep).pop() ?? "");
141
+ const node = {
142
+ name,
143
+ path: relPath,
144
+ type: "directory",
145
+ children: [],
146
+ };
147
+ if (depth >= maxDepth) {
148
+ node.truncated = true;
149
+ delete node.children;
150
+ return node;
151
+ }
152
+ let entries;
153
+ try {
154
+ entries = await readdir(dir, { withFileTypes: true });
155
+ }
156
+ catch {
157
+ node.truncated = true;
158
+ delete node.children;
159
+ return node;
160
+ }
161
+ entries.sort((a, b) => {
162
+ const da = a.isDirectory() ? 0 : 1;
163
+ const db = b.isDirectory() ? 0 : 1;
164
+ if (da !== db)
165
+ return da - db;
166
+ return a.name.localeCompare(b.name, undefined, { sensitivity: "base" });
167
+ });
168
+ for (const ent of entries) {
169
+ if (ent.isDirectory() && TREE_SKIP_DIRS.has(ent.name))
170
+ continue;
171
+ const childRel = relPath === "" ? ent.name : `${relPath}${sep}${ent.name}`;
172
+ const childAbs = join(dir, ent.name);
173
+ if (ent.isDirectory()) {
174
+ const sub = await walk(childAbs, root, childRel, depth + 1, maxDepth);
175
+ node.children?.push(sub);
176
+ }
177
+ else if (ent.isFile()) {
178
+ node.children?.push({
179
+ name: ent.name,
180
+ path: childRel,
181
+ type: "file",
182
+ });
183
+ }
184
+ else if (ent.isSymbolicLink()) {
185
+ const linked = await safeLinkedStat(childAbs, root).catch(() => undefined);
186
+ if (linked?.isDirectory()) {
187
+ if (TREE_SKIP_DIRS.has(ent.name))
188
+ continue;
189
+ const sub = await walk(childAbs, root, childRel, depth + 1, maxDepth);
190
+ node.children?.push(sub);
191
+ }
192
+ else if (linked?.isFile()) {
193
+ node.children?.push({
194
+ name: ent.name,
195
+ path: childRel,
196
+ type: "file",
197
+ });
198
+ }
199
+ }
200
+ }
201
+ return node;
202
+ }
203
+ async function safeLinkedStat(path, root) {
204
+ await verifyPathSafe(path, root);
205
+ return stat(path);
206
+ }
207
+ export async function listAllFiles(rootPath) {
208
+ const root = resolve(rootPath);
209
+ const st = await stat(root).catch(() => undefined);
210
+ if (!st?.isDirectory())
211
+ throw new NotFoundError(root);
212
+ const out = [];
213
+ await walkFlat(root, root, "", out);
214
+ return out;
215
+ }
216
+ async function walkFlat(dir, root, relPath, out) {
217
+ const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
218
+ for (const entry of entries) {
219
+ const name = entry.name;
220
+ if (entry.isDirectory()) {
221
+ if (TREE_SKIP_DIRS.has(name))
222
+ continue;
223
+ const dirRel = relPath === "" ? name : `${relPath}/${name}`;
224
+ out.push(`${dirRel}/`);
225
+ await walkFlat(join(dir, name), root, dirRel, out);
226
+ }
227
+ else if (entry.isFile()) {
228
+ out.push(relPath === "" ? name : `${relPath}/${name}`);
229
+ }
230
+ }
231
+ }
232
+ export async function readFile(absPath, root) {
233
+ const resolved = await verifyPathSafe(absPath, root);
234
+ const st = await stat(resolved).catch(() => undefined);
235
+ if (st === undefined)
236
+ throw new NotFoundError(resolved);
237
+ if (!st.isFile())
238
+ throw new NotAFileError(resolved);
239
+ if (st.size > MAX_READ_BYTES)
240
+ throw new FileTooLargeError(resolved, st.size, MAX_READ_BYTES);
241
+ const buf = await fsReadFile(resolved);
242
+ const binary = looksBinary(buf);
243
+ return {
244
+ path: resolved,
245
+ content: binary ? "" : buf.toString("utf8"),
246
+ size: st.size,
247
+ language: detectLanguage(resolved),
248
+ binary,
249
+ };
250
+ }
251
+ function looksBinary(buf) {
252
+ const limit = Math.min(buf.length, 8000);
253
+ for (let i = 0; i < limit; i++) {
254
+ if (buf[i] === 0)
255
+ return true;
256
+ }
257
+ return false;
258
+ }
259
+ export async function writeFile(absPath, root, content) {
260
+ const resolved = await verifyPathSafe(absPath, root);
261
+ await mkdir(dirname(resolved), { recursive: true });
262
+ const tmp = `${resolved}.${randomUUID()}.tmp`;
263
+ await fsWriteFile(tmp, content, "utf8");
264
+ await fsRename(tmp, resolved);
265
+ }
266
+ export async function downloadStream(absPath, root) {
267
+ const resolved = await verifyPathSafe(absPath, root);
268
+ const st = await stat(resolved).catch(() => undefined);
269
+ if (st === undefined)
270
+ throw new NotFoundError(resolved);
271
+ if (st.isFile()) {
272
+ return {
273
+ kind: "file",
274
+ filename: basename(resolved),
275
+ size: st.size,
276
+ stream: createReadStream(resolved),
277
+ };
278
+ }
279
+ if (st.isDirectory()) {
280
+ const dirName = basename(resolved).length > 0 ? basename(resolved) : "project";
281
+ const parentDir = dirname(resolved);
282
+ const tmpZip = join(tmpdir(), `${dirName}-${randomUUID()}.zip`);
283
+ // Build exclude patterns for directories we skip (node_modules, .git, etc.)
284
+ const excludeArgs = Array.from(TREE_SKIP_DIRS).map((d) => `-x "${d}/*" "${d}"`).join(" ");
285
+ execSync(`cd "${parentDir}" && zip -r "${tmpZip}" "${dirName}" ${excludeArgs}`, {
286
+ stdio: ["ignore", "pipe", "pipe"],
287
+ timeout: 300_000, // 5 min for large dirs
288
+ });
289
+ const stream = createReadStream(tmpZip);
290
+ stream.on("end", () => {
291
+ try {
292
+ unlinkSync(tmpZip);
293
+ }
294
+ catch { /* best-effort cleanup */ }
295
+ });
296
+ stream.on("error", () => {
297
+ try {
298
+ unlinkSync(tmpZip);
299
+ }
300
+ catch { /* best-effort cleanup */ }
301
+ });
302
+ return { kind: "directory", filename: `${dirName}.zip`, stream };
303
+ }
304
+ throw new NotFoundError(resolved);
305
+ }
306
+ export async function writeFileBytes(parentAbsPath, name, root, source, opts) {
307
+ const parent = await verifyPathSafe(parentAbsPath, root);
308
+ const trimmed = validateName(name);
309
+ const target = await verifyPathSafe(join(parent, trimmed), root);
310
+ const existing = await stat(target).catch(() => undefined);
311
+ if (existing !== undefined) {
312
+ if (opts?.overwrite !== true)
313
+ throw new TargetExistsError(target);
314
+ if (!existing.isFile())
315
+ throw new InvalidNameError("target is a directory");
316
+ }
317
+ await mkdir(parent, { recursive: true });
318
+ const tmp = `${target}.${randomUUID()}.upload.tmp`;
319
+ const hash = createHash("sha256");
320
+ let size = 0;
321
+ const out = createWriteStream(tmp);
322
+ try {
323
+ for await (const chunk of source) {
324
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
325
+ hash.update(buf);
326
+ size += buf.byteLength;
327
+ if (!out.write(buf))
328
+ await once(out, "drain");
329
+ }
330
+ out.end();
331
+ await once(out, "close");
332
+ }
333
+ catch (err) {
334
+ out.destroy();
335
+ await unlink(tmp).catch(() => undefined);
336
+ throw err;
337
+ }
338
+ const actual = hash.digest("hex");
339
+ const expected = opts?.expectedSha256?.toLowerCase();
340
+ if (expected !== undefined && expected !== actual) {
341
+ await unlink(tmp).catch(() => undefined);
342
+ throw new ChecksumMismatchError(target, expected, actual);
343
+ }
344
+ await fsRename(tmp, target);
345
+ return { path: target, size, sha256: actual };
346
+ }
347
+ export async function makeDirectory(parentAbsPath, root, name) {
348
+ const trimmed = validateName(name);
349
+ const parent = await verifyPathSafe(parentAbsPath, root);
350
+ const target = await verifyPathSafe(join(parent, trimmed), root);
351
+ const exists = await stat(target).catch(() => undefined);
352
+ if (exists !== undefined)
353
+ throw new TargetExistsError(target);
354
+ await mkdir(target, { recursive: false });
355
+ return target;
356
+ }
357
+ export async function renameEntry(absPath, root, newName) {
358
+ const resolved = await verifyPathSafe(absPath, root);
359
+ const trimmed = validateName(newName);
360
+ const target = await verifyPathSafe(join(dirname(resolved), trimmed), root);
361
+ const st = await stat(resolved).catch(() => undefined);
362
+ if (st === undefined)
363
+ throw new NotFoundError(resolved);
364
+ if (resolved === target)
365
+ return target;
366
+ if (resolved.toLowerCase() === target.toLowerCase()) {
367
+ const tmp = `${resolved}.casefix-${randomUUID()}`;
368
+ await fsRename(resolved, tmp);
369
+ try {
370
+ const squatter = await stat(target).catch(() => undefined);
371
+ if (squatter !== undefined)
372
+ throw new TargetExistsError(target);
373
+ await fsRename(tmp, target);
374
+ }
375
+ catch (err) {
376
+ await fsRename(tmp, resolved).catch(() => undefined);
377
+ throw err;
378
+ }
379
+ return target;
380
+ }
381
+ const exists = await stat(target).catch(() => undefined);
382
+ if (exists !== undefined)
383
+ throw new TargetExistsError(target);
384
+ await fsRename(resolved, target);
385
+ return target;
386
+ }
387
+ export async function moveEntry(srcAbsPath, destAbsPath, root) {
388
+ const src = await verifyPathSafe(srcAbsPath, root);
389
+ const dest = await verifyPathSafe(destAbsPath, root);
390
+ const st = await stat(src).catch(() => undefined);
391
+ if (st === undefined)
392
+ throw new NotFoundError(src);
393
+ if (st.isDirectory()) {
394
+ const rel = relative(src, dest);
395
+ if (rel === "" || (!rel.startsWith("..") && !rel.startsWith(`..${sep}`))) {
396
+ throw new InvalidNameError("cannot move a directory into itself");
397
+ }
398
+ }
399
+ const exists = await stat(dest).catch(() => undefined);
400
+ if (exists !== undefined)
401
+ throw new TargetExistsError(dest);
402
+ await mkdir(dirname(dest), { recursive: true });
403
+ await fsRename(src, dest);
404
+ return dest;
405
+ }
406
+ export async function deleteEntry(absPath, root, opts) {
407
+ const resolved = await verifyPathSafe(absPath, root);
408
+ if (resolved === resolve(root)) {
409
+ throw new PathOutsideRootError(absPath, root);
410
+ }
411
+ const st = await stat(resolved).catch(() => undefined);
412
+ if (st === undefined)
413
+ throw new NotFoundError(resolved);
414
+ if (st.isDirectory()) {
415
+ if (opts?.recursive === true) {
416
+ await rm(resolved, { recursive: true, force: false });
417
+ return;
418
+ }
419
+ try {
420
+ await rmdir(resolved);
421
+ }
422
+ catch (err) {
423
+ if (err.code === "ENOTEMPTY") {
424
+ throw new DirectoryNotEmptyError(resolved);
425
+ }
426
+ throw err;
427
+ }
428
+ }
429
+ else {
430
+ await rm(resolved, { force: false });
431
+ }
432
+ }
433
+ const LANG_BY_EXT = {
434
+ ".ts": "typescript",
435
+ ".tsx": "typescript",
436
+ ".js": "javascript",
437
+ ".jsx": "javascript",
438
+ ".mjs": "javascript",
439
+ ".cjs": "javascript",
440
+ ".py": "python",
441
+ ".pyi": "python",
442
+ ".rs": "rust",
443
+ ".cpp": "cpp",
444
+ ".cc": "cpp",
445
+ ".cxx": "cpp",
446
+ ".c": "c",
447
+ ".h": "c",
448
+ ".hpp": "cpp",
449
+ ".java": "java",
450
+ ".kt": "kotlin",
451
+ ".kts": "kotlin",
452
+ ".go": "go",
453
+ ".rb": "ruby",
454
+ ".php": "php",
455
+ ".cs": "csharp",
456
+ ".swift": "swift",
457
+ ".css": "css",
458
+ ".scss": "scss",
459
+ ".sass": "scss",
460
+ ".less": "css",
461
+ ".html": "html",
462
+ ".htm": "html",
463
+ ".xml": "xml",
464
+ ".svg": "xml",
465
+ ".plist": "xml",
466
+ ".json": "json",
467
+ ".jsonc": "json",
468
+ ".yaml": "yaml",
469
+ ".yml": "yaml",
470
+ ".toml": "toml",
471
+ ".md": "markdown",
472
+ ".markdown": "markdown",
473
+ ".sh": "shell",
474
+ ".bash": "shell",
475
+ ".zsh": "shell",
476
+ ".fish": "shell",
477
+ ".sql": "sql",
478
+ ".dockerfile": "dockerfile",
479
+ ".jinja": "jinja2",
480
+ ".jinja2": "jinja2",
481
+ ".j2": "jinja2",
482
+ ".env": "properties",
483
+ ".ini": "properties",
484
+ ".cfg": "properties",
485
+ ".conf": "properties",
486
+ ".properties": "properties",
487
+ ".toml.lock": "toml",
488
+ ".lua": "lua",
489
+ ".pl": "perl",
490
+ ".pm": "perl",
491
+ ".r": "r",
492
+ ".ps1": "powershell",
493
+ ".psm1": "powershell",
494
+ ".diff": "diff",
495
+ ".patch": "diff",
496
+ ".clj": "clojure",
497
+ ".cljs": "clojure",
498
+ ".cljc": "clojure",
499
+ ".edn": "clojure",
500
+ ".scala": "scala",
501
+ ".sc": "scala",
502
+ ".groovy": "groovy",
503
+ ".gradle": "groovy",
504
+ ".hs": "haskell",
505
+ ".ml": "ocaml",
506
+ ".mli": "ocaml",
507
+ ".graphql": "graphql",
508
+ ".gql": "graphql",
509
+ ".proto": "protobuf",
510
+ ".cmake": "cmake",
511
+ ".mk": "makefile",
512
+ };
513
+ function detectLanguage(absPath) {
514
+ const base = absPath.split(sep).pop() ?? absPath;
515
+ if (base === "Dockerfile" || base.endsWith(".Dockerfile"))
516
+ return "dockerfile";
517
+ if (base === "Makefile" || base === "makefile" || base === "GNUmakefile")
518
+ return "makefile";
519
+ if (base === "nginx.conf")
520
+ return "nginx";
521
+ if (base === ".env" || base.startsWith(".env."))
522
+ return "properties";
523
+ if (base === ".gitignore" ||
524
+ base === ".dockerignore" ||
525
+ base === ".npmignore" ||
526
+ base === ".prettierignore" ||
527
+ base === ".eslintignore") {
528
+ return "properties";
529
+ }
530
+ if (base === "CMakeLists.txt")
531
+ return "cmake";
532
+ const ext = extname(base).toLowerCase();
533
+ return LANG_BY_EXT[ext] ?? "plaintext";
534
+ }
535
+ //# sourceMappingURL=file-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../src/file-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface SearchMatch {
2
+ path: string;
3
+ line: number;
4
+ column: number;
5
+ length: number;
6
+ lineSnippet: string;
7
+ }
8
+ export interface SearchOptions {
9
+ query: string;
10
+ regex: boolean;
11
+ caseSensitive: boolean;
12
+ includeGitignored: boolean;
13
+ include?: string;
14
+ exclude?: string;
15
+ limit: number;
16
+ timeoutMs: number;
17
+ }
18
+ export interface SearchResult {
19
+ engine: "ripgrep" | "node";
20
+ matches: SearchMatch[];
21
+ truncated: boolean;
22
+ }
23
+ export declare function ripgrepAvailable(): Promise<boolean>;
24
+ export declare function _resetRipgrepCache(): void;
25
+ export declare class SearchEngineUnavailableError extends Error {
26
+ constructor(msg: string);
27
+ }
28
+ export declare function searchFiles(projectPath: string, opts: SearchOptions): Promise<SearchResult>;
29
+ //# sourceMappingURL=file-searcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-searcher.d.ts","sourceRoot":"","sources":["../src/file-searcher.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CASzD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,GAAG,EAAE,MAAM,EAGtB;CACF;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAUjG"}