ompgui 0.7.1 → 0.7.2

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 (286) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -6
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +4 -4
  5. package/.next/react-loadable-manifest.json +14 -7
  6. package/.next/required-server-files.js +2 -2
  7. package/.next/required-server-files.json +2 -2
  8. package/.next/routes-manifest.json +6 -0
  9. package/.next/server/app/_global-error/page.js +2 -2
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +2 -2
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +3 -3
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  24. package/.next/server/app/api/agent/[id]/events/route.js +1 -1
  25. package/.next/server/app/api/agent/[id]/route.js +1 -1
  26. package/.next/server/app/api/agent/new/route.js +1 -1
  27. package/.next/server/app/api/agent/running/events/route.js +2 -2
  28. package/.next/server/app/api/agents/[name]/route.js +1 -1
  29. package/.next/server/app/api/agents/route.js +1 -1
  30. package/.next/server/app/api/agents/unpack/route.js +1 -1
  31. package/.next/server/app/api/app-update/route.js +1 -1
  32. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  33. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  34. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  35. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/providers/route.js +1 -1
  37. package/.next/server/app/api/cwd/browse/route.js +1 -1
  38. package/.next/server/app/api/cwd/validate/route.js +2 -2
  39. package/.next/server/app/api/daemon/route.js +1 -0
  40. package/.next/server/app/api/daemon/route.js.nft.json +1 -0
  41. package/.next/server/app/api/daemon/route_client-reference-manifest.js +1 -0
  42. package/.next/server/app/api/default-cwd/route.js +1 -1
  43. package/.next/server/app/api/file-index/route.js +1 -1
  44. package/.next/server/app/api/files/[...path]/route.js +1 -1
  45. package/.next/server/app/api/git/diff/route.js +2 -2
  46. package/.next/server/app/api/git/status/route.js +2 -2
  47. package/.next/server/app/api/home/route.js +1 -1
  48. package/.next/server/app/api/mcp/route.js +2 -2
  49. package/.next/server/app/api/model-roles/route.js +1 -1
  50. package/.next/server/app/api/models/route.js +1 -1
  51. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  52. package/.next/server/app/api/models-config/route.js +1 -1
  53. package/.next/server/app/api/models-config/test/route.js +1 -1
  54. package/.next/server/app/api/omp-settings/route.js +1 -1
  55. package/.next/server/app/api/omp-update/route.js +2 -2
  56. package/.next/server/app/api/omp-version/route.js +1 -1
  57. package/.next/server/app/api/plugins/route.js +1 -1
  58. package/.next/server/app/api/projects/route.js +1 -1
  59. package/.next/server/app/api/providers/enable/route.js +1 -1
  60. package/.next/server/app/api/relay/devices/[id]/route.js +1 -1
  61. package/.next/server/app/api/relay/devices/route.js +1 -1
  62. package/.next/server/app/api/relay/pair/route.js +1 -1
  63. package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  64. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  66. package/.next/server/app/api/sessions/[id]/entries/[entryId]/media/route.js +1 -1
  67. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  68. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  69. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  71. package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
  72. package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
  73. package/.next/server/app/api/sessions/archive/route.js +1 -1
  74. package/.next/server/app/api/sessions/import/route.js +1 -1
  75. package/.next/server/app/api/sessions/route.js +1 -1
  76. package/.next/server/app/api/skills/check/route.js +1 -1
  77. package/.next/server/app/api/skills/install/route.js +1 -1
  78. package/.next/server/app/api/skills/route.js +1 -1
  79. package/.next/server/app/api/skills/search/route.js +1 -1
  80. package/.next/server/app/api/skills/update/route.js +1 -1
  81. package/.next/server/app/api/usage/route.js +1 -1
  82. package/.next/server/app/api/web-auth/session/route.js +1 -1
  83. package/.next/server/app/api/worktrees/route.js +1 -1
  84. package/.next/server/app/apple-icon.png/route.js +1 -1
  85. package/.next/server/app/favicon.ico/route.js +1 -1
  86. package/.next/server/app/icon.svg/route.js +1 -1
  87. package/.next/server/app/index.html +1 -1
  88. package/.next/server/app/index.rsc +4 -4
  89. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  90. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  91. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  92. package/.next/server/app/login/page.js +1 -1
  93. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/login.html +1 -1
  95. package/.next/server/app/login.rsc +4 -4
  96. package/.next/server/app/login.segments/_full.segment.rsc +4 -4
  97. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  98. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  99. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  100. package/.next/server/app/page.js +2 -2
  101. package/.next/server/app/page_client-reference-manifest.js +1 -1
  102. package/.next/server/app/pair/page.js +1 -1
  103. package/.next/server/app/pair/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/pair.html +1 -1
  105. package/.next/server/app/pair.rsc +4 -4
  106. package/.next/server/app/pair.segments/_full.segment.rsc +4 -4
  107. package/.next/server/app/pair.segments/_tree.segment.rsc +2 -2
  108. package/.next/server/app/pair.segments/pair/__PAGE__.segment.rsc +4 -4
  109. package/.next/server/app/relay/route.js +1 -1
  110. package/.next/server/app-paths-manifest.json +7 -6
  111. package/.next/server/chunks/5318.js +1 -1
  112. package/.next/server/chunks/795.js +1 -1
  113. package/.next/server/chunks/8834.js +1 -1
  114. package/.next/server/chunks/933.js +1 -1
  115. package/.next/server/functions-config-manifest.json +1 -0
  116. package/.next/server/middleware-build-manifest.js +1 -1
  117. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  118. package/.next/server/middleware.js +3 -3
  119. package/.next/server/pages/404.html +1 -1
  120. package/.next/server/pages/500.html +1 -1
  121. package/.next/server/server-reference-manifest.json +1 -1
  122. package/.next/static/Na7qed083WBP3X-plluRO/_buildManifest.js +1 -0
  123. package/.next/static/chunks/{1012.2a9e89fd82a08863.js → 1012.477e42e5184b6aaa.js} +1 -1
  124. package/.next/static/chunks/1941.66c3a0942c0c3e5d.js +1 -0
  125. package/.next/static/chunks/{2201.e6bbfc26ce87920c.js → 2201.46326eb058826eb2.js} +1 -1
  126. package/.next/static/chunks/{3274.4cdcf3a52b884856.js → 3274.2a04ea2716225057.js} +1 -1
  127. package/.next/static/chunks/3944.6215b78f025077b3.js +1 -0
  128. package/.next/static/chunks/4315-142781649334beb2.js +1 -0
  129. package/.next/static/chunks/4906-7dff29185f63f908.js +1 -0
  130. package/.next/static/chunks/587-c973123b3c9a5b80.js +1 -0
  131. package/.next/static/chunks/{7488.42415d6f1b86c86b.js → 7488.1403755f69bda581.js} +1 -1
  132. package/.next/static/chunks/app/_global-error/page-710453b8adcf7d31.js +1 -0
  133. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-710453b8adcf7d31.js +1 -0
  134. package/.next/static/chunks/app/api/agent/[id]/events/route-710453b8adcf7d31.js +1 -0
  135. package/.next/static/chunks/app/api/agent/[id]/route-710453b8adcf7d31.js +1 -0
  136. package/.next/static/chunks/app/api/agent/new/route-710453b8adcf7d31.js +1 -0
  137. package/.next/static/chunks/app/api/agent/running/events/route-710453b8adcf7d31.js +1 -0
  138. package/.next/static/chunks/app/api/agents/[name]/route-710453b8adcf7d31.js +1 -0
  139. package/.next/static/chunks/app/api/agents/route-710453b8adcf7d31.js +1 -0
  140. package/.next/static/chunks/app/api/agents/unpack/route-710453b8adcf7d31.js +1 -0
  141. package/.next/static/chunks/app/api/app-update/route-710453b8adcf7d31.js +1 -0
  142. package/.next/static/chunks/app/api/auth/all-providers/route-710453b8adcf7d31.js +1 -0
  143. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-710453b8adcf7d31.js +1 -0
  144. package/.next/static/chunks/app/api/auth/login/[provider]/route-710453b8adcf7d31.js +1 -0
  145. package/.next/static/chunks/app/api/auth/logout/[provider]/route-710453b8adcf7d31.js +1 -0
  146. package/.next/static/chunks/app/api/auth/providers/route-710453b8adcf7d31.js +1 -0
  147. package/.next/static/chunks/app/api/cwd/browse/route-710453b8adcf7d31.js +1 -0
  148. package/.next/static/chunks/app/api/cwd/validate/route-710453b8adcf7d31.js +1 -0
  149. package/.next/static/chunks/app/api/daemon/route-710453b8adcf7d31.js +1 -0
  150. package/.next/static/chunks/app/api/default-cwd/route-710453b8adcf7d31.js +1 -0
  151. package/.next/static/chunks/app/api/file-index/route-710453b8adcf7d31.js +1 -0
  152. package/.next/static/chunks/app/api/files/[...path]/route-710453b8adcf7d31.js +1 -0
  153. package/.next/static/chunks/app/api/git/diff/route-710453b8adcf7d31.js +1 -0
  154. package/.next/static/chunks/app/api/git/status/route-710453b8adcf7d31.js +1 -0
  155. package/.next/static/chunks/app/api/home/route-710453b8adcf7d31.js +1 -0
  156. package/.next/static/chunks/app/api/mcp/route-710453b8adcf7d31.js +1 -0
  157. package/.next/static/chunks/app/api/model-roles/route-710453b8adcf7d31.js +1 -0
  158. package/.next/static/chunks/app/api/models/route-710453b8adcf7d31.js +1 -0
  159. package/.next/static/chunks/app/api/models-config/catalog/route-710453b8adcf7d31.js +1 -0
  160. package/.next/static/chunks/app/api/models-config/route-710453b8adcf7d31.js +1 -0
  161. package/.next/static/chunks/app/api/models-config/test/route-710453b8adcf7d31.js +1 -0
  162. package/.next/static/chunks/app/api/omp-settings/route-710453b8adcf7d31.js +1 -0
  163. package/.next/static/chunks/app/api/omp-update/route-710453b8adcf7d31.js +1 -0
  164. package/.next/static/chunks/app/api/omp-version/route-710453b8adcf7d31.js +1 -0
  165. package/.next/static/chunks/app/api/plugins/route-710453b8adcf7d31.js +1 -0
  166. package/.next/static/chunks/app/api/projects/route-710453b8adcf7d31.js +1 -0
  167. package/.next/static/chunks/app/api/providers/enable/route-710453b8adcf7d31.js +1 -0
  168. package/.next/static/chunks/app/api/relay/devices/[id]/route-710453b8adcf7d31.js +1 -0
  169. package/.next/static/chunks/app/api/relay/devices/route-710453b8adcf7d31.js +1 -0
  170. package/.next/static/chunks/app/api/relay/pair/route-710453b8adcf7d31.js +1 -0
  171. package/.next/static/chunks/app/api/sessions/[id]/archive/route-710453b8adcf7d31.js +1 -0
  172. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-710453b8adcf7d31.js +1 -0
  173. package/.next/static/chunks/app/api/sessions/[id]/context/route-710453b8adcf7d31.js +1 -0
  174. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-710453b8adcf7d31.js +1 -0
  175. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-710453b8adcf7d31.js +1 -0
  176. package/.next/static/chunks/app/api/sessions/[id]/export/route-710453b8adcf7d31.js +1 -0
  177. package/.next/static/chunks/app/api/sessions/[id]/route-710453b8adcf7d31.js +1 -0
  178. package/.next/static/chunks/app/api/sessions/[id]/state/route-710453b8adcf7d31.js +1 -0
  179. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-710453b8adcf7d31.js +1 -0
  180. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-710453b8adcf7d31.js +1 -0
  181. package/.next/static/chunks/app/api/sessions/archive/route-710453b8adcf7d31.js +1 -0
  182. package/.next/static/chunks/app/api/sessions/import/route-710453b8adcf7d31.js +1 -0
  183. package/.next/static/chunks/app/api/sessions/route-710453b8adcf7d31.js +1 -0
  184. package/.next/static/chunks/app/api/skills/check/route-710453b8adcf7d31.js +1 -0
  185. package/.next/static/chunks/app/api/skills/install/route-710453b8adcf7d31.js +1 -0
  186. package/.next/static/chunks/app/api/skills/route-710453b8adcf7d31.js +1 -0
  187. package/.next/static/chunks/app/api/skills/search/route-710453b8adcf7d31.js +1 -0
  188. package/.next/static/chunks/app/api/skills/update/route-710453b8adcf7d31.js +1 -0
  189. package/.next/static/chunks/app/api/usage/route-710453b8adcf7d31.js +1 -0
  190. package/.next/static/chunks/app/api/web-auth/session/route-710453b8adcf7d31.js +1 -0
  191. package/.next/static/chunks/app/api/worktrees/route-710453b8adcf7d31.js +1 -0
  192. package/.next/static/chunks/app/login/page-a54174ed920300f7.js +1 -0
  193. package/.next/static/chunks/app/manifest.webmanifest/route-710453b8adcf7d31.js +1 -0
  194. package/.next/static/chunks/app/{page-dcb62803f94d0c1c.js → page-f53564bcb292e1e5.js} +1 -1
  195. package/.next/static/chunks/app/pair/page-d72423ffc5654e29.js +1 -0
  196. package/.next/static/chunks/app/relay/route-710453b8adcf7d31.js +1 -0
  197. package/.next/static/chunks/next/dist/client/components/builtin/app-error-710453b8adcf7d31.js +1 -0
  198. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-710453b8adcf7d31.js +1 -0
  199. package/.next/static/chunks/next/dist/client/components/builtin/not-found-710453b8adcf7d31.js +1 -0
  200. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-710453b8adcf7d31.js +1 -0
  201. package/.next/static/chunks/webpack-4e02c722bd171663.js +1 -0
  202. package/.next/static/css/63b622301ba107de.css +3 -0
  203. package/README.ja.md +28 -3
  204. package/README.ko.md +28 -3
  205. package/README.md +28 -3
  206. package/README.zh-CN.md +28 -3
  207. package/bin/ompgui-options.js +9 -2
  208. package/bin/ompgui-service.js +223 -0
  209. package/bin/ompgui-update.js +85 -22
  210. package/bin/ompgui.js +7 -0
  211. package/package.json +2 -1
  212. package/.next/static/QFUZ5E_wgec_DUeAoDxrb/_buildManifest.js +0 -1
  213. package/.next/static/chunks/1108.1f1e4661b6e402fb.js +0 -1
  214. package/.next/static/chunks/3065-24b6f2111fc740ea.js +0 -1
  215. package/.next/static/chunks/4315-bd1069a88334f3a3.js +0 -1
  216. package/.next/static/chunks/9090-6ce028ffeafe2aee.js +0 -1
  217. package/.next/static/chunks/app/_global-error/page-2900441d61e06609.js +0 -1
  218. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-2900441d61e06609.js +0 -1
  219. package/.next/static/chunks/app/api/agent/[id]/events/route-2900441d61e06609.js +0 -1
  220. package/.next/static/chunks/app/api/agent/[id]/route-2900441d61e06609.js +0 -1
  221. package/.next/static/chunks/app/api/agent/new/route-2900441d61e06609.js +0 -1
  222. package/.next/static/chunks/app/api/agent/running/events/route-2900441d61e06609.js +0 -1
  223. package/.next/static/chunks/app/api/agents/[name]/route-2900441d61e06609.js +0 -1
  224. package/.next/static/chunks/app/api/agents/route-2900441d61e06609.js +0 -1
  225. package/.next/static/chunks/app/api/agents/unpack/route-2900441d61e06609.js +0 -1
  226. package/.next/static/chunks/app/api/app-update/route-2900441d61e06609.js +0 -1
  227. package/.next/static/chunks/app/api/auth/all-providers/route-2900441d61e06609.js +0 -1
  228. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-2900441d61e06609.js +0 -1
  229. package/.next/static/chunks/app/api/auth/login/[provider]/route-2900441d61e06609.js +0 -1
  230. package/.next/static/chunks/app/api/auth/logout/[provider]/route-2900441d61e06609.js +0 -1
  231. package/.next/static/chunks/app/api/auth/providers/route-2900441d61e06609.js +0 -1
  232. package/.next/static/chunks/app/api/cwd/browse/route-2900441d61e06609.js +0 -1
  233. package/.next/static/chunks/app/api/cwd/validate/route-2900441d61e06609.js +0 -1
  234. package/.next/static/chunks/app/api/default-cwd/route-2900441d61e06609.js +0 -1
  235. package/.next/static/chunks/app/api/file-index/route-2900441d61e06609.js +0 -1
  236. package/.next/static/chunks/app/api/files/[...path]/route-2900441d61e06609.js +0 -1
  237. package/.next/static/chunks/app/api/git/diff/route-2900441d61e06609.js +0 -1
  238. package/.next/static/chunks/app/api/git/status/route-2900441d61e06609.js +0 -1
  239. package/.next/static/chunks/app/api/home/route-2900441d61e06609.js +0 -1
  240. package/.next/static/chunks/app/api/mcp/route-2900441d61e06609.js +0 -1
  241. package/.next/static/chunks/app/api/model-roles/route-2900441d61e06609.js +0 -1
  242. package/.next/static/chunks/app/api/models/route-2900441d61e06609.js +0 -1
  243. package/.next/static/chunks/app/api/models-config/catalog/route-2900441d61e06609.js +0 -1
  244. package/.next/static/chunks/app/api/models-config/route-2900441d61e06609.js +0 -1
  245. package/.next/static/chunks/app/api/models-config/test/route-2900441d61e06609.js +0 -1
  246. package/.next/static/chunks/app/api/omp-settings/route-2900441d61e06609.js +0 -1
  247. package/.next/static/chunks/app/api/omp-update/route-2900441d61e06609.js +0 -1
  248. package/.next/static/chunks/app/api/omp-version/route-2900441d61e06609.js +0 -1
  249. package/.next/static/chunks/app/api/plugins/route-2900441d61e06609.js +0 -1
  250. package/.next/static/chunks/app/api/projects/route-2900441d61e06609.js +0 -1
  251. package/.next/static/chunks/app/api/providers/enable/route-2900441d61e06609.js +0 -1
  252. package/.next/static/chunks/app/api/relay/devices/[id]/route-2900441d61e06609.js +0 -1
  253. package/.next/static/chunks/app/api/relay/devices/route-2900441d61e06609.js +0 -1
  254. package/.next/static/chunks/app/api/relay/pair/route-2900441d61e06609.js +0 -1
  255. package/.next/static/chunks/app/api/sessions/[id]/archive/route-2900441d61e06609.js +0 -1
  256. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-2900441d61e06609.js +0 -1
  257. package/.next/static/chunks/app/api/sessions/[id]/context/route-2900441d61e06609.js +0 -1
  258. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-2900441d61e06609.js +0 -1
  259. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-2900441d61e06609.js +0 -1
  260. package/.next/static/chunks/app/api/sessions/[id]/export/route-2900441d61e06609.js +0 -1
  261. package/.next/static/chunks/app/api/sessions/[id]/route-2900441d61e06609.js +0 -1
  262. package/.next/static/chunks/app/api/sessions/[id]/state/route-2900441d61e06609.js +0 -1
  263. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-2900441d61e06609.js +0 -1
  264. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-2900441d61e06609.js +0 -1
  265. package/.next/static/chunks/app/api/sessions/archive/route-2900441d61e06609.js +0 -1
  266. package/.next/static/chunks/app/api/sessions/import/route-2900441d61e06609.js +0 -1
  267. package/.next/static/chunks/app/api/sessions/route-2900441d61e06609.js +0 -1
  268. package/.next/static/chunks/app/api/skills/check/route-2900441d61e06609.js +0 -1
  269. package/.next/static/chunks/app/api/skills/install/route-2900441d61e06609.js +0 -1
  270. package/.next/static/chunks/app/api/skills/route-2900441d61e06609.js +0 -1
  271. package/.next/static/chunks/app/api/skills/search/route-2900441d61e06609.js +0 -1
  272. package/.next/static/chunks/app/api/skills/update/route-2900441d61e06609.js +0 -1
  273. package/.next/static/chunks/app/api/usage/route-2900441d61e06609.js +0 -1
  274. package/.next/static/chunks/app/api/web-auth/session/route-2900441d61e06609.js +0 -1
  275. package/.next/static/chunks/app/api/worktrees/route-2900441d61e06609.js +0 -1
  276. package/.next/static/chunks/app/login/page-76b98ef41947c31b.js +0 -1
  277. package/.next/static/chunks/app/manifest.webmanifest/route-2900441d61e06609.js +0 -1
  278. package/.next/static/chunks/app/pair/page-e1ad2578491903a8.js +0 -1
  279. package/.next/static/chunks/app/relay/route-2900441d61e06609.js +0 -1
  280. package/.next/static/chunks/next/dist/client/components/builtin/app-error-2900441d61e06609.js +0 -1
  281. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-2900441d61e06609.js +0 -1
  282. package/.next/static/chunks/next/dist/client/components/builtin/not-found-2900441d61e06609.js +0 -1
  283. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2900441d61e06609.js +0 -1
  284. package/.next/static/chunks/webpack-789dbb5c37af2dc8.js +0 -1
  285. package/.next/static/css/d4456801cd2ff0da.css +0 -3
  286. /package/.next/static/{QFUZ5E_wgec_DUeAoDxrb → Na7qed083WBP3X-plluRO}/_ssgManifest.js +0 -0
