@inkeep/open-knowledge 0.2.0 → 0.3.0

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 (333) hide show
  1. package/dist/THIRD_PARTY_NOTICES.md +5439 -0
  2. package/dist/alias-JE7RI5QX-TirEebNy.mjs +1 -0
  3. package/dist/assets/skills/open-knowledge/SKILL.md +254 -0
  4. package/dist/awk2-POPGKRAI-DigGXYmO.mjs +1 -0
  5. package/dist/banner-BxI1wnW9.mjs +3 -0
  6. package/dist/base64-4YMZCVJ5-B4GnvJtR.mjs +1 -0
  7. package/dist/basename-AA2KJYZQ-DlZHEU5f.mjs +1 -0
  8. package/dist/bash-IJWYRKFO-BA1gxmDh.mjs +1 -0
  9. package/dist/build-D4l8tfO0.mjs +2 -0
  10. package/dist/cat-RDUMLXKC-CAQOzqfy.mjs +1 -0
  11. package/dist/chmod-SYMGL4JA-BC2VVHCa.mjs +1 -0
  12. package/dist/chokidar-CblsKfnx.mjs +4 -0
  13. package/dist/chunk-24IMIIXA-Bz7rlZT3.mjs +2 -0
  14. package/dist/chunk-3THT3N7L-klp8GP84.mjs +2 -0
  15. package/dist/chunk-3ZUFRYJ4-C93H8j0V.mjs +2 -0
  16. package/dist/chunk-44UOCSGV-BUBpWxXm.mjs +2 -0
  17. package/dist/chunk-4GTNDTRF-_OVmXcJ-.mjs +8 -0
  18. package/dist/chunk-4HHKTUW3-Dm69hDaZ.mjs +3 -0
  19. package/dist/chunk-4Q4SM6WR-DDQRsilN.mjs +5 -0
  20. package/dist/chunk-55VFSPNA-DVZfQAzN.mjs +3 -0
  21. package/dist/chunk-5QMZ5MUS-DWTkM0vM.mjs +5 -0
  22. package/dist/chunk-5QVNJEHU-BvsipSFW.mjs +9 -0
  23. package/dist/chunk-5V6VZH6T-BCr5_GDF.mjs +2 -0
  24. package/dist/chunk-62RKD26F-D-luOa0m.mjs +21 -0
  25. package/dist/chunk-64BAICW3-CTJNEx4Q.mjs +2 -0
  26. package/dist/chunk-74CEPOFO-D1bzz49u.mjs +23 -0
  27. package/dist/chunk-7L36YK2X-RiPZFKaV.mjs +3 -0
  28. package/dist/chunk-7TSDKFEO-a-GUGBTu.mjs +2 -0
  29. package/dist/chunk-A4HU7SVR-hefV_YmW.mjs +3 -0
  30. package/dist/chunk-A4JSPFCI-U-xWmMMC.mjs +7 -0
  31. package/dist/chunk-A5O5YHGN-C7BVq0eF.mjs +2 -0
  32. package/dist/chunk-A65PWWJC-D7J5l9eq.mjs +3 -0
  33. package/dist/chunk-A7A2DBEE-PLfkXLI4.mjs +7 -0
  34. package/dist/chunk-A7ICOL4V-Drb3XsEL.mjs +14 -0
  35. package/dist/chunk-ALLTKNUZ-BMiTDN50.mjs +6 -0
  36. package/dist/chunk-APT7OOP2-CXHnSuct.mjs +2 -0
  37. package/dist/chunk-BBXLRYSX-DURjrblE.mjs +6 -0
  38. package/dist/chunk-BRGMQKJV-CdrkqzRA.mjs +63 -0
  39. package/dist/chunk-CR5AFCPT-ROmyDFrB.mjs +24 -0
  40. package/dist/chunk-CWQS3NFK-DFdwmFxJ.mjs +2 -0
  41. package/dist/chunk-D4J545R4-C8nMOauR.mjs +12 -0
  42. package/dist/chunk-D6CWQ5DW-B-J4LN9N.mjs +6 -0
  43. package/dist/chunk-D7MEQ3VN-Csvth_Ss.mjs +5 -0
  44. package/dist/chunk-DCAAORBQ-BdrR5ttw.mjs +2 -0
  45. package/dist/chunk-DXB73IDG-C774okS0.mjs +2 -0
  46. package/dist/chunk-EEXR5ZDP-C5AJH114.mjs +3 -0
  47. package/dist/chunk-EIZGF4BS-8bsVXqW0.mjs +9 -0
  48. package/dist/chunk-F23WWYKW-DST0dB7V.mjs +17 -0
  49. package/dist/chunk-F55TLFGB-DqkrAMO5.mjs +10 -0
  50. package/dist/chunk-FEIOJCZD-C4x0A4rb.mjs +75 -0
  51. package/dist/chunk-FK9Q3tQk.mjs +1 -0
  52. package/dist/chunk-GCTKCWKD-Deqi1D_N.mjs +4 -0
  53. package/dist/chunk-GFQRA5P5-1fzItQ8F.mjs +8 -0
  54. package/dist/chunk-GOV5EKKI-PN17n-Z0.mjs +10 -0
  55. package/dist/chunk-GXVXFKBA-993FoPmq.mjs +6 -0
  56. package/dist/chunk-HDQ56CKY-pGV4pOJA.mjs +16 -0
  57. package/dist/chunk-HJQJAYMS-Ci3vsKQW.mjs +3 -0
  58. package/dist/chunk-HJWBQKYG-UZig4wUt.mjs +6 -0
  59. package/dist/chunk-HWBSOZZR-Dikp87Ww.mjs +37 -0
  60. package/dist/chunk-HWKDQ44K-CPSjqtR_.mjs +4 -0
  61. package/dist/chunk-I57KEIP3-B1DoH8rp.mjs +11 -0
  62. package/dist/chunk-IPJHKYVM-BbWncVr2.mjs +2 -0
  63. package/dist/chunk-J642UCRS-DB77Y2Wt.mjs +2 -0
  64. package/dist/chunk-JVPRLUMK-DnQCNjpq.mjs +8 -0
  65. package/dist/chunk-KMEYNNUA-DfdK88O_.mjs +16 -0
  66. package/dist/chunk-LL3S3NLB-DxXgE3kY.mjs +2 -0
  67. package/dist/chunk-LPQPILI2-BXfU9TgM.mjs +12 -0
  68. package/dist/chunk-LTZRCH7N-GAjTFNwG.mjs +32 -0
  69. package/dist/chunk-LWEGUNWT-BALY4RLC.mjs +8 -0
  70. package/dist/chunk-MDDMCKUK-D6GWoJsI.mjs +7 -0
  71. package/dist/chunk-MDLLFABN-oBQf6bGE.mjs +73 -0
  72. package/dist/chunk-MHTUABJP-dKmK6Hw7.mjs +9 -0
  73. package/dist/chunk-MIZPJHVH-z-geAni9.mjs +8 -0
  74. package/dist/chunk-MLXIYONF-DB-C8Hx8.mjs +16 -0
  75. package/dist/chunk-MYE6AGBJ-B4pRo9ma.mjs +17 -0
  76. package/dist/chunk-NAERJDUW-CX0lf-xx.mjs +9 -0
  77. package/dist/chunk-NCNPKYJZ-BFGan4lR.mjs +3 -0
  78. package/dist/chunk-NUYSJFDK-D2NXm2ND.mjs +8 -0
  79. package/dist/chunk-NYQYO467-Degkom4D.mjs +33 -0
  80. package/dist/chunk-OARHFVLG-CY8D2Qov.mjs +21 -0
  81. package/dist/chunk-OCLXQMOG-BMsyLQhm.mjs +7 -0
  82. package/dist/chunk-OCS6LSEM-BHslttnj.mjs +14 -0
  83. package/dist/chunk-OJDRYQWQ-BV5MVRVg.mjs +2 -0
  84. package/dist/chunk-OL3S66CO-Bmgu4tW4.mjs +100 -0
  85. package/dist/chunk-PBXLG62G-lGjqkk78.mjs +9 -0
  86. package/dist/chunk-PP6PSHAB-DMC_XCfO.mjs +5 -0
  87. package/dist/chunk-PYSFUGCK-CY7pclEB.mjs +11 -0
  88. package/dist/chunk-QCDB2VPH-D1RuXtOm.mjs +7 -0
  89. package/dist/chunk-QJ7O6ZN3-BH67tCjg.mjs +6 -0
  90. package/dist/chunk-R6QSAL5T-CtbJTvt9.mjs +2 -0
  91. package/dist/chunk-R6VWJ2ZL-B0CcMPyK.mjs +2 -0
  92. package/dist/chunk-RPNGRAAP-BughPjdR.mjs +8 -0
  93. package/dist/chunk-SDNKECQQ-C3GEf3VZ.mjs +6 -0
  94. package/dist/chunk-SYMJJMQ4-CWTh95-4.mjs +22 -0
  95. package/dist/chunk-T56QNPHK-DlKQeuXU.mjs +15 -0
  96. package/dist/chunk-TLSUDHID-B8UnqY4U.mjs +7 -0
  97. package/dist/chunk-TOMNU26N-BcdbBQ2p.mjs +5 -0
  98. package/dist/chunk-TXBZCHCQ-l48TczF5.mjs +6 -0
  99. package/dist/chunk-UNYNJIFU-DwPQMz0F.mjs +140 -0
  100. package/dist/chunk-V7TAPXDL-CnKUp2df.mjs +28 -0
  101. package/dist/chunk-VJFXDYWH-IiUXkKX0.mjs +11 -0
  102. package/dist/chunk-VLGZJRPG-D4NVKJYL.mjs +17 -0
  103. package/dist/chunk-VOBGTVA6-BT7gUxqf.mjs +7 -0
  104. package/dist/chunk-VYOJP4TV-BvibOnKG.mjs +14 -0
  105. package/dist/chunk-WKFATFPP-DCZdrA8x.mjs +5 -0
  106. package/dist/chunk-X2AJGDEF-BaH6i1Rq.mjs +2 -0
  107. package/dist/chunk-XHM67O4N-Cg35xc6b.mjs +2 -0
  108. package/dist/chunk-XKQRETAK-cVWA9gEB.mjs +2 -0
  109. package/dist/chunk-XORM457F-CRToN1RQ.mjs +288 -0
  110. package/dist/chunk-XVDPCNWR-CtK-Xs2O.mjs +12 -0
  111. package/dist/chunk-YCFVLTST-Ox9Z0Nk6.mjs +13 -0
  112. package/dist/chunk-YFG2CMIF-Csgr05KV.mjs +5 -0
  113. package/dist/chunk-YNYSPYQ5-BpP11HXS.mjs +34 -0
  114. package/dist/chunk-YS3AZT3J-BEZxz_aQ.mjs +9 -0
  115. package/dist/chunk-YTNYSM6T-DuBR2-TM.mjs +12 -0
  116. package/dist/chunk-Z6LRHWXI-DbRghyzT.mjs +14 -0
  117. package/dist/chunk-Z7JVV2SM-BzR-yvwK.mjs +12 -0
  118. package/dist/clear-5CZ5X4YR-B5oRhK00.mjs +1 -0
  119. package/dist/cli.mjs +1083 -273
  120. package/dist/colors-BnZ-i-vb.mjs +1 -0
  121. package/dist/colors-DoPZvo1q.mjs +2 -0
  122. package/dist/column-WLPMMSTS-fFssyAvW.mjs +1 -0
  123. package/dist/comm-5SLSESQG-DRcwK9Gt.mjs +1 -0
  124. package/dist/constants-ekUaxW9F.mjs +2 -0
  125. package/dist/cp-XOYR4ABJ-BUZu7KNi.mjs +1 -0
  126. package/dist/curl-47BFPSFW-Kn_Na_aU.mjs +26 -0
  127. package/dist/cut-OPC3VAGB-BIRZEN2Y.mjs +1 -0
  128. package/dist/date-DD7FVA2V-DRxppxbV.mjs +1 -0
  129. package/dist/diff-HJF2MPDN-Yo3lE_58.mjs +1 -0
  130. package/dist/dirname-LEMTZZFS-2cTXnmQf.mjs +1 -0
  131. package/dist/dist-0qFIeeXA.mjs +142 -0
  132. package/dist/dist-BCyi1oM7.mjs +116 -0
  133. package/dist/dist-CXdg7KnM.mjs +199 -0
  134. package/dist/dist-Ct-gJ7iD.mjs +1 -0
  135. package/dist/dist-bundle-BSdjl7Rj.mjs +2 -0
  136. package/dist/dist-bundle-BmF5_Mcp.mjs +1 -0
  137. package/dist/du-WO2ENHXQ-B5uda2-L.mjs +1 -0
  138. package/dist/echo-O45JWWI2-B9QCpaZR.mjs +1 -0
  139. package/dist/env-5EPCWSXR--4eujSrM.mjs +1 -0
  140. package/dist/esm-BFkWzFey.mjs +2 -0
  141. package/dist/esm-wByiX8MO.mjs +20 -0
  142. package/dist/execAsync-0jii24p9.mjs +2 -0
  143. package/dist/execAsync-Czqc-yAz.mjs +2 -0
  144. package/dist/execAsync-DgmLXmTx.mjs +2 -0
  145. package/dist/expand-DTNXU4LQ-BWwDphsm.mjs +1 -0
  146. package/dist/expansion-ENLSRCXJ-BBTiIHJS.mjs +1 -0
  147. package/dist/expr-5T3UU5KE-D5OdgUlD.mjs +1 -0
  148. package/dist/file-ZIGAJ4YS-zZfB3nws.mjs +1 -0
  149. package/dist/find-TPUOAIUQ-DaW1-9Vm.mjs +1 -0
  150. package/dist/flag-coverage-QT4N2Z44-B8zntJyb.mjs +2 -0
  151. package/dist/fold-LDSORVYE-CAfX9d8n.mjs +1 -0
  152. package/dist/getMachineId-bsd-C1M346yz.mjs +2 -0
  153. package/dist/getMachineId-bsd-CPESl3L6.mjs +2 -0
  154. package/dist/getMachineId-bsd-DEUypOXJ.mjs +2 -0
  155. package/dist/getMachineId-darwin-0hBTy7c8.mjs +3 -0
  156. package/dist/getMachineId-darwin-CJK3eX9q.mjs +3 -0
  157. package/dist/getMachineId-darwin-Vupnt-kR.mjs +3 -0
  158. package/dist/getMachineId-linux-B2nkqMir.mjs +2 -0
  159. package/dist/getMachineId-linux-BGQn48cN.mjs +2 -0
  160. package/dist/getMachineId-linux-CIp07XEX.mjs +2 -0
  161. package/dist/getMachineId-unsupported-BnsanXR2.mjs +2 -0
  162. package/dist/getMachineId-unsupported-CH1Q20xN.mjs +2 -0
  163. package/dist/getMachineId-unsupported-DfSmC7Gy.mjs +2 -0
  164. package/dist/getMachineId-win-BmmB_8yL.mjs +2 -0
  165. package/dist/getMachineId-win-DlPRChXs.mjs +2 -0
  166. package/dist/getMachineId-win-JnMJbIaW.mjs +2 -0
  167. package/dist/git-handle-BhGnmvTB-BMB_49Sb.mjs +10 -0
  168. package/dist/git-handle-BhGnmvTB-Di8EsrYa.mjs +1 -0
  169. package/dist/grep-3AIAIJVR-C9A_aSMK.mjs +1 -0
  170. package/dist/gzip-AQXSGOVS-CL228lzk.mjs +1 -0
  171. package/dist/head-HT2B6D2J-DyNkF3aY.mjs +1 -0
  172. package/dist/help-VVWX7SA5-D5WzpTIY.mjs +1 -0
  173. package/dist/history-J4QRNGRO-DUTsR2Sf.mjs +1 -0
  174. package/dist/hostname-BK6HG2DE-zmNkhqtV.mjs +1 -0
  175. package/dist/html-to-markdown-TFCECAGV-Ux5cbjMV.mjs +1 -0
  176. package/dist/index.d.mts +2300 -55
  177. package/dist/index.mjs +1 -1
  178. package/dist/init-Ccjx3YjD.mjs +1 -0
  179. package/dist/init-DOTyF3_B.mjs +1 -0
  180. package/dist/init-Dc2dCgGt.mjs +255 -0
  181. package/dist/init-DeV-MdCs.mjs +120 -0
  182. package/dist/{is-object-WgQ3abDo.mjs → is-object-BNVklKxg.mjs} +1 -1
  183. package/dist/join-GG2LDHE5-B6C3-ghI.mjs +1 -0
  184. package/dist/jq-ODXZBPLY-Uj_VahOC.mjs +1 -0
  185. package/dist/js-exec-M6UR76J5-DSk5_wnx.mjs +97 -0
  186. package/dist/keepalive-CZzB5k1h.mjs +2 -0
  187. package/dist/lib-Dl2j2VNl.mjs +2 -0
  188. package/dist/libesm-DC4M2SkF.mjs +14 -0
  189. package/dist/ln-4TRFBYAT-DiYK6FgR.mjs +1 -0
  190. package/dist/loader-Bveym9GJ.mjs +1 -0
  191. package/dist/loader-C3jzK-Dy.mjs +3 -0
  192. package/dist/ls-KSXFZCWH-B0la1Q-P.mjs +1 -0
  193. package/dist/lzma-0LJzVZpl.mjs +2 -0
  194. package/dist/md5sum-INMIK4DX-DAG8dmoX.mjs +1 -0
  195. package/dist/mkdir-TDEMSB6C-CRMB4_AE.mjs +1 -0
  196. package/dist/mv-Z6MORUFL-1iTO8NY5.mjs +1 -0
  197. package/dist/nl-U5YJDM32-IRiMqQcZ.mjs +1 -0
  198. package/dist/od-VJEF2UR5-PasvdXXR.mjs +1 -0
  199. package/dist/{open-browser-rbaiEzUy.mjs → open-browser-BzMQ6cLf.mjs} +1 -1
  200. package/dist/paste-7N6AFSDS-C3M5_YM6.mjs +1 -0
  201. package/dist/paths-BA1xev5m.mjs +1 -0
  202. package/dist/paths-DtQI2_ER.mjs +2 -0
  203. package/dist/preview-BTFflPaA.mjs +1 -0
  204. package/dist/preview-BuXqi6nl.mjs +3 -0
  205. package/dist/printf-CX64KX2P-uTOF6Zpa.mjs +1 -0
  206. package/dist/public/assets/ActivityModeContent-Ccu_n0bV.js +2 -0
  207. package/dist/public/assets/ActivityPanelDiffView-D-EUyEh6.js +13 -0
  208. package/dist/public/assets/ActivityPanelDiffView-legcy4jI.css +1 -0
  209. package/dist/public/assets/DocumentContext-C1msvcHp.js +5 -0
  210. package/dist/public/assets/GraphPanel-CJ_U3W3L.js +46 -0
  211. package/dist/public/assets/McpConsentDialogBody-Csjet19t.js +1 -0
  212. package/dist/public/assets/PageListContext-B5SWnlyE.js +278 -0
  213. package/dist/public/assets/SourceEditor-OFesfBB2.js +3 -0
  214. package/dist/public/assets/__vite-browser-external-Dz2JgTKm.js +1 -0
  215. package/dist/public/assets/agent-presence-BXsx4eTl.js +1 -0
  216. package/dist/public/assets/button-BPXuMr5W.js +1 -0
  217. package/dist/public/assets/chunk-DECur_0Z.js +1 -0
  218. package/dist/public/assets/clipboard-DAcKCHl1.js +32 -0
  219. package/dist/public/assets/compiler-runtime-Y11fyRVL.js +1 -0
  220. package/dist/public/assets/dialog-CtSN0d2b.js +45 -0
  221. package/dist/public/assets/dist-BqO6NfD-.js +1 -0
  222. package/dist/public/assets/dist-CgLbXgrr.js +13 -0
  223. package/dist/public/assets/dist-D2wwoXzm.js +1 -0
  224. package/dist/public/assets/dist-DR1MrLJC.js +9 -0
  225. package/dist/public/assets/dist-DeDgmJv2.js +1 -0
  226. package/dist/public/assets/dist-DlS42TIP.js +1 -0
  227. package/dist/public/assets/dist-GlH2KPqY.js +1 -0
  228. package/dist/public/assets/index-CwFTGDhe.js +1843 -0
  229. package/dist/public/assets/index-DjR45Lon.css +1 -0
  230. package/dist/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  231. package/dist/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  232. package/dist/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  233. package/dist/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  234. package/dist/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  235. package/dist/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  236. package/dist/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  237. package/dist/public/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  238. package/dist/public/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  239. package/dist/public/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  240. package/dist/public/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  241. package/dist/public/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  242. package/dist/public/assets/panel-BCRdtBla.js +1 -0
  243. package/dist/public/assets/propagation-api-Bugyj7xy.js +1 -0
  244. package/dist/public/assets/telemetry-impl-D8K_lJGH.js +2 -0
  245. package/dist/public/assets/toggle-group-LDOO6zaV.js +1 -0
  246. package/dist/public/assets/tooltip-D0MnQ7ZX.js +1 -0
  247. package/dist/public/assets/w3c-keyname-CSlwavrd.js +1 -0
  248. package/dist/public/favicon.svg +19 -4
  249. package/dist/public/index.html +32 -4
  250. package/dist/pwd-D4OZ7N27-DNkGMjtD.mjs +1 -0
  251. package/dist/python3-AUFTPCU6-MeZyx8_A.mjs +12 -0
  252. package/dist/readlink-MI4GCHJF-DRVZBAvY.mjs +1 -0
  253. package/dist/rev-XOSYPP45-q2MQLs41.mjs +1 -0
  254. package/dist/rg-FOQSCCX3-Cssz8GNh.mjs +1 -0
  255. package/dist/rm-RTZG23RL-fjvVauiI.mjs +1 -0
  256. package/dist/rmdir-XTQXT7RK-C13HY1h7.mjs +1 -0
  257. package/dist/rolldown-runtime-wcPFST8Q-BB0WpHs3.mjs +2 -0
  258. package/dist/sed-VFTTATXJ-DO49xc40.mjs +1 -0
  259. package/dist/seq-RN5ZUASB-D9r6kc_Z.mjs +1 -0
  260. package/dist/server-lock-n3Y5JWNv-3o7br8XE.mjs +2 -0
  261. package/dist/server-lock-n3Y5JWNv-DXpg9_eU.mjs +1 -0
  262. package/dist/sha1sum-VJPNLNU6-4uBt63v6.mjs +1 -0
  263. package/dist/sha256sum-PI32XWXY-_uaXSgBK.mjs +1 -0
  264. package/dist/sleep-VZFPZFWA-CS7jDpXp.mjs +1 -0
  265. package/dist/sort-DCNRDA7U-Dmp_2ZoH.mjs +1 -0
  266. package/dist/split-SITCSYCZ-Cu9ifXuc.mjs +1 -0
  267. package/dist/sqlite3-56UMWEY3-D1Xq8d4g.mjs +1 -0
  268. package/dist/src-CCtbSzLe.mjs +1 -0
  269. package/dist/start-D7mCFrVn.mjs +1 -0
  270. package/dist/start-RnYkhoRl.mjs +2 -0
  271. package/dist/stat-BT5A227F-Dqepjl-k.mjs +1 -0
  272. package/dist/strings-7PLOGTPD-g6FhPS64.mjs +1 -0
  273. package/dist/tac-SJGXQ4T2-DczI7HKk.mjs +1 -0
  274. package/dist/tail-S5ULNTJU-Bk22kVUG.mjs +1 -0
  275. package/dist/tar-ANUBEFJY-1lwT6ndQ.mjs +1 -0
  276. package/dist/tee-O7VXZDCO-Ftqr8Jad.mjs +1 -0
  277. package/dist/time-DEUO3QV2-BtzQ0nVf.mjs +1 -0
  278. package/dist/timeout-VRKMCG72-Cpzi9cz-.mjs +1 -0
  279. package/dist/touch-DX2IJOQ4-ewCHfbB3.mjs +1 -0
  280. package/dist/tr-2HXZRDSW-DrrobhxR.mjs +1 -0
  281. package/dist/tree-LYXBS7DC-DZnTMKSh.mjs +1 -0
  282. package/dist/true-WHJNXCHG-BaLssNp9.mjs +1 -0
  283. package/dist/unexpand-RGTMIGZM-BOmSL08U.mjs +1 -0
  284. package/dist/uniq-SUNANL47-Cn_JDmUJ.mjs +1 -0
  285. package/dist/wc-TQB3VNOX-DkOBrQlr.mjs +1 -0
  286. package/dist/which-XZHEH76L-DxZJ58G5.mjs +1 -0
  287. package/dist/whoami-DGKU3D2X-Bn1LP0m_.mjs +1 -0
  288. package/dist/wrapper-BTT6637Z.mjs +7 -0
  289. package/dist/xan-BXDXYEIB-_Vtao535.mjs +1 -0
  290. package/dist/xan-view-ECQUO7AJ-6vlhfSF-.mjs +1 -0
  291. package/dist/xargs-I6EZUCYF-dHdg4qaj.mjs +1 -0
  292. package/dist/yq-MJMAR36V-pRBq87Ya.mjs +1 -0
  293. package/package.json +23 -14
  294. package/scripts/postinstall.mjs +53 -0
  295. package/scripts/probe-exec.ts +101 -0
  296. package/scripts/probe-read-document.ts +112 -0
  297. package/dist/banner-De2a4ivv.mjs +0 -3
  298. package/dist/colors-C2vrt_OY.mjs +0 -1
  299. package/dist/colors-CshxhXdR.mjs +0 -2
  300. package/dist/constants-yNFhYMHH.mjs +0 -2
  301. package/dist/git-handle-B5vQdmjQ.mjs +0 -2
  302. package/dist/git-handle-DGTzeK-H.mjs +0 -1
  303. package/dist/init-BFZ4vnnX.mjs +0 -1
  304. package/dist/init-BH38QtfV.mjs +0 -6
  305. package/dist/init-BzEVODBI.mjs +0 -230
  306. package/dist/init-DCZhpKSO.mjs +0 -1
  307. package/dist/keepalive-Bp0nJiwT.mjs +0 -2
  308. package/dist/loader-CoGCjTcI.mjs +0 -3
  309. package/dist/loader-D8pf7fi6.mjs +0 -1
  310. package/dist/paths-C7TuvND0.mjs +0 -2
  311. package/dist/paths-CWTmBbr0.mjs +0 -1
  312. package/dist/preview-C-NvAf2r.mjs +0 -1
  313. package/dist/preview-Cmt2vdUG.mjs +0 -3
  314. package/dist/public/assets/dist-BDfJLgAe.js +0 -1
  315. package/dist/public/assets/dist-BSbGs59J.js +0 -1
  316. package/dist/public/assets/dist-BXK-5ZOh.js +0 -1
  317. package/dist/public/assets/dist-BipKfxqO.js +0 -15
  318. package/dist/public/assets/dist-C9Jm0v8G.js +0 -1
  319. package/dist/public/assets/dist-CDCPrjhY.js +0 -1
  320. package/dist/public/assets/dist-CHAniM6T.js +0 -9
  321. package/dist/public/assets/dist-CYsaeLzc.js +0 -1
  322. package/dist/public/assets/dist-Cq9Fm8Xi.js +0 -1
  323. package/dist/public/assets/dist-Ct0eqVZy.js +0 -1
  324. package/dist/public/assets/dist-PgXBewk9.js +0 -23
  325. package/dist/public/assets/index-BbLzex1v.css +0 -2
  326. package/dist/public/assets/index-gSm49umN.js +0 -409
  327. package/dist/src-B7snRveE.mjs +0 -1
  328. package/dist/src-CEP6NuWY.mjs +0 -1
  329. package/dist/src-EGbU552u.mjs +0 -278
  330. package/dist/start-BYXBgVJW.mjs +0 -1
  331. package/dist/start-DqcFf-BT.mjs +0 -2
  332. /package/dist/public/assets/{go-IODVg4Ok.js → go-DatQmDtN.js} +0 -0
  333. /package/dist/public/assets/{shell-COsTRxlr.js → shell-7yok6dsz.js} +0 -0