@@ -86,7 +86,7 @@ ${ju}: true
86
86
  ${a}`:a;let e=d[0].includes("\r\n")?"\r\n":"\n",f=d[1].split(/\r?\n/),g=f.reduce((a,b,c)=>(jx.test(b)&&a.push(c),a),[]);if(b)if(0===g.length)c=[`${ju}: true`,...f];else{let a=g[0],b=/^([\w-]+)/.exec(f[a])?.[1]??ju;c=f.map((c,d)=>d===a?`${b}: true`:c).filter((b,c)=>c===a||!g.includes(c))}else{if(0===g.length)return a;c=f.filter((a,b)=>!g.includes(b))}return`---${e}${c.join(e)}${e}---${d[2]}`+a.slice(d[0].length)}(g,c);if(h!==g){let a=`${f}.tmp-${process.pid}-${Date.now()}`;try{(0,O.mkdirSync)((0,P.dirname)(f),{recursive:!0}),(0,O.writeFileSync)(a,h,"utf8"),(0,O.renameSync)(a,f)}catch(b){try{(0,O.existsSync)(a)&&(0,O.unlinkSync)(a)}catch{}throw b}}let{frontmatter:i}=jq(h);return{filePath:f,disableModelInvocation:jv(i)}}function jR(a,b={}){return{source:a,scope:b.scope??"global",status:b.status??"installed",disabled:b.disabled??!1,...b.version?{version:b.version}:{},...b.counts?{counts:b.counts}:{}}}async function jS(a){let b=await jO(a),{stdout:c}=await (0,aA.eG)(["plugin","list","--json"],{cwd:b,timeout:6e4}),d=(0,aA.nH)(c),e=[];for(let a of d?.npm??[]){if(!a.name)continue;let b=!1!==a.enabled;e.push(jR(a.name,{scope:"global",status:b?"loaded":"disabled",disabled:!b,version:a.version}))}for(let a of d?.marketplace??[]){if(!a.id)continue;let b=!1!==a.enabled;e.push(jR(a.id,{scope:"project"===a.scope?"project":"global",status:b?"loaded":"disabled",disabled:!b,version:a.version}))}return{cwd:b,packages:e}}async function jT(a,b,c,d){let e=await jO(a),f=c?.trim(),g="project"===d?["--scope","project"]:[],h="",i=async(a,b)=>{try{let c=await (0,aA.eG)(a,{cwd:e,timeout:b});return`${c.stdout}${c.stderr}`.slice(-2e3)}catch(a){throw new bM("plugin_action_failed",(`${a.stdout??""}${a.stderr??""}`.trim()||a.message||String(a)).slice(-500))}};if("install"===b){if(!f)throw new bM("invalid_source","source is required");h=await i(["plugin","install",f,"--json",...g],3e5)}else if("remove"===b){if(!f)throw new bM("invalid_source","source is required");h=await i(["plugin","uninstall",f,"--json",...g],12e4)}else if("update"===b)h=await i(["plugin","upgrade",...f?[f,...g]:[]],3e5);else if("disable"===b||"enable"===b){if(!f)throw new bM("invalid_source","source is required");h=await i(["plugin",b,f,"--json",...g],6e4)}let j=await jS(e);return{cwd:j.cwd,packages:j.packages,output:h}}async function jU(a){let b=a?.trim()?await jO(a):null,c=b?i3(b):null,d=function(a=(0,am.join)((0,R.$M)(),"mcp.json")){return i_(a)}(),e=[];for(let{name:a,config:b}of d.servers){let c=!1!==b.enabled;e.push({name:a,source:"User level",status:c?"configured":"disabled",type:"string"==typeof b.type?b.type:"string"==typeof b.url?"http":"stdio",enabled:c})}for(let a of d.disabledServers)e.push({name:a,source:"Disabled",status:"disabled",enabled:!1});for(let[a,b]of Object.entries(c?.config.mcpServers??{})){let c=!1!==b.enabled;e.push({name:a,source:"Project level",status:c?"configured":"disabled",type:"string"==typeof b.type?b.type:"string"==typeof b.url?"http":"stdio",enabled:c})}for(let a of function(a,b=[]){let c=new Set(b),d=new Set(i0((0,aI.homedir)()));if(a)for(let b of i0((0,am.resolve)(a)))d.add(b);let e=new Set,f=(0,am.join)((0,R.$M)(),"mcp.json");(0,ak.existsSync)(f)&&e.add((0,ak.realpathSync)(f)),a&&e.add(i2(a).path);let g=[],h=new Set;for(let a of d){try{if(e.has((0,ak.realpathSync)(a)))continue}catch{continue}let b=function(a){let b=".claude.json"===(0,am.basename)(a)?".claude":(0,am.basename)((0,am.dirname)(a));return".claude"===b?"Claude Code":".codex"===b?"Codex":".cursor"===b?"Cursor":".vscode"===b?"VS Code":b.replace(/^\./,"")||"Configured"}(a);if(a.endsWith(".toml")){for(let d of function(a,b,c){try{if((0,ak.statSync)(a).size>5242880)return[];let d=(0,ak.readFileSync)(a,"utf8"),e=[...d.matchAll(/^\s*\[mcp_servers(?:\.([A-Za-z0-9_-]+)|\."([^"]+)")\]\s*$/gm)];return e.flatMap((a,f)=>{let g=a[1]??a[2];if(!g||c.has(g))return[];let h=d.slice((a.index??0)+a[0].length,e[f+1]?.index);return[{name:g,source:b,status:/^\s*enabled\s*=\s*false\s*$/m.test(h)?"disabled":"configured",type:/^\s*url\s*=/m.test(h)?"http":"stdio"}]})}catch{return[]}}(a,b,c)){let a=`${d.source}:${d.name}`;h.has(a)||(h.add(a),g.push(d))}continue}for(let d of i_(a).servers){if(c.has(d.name))continue;let a=`${b}:${d.name}`;if(h.has(a))continue;h.add(a);let e="string"==typeof d.config.type?d.config.type:"string"==typeof d.config.url?"http":"stdio";g.push({name:d.name,source:b,status:!1===d.config.enabled?"disabled":"configured",type:e})}}return g}(b??void 0,d.disabledServers))e.push({name:a.name,source:a.source,status:a.status,...a.type?{type:a.type}:{},enabled:"disabled"!==a.status});return{inventory:e}}async function jV(a,b){return!function(a,b){if(!iZ.test(b))throw Error("Invalid server name");i5(i3(a).path,()=>{let c=i3(a),d={...c.config.mcpServers??{}};if(!(b in d))throw Error("MCP server was not found");delete d[b];let e={...c.config,mcpServers:d};return aL(c.path,`${JSON.stringify(e,null,2)}