@@ -0,0 +1,7 @@
1
+ import{i as e,o as t,t as n}from"./chunk-FK9Q3tQk.mjs";var r=n(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),i=n(((t,n)=>{let{EMPTY_BUFFER:i}=r(),a=Buffer[Symbol.species];function o(e,t){if(e.length===0)return i;if(e.length===1)return e[0];let n=Buffer.allocUnsafe(t),r=0;for(let t=0;t<e.length;t++){let i=e[t];n.set(i,r),r+=i.length}return r<t?new a(n.buffer,n.byteOffset,r):n}function s(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function c(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function l(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function u(e){if(u.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new a(e):ArrayBuffer.isView(e)?t=new a(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),u.readOnly=!1),t}if(n.exports={concat:o,mask:s,toArrayBuffer:l,toBuffer:u,unmask:c},!process.env.WS_NO_BUFFER_UTIL)try{let t=e(`bufferutil`);n.exports.mask=function(e,n,r,i,a){a<48?s(e,n,r,i,a):t.mask(e,n,r,i,a)},n.exports.unmask=function(e,n){e.length<32?c(e,n):t.unmask(e,n)}}catch{}})),a=n(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),o=n(((t,n)=>{let o=e(`zlib`),s=i(),c=a(),{kStatusCode:l}=r(),u=Buffer[Symbol.species],d=Buffer.from([0,0,255,255]),f=Symbol(`permessage-deflate`),p=Symbol(`total-length`),m=Symbol(`callback`),h=Symbol(`buffers`),g=Symbol(`error`),_;n.exports=class{constructor(e){this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,_||=new c(this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit)}static get extensionName(){return`permessage-deflate`}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits??(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&=(this._inflate.close(),null),this._deflate){let e=this._deflate[m];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&!e.client_max_window_bits));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){_.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){_.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,n){let r=this._isServer?`client`:`server`;if(!this._inflate){let e=`${r}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:o.Z_DEFAULT_WINDOWBITS;this._inflate=o.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[f]=this,this._inflate[p]=0,this._inflate[h]=[],this._inflate.on(`error`,b),this._inflate.on(`data`,y)}this._inflate[m]=n,this._inflate.write(e),t&&this._inflate.write(d),this._inflate.flush(()=>{let e=this._inflate[g];if(e){this._inflate.close(),this._inflate=null,n(e);return}let i=s.concat(this._inflate[h],this._inflate[p]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[p]=0,this._inflate[h]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),n(null,i)})}_compress(e,t,n){let r=this._isServer?`server`:`client`;if(!this._deflate){let e=`${r}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:o.Z_DEFAULT_WINDOWBITS;this._deflate=o.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[p]=0,this._deflate[h]=[],this._deflate.on(`data`,v)}this._deflate[m]=n,this._deflate.write(e),this._deflate.flush(o.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=s.concat(this._deflate[h],this._deflate[p]);t&&(e=new u(e.buffer,e.byteOffset,e.length-4)),this._deflate[m]=null,this._deflate[p]=0,this._deflate[h]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),n(null,e)})}};function v(e){this[h].push(e),this[p]+=e.length}function y(e){if(this[p]+=e.length,this[f]._maxPayload<1||this[p]<=this[f]._maxPayload){this[h].push(e);return}this[g]=RangeError(`Max payload size exceeded`),this[g].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[g][l]=1009,this.removeListener(`data`,y),this.reset()}function b(e){if(this[f]._inflate=null,this[g]){this[m](this[g]);return}e[l]=1007,this[m](e)}})),s=n(((t,n)=>{let{isUtf8:i}=e(`buffer`),{hasBlob:a}=r(),o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function s(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function c(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function l(e){return a&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}if(n.exports={isBlob:l,isValidStatusCode:s,isValidUTF8:c,tokenChars:o},i)n.exports.isValidUTF8=function(e){return e.length<24?c(e):i(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=e(`utf-8-validate`);n.exports.isValidUTF8=function(e){return e.length<32?c(e):t(e)}}catch{}})),c=n(((t,n)=>{let{Writable:a}=e(`stream`),c=o(),{BINARY_TYPES:l,EMPTY_BUFFER:u,kStatusCode:d,kWebSocket:f}=r(),{concat:p,toArrayBuffer:m,unmask:h}=i(),{isValidStatusCode:g,isValidUTF8:_}=s(),v=Buffer[Symbol.species];n.exports=class extends a{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0?!0:e.allowSynchronousEvents,this._binaryType=e.binaryType||l[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[f]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new v(t.buffer,t.byteOffset+e,t.length-e),new v(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new v(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[c.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=u;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&h(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[c.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?p(n,t):this._binaryType===`arraybuffer`?m(p(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=p(n,t);if(!this._skipUTF8Validation&&!_(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,u),this.end();else{let n=e.readUInt16BE(0);if(!g(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new v(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!_(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[d]=r,a}}})),l=n(((t,n)=>{let{Duplex:a}=e(`stream`),{randomFillSync:c}=e(`crypto`),l=o(),{EMPTY_BUFFER:u,kWebSocket:d,NOOP:f}=r(),{isBlob:p,isValidStatusCode:m}=s(),{mask:h,toBuffer:g}=i(),_=Symbol(`kByteLength`),v=Buffer.alloc(4),y=8*1024,b,x=y;n.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=f,this[d]=void 0}static frame(e,t){let n,r=!1,i=2,a=!1;t.mask&&(n=t.maskBuffer||v,t.generateMask?t.generateMask(n):(x===y&&(b===void 0&&(b=Buffer.alloc(y)),c(b,0,y),x=0),n[0]=b[x++],n[1]=b[x++],n[2]=b[x++],n[3]=b[x++]),a=(n[0]|n[1]|n[2]|n[3])===0,i=6);let o;typeof e==`string`?(!t.mask||a)&&t[_]!==void 0?o=t[_]:(e=Buffer.from(e),o=e.length):(o=e.length,r=t.mask&&t.readOnly&&!a);let s=o;o>=65536?(i+=8,s=127):o>125&&(i+=2,s=126);let l=Buffer.allocUnsafe(r?o+i:i);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=s,s===126?l.writeUInt16BE(o,2):s===127&&(l[2]=l[3]=0,l.writeUIntBE(o,4,6)),!t.mask||(l[1]|=128,l[i-4]=n[0],l[i-3]=n[1],l[i-2]=n[2],l[i-1]=n[3],a)?[l,e]:r?(h(e,n,l,i,o),[l]):(h(e,n,e,0,o),[l,e])}close(t,n,r,i){let a;if(t===void 0)a=u;else if(typeof t!=`number`||!m(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)a=Buffer.allocUnsafe(2),a.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);a=Buffer.allocUnsafe(2+e),a.writeUInt16BE(t,0),typeof n==`string`?a.write(n,2):a.set(n,2)}let o={[_]:a.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(a,o),i):this.enqueue([this.dispatch,a,!1,o,i])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):p(t)?(i=t.size,a=!1):(t=g(t),i=t.length,a=g.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[_]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};p(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):p(t)?(i=t.size,a=!1):(t=g(t),i=t.length,a=g.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[_]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};p(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[l.extensionName],i=t.binary?2:1,a=t.compress,o,s;typeof e==`string`?(o=Buffer.byteLength(e),s=!1):p(e)?(o=e.size,s=!1):(e=g(e),o=e.length,s=g.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(a=o>=r._threshold),this._compress=a):(a=!1,i=0),t.fin&&(this._firstFragment=!0);let c={[_]:o,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:s,rsv1:a};p(e)?this._state===0?this.getBlobData(e,this._compress,c,n):this.enqueue([this.getBlobData,e,this._compress,c,n]):this._state===0?this.dispatch(e,this._compress,c,n):this.enqueue([this.dispatch,e,this._compress,c,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[_],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(S,this,e,i);return}this._bufferedBytes-=r[_];let a=g(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(C,this,e,i)})}dispatch(t,n,r,i){if(!n){this.sendFrame(e.frame(t,r),i);return}let a=this._extensions[l.extensionName];this._bufferedBytes+=r[_],this._state=1,a.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){S(this,Error(`The socket was closed while data was being compressed`),i);return}this._bufferedBytes-=r[_],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][_],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][_],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function S(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function C(e,t,n){S(e,t,n),e.onerror(t)}})),u=n(((e,t)=>{let{kForOnEventAttribute:n,kListener:i}=r(),a=Symbol(`kCode`),o=Symbol(`kData`),s=Symbol(`kError`),c=Symbol(`kMessage`),l=Symbol(`kReason`),u=Symbol(`kTarget`),d=Symbol(`kType`),f=Symbol(`kWasClean`);var p=class{constructor(e){this[u]=null,this[d]=e}get target(){return this[u]}get type(){return this[d]}};Object.defineProperty(p.prototype,`target`,{enumerable:!0}),Object.defineProperty(p.prototype,`type`,{enumerable:!0});var m=class extends p{constructor(e,t={}){super(e),this[a]=t.code===void 0?0:t.code,this[l]=t.reason===void 0?``:t.reason,this[f]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[a]}get reason(){return this[l]}get wasClean(){return this[f]}};Object.defineProperty(m.prototype,`code`,{enumerable:!0}),Object.defineProperty(m.prototype,`reason`,{enumerable:!0}),Object.defineProperty(m.prototype,`wasClean`,{enumerable:!0});var h=class extends p{constructor(e,t={}){super(e),this[s]=t.error===void 0?null:t.error,this[c]=t.message===void 0?``:t.message}get error(){return this[s]}get message(){return this[c]}};Object.defineProperty(h.prototype,`error`,{enumerable:!0}),Object.defineProperty(h.prototype,`message`,{enumerable:!0});var g=class extends p{constructor(e,t={}){super(e),this[o]=t.data===void 0?null:t.data}get data(){return this[o]}};Object.defineProperty(g.prototype,`data`,{enumerable:!0}),t.exports={CloseEvent:m,ErrorEvent:h,Event:p,EventTarget:{addEventListener(e,t,r={}){for(let a of this.listeners(e))if(!r[n]&&a[i]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new g(`message`,{data:n?e:e.toString()});r[u]=this,_(t,this,r)};else if(e===`close`)a=function(e,n){let r=new m(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[u]=this,_(t,this,r)};else if(e===`error`)a=function(e){let n=new h(`error`,{error:e,message:e.message});n[u]=this,_(t,this,n)};else if(e===`open`)a=function(){let e=new p(`open`);e[u]=this,_(t,this,e)};else return;a[n]=!!r[n],a[i]=t,r.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let r of this.listeners(e))if(r[i]===t&&!r[n]){this.removeListener(e,r);break}}},MessageEvent:g};function _(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),d=n(((e,t)=>{let{tokenChars:n}=s();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);else if(l===void 0)if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`);else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s)if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),f=n(((t,n)=>{let a=e(`events`),f=e(`https`),p=e(`http`),m=e(`net`),h=e(`tls`),{randomBytes:g,createHash:_}=e(`crypto`),{Duplex:v,Readable:y}=e(`stream`),{URL:b}=e(`url`),x=o(),S=c(),C=l(),{isBlob:w}=s(),{BINARY_TYPES:T,CLOSE_TIMEOUT:E,EMPTY_BUFFER:D,GUID:O,kForOnEventAttribute:k,kListener:A,kStatusCode:j,kWebSocket:M,NOOP:N}=r(),{EventTarget:{addEventListener:ee,removeEventListener:te}}=u(),{format:P,parse:F}=d(),{toBuffer:I}=i(),L=Symbol(`kAborted`),R=[8,13],z=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],B=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var V=class e extends a{constructor(t,n,r){super(),this._binaryType=T[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=D,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),H(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){T.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){let i=new S({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new C(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[M]=this,a[M]=this,t[M]=this,i.on(`conclude`,re),i.on(`drain`,ie),i.on(`error`,ae),i.on(`message`,oe),i.on(`ping`,se),i.on(`pong`,ce),a.onerror=le,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,X),t.on(`data`,Z),t.on(`end`,Q),t.on(`error`,$),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[x.extensionName]&&this._extensions[x.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){G(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Y(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){K(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||D,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){K(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||D,n,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){K(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[x.extensionName]||(i.compress=!1),this._sender.send(t||D,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){G(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(V,`CONNECTING`,{enumerable:!0,value:z.indexOf(`CONNECTING`)}),Object.defineProperty(V.prototype,`CONNECTING`,{enumerable:!0,value:z.indexOf(`CONNECTING`)}),Object.defineProperty(V,`OPEN`,{enumerable:!0,value:z.indexOf(`OPEN`)}),Object.defineProperty(V.prototype,`OPEN`,{enumerable:!0,value:z.indexOf(`OPEN`)}),Object.defineProperty(V,`CLOSING`,{enumerable:!0,value:z.indexOf(`CLOSING`)}),Object.defineProperty(V.prototype,`CLOSING`,{enumerable:!0,value:z.indexOf(`CLOSING`)}),Object.defineProperty(V,`CLOSED`,{enumerable:!0,value:z.indexOf(`CLOSED`)}),Object.defineProperty(V.prototype,`CLOSED`,{enumerable:!0,value:z.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(V.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(V.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[k])return t[A];return null},set(t){for(let t of this.listeners(e))if(t[k]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[k]:!0})}})}),V.prototype.addEventListener=ee,V.prototype.removeEventListener=te,n.exports=V;function H(e,t,n,r){let i={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:E,protocolVersion:R[1],maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,e._closeTimeout=i.closeTimeout,!R.includes(i.protocolVersion))throw RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${R.join(`, `)})`);let a;if(t instanceof b)a=t;else try{a=new b(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}a.protocol===`http:`?a.protocol=`ws:`:a.protocol===`https:`&&(a.protocol=`wss:`),e._url=a.href;let o=a.protocol===`wss:`,s=a.protocol===`ws+unix:`,c;if(a.protocol!==`ws:`&&!o&&!s?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:s&&!a.pathname?c=`The URL's pathname is empty`:a.hash&&(c=`The URL contains a fragment identifier`),c){let t=SyntaxError(c);if(e._redirects===0)throw t;U(e,t);return}let l=o?443:80,u=g(16).toString(`base64`),d=o?f.request:p.request,m=new Set,h;if(i.createConnection=i.createConnection||(o?ne:W),i.defaultPort=i.defaultPort||l,i.port=a.port||l,i.host=a.hostname.startsWith(`[`)?a.hostname.slice(1,-1):a.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":u,Connection:`Upgrade`,Upgrade:`websocket`},i.path=a.pathname+a.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(h=new x({...i.perMessageDeflate,isServer:!1,maxPayload:i.maxPayload}),i.headers[`Sec-WebSocket-Extensions`]=P({[x.extensionName]:h.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!B.test(e)||m.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);m.add(e)}i.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(i.origin&&(i.protocolVersion<13?i.headers[`Sec-WebSocket-Origin`]=i.origin:i.headers.Origin=i.origin),(a.username||a.password)&&(i.auth=`${a.username}:${a.password}`),s){let e=i.path.split(`:`);i.socketPath=e[0],i.path=e[1]}let v;if(i.followRedirects){if(e._redirects===0){e._originalIpc=s,e._originalSecure=o,e._originalHostOrSocketPath=s?i.socketPath:a.host;let t=r&&r.headers;if(r={...r,headers:{}},t)for(let[e,n]of Object.entries(t))r.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=s?e._originalIpc?i.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:a.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization=`Basic `+Buffer.from(i.auth).toString(`base64`)),v=e._req=d(i),e._redirects&&e.emit(`redirect`,e.url,v)}else v=e._req=d(i);i.timeout&&v.on(`timeout`,()=>{G(e,v,`Opening handshake has timed out`)}),v.on(`error`,t=>{v===null||v[L]||(v=e._req=null,U(e,t))}),v.on(`response`,a=>{let o=a.headers.location,s=a.statusCode;if(o&&i.followRedirects&&s>=300&&s<400){if(++e._redirects>i.maxRedirects){G(e,v,`Maximum redirects exceeded`);return}v.abort();let a;try{a=new b(o,t)}catch{U(e,SyntaxError(`Invalid URL: ${o}`));return}H(e,a,n,r)}else e.emit(`unexpected-response`,v,a)||G(e,v,`Unexpected server response: ${a.statusCode}`)}),v.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==V.CONNECTING)return;v=e._req=null;let a=t.headers.upgrade;if(a===void 0||a.toLowerCase()!==`websocket`){G(e,n,`Invalid Upgrade header`);return}let o=_(`sha1`).update(u+O).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==o){G(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],c;if(s===void 0?m.size&&(c=`Server sent no subprotocol`):m.size?m.has(s)||(c=`Server sent an invalid subprotocol`):c=`Server sent a subprotocol but none was requested`,c){G(e,n,c);return}s&&(e._protocol=s);let l=t.headers[`sec-websocket-extensions`];if(l!==void 0){if(!h){G(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=F(l)}catch{G(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==x.extensionName){G(e,n,`Server indicated an extension that was not requested`);return}try{h.accept(t[x.extensionName])}catch{G(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[x.extensionName]=h}e.setSocket(n,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(v,e):v.end()}function U(e,t){e._readyState=V.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function W(e){return e.path=e.socketPath,m.connect(e)}function ne(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=m.isIP(e.host)?``:e.host),h.connect(e)}function G(e,t,n){e._readyState=V.CLOSING;let r=Error(n);Error.captureStackTrace(r,G),t.setHeader?(t[L]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(U,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function K(e,t,n){if(t){let n=w(t)?t.size:I(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${z[e.readyState]})`);process.nextTick(n,t)}}function re(e,t){let n=this[M];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[M]!==void 0&&(n._socket.removeListener(`data`,Z),process.nextTick(J,n._socket),e===1005?n.close():n.close(e,t))}function ie(){let e=this[M];e.isPaused||e._socket.resume()}function ae(e){let t=this[M];t._socket[M]!==void 0&&(t._socket.removeListener(`data`,Z),process.nextTick(J,t._socket),t.close(e[j])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function q(){this[M].emitClose()}function oe(e,t){this[M].emit(`message`,e,t)}function se(e){let t=this[M];t._autoPong&&t.pong(e,!this._isServer,N),t.emit(`ping`,e)}function ce(e){this[M].emit(`pong`,e)}function J(e){e.resume()}function le(e){let t=this[M];t.readyState!==V.CLOSED&&(t.readyState===V.OPEN&&(t._readyState=V.CLOSING,Y(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function Y(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function X(){let e=this[M];if(this.removeListener(`close`,X),this.removeListener(`data`,Z),this.removeListener(`end`,Q),e._readyState=V.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[M]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,q),e._receiver.on(`finish`,q))}function Z(e){this[M]._receiver.write(e)||this.pause()}function Q(){let e=this[M];e._readyState=V.CLOSING,e._receiver.end(),this.end()}function $(){let e=this[M];this.removeListener(`error`,$),this.on(`error`,N),e&&(e._readyState=V.CLOSING,this.destroy())}})),p=n(((t,n)=>{f();let{Duplex:r}=e(`stream`);function i(e){e.emit(`close`)}function a(){!this.destroyed&&this._writableState.finished&&this.destroy()}function o(e){this.removeListener(`error`,o),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function s(e,t){let n=!0,s=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(n=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,r){if(e.readyState===e.CLOSED){r(t),process.nextTick(i,s);return}let a=!1;e.once(`error`,function(e){a=!0,r(e)}),e.once(`close`,function(){a||r(t),process.nextTick(i,s)}),n&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,a),s.on(`error`,o),s}n.exports=s})),m=n(((e,t)=>{let{tokenChars:n}=s();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),h=n(((t,n)=>{let i=e(`events`),a=e(`http`),{Duplex:s}=e(`stream`),{createHash:c}=e(`crypto`),l=d(),u=o(),p=m(),h=f(),{CLOSE_TIMEOUT:g,GUID:_,kWebSocket:v}=r(),y=/^[+/0-9A-Za-z]{22}==$/;n.exports=class extends i{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:g,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:h,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=a.createServer((e,t)=>{let n=a.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=b(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(x,this);return}if(e&&this.once(`close`,e),this._state!==1)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(x,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{x(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,S);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,o=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){w(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){w(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!y.test(i)){w(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(o!==13&&o!==8){w(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){C(t,400);return}let s=e.headers[`sec-websocket-protocol`],c=new Set;if(s!==void 0)try{c=p.parse(s)}catch{w(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let d=e.headers[`sec-websocket-extensions`],f={};if(this.options.perMessageDeflate&&d!==void 0){let n=new u({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=l.parse(d);e[u.extensionName]&&(n.accept(e[u.extensionName]),f[u.extensionName]=n)}catch{w(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${o===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,l)=>{if(!a)return C(t,o||401,s,l);this.completeUpgrade(f,i,c,e,t,n,r)});return}if(!this.options.verifyClient(a))return C(t,401)}this.completeUpgrade(f,i,c,e,t,n,r)}completeUpgrade(e,t,n,r,i,a,o){if(!i.readable||!i.writable)return i.destroy();if(i[v])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return C(i,503);let s=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${c(`sha1`).update(t+_).digest(`base64`)}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(s.push(`Sec-WebSocket-Protocol: ${e}`),d._protocol=e)}if(e[u.extensionName]){let t=e[u.extensionName].params,n=l.format({[u.extensionName]:[t]});s.push(`Sec-WebSocket-Extensions: ${n}`),d._extensions=e}this.emit(`headers`,s,r),i.write(s.concat(`\r
2
+ `).join(`\r
3
+ `)),i.removeListener(`error`,S),d.setSocket(i,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on(`close`,()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(x,this)})),o(d,r)}};function b(e,t){for(let n of Object.keys(t))e.on(n,t[n]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function x(e){e._state=2,e.emit(`close`)}function S(){this.destroy()}function C(e,t,n,r){n||=a.STATUS_CODES[t],r={Connection:`close`,"Content-Type":`text/html`,"Content-Length":Buffer.byteLength(n),...r},e.once(`finish`,e.destroy),e.end(`HTTP/1.1 ${t} ${a.STATUS_CODES[t]}\r\n`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join(`\r
4
+ `)+`\r
5
+ \r
6
+ `+n)}function w(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,w),e.emit(`wsClientError`,r,n,t)}else C(n,r,i,a)}}));p(),d(),o(),c(),l(),m(),f();var g=t(h(),1).default;export{g as WebSocketServer};
7
+ //# sourceMappingURL=wrapper-BTT6637Z.mjs.map
@@ -0,0 +1 @@
1
+ import"./chunk-YNYSPYQ5-BpP11HXS.mjs";import"./chunk-DXB73IDG-C774okS0.mjs";import"./chunk-5QMZ5MUS-DWTkM0vM.mjs";import"./chunk-24IMIIXA-Bz7rlZT3.mjs";import"./chunk-SYMJJMQ4-CWTh95-4.mjs";import"./chunk-7TSDKFEO-a-GUGBTu.mjs";import"./chunk-BBXLRYSX-DURjrblE.mjs";import"./chunk-F55TLFGB-DqkrAMO5.mjs";import{n as e}from"./chunk-UNYNJIFU-DwPQMz0F.mjs";export{e as xanCommand};
@@ -0,0 +1 @@
1
+ import"./chunk-DXB73IDG-C774okS0.mjs";import"./chunk-SYMJJMQ4-CWTh95-4.mjs";import{c as e}from"./chunk-F55TLFGB-DqkrAMO5.mjs";export{e as cmdView};
@@ -0,0 +1 @@
1
+ import"./chunk-DXB73IDG-C774okS0.mjs";import{n as e}from"./chunk-TOMNU26N-BcdbBQ2p.mjs";export{e as xargsCommand};
@@ -0,0 +1 @@
1
+ import"./chunk-YNYSPYQ5-BpP11HXS.mjs";import"./chunk-DXB73IDG-C774okS0.mjs";import"./chunk-5QMZ5MUS-DWTkM0vM.mjs";import"./chunk-24IMIIXA-Bz7rlZT3.mjs";import"./chunk-SYMJJMQ4-CWTh95-4.mjs";import"./chunk-7TSDKFEO-a-GUGBTu.mjs";import"./chunk-BBXLRYSX-DURjrblE.mjs";import{t as e}from"./chunk-XORM457F-CRToN1RQ.mjs";export{e as yqCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/open-knowledge",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -10,44 +10,54 @@
10
10
  }
11
11
  },
12
12
  "bin": {
13
- "open-knowledge": "./dist/cli.mjs"
13
+ "open-knowledge": "./dist/cli.mjs",
14
+ "ok": "./dist/cli.mjs"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/inkeep/open-knowledge.git",
19
+ "directory": "packages/cli"
14
20
  },
15
21
  "files": [
16
22
  "dist",
23
+ "scripts",
17
24
  "!dist/**/*.map"
18
25
  ],
19
26
  "engines": {
20
- "node": ">=22"
27
+ "node": ">=24"
21
28
  },
22
29
  "publishConfig": {
23
30
  "access": "public"
24
31
  },
25
32
  "scripts": {
26
33
  "build:cli": "tsdown",
27
- "build:assets": "cp -r ../app/dist dist/public",
34
+ "build:app": "cp -r ../app/dist dist/public",
35
+ "build:skill-asset": "mkdir -p dist/assets/skills/open-knowledge && cp ../server/assets/skills/open-knowledge/SKILL.md dist/assets/skills/open-knowledge/SKILL.md",
36
+ "build:notices": "mkdir -p dist && cp ../../THIRD_PARTY_NOTICES.md dist/THIRD_PARTY_NOTICES.md",
37
+ "build:assets": "bun run build:app && bun run build:skill-asset && bun run build:notices",
28
38
  "build": "bun run build:cli && bun run build:assets",
29
- "test": "bun test",
39
+ "postinstall": "node scripts/postinstall.mjs",
40
+ "test": "bun --conditions=development test",
30
41
  "typecheck": "tsc --noEmit",
31
- "prepublishOnly": "bun run build && bun run test"
42
+ "prepublishOnly": "bash ../../scripts/check-notices-clean.sh && bun run build && bun run test"
32
43
  },
33
44
  "dependencies": {
34
- "@clack/prompts": "^1.2.0",
35
- "@hocuspocus/provider": "4.0.0-rc.1",
45
+ "@inquirer/checkbox": "^5.0.11",
36
46
  "@inquirer/password": "^5.0.11",
37
47
  "@modelcontextprotocol/sdk": "^1.28.0",
38
48
  "@napi-rs/keyring": "^1.2.0",
39
49
  "@octokit/auth-oauth-device": "^8.0.3",
50
+ "@octokit/request": "^10.0.8",
40
51
  "@octokit/rest": "^22.0.1",
41
- "chokidar": "^5.0.0",
42
52
  "cli-boxes": "^4.0.1",
43
53
  "commander": "^14.0.0",
44
54
  "just-bash": "^2.14.1",
45
55
  "picocolors": "^1.1.1",
46
56
  "picomatch": "^4.0.4",
47
57
  "shell-quote": "^1.8.3",
48
- "simple-git": "^3.35.2",
58
+ "simple-git": "^3.36.0",
49
59
  "sirv": "^3.0.1",
50
- "ws": "^8.20.0",
60
+ "smol-toml": "^1.6.1",
51
61
  "yaml": "^2.7.1",
52
62
  "zod": "^4.3.6"
53
63
  },
@@ -55,13 +65,12 @@
55
65
  "@parcel/watcher": "^2.5.6"
56
66
  },
57
67
  "devDependencies": {
68
+ "@inkeep/open-knowledge-app": "workspace:*",
58
69
  "@inkeep/open-knowledge-core": "workspace:*",
59
70
  "@inkeep/open-knowledge-server": "workspace:*",
60
- "open-knowledge-app": "workspace:*",
61
- "@types/node": "^22.16.0",
71
+ "@types/node": "^24.7.0",
62
72
  "@types/picomatch": "^4.0.3",
63
73
  "@types/shell-quote": "^1.7.5",
64
- "@types/ws": "^8.18.1",
65
74
  "tsdown": "^0.21.7",
66
75
  "typescript": "^5.9.3"
67
76
  }
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `@inkeep/open-knowledge` postinstall hook.
4
+ *
5
+ * Fires `installUserSkill()` once per `npm install` / `bun install` / `npx`
6
+ * cache population. Non-fatal: any failure is swallowed so the host install
7
+ * never blocks.
8
+ *
9
+ * Spec: 2026-04-22-mcp-guidance-no-project-pollution (FR12 / D20).
10
+ */
11
+
12
+ async function run() {
13
+ let installUserSkill;
14
+ try {
15
+ // Relative import resolves inside the published npm tarball at
16
+ // <pkg-root>/dist/index.mjs — the tsdown-bundled entry that re-exports
17
+ // `installUserSkill` from @inkeep/open-knowledge-server.
18
+ const mod = await import('../dist/index.mjs');
19
+ installUserSkill = mod.installUserSkill;
20
+ } catch {
21
+ // Dev-install scenarios (e.g. running `npm install` against a tarball
22
+ // where dist/ is missing, `--ignore-scripts`, or source-only installs)
23
+ // never block — fall through to exit 0.
24
+ return;
25
+ }
26
+
27
+ if (typeof installUserSkill !== 'function') return;
28
+
29
+ let result;
30
+ try {
31
+ result = await installUserSkill();
32
+ } catch {
33
+ // installUserSkill is documented as never-throws; this catch is pure
34
+ // defensive hardening so a broken build never blocks `npm install`.
35
+ return;
36
+ }
37
+
38
+ if (result === 'installed') {
39
+ process.stdout.write('[open-knowledge] Agent Skill installed to detected agent hosts.\n');
40
+ } else if (result === 'failed') {
41
+ process.stderr.write(
42
+ '[open-knowledge] Agent Skill auto-install failed; run manually: ' +
43
+ "npx skills@~1.5.0 add <bundled-path> --agent '*' -g -y --copy\n",
44
+ );
45
+ }
46
+ // result === 'skip-current' → silent.
47
+ }
48
+
49
+ // Fire-and-forget. Always exit 0 regardless of outcome per SPEC D20 —
50
+ // `npm install` must never fail because skill-install hit an edge case.
51
+ run().finally(() => {
52
+ process.exit(0);
53
+ });
@@ -0,0 +1,101 @@
1
+ /**
2
+ * End-to-end probe: buildExecResult through the full pipeline
3
+ * (parseCommand → just-bash → extractPaths → enrichPath → dual-channel
4
+ * response). Hand-runnable — not part of the test suite.
5
+ *
6
+ * Run via: `bun run packages/cli/scripts/probe-exec.ts`
7
+ */
8
+ import { mkdirSync, rmSync, writeFileSync } from 'node:fs';
9
+ import { tmpdir } from 'node:os';
10
+ import { resolve } from 'node:path';
11
+ import { setTimeout as wait } from 'node:timers/promises';
12
+ import { commitWip, initShadowRepo, type WriterIdentity } from '@inkeep/open-knowledge-server';
13
+ import simpleGit from 'simple-git';
14
+ import { buildExecResult, type ExecStructuredResult } from '../src/mcp/tools/exec.ts';
15
+
16
+ const root = resolve(tmpdir(), `ok-exec-probe-${Date.now()}`);
17
+ mkdirSync(root, { recursive: true });
18
+
19
+ async function main(): Promise<void> {
20
+ const git = simpleGit(root);
21
+ await git.init();
22
+ await git.raw('config', 'user.name', 'Probe');
23
+ await git.raw('config', 'user.email', 'probe@t.test');
24
+ writeFileSync(resolve(root, 'README.md'), '# probe\n');
25
+ await git.add('README.md');
26
+ await git.commit('init');
27
+
28
+ const contentDir = resolve(root, 'articles');
29
+ mkdirSync(contentDir, { recursive: true });
30
+ writeFileSync(
31
+ resolve(contentDir, 'auth.md'),
32
+ '---\ntitle: Auth\ndescription: OAuth 2.0 flow\ntags:\n - auth\n - oauth\n---\n\n# Auth\n\nOAuth is...\n',
33
+ );
34
+ writeFileSync(
35
+ resolve(contentDir, 'sso.md'),
36
+ '---\ntitle: SSO\ntags:\n - auth\n---\n\n# SSO\n\noauth provider...\n',
37
+ );
38
+
39
+ // Shadow-repo activity
40
+ const shadow = await initShadowRepo(root);
41
+ const branch = (await simpleGit(root).revparse(['--abbrev-ref', 'HEAD'])).trim();
42
+ const agent: WriterIdentity = { id: 'agent-claude-7x', name: 'Claude (Tim)', email: 'a@ok.test' };
43
+ const human: WriterIdentity = { id: 'human-tim', name: 'Tim Cardona', email: 't@ok.test' };
44
+ await commitWip(shadow, human, contentDir, 'initial auth doc', branch);
45
+ await wait(1100);
46
+ writeFileSync(resolve(contentDir, 'auth.md'), '# Auth v2\n\noauth rewrite.\n');
47
+ await commitWip(shadow, agent, contentDir, 'rewrite §3 oauth examples', branch);
48
+
49
+ const deps = { projectDir: root, serverUrl: undefined as string | undefined };
50
+
51
+ const runs: Array<{ label: string; cmd: string }> = [
52
+ { label: 'cat single file (rich enrichment)', cmd: 'cat articles/auth.md' },
53
+ { label: 'ls directory (slim enrichment each)', cmd: 'ls articles/' },
54
+ { label: 'grep | head pipe', cmd: 'grep -rn oauth articles/ | head -5' },
55
+ { label: 'denied: awk (unknown_command)', cmd: 'awk BEGIN{print}' },
56
+ { label: 'denied: redirection (write_blocked)', cmd: 'cat articles/auth.md > out.txt' },
57
+ { label: 'denied: subshell (shell_construct_blocked)', cmd: 'cat `ls`' },
58
+ ];
59
+
60
+ for (const { label, cmd } of runs) {
61
+ console.log('\n═══════════════════════════════════════════════════════════');
62
+ console.log(` ${label}`);
63
+ console.log(` exec(${JSON.stringify(cmd)})`);
64
+ console.log('═══════════════════════════════════════════════════════════');
65
+ const result = (await buildExecResult({ command: cmd }, deps)) as {
66
+ content: Array<{ text: string }>;
67
+ structuredContent: ExecStructuredResult;
68
+ isError?: boolean;
69
+ };
70
+ console.log(result.content[0].text.slice(0, 900));
71
+ if (result.structuredContent.error) {
72
+ console.log(`\n [error.category] ${result.structuredContent.error.category}`);
73
+ } else {
74
+ console.log(`\n [enrichedPaths] ${result.structuredContent.enrichedPaths.length} path(s)`);
75
+ for (const m of result.structuredContent.enrichedPaths) {
76
+ if ((m as { type?: string }).type === 'directory') {
77
+ const d = m as {
78
+ path: string;
79
+ recursiveMdCount: number;
80
+ childDirCount: number;
81
+ };
82
+ console.log(
83
+ ` - ${d.path}/ (directory): ${d.recursiveMdCount} md, ${d.childDirCount} subdirs`,
84
+ );
85
+ } else {
86
+ const f = m as { path: string; title?: string; historySource: unknown };
87
+ const rich = f.historySource !== null ? ' (rich)' : '';
88
+ console.log(` - ${f.path}${rich}: ${f.title ?? '(no title)'}`);
89
+ }
90
+ }
91
+ }
92
+ }
93
+
94
+ console.log('\n═══════════════════════════════════════════════════════════');
95
+ }
96
+
97
+ try {
98
+ await main();
99
+ } finally {
100
+ rmSync(root, { recursive: true, force: true });
101
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * End-to-end probe: buildReadResult flowing through the shared enrichPath
3
+ * → readShadowLog → shadow-repo bare git reads. Confirms agent/human
4
+ * attribution lands in the rendered output (FR15/D12/D13/R3).
5
+ *
6
+ * Run via: `bun run packages/cli/scripts/probe-read-document.ts`
7
+ * Not part of the test suite — a hand-runnable probe.
8
+ */
9
+ import { mkdirSync, rmSync, writeFileSync } from 'node:fs';
10
+ import { tmpdir } from 'node:os';
11
+ import { resolve } from 'node:path';
12
+ import { setTimeout as wait } from 'node:timers/promises';
13
+ import {
14
+ commitUpstreamImport,
15
+ commitWip,
16
+ initShadowRepo,
17
+ type WriterIdentity,
18
+ } from '@inkeep/open-knowledge-server';
19
+ import simpleGit from 'simple-git';
20
+ import { buildReadResult } from '../src/mcp/tools/read-document.ts';
21
+
22
+ const root = resolve(tmpdir(), `ok-probe-${Date.now()}`);
23
+ mkdirSync(root, { recursive: true });
24
+
25
+ async function main(): Promise<void> {
26
+ // 1. Set up a real git-backed project
27
+ const git = simpleGit(root);
28
+ await git.init();
29
+ await git.raw('config', 'user.name', 'Probe');
30
+ await git.raw('config', 'user.email', 'probe@t.test');
31
+ writeFileSync(resolve(root, 'README.md'), '# probe\n');
32
+ await git.add('README.md');
33
+ await git.commit('init');
34
+
35
+ const contentDir = resolve(root, 'content');
36
+ mkdirSync(contentDir, { recursive: true });
37
+ writeFileSync(
38
+ resolve(contentDir, 'auth.md'),
39
+ `---
40
+ title: Auth
41
+ description: OAuth 2.0 flow for SSO
42
+ tags:
43
+ - auth
44
+ - oauth
45
+ ---
46
+
47
+ # Auth
48
+
49
+ OAuth is a protocol that...
50
+ `,
51
+ );
52
+
53
+ // 2. Initialize the shadow repo and record some activity
54
+ const shadow = await initShadowRepo(root);
55
+ const branch = (await simpleGit(root).revparse(['--abbrev-ref', 'HEAD'])).trim();
56
+
57
+ const agent: WriterIdentity = {
58
+ id: 'agent-claude-code-7x',
59
+ name: 'Claude Code (Tim)',
60
+ email: 'agent@ok.test',
61
+ };
62
+ const human: WriterIdentity = {
63
+ id: 'human-tim',
64
+ name: 'Tim Cardona',
65
+ email: 'tim@ok.test',
66
+ };
67
+
68
+ await commitWip(shadow, human, contentDir, 'initial draft of auth doc', branch);
69
+ await wait(1100);
70
+ writeFileSync(resolve(contentDir, 'auth.md'), '# Auth v2\n\nRewrote §3 oauth examples.\n');
71
+ await commitWip(shadow, agent, contentDir, 'rewrite §3 oauth examples', branch);
72
+ await wait(1100);
73
+ writeFileSync(resolve(contentDir, 'auth.md'), '# Auth v3\n\nFixed typo.\n');
74
+ await commitWip(shadow, human, contentDir, 'typo fix', branch);
75
+ await wait(1100);
76
+ // And a fake "upstream" git pull import
77
+ const oldHead = 'a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0';
78
+ const newHead = 'f0e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8e9';
79
+ await commitUpstreamImport(shadow, contentDir, oldHead, newHead, branch);
80
+
81
+ // 3. Call buildReadResult — the actual MCP-tool body, end to end
82
+ const output = await buildReadResult(
83
+ { path: 'content/auth.md' },
84
+ {
85
+ projectDir: root,
86
+ serverUrl: undefined, // disk-only, no Hocuspocus → backlinkCount stays null
87
+ config: {
88
+ mcp: {
89
+ tools: {
90
+ read_document: { historyDepth: 5 },
91
+ // biome-ignore lint/suspicious/noExplicitAny: probe-only cast; full config not needed
92
+ } as any,
93
+ // biome-ignore lint/suspicious/noExplicitAny: probe-only cast
94
+ } as any,
95
+ // biome-ignore lint/suspicious/noExplicitAny: probe-only cast
96
+ } as any,
97
+ },
98
+ );
99
+
100
+ console.log('═══════════════════════════════════════════════════════════');
101
+ console.log(' end-to-end probe: buildReadResult via shadow-repo');
102
+ console.log('═══════════════════════════════════════════════════════════');
103
+ console.log(output);
104
+ console.log('═══════════════════════════════════════════════════════════');
105
+ console.log(` project root: ${root}`);
106
+ }
107
+
108
+ try {
109
+ await main();
110
+ } finally {
111
+ rmSync(root, { recursive: true, force: true });
112
+ }
@@ -1,3 +0,0 @@
1
- import{a as e,i as t,n,t as r}from"./colors-CshxhXdR.mjs";import i from"cli-boxes";const a=i.round;function o(i){let o=[],s=`${i.name} v${i.version}`;o.push({plain:s,colored:r(s)}),o.push({plain:``,colored:``});let c=i.apiUrl?`Editor: `:`Local: `;if(o.push({plain:`${c}${i.localUrl}`,colored:`${c}${e(t(i.localUrl),i.localUrl)}`}),i.apiUrl){let t=`API: `;o.push({plain:`${t}${i.apiUrl}`,colored:`${t}${n(e(i.apiUrl,i.apiUrl))}`})}if(i.networkUrl){let n=`Network: `;o.push({plain:`${n}${i.networkUrl}`,colored:`${n}${e(t(i.networkUrl),i.networkUrl)}`})}o.push({plain:``,colored:``});let l=`Press Ctrl+C to stop`;o.push({plain:l,colored:n(l)});let u=Math.max(...o.map(e=>e.plain.length)),d=u+4,f=` ${a.topLeft}${a.top.repeat(d)}${a.topRight}`,p=` ${a.bottomLeft}${a.bottom.repeat(d)}${a.bottomRight}`;return[``,f,...o.map(e=>{let t=u-e.plain.length;return` ${a.left}${` `.repeat(2)}${e.colored}${` `.repeat(t+2)}${a.right}`}),p,``].join(`
2
- `)}export{o as renderBanner};
3
- //# sourceMappingURL=banner-De2a4ivv.mjs.map
@@ -1 +0,0 @@
1
- import{i as e,n as t,o as n,r}from"./colors-CshxhXdR.mjs";export{t as dim,r as error,e as info,n as warning};
@@ -1,2 +0,0 @@
1
- import e from"picocolors";const t=t=>e.red(t),n=t=>e.yellow(t),r=t=>e.cyan(t),i=t=>e.gray(t),a=t=>e.bold(t);function o(t,n){return e.isColorSupported?`\u001B]8;;${n}\u0007${t}\u001B]8;;\u0007`:t}export{o as a,r as i,i as n,n as o,t as r,a as t};
2
- //# sourceMappingURL=colors-CshxhXdR.mjs.map
@@ -1,2 +0,0 @@
1
- var e=`0.2.0`;const t=`.open-knowledge`,n=`AGENTS.md`,r=`config.yml`,i=`cache`,a=e,o=`open-knowledge`;export{t as a,o as i,i as n,a as o,r,n as t};
2
- //# sourceMappingURL=constants-yNFhYMHH.mjs.map
@@ -1,2 +0,0 @@
1
- import{resolve as e}from"node:path";import t from"simple-git";const n=new class{_tail=Promise.resolve();enqueue(e){let t=this._tail.then(()=>e());return this._tail=t.catch(()=>void 0),t}};function r(e){return n.enqueue(e)}function i(n,r={}){let{credentialArgs:i=[],gitIndexFile:a}=r,o={};return a&&(o.GIT_INDEX_FILE=e(n,a)),{git:t({baseDir:n,config:i.length>=2?[i[1]]:[]}).env(o),projectDir:n,credentialArgs:i}}export{r as n,i as t};
2
- //# sourceMappingURL=git-handle-B5vQdmjQ.mjs.map
@@ -1 +0,0 @@
1
- import{t as e}from"./git-handle-B5vQdmjQ.mjs";export{e as createGitInstance};
@@ -1 +0,0 @@
1
- import{i as e,n as t,r as n,t as r}from"./init-BH38QtfV.mjs";export{r as detectInstalledEditors,t as formatInitResult,n as initCommand,e as runInit};
@@ -1,6 +0,0 @@
1
- import{a as e,i as t}from"./constants-yNFhYMHH.mjs";import{c as n,l as r}from"./init-BzEVODBI.mjs";import{t as i}from"./preview-Cmt2vdUG.mjs";import{o as a}from"./colors-CshxhXdR.mjs";import{t as o}from"./is-object-WgQ3abDo.mjs";import{Command as s}from"commander";import{existsSync as c,mkdirSync as l,readFileSync as u,writeFileSync as d}from"node:fs";import{homedir as f}from"node:os";import{dirname as p,isAbsolute as m,join as h,relative as g,resolve as _}from"node:path";const v=[`claude`,`cursor`,`vscode`,`windsurf`],y=[`@inkeep/open-knowledge`,`mcp`],b={claude:{id:`claude`,label:`Claude Code`,configPath:e=>h(e,`.mcp.json`),topLevelKey:`mcpServers`,buildEntry:()=>({command:`npx`,args:y}),scope:`project`,instructionsPath:e=>h(e,`CLAUDE.md`)},cursor:{id:`cursor`,label:`Cursor`,configPath:e=>h(e,`.cursor`,`mcp.json`),topLevelKey:`mcpServers`,buildEntry:()=>({command:`npx`,args:y}),scope:`project`},vscode:{id:`vscode`,label:`VS Code`,configPath:e=>h(e,`.vscode`,`mcp.json`),topLevelKey:`servers`,buildEntry:()=>({type:`stdio`,command:`npx`,args:y}),scope:`project`},windsurf:{id:`windsurf`,label:`Windsurf`,configPath:(e,t)=>h(t??f(),`.codeium`,`windsurf`,`mcp_config.json`),topLevelKey:`mcpServers`,buildEntry:()=>({command:`npx`,args:y}),scope:`global`}};function x(e){let t=e.filter(e=>!(e in b));if(t.length>0)throw Error(`Unknown editor(s): ${t.join(`, `)}. Valid options: ${v.join(`, `)}`);return e.map(e=>b[e])}function S(e){if(!c(e))return{};let t=u(e,`utf-8`).trim();if(t===``)return{};try{let n=JSON.parse(t);if(o(n))return n;throw Error(`${e} root must be a JSON object`)}catch(t){throw t instanceof SyntaxError?Error(`${e} contains invalid JSON: ${t.message}`):t}}function C(e,t){l(p(e),{recursive:!0}),d(e,`${JSON.stringify(t,null,2)}\n`,`utf-8`)}const w=`0.0.1`,T=`open-knowledge-ui`;function E(e,t){let n=[];e.runtimeExecutable!==t.runtimeExecutable&&n.push(`runtimeExecutable`);let r=e.runtimeArgs;return Array.isArray(r)&&r.length===t.runtimeArgs.length&&r.every((e,n)=>e===t.runtimeArgs[n])||n.push(`runtimeArgs`),e.port!==t.port&&n.push(`port`),n}function D(e,t){let n=h(e,`.claude`,`launch.json`),r={name:T,runtimeExecutable:`npx`,runtimeArgs:[`@inkeep/open-knowledge`,`ui`],port:3e3};try{if(!c(n))return l(p(n),{recursive:!0}),d(n,`${JSON.stringify({version:w,configurations:[r]},null,2)}\n`,`utf-8`),{action:`created`,configPath:n};let e=u(n,`utf-8`).trim(),i=e?JSON.parse(e):{};if(!o(i))return{action:`failed`,configPath:n,error:`launch.json root is not an object`};let a=Array.isArray(i.configurations)?i.configurations:[],s=a.findIndex(e=>o(e)&&e.name===T);if(s>=0&&!t){let e=a[s],t=E(e,r);return t.length>0?{action:`skipped-stale`,configPath:n,staleFields:t}:{action:`skipped-existing`,configPath:n}}s>=0?a[s]=r:a.push(r);let f={...i,version:i.version??w,configurations:a};return d(n,`${JSON.stringify(f,null,2)}\n`,`utf-8`),{action:`merged`,configPath:n}}catch(e){return{action:`failed`,configPath:n,error:e instanceof Error?e.message:String(e)}}}function O(e,n,r,i){let a=e.configPath(n,i),o;try{o=S(a)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:a,error:t instanceof Error?t.message:String(t)}}let s=o[e.topLevelKey]??{},c=s[t];if(c&&!r)return{editorId:e.id,label:e.label,action:`skipped-existing`,configPath:a};let l={...o,[e.topLevelKey]:{...s,[t]:e.buildEntry()}};try{C(a,l)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:a,error:t instanceof Error?t.message:String(t)}}return{editorId:e.id,label:e.label,action:c?`overwritten`:`written`,configPath:a}}function k(e={}){let t=_(e.cwd??process.cwd()),i;try{i=n(t)}catch(e){return{contentCreated:[],contentSkipped:[],editors:[],rootInstructions:[],mcpAction:`failed`,mcpPath:h(t,`.mcp.json`),mcpError:`Content scaffolding failed: ${e instanceof Error?e.message:String(e)}`}}let a=e.editors??[`claude`],o=x(a),s=[];for(let n of o){if(e.mcp===!1){s.push({editorId:n.id,label:n.label,action:`skipped-flag`,configPath:n.configPath(t,e.home)});continue}s.push(O(n,t,e.force??!1,e.home))}let c=a.includes(`claude`)&&e.mcp!==!1?D(t,e.force??!1):void 0,l=o.map(e=>e.instructionsPath?.(t)).filter(e=>e!==void 0).map(e=>m(e)?g(t,e):e),u=e.rootInstructions===!1?[]:r(t,e.force??!1,l),d=s.find(e=>e.editorId===`claude`)??s[0]??{action:`skipped-flag`,configPath:h(t,`.mcp.json`)};return{contentCreated:i.created,contentSkipped:i.skipped,editors:s,rootInstructions:u,launchJson:c,mcpAction:d.action,mcpPath:d.configPath,mcpError:`error`in d?d.error:void 0}}function A(t,n){let r=[],o=h(n,e);if(t.contentCreated.length>0?(r.push(`Content scaffolded at ${o}/`),r.push(` Created: ${t.contentCreated.join(`, `)}`)):r.push(`Content already present at ${o}/`),t.contentSkipped.length>0&&r.push(` Skipped (already exist): ${t.contentSkipped.join(`, `)}`),r.push(``),t.editors.length===0)t.mcpError&&r.push(`Warning: ${t.mcpError}`);else{let e=t.editors.some(e=>e.action===`written`||e.action===`overwritten`),o=t.editors.some(e=>e.action===`failed`);if(t.editors.every(e=>e.action===`skipped-flag`))r.push(`MCP config not written — use without --no-mcp to configure editors`);else{r.push(`MCP server configuration:`);for(let e of t.editors){let t=e.configPath.startsWith(n)?g(n,e.configPath):e.configPath.replace(/^\/Users\/[^/]+/,`~`),i=` `.repeat(Math.max(1,14-e.label.length));switch(e.action){case`written`:r.push(` ${e.label}${i}${t} registered`);break;case`overwritten`:r.push(` ${e.label}${i}${t} overwritten (--force)`);break;case`skipped-existing`:r.push(` ${e.label}${i}${t} already configured`);break;case`failed`:r.push(` ${e.label}${i}${t} FAILED: ${e.error}`);break;case`skipped-flag`:break}}}if(o&&(r.push(``),r.push(`For failed editors, add the MCP server entry manually. See:`),r.push(` https://github.com/inkeep/open-knowledge#mcp-setup`)),t.launchJson){let e=t.launchJson,i=e.configPath.startsWith(n)?g(n,e.configPath):e.configPath;switch(e.action){case`created`:r.push(` launch.json ${i} created (preview_start("${T}") ready)`);break;case`merged`:r.push(` launch.json ${i} merged open-knowledge entry`);break;case`skipped-existing`:r.push(` launch.json ${i} already has open-knowledge entry`);break;case`skipped-stale`:r.push(` launch.json ${i} ${a(`⚠ existing open-knowledge entry is out of date`)}`),e.staleFields&&e.staleFields.length>0&&r.push(` ${a(`${e.staleFields.join(`, `)} differ from current defaults`)}`),r.push(` ${a(`re-run with --force to update`)}`);break;case`failed`:r.push(` launch.json ${i} FAILED: ${e.error}`);break}}if(t.rootInstructions.length>0){let e=t.rootInstructions.filter(e=>e.action!==`skipped-symlink`);if(e.length>0){r.push(``),r.push(`Root instructions:`);for(let t of e){let e=t.path.startsWith(n)?g(n,t.path):t.path,i=` `.repeat(Math.max(1,14-t.file.length));switch(t.action){case`created`:r.push(` ${t.file}${i}${e} created`);break;case`appended`:r.push(` ${t.file}${i}${e} appended Open Knowledge section`);break;case`replaced`:r.push(` ${t.file}${i}${e} replaced Open Knowledge section (--force)`);break;case`skipped-existing`:r.push(` ${t.file}${i}${e} already has Open Knowledge section`);break}}}}if(t.preview?(r.push(``),r.push(i(t.preview,n))):t.previewWarning&&(r.push(``),r.push(`Content preview unavailable: ${t.previewWarning}`)),e){let e=t.editors.filter(e=>e.action===`written`||e.action===`overwritten`).map(e=>e.label);r.push(``),r.push(`Next steps:`),r.push(` 1. Open your editor (${e.join(` / `)})`),r.push(` 2. Approve the MCP server when prompted`),r.push(` 3. The knowledge base is ready — use the three workflow tools:`),r.push(` - mcp__open-knowledge__init-content — bootstrap articles from the codebase`),r.push(` - mcp__open-knowledge__ingest — capture an external source`),r.push(` - mcp__open-knowledge__research — gather sources and write findings`)}}return r.join(`
2
- `)}function j(e){if(e===`all`)return[...v];let t=e.split(`,`).map(e=>e.trim());return x(t),t}function M(e,t){let n=[];for(let r of v)c(p(b[r].configPath(e,t)))&&n.push(r);return n}function N(){return new s(`init`).description(`Scaffold ${e}/ in the current directory and register the MCP server for your editor(s)`).option(`--mcp`,`Register the MCP server for selected editors (default: true)`,!0).option(`--no-mcp`,`Scaffold the ${e}/ directory but do not touch MCP config`).option(`--force`,`Overwrite existing open-knowledge MCP entries (default: skip)`).option(`--editor <editors>`,`Target editor(s): claude, cursor, vscode, windsurf, all (comma-separated) — default: all detected editors (non-TTY) / preselects detected editors (TTY)`).action(async e=>{let t=process.cwd(),n;if(e.editor)try{n=j(e.editor)}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1;return}else if(e.mcp!==!1&&process.stdin.isTTY){let{multiselect:e,isCancel:r}=await import(`@clack/prompts`),i=new Set(M(t));i.size===0&&process.stdout.write(`No MCP-capable editors detected — select manually, or cancel and use --editor <all|claude|cursor|vscode|windsurf>.
3
- `);let a=await e({message:`Which tools do you use? (space to toggle, enter to confirm)`,options:v.map(e=>{let n=b[e],r=n.scope===`global`?n.configPath(t).replace(/^\/Users\/[^/]+/,`~`):g(t,n.configPath(t));return{value:e,label:n.label,hint:r,initialValue:i.has(e)}}),required:!0});if(r(a)){process.stdout.write(`Init cancelled.
4
- `);return}n=a}else if(n=M(t),n.length===0){process.stderr.write(`No MCP-capable editors detected. Use --editor <all|claude|cursor|vscode|windsurf> to force.
5
- `),process.exitCode=1;return}let r=k({cwd:t,mcp:e.mcp,force:e.force,editors:n});try{let{previewContent:e}=await import(`./preview-C-NvAf2r.mjs`),{loadConfig:n}=await import(`./loader-D8pf7fi6.mjs`),{resolveContentDir:i}=await import(`./paths-CWTmBbr0.mjs`),{config:a}=n(t);r.preview=e({projectDir:t,contentDir:i(a,t),include:a.content.include,exclude:a.content.exclude})}catch(e){r.previewWarning=e instanceof Error?e.message:String(e)}process.stdout.write(`${A(r,t)}\n`),(r.editors.some(e=>e.action===`failed`)||r.mcpAction===`failed`)&&(process.exitCode=1)})}export{k as i,A as n,N as r,M as t};
6
- //# sourceMappingURL=init-BH38QtfV.mjs.map