87
87
  `),{path:c.path}})}(await jO(a),b),{name:b}}async function jW(a){let b={type:a.type};return void 0!==a.command&&(b.command=a.command),void 0!==a.url&&(b.url=a.url),void 0!==a.args&&(b.args=a.args),void 0!==a.env&&(b.env=a.env??{}),void 0!==a.headers&&(b.headers=a.headers??{}),void 0!==a.serverCwd&&(b.cwd=a.serverCwd),void 0!==a.enabled&&(b.enabled=a.enabled),void 0!==a.timeout&&(b.timeout=a.timeout),void 0!==a.requestIdFormat&&(b.requestIdFormat=a.requestIdFormat),jX(a.cwd,a.name,b,a.previousName)}async function jX(a,b,c,d){let e=await jO(a);if("object"!=typeof c||null===c||Array.isArray(c))throw new bM("invalid_mcp","server must be an object");let f={...c};null===f.env&&(f.env={}),null===f.headers&&(f.headers={});try{i4(b,f)}catch(a){throw new bM("invalid_mcp",a instanceof Error?a.message:String(a))}try{var g=e,h=b,i=f,j=d;if(i4(h,i),void 0!==j&&!iZ.test(j))throw Error("Invalid previous server name");i5(i3(g).path,()=>{let a=i3(g),b={...a.config.mcpServers??{}},c=b[j??h];j&&j!==h&&delete b[j],b[h]={...i,...c?.env!==void 0&&void 0===i.env?{env:c.env}:{},...c?.headers!==void 0&&void 0===i.headers?{headers:c.headers}:{}};let d={...a.config,mcpServers:b};return(0,ak.mkdirSync)((0,am.dirname)(a.path),{recursive:!0}),aL(a.path,`${JSON.stringify(d,null,2)}
88
88
  `),{path:a.path}})}catch{throw new bM("mcp_write_failed","Unable to write MCP configuration")}return{name:b}}let jY=process.env.SKILLS_API_URL||"https://skills.sh",jZ=/\x1B\[[0-9;]*m/g;async function j$(a,b=10){let c=a.trim();if(!c)throw new bM("invalid_query","query is required");let d=Math.min(20,Math.max(1,Math.floor(b)||10));try{let a=await fetch(`${jY}/api/search?q=${encodeURIComponent(c)}&limit=${d}`,{cache:"no-store"});if(!a.ok)throw Error(`skills.sh search failed: HTTP ${a.status}`);let b=await a.json();if("object"!=typeof b||null===b||!("skills"in b)||!Array.isArray(b.skills))throw Error("Invalid skills search response");let e=[];for(let a of b.skills){if("object"!=typeof a||null===a||Array.isArray(a))continue;let b="name"in a&&"string"==typeof a.name?a.name.trim():void 0,c="source"in a&&"string"==typeof a.source?a.source.trim():void 0,f="id"in a&&"string"==typeof a.id?a.id.trim():void 0;if(!b||!c&&!f)continue;let g="installs"in a&&"number"==typeof a.installs?a.installs:0;if(e.push({package:`${c||f}@${b}`,...g>0?{installs:`${g} installs`}:{},...f?{url:`${jY}/${f}`}:{}}),e.length>=d)break}return{query:c,results:e}}catch{let{stdout:a,stderr:b}=await i8(["skills","find",c],{timeout:2e4,env:{...process.env,FORCE_COLOR:"0"}});return{query:c,results:(function(a){let b=a.replace(jZ,""),c=[],d=b.split("\n");for(let a=0;a<d.length;a++){let b=d[a].trim().match(/^([\w.\-]+\/[\w.\-@:]+)\s+([\d.,]+[KMB]?\s+installs)$/);if(b){let e=d[a+1]?.trim().replace(/^└\s*/,"");c.push({package:b[1],installs:b[2],...e?.startsWith("https://")?{url:e}:{}})}}return c})(a+b).slice(0,d)}}}async function j_(a,b,c){let d,e=a.trim();if(!e)throw new bM("invalid_package","package is required");let f="project"!==b;if(f)c?.trim()&&(d=await jO(c));else{if(!c?.trim())throw new bM("invalid_cwd","cwd is required for project install");d=await jO(c)}let g=["skills","add",e,"-y","--agent","universal"];f&&g.push("-g");try{let{stdout:a,stderr:b}=await i8(g,{timeout:6e4,cwd:d,env:{...process.env,FORCE_COLOR:"0"}}),c=(a+b).replace(jZ,"");if(!/Installation complete|Installed \d+ skill/.test(c))throw new bM("skill_install_failed",c.slice(-300)||"Install failed")}catch(a){if(a instanceof bM)throw a;throw new bM("skill_install_failed",(((a.stdout??"")+(a.stderr??"")).replace(jZ,"")||a.message||String(a)).slice(-300)||"Install failed")}return{package:e,scope:f?"global":"project"}}async function j0(a){let b=a?.trim()?await jO(a):void 0,c=(await jf(b??process.cwd())).agents.map(a=>({name:a.name,description:a.description,source:a.source,...a.filePath?{filePath:a.filePath}:{},systemPrompt:a.systemPrompt,...a.disabled?{disabled:!0}:{}}));return b?{cwd:b,agents:c}:{agents:c}}async function j1(a){let b,c=a.name.trim(),d=a.description.trim();if(!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(c))throw new bM("invalid_name","name must be kebab-case");if(!d)throw new bM("invalid_description","description is required");let e={...void 0!==a.tools?{tools:a.tools}:{},...void 0!==a.model?{model:a.model}:{},...void 0!==a.thinkingLevel?{thinkingLevel:a.thinkingLevel}:{},...void 0!==a.prewalk?{prewalk:a.prewalk}:{},...void 0!==a.advisor?{advisor:a.advisor}:{},...void 0!==a.blocking?{blocking:a.blocking}:{},...a.cwd?.trim()?{cwd:a.cwd.trim()}:{}};try{b=await jj({scope:a.scope,name:c,description:d,systemPrompt:a.systemPrompt,...e})}catch(g){let f=g instanceof Error?g.message:String(g);if(/already exists/i.test(f))try{b=await jk({scope:a.scope,name:c,description:d,systemPrompt:a.systemPrompt,...e})}catch(a){throw new bM("agent_save_failed",a instanceof Error?a.message:String(a))}else throw new bM("agent_save_failed",f)}return{name:c,filePath:b}}async function j2(a){try{await jl({name:a.name,scope:a.scope,...a.cwd?.trim()?{cwd:a.cwd.trim()}:{}})}catch(a){throw new bM("agent_delete_failed",a instanceof Error?a.message:String(a))}return{name:a.name}}async function j3(a){let b=a.name.trim();if(!b)throw new bM("invalid_name","name is required");let c=a.cwd?.trim()?await jO(a.cwd):void 0,d=(await jf(c??process.cwd())).agents.find(c=>c.name===b&&(!a.scope||c.source===a.scope));if(!d)throw new bM("agent_not_found",`Agent "${b}" was not found`);return{name:d.name,description:d.description,source:d.source,...d.filePath?{filePath:d.filePath}:{},...d.tools?{tools:d.tools}:{},...void 0!==d.model?{model:d.model}:{},...void 0!==d.thinkingLevel?{thinkingLevel:d.thinkingLevel}:{},...void 0!==d.prewalk?{prewalk:d.prewalk}:{},...void 0!==d.advisor?{advisor:d.advisor}:{},...void 0!==d.blocking?{blocking:d.blocking}:{},systemPrompt:d.systemPrompt,...d.disabled?{disabled:!0}:{},...d.isShadowed?{isShadowed:!0}:{},...void 0!==d.overrideModel?{overrideModel:d.overrideModel}:{},...void 0!==d.prewalkOverride?{prewalkOverride:d.prewalkOverride}:{},...void 0!==d.advisorOverride?{advisorOverride:d.advisorOverride}:{}}}async function j4(a){let b=a.cwd?.trim()?await jO(a.cwd):void 0;try{return await jm({scope:a.scope,...b?{cwd:b}:{},...void 0!==a.force?{force:a.force}:{}})}catch(a){throw new bM("agent_unpack_failed",a instanceof Error?a.message:String(a))}}async function j5(a,b){let c=await jO(a),d=b.trim();if("SKILL.md"!==(0,P.basename)(d))throw new bM("not_a_skill_file","not a SKILL.md file");let e=(await jA(c)).skills.find(a=>a.filePath===d);if(!e)throw new bM("skill_not_found","skill was not found");let f=new Set(await as());for(let a of js(c))f.add(a);let g=(0,O.realpathSync)(e.filePath);if(!at(g,f))throw new bM("access_denied","Path is outside allowed workspaces");let{frontmatter:h,body:i}=jq((0,O.readFileSync)(g,"utf8")),j=i.slice(0,8e3);return{name:e.name,description:e.description,filePath:g,disableModelInvocation:jv(h),...e.sourceInfo.scope?{scope:e.sourceInfo.scope}:{},...e.sourceInfo.source?{source:e.sourceInfo.source}:{},...e.install?{install:e.install}:{},frontmatter:h,contentPreview:j,contentTruncated:i.length>j.length}}async function j6(a,b){let c,d,e=await jO(a),f=b.trim();if(!f)throw new bM("invalid_name","name is required");try{c=i3(e)}catch(a){throw new bM("mcp_read_failed",a instanceof Error?a.message:String(a))}let g=c.config.mcpServers?.[f];if(!g)throw new bM("mcp_not_found",`MCP server "${f}" was not found`);return{name:f,source:"Project level",config:(d={...g},delete d.env,delete d.headers,d),envConfigured:void 0!==g.env,headersConfigured:void 0!==g.headers,path:c.path}}async function j7(a,b){if("object"!=typeof b||null===b||Array.isArray(b))throw new bM("invalid_mcp","server must be an object");let c={...b};null===c.env&&(c.env={}),null===c.headers&&(c.headers={});try{i4(a,c)}catch(a){throw new bM("invalid_mcp",a instanceof Error?a.message:String(a))}return{ok:!0}}async function j8(a){let b=await jO(a.cwd),{skills:c}=await jA(b),d=c.map(a=>a.install).filter(a=>!!a).filter(b=>!a.package||b.package===a.package&&b.scope===a.scope);if(a.package&&0===d.length)throw new bM("skill_not_installed","Installed skill not found");return{updates:await jN(d,{githubToken:process.env.GITHUB_TOKEN||process.env.GH_TOKEN})}}async function j9(a){let b=await jO(a.cwd),{skills:c}=await jA(b),d=c.find(b=>b.install?.package===a.package&&b.install.scope===a.scope);if(!d?.install)throw new bM("skill_not_installed","Installed skill not found");if(!d.install.canCheckForUpdates)throw new bM("skill_update_unsupported","This skill cannot be updated automatically");try{var e;let c,f,g,h,{stdout:i,stderr:j}=await i8((e=d.install,f=(c=jG(e.skillPath??""))?`${e.source}/${c}`:e.source,g=e.ref?`#${encodeURIComponent(e.ref)}`:"",h=["skills","add",`${f}${g}`,"--skill",jF(e.package),"-y","--agent","universal"],"global"===e.scope&&h.push("-g"),h),{timeout:6e4,cwd:"project"===a.scope?b:void 0,env:{...process.env,FORCE_COLOR:"0"}}),k=(await jA(b)).skills.find(b=>b.install?.package===a.package&&b.install.scope===a.scope);return{success:!0,output:`${i}${j}`.slice(-500),...k?{skill:k}:{}}}catch(c){let a="object"==typeof c&&null!==c&&"stdout"in c&&"string"==typeof c.stdout?c.stdout:"",b="object"==typeof c&&null!==c&&"stderr"in c&&"string"==typeof c.stderr?c.stderr:"";throw new bM("skill_update_failed",(`${a}${b}`.trim()||(c instanceof Error?c.message:String(c))).slice(-500))}}async function ka(){try{let a=await (0,iq.runUtilityCommand)({type:"get_login_providers"},3e4),b=[];if(Array.isArray(a.providers))for(let c of a.providers)!("object"!=typeof c||null===c||Array.isArray(c))&&"id"in c&&"string"==typeof c.id&&"name"in c&&"string"==typeof c.name&&"authenticated"in c&&"boolean"==typeof c.authenticated&&(!("available"in c)||!1!==c.available)&&b.push({id:c.id,name:c.name,loggedIn:c.authenticated});return{providers:b}}catch(a){throw new bM("auth_failed",a instanceof Error?a.message:String(a))}}let kb=["skills.list","skills.get","skills.toggle","skills.search","skills.install","skills.check","skills.update","plugins.list","plugins.action","agents.list","agents.get","agents.save","agents.delete","agents.unpack","agents.setDisabled","agents.setOverride","mcp.list","mcp.get","mcp.validate","mcp.save","mcp.delete"];function kc(a){let b=(0,S.oJ)(a)?.trim();if(!b||b.length>1024)throw new bM("invalid_cwd","cwd is required");return b}function kd(a){if(void 0===a)return;let b=(0,S.oJ)(a)?.trim();if(b){if(b.length>1024)throw new bM("invalid_cwd","cwd is too long");return b}}function ke(a,b="name"){let c=(0,S.oJ)(a)?.trim();if(!c||c.length>128)throw new bM("invalid_name",`${b} is required`);return c}function kf(a,b,c,d){let e=void 0===b?0:Number(b),f=void 0===c?d:Number(c);if(!Number.isInteger(e)||e<0||e>1e5)throw new bM("invalid_args","offset must be an integer >= 0");if(!Number.isInteger(f)||f<1||f>200)throw new bM("invalid_args","limit must be an integer 1-200");return{offset:e,limit:f}}async function kg(a){let b=a.trim();if(!at(b,await as()))throw new bM("access_denied","Path is outside allowed workspaces");return b}function kh(a){if("user"===a||"project"===a)return a;throw new bM("invalid_scope","scope must be user or project")}function ki(a){if("global"===a||"project"===a)return a;throw new bM("invalid_scope","scope must be global or project")}async function kj(a,b,c){if("object"!=typeof b||null===b||Array.isArray(b))throw new bM("invalid_args","args must be an object");switch(function(a){if(!kb.includes(a))throw new bM("unknown_action",`Unknown extensions action "${a}"`);return a}(a)){case"skills.list":{let a=await kg(kc(b.cwd)),c=await jP(a),{offset:d,limit:e}=kf(c.skills.length,b.offset,b.limit,50),f=c.skills.map(a=>({name:a.name,description:a.description,filePath:a.filePath,disableModelInvocation:a.disableModelInvocation,...a.scope?{scope:a.scope}:a.sourceInfo?.scope?{scope:a.sourceInfo.scope}:{},...a.sourceInfo?.source?{source:a.sourceInfo.source}:{},...a.install?{install:a.install}:{}}));return{cwd:c.cwd,skills:f.slice(d,d+e),total:f.length,offset:d,limit:e,hasMore:d+e<f.length}}case"skills.get":{let a=kc(b.cwd),c=(0,S.oJ)(b.filePath)?.trim();if(!c||c.length>1024)throw new bM("invalid_path","filePath is required");return j5(a,c)}case"skills.toggle":{let a=kc(b.cwd),c=(0,S.oJ)(b.filePath)?.trim();if(!c||c.length>1024)throw new bM("invalid_path","filePath is required");if("boolean"!=typeof b.disableModelInvocation)throw new bM("invalid_flag","disableModelInvocation must be a boolean");return jQ(a,c,b.disableModelInvocation)}case"skills.search":{let a=(0,S.oJ)(b.query)?.trim();if(!a||a.length>200)throw new bM("invalid_query","query is required");let c=b.limit,d=void 0===c?10:Number(c);if(!Number.isInteger(d)||d<1||d>20)throw new bM("invalid_limit","limit must be 1-20");return j$(a,d)}case"skills.install":{let a=(0,S.oJ)(b.package)?.trim();if(!a||a.length>256)throw new bM("invalid_package","package is required");return j_(a,ki(b.scope),kd(b.cwd))}case"skills.check":{let a=kc(b.cwd),c=void 0===b.package?void 0:(0,S.oJ)(b.package)?.trim(),d=void 0===b.scope?void 0:ki(b.scope);if(c&&!d||!c&&d)throw new bM("invalid_args","package and scope must be provided together");return j8({cwd:a,...c?{package:c,scope:d}:{}})}case"skills.update":{let a=kc(b.cwd),c=(0,S.oJ)(b.package)?.trim();if(!c)throw new bM("invalid_package","package is required");return j9({cwd:a,package:c,scope:ki(b.scope)})}case"plugins.list":{let a=await kg(kc(b.cwd)),c=await jS(a),{offset:d,limit:e}=kf(c.packages.length,b.offset,b.limit,50);return{cwd:c.cwd,packages:c.packages.slice(d,d+e),total:c.packages.length,offset:d,limit:e,hasMore:d+e<c.packages.length}}case"plugins.action":{let a=kc(b.cwd),c=(0,S.oJ)(b.action)?.trim();if("install"!==c&&"remove"!==c&&"update"!==c&&"disable"!==c&&"enable"!==c)throw new bM("invalid_action","plugin action is required");let d=(0,S.oJ)(b.source)?.trim();if("update"!==c&&(!d||d.length>512))throw new bM("invalid_source","source is required");if(d&&d.length>512)throw new bM("invalid_source","source is too long");let e=(0,S.oJ)(b.scope)?.trim(),f="project"===e?"project":"global"===e?"global":void 0;if(void 0!==b.scope&&void 0===f&&e)throw new bM("invalid_scope","scope must be global or project");return jT(a,c,d||void 0,f)}case"agents.list":{let a=kd(b.cwd),c=await j0(a),d=c.agents;if(void 0!==b.scope){let a=(0,S.oJ)(b.scope)?.trim();d=d.filter(b=>b.source===a)}let e=(0,S.oJ)(b.query)?.trim().toLowerCase();e&&(d=d.filter(a=>`${a.name} ${a.description} ${a.systemPrompt??""}`.toLowerCase().includes(e)));let{offset:f,limit:g}=kf(d.length,b.offset,b.limit,50);return{...c.cwd?{cwd:c.cwd}:{},agents:d.slice(f,f+g).map(a=>({name:a.name,description:a.description,source:a.source,...a.filePath?{filePath:a.filePath}:{},...a.disabled?{disabled:!0}:{}})),total:d.length,offset:f,limit:g,hasMore:f+g<d.length}}case"agents.get":{let a=ke(b.name),c=void 0===b.scope?void 0:kh(b.scope),d=kd(b.cwd);return j3({name:a,...c?{scope:c}:{},...d?{cwd:d}:{}})}case"agents.save":{let a=ke(b.name);if(!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(a))throw new bM("invalid_name","name must be kebab-case");let c=(0,S.oJ)(b.description)?.trim();if(!c||c.length>500)throw new bM("invalid_description","description is required");let d=(0,S.oJ)(b.systemPrompt);if(void 0===d||Buffer.byteLength(d,"utf8")>0x1000000)throw new bM("invalid_prompt","systemPrompt is required");let e=kh(b.scope),f=kd(b.cwd),g=void 0===b.tools?void 0:function(a,b){if(!Array.isArray(a)||a.some(a=>"string"!=typeof a))throw new bM("invalid_args",`${b} must be an array of strings`);return a}(b.tools,"tools"),h=void 0===b.model?void 0:function(a){if("string"==typeof a&&a.trim())return a.trim();if(Array.isArray(a)&&a.length>0&&a.every(a=>"string"==typeof a&&a.trim()))return a;throw new bM("invalid_args","model must be a non-empty selector or list")}(b.model),i=void 0===b.thinkingLevel?void 0:function(a,b){if("string"!=typeof a||!a.trim()||a.length>64)throw new bM("invalid_args",`${b} must be a non-empty string`);return a}(b.thinkingLevel,"thinkingLevel"),j=void 0===b.prewalk?void 0:kk(b.prewalk,"prewalk"),k=void 0===b.advisor?void 0:kk(b.advisor,"advisor"),l=void 0===b.blocking?void 0:function(a,b){if("boolean"!=typeof a)throw new bM("invalid_args",`${b} must be a boolean`);return a}(b.blocking,"blocking");return j1({name:a,description:c,systemPrompt:d,scope:e,...f?{cwd:f}:{},...void 0!==g?{tools:g}:{},...void 0!==h?{model:h}:{},...void 0!==i?{thinkingLevel:i}:{},...void 0!==j?{prewalk:j}:{},...void 0!==k?{advisor:k}:{},...void 0!==l?{blocking:l}:{}})}case"agents.delete":{let a=ke(b.name),c=kh(b.scope),d=kd(b.cwd);return j2({name:a,scope:c,...d?{cwd:d}:{}})}case"agents.unpack":{let a=kh(b.scope),c=kd(b.cwd),d=void 0===b.force?void 0:!0===b.force;if(void 0!==b.force&&"boolean"!=typeof b.force)throw new bM("invalid_args","force must be a boolean");return j4({scope:a,...c?{cwd:c}:{},...void 0!==d?{force:d}:{}})}case"agents.setDisabled":{let a=ke(b.name);if("boolean"!=typeof b.disabled)throw new bM("invalid_args","disabled must be a boolean");let c=a5(),d=new Set(Array.isArray(c.settings.task?.disabledAgents)?c.settings.task.disabledAgents:[]);b.disabled?d.add(a):d.delete(a);let e=a3(c.settings,{task:{disabledAgents:[...d]}});try{a6(e)}catch(a){throw new bM("agent_settings_failed",a instanceof Error?a.message:String(a))}return{name:a,disabled:b.disabled}}case"agents.setOverride":{let a=ke(b.name),c=(0,S.oJ)(b.kind)?.trim();if("model"!==c&&"prewalk"!==c&&"advisor"!==c)throw new bM("invalid_args","kind must be model, prewalk, or advisor");let d=a5(),e=d.settings.task??{},f={};if("model"===c){let c={...e.agentModelOverrides??{}};if(void 0===b.value||null===b.value||""===b.value)delete c[a];else if("string"==typeof b.value&&b.value.trim())c[a]=b.value.trim();else if(Array.isArray(b.value)&&b.value.every(a=>"string"==typeof a&&a.trim()))c[a]=b.value;else throw new bM("invalid_args","value must be a non-empty model selector or list");f.agentModelOverrides=c}else{let d="prewalk"===c?"agentPrewalk":"agentAdvisor",g={...e[d]??{}};if(void 0===b.value||null===b.value||""===b.value)delete g[a];else if("boolean"==typeof b.value||"string"==typeof b.value)g[a]=b.value;else throw new bM("invalid_args","value must be a boolean or string");f[d]=g}try{a6(a3(d.settings,{task:f}))}catch(a){throw new bM("agent_settings_failed",a instanceof Error?a.message:String(a))}return{name:a,kind:c}}case"mcp.list":{let a,d,e=kd(b.cwd),f=await jU(e),{offset:g,limit:h}=kf(f.inventory.length,b.offset,b.limit,50),i=c.sessionId??null;if(i){let b=bG(i);if(b?.isAlive())try{let c=await b.getMcpList();b.isAlive()&&bG(i)===b?a=(function(a,b){let c=[...a],d=new Set(a.map(a=>`${a.source}:${a.name}`));for(let a of b){let b=`${a.source}:${a.name}`;d.has(b)||(d.add(b),c.push(a))}return c})(function(a){let b=[],c=null;for(let d of iY(a).split(/\r?\n/)){let a=d.trim();if(!a)continue;let e=a.match(/^(.+?)\s+\([^)]*\):$/);if(e){c=e[1];continue}let f=a.match(/^(.+?)\s+[●◌○]\s+(connected|connecting|not connected|inactive|disabled)(?:\s+\[([^\]]+)\])?$/);if(!f||!c)continue;let g={connected:"connected",connecting:"connecting","not connected":"not_connected",inactive:"inactive",disabled:"disabled"};b.push({name:f[1].trim(),source:c,status:g[f[2]],type:f[3]})}if(b.length>0)return b;for(let c of iY(a).split(/\r?\n/)){let a=c.trim().match(/^(.+?)\s+\|\s+([^|]+?)\s+\|\s+(enabled|disabled)\s+\|\s+.*?(?:\s+\[([^\]]+)\])?$/);if(!a)continue;let d="user"===a[4]?"User level":"project"===a[4]?"Project level":"Configured";b.push({name:a[1].trim(),source:d,status:"enabled"===a[3]?"configured":"disabled",type:a[2].trim()})}return b}(c),f.inventory.map(({name:a,source:b,status:c,type:d})=>({name:a,source:b,status:"disabled"===c?"disabled":"configured",...d?{type:d}:{}}))).map(({name:a,source:b,status:c,type:d})=>({name:a,source:b,status:c,...d?{type:d}:{}})):d="Selected session became inactive — refresh to query its current runtime."}catch{d="Live MCP query failed. Connection status is unknown; refresh to retry."}else d="Selected session is inactive — live MCP status is unavailable."}return{sessionId:i,...a?{liveServers:a}:{},...d?{liveError:d}:{},inventory:f.inventory.slice(g,g+h),total:f.inventory.length,offset:g,limit:h,hasMore:g+h<f.inventory.length}}case"mcp.get":return j6(kc(b.cwd),ke(b.name));case"mcp.validate":return j7(ke(b.name),b.server);case"mcp.save":{let a=kc(b.cwd),c=ke(b.name),d=void 0===b.previousName?void 0:ke(b.previousName,"previousName");return jX(a,c,b.server,d)}case"mcp.delete":return jV(kc(b.cwd),ke(b.name))}}function kk(a,b){if("boolean"==typeof a||"string"==typeof a)return a;throw new bM("invalid_args",`${b} must be a boolean or string`)}async function kl(){var a,b;let c,d;return b=await (a=["--check"],(0,aA.eG)(["update",...a],{timeout:3e5,maxBuffer:1048576}).then(({stdout:a,stderr:b})=>`${a}
89
- ${b}`.trim())),c=b.match(/^Current version:\s*(\S+)/mi)?.[1]??null,{currentVersion:c,availableVersion:d=b.match(/^New version available:\s*(\S+)/mi)?.[1]??null,updateAvailable:null!==d,updateCommand:"omp update"}}let km=null;function kn(a){let b=a.match(/^v?(\d+)\.(\d+)\.(\d+)(-.+)?$/);return b?{parts:b.slice(1,4).map(Number),prerelease:!!b[4]}:null}async function ko(a=!1){if(!a&&km&&Date.now()-km.checkedAt<36e5)return km.status;let b="0.7.1",c="ompgui update";try{let a=await fetch(`https://registry.npmjs.org/${encodeURIComponent("ompgui")}/latest`,{cache:"no-store",signal:AbortSignal.timeout(5e3)}),d=a.ok?await a.json():null,e="string"==typeof d?.version?d.version:null,f=!a.ok||null===e,g={currentVersion:b,availableVersion:e,updateAvailable:!!(e&&function(a,b){let c=kn(a),d=kn(b);if(!c||!d)return!1;for(let a=0;a<c.parts.length;a+=1)if(c.parts[a]!==d.parts[a])return c.parts[a]>d.parts[a];return!c.prerelease&&d.prerelease}(e,b)),updateCommand:c,lookupFailed:f};return f||(km={checkedAt:Date.now(),status:g}),g}catch{return{currentVersion:b,availableVersion:null,updateAvailable:!1,updateCommand:c,lookupFailed:!0}}}let kp=new Set(["daily","30d","24h"]);function kq(a,b){let c="string"==typeof a?a.trim():"";if("5h"===c||"7d"===c||"monthly"===c||"30d"===c||"daily"===c)return"30d"===c?"monthly":"daily"===c?"5h":c;if("number"==typeof b&&Number.isFinite(b)){if(6e4>=Math.abs(b-18e6))return"5h";if(6e4>=Math.abs(b-6048e5))return"7d";if(36e5>=Math.abs(b-2592e6))return"monthly";if(6e4>=Math.abs(b-864e5))return"5h"}}function kr(a){let b=a.window,c=a.scope;if(!b&&!c?.windowId)return a;let d=kq(c?.windowId)??kq(b?.id)??kq(void 0,b?.durationMs);if(!d)return a;let e={...c};(c.windowId||b?.id)&&(e.windowId=d);let f=b;if(b){let a=b.label,c=null==a||""===a.trim()||kp.has(a)||a===b.id;f={...b,id:d,...c?{label:d}:{}}}return{...a,scope:e,...f?{window:f}:{}}}async function ks(a,b,c){let d=c.now??Date.now;if(b){if(a.refreshFlight)return a.refreshFlight;let b=(a.refreshGeneration??0)+1;a.refreshGeneration=b,a.entry=null,a.readFlight=null;let e=(async()=>{try{await c.invalidate()}catch{}let e=await c.fetch();return e.ok&&(a.entry={at:d(),payload:e.payload}),a.latestRefresh={generation:b,result:e},e})();a.refreshFlight=e;try{return await e}finally{a.refreshFlight===e&&(a.refreshFlight=null)}}if(a.refreshFlight)return a.refreshFlight;if(a.entry&&d()-a.entry.at<c.ttlMs)return{ok:!0,payload:{...a.entry.payload,cached:!0}};let e=a.refreshGeneration??0,f=a.readFlight;f||(a.readFlight=f={generation:e,promise:c.fetch()});try{let b=await f.promise,c=a.refreshGeneration??0;if(f.generation!==c){if(a.refreshFlight)return a.refreshFlight;let b=a.latestRefresh;if(b?.generation===c)return b.result}return b.ok&&(a.entry={at:d(),payload:b.payload}),b}finally{a.readFlight===f&&(a.readFlight=null)}}async function kt(a={}){let b,c=a.executor??aA.eG;if(!a.executor&&!(0,aA.resolveOmpBin)())return{ok:!1,status:503,error:"omp binary not found"};try{b=(await c(["usage","--json"],{timeout:3e4})).stdout}catch(c){let a=c instanceof Error?c.message:String(c),b=a.toLowerCase();if(b.includes("unknown command")||b.includes("unknown flag")||b.includes("unrecognized command")||b.includes("unrecognized option")||b.includes("invalid command")||/error:\s*(unknown|unrecognized)\s+(command|option|flag)/i.test(a)||/\bcommand not found\b/i.test(a))return{ok:!1,status:501,error:"usage command not supported by installed omp version"};return{ok:!1,status:502,error:a}}if(!b||!b.trim())return{ok:!1,status:501,error:"usage command not supported by installed omp version"};let d=(0,aA.nH)(b);if(!d||"object"!=typeof d)return{ok:!1,status:501,error:"usage command not supported by installed omp version"};let e=(Array.isArray(d.reports)?d.reports:[]).map(a=>Array.isArray(a.limits)?{...a,limits:a.limits.map(kr)}:a),f=Array.isArray(d.accountsWithoutUsage)?d.accountsWithoutUsage:[],g=Array.isArray(d.disabledCredentials)?d.disabledCredentials:[],h=function(a){let b={};for(let[c,d]of Object.entries(a)){if(!Array.isArray(d)){b[c]=d;continue}let a=new Map,e=[];for(let b of d){let c=kq(b.window,b.durationMs);if(!c){e.push(b);continue}let d=!function(a,b){let c="string"==typeof a?a.trim():"";return"daily"===c||"5h"!==c&&"7d"!==c&&"monthly"!==c&&"30d"!==c&&"number"==typeof b&&Number.isFinite(b)&&6e4>=Math.abs(b-864e5)}(b.window,b.durationMs)?b.durationMs:18e6,f=a.get(c);if(!f){a.set(c,{...b,window:c,...void 0!==d?{durationMs:d}:{}});continue}a.set(c,{...f,accounts:f.accounts+b.accounts,usedAccounts:f.usedAccounts+b.usedAccounts,remainingAccounts:f.remainingAccounts+b.remainingAccounts,durationMs:function(a,b,c){if("5h"===a){if(void 0!==b&&6e4>=Math.abs(b-18e6))return b;if(void 0!==c&&6e4>=Math.abs(c-18e6))return c}return b??c}(c,f.durationMs,d)})}b[c]=[...a.values(),...e]}return b}(d.capacity&&"object"==typeof d.capacity?d.capacity:{}),i="number"==typeof d.generatedAt?d.generatedAt:Date.now(),j="no-credentials"===d.emptyReason||0===e.length&&0===f.length&&0===g.length?"no-credentials":void 0;return{ok:!0,payload:{generatedAt:i,reports:e,accountsWithoutUsage:f,disabledCredentials:g,capacity:h,cached:!1,...j?{emptyReason:j}:{}}}}let ku=["usage.get","omp.check","app.check","omp.restart","devices.list","devices.revoke","systemPrompt.get","settings.get","settings.update","update"];class kv extends Error{constructor(a,b,c,d){super(b),this.name="SystemRequestError",this.code=a,void 0!==c&&(this.details=c),void 0!==d&&(this.status=d)}}let kw=/^d_[A-Za-z0-9_-]{16,64}$/;function kx(a,b){if(void 0!==a){if("boolean"!=typeof a)throw new kv("invalid_args",`${b} must be a boolean`);return a}}async function ky(a){let b=kx(a.refresh,"refresh")??!1,c=(globalThis.__ompgui_system_usage_cache||(globalThis.__ompgui_system_usage_cache={}),globalThis.__ompgui_system_usage_cache),d=await ks(c,b,{fetch:()=>kt(),invalidate:()=>(0,aA.eG)(["usage","invalidate"],{timeout:15e3}),ttlMs:6e4});if(d.ok){var e;let a;return a={generatedAt:(e=d.payload).generatedAt,reports:e.reports,accountsWithoutUsage:e.accountsWithoutUsage,disabledCredentials:e.disabledCredentials,capacity:e.capacity,cached:e.cached},void 0!==e.emptyReason&&(a.emptyReason=e.emptyReason),a}throw new kv(function(a){switch(a){case 503:return"omp_not_found";case 501:return"usage_not_supported";default:return"usage_fetch_failed"}}(d.status),d.error,void 0,d.status)}async function kz(){try{var a;return{currentVersion:(a=await kl()).currentVersion,availableVersion:a.availableVersion,updateAvailable:a.updateAvailable,updateCommand:a.updateCommand}}catch(a){throw new kv("omp_check_failed",a instanceof Error?a.message:String(a))}}async function kA(a){var b;let c=kx(a.force,"force")??!1;return{currentVersion:(b=await ko(c)).currentVersion,availableVersion:b.availableVersion,updateAvailable:b.updateAvailable,updateCommand:b.updateCommand,lookupFailed:b.lookupFailed}}async function kB(a){if(!0!==a.confirm)throw new kv("confirm_required","omp.restart requires {confirm:true}");try{(0,aA.YT)();let a=await bI();return{success:!0,sessionsRestarted:a}}catch(a){throw new kv("restart_failed",a instanceof Error?a.message:String(a))}}async function kC(a){let b=function(a){let b="string"==typeof a?a.trim():"";if(!b||b.length>128)throw new kv("invalid_args","sessionId is required");return b}(a.sessionId),c=bG(b);if(!c)throw new kv("session_not_running","Session is not running");try{let a=await c.send({type:"get_state"});if("object"!=typeof a||null===a||Array.isArray(a))throw new kv("system_prompt_failed","Session state unavailable");let d="systemPrompt"in a&&"string"==typeof a.systemPrompt?a.systemPrompt:"";return{sessionId:b,systemPrompt:d}}catch(a){if(a instanceof kv)throw a;throw new kv("system_prompt_failed",a instanceof Error?a.message:String(a))}}function kD(a,b){if("object"!=typeof b||null===b||Array.isArray(b))throw new kv("settings_read_failed","Stored settings are not an object");let c={};for(let[a,d]of Object.entries(b))c[a]=d;return{path:a,settings:c}}async function kE(a){if("object"!=typeof a.settings||null===a.settings||Array.isArray(a.settings))throw new kv("invalid_args","settings must be an object");let b=a1(a.settings),c=function(a){if(void 0===a)return;if(!Array.isArray(a))throw new kv("invalid_args","model lists must contain non-empty strings");let b=[];for(let c of a){if("string"!=typeof c||!c.trim())throw new kv("invalid_args","model lists must contain non-empty strings");b.push(c)}return b}(b.enabledModels);if(void 0!==c&&c.length>0)try{let a=await (0,iq.runUtilityCommand)({type:"get_available_models"},12e4);Array.isArray(a.models)&&h7(c,function(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if("object"!=typeof c||null===c||!("id"in c)||!("provider"in c))continue;let a=c.id,d=c.provider;"string"==typeof a&&"string"==typeof d&&b.push({id:a,provider:d})}return b}(a.models))}catch(a){if(a instanceof Error&&a.message.startsWith("Ambiguous enabledModels entry"))throw new kv("invalid_args",a.message)}try{let a=a5(),c=a3(a.settings,b);a6(c);let d=void 0!==b.enabledModels||void 0!==b.disabledProviders||void 0!==b.modelProviderOrder;d&&(aJ(),(0,iq.j)());let e=a5(),f=kD(e.path,e.settings).settings;return{success:!0,settings:f,application:{mode:d?"runtime-refresh":"new-session",restartRequired:!1}}}catch(a){if(a instanceof kv)throw a;throw new kv("settings_write_failed",a instanceof Error?a.message:String(a))}}async function kF(a,b,c){if("object"!=typeof b||null===b||Array.isArray(b))throw new kv("invalid_args","args must be an object");switch(function(a){if(!ku.includes(a))throw new kv("unknown_action",`Unknown system action "${a}"`);return a}(a)){case"usage.get":return ky(b);case"omp.check":return kz();case"app.check":return kA(b);case"omp.restart":return kB(b);case"devices.list":return{devices:ag().map(a=>({id:a.id,label:a.label,createdAt:a.createdAt,lastSeenAt:a.lastSeenAt}))};case"devices.revoke":let d=function(a){let b="string"==typeof a?a.trim():"";if(!b||b.length>128||!kw.test(b))throw new kv("invalid_args","deviceId must be a valid device id");return b}(b.deviceId);if(!ad(()=>{let a=ae(),b=a.devices.filter(a=>a.id!==d);return b.length!==a.devices.length&&(a.devices=b,af(a),!0)}))throw new kv("device_not_found",`Unknown device "${d}"`);return{revoked:!0,deviceId:d,self:d===c.deviceId};case"systemPrompt.get":return kC(b);case"settings.get":try{let a=a5();return kD(a.path,a.settings)}catch(a){if(a instanceof kv)throw a;throw new kv("settings_read_failed",a instanceof Error?a.message:String(a))}case"settings.update":return kE(b);case"update":throw new kv("update_disabled","Automatic self-updating is disabled. Run 'omp update' in your terminal.",{command:"omp update"},400)}}let kG=new Map;function kH(a){hj.cleanupDevice(a);for(let[b,c]of g6)(void 0===a||c.deviceId===a)&&g7(b);!function(a){if(void 0===a){bX.clear(),bW.clear();return}for(let[b,c]of(bX.delete(a),bW))c.deviceId===a&&bW.delete(b)}(a),iU(a).catch(()=>{})}let kI={authenticate:function(a,b=Date.now()){if(a.pairingSecret){if(N()&&!function(a,b=process.env.OMPGUI_PASSWORD??process.env.OMP_WEB_PASSWORD){return N(b)&&(0,L.timingSafeEqual)(M(a),M(b))}(a.password??""))return{ok:!1,code:"password_required",message:"Workspace password is required to pair"};let c=function(a,b,c=Date.now()){return ad(()=>{let d=ae(),e=d.pairing;if(!e)return{error:"invalid"};if(e.expiresAt<=c)return d.pairing=null,af(d),{error:"expired"};if(!$(e.secretHash,Z(a)))return{error:"invalid"};if(d.devices.length>=16)return{error:"device_limit"};let f=(0,L.randomBytes)(32).toString("base64url"),g={id:_("d_"),label:aa(b)||"Phone",tokenHash:Z(f),createdAt:new Date(c).toISOString(),lastSeenAt:new Date(c).toISOString()};return d.devices=[...d.devices,g],d.pairing=null,af(d),{serverId:d.serverId,deviceId:g.id,token:f}})}(a.pairingSecret,a.label,b);return"error"in c?"expired"===c.error?{ok:!1,code:"pairing_expired",message:"Pairing link expired"}:"device_limit"===c.error?{ok:!1,code:"device_limit",message:"Too many paired devices"}:{ok:!1,code:"unauthorized",message:"Invalid pairing secret"}:{ok:!0,serverId:c.serverId,deviceId:c.deviceId,token:c.token}}if(!a.deviceId||!a.token)return{ok:!1,code:"unauthorized",message:"Device token is required"};let c=function(a,b,c=Date.now()){return ad(()=>{let d=ae(),e=d.devices.find(b=>b.id===a);return e&&$(e.tokenHash,Z(b))?(e.lastSeenAt=new Date(c).toISOString(),af(d),{serverId:d.serverId,deviceId:e.id}):null})}(a.deviceId,a.token,b);return c?{ok:!0,serverId:c.serverId,deviceId:c.deviceId}:{ok:!1,code:"unauthorized",message:"Unknown device"}},listSessions:bO,listModels:async()=>Y((await iF()).models).models,fetchUsage:kt,openSession:bP,sendCommand:bQ,createSession:gL,listProjects:gI,listFiles:gJ,readFile:gV,listSlash:gK,deleteSession:hl,archiveSession:hm,renameSession:hn,listArchives:ho,restoreArchive:hp,listWorktrees:gW,addWorktree:g$,writeFile:gX,gitStatus:gY,gitDiff:gZ,listBranches:bT,snapshotLeaf:bU,exportSession:bV,listSkills:jP,toggleSkill:jQ,searchSkills:j$,installSkill:j_,listAgents:j0,saveAgent:j1,deleteAgent:j2,listAuthProviders:ka,listPlugins:jS,pluginAction:jT,listMcp:jU,deleteMcp:jV,upsertMcp:jW,importSession:hq,addProject:g_,removeProject:g0,searchFiles:g4};function kJ(a,b,c,d){let e=b instanceof Error?b.message:String(b),f=b&&"object"==typeof b&&"code"in b&&"string"==typeof b.code?b.code:c;a(d?{op:"session.err",id:d,code:f,message:e}:{op:"error",code:f,message:e})}function kK(a){return!!a&&"/relay"===a.split("?")[0]}function kL(a,b){let c,d=b.length;return d<126?((c=Buffer.alloc(2))[0]=128|a,c[1]=d):d<=65535?((c=Buffer.alloc(4))[0]=128|a,c[1]=126,c.writeUInt16BE(d,2)):((c=Buffer.alloc(10))[0]=128|a,c[1]=127,c.writeUInt32BE(0,2),c.writeUInt32BE(d,6)),Buffer.concat([c,b])}class kM{get bufferedAmount(){return this.socket.writableLength}constructor(a,b,c=262144){this.socket=a,this.handlers=b,this.maxPayload=c,this.buffer=Buffer.alloc(0),this.closed=!1,this.sentClose=!1,this.socket.on("data",a=>this.onData(a)),this.socket.on("end",()=>this.handlePeerClose()),this.socket.on("close",()=>this.handlePeerClose()),this.socket.on("error",()=>this.handlePeerClose())}feed(a){this.onData(a)}sendText(a){if(this.closed||!this.socket.writable)return!1;let b=Buffer.from(a,"utf8");return!(b.length>this.maxPayload)&&this.writeFrame(kL(1,b))}ping(){!this.closed&&this.socket.writable&&this.writeFrame(kL(9,Buffer.alloc(0)))}close(a=1e3,b=""){if(this.sentClose)return;this.sentClose=!0;let c=Buffer.from(b.slice(0,120),"utf8"),d=Buffer.alloc(2+c.length);d.writeUInt16BE(a,0),c.copy(d,2);try{this.socket.write(kL(8,d))}catch{}this.closed=!0;try{this.socket.end()}catch{}this.handlers.onClose()}writeFrame(a){try{if(this.bufferedAmount+a.length>1e6)return!1;return this.socket.write(a),!0}catch{return this.handlePeerClose(),!1}}onData(a){if(!this.closed)for(this.buffer=0===this.buffer.length?Buffer.from(a):Buffer.concat([this.buffer,a]);;){let a=function(a,b=262144){if(a.length<2)return{status:"need_more"};let c=a[0],d=a[1],e=(128&c)!=0,f=15&c,g=127&d;if(0!=(112&c))return{status:"error",code:1002,reason:"RSV bits must be 0"};if((128&d)==0)return{status:"error",code:1002,reason:"Client frames must be masked"};if(!e)return{status:"error",code:1003,reason:"Fragmented frames are not supported"};if(1!==f&&8!==f&&9!==f&&10!==f)return{status:"error",code:1003,reason:"Unsupported opcode"};let h=2;if(126===g){if(a.length<4)return{status:"need_more"};g=a.readUInt16BE(2),h=4}else if(127===g){if(a.length<10)return{status:"need_more"};let c=a.readUInt32BE(2),d=a.readUInt32BE(6);if(0!==c||d>b)return{status:"error",code:1009,reason:"Frame is too large"};g=d,h=10}if(g>b)return{status:"error",code:1009,reason:"Frame is too large"};if((8===f||9===f||10===f)&&g>125)return{status:"error",code:1002,reason:"Control frame is too large"};let i=h+4+g;if(a.length<i)return{status:"need_more"};let j=a.subarray(h,h+4),k=Buffer.from(a.subarray(h+4,i));for(let a=0;a<k.length;a+=1)k[a]^=j[3&a];return{status:"ok",frame:{fin:e,opcode:f,payload:k},rest:a.subarray(i)}}(this.buffer,this.maxPayload);if("need_more"===a.status){this.buffer.length>this.maxPayload+14&&this.close(1009,"Frame is too large");return}if("error"===a.status)return void this.close(a.code,a.reason);if(this.buffer=a.rest,this.dispatch(a.frame),this.closed)return}}dispatch(a){switch(a.opcode){case 1:{let b=a.payload.toString("utf8");if(Buffer.byteLength(b,"utf8")!==a.payload.length)return void this.close(1007,"Text frame is not valid UTF-8");this.handlers.onText(b);return}case 8:this.close(1e3,"");return;case 9:this.writeFrame(kL(10,a.payload));return;case 10:return;default:this.close(1003,"Unsupported opcode")}}handlePeerClose(){this.closed||(this.closed=!0,this.sentClose=!0,this.handlers.onClose())}}function kN(){return globalThis.__ompguiRelayConnectionCount??0}function kO(a){globalThis.__ompguiRelayConnectionCount=a}function kP(a){let b=a.prototype.emit;function c(a,...d){if("upgrade"===a){let a=d[0];if(kK(a.url))return!function(a,b,c){let d;if(!kK(a.url))return b.destroy();if(!function(a){if("cross-site"===a.headers["sec-fetch-site"])return!1;let b=a.headers.origin;if(!b)return!0;let c=a.headers.host;if(!c)return!1;try{return new URL(b).host===c}catch{return!1}}(a)){b.write("HTTP/1.1 403 Forbidden\r\nConnection: close\r\n\r\n"),b.destroy();return}if(kN()>=8){b.write("HTTP/1.1 503 Service Unavailable\r\nConnection: close\r\n\r\n"),b.destroy();return}let e=!1,f=null,g=function(a,b,c){let d=function(a){if("websocket"!==String(a.headers.upgrade??"").toLowerCase())return null;let b=String(a.headers.connection??"");if(!/\bupgrade\b/i.test(b)||"13"!==String(a.headers["sec-websocket-version"]??""))return null;let c=a.headers["sec-websocket-key"];return"string"!=typeof c||c.length<16||c.length>128?null:c}(a);if(!d)return b.write("HTTP/1.1 400 Bad Request\r\nConnection: close\r\n\r\n"),b.destroy(),null;let e=(0,L.createHash)("sha1").update(d+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest("base64");return b.write(`HTTP/1.1 101 Switching Protocols\r
89
+ ${b}`.trim())),c=b.match(/^Current version:\s*(\S+)/mi)?.[1]??null,{currentVersion:c,availableVersion:d=b.match(/^New version available:\s*(\S+)/mi)?.[1]??null,updateAvailable:null!==d,updateCommand:"omp update"}}let km=null;function kn(a){let b=a.match(/^v?(\d+)\.(\d+)\.(\d+)(-.+)?$/);return b?{parts:b.slice(1,4).map(Number),prerelease:!!b[4]}:null}async function ko(a=!1){if(!a&&km&&Date.now()-km.checkedAt<36e5)return km.status;let b="0.7.2",c="ompgui update";try{let a=await fetch(`https://registry.npmjs.org/${encodeURIComponent("ompgui")}/latest`,{cache:"no-store",signal:AbortSignal.timeout(5e3)}),d=a.ok?await a.json():null,e="string"==typeof d?.version?d.version:null,f=!a.ok||null===e,g={currentVersion:b,availableVersion:e,updateAvailable:!!(e&&function(a,b){let c=kn(a),d=kn(b);if(!c||!d)return!1;for(let a=0;a<c.parts.length;a+=1)if(c.parts[a]!==d.parts[a])return c.parts[a]>d.parts[a];return!c.prerelease&&d.prerelease}(e,b)),updateCommand:c,lookupFailed:f};return f||(km={checkedAt:Date.now(),status:g}),g}catch{return{currentVersion:b,availableVersion:null,updateAvailable:!1,updateCommand:c,lookupFailed:!0}}}let kp=new Set(["daily","30d","24h"]);function kq(a,b){let c="string"==typeof a?a.trim():"";if("5h"===c||"7d"===c||"monthly"===c||"30d"===c||"daily"===c)return"30d"===c?"monthly":"daily"===c?"5h":c;if("number"==typeof b&&Number.isFinite(b)){if(6e4>=Math.abs(b-18e6))return"5h";if(6e4>=Math.abs(b-6048e5))return"7d";if(36e5>=Math.abs(b-2592e6))return"monthly";if(6e4>=Math.abs(b-864e5))return"5h"}}function kr(a){let b=a.window,c=a.scope;if(!b&&!c?.windowId)return a;let d=kq(c?.windowId)??kq(b?.id)??kq(void 0,b?.durationMs);if(!d)return a;let e={...c};(c.windowId||b?.id)&&(e.windowId=d);let f=b;if(b){let a=b.label,c=null==a||""===a.trim()||kp.has(a)||a===b.id;f={...b,id:d,...c?{label:d}:{}}}return{...a,scope:e,...f?{window:f}:{}}}async function ks(a,b,c){let d=c.now??Date.now;if(b){if(a.refreshFlight)return a.refreshFlight;let b=(a.refreshGeneration??0)+1;a.refreshGeneration=b,a.entry=null,a.readFlight=null;let e=(async()=>{try{await c.invalidate()}catch{}let e=await c.fetch();return e.ok&&(a.entry={at:d(),payload:e.payload}),a.latestRefresh={generation:b,result:e},e})();a.refreshFlight=e;try{return await e}finally{a.refreshFlight===e&&(a.refreshFlight=null)}}if(a.refreshFlight)return a.refreshFlight;if(a.entry&&d()-a.entry.at<c.ttlMs)return{ok:!0,payload:{...a.entry.payload,cached:!0}};let e=a.refreshGeneration??0,f=a.readFlight;f||(a.readFlight=f={generation:e,promise:c.fetch()});try{let b=await f.promise,c=a.refreshGeneration??0;if(f.generation!==c){if(a.refreshFlight)return a.refreshFlight;let b=a.latestRefresh;if(b?.generation===c)return b.result}return b.ok&&(a.entry={at:d(),payload:b.payload}),b}finally{a.readFlight===f&&(a.readFlight=null)}}async function kt(a={}){let b,c=a.executor??aA.eG;if(!a.executor&&!(0,aA.resolveOmpBin)())return{ok:!1,status:503,error:"omp binary not found"};try{b=(await c(["usage","--json"],{timeout:3e4})).stdout}catch(c){let a=c instanceof Error?c.message:String(c),b=a.toLowerCase();if(b.includes("unknown command")||b.includes("unknown flag")||b.includes("unrecognized command")||b.includes("unrecognized option")||b.includes("invalid command")||/error:\s*(unknown|unrecognized)\s+(command|option|flag)/i.test(a)||/\bcommand not found\b/i.test(a))return{ok:!1,status:501,error:"usage command not supported by installed omp version"};return{ok:!1,status:502,error:a}}if(!b||!b.trim())return{ok:!1,status:501,error:"usage command not supported by installed omp version"};let d=(0,aA.nH)(b);if(!d||"object"!=typeof d)return{ok:!1,status:501,error:"usage command not supported by installed omp version"};let e=(Array.isArray(d.reports)?d.reports:[]).map(a=>Array.isArray(a.limits)?{...a,limits:a.limits.map(kr)}:a),f=Array.isArray(d.accountsWithoutUsage)?d.accountsWithoutUsage:[],g=Array.isArray(d.disabledCredentials)?d.disabledCredentials:[],h=function(a){let b={};for(let[c,d]of Object.entries(a)){if(!Array.isArray(d)){b[c]=d;continue}let a=new Map,e=[];for(let b of d){let c=kq(b.window,b.durationMs);if(!c){e.push(b);continue}let d=!function(a,b){let c="string"==typeof a?a.trim():"";return"daily"===c||"5h"!==c&&"7d"!==c&&"monthly"!==c&&"30d"!==c&&"number"==typeof b&&Number.isFinite(b)&&6e4>=Math.abs(b-864e5)}(b.window,b.durationMs)?b.durationMs:18e6,f=a.get(c);if(!f){a.set(c,{...b,window:c,...void 0!==d?{durationMs:d}:{}});continue}a.set(c,{...f,accounts:f.accounts+b.accounts,usedAccounts:f.usedAccounts+b.usedAccounts,remainingAccounts:f.remainingAccounts+b.remainingAccounts,durationMs:function(a,b,c){if("5h"===a){if(void 0!==b&&6e4>=Math.abs(b-18e6))return b;if(void 0!==c&&6e4>=Math.abs(c-18e6))return c}return b??c}(c,f.durationMs,d)})}b[c]=[...a.values(),...e]}return b}(d.capacity&&"object"==typeof d.capacity?d.capacity:{}),i="number"==typeof d.generatedAt?d.generatedAt:Date.now(),j="no-credentials"===d.emptyReason||0===e.length&&0===f.length&&0===g.length?"no-credentials":void 0;return{ok:!0,payload:{generatedAt:i,reports:e,accountsWithoutUsage:f,disabledCredentials:g,capacity:h,cached:!1,...j?{emptyReason:j}:{}}}}let ku=["usage.get","omp.check","app.check","omp.restart","devices.list","devices.revoke","systemPrompt.get","settings.get","settings.update","update"];class kv extends Error{constructor(a,b,c,d){super(b),this.name="SystemRequestError",this.code=a,void 0!==c&&(this.details=c),void 0!==d&&(this.status=d)}}let kw=/^d_[A-Za-z0-9_-]{16,64}$/;function kx(a,b){if(void 0!==a){if("boolean"!=typeof a)throw new kv("invalid_args",`${b} must be a boolean`);return a}}async function ky(a){let b=kx(a.refresh,"refresh")??!1,c=(globalThis.__ompgui_system_usage_cache||(globalThis.__ompgui_system_usage_cache={}),globalThis.__ompgui_system_usage_cache),d=await ks(c,b,{fetch:()=>kt(),invalidate:()=>(0,aA.eG)(["usage","invalidate"],{timeout:15e3}),ttlMs:6e4});if(d.ok){var e;let a;return a={generatedAt:(e=d.payload).generatedAt,reports:e.reports,accountsWithoutUsage:e.accountsWithoutUsage,disabledCredentials:e.disabledCredentials,capacity:e.capacity,cached:e.cached},void 0!==e.emptyReason&&(a.emptyReason=e.emptyReason),a}throw new kv(function(a){switch(a){case 503:return"omp_not_found";case 501:return"usage_not_supported";default:return"usage_fetch_failed"}}(d.status),d.error,void 0,d.status)}async function kz(){try{var a;return{currentVersion:(a=await kl()).currentVersion,availableVersion:a.availableVersion,updateAvailable:a.updateAvailable,updateCommand:a.updateCommand}}catch(a){throw new kv("omp_check_failed",a instanceof Error?a.message:String(a))}}async function kA(a){var b;let c=kx(a.force,"force")??!1;return{currentVersion:(b=await ko(c)).currentVersion,availableVersion:b.availableVersion,updateAvailable:b.updateAvailable,updateCommand:b.updateCommand,lookupFailed:b.lookupFailed}}async function kB(a){if(!0!==a.confirm)throw new kv("confirm_required","omp.restart requires {confirm:true}");try{(0,aA.YT)();let a=await bI();return{success:!0,sessionsRestarted:a}}catch(a){throw new kv("restart_failed",a instanceof Error?a.message:String(a))}}async function kC(a){let b=function(a){let b="string"==typeof a?a.trim():"";if(!b||b.length>128)throw new kv("invalid_args","sessionId is required");return b}(a.sessionId),c=bG(b);if(!c)throw new kv("session_not_running","Session is not running");try{let a=await c.send({type:"get_state"});if("object"!=typeof a||null===a||Array.isArray(a))throw new kv("system_prompt_failed","Session state unavailable");let d="systemPrompt"in a&&"string"==typeof a.systemPrompt?a.systemPrompt:"";return{sessionId:b,systemPrompt:d}}catch(a){if(a instanceof kv)throw a;throw new kv("system_prompt_failed",a instanceof Error?a.message:String(a))}}function kD(a,b){if("object"!=typeof b||null===b||Array.isArray(b))throw new kv("settings_read_failed","Stored settings are not an object");let c={};for(let[a,d]of Object.entries(b))c[a]=d;return{path:a,settings:c}}async function kE(a){if("object"!=typeof a.settings||null===a.settings||Array.isArray(a.settings))throw new kv("invalid_args","settings must be an object");let b=a1(a.settings),c=function(a){if(void 0===a)return;if(!Array.isArray(a))throw new kv("invalid_args","model lists must contain non-empty strings");let b=[];for(let c of a){if("string"!=typeof c||!c.trim())throw new kv("invalid_args","model lists must contain non-empty strings");b.push(c)}return b}(b.enabledModels);if(void 0!==c&&c.length>0)try{let a=await (0,iq.runUtilityCommand)({type:"get_available_models"},12e4);Array.isArray(a.models)&&h7(c,function(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if("object"!=typeof c||null===c||!("id"in c)||!("provider"in c))continue;let a=c.id,d=c.provider;"string"==typeof a&&"string"==typeof d&&b.push({id:a,provider:d})}return b}(a.models))}catch(a){if(a instanceof Error&&a.message.startsWith("Ambiguous enabledModels entry"))throw new kv("invalid_args",a.message)}try{let a=a5(),c=a3(a.settings,b);a6(c);let d=void 0!==b.enabledModels||void 0!==b.disabledProviders||void 0!==b.modelProviderOrder;d&&(aJ(),(0,iq.j)());let e=a5(),f=kD(e.path,e.settings).settings;return{success:!0,settings:f,application:{mode:d?"runtime-refresh":"new-session",restartRequired:!1}}}catch(a){if(a instanceof kv)throw a;throw new kv("settings_write_failed",a instanceof Error?a.message:String(a))}}async function kF(a,b,c){if("object"!=typeof b||null===b||Array.isArray(b))throw new kv("invalid_args","args must be an object");switch(function(a){if(!ku.includes(a))throw new kv("unknown_action",`Unknown system action "${a}"`);return a}(a)){case"usage.get":return ky(b);case"omp.check":return kz();case"app.check":return kA(b);case"omp.restart":return kB(b);case"devices.list":return{devices:ag().map(a=>({id:a.id,label:a.label,createdAt:a.createdAt,lastSeenAt:a.lastSeenAt}))};case"devices.revoke":let d=function(a){let b="string"==typeof a?a.trim():"";if(!b||b.length>128||!kw.test(b))throw new kv("invalid_args","deviceId must be a valid device id");return b}(b.deviceId);if(!ad(()=>{let a=ae(),b=a.devices.filter(a=>a.id!==d);return b.length!==a.devices.length&&(a.devices=b,af(a),!0)}))throw new kv("device_not_found",`Unknown device "${d}"`);return{revoked:!0,deviceId:d,self:d===c.deviceId};case"systemPrompt.get":return kC(b);case"settings.get":try{let a=a5();return kD(a.path,a.settings)}catch(a){if(a instanceof kv)throw a;throw new kv("settings_read_failed",a instanceof Error?a.message:String(a))}case"settings.update":return kE(b);case"update":throw new kv("update_disabled","Automatic self-updating is disabled. Run 'omp update' in your terminal.",{command:"omp update"},400)}}let kG=new Map;function kH(a){hj.cleanupDevice(a);for(let[b,c]of g6)(void 0===a||c.deviceId===a)&&g7(b);!function(a){if(void 0===a){bX.clear(),bW.clear();return}for(let[b,c]of(bX.delete(a),bW))c.deviceId===a&&bW.delete(b)}(a),iU(a).catch(()=>{})}let kI={authenticate:function(a,b=Date.now()){if(a.pairingSecret){if(N()&&!function(a,b=process.env.OMPGUI_PASSWORD??process.env.OMP_WEB_PASSWORD){return N(b)&&(0,L.timingSafeEqual)(M(a),M(b))}(a.password??""))return{ok:!1,code:"password_required",message:"Workspace password is required to pair"};let c=function(a,b,c=Date.now()){return ad(()=>{let d=ae(),e=d.pairing;if(!e)return{error:"invalid"};if(e.expiresAt<=c)return d.pairing=null,af(d),{error:"expired"};if(!$(e.secretHash,Z(a)))return{error:"invalid"};if(d.devices.length>=16)return{error:"device_limit"};let f=(0,L.randomBytes)(32).toString("base64url"),g={id:_("d_"),label:aa(b)||"Phone",tokenHash:Z(f),createdAt:new Date(c).toISOString(),lastSeenAt:new Date(c).toISOString()};return d.devices=[...d.devices,g],d.pairing=null,af(d),{serverId:d.serverId,deviceId:g.id,token:f}})}(a.pairingSecret,a.label,b);return"error"in c?"expired"===c.error?{ok:!1,code:"pairing_expired",message:"Pairing link expired"}:"device_limit"===c.error?{ok:!1,code:"device_limit",message:"Too many paired devices"}:{ok:!1,code:"unauthorized",message:"Invalid pairing secret"}:{ok:!0,serverId:c.serverId,deviceId:c.deviceId,token:c.token}}if(!a.deviceId||!a.token)return{ok:!1,code:"unauthorized",message:"Device token is required"};let c=function(a,b,c=Date.now()){return ad(()=>{let d=ae(),e=d.devices.find(b=>b.id===a);return e&&$(e.tokenHash,Z(b))?(e.lastSeenAt=new Date(c).toISOString(),af(d),{serverId:d.serverId,deviceId:e.id}):null})}(a.deviceId,a.token,b);return c?{ok:!0,serverId:c.serverId,deviceId:c.deviceId}:{ok:!1,code:"unauthorized",message:"Unknown device"}},listSessions:bO,listModels:async()=>Y((await iF()).models).models,fetchUsage:kt,openSession:bP,sendCommand:bQ,createSession:gL,listProjects:gI,listFiles:gJ,readFile:gV,listSlash:gK,deleteSession:hl,archiveSession:hm,renameSession:hn,listArchives:ho,restoreArchive:hp,listWorktrees:gW,addWorktree:g$,writeFile:gX,gitStatus:gY,gitDiff:gZ,listBranches:bT,snapshotLeaf:bU,exportSession:bV,listSkills:jP,toggleSkill:jQ,searchSkills:j$,installSkill:j_,listAgents:j0,saveAgent:j1,deleteAgent:j2,listAuthProviders:ka,listPlugins:jS,pluginAction:jT,listMcp:jU,deleteMcp:jV,upsertMcp:jW,importSession:hq,addProject:g_,removeProject:g0,searchFiles:g4};function kJ(a,b,c,d){let e=b instanceof Error?b.message:String(b),f=b&&"object"==typeof b&&"code"in b&&"string"==typeof b.code?b.code:c;a(d?{op:"session.err",id:d,code:f,message:e}:{op:"error",code:f,message:e})}function kK(a){return!!a&&"/relay"===a.split("?")[0]}function kL(a,b){let c,d=b.length;return d<126?((c=Buffer.alloc(2))[0]=128|a,c[1]=d):d<=65535?((c=Buffer.alloc(4))[0]=128|a,c[1]=126,c.writeUInt16BE(d,2)):((c=Buffer.alloc(10))[0]=128|a,c[1]=127,c.writeUInt32BE(0,2),c.writeUInt32BE(d,6)),Buffer.concat([c,b])}class kM{get bufferedAmount(){return this.socket.writableLength}constructor(a,b,c=262144){this.socket=a,this.handlers=b,this.maxPayload=c,this.buffer=Buffer.alloc(0),this.closed=!1,this.sentClose=!1,this.socket.on("data",a=>this.onData(a)),this.socket.on("end",()=>this.handlePeerClose()),this.socket.on("close",()=>this.handlePeerClose()),this.socket.on("error",()=>this.handlePeerClose())}feed(a){this.onData(a)}sendText(a){if(this.closed||!this.socket.writable)return!1;let b=Buffer.from(a,"utf8");return!(b.length>this.maxPayload)&&this.writeFrame(kL(1,b))}ping(){!this.closed&&this.socket.writable&&this.writeFrame(kL(9,Buffer.alloc(0)))}close(a=1e3,b=""){if(this.sentClose)return;this.sentClose=!0;let c=Buffer.from(b.slice(0,120),"utf8"),d=Buffer.alloc(2+c.length);d.writeUInt16BE(a,0),c.copy(d,2);try{this.socket.write(kL(8,d))}catch{}this.closed=!0;try{this.socket.end()}catch{}this.handlers.onClose()}writeFrame(a){try{if(this.bufferedAmount+a.length>1e6)return!1;return this.socket.write(a),!0}catch{return this.handlePeerClose(),!1}}onData(a){if(!this.closed)for(this.buffer=0===this.buffer.length?Buffer.from(a):Buffer.concat([this.buffer,a]);;){let a=function(a,b=262144){if(a.length<2)return{status:"need_more"};let c=a[0],d=a[1],e=(128&c)!=0,f=15&c,g=127&d;if(0!=(112&c))return{status:"error",code:1002,reason:"RSV bits must be 0"};if((128&d)==0)return{status:"error",code:1002,reason:"Client frames must be masked"};if(!e)return{status:"error",code:1003,reason:"Fragmented frames are not supported"};if(1!==f&&8!==f&&9!==f&&10!==f)return{status:"error",code:1003,reason:"Unsupported opcode"};let h=2;if(126===g){if(a.length<4)return{status:"need_more"};g=a.readUInt16BE(2),h=4}else if(127===g){if(a.length<10)return{status:"need_more"};let c=a.readUInt32BE(2),d=a.readUInt32BE(6);if(0!==c||d>b)return{status:"error",code:1009,reason:"Frame is too large"};g=d,h=10}if(g>b)return{status:"error",code:1009,reason:"Frame is too large"};if((8===f||9===f||10===f)&&g>125)return{status:"error",code:1002,reason:"Control frame is too large"};let i=h+4+g;if(a.length<i)return{status:"need_more"};let j=a.subarray(h,h+4),k=Buffer.from(a.subarray(h+4,i));for(let a=0;a<k.length;a+=1)k[a]^=j[3&a];return{status:"ok",frame:{fin:e,opcode:f,payload:k},rest:a.subarray(i)}}(this.buffer,this.maxPayload);if("need_more"===a.status){this.buffer.length>this.maxPayload+14&&this.close(1009,"Frame is too large");return}if("error"===a.status)return void this.close(a.code,a.reason);if(this.buffer=a.rest,this.dispatch(a.frame),this.closed)return}}dispatch(a){switch(a.opcode){case 1:{let b=a.payload.toString("utf8");if(Buffer.byteLength(b,"utf8")!==a.payload.length)return void this.close(1007,"Text frame is not valid UTF-8");this.handlers.onText(b);return}case 8:this.close(1e3,"");return;case 9:this.writeFrame(kL(10,a.payload));return;case 10:return;default:this.close(1003,"Unsupported opcode")}}handlePeerClose(){this.closed||(this.closed=!0,this.sentClose=!0,this.handlers.onClose())}}function kN(){return globalThis.__ompguiRelayConnectionCount??0}function kO(a){globalThis.__ompguiRelayConnectionCount=a}function kP(a){let b=a.prototype.emit;function c(a,...d){if("upgrade"===a){let a=d[0];if(kK(a.url))return!function(a,b,c){let d;if(!kK(a.url))return b.destroy();if(!function(a){if("cross-site"===a.headers["sec-fetch-site"])return!1;let b=a.headers.origin;if(!b)return!0;let c=a.headers.host;if(!c)return!1;try{return new URL(b).host===c}catch{return!1}}(a)){b.write("HTTP/1.1 403 Forbidden\r\nConnection: close\r\n\r\n"),b.destroy();return}if(kN()>=8){b.write("HTTP/1.1 503 Service Unavailable\r\nConnection: close\r\n\r\n"),b.destroy();return}let e=!1,f=null,g=function(a,b,c){let d=function(a){if("websocket"!==String(a.headers.upgrade??"").toLowerCase())return null;let b=String(a.headers.connection??"");if(!/\bupgrade\b/i.test(b)||"13"!==String(a.headers["sec-websocket-version"]??""))return null;let c=a.headers["sec-websocket-key"];return"string"!=typeof c||c.length<16||c.length>128?null:c}(a);if(!d)return b.write("HTTP/1.1 400 Bad Request\r\nConnection: close\r\n\r\n"),b.destroy(),null;let e=(0,L.createHash)("sha1").update(d+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest("base64");return b.write(`HTTP/1.1 101 Switching Protocols\r
90
90
  Upgrade: websocket\r
91
91
  Connection: Upgrade\r
92
92
  Sec-WebSocket-Accept: ${e}\r