ompgui 0.4.1 → 0.4.3

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 (323) 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 +4 -4
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +13 -7
  7. package/.next/required-server-files.js +8 -7
  8. package/.next/required-server-files.json +8 -7
  9. package/.next/routes-manifest.json +6 -0
  10. package/.next/server/app/_global-error/page.js +2 -2
  11. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_global-error.html +1 -1
  14. package/.next/server/app/_global-error.rsc +3 -3
  15. package/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  16. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +1 -1
  19. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/_not-found.html +1 -1
  22. package/.next/server/app/_not-found.rsc +4 -4
  23. package/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  25. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  27. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  29. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/agent/[id]/route.js +1 -1
  31. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/agent/new/route.js +1 -1
  33. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/agent/running/events/route.js +1 -1
  35. package/.next/server/app/api/agent/running/events/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/agents/[name]/route.js +1 -6
  37. package/.next/server/app/api/agents/[name]/route.js.nft.json +1 -1
  38. package/.next/server/app/api/agents/[name]/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/agents/route.js +1 -6
  40. package/.next/server/app/api/agents/route.js.nft.json +1 -1
  41. package/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/agents/unpack/route.js +1 -6
  43. package/.next/server/app/api/agents/unpack/route.js.nft.json +1 -1
  44. package/.next/server/app/api/agents/unpack/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/app-update/route.js +1 -1
  46. package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  48. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  50. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  52. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  54. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/auth/providers/route.js +1 -1
  56. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/cwd/browse/route.js +1 -1
  58. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/cwd/validate/route.js +1 -1
  60. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/default-cwd/route.js +1 -1
  62. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/file-index/route.js +1 -1
  64. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/files/[...path]/route.js +2 -2
  66. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/git/diff/route.js +2 -2
  68. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/git/status/route.js +1 -1
  70. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/home/route.js +1 -1
  72. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/route.js +3 -3
  74. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/model-roles/route.js +1 -1
  76. package/.next/server/app/api/model-roles/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/models/route.js +1 -1
  78. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  80. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/models-config/route.js +1 -1
  82. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/models-config/test/route.js +1 -1
  84. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/omp-settings/route.js +1 -1
  86. package/.next/server/app/api/omp-settings/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/omp-update/route.js +2 -2
  88. package/.next/server/app/api/omp-update/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/omp-version/route.js +1 -1
  90. package/.next/server/app/api/omp-version/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/plugins/route.js +1 -1
  92. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/projects/route.js +2 -2
  94. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/providers/enable/route.js +1 -1
  96. package/.next/server/app/api/providers/enable/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  98. package/.next/server/app/api/sessions/[id]/archive/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  100. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  102. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  104. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  106. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  108. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  110. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
  112. package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
  114. package/.next/server/app/api/sessions/[id]/subagents/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/sessions/import/route.js +1 -1
  116. package/.next/server/app/api/sessions/import/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/sessions/route.js +1 -1
  118. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/skills/check/route.js +1 -1
  120. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/skills/install/route.js +1 -1
  122. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/skills/route.js +1 -1
  124. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/skills/search/route.js +1 -1
  126. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/skills/update/route.js +1 -1
  128. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/usage/route.js +1 -0
  130. package/.next/server/app/api/usage/route.js.nft.json +1 -0
  131. package/.next/server/app/api/usage/route_client-reference-manifest.js +1 -0
  132. package/.next/server/app/api/web-auth/session/route.js +1 -1
  133. package/.next/server/app/api/web-auth/session/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/route.js +1 -1
  135. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/favicon.ico/route.js +1 -1
  137. package/.next/server/app/index.html +1 -1
  138. package/.next/server/app/index.rsc +5 -5
  139. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  140. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  141. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  142. package/.next/server/app/login/page.js +1 -1
  143. package/.next/server/app/login/page.js.nft.json +1 -1
  144. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  145. package/.next/server/app/login.html +1 -1
  146. package/.next/server/app/login.rsc +5 -5
  147. package/.next/server/app/login.segments/_full.segment.rsc +5 -5
  148. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  149. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  150. package/.next/server/app/page.js +6 -6
  151. package/.next/server/app/page.js.nft.json +1 -1
  152. package/.next/server/app/page_client-reference-manifest.js +1 -1
  153. package/.next/server/app-paths-manifest.json +7 -6
  154. package/.next/server/chunks/1671.js +1 -1
  155. package/.next/server/chunks/3100.js +6 -0
  156. package/.next/server/chunks/3425.js +4 -4
  157. package/.next/server/chunks/3798.js +1 -1
  158. package/.next/server/chunks/6465.js +1 -1
  159. package/.next/server/chunks/7834.js +1 -1
  160. package/.next/server/chunks/8501.js +1 -1
  161. package/.next/server/chunks/933.js +1 -0
  162. package/.next/server/instrumentation.js +1 -1
  163. package/.next/server/middleware-build-manifest.js +1 -1
  164. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  165. package/.next/server/middleware.js +4 -4
  166. package/.next/server/next-font-manifest.js +1 -1
  167. package/.next/server/next-font-manifest.json +1 -1
  168. package/.next/server/pages/404.html +1 -1
  169. package/.next/server/pages/500.html +1 -1
  170. package/.next/server/server-reference-manifest.json +1 -1
  171. package/.next/static/1lExVscX3eNgp8_IZprrs/_buildManifest.js +1 -0
  172. package/.next/static/chunks/2201.b3274979c333421a.js +1 -0
  173. package/.next/static/chunks/3274.08ed8ce5038ed170.js +1 -0
  174. package/.next/static/chunks/4315-e8438b35b634917c.js +1 -0
  175. package/.next/static/chunks/4473.c9bdafcdd251e4db.js +1 -0
  176. package/.next/static/chunks/6522.7fc304e9652b0fe4.js +1 -0
  177. package/.next/static/chunks/6604.226e5eae7c573e65.js +1 -0
  178. package/.next/static/chunks/9668.9ba92df77a35feac.js +1 -0
  179. package/.next/static/chunks/9981.7fbe43b8b0e281ef.js +1 -0
  180. package/.next/static/chunks/app/_global-error/page-b3b7f9faeba219c0.js +1 -0
  181. package/.next/static/chunks/app/_not-found/{page-29d942d61dc402df.js → page-4059e984ec3299da.js} +1 -1
  182. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b3b7f9faeba219c0.js +1 -0
  183. package/.next/static/chunks/app/api/agent/[id]/events/route-b3b7f9faeba219c0.js +1 -0
  184. package/.next/static/chunks/app/api/agent/[id]/route-b3b7f9faeba219c0.js +1 -0
  185. package/.next/static/chunks/app/api/agent/new/route-b3b7f9faeba219c0.js +1 -0
  186. package/.next/static/chunks/app/api/agent/running/events/route-b3b7f9faeba219c0.js +1 -0
  187. package/.next/static/chunks/app/api/agents/[name]/route-b3b7f9faeba219c0.js +1 -0
  188. package/.next/static/chunks/app/api/agents/route-b3b7f9faeba219c0.js +1 -0
  189. package/.next/static/chunks/app/api/agents/unpack/route-b3b7f9faeba219c0.js +1 -0
  190. package/.next/static/chunks/app/api/app-update/route-b3b7f9faeba219c0.js +1 -0
  191. package/.next/static/chunks/app/api/auth/all-providers/route-b3b7f9faeba219c0.js +1 -0
  192. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b3b7f9faeba219c0.js +1 -0
  193. package/.next/static/chunks/app/api/auth/login/[provider]/route-b3b7f9faeba219c0.js +1 -0
  194. package/.next/static/chunks/app/api/auth/logout/[provider]/route-b3b7f9faeba219c0.js +1 -0
  195. package/.next/static/chunks/app/api/auth/providers/route-b3b7f9faeba219c0.js +1 -0
  196. package/.next/static/chunks/app/api/cwd/browse/route-b3b7f9faeba219c0.js +1 -0
  197. package/.next/static/chunks/app/api/cwd/validate/route-b3b7f9faeba219c0.js +1 -0
  198. package/.next/static/chunks/app/api/default-cwd/route-b3b7f9faeba219c0.js +1 -0
  199. package/.next/static/chunks/app/api/file-index/route-b3b7f9faeba219c0.js +1 -0
  200. package/.next/static/chunks/app/api/files/[...path]/route-b3b7f9faeba219c0.js +1 -0
  201. package/.next/static/chunks/app/api/git/diff/route-b3b7f9faeba219c0.js +1 -0
  202. package/.next/static/chunks/app/api/git/status/route-b3b7f9faeba219c0.js +1 -0
  203. package/.next/static/chunks/app/api/home/route-b3b7f9faeba219c0.js +1 -0
  204. package/.next/static/chunks/app/api/mcp/route-b3b7f9faeba219c0.js +1 -0
  205. package/.next/static/chunks/app/api/model-roles/route-b3b7f9faeba219c0.js +1 -0
  206. package/.next/static/chunks/app/api/models/route-b3b7f9faeba219c0.js +1 -0
  207. package/.next/static/chunks/app/api/models-config/catalog/route-b3b7f9faeba219c0.js +1 -0
  208. package/.next/static/chunks/app/api/models-config/route-b3b7f9faeba219c0.js +1 -0
  209. package/.next/static/chunks/app/api/models-config/test/route-b3b7f9faeba219c0.js +1 -0
  210. package/.next/static/chunks/app/api/omp-settings/route-b3b7f9faeba219c0.js +1 -0
  211. package/.next/static/chunks/app/api/omp-update/route-b3b7f9faeba219c0.js +1 -0
  212. package/.next/static/chunks/app/api/omp-version/route-b3b7f9faeba219c0.js +1 -0
  213. package/.next/static/chunks/app/api/plugins/route-b3b7f9faeba219c0.js +1 -0
  214. package/.next/static/chunks/app/api/projects/route-b3b7f9faeba219c0.js +1 -0
  215. package/.next/static/chunks/app/api/providers/enable/route-b3b7f9faeba219c0.js +1 -0
  216. package/.next/static/chunks/app/api/sessions/[id]/archive/route-b3b7f9faeba219c0.js +1 -0
  217. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b3b7f9faeba219c0.js +1 -0
  218. package/.next/static/chunks/app/api/sessions/[id]/context/route-b3b7f9faeba219c0.js +1 -0
  219. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b3b7f9faeba219c0.js +1 -0
  220. package/.next/static/chunks/app/api/sessions/[id]/export/route-b3b7f9faeba219c0.js +1 -0
  221. package/.next/static/chunks/app/api/sessions/[id]/route-b3b7f9faeba219c0.js +1 -0
  222. package/.next/static/chunks/app/api/sessions/[id]/state/route-b3b7f9faeba219c0.js +1 -0
  223. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-b3b7f9faeba219c0.js +1 -0
  224. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-b3b7f9faeba219c0.js +1 -0
  225. package/.next/static/chunks/app/api/sessions/import/route-b3b7f9faeba219c0.js +1 -0
  226. package/.next/static/chunks/app/api/sessions/route-b3b7f9faeba219c0.js +1 -0
  227. package/.next/static/chunks/app/api/skills/check/route-b3b7f9faeba219c0.js +1 -0
  228. package/.next/static/chunks/app/api/skills/install/route-b3b7f9faeba219c0.js +1 -0
  229. package/.next/static/chunks/app/api/skills/route-b3b7f9faeba219c0.js +1 -0
  230. package/.next/static/chunks/app/api/skills/search/route-b3b7f9faeba219c0.js +1 -0
  231. package/.next/static/chunks/app/api/skills/update/route-b3b7f9faeba219c0.js +1 -0
  232. package/.next/static/chunks/app/api/usage/route-b3b7f9faeba219c0.js +1 -0
  233. package/.next/static/chunks/app/api/web-auth/session/route-b3b7f9faeba219c0.js +1 -0
  234. package/.next/static/chunks/app/api/worktrees/route-b3b7f9faeba219c0.js +1 -0
  235. package/.next/static/chunks/app/{error-b1ed788ca548b925.js → error-a88ca1da88a49a27.js} +1 -1
  236. package/.next/static/chunks/app/global-error-2a88d8efcf6d3b5a.js +1 -0
  237. package/.next/static/chunks/app/{layout-27cadb6f9894131c.js → layout-4e2cfbf344f0fe3b.js} +1 -1
  238. package/.next/static/chunks/app/login/page-9944fe0148c69be1.js +1 -0
  239. package/.next/static/chunks/app/page-05261731583145c5.js +76 -0
  240. package/.next/static/chunks/{main-app-0f81281390bb2b72.js → main-app-f86cfa9ca4019151.js} +1 -1
  241. package/.next/static/chunks/next/dist/client/components/builtin/app-error-b3b7f9faeba219c0.js +1 -0
  242. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b3b7f9faeba219c0.js +1 -0
  243. package/.next/static/chunks/next/dist/client/components/builtin/not-found-b3b7f9faeba219c0.js +1 -0
  244. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b3b7f9faeba219c0.js +1 -0
  245. package/.next/static/chunks/webpack-152a75a8b7087b43.js +1 -0
  246. package/.next/static/css/{14563335c571ff8f.css → 70346ef052011b0b.css} +1 -1
  247. package/bin/omp-web-security.test.mjs +6 -3
  248. package/bin/ompgui.js +1 -1
  249. package/bin/port-availability.js +0 -1
  250. package/bin/process-lifecycle.js +0 -2
  251. package/next.config.ts +1 -0
  252. package/package.json +5 -5
  253. package/.next/server/chunks/4445.js +0 -1
  254. package/.next/static/chunks/2201.9abd9168805e51f1.js +0 -1
  255. package/.next/static/chunks/3274.981684293bab3573.js +0 -1
  256. package/.next/static/chunks/4315-0cf6ce20554dc7e7.js +0 -1
  257. package/.next/static/chunks/4473.bb35c176b3f2bf32.js +0 -1
  258. package/.next/static/chunks/6522.07d01cfb1ad3768e.js +0 -1
  259. package/.next/static/chunks/7570.db2b11eaf9806157.js +0 -1
  260. package/.next/static/chunks/9981.64e2a4c3b53b3217.js +0 -1
  261. package/.next/static/chunks/app/_global-error/page-db1bed60c4bd0656.js +0 -1
  262. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-db1bed60c4bd0656.js +0 -1
  263. package/.next/static/chunks/app/api/agent/[id]/events/route-db1bed60c4bd0656.js +0 -1
  264. package/.next/static/chunks/app/api/agent/[id]/route-db1bed60c4bd0656.js +0 -1
  265. package/.next/static/chunks/app/api/agent/new/route-db1bed60c4bd0656.js +0 -1
  266. package/.next/static/chunks/app/api/agent/running/events/route-db1bed60c4bd0656.js +0 -1
  267. package/.next/static/chunks/app/api/agents/[name]/route-db1bed60c4bd0656.js +0 -1
  268. package/.next/static/chunks/app/api/agents/route-db1bed60c4bd0656.js +0 -1
  269. package/.next/static/chunks/app/api/agents/unpack/route-db1bed60c4bd0656.js +0 -1
  270. package/.next/static/chunks/app/api/app-update/route-db1bed60c4bd0656.js +0 -1
  271. package/.next/static/chunks/app/api/auth/all-providers/route-db1bed60c4bd0656.js +0 -1
  272. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-db1bed60c4bd0656.js +0 -1
  273. package/.next/static/chunks/app/api/auth/login/[provider]/route-db1bed60c4bd0656.js +0 -1
  274. package/.next/static/chunks/app/api/auth/logout/[provider]/route-db1bed60c4bd0656.js +0 -1
  275. package/.next/static/chunks/app/api/auth/providers/route-db1bed60c4bd0656.js +0 -1
  276. package/.next/static/chunks/app/api/cwd/browse/route-db1bed60c4bd0656.js +0 -1
  277. package/.next/static/chunks/app/api/cwd/validate/route-db1bed60c4bd0656.js +0 -1
  278. package/.next/static/chunks/app/api/default-cwd/route-db1bed60c4bd0656.js +0 -1
  279. package/.next/static/chunks/app/api/file-index/route-db1bed60c4bd0656.js +0 -1
  280. package/.next/static/chunks/app/api/files/[...path]/route-db1bed60c4bd0656.js +0 -1
  281. package/.next/static/chunks/app/api/git/diff/route-db1bed60c4bd0656.js +0 -1
  282. package/.next/static/chunks/app/api/git/status/route-db1bed60c4bd0656.js +0 -1
  283. package/.next/static/chunks/app/api/home/route-db1bed60c4bd0656.js +0 -1
  284. package/.next/static/chunks/app/api/mcp/route-db1bed60c4bd0656.js +0 -1
  285. package/.next/static/chunks/app/api/model-roles/route-db1bed60c4bd0656.js +0 -1
  286. package/.next/static/chunks/app/api/models/route-db1bed60c4bd0656.js +0 -1
  287. package/.next/static/chunks/app/api/models-config/catalog/route-db1bed60c4bd0656.js +0 -1
  288. package/.next/static/chunks/app/api/models-config/route-db1bed60c4bd0656.js +0 -1
  289. package/.next/static/chunks/app/api/models-config/test/route-db1bed60c4bd0656.js +0 -1
  290. package/.next/static/chunks/app/api/omp-settings/route-db1bed60c4bd0656.js +0 -1
  291. package/.next/static/chunks/app/api/omp-update/route-db1bed60c4bd0656.js +0 -1
  292. package/.next/static/chunks/app/api/omp-version/route-db1bed60c4bd0656.js +0 -1
  293. package/.next/static/chunks/app/api/plugins/route-db1bed60c4bd0656.js +0 -1
  294. package/.next/static/chunks/app/api/projects/route-db1bed60c4bd0656.js +0 -1
  295. package/.next/static/chunks/app/api/providers/enable/route-db1bed60c4bd0656.js +0 -1
  296. package/.next/static/chunks/app/api/sessions/[id]/archive/route-db1bed60c4bd0656.js +0 -1
  297. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-db1bed60c4bd0656.js +0 -1
  298. package/.next/static/chunks/app/api/sessions/[id]/context/route-db1bed60c4bd0656.js +0 -1
  299. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-db1bed60c4bd0656.js +0 -1
  300. package/.next/static/chunks/app/api/sessions/[id]/export/route-db1bed60c4bd0656.js +0 -1
  301. package/.next/static/chunks/app/api/sessions/[id]/route-db1bed60c4bd0656.js +0 -1
  302. package/.next/static/chunks/app/api/sessions/[id]/state/route-db1bed60c4bd0656.js +0 -1
  303. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-db1bed60c4bd0656.js +0 -1
  304. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-db1bed60c4bd0656.js +0 -1
  305. package/.next/static/chunks/app/api/sessions/import/route-db1bed60c4bd0656.js +0 -1
  306. package/.next/static/chunks/app/api/sessions/route-db1bed60c4bd0656.js +0 -1
  307. package/.next/static/chunks/app/api/skills/check/route-db1bed60c4bd0656.js +0 -1
  308. package/.next/static/chunks/app/api/skills/install/route-db1bed60c4bd0656.js +0 -1
  309. package/.next/static/chunks/app/api/skills/route-db1bed60c4bd0656.js +0 -1
  310. package/.next/static/chunks/app/api/skills/search/route-db1bed60c4bd0656.js +0 -1
  311. package/.next/static/chunks/app/api/skills/update/route-db1bed60c4bd0656.js +0 -1
  312. package/.next/static/chunks/app/api/web-auth/session/route-db1bed60c4bd0656.js +0 -1
  313. package/.next/static/chunks/app/api/worktrees/route-db1bed60c4bd0656.js +0 -1
  314. package/.next/static/chunks/app/global-error-d103ca6500636699.js +0 -1
  315. package/.next/static/chunks/app/login/page-529e71a823982db0.js +0 -1
  316. package/.next/static/chunks/app/page-0561f51665caa87b.js +0 -76
  317. package/.next/static/chunks/next/dist/client/components/builtin/app-error-db1bed60c4bd0656.js +0 -1
  318. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-db1bed60c4bd0656.js +0 -1
  319. package/.next/static/chunks/next/dist/client/components/builtin/not-found-db1bed60c4bd0656.js +0 -1
  320. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-db1bed60c4bd0656.js +0 -1
  321. package/.next/static/chunks/webpack-d5d95f150515a23a.js +0 -1
  322. package/.next/static/mAW7tvDf5cfedQcTSaZuq/_buildManifest.js +0 -1
  323. /package/.next/static/{mAW7tvDf5cfedQcTSaZuq → 1lExVscX3eNgp8_IZprrs}/_ssgManifest.js +0 -0
@@ -2,4 +2,4 @@
2
2
  RPC protocol error: ${a instanceof Error?a.message:String(a)}`).slice(-8192),this.dispose(0);return}if("ready"===d.type)return void b(d);if("response"===d.type)return void this.handleResponse(d);for(let a of this.frameListeners)try{a(d)}catch{}}}),this.child.stderr.on("data",a=>{this.stderrTail=(this.stderrTail+a.toString("utf8")).slice(-8192)});const l=(b,d)=>{if(this.exited)return;this.exited=!0,this.exitInfo={code:b,signal:d};let e=Error(`omp exited (code ${b??"null"}, signal ${d??"none"})${this.stderrTail?`: ${this.stderrTail.slice(-500)}`:""}`);for(let[,a]of(c(e),this.pending))a.timer&&clearTimeout(a.timer),a.reject(e);this.pending.clear(),a.onExit?.({code:b,signal:d,stderrTail:this.stderrTail})};this.child.on("exit",l),this.child.on("error",a=>{this.stderrTail=(this.stderrTail+`
3
3
  spawn error: ${a.message}`).slice(-8192),l(null,null)})}get isAlive(){return!this.exited}get exitDetails(){return this.exitInfo?{...this.exitInfo,stderrTail:this.stderrTail}:null}waitReady(a=6e4){let b=new Promise((b,c)=>{let d=setTimeout(()=>c(Error(`omp RPC ready timeout after ${a}ms`)),a);d.unref?.(),this.readyPromise.finally(()=>clearTimeout(d)).catch(()=>{})});return Promise.race([this.readyPromise,b])}async negotiateProtocol(a){if(!(Array.isArray(a.supportedProtocolVersions)?a.supportedProtocolVersions:[]).includes(2))return this.protocolVersion;let b=await this.sendCommand({type:"negotiate_protocol",protocolVersion:2});if(b?.protocolVersion!==2)throw Error("OMP rejected RPC protocol v2 negotiation");return this.protocolVersion=2,this.protocolVersion}onFrame(a){return this.frameListeners.add(a),()=>this.frameListeners.delete(a)}sendCommand(a,b){if(this.exited)return Promise.reject(Error("omp RPC process has exited"));let c=`w${this.nextId++}`;return new Promise((d,e)=>{let f={command:a.type,resolve:d,reject:e};b&&b>0&&(f.timer=setTimeout(()=>{this.pending.get(c)===f&&(this.pending.delete(c),e(Error(`RPC command ${a.type} timed out after ${b}ms`)))},b),f.timer.unref?.()),this.pending.set(c,f),this.writeFrame({...a,id:c},a=>{if(a){let b=this.pending.get(c);b&&(this.pending.delete(c),b.timer&&clearTimeout(b.timer),e(a))}})})}sendFrame(a){this.exited||this.writeFrame(a,()=>{})}writeFrame(a,b){let c;try{c=function(a,b,c){let d=JSON.stringify(a);if(1048576>=i(d))return[`${d}
4
4
  `];if(1===b)throw Error("RPC frame exceeds the v1 transport limit");let e=Buffer.from(d,"utf8");if(e.byteLength>0x4000000)throw Error("RPC frame exceeds the v2 reassembly limit");let f=Math.ceil(e.byteLength/262144),g=[];for(let a=0;a<f;a++){let b=JSON.stringify({type:"rpc_chunk",chunkId:c,index:a,count:f,byteLength:e.byteLength,data:e.subarray(262144*a,(a+1)*262144).toString("base64")});if(i(b)>1048576)throw Error("RPC chunk exceeds the transport limit");g.push(`${b}
5
- `)}return g}(a,this.protocolVersion,`web-${this.nextChunkId++}`)}catch(a){b(a instanceof Error?a:Error(String(a)));return}this.writeQueue=this.writeQueue.then(()=>new Promise(a=>{if(this.exited||this.child.stdin.destroyed){b(Error("RPC process is not running")),a();return}let d=0,e=f=>{if(f||d===c.length){b(f??null),a();return}this.child.stdin.write(c[d++],e)};e()}))}handleResponse(a){let b=a.id,c=b?this.pending.get(b):void 0;if(!c||!b){for(let b of this.frameListeners)try{b(a)}catch{}return}this.pending.delete(b),c.timer&&clearTimeout(c.timer),a.success?c.resolve(a.data):c.reject(new k(a.command,a.error??"RPC command failed",a.code))}async dispose(a=5e3){if(this.exited)return;let b=new Promise(a=>{if(this.exited)return a();this.child.once("exit",()=>a())});try{this.child.stdin.end()}catch{}let c=(a,b)=>{let c=this.child.pid;if(c){if("win32"===process.platform){let d=["/pid",String(c),"/t",...a?["/f"]:[]];this.spawnProcess("taskkill",d,{windowsHide:!0,stdio:"ignore"}).once("error",()=>{try{this.child.kill(b)}catch{}});return}try{process.kill(-c,b)}catch{try{this.child.kill(b)}catch{}}}},d=setTimeout(()=>{this.exited||c(!1,"SIGTERM")},a),e=setTimeout(()=>{this.exited||c(!0,"SIGKILL")},2*a);d.unref?.(),e.unref?.(),await b,clearTimeout(d),clearTimeout(e)}}},79588:(a,b,c)=>{c.d(b,{F1:()=>n,wS:()=>m});var d=c(79646),e=c(29021),f=c(21820),g=c(33873);let h=null,i=0,j=null,k=0,l="win32"===process.platform?"omp.exe":"omp";function m(){if(h)return h;if(Date.now()-i<3e4)return null;let a=function(){let a=process.env.OMP_WEB_OMP_BIN;if(a)return(0,e.existsSync)(a)?a:null;for(let a of(process.env.PATH??"").split(g.delimiter)){if(!a)continue;let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}for(let a of["/opt/homebrew/bin","/usr/local/bin",(0,g.join)((0,f.homedir)(),".bun","bin"),(0,g.join)((0,f.homedir)(),".local","bin")]){let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}return null}();return a?(h=a,i=0,a):(i=Date.now(),null)}async function n(){if(j)return j;if(Date.now()-k<3e4)return null;let a=m();if(!a)return k=Date.now(),null;try{let b=(await new Promise((b,c)=>{(0,d.execFile)(a,["--version"],{timeout:1e4,windowsHide:!0},(a,d)=>{a?c(a):b(d)})})).trim();if(b)return j=b,k=0,b}catch{}return k=Date.now(),null}}};
5
+ `)}return g}(a,this.protocolVersion,`web-${this.nextChunkId++}`)}catch(a){b(a instanceof Error?a:Error(String(a)));return}this.writeQueue=this.writeQueue.then(()=>new Promise(a=>{if(this.exited||this.child.stdin.destroyed){b(Error("RPC process is not running")),a();return}let d=0,e=f=>{if(f||d===c.length){b(f??null),a();return}this.child.stdin.write(c[d++],e)};e()}))}handleResponse(a){let b=a.id,c=b?this.pending.get(b):void 0;if(!c||!b){for(let b of this.frameListeners)try{b(a)}catch{}return}this.pending.delete(b),c.timer&&clearTimeout(c.timer),a.success?c.resolve(a.data):c.reject(new k(a.command,a.error??"RPC command failed",a.code))}async dispose(a=5e3){if(this.exited)return;let b=new Promise(a=>{if(this.exited)return a();this.child.once("exit",()=>a())});try{this.child.stdin.end()}catch{}let c=(a,b)=>{let c=this.child.pid;if(c){if("win32"===process.platform){let d=["/pid",String(c),"/t",...a?["/f"]:[]];this.spawnProcess("taskkill",d,{windowsHide:!0,stdio:"ignore"}).once("error",()=>{try{this.child.kill(b)}catch{}});return}try{process.kill(-c,b)}catch{try{this.child.kill(b)}catch{}}}},d=setTimeout(()=>{this.exited||c(!1,"SIGTERM")},a),e=setTimeout(()=>{this.exited||c(!0,"SIGKILL")},2*a);d.unref?.(),e.unref?.(),await b,clearTimeout(d),clearTimeout(e)}}},79588:(a,b,c)=>{c.d(b,{F1:()=>o,eG:()=>p,nH:()=>q,wS:()=>n});var d=c(79646),e=c(29021),f=c(21820),g=c(33873);let h=null,i=0,j=null,k=0,l="win32"===process.platform?"omp.exe":"omp",m=/\x1B\[[0-9;]*m/g;function n(){if(h)return h;if(Date.now()-i<3e4)return null;let a=function(){let a=process.env.OMPGUI_OMP_BIN??process.env.OMP_WEB_OMP_BIN;if(a)return(0,e.existsSync)(a)?a:null;for(let a of(process.env.PATH??"").split(g.delimiter)){if(!a)continue;let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}for(let a of["/opt/homebrew/bin","/usr/local/bin",(0,g.join)((0,f.homedir)(),".bun","bin"),(0,g.join)((0,f.homedir)(),".local","bin")]){let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}return null}();return a?(h=a,i=0,a):(i=Date.now(),null)}async function o(){if(j)return j;if(Date.now()-k<3e4)return null;let a=n();if(!a)return k=Date.now(),null;try{let b=(await new Promise((b,c)=>{(0,d.execFile)(a,["--version"],{timeout:1e4,windowsHide:!0},(a,d)=>{a?c(a):b(d)})})).trim();if(b)return j=b,k=0,b}catch{}return k=Date.now(),null}function p(a,b={}){let c=n();if(!c)return Promise.reject(Error("omp binary not found. Install oh-my-pi or set OMP_WEB_OMP_BIN."));let{promise:e,resolve:f,reject:g}=Promise.withResolvers();return(0,d.execFile)(c,a,{cwd:b.cwd,timeout:b.timeout??6e4,maxBuffer:b.maxBuffer??0x1000000,env:{...process.env,FORCE_COLOR:"0",NO_COLOR:"1"},windowsHide:!0},(b,c,d)=>{b?g(Error((d||c||b.message).replace(m,"").trim().slice(-600)||`omp ${a.join(" ")} failed`)):f({stdout:c,stderr:d})}),e}function q(a){let b=a.replace(m,""),c=b.search(/[{[]/);if(c<0)return null;try{return JSON.parse(b.slice(c))}catch{return null}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=6465,exports.ids=[6465],exports.modules={28967:(a,b,c)=>{function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){return b?{...a,modelError:b}:a}function g(a){return{...a,modelError:"Model list is temporarily unavailable. Check your configuration and try again."}}function h(a,b){var c,e,f;let g,h,i=d(),j=i.entries.get(a);if(j&&j.expiresAt>Date.now())return Promise.resolve(j.data);let k=i.inFlight.get(a)??(c=i,e=a,f=b,g=c.generation,h=Promise.resolve().then(f).then(a=>{if(c.generation===g&&c.inFlight.get(e)===h){for(c.entries.delete(e);c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(e,{data:a,expiresAt:Date.now()+6e4})}return a}).finally(()=>{c.inFlight.get(e)===h&&c.inFlight.delete(e)}),c.inFlight.set(e,h),h);return j?(k.catch(()=>{}),Promise.resolve(j.data)):k}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},86465:(a,b,c)=>{c.d(b,{OZ:()=>k,A4:()=>x,HG:()=>y,yo:()=>t,Te:()=>z,OF:()=>E,Fn:()=>B});var d=c(29021),e=c(21820),f=c(28967),g=c(13798),h=c(88501),i=c(78573);let j="This session is restarting — retry in a moment.";class k extends Error{constructor(a,b){super(a),this.name="WebRpcError",this.code=b}}let l=new Set(["select","confirm","input","editor","open_url"]),m=new Set(["abort","abort_and_prompt","set_thinking_level","cycle_thinking_level","cycle_model","get_available_models","set_auto_compaction","set_auto_retry","abort_retry","abort_bash","set_todos","set_steering_mode","set_follow_up_mode","set_interrupt_mode","get_branch_messages","get_messages","get_messages_page","export_html","handoff","get_subagents","get_subagent_messages","set_subagent_subscription","get_login_providers","login"]),n={navigate_tree:"Branch navigation is not supported over the omp RPC protocol",clear_queue:"Recalling queued messages is not supported over the omp RPC protocol",get_tools:"Per-session tool listing is not supported over the omp RPC protocol",set_tools:"Changing tools on a running session is not supported over the omp RPC protocol; tool presets apply to new sessions",extension_ui_input:"Extension custom UI is not supported over the omp RPC protocol"},o={find:"glob",search:"grep"},p=new Set(["ls"]),q=["bash","read","edit","write","grep","find","ls"].map(a=>a.toLowerCase()).sort().join(",");function r(a,b,c=!1){let d=[];if(a)d.push("--resume",a);else if(void 0!==b){let a=b.map(a=>a.toLowerCase()).sort().join(",");if(0===b.length)d.push("--no-tools");else if(a===q);else{let a=function(a){let b=[];for(let c of a){let a=c.toLowerCase();if(p.has(a))continue;let d=o[a]??a;b.includes(d)||b.push(d)}return b}(b);a.length>0&&d.push("--tools",a.join(","))}}return c&&!a&&d.push("--advisor"),d}function s(a){return a?.length?a:void 0}function t(a){if(a&&(0,d.existsSync)(a))return a;try{let a=process.cwd();if(a&&(0,d.existsSync)(a))return a}catch{}return(0,e.homedir)()}function u(a){a&&"object"==typeof a&&void 0===a.estimatedTokensAfter&&(a.estimatedTokensAfter=Math.round((a.summary?.length??0)/4))}class v{constructor(a,b){this.listeners=[],this.pendingUiRequests=new Map,this.uiExpiryTimers=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.bashRunning=!1,this.streaming=!1,this.compacting=!1,this.fastModeEnabled=!1,this.idleTimer=null,this.onDestroyCallback=null,this.onIdentityChangeCallback=null,this.unsubscribeFrames=null,this.initPromise=null,this.restarting=!1,this.mcpListWaiter=null,this._alive=!0,this.hostToolNames=new Set,this.pendingHostTools=new Map,this.hostUriSchemes=new Map,this.pendingHostUris=new Map,this.destroyPromise=null,this._sessionId="",this._sessionFile="",this.sessionFileSignalTimer=null,this.proc=a,this.cwd=b}get sessionId(){return this._sessionId}get sessionFile(){return this._sessionFile}isAlive(){return this._alive&&this.proc.isAlive}isRunning(){return this.isAlive()&&(this.promptRunning||this.streaming||this.compacting||this.bashRunning)}start(){this.unsubscribeFrames=this.proc.onFrame(a=>this.handleFrame(a)),this.resetIdleTimer(),D()}waitUntilReady(){return this.initPromise||(this.initPromise=this.initialize()),this.initPromise}async initialize(){let a=await this.proc.waitReady(12e4);await this.proc.negotiateProtocol(a),await this.proc.sendCommand({type:"set_subagent_subscription",level:"events"}).catch(()=>{});let b=await this.proc.sendCommand({type:"get_state"});this.applyIdentity(b)}applyIdentity(a){this._sessionId=a.sessionId,this._sessionFile=a.sessionFile??"",this._sessionName=a.sessionName,this.streaming=a.isStreaming,this.compacting=a.isCompacting,this.fastModeEnabled=a.fastModeEnabled??a.fastMode??this.fastModeEnabled,this._sessionFile&&(0,i.O8)(this._sessionId,this._sessionFile)}handleProcessExit(a){if(!this._alive||this.restarting)return;let b=a.trim().split("\n").pop()??"";this.emit({type:"notice",level:"error",message:`The omp process for this session exited unexpectedly${b?`: ${b}`:"."}`}),(this.streaming||this.promptRunning)&&this.emit({type:"agent_end",isTerminal:!0,messages:[]}),this.destroy()}handleFrame(a){this.resetIdleTimer();let b=!1;switch(a.type){case"command_output":{let b=this.mcpListWaiter;if(b&&"string"==typeof a.text){clearTimeout(b.timer),this.mcpListWaiter=null,b.resolve(a.text),D();return}break}case"agent_start":this.streaming=!0,(0,i.mD)(),b=!0,this._sessionFile&&!(0,d.existsSync)(this._sessionFile)&&this.signalWhenSessionFileAppears();break;case"agent_end":!1!==a.isTerminal&&(this.streaming=!1,this.promptRunning=!1,(0,i.mD)());break;case"prompt_result":this.promptRunning=!1;break;case"auto_compaction_start":this.compacting=!0;break;case"auto_compaction_end":this.compacting=!1,u(a.result),(0,i.mD)();break;case"session_info_update":"string"==typeof a.title&&(this._sessionName=a.title),(0,i.mD)(),b=!0;break;case"response":if(!1===a.success&&"prompt"===a.command){this.promptRunning=!1,this.emit({type:"prompt_error",errorMessage:a.error??"Prompt failed"}),D();return}break;case"extension_ui_request":if(this.trackExtensionUiRequest(a))return void D();break;case"host_tool_call":{let b="string"==typeof a.id?a.id:"",c="string"==typeof a.toolName?a.toolName:"";if(b&&c&&this.hostToolNames.has(c)&&this.listeners.length>0){this.pendingHostTools.set(b,a),this.emit(a),D();return}this.rejectUnexpectedHostTool(a);return}case"host_tool_cancel":{let b="string"==typeof a.targetId?a.targetId:"";if(b&&this.pendingHostTools.delete(b)){this.emit(a),D();return}break}case"host_uri_request":{let b="string"==typeof a.id?a.id:"",c=("string"==typeof a.url?a.url:"").split(":")[0]??"",d="write"===a.operation?"write":"read",e=this.hostUriSchemes.get(c);if(b&&c&&e&&("write"!==d||e.writable)&&this.listeners.length>0){this.pendingHostUris.set(b,a),this.emit(a),D();return}this.proc.sendFrame({type:"host_uri_result",id:b,isError:!0,error:`URI scheme "${c}" is not registered by omp-web`});return}case"host_uri_cancel":{let b="string"==typeof a.targetId?a.targetId:"";if(b&&this.pendingHostUris.delete(b)){this.emit(a),D();return}}}this.emit(a),D({refreshSessionList:b})}forgetPendingUiRequest(a){this.pendingUiRequests.delete(a);let b=this.uiExpiryTimers.get(a);b&&(clearTimeout(b),this.uiExpiryTimers.delete(a))}clearPendingUiRequests(){for(let a of this.uiExpiryTimers.values())clearTimeout(a);this.uiExpiryTimers.clear(),this.pendingUiRequests.clear()}trackExtensionUiRequest(a){let b=a.method,c=a.id;if("cancel"===b)return this.forgetPendingUiRequest(a.targetId),!1;let d=!1;try{d=(0,h.r)().settings.tools?.approval?.extension==="allow"}catch{}if("confirm"===b&&"string"==typeof a.title&&/^allow tool\s*:/i.test(a.title)&&d)return this.forgetPendingUiRequest(c),this.proc.sendFrame({type:"extension_ui_response",id:c,confirmed:!0}),!0;if(l.has(b)){this.forgetPendingUiRequest(c);let b="number"==typeof a.timeout?a.timeout:void 0;if(b&&b>0){a.expiresAt=Date.now()+b;let d=setTimeout(()=>this.forgetPendingUiRequest(c),b);d.unref?.(),this.uiExpiryTimers.set(c,d)}return this.pendingUiRequests.set(c,a),!1}if("setStatus"===b){let b=a.statusKey,c=a.statusText;return void 0===c?this.extensionStatuses.delete(b):this.extensionStatuses.set(b,c),!1}if("setWidget"===b){let b=a.widgetKey,c=a.widgetLines;void 0===c?this.extensionWidgets.delete(b):this.extensionWidgets.set(b,{key:b,lines:c,placement:a.widgetPlacement??"aboveEditor"})}return!1}rejectUnexpectedHostTool(a){let b="string"==typeof a.id?a.id:"";if(!b)return;let c="string"==typeof a.toolName?a.toolName:"unknown";this.proc.sendFrame({type:"host_tool_result",id:b,isError:!0,result:{content:[{type:"text",text:`Host tool "${c}" is not available in omp-web. Use OMP's built-in tools within the selected workspace.`}]}}),this.emit({type:"notice",level:"warning",message:`Rejected unavailable host tool: ${c}`})}rejectPendingHostTools(a){for(let b of this.pendingHostTools.keys())this.proc.sendFrame({type:"host_tool_result",id:b,isError:!0,result:{content:[{type:"text",text:a}]}});this.pendingHostTools.clear()}rejectPendingHostUris(a){for(let b of this.pendingHostUris.keys())this.proc.sendFrame({type:"host_uri_result",id:b,isError:!0,error:a});this.pendingHostUris.clear()}emit(a){for(let b of this.listeners)try{b(a)}catch{}}signalWhenSessionFileAppears(){if(this.sessionFileSignalTimer)return;let a=0,b=()=>{if(this.sessionFileSignalTimer=null,this._alive&&this._sessionFile){if(!(0,d.existsSync)(this._sessionFile)){(a+=1)<40&&(this.sessionFileSignalTimer=setTimeout(b,250));return}(0,i.mD)(),D({refreshSessionList:!0})}};this.sessionFileSignalTimer=setTimeout(b,250)}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isRunning()?this.resetIdleTimer():this.destroy()},6e5)}onEvent(a){this.listeners.push(a);let b=Date.now();for(let[c,d]of this.pendingUiRequests){let e=d.expiresAt;if(void 0!==e&&e<=b){this.forgetPendingUiRequest(c);continue}a(d)}return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1),0===this.listeners.length&&(this.rejectPendingHostTools("The web UI disconnected while the agent was waiting for this host tool"),this.rejectPendingHostUris("The web UI disconnected while the agent was waiting for this URI request"))}}onDestroy(a){this.onDestroyCallback=a}onIdentityChange(a){this.onIdentityChangeCallback=a}async withFinalRunningNotification(a){try{return await a()}finally{D()}}async getMcpList(){let a,b;if(this.restarting)throw new k(j,"session_restarting");if(!this.isAlive())throw Error("Session is no longer running");if(this.isRunning())throw new k("Wait for the current run to finish","session_busy");if(this.mcpListWaiter)throw new k("MCP list is already loading","mcp_list_loading");this.promptRunning=!0,D();let c=new Promise((c,d)=>{a=c,b=d}),d={resolve:a,reject:b,timer:void 0};d.timer=setTimeout(()=>{this.mcpListWaiter===d&&(this.mcpListWaiter=null,b(new k("Timed out while loading MCP servers","mcp_list_timeout")))},15e3),d.timer.unref?.(),this.mcpListWaiter=d;try{return await this.proc.sendCommand({type:"prompt",message:"/mcp list"}),await c}catch(a){throw this.mcpListWaiter===d&&(clearTimeout(d.timer),this.mcpListWaiter=null,d.reject(a instanceof Error?a:Error(String(a)))),a}finally{this.mcpListWaiter===d&&(clearTimeout(d.timer),this.mcpListWaiter=null),this.promptRunning=!1,D()}}buildWebState(a){return this.streaming=a.isStreaming,this.compacting=a.isCompacting,this._sessionName=a.sessionName,a.sessionId&&(this._sessionId=a.sessionId,this._sessionFile=a.sessionFile??this._sessionFile),{sessionId:a.sessionId,sessionFile:a.sessionFile??"",sessionName:a.sessionName,isStreaming:a.isStreaming,isPromptRunning:this.promptRunning,isBashRunning:this.bashRunning,isCompacting:a.isCompacting,autoCompactionEnabled:a.autoCompactionEnabled,autoRetryEnabled:a.autoRetryEnabled,interruptMode:a.interruptMode,steeringMode:a.steeringMode,followUpMode:a.followUpMode,model:a.model?{id:a.model.id,provider:a.model.provider,name:a.model.name,reasoning:a.model.reasoning,thinking:a.model.thinking?{efforts:a.model.thinking.efforts}:void 0}:void 0,messageCount:a.messageCount,queuedMessageCount:a.queuedMessageCount,contextUsage:a.contextUsage??null,systemPrompt:a.systemPrompt?.join("\n\n")??"",thinkingLevel:a.thinkingLevel??"off",fastModeEnabled:a.fastModeEnabled??a.fastMode??this.fastModeEnabled,fastModeActive:a.fastModeActive,todoPhases:a.todoPhases??[],extensionStatuses:Array.from(this.extensionStatuses,([a,b])=>({key:a,text:b})),extensionWidgets:Array.from(this.extensionWidgets.values())}}async refreshIdentityAfterSessionChange(){let a=this._sessionId,b=await this.proc.sendCommand({type:"get_state"});return this.applyIdentity(b),a&&a!==this._sessionId&&this.onIdentityChangeCallback?.(a,this._sessionId),(0,i.mD)(),this._sessionId}async restart(){if(this.restarting)throw new k(j,"session_restarting");let a=this._sessionFile,b=!!a&&(0,d.existsSync)(a),c=this.proc;this.restarting=!0,this.unsubscribeFrames?.();try{if(await c.dispose(),!this._alive)return;this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.clearPendingUiRequests(),this.promptRunning=!1,this.bashRunning=!1,this.streaming=!1,this.compacting=!1;let d=new g.X({cwd:this.cwd,extraArgs:r(b?a:""),onExit:({stderrTail:a})=>{this.proc===d&&this.handleProcessExit(a)}});this.proc=d,this.unsubscribeFrames=d.onFrame(a=>this.handleFrame(a));try{let a=await d.waitReady(12e4);await d.negotiateProtocol(a),await d.sendCommand({type:"set_subagent_subscription",level:"events"}).catch(()=>{});let b=await d.sendCommand({type:"get_state"});this.applyIdentity(b)}catch(a){throw this.unsubscribeFrames?.(),this.unsubscribeFrames=null,d.dispose(),this.destroy(),a}}finally{this.restarting=!1}D()}async send(a){if(this.restarting)throw new k(j,"session_restarting");if(!this.isAlive())throw Error("Session is no longer running");this.resetIdleTimer();let b=a.type;if("prompt"===b||"steer"===b||"follow_up"===b){let b=function(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a){if(!b||"object"!=typeof b||"image"!==b.type)return"Each attachment must be an image";if(!function(a){if(!a||"object"!=typeof a||"string"!=typeof a.data||"string"!=typeof a.mimeType||!a.mimeType.startsWith("image/"))return!1;let b=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b;for(let b=0;b<c;b+=1){var d;if(!((d=a.charCodeAt(b))>=65&&d<=90||d>=97&&d<=122||d>=48&&d<=57||43===d||47===d))return null}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return a.length/4*3-b}(a.data);return null!==b&&b<=0xa00000}(b))return"Each image must be valid base64 image data of 10MB or smaller"}return null}(a.images);if(b)throw Error(b)}let c=n[b];if(c)throw new g.x(b,c,"unsupported");switch(b){case"prompt":{if(this.bashRunning)throw Error("Cannot send a prompt while a shell command is running");let b=a.streamingBehavior;b||(this.promptRunning=!0,D());try{let c=await this.proc.sendCommand({type:"prompt",message:a.message,...s(a.images)?{images:s(a.images)}:{},...b?{streamingBehavior:b}:{}});c?.agentInvoked!==!1||b||(this.promptRunning=!1,this.emit({type:"prompt_result",agentInvoked:!1}),D())}catch(a){throw this.promptRunning=!1,D(),a}return null}case"steer":case"follow_up":return await this.proc.sendCommand({type:b,message:a.message,...s(a.images)?{images:s(a.images)}:{}}),null;case"abort":return await this.withFinalRunningNotification(async()=>{await this.proc.sendCommand({type:"abort"}),this.promptRunning=!1}),null;case"get_state":{let a=await this.proc.sendCommand({type:"get_state"});return this.buildWebState(a)}case"set_model":{let{provider:b,modelId:c}=a,d=await this.proc.sendCommand({type:"set_model",provider:b,modelId:c});return(0,f.kn)(),(0,i.mD)(),{id:d.id,provider:d.provider}}case"set_fast_mode":{let b=!0===a.enabled,c=await this.proc.sendCommand({type:"set_fast_mode",enabled:b});return this.fastModeEnabled=c?.enabled??b,{enabled:this.fastModeEnabled,active:c?.active??!1}}case"fork":if(this.bashRunning)throw Error("Cannot fork while a shell command is running");if((await this.proc.sendCommand({type:"branch",entryId:a.entryId})).cancelled)return{cancelled:!0};return{cancelled:!1,newSessionId:await this.refreshIdentityAfterSessionChange()};case"new_session":case"switch_session":{let b=await this.proc.sendCommand(a);if(!b.cancelled)return{cancelled:!1,newSessionId:await this.refreshIdentityAfterSessionChange()};return b}case"compact":try{return await this.withFinalRunningNotification(async()=>{this.compacting=!0,D();try{let b=await this.proc.sendCommand({type:"compact",...a.customInstructions?{customInstructions:a.customInstructions}:{}});return u(b),b}finally{this.compacting=!1}})}finally{(0,i.mD)()}case"abort_compaction":return await this.withFinalRunningNotification(()=>this.proc.sendCommand({type:"abort"})),null;case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return await this.proc.sendCommand({type:"set_session_name",name:b}),this._sessionName=b,(0,i.mD)(),null}case"get_session_stats":return{...await this.proc.sendCommand({type:"get_session_stats"}),sessionName:this._sessionName};case"get_last_assistant_text":return{text:(await this.proc.sendCommand({type:"get_last_assistant_text"})).text??""};case"get_commands":return await this.proc.sendCommand({type:"get_available_commands"});case"reload":return await this.restart(),{success:!0};case"extension_ui_response":{let{id:b,...c}=a;return this.forgetPendingUiRequest(b),this.proc.sendFrame({type:"extension_ui_response",id:b,...c}),null}case"bash":if(!0===a.excludeFromContext)throw new k("omp cannot run a shell command with its output excluded from the model context (`!!`): the RPC bash command has no exclusion option, so the output would silently enter the context anyway. Run it with a single `!` to share the output with the model, or use a terminal outside omp web.","bash_exclude_unsupported");if(this.isRunning())throw Error("Cannot run a shell command while the session is busy");this.bashRunning=!0,D();try{return await this.proc.sendCommand({type:"bash",command:a.command})}finally{this.bashRunning=!1,(0,i.mD)(),D()}case"set_host_tools":{let b=(Array.isArray(a.tools)?a.tools:[]).filter(a=>"string"==typeof a.name&&a.name);return this.hostToolNames=new Set(b.map(a=>a.name)),await this.proc.sendCommand({type:"set_host_tools",tools:b}),null}case"host_tool_result":return"string"==typeof a.id&&this.pendingHostTools.delete(a.id),await this.proc.sendCommand(a),null;case"set_host_uri_schemes":{let b=Array.isArray(a.schemes)?a.schemes:[];for(let a of(this.hostUriSchemes=new Map,b))"string"==typeof a.scheme&&a.scheme&&this.hostUriSchemes.set(a.scheme,{writable:!0===a.writable});return await this.proc.sendCommand({type:"set_host_uri_schemes",schemes:b}),null}case"host_uri_result":return"string"==typeof a.id&&this.pendingHostUris.delete(a.id),await this.proc.sendCommand(a),null;default:if(m.has(b)){let c=await this.proc.sendCommand(a);return"set_thinking_level"===b&&(0,i.mD)(),c??null}throw Error(`Unsupported command: ${b}`)}}destroy(){this.destroyAndWait()}async destroyAndWait(){if(this.destroyPromise)return this.destroyPromise;if(!this._alive)return;this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.sessionFileSignalTimer&&(clearTimeout(this.sessionFileSignalTimer),this.sessionFileSignalTimer=null),this.unsubscribeFrames?.(),this.clearPendingUiRequests(),this.mcpListWaiter&&(clearTimeout(this.mcpListWaiter.timer),this.mcpListWaiter.reject(Error("Session was closed while loading MCP servers")),this.mcpListWaiter=null);let a=this.proc.dispose().catch(()=>{});this.destroyPromise=a,this.pendingHostTools.clear(),this.hostToolNames.clear(),this.pendingHostUris.clear(),this.hostUriSchemes.clear(),this.onDestroyCallback?.(),D(),await a}}function w(){if(!globalThis.__ompSessions){globalThis.__ompSessions=new Map;let a=()=>globalThis.__ompSessions?.forEach(a=>a.destroy());process.once("exit",a),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__ompSessions}function x(a){return w().get(a)}function y(){let a=new Set;for(let[b,c]of w())c.isRunning()&&a.add(c.sessionId||b);return[...a]}async function z(){let a=[...new Set(w().values())];return await Promise.all(a.map(a=>a.destroyAndWait())),a.length}function A(){return globalThis.__ompRunningListeners||(globalThis.__ompRunningListeners=new Set),globalThis.__ompRunningListeners}function B(a){let b=A();return b.add(a),()=>{b.delete(a)}}let C="";function D({refreshSessionList:a=!1}={}){let b=y(),c=JSON.stringify([...b].sort());if(c===C&&!a)return;C=c;let d={ids:b,refreshSessionList:a};for(let a of A())try{a(d)}catch{}}async function E(a,b,c,d,e=!1){let f=w(),h=(globalThis.__ompStartLocks||(globalThis.__ompStartLocks=new Map),globalThis.__ompStartLocks),i=f.get(a);if(i?.isAlive())return{session:i,realSessionId:a};i?.destroyPromise&&await i.destroyPromise;let j=h.get(a);if(j)return j;let k=(async()=>{let a={},h=new v(new g.X({cwd:c,extraArgs:r(b,d,e),onExit:({stderrTail:b})=>a.wrapper?.handleProcessExit(b)}),c);a.wrapper=h,h.start();try{await h.waitUntilReady()}catch(a){throw await h.destroyAndWait(),a}let i=h.sessionId;return h.onDestroy(()=>{f.get(h.sessionId)===h&&f.delete(h.sessionId),f.get(i)===h&&f.delete(i)}),h.onIdentityChange((a,b)=>{f.get(a)===h&&f.delete(a),f.set(b,h)}),f.set(i,h),{session:h,realSessionId:i}})().finally(()=>h.delete(a));return h.set(a,k),k}}};
1
+ "use strict";exports.id=6465,exports.ids=[6465],exports.modules={28967:(a,b,c)=>{function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){return b?{...a,modelError:b}:a}function g(a){return{...a,modelError:"Model list is temporarily unavailable. Check your configuration and try again."}}function h(a,b){var c,e,f;let g,h,i=d(),j=i.entries.get(a);if(j&&j.expiresAt>Date.now())return Promise.resolve(j.data);let k=i.inFlight.get(a)??(c=i,e=a,f=b,g=c.generation,h=Promise.resolve().then(f).then(a=>{if(c.generation===g&&c.inFlight.get(e)===h){for(c.entries.delete(e);c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(e,{data:a,expiresAt:Date.now()+6e4})}return a}).finally(()=>{c.inFlight.get(e)===h&&c.inFlight.delete(e)}),c.inFlight.set(e,h),h);return j?(k.catch(()=>{}),Promise.resolve(j.data)):k}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},86465:(a,b,c)=>{c.d(b,{OZ:()=>k,A4:()=>x,HG:()=>y,rb:()=>t,Te:()=>z,OF:()=>E,Fn:()=>B});var d=c(29021),e=c(21820),f=c(28967),g=c(13798),h=c(88501),i=c(78573);let j="This session is restarting — retry in a moment.";class k extends Error{constructor(a,b){super(a),this.name="WebRpcError",this.code=b}}let l=new Set(["select","confirm","input","editor","open_url"]),m=new Set(["abort","abort_and_prompt","set_thinking_level","cycle_thinking_level","cycle_model","get_available_models","set_auto_compaction","set_auto_retry","abort_retry","abort_bash","set_todos","set_steering_mode","set_follow_up_mode","set_interrupt_mode","get_branch_messages","get_messages","get_messages_page","export_html","handoff","get_subagents","get_subagent_messages","set_subagent_subscription","get_login_providers","login"]),n={navigate_tree:"Branch navigation is not supported over the omp RPC protocol",clear_queue:"Recalling queued messages is not supported over the omp RPC protocol",get_tools:"Per-session tool listing is not supported over the omp RPC protocol",set_tools:"Changing tools on a running session is not supported over the omp RPC protocol; tool presets apply to new sessions",extension_ui_input:"Extension custom UI is not supported over the omp RPC protocol"},o={find:"glob",search:"grep"},p=new Set(["ls"]),q=["bash","read","edit","write","grep","find","ls"].map(a=>a.toLowerCase()).sort().join(",");function r(a,b,c=!1){let d=[];if(a)d.push("--resume",a);else if(void 0!==b){let a=b.map(a=>a.toLowerCase()).sort().join(",");if(0===b.length)d.push("--no-tools");else if(a===q);else{let a=function(a){let b=[];for(let c of a){let a=c.toLowerCase();if(p.has(a))continue;let d=o[a]??a;b.includes(d)||b.push(d)}return b}(b);a.length>0&&d.push("--tools",a.join(","))}}return c&&!a&&d.push("--advisor"),d}function s(a){return a?.length?a:void 0}function t(a){if(a&&(0,d.existsSync)(a))return{cwd:a,fellBack:!1};try{let a=process.cwd();if(a&&(0,d.existsSync)(a))return{cwd:a,fellBack:!0}}catch{}return{cwd:(0,e.homedir)(),fellBack:!0}}function u(a){a&&"object"==typeof a&&void 0===a.estimatedTokensAfter&&(a.estimatedTokensAfter=Math.round((a.summary?.length??0)/4))}class v{constructor(a,b,c){this.listeners=[],this.pendingUiRequests=new Map,this.uiExpiryTimers=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.bashRunning=!1,this.streaming=!1,this.compacting=!1,this.fastModeEnabled=!1,this.idleTimer=null,this.onDestroyCallback=null,this.onIdentityChangeCallback=null,this.unsubscribeFrames=null,this.initPromise=null,this.restarting=!1,this.mcpListWaiter=null,this._alive=!0,this.hostToolNames=new Set,this.pendingHostTools=new Map,this.hostUriSchemes=new Map,this.pendingHostUris=new Map,this.destroyPromise=null,this._sessionId="",this._sessionFile="",this.sessionFileSignalTimer=null,this.proc=a,this.cwd=b,this.recordedCwd=c??null}get sessionId(){return this._sessionId}get sessionFile(){return this._sessionFile}isAlive(){return this._alive&&this.proc.isAlive}isRunning(){return this.isAlive()&&(this.promptRunning||this.streaming||this.compacting||this.bashRunning)}start(){this.unsubscribeFrames=this.proc.onFrame(a=>this.handleFrame(a)),this.resetIdleTimer(),D()}waitUntilReady(){return this.initPromise||(this.initPromise=this.initialize()),this.initPromise}async initialize(){let a=await this.proc.waitReady(12e4);await this.proc.negotiateProtocol(a),await this.proc.sendCommand({type:"set_subagent_subscription",level:"events"}).catch(()=>{});let b=await this.proc.sendCommand({type:"get_state"});this.applyIdentity(b),this.recordedCwd&&this.recordedCwd!==this.cwd&&this.emit({type:"notice",level:"warning",message:`This session's working directory no longer exists; the agent is running in ${this.cwd}.`})}applyIdentity(a){this._sessionId=a.sessionId,this._sessionFile=a.sessionFile??"",this._sessionName=a.sessionName,this.streaming=a.isStreaming,this.compacting=a.isCompacting,this.fastModeEnabled=a.fastModeEnabled??a.fastMode??this.fastModeEnabled,this._sessionFile&&(0,i.O8)(this._sessionId,this._sessionFile)}handleProcessExit(a){if(!this._alive||this.restarting)return;let b=a.trim().split("\n").pop()??"";this.emit({type:"notice",level:"error",message:`The omp process for this session exited unexpectedly${b?`: ${b}`:"."}`}),(this.streaming||this.promptRunning)&&this.emit({type:"agent_end",isTerminal:!0,messages:[]}),this.destroy()}handleFrame(a){this.resetIdleTimer();let b=!1;switch(a.type){case"command_output":{let b=this.mcpListWaiter;if(b&&"string"==typeof a.text){clearTimeout(b.timer),this.mcpListWaiter=null,b.resolve(a.text),D();return}break}case"agent_start":this.streaming=!0,(0,i.mD)(),b=!0,this._sessionFile&&!(0,d.existsSync)(this._sessionFile)&&this.signalWhenSessionFileAppears();break;case"agent_end":!1!==a.isTerminal&&(this.streaming=!1,this.promptRunning=!1,(0,i.mD)());break;case"prompt_result":this.promptRunning=!1;break;case"auto_compaction_start":this.compacting=!0;break;case"auto_compaction_end":this.compacting=!1,u(a.result),(0,i.mD)();break;case"session_info_update":"string"==typeof a.title&&(this._sessionName=a.title),(0,i.mD)(),b=!0;break;case"response":if(!1===a.success&&"prompt"===a.command){this.promptRunning=!1,this.emit({type:"prompt_error",errorMessage:a.error??"Prompt failed"}),D();return}break;case"extension_ui_request":if(this.trackExtensionUiRequest(a))return void D();break;case"host_tool_call":{let b="string"==typeof a.id?a.id:"",c="string"==typeof a.toolName?a.toolName:"";if(b&&c&&this.hostToolNames.has(c)&&this.listeners.length>0){this.pendingHostTools.set(b,a),this.emit(a),D();return}this.rejectUnexpectedHostTool(a);return}case"host_tool_cancel":{let b="string"==typeof a.targetId?a.targetId:"";if(b&&this.pendingHostTools.delete(b)){this.emit(a),D();return}break}case"host_uri_request":{let b="string"==typeof a.id?a.id:"",c=("string"==typeof a.url?a.url:"").split(":")[0]??"",d="write"===a.operation?"write":"read",e=this.hostUriSchemes.get(c);if(b&&c&&e&&("write"!==d||e.writable)&&this.listeners.length>0){this.pendingHostUris.set(b,a),this.emit(a),D();return}this.proc.sendFrame({type:"host_uri_result",id:b,isError:!0,error:`URI scheme "${c}" is not registered by omp-web`});return}case"host_uri_cancel":{let b="string"==typeof a.targetId?a.targetId:"";if(b&&this.pendingHostUris.delete(b)){this.emit(a),D();return}}}this.emit(a),D({refreshSessionList:b})}forgetPendingUiRequest(a){this.pendingUiRequests.delete(a);let b=this.uiExpiryTimers.get(a);b&&(clearTimeout(b),this.uiExpiryTimers.delete(a))}clearPendingUiRequests(){for(let a of this.uiExpiryTimers.values())clearTimeout(a);this.uiExpiryTimers.clear(),this.pendingUiRequests.clear()}trackExtensionUiRequest(a){let b=a.method,c=a.id;if("cancel"===b)return this.forgetPendingUiRequest(a.targetId),!1;let d=!1;try{d=(0,h.r)().settings.tools?.approval?.extension==="allow"}catch{}if("confirm"===b&&"string"==typeof a.title&&/^allow tool\s*:/i.test(a.title)&&d)return this.forgetPendingUiRequest(c),this.proc.sendFrame({type:"extension_ui_response",id:c,confirmed:!0}),!0;if(l.has(b)){this.forgetPendingUiRequest(c);let b="number"==typeof a.timeout?a.timeout:void 0;if(b&&b>0){a.expiresAt=Date.now()+b;let d=setTimeout(()=>this.forgetPendingUiRequest(c),b);d.unref?.(),this.uiExpiryTimers.set(c,d)}return this.pendingUiRequests.set(c,a),!1}if("setStatus"===b){let b=a.statusKey,c=a.statusText;return void 0===c?this.extensionStatuses.delete(b):this.extensionStatuses.set(b,c),!1}if("setWidget"===b){let b=a.widgetKey,c=a.widgetLines;void 0===c?this.extensionWidgets.delete(b):this.extensionWidgets.set(b,{key:b,lines:c,placement:a.widgetPlacement??"aboveEditor"})}return!1}rejectUnexpectedHostTool(a){let b="string"==typeof a.id?a.id:"";if(!b)return;let c="string"==typeof a.toolName?a.toolName:"unknown";this.proc.sendFrame({type:"host_tool_result",id:b,isError:!0,result:{content:[{type:"text",text:`Host tool "${c}" is not available in ompgui. Use OMP's built-in tools within the selected workspace.`}]}}),this.emit({type:"notice",level:"warning",message:`Rejected unavailable host tool: ${c}`})}rejectPendingHostTools(a){for(let b of this.pendingHostTools.keys())this.proc.sendFrame({type:"host_tool_result",id:b,isError:!0,result:{content:[{type:"text",text:a}]}});this.pendingHostTools.clear()}rejectPendingHostUris(a){for(let b of this.pendingHostUris.keys())this.proc.sendFrame({type:"host_uri_result",id:b,isError:!0,error:a});this.pendingHostUris.clear()}emit(a){for(let b of this.listeners)try{b(a)}catch{}}signalWhenSessionFileAppears(){if(this.sessionFileSignalTimer)return;let a=0,b=()=>{if(this.sessionFileSignalTimer=null,this._alive&&this._sessionFile){if(!(0,d.existsSync)(this._sessionFile)){(a+=1)<40&&(this.sessionFileSignalTimer=setTimeout(b,250));return}(0,i.mD)(),D({refreshSessionList:!0})}};this.sessionFileSignalTimer=setTimeout(b,250)}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isRunning()?this.resetIdleTimer():this.destroy()},6e5)}onEvent(a){this.listeners.push(a);let b=Date.now();for(let[c,d]of this.pendingUiRequests){let e=d.expiresAt;if(void 0!==e&&e<=b){this.forgetPendingUiRequest(c);continue}a(d)}return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1),0===this.listeners.length&&(this.rejectPendingHostTools("The web UI disconnected while the agent was waiting for this host tool"),this.rejectPendingHostUris("The web UI disconnected while the agent was waiting for this URI request"))}}onDestroy(a){this.onDestroyCallback=a}onIdentityChange(a){this.onIdentityChangeCallback=a}async withFinalRunningNotification(a){try{return await a()}finally{D()}}async getMcpList(){let a,b;if(this.restarting)throw new k(j,"session_restarting");if(!this.isAlive())throw Error("Session is no longer running");if(this.isRunning())throw new k("Wait for the current run to finish","session_busy");if(this.mcpListWaiter)throw new k("MCP list is already loading","mcp_list_loading");this.promptRunning=!0,D();let c=new Promise((c,d)=>{a=c,b=d}),d={resolve:a,reject:b,timer:void 0};d.timer=setTimeout(()=>{this.mcpListWaiter===d&&(this.mcpListWaiter=null,b(new k("Timed out while loading MCP servers","mcp_list_timeout")))},15e3),d.timer.unref?.(),this.mcpListWaiter=d;try{return await this.proc.sendCommand({type:"prompt",message:"/mcp list"}),await c}catch(a){throw this.mcpListWaiter===d&&(clearTimeout(d.timer),this.mcpListWaiter=null,d.reject(a instanceof Error?a:Error(String(a)))),a}finally{this.mcpListWaiter===d&&(clearTimeout(d.timer),this.mcpListWaiter=null),this.promptRunning=!1,D()}}buildWebState(a){return this.streaming=a.isStreaming,this.compacting=a.isCompacting,this._sessionName=a.sessionName,a.sessionId&&(this._sessionId=a.sessionId,this._sessionFile=a.sessionFile??this._sessionFile),{sessionId:a.sessionId,sessionFile:a.sessionFile??"",sessionName:a.sessionName,isStreaming:a.isStreaming,isPromptRunning:this.promptRunning,isBashRunning:this.bashRunning,isCompacting:a.isCompacting,autoCompactionEnabled:a.autoCompactionEnabled,autoRetryEnabled:a.autoRetryEnabled,interruptMode:a.interruptMode,steeringMode:a.steeringMode,followUpMode:a.followUpMode,model:a.model?{id:a.model.id,provider:a.model.provider,name:a.model.name,reasoning:a.model.reasoning,thinking:a.model.thinking?{efforts:a.model.thinking.efforts}:void 0}:void 0,messageCount:a.messageCount,queuedMessageCount:a.queuedMessageCount,contextUsage:a.contextUsage??null,systemPrompt:a.systemPrompt?.join("\n\n")??"",thinkingLevel:a.thinkingLevel??"off",fastModeEnabled:a.fastModeEnabled??a.fastMode??this.fastModeEnabled,fastModeActive:a.fastModeActive,todoPhases:a.todoPhases??[],extensionStatuses:Array.from(this.extensionStatuses,([a,b])=>({key:a,text:b})),extensionWidgets:Array.from(this.extensionWidgets.values())}}async refreshIdentityAfterSessionChange(){let a=this._sessionId,b=await this.proc.sendCommand({type:"get_state"});return this.applyIdentity(b),a&&a!==this._sessionId&&this.onIdentityChangeCallback?.(a,this._sessionId),(0,i.mD)(),this._sessionId}async restart(){if(this.restarting)throw new k(j,"session_restarting");let a=this._sessionFile,b=!!a&&(0,d.existsSync)(a),c=this.proc;this.restarting=!0,this.unsubscribeFrames?.();try{if(await c.dispose(),!this._alive)return;this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.clearPendingUiRequests(),this.promptRunning=!1,this.bashRunning=!1,this.streaming=!1,this.compacting=!1;let d=new g.X({cwd:this.cwd,extraArgs:r(b?a:""),onExit:({stderrTail:a})=>{this.proc===d&&this.handleProcessExit(a)}});this.proc=d,this.unsubscribeFrames=d.onFrame(a=>this.handleFrame(a));try{let a=await d.waitReady(12e4);await d.negotiateProtocol(a),await d.sendCommand({type:"set_subagent_subscription",level:"events"}).catch(()=>{});let b=await d.sendCommand({type:"get_state"});this.applyIdentity(b)}catch(a){throw this.unsubscribeFrames?.(),this.unsubscribeFrames=null,d.dispose(),this.destroy(),a}}finally{this.restarting=!1}D()}async send(a){if(this.restarting)throw new k(j,"session_restarting");if(!this.isAlive())throw Error("Session is no longer running");this.resetIdleTimer();let b=a.type;if("prompt"===b||"steer"===b||"follow_up"===b){let b=function(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a){if(!b||"object"!=typeof b||"image"!==b.type)return"Each attachment must be an image";if(!function(a){if(!a||"object"!=typeof a||"string"!=typeof a.data||"string"!=typeof a.mimeType||!a.mimeType.startsWith("image/"))return!1;let b=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b;for(let b=0;b<c;b+=1){var d;if(!((d=a.charCodeAt(b))>=65&&d<=90||d>=97&&d<=122||d>=48&&d<=57||43===d||47===d))return null}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return a.length/4*3-b}(a.data);return null!==b&&b<=0xa00000}(b))return"Each image must be valid base64 image data of 10MB or smaller"}return null}(a.images);if(b)throw Error(b)}let c=n[b];if(c)throw new g.x(b,c,"unsupported");switch(b){case"prompt":{if(this.bashRunning)throw Error("Cannot send a prompt while a shell command is running");let b=a.streamingBehavior;b||(this.promptRunning=!0,D());try{let c=await this.proc.sendCommand({type:"prompt",message:a.message,...s(a.images)?{images:s(a.images)}:{},...b?{streamingBehavior:b}:{}});c?.agentInvoked!==!1||b||(this.promptRunning=!1,this.emit({type:"prompt_result",agentInvoked:!1}),D())}catch(a){throw this.promptRunning=!1,D(),a}return null}case"steer":case"follow_up":return await this.proc.sendCommand({type:b,message:a.message,...s(a.images)?{images:s(a.images)}:{}}),null;case"abort":return await this.withFinalRunningNotification(async()=>{await this.proc.sendCommand({type:"abort"}),this.promptRunning=!1}),null;case"get_state":{let a=await this.proc.sendCommand({type:"get_state"});return this.buildWebState(a)}case"set_model":{let{provider:b,modelId:c}=a,d=await this.proc.sendCommand({type:"set_model",provider:b,modelId:c});return(0,f.kn)(),(0,i.mD)(),{id:d.id,provider:d.provider}}case"set_fast_mode":{let b=!0===a.enabled,c=await this.proc.sendCommand({type:"set_fast_mode",enabled:b});return this.fastModeEnabled=c?.enabled??b,{enabled:this.fastModeEnabled,active:c?.active??!1}}case"fork":if(this.bashRunning)throw Error("Cannot fork while a shell command is running");if((await this.proc.sendCommand({type:"branch",entryId:a.entryId})).cancelled)return{cancelled:!0};return{cancelled:!1,newSessionId:await this.refreshIdentityAfterSessionChange()};case"new_session":case"switch_session":{let b=await this.proc.sendCommand(a);if(!b.cancelled)return{cancelled:!1,newSessionId:await this.refreshIdentityAfterSessionChange()};return b}case"compact":try{return await this.withFinalRunningNotification(async()=>{this.compacting=!0,D();try{let b=await this.proc.sendCommand({type:"compact",...a.customInstructions?{customInstructions:a.customInstructions}:{}});return u(b),b}finally{this.compacting=!1}})}finally{(0,i.mD)()}case"abort_compaction":return await this.withFinalRunningNotification(()=>this.proc.sendCommand({type:"abort"})),null;case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return await this.proc.sendCommand({type:"set_session_name",name:b}),this._sessionName=b,(0,i.mD)(),null}case"get_session_stats":return{...await this.proc.sendCommand({type:"get_session_stats"}),sessionName:this._sessionName};case"get_last_assistant_text":return{text:(await this.proc.sendCommand({type:"get_last_assistant_text"})).text??""};case"get_commands":return await this.proc.sendCommand({type:"get_available_commands"});case"reload":return await this.restart(),{success:!0};case"extension_ui_response":{let{id:b,...c}=a;return this.forgetPendingUiRequest(b),this.proc.sendFrame({type:"extension_ui_response",id:b,...c}),null}case"bash":if(!0===a.excludeFromContext)throw new k("omp cannot run a shell command with its output excluded from the model context (`!!`): the RPC bash command has no exclusion option, so the output would silently enter the context anyway. Run it with a single `!` to share the output with the model, or use a terminal outside ompgui.","bash_exclude_unsupported");if(this.isRunning())throw Error("Cannot run a shell command while the session is busy");this.bashRunning=!0,D();try{return await this.proc.sendCommand({type:"bash",command:a.command})}finally{this.bashRunning=!1,(0,i.mD)(),D()}case"set_host_tools":{let b=(Array.isArray(a.tools)?a.tools:[]).filter(a=>"string"==typeof a.name&&a.name);return this.hostToolNames=new Set(b.map(a=>a.name)),await this.proc.sendCommand({type:"set_host_tools",tools:b}),null}case"host_tool_result":return"string"==typeof a.id&&this.pendingHostTools.delete(a.id),await this.proc.sendCommand(a),null;case"set_host_uri_schemes":{let b=Array.isArray(a.schemes)?a.schemes:[];for(let a of(this.hostUriSchemes=new Map,b))"string"==typeof a.scheme&&a.scheme&&this.hostUriSchemes.set(a.scheme,{writable:!0===a.writable});return await this.proc.sendCommand({type:"set_host_uri_schemes",schemes:b}),null}case"host_uri_result":return"string"==typeof a.id&&this.pendingHostUris.delete(a.id),await this.proc.sendCommand(a),null;default:if(m.has(b)){let c=await this.proc.sendCommand(a);return"set_thinking_level"===b&&(0,i.mD)(),c??null}throw Error(`Unsupported command: ${b}`)}}destroy(){this.destroyAndWait()}async destroyAndWait(){if(this.destroyPromise)return this.destroyPromise;if(!this._alive)return;this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.sessionFileSignalTimer&&(clearTimeout(this.sessionFileSignalTimer),this.sessionFileSignalTimer=null),this.unsubscribeFrames?.(),this.clearPendingUiRequests(),this.mcpListWaiter&&(clearTimeout(this.mcpListWaiter.timer),this.mcpListWaiter.reject(Error("Session was closed while loading MCP servers")),this.mcpListWaiter=null);let a=this.proc.dispose().catch(()=>{});this.destroyPromise=a,this.pendingHostTools.clear(),this.hostToolNames.clear(),this.pendingHostUris.clear(),this.hostUriSchemes.clear(),this.onDestroyCallback?.(),D(),await a}}function w(){if(!globalThis.__ompSessions){globalThis.__ompSessions=new Map;let a=()=>globalThis.__ompSessions?.forEach(a=>a.destroy());process.once("exit",a),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__ompSessions}function x(a){return w().get(a)}function y(){let a=new Set;for(let[b,c]of w())c.isRunning()&&a.add(c.sessionId||b);return[...a]}async function z(){let a=[...new Set(w().values())];return await Promise.all(a.map(a=>a.destroyAndWait())),a.length}function A(){return globalThis.__ompRunningListeners||(globalThis.__ompRunningListeners=new Set),globalThis.__ompRunningListeners}function B(a){let b=A();return b.add(a),()=>{b.delete(a)}}let C="";function D({refreshSessionList:a=!1}={}){let b=y(),c=JSON.stringify([...b].sort());if(c===C&&!a)return;C=c;let d={ids:b,refreshSessionList:a};for(let a of A())try{a(d)}catch{}}async function E(a,b,c,d,e=!1,f){let h=w(),i=(globalThis.__ompStartLocks||(globalThis.__ompStartLocks=new Map),globalThis.__ompStartLocks),j=h.get(a);if(j?.isAlive())return{session:j,realSessionId:a};j?.destroyPromise&&await j.destroyPromise;let k=i.get(a);if(k)return k;let l=(async()=>{let a={},i=new v(new g.X({cwd:c,extraArgs:r(b,d,e),onExit:({stderrTail:b})=>a.wrapper?.handleProcessExit(b)}),c,f);a.wrapper=i,i.start();try{await i.waitUntilReady()}catch(a){throw await i.destroyAndWait(),a}let j=i.sessionId;return i.onDestroy(()=>{h.get(i.sessionId)===i&&h.delete(i.sessionId),h.get(j)===i&&h.delete(j)}),i.onIdentityChange((a,b)=>{h.get(a)===i&&h.delete(a),h.set(b,i)}),h.set(j,i),{session:i,realSessionId:j}})().finally(()=>i.delete(a));return i.set(a,l),l}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=7834,exports.ids=[1671,7834],exports.modules={51671:(a,b,c)=>{c.d(b,{getOmpVersion:()=>n,resolveOmpBin:()=>m});var d=c(79646),e=c(29021),f=c(21820),g=c(33873);let h=null,i=0,j=null,k=0,l="win32"===process.platform?"omp.exe":"omp";function m(){if(h)return h;if(Date.now()-i<3e4)return null;let a=function(){let a=process.env.OMP_WEB_OMP_BIN;if(a)return(0,e.existsSync)(a)?a:null;for(let a of(process.env.PATH??"").split(g.delimiter)){if(!a)continue;let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}for(let a of["/opt/homebrew/bin","/usr/local/bin",(0,g.join)((0,f.homedir)(),".bun","bin"),(0,g.join)((0,f.homedir)(),".local","bin")]){let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}return null}();return a?(h=a,i=0,a):(i=Date.now(),null)}async function n(){if(j)return j;if(Date.now()-k<3e4)return null;let a=m();if(!a)return k=Date.now(),null;try{let b=(await new Promise((b,c)=>{(0,d.execFile)(a,["--version"],{timeout:1e4,windowsHide:!0},(a,d)=>{a?c(a):b(d)})})).trim();if(b)return j=b,k=0,b}catch{}return k=Date.now(),null}},67834:(a,b,c)=>{c.d(b,{runUtilityCommand:()=>p});var d=c(21820),e=c(79646),f=c(4984),g=c(51671);function h(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function i(a){return"number"==typeof a&&Number.isSafeInteger(a)}function j(a){return Buffer.byteLength(a,"utf8")+1}class k{push(a){if(!h(a)||"rpc_chunk"!==a.type){if(this.pending)throw Error("RPC chunk sequence interrupted");if(!h(a)||"string"!=typeof a.type)throw Error("RPC frame must be an object");return a}let{chunkId:b,index:c,count:d,byteLength:e}=a;if("string"!=typeof b||0===b.length||b.length>128||!i(c)||!i(d)||!i(e)||c<0||d<2||d>Math.ceil(256)||c>=d||e<1048576||e>0x4000000)throw Error("invalid RPC chunk metadata");let f=function(a){if("string"!=typeof a||0===a.length||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))throw Error("invalid RPC chunk data");let b=Buffer.from(a,"base64");if(b.toString("base64")!==a)throw Error("invalid RPC chunk data");return b}(a.data);if(f.byteLength>262144)throw Error("RPC chunk payload exceeds the transport limit");if(!this.pending){if(0!==c)throw Error("RPC chunk sequence must start at index 0");this.pending={chunkId:b,count:d,byteLength:e,nextIndex:0,chunks:[],receivedBytes:0}}let g=this.pending;if(g.chunkId!==b||g.count!==d||g.byteLength!==e||g.nextIndex!==c)throw Error("RPC chunk sequence mismatch");if(g.chunks.push(f),g.receivedBytes+=f.byteLength,g.nextIndex++,g.receivedBytes>g.byteLength)throw Error("RPC chunk sequence exceeds declared length");if(g.nextIndex<g.count)return;if(g.receivedBytes!==g.byteLength)throw Error("RPC chunk sequence length mismatch");this.pending=void 0;let j=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.concat(g.chunks)));if(!h(j)||"string"!=typeof j.type)throw Error("RPC frame must be an object");return j}}class l extends Error{constructor(a,b,c){super(b),this.name="RpcCommandError",this.command=a,this.code=c}}class m{constructor(a){let b,c;this.pending=new Map,this.frameListeners=new Set,this.nextId=1,this.stderrTail="",this.exited=!1,this.exitInfo=null,this.protocolVersion=1,this.nextChunkId=1,this.writeQueue=Promise.resolve();const d=a.dependencies?.resolveOmpBin??g.resolveOmpBin;this.spawnProcess=a.dependencies?.spawn??e.spawn;const h=d();if(!h)throw Error("omp binary not found. Install oh-my-pi or set OMP_WEB_OMP_BIN.");this.cwd=a.cwd,a.onFrame&&this.frameListeners.add(a.onFrame);const i=["--mode","rpc-ui","--cwd",a.cwd,...a.extraArgs??[]];this.child=this.spawnProcess(h,i,{cwd:a.cwd,env:function(a,b=process.platform){let c={...a};for(let a of Object.keys(c))(function(a,b){let c="win32"===b?a.toUpperCase():a;return"PORT"===c||"NODE_ENV"===c||c.startsWith("NEXT_")})(a,b)&&delete c[a];return c}({...process.env,...a.env}),stdio:["pipe","pipe","pipe"],windowsHide:!0,detached:"win32"!==process.platform}),this.readyPromise=new Promise((a,d)=>{b=a,c=d}),this.readyPromise.catch(()=>{});const j=new k;(0,f.createInterface)({input:this.child.stdout}).on("line",a=>{let c,d,e=a.trim();if(e){try{c=JSON.parse(e)}catch{return}try{if(c&&"object"==typeof c&&"rpc_chunk"===c.type&&2!==this.protocolVersion)throw Error("RPC chunk received before protocol negotiation");let a=j.push(c);if(!a)return;d=a}catch(a){this.stderrTail=(this.stderrTail+`
1
+ "use strict";exports.id=7834,exports.ids=[1671,7834],exports.modules={51671:(a,b,c)=>{c.d(b,{getOmpVersion:()=>n,resolveOmpBin:()=>m});var d=c(79646),e=c(29021),f=c(21820),g=c(33873);let h=null,i=0,j=null,k=0,l="win32"===process.platform?"omp.exe":"omp";function m(){if(h)return h;if(Date.now()-i<3e4)return null;let a=function(){let a=process.env.OMPGUI_OMP_BIN??process.env.OMP_WEB_OMP_BIN;if(a)return(0,e.existsSync)(a)?a:null;for(let a of(process.env.PATH??"").split(g.delimiter)){if(!a)continue;let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}for(let a of["/opt/homebrew/bin","/usr/local/bin",(0,g.join)((0,f.homedir)(),".bun","bin"),(0,g.join)((0,f.homedir)(),".local","bin")]){let b=(0,g.join)(a,l);if((0,e.existsSync)(b))return b}return null}();return a?(h=a,i=0,a):(i=Date.now(),null)}async function n(){if(j)return j;if(Date.now()-k<3e4)return null;let a=m();if(!a)return k=Date.now(),null;try{let b=(await new Promise((b,c)=>{(0,d.execFile)(a,["--version"],{timeout:1e4,windowsHide:!0},(a,d)=>{a?c(a):b(d)})})).trim();if(b)return j=b,k=0,b}catch{}return k=Date.now(),null}},67834:(a,b,c)=>{c.d(b,{runUtilityCommand:()=>p});var d=c(21820),e=c(79646),f=c(4984),g=c(51671);function h(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function i(a){return"number"==typeof a&&Number.isSafeInteger(a)}function j(a){return Buffer.byteLength(a,"utf8")+1}class k{push(a){if(!h(a)||"rpc_chunk"!==a.type){if(this.pending)throw Error("RPC chunk sequence interrupted");if(!h(a)||"string"!=typeof a.type)throw Error("RPC frame must be an object");return a}let{chunkId:b,index:c,count:d,byteLength:e}=a;if("string"!=typeof b||0===b.length||b.length>128||!i(c)||!i(d)||!i(e)||c<0||d<2||d>Math.ceil(256)||c>=d||e<1048576||e>0x4000000)throw Error("invalid RPC chunk metadata");let f=function(a){if("string"!=typeof a||0===a.length||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))throw Error("invalid RPC chunk data");let b=Buffer.from(a,"base64");if(b.toString("base64")!==a)throw Error("invalid RPC chunk data");return b}(a.data);if(f.byteLength>262144)throw Error("RPC chunk payload exceeds the transport limit");if(!this.pending){if(0!==c)throw Error("RPC chunk sequence must start at index 0");this.pending={chunkId:b,count:d,byteLength:e,nextIndex:0,chunks:[],receivedBytes:0}}let g=this.pending;if(g.chunkId!==b||g.count!==d||g.byteLength!==e||g.nextIndex!==c)throw Error("RPC chunk sequence mismatch");if(g.chunks.push(f),g.receivedBytes+=f.byteLength,g.nextIndex++,g.receivedBytes>g.byteLength)throw Error("RPC chunk sequence exceeds declared length");if(g.nextIndex<g.count)return;if(g.receivedBytes!==g.byteLength)throw Error("RPC chunk sequence length mismatch");this.pending=void 0;let j=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Buffer.concat(g.chunks)));if(!h(j)||"string"!=typeof j.type)throw Error("RPC frame must be an object");return j}}class l extends Error{constructor(a,b,c){super(b),this.name="RpcCommandError",this.command=a,this.code=c}}class m{constructor(a){let b,c;this.pending=new Map,this.frameListeners=new Set,this.nextId=1,this.stderrTail="",this.exited=!1,this.exitInfo=null,this.protocolVersion=1,this.nextChunkId=1,this.writeQueue=Promise.resolve();const d=a.dependencies?.resolveOmpBin??g.resolveOmpBin;this.spawnProcess=a.dependencies?.spawn??e.spawn;const h=d();if(!h)throw Error("omp binary not found. Install oh-my-pi or set OMP_WEB_OMP_BIN.");this.cwd=a.cwd,a.onFrame&&this.frameListeners.add(a.onFrame);const i=["--mode","rpc-ui","--cwd",a.cwd,...a.extraArgs??[]];this.child=this.spawnProcess(h,i,{cwd:a.cwd,env:function(a,b=process.platform){let c={...a};for(let a of Object.keys(c))(function(a,b){let c="win32"===b?a.toUpperCase():a;return"PORT"===c||"NODE_ENV"===c||c.startsWith("NEXT_")})(a,b)&&delete c[a];return c}({...process.env,...a.env}),stdio:["pipe","pipe","pipe"],windowsHide:!0,detached:"win32"!==process.platform}),this.readyPromise=new Promise((a,d)=>{b=a,c=d}),this.readyPromise.catch(()=>{});const j=new k;(0,f.createInterface)({input:this.child.stdout}).on("line",a=>{let c,d,e=a.trim();if(e){try{c=JSON.parse(e)}catch{return}try{if(c&&"object"==typeof c&&"rpc_chunk"===c.type&&2!==this.protocolVersion)throw Error("RPC chunk received before protocol negotiation");let a=j.push(c);if(!a)return;d=a}catch(a){this.stderrTail=(this.stderrTail+`
2
2
  RPC protocol error: ${a instanceof Error?a.message:String(a)}`).slice(-8192),this.dispose(0);return}if("ready"===d.type)return void b(d);if("response"===d.type)return void this.handleResponse(d);for(let a of this.frameListeners)try{a(d)}catch{}}}),this.child.stderr.on("data",a=>{this.stderrTail=(this.stderrTail+a.toString("utf8")).slice(-8192)});const l=(b,d)=>{if(this.exited)return;this.exited=!0,this.exitInfo={code:b,signal:d};let e=Error(`omp exited (code ${b??"null"}, signal ${d??"none"})${this.stderrTail?`: ${this.stderrTail.slice(-500)}`:""}`);for(let[,a]of(c(e),this.pending))a.timer&&clearTimeout(a.timer),a.reject(e);this.pending.clear(),a.onExit?.({code:b,signal:d,stderrTail:this.stderrTail})};this.child.on("exit",l),this.child.on("error",a=>{this.stderrTail=(this.stderrTail+`
3
3
  spawn error: ${a.message}`).slice(-8192),l(null,null)})}get isAlive(){return!this.exited}get exitDetails(){return this.exitInfo?{...this.exitInfo,stderrTail:this.stderrTail}:null}waitReady(a=6e4){let b=new Promise((b,c)=>{let d=setTimeout(()=>c(Error(`omp RPC ready timeout after ${a}ms`)),a);d.unref?.(),this.readyPromise.finally(()=>clearTimeout(d)).catch(()=>{})});return Promise.race([this.readyPromise,b])}async negotiateProtocol(a){if(!(Array.isArray(a.supportedProtocolVersions)?a.supportedProtocolVersions:[]).includes(2))return this.protocolVersion;let b=await this.sendCommand({type:"negotiate_protocol",protocolVersion:2});if(b?.protocolVersion!==2)throw Error("OMP rejected RPC protocol v2 negotiation");return this.protocolVersion=2,this.protocolVersion}onFrame(a){return this.frameListeners.add(a),()=>this.frameListeners.delete(a)}sendCommand(a,b){if(this.exited)return Promise.reject(Error("omp RPC process has exited"));let c=`w${this.nextId++}`;return new Promise((d,e)=>{let f={command:a.type,resolve:d,reject:e};b&&b>0&&(f.timer=setTimeout(()=>{this.pending.get(c)===f&&(this.pending.delete(c),e(Error(`RPC command ${a.type} timed out after ${b}ms`)))},b),f.timer.unref?.()),this.pending.set(c,f),this.writeFrame({...a,id:c},a=>{if(a){let b=this.pending.get(c);b&&(this.pending.delete(c),b.timer&&clearTimeout(b.timer),e(a))}})})}sendFrame(a){this.exited||this.writeFrame(a,()=>{})}writeFrame(a,b){let c;try{c=function(a,b,c){let d=JSON.stringify(a);if(1048576>=j(d))return[`${d}
4
4
  `];if(1===b)throw Error("RPC frame exceeds the v1 transport limit");let e=Buffer.from(d,"utf8");if(e.byteLength>0x4000000)throw Error("RPC frame exceeds the v2 reassembly limit");let f=Math.ceil(e.byteLength/262144),g=[];for(let a=0;a<f;a++){let b=JSON.stringify({type:"rpc_chunk",chunkId:c,index:a,count:f,byteLength:e.byteLength,data:e.subarray(262144*a,(a+1)*262144).toString("base64")});if(j(b)>1048576)throw Error("RPC chunk exceeds the transport limit");g.push(`${b}
@@ -1 +1 @@
1
- "use strict";exports.id=8501,exports.ids=[8501],exports.modules={88501:(a,b,c)=>{c.d(b,{W:()=>y,r:()=>x});var d=c(29021),e=c(33873),f=c(63294),g=c(85887),h=c(20565);let i=new Set(["auto","minimal","low","medium","high","xhigh","max"]),j=new Set(["low","medium","high"]),k=new Set(["default","friendly","pragmatic","none"]),l=new Set(["off","1","3","5"]),m=new Set(["always-ask","write","yolo"]),n=new Set(["allow","prompt","deny"]),o=new Set(["cooldown-expiry","never"]),p=new Set(["snapcompact","handoff","context-full","shake","off"]),q=new Set(["off","local","mnemopi","hindsight"]),r=new Set(["global","per-project","per-project-tagged"]);function s(a){return Array.isArray(a)&&a.every(a=>"string"==typeof a)?a:void 0}function t(a){if(!(0,h.u4)(a))return;let b={};for(let[c,d]of Object.entries(a))("string"==typeof d||s(d))&&(b[c]=d);return b}function u(a){if(!(0,h.u4)(a))return;let b={};for(let[c,d]of Object.entries(a))("boolean"==typeof d||"string"==typeof d)&&(b[c]=d);return b}function v(a,b){if(void 0!==a&&!(0,h.u4)(a))throw Error(`${b} must be an object`)}function w(){let a=(0,g.pA)(),b=(0,f.Tp)((0,d.existsSync)(a)?(0,d.readFileSync)(a,"utf8"):"");if(b.errors.length>0)throw Error(`${a} is not valid YAML: ${b.errors[0].message}`);return{path:a,doc:b}}function x(){let{path:a,doc:b}=w(),c=b.toJS();if(!(0,h.u4)(c))return{path:a,settings:{}};let d=(0,h.u4)(c.advisor)?c.advisor:{},e=(0,h.u4)(c.tools)?c.tools:{},f=(0,h.u4)(e.approval)?e.approval:{},g=(0,h.u4)(c.retry)?c.retry:{},v=(0,h.u4)(g.fallbackChains)?Object.fromEntries(Object.entries(g.fallbackChains).filter(a=>"string"==typeof a[0]&&void 0!==s(a[1]))):{},x=(0,h.u4)(c.compaction)?c.compaction:{},y=(0,h.u4)(c.memory)?c.memory:{},z=(0,h.u4)(c.autolearn)?c.autolearn:{},A=(0,h.u4)(c.mnemopi)?c.mnemopi:{},B=(0,h.u4)(c.mcp)?c.mcp:{},C=(0,h.u4)(c.task)?c.task:{},D=[c.enabledModels,c.disabledProviders,c.modelProviderOrder].some(a=>Array.isArray(a)&&!a.every(a=>"string"==typeof a));return{path:a,settings:{...i.has(c.defaultThinkingLevel)?{defaultThinkingLevel:c.defaultThinkingLevel}:{},..."boolean"==typeof c.hideThinkingBlock?{hideThinkingBlock:c.hideThinkingBlock}:{},..."boolean"==typeof c.externalThinking?{externalThinking:c.externalThinking}:{},...j.has(c.textVerbosity)?{textVerbosity:c.textVerbosity}:{},...k.has(c.personality)?{personality:c.personality}:{},...Object.keys(d).length?{advisor:{..."boolean"==typeof d.enabled?{enabled:d.enabled}:{},..."boolean"==typeof d.subagents?{subagents:d.subagents}:{},...l.has(d.syncBacklog)?{syncBacklog:d.syncBacklog}:{},..."number"==typeof d.immuneTurns&&Number.isInteger(d.immuneTurns)?{immuneTurns:d.immuneTurns}:{}}}:{},...Object.keys(e).length?{tools:{...m.has(e.approvalMode)?{approvalMode:e.approvalMode}:{},...n.has(f.bash)||"allow"===f.extension||"prompt"===f.extension?{approval:{...n.has(f.bash)?{bash:f.bash}:{},..."allow"===f.extension||"prompt"===f.extension?{extension:f.extension}:{}}}:{}}}:{},...s(c.enabledModels)?{enabledModels:s(c.enabledModels)}:{},...s(c.disabledProviders)?{disabledProviders:s(c.disabledProviders)}:{},...s(c.modelProviderOrder)?{modelProviderOrder:s(c.modelProviderOrder)}:{},...D?{registryHasScopedEntries:!0}:{},...Object.keys(g).length?{retry:{..."boolean"==typeof g.enabled?{enabled:g.enabled}:{},..."number"==typeof g.maxRetries&&Number.isInteger(g.maxRetries)?{maxRetries:g.maxRetries}:{},..."boolean"==typeof g.modelFallback?{modelFallback:g.modelFallback}:{},...o.has(g.fallbackRevertPolicy)?{fallbackRevertPolicy:g.fallbackRevertPolicy}:{},...Object.keys(v).length?{fallbackChains:v}:{}}}:{},...Object.keys(x).length?{compaction:{..."boolean"==typeof x.enabled?{enabled:x.enabled}:{},..."boolean"==typeof x.midTurnEnabled?{midTurnEnabled:x.midTurnEnabled}:{},...p.has(x.strategy)?{strategy:x.strategy}:{},..."boolean"==typeof x.autoContinue?{autoContinue:x.autoContinue}:{},..."boolean"==typeof x.remoteEnabled?{remoteEnabled:x.remoteEnabled}:{},..."number"==typeof x.keepRecentTokens&&Number.isInteger(x.keepRecentTokens)?{keepRecentTokens:x.keepRecentTokens}:{}}}:{},...Object.keys(y).length?{memory:{...q.has(y.backend)?{backend:y.backend}:{}}}:{},...Object.keys(z).length?{autolearn:{..."boolean"==typeof z.enabled?{enabled:z.enabled}:{},..."boolean"==typeof z.autoContinue?{autoContinue:z.autoContinue}:{},..."number"==typeof z.minToolCalls&&Number.isInteger(z.minToolCalls)?{minToolCalls:z.minToolCalls}:{}}}:{},...Object.keys(A).length?{mnemopi:{...r.has(A.scoping)?{scoping:A.scoping}:{},..."boolean"==typeof A.autoRecall?{autoRecall:A.autoRecall}:{},..."boolean"==typeof A.autoRetain?{autoRetain:A.autoRetain}:{},..."boolean"==typeof A.noEmbeddings?{noEmbeddings:A.noEmbeddings}:{}}}:{},...Object.keys(B).length?{mcp:{..."boolean"==typeof B.enableProjectConfig?{enableProjectConfig:B.enableProjectConfig}:{},..."boolean"==typeof B.renderMarkdownResults?{renderMarkdownResults:B.renderMarkdownResults}:{},..."boolean"==typeof B.notifications?{notifications:B.notifications}:{},..."number"==typeof B.notificationDebounceMs&&Number.isInteger(B.notificationDebounceMs)?{notificationDebounceMs:B.notificationDebounceMs}:{}}}:{},...Object.keys(C).length?{task:{..."boolean"==typeof C.prewalk?{prewalk:C.prewalk}:{},...t(C.agentModelOverrides)?{agentModelOverrides:t(C.agentModelOverrides)}:{},...u(C.agentPrewalk)?{agentPrewalk:u(C.agentPrewalk)}:{},...u(C.agentAdvisor)?{agentAdvisor:u(C.agentAdvisor)}:{},...s(C.disabledAgents)?{disabledAgents:s(C.disabledAgents)}:{}}}:{}}}}function y(a){if(!(0,h.u4)(a))throw Error("Settings must be an object");for(let[b,c]of(v(a.advisor,"advisor"),v(a.tools,"tools"),v(a.tools?.approval,"tools.approval"),v(a.retry,"retry"),v(a.compaction,"compaction"),v(a.memory,"memory"),v(a.autolearn,"autolearn"),v(a.mnemopi,"mnemopi"),v(a.mcp,"mcp"),v(a.task,"task"),Object.entries({hideThinkingBlock:a.hideThinkingBlock,externalThinking:a.externalThinking,"advisor.enabled":a.advisor?.enabled,"advisor.subagents":a.advisor?.subagents,"retry.enabled":a.retry?.enabled,"retry.modelFallback":a.retry?.modelFallback,"compaction.enabled":a.compaction?.enabled,"compaction.midTurnEnabled":a.compaction?.midTurnEnabled,"compaction.autoContinue":a.compaction?.autoContinue,"compaction.remoteEnabled":a.compaction?.remoteEnabled,"autolearn.enabled":a.autolearn?.enabled,"autolearn.autoContinue":a.autolearn?.autoContinue,"mnemopi.autoRecall":a.mnemopi?.autoRecall,"mnemopi.autoRetain":a.mnemopi?.autoRetain,"mnemopi.noEmbeddings":a.mnemopi?.noEmbeddings,"mcp.enableProjectConfig":a.mcp?.enableProjectConfig,"mcp.renderMarkdownResults":a.mcp?.renderMarkdownResults,"mcp.notifications":a.mcp?.notifications,"task.prewalk":a.task?.prewalk})))if(void 0!==c&&"boolean"!=typeof c)throw Error(`${b} must be a boolean`);for(let[b,c]of Object.entries(a.task?.agentModelOverrides??{}))if("string"!=typeof c&&!s(c))throw Error(`task.agentModelOverrides.${b} must be a string or string array`);for(let[b,c]of[["agentPrewalk",a.task?.agentPrewalk],["agentAdvisor",a.task?.agentAdvisor]])for(let[a,d]of Object.entries(c??{}))if("boolean"!=typeof d&&"string"!=typeof d)throw Error(`task.${b}.${a} must be a boolean or string`);if(a.task?.disabledAgents!==void 0&&(!s(a.task.disabledAgents)||a.task.disabledAgents.some(a=>!a.trim())))throw Error("task.disabledAgents must contain non-empty strings");if(void 0!==a.defaultThinkingLevel&&!i.has(a.defaultThinkingLevel))throw Error("Invalid default thinking level");if(void 0!==a.textVerbosity&&!j.has(a.textVerbosity))throw Error("Invalid text verbosity");if(void 0!==a.personality&&!k.has(a.personality))throw Error("Invalid personality");if(a.advisor?.syncBacklog!==void 0&&!l.has(a.advisor.syncBacklog))throw Error("Invalid advisor sync backlog");if(a.advisor?.immuneTurns!==void 0&&(!Number.isInteger(a.advisor.immuneTurns)||a.advisor.immuneTurns<0||a.advisor.immuneTurns>20))throw Error("Advisor immune turns must be an integer between 0 and 20");if(a.tools?.approvalMode!==void 0&&!m.has(a.tools.approvalMode))throw Error("Invalid approval mode");if(a.tools?.approval?.bash!==void 0&&!n.has(a.tools.approval.bash))throw Error("Invalid Bash approval policy");if(a.tools?.approval?.extension!==void 0&&"allow"!==a.tools.approval.extension&&"prompt"!==a.tools.approval.extension)throw Error("Invalid extension tool approval policy");if(a.retry?.maxRetries!==void 0&&(!Number.isInteger(a.retry.maxRetries)||a.retry.maxRetries<0||a.retry.maxRetries>20))throw Error("Retry attempts must be an integer between 0 and 20");if(a.retry?.fallbackRevertPolicy!==void 0&&!o.has(a.retry.fallbackRevertPolicy))throw Error("Invalid fallback revert policy");if(a.retry?.fallbackChains!==void 0){for(let[b,c]of Object.entries(a.retry.fallbackChains))if(!b.trim()||!Array.isArray(c)||c.some(a=>"string"!=typeof a||!a.trim()))throw Error("Fallback chains require non-empty role and model selectors")}if(a.compaction?.strategy!==void 0&&!p.has(a.compaction.strategy))throw Error("Invalid compaction strategy");if(a.compaction?.keepRecentTokens!==void 0&&(!Number.isInteger(a.compaction.keepRecentTokens)||a.compaction.keepRecentTokens<1e3||a.compaction.keepRecentTokens>1e6))throw Error("Compaction retained tokens must be an integer between 1,000 and 1,000,000");if(a.memory?.backend!==void 0&&!q.has(a.memory.backend))throw Error("Invalid memory backend");if(a.autolearn?.minToolCalls!==void 0&&(!Number.isInteger(a.autolearn.minToolCalls)||a.autolearn.minToolCalls<0||a.autolearn.minToolCalls>100))throw Error("Auto-learn minimum tool calls must be an integer between 0 and 100");if(a.mnemopi?.scoping!==void 0&&!r.has(a.mnemopi.scoping))throw Error("Invalid Mnemopi memory scope");if(a.mcp?.notificationDebounceMs!==void 0&&(!Number.isInteger(a.mcp.notificationDebounceMs)||a.mcp.notificationDebounceMs<0||a.mcp.notificationDebounceMs>6e4))throw Error("MCP notification debounce must be an integer between 0 and 60,000");for(let[b,c]of Object.entries({enabledModels:a.enabledModels,disabledProviders:a.disabledProviders,modelProviderOrder:a.modelProviderOrder}))if(void 0!==c&&(!Array.isArray(c)||c.some(a=>"string"!=typeof a||!a.trim())))throw Error(`${b} must contain non-empty strings`);let{path:b,doc:c}=w();if((0,d.mkdirSync)((0,e.dirname)(b),{recursive:!0}),null===c.contents){let c=`${b}.tmp-${process.pid}-${Date.now()}`;try{(0,d.writeFileSync)(c,(0,f.As)(a),"utf8"),(0,d.renameSync)(c,b)}catch(a){try{(0,d.existsSync)(c)&&(0,d.unlinkSync)(c)}catch{}throw a}return}if(!(0,f.jh)(c.contents))throw Error(`${b} must contain a YAML mapping`);for(let[b,d]of(void 0!==a.defaultThinkingLevel&&c.set("defaultThinkingLevel",a.defaultThinkingLevel),void 0!==a.hideThinkingBlock&&c.set("hideThinkingBlock",a.hideThinkingBlock),void 0!==a.externalThinking&&c.set("externalThinking",a.externalThinking),void 0!==a.textVerbosity&&c.set("textVerbosity",a.textVerbosity),void 0!==a.personality&&c.set("personality",a.personality),Object.entries(a.advisor??{})))c.setIn(["advisor",b],d);for(let[b,d]of(a.tools?.approvalMode!==void 0&&c.setIn(["tools","approvalMode"],a.tools.approvalMode),a.tools?.approval?.bash!==void 0&&c.setIn(["tools","approval","bash"],a.tools.approval.bash),a.tools?.approval?.extension!==void 0&&c.setIn(["tools","approval","extension"],a.tools.approval.extension),void 0!==a.enabledModels&&c.set("enabledModels",a.enabledModels),void 0!==a.disabledProviders&&c.set("disabledProviders",a.disabledProviders),void 0!==a.modelProviderOrder&&c.set("modelProviderOrder",a.modelProviderOrder),Object.entries(a.retry??{})))c.setIn(["retry",b],d);for(let[b,d]of Object.entries(a.compaction??{}))c.setIn(["compaction",b],d);for(let[b,d]of Object.entries(a.memory??{}))c.setIn(["memory",b],d);for(let[b,d]of Object.entries(a.autolearn??{}))c.setIn(["autolearn",b],d);for(let[b,d]of Object.entries(a.mnemopi??{}))c.setIn(["mnemopi",b],d);for(let[b,d]of Object.entries(a.mcp??{}))c.setIn(["mcp",b],d);for(let[b,d]of(a.task?.prewalk!==void 0&&c.setIn(["task","prewalk"],a.task.prewalk),Object.entries(a.task?.agentModelOverrides??{})))c.setIn(["task","agentModelOverrides",b],d);for(let[b,d]of Object.entries(a.task?.agentPrewalk??{}))c.setIn(["task","agentPrewalk",b],d);for(let[b,d]of Object.entries(a.task?.agentAdvisor??{}))c.setIn(["task","agentAdvisor",b],d);a.task?.disabledAgents!==void 0&&c.setIn(["task","disabledAgents"],a.task.disabledAgents);let g=`${b}.tmp-${process.pid}-${Date.now()}`;try{(0,d.writeFileSync)(g,c.toString(),"utf8"),(0,d.renameSync)(g,b)}catch(a){try{(0,d.existsSync)(g)&&(0,d.unlinkSync)(g)}catch{}throw a}}}};
1
+ "use strict";exports.id=8501,exports.ids=[8501],exports.modules={88501:(a,b,c)=>{c.d(b,{W:()=>y,r:()=>x});var d=c(29021),e=c(33873),f=c(63294),g=c(85887),h=c(20565);let i=new Set(["auto","minimal","low","medium","high","xhigh","max"]),j=new Set(["low","medium","high"]),k=new Set(["default","friendly","pragmatic","none"]),l=new Set(["off","1","3","5"]),m=new Set(["always-ask","write","yolo"]),n=new Set(["allow","prompt","deny"]),o=new Set(["cooldown-expiry","never"]),p=new Set(["snapcompact","handoff","context-full","shake","off"]),q=new Set(["off","local","mnemopi","hindsight"]),r=new Set(["global","per-project","per-project-tagged"]);function s(a){return Array.isArray(a)&&a.every(a=>"string"==typeof a)?a:void 0}function t(a){if(!(0,h.u4)(a))return;let b={};for(let[c,d]of Object.entries(a))("string"==typeof d||s(d))&&(b[c]=d);return b}function u(a){if(!(0,h.u4)(a))return;let b={};for(let[c,d]of Object.entries(a))("boolean"==typeof d||"string"==typeof d)&&(b[c]=d);return b}function v(a,b){if(void 0!==a&&!(0,h.u4)(a))throw Error(`${b} must be an object`)}function w(){let a=(0,g.pA)(),b=(0,f.Tp)((0,d.existsSync)(a)?(0,d.readFileSync)(a,"utf8"):"");if(b.errors.length>0)throw Error(`${a} is not valid YAML: ${b.errors[0].message}`);return{path:a,doc:b}}function x(){let{path:a,doc:b}=w(),c=b.toJS();if(!(0,h.u4)(c))return{path:a,settings:{}};let d=(0,h.u4)(c.advisor)?c.advisor:{},e=(0,h.u4)(c.tools)?c.tools:{},f=(0,h.u4)(e.approval)?e.approval:{},g=(0,h.u4)(c.retry)?c.retry:{},v=(0,h.u4)(g.fallbackChains)?Object.fromEntries(Object.entries(g.fallbackChains).filter(a=>"string"==typeof a[0]&&void 0!==s(a[1]))):{},x=(0,h.u4)(c.compaction)?c.compaction:{},y=(0,h.u4)(c.memory)?c.memory:{},z=(0,h.u4)(c.autolearn)?c.autolearn:{},A=(0,h.u4)(c.mnemopi)?c.mnemopi:{},B=(0,h.u4)(c.mcp)?c.mcp:{},C=(0,h.u4)(c.task)?c.task:{},D=[c.enabledModels,c.disabledProviders,c.modelProviderOrder].some(a=>Array.isArray(a)&&!a.every(a=>"string"==typeof a));return{path:a,settings:{...i.has(c.defaultThinkingLevel)?{defaultThinkingLevel:c.defaultThinkingLevel}:{},..."boolean"==typeof c.hideThinkingBlock?{hideThinkingBlock:c.hideThinkingBlock}:{},..."boolean"==typeof c.externalThinking?{externalThinking:c.externalThinking}:{},...j.has(c.textVerbosity)?{textVerbosity:c.textVerbosity}:{},...k.has(c.personality)?{personality:c.personality}:{},...Object.keys(d).length?{advisor:{..."boolean"==typeof d.enabled?{enabled:d.enabled}:{},..."boolean"==typeof d.subagents?{subagents:d.subagents}:{},...l.has(d.syncBacklog)?{syncBacklog:d.syncBacklog}:{},..."number"==typeof d.immuneTurns&&Number.isInteger(d.immuneTurns)?{immuneTurns:d.immuneTurns}:{}}}:{},...Object.keys(e).length?{tools:{...m.has(e.approvalMode)?{approvalMode:e.approvalMode}:{},...n.has(f.bash)||"allow"===f.extension||"prompt"===f.extension?{approval:{...n.has(f.bash)?{bash:f.bash}:{},..."allow"===f.extension||"prompt"===f.extension?{extension:f.extension}:{}}}:{}}}:{},...s(c.enabledModels)?{enabledModels:s(c.enabledModels)}:{},...s(c.disabledProviders)?{disabledProviders:s(c.disabledProviders)}:{},...s(c.modelProviderOrder)?{modelProviderOrder:s(c.modelProviderOrder)}:{},...D?{registryHasScopedEntries:!0}:{},...Object.keys(g).length?{retry:{..."boolean"==typeof g.enabled?{enabled:g.enabled}:{},..."number"==typeof g.maxRetries&&Number.isInteger(g.maxRetries)?{maxRetries:g.maxRetries}:{},..."boolean"==typeof g.modelFallback?{modelFallback:g.modelFallback}:{},...o.has(g.fallbackRevertPolicy)?{fallbackRevertPolicy:g.fallbackRevertPolicy}:{},...Object.keys(v).length?{fallbackChains:v}:{}}}:{},...Object.keys(x).length?{compaction:{..."boolean"==typeof x.enabled?{enabled:x.enabled}:{},..."boolean"==typeof x.midTurnEnabled?{midTurnEnabled:x.midTurnEnabled}:{},...p.has(x.strategy)?{strategy:x.strategy}:{},..."boolean"==typeof x.autoContinue?{autoContinue:x.autoContinue}:{},..."boolean"==typeof x.remoteEnabled?{remoteEnabled:x.remoteEnabled}:{},..."number"==typeof x.keepRecentTokens&&Number.isInteger(x.keepRecentTokens)?{keepRecentTokens:x.keepRecentTokens}:{}}}:{},...Object.keys(y).length?{memory:{...q.has(y.backend)?{backend:y.backend}:{}}}:{},...Object.keys(z).length?{autolearn:{..."boolean"==typeof z.enabled?{enabled:z.enabled}:{},..."boolean"==typeof z.autoContinue?{autoContinue:z.autoContinue}:{},..."number"==typeof z.minToolCalls&&Number.isInteger(z.minToolCalls)?{minToolCalls:z.minToolCalls}:{}}}:{},...Object.keys(A).length?{mnemopi:{...r.has(A.scoping)?{scoping:A.scoping}:{},..."boolean"==typeof A.autoRecall?{autoRecall:A.autoRecall}:{},..."boolean"==typeof A.autoRetain?{autoRetain:A.autoRetain}:{},..."boolean"==typeof A.noEmbeddings?{noEmbeddings:A.noEmbeddings}:{}}}:{},...Object.keys(B).length?{mcp:{..."boolean"==typeof B.enableProjectConfig?{enableProjectConfig:B.enableProjectConfig}:{},..."boolean"==typeof B.renderMarkdownResults?{renderMarkdownResults:B.renderMarkdownResults}:{},..."boolean"==typeof B.notifications?{notifications:B.notifications}:{},..."number"==typeof B.notificationDebounceMs&&Number.isInteger(B.notificationDebounceMs)?{notificationDebounceMs:B.notificationDebounceMs}:{}}}:{},...Object.keys(C).length?{task:{..."boolean"==typeof C.prewalk?{prewalk:C.prewalk}:{},...t(C.agentModelOverrides)?{agentModelOverrides:t(C.agentModelOverrides)}:{},...u(C.agentPrewalk)?{agentPrewalk:u(C.agentPrewalk)}:{},...u(C.agentAdvisor)?{agentAdvisor:u(C.agentAdvisor)}:{},...s(C.disabledAgents)?{disabledAgents:s(C.disabledAgents)}:{}}}:{}}}}function y(a){if(!(0,h.u4)(a))throw Error("Settings must be an object");for(let[b,c]of(v(a.advisor,"advisor"),v(a.tools,"tools"),v(a.tools?.approval,"tools.approval"),v(a.retry,"retry"),v(a.compaction,"compaction"),v(a.memory,"memory"),v(a.autolearn,"autolearn"),v(a.mnemopi,"mnemopi"),v(a.mcp,"mcp"),v(a.task,"task"),Object.entries({hideThinkingBlock:a.hideThinkingBlock,externalThinking:a.externalThinking,"advisor.enabled":a.advisor?.enabled,"advisor.subagents":a.advisor?.subagents,"retry.enabled":a.retry?.enabled,"retry.modelFallback":a.retry?.modelFallback,"compaction.enabled":a.compaction?.enabled,"compaction.midTurnEnabled":a.compaction?.midTurnEnabled,"compaction.autoContinue":a.compaction?.autoContinue,"compaction.remoteEnabled":a.compaction?.remoteEnabled,"autolearn.enabled":a.autolearn?.enabled,"autolearn.autoContinue":a.autolearn?.autoContinue,"mnemopi.autoRecall":a.mnemopi?.autoRecall,"mnemopi.autoRetain":a.mnemopi?.autoRetain,"mnemopi.noEmbeddings":a.mnemopi?.noEmbeddings,"mcp.enableProjectConfig":a.mcp?.enableProjectConfig,"mcp.renderMarkdownResults":a.mcp?.renderMarkdownResults,"mcp.notifications":a.mcp?.notifications,"task.prewalk":a.task?.prewalk})))if(void 0!==c&&"boolean"!=typeof c)throw Error(`${b} must be a boolean`);for(let[b,c]of Object.entries(a.task?.agentModelOverrides??{}))if("string"==typeof c){if(!c.trim())throw Error(`task.agentModelOverrides.${b} must be a non-empty string`)}else if(s(c)){if(c.some(a=>!a.trim()))throw Error(`task.agentModelOverrides.${b} must contain non-empty strings`)}else throw Error(`task.agentModelOverrides.${b} must be a string or string array`);for(let[b,c]of[["agentPrewalk",a.task?.agentPrewalk],["agentAdvisor",a.task?.agentAdvisor]])for(let[a,d]of Object.entries(c??{}))if("boolean"!=typeof d&&"string"!=typeof d)throw Error(`task.${b}.${a} must be a boolean or string`);if(a.task?.disabledAgents!==void 0&&(!s(a.task.disabledAgents)||a.task.disabledAgents.some(a=>!a.trim())))throw Error("task.disabledAgents must contain non-empty strings");if(void 0!==a.defaultThinkingLevel&&!i.has(a.defaultThinkingLevel))throw Error("Invalid default thinking level");if(void 0!==a.textVerbosity&&!j.has(a.textVerbosity))throw Error("Invalid text verbosity");if(void 0!==a.personality&&!k.has(a.personality))throw Error("Invalid personality");if(a.advisor?.syncBacklog!==void 0&&!l.has(a.advisor.syncBacklog))throw Error("Invalid advisor sync backlog");if(a.advisor?.immuneTurns!==void 0&&(!Number.isInteger(a.advisor.immuneTurns)||a.advisor.immuneTurns<0||a.advisor.immuneTurns>20))throw Error("Advisor immune turns must be an integer between 0 and 20");if(a.tools?.approvalMode!==void 0&&!m.has(a.tools.approvalMode))throw Error("Invalid approval mode");if(a.tools?.approval?.bash!==void 0&&!n.has(a.tools.approval.bash))throw Error("Invalid Bash approval policy");if(a.tools?.approval?.extension!==void 0&&"allow"!==a.tools.approval.extension&&"prompt"!==a.tools.approval.extension)throw Error("Invalid extension tool approval policy");if(a.retry?.maxRetries!==void 0&&(!Number.isInteger(a.retry.maxRetries)||a.retry.maxRetries<0||a.retry.maxRetries>20))throw Error("Retry attempts must be an integer between 0 and 20");if(a.retry?.fallbackRevertPolicy!==void 0&&!o.has(a.retry.fallbackRevertPolicy))throw Error("Invalid fallback revert policy");if(a.retry?.fallbackChains!==void 0){for(let[b,c]of Object.entries(a.retry.fallbackChains))if(!b.trim()||!Array.isArray(c)||c.some(a=>"string"!=typeof a||!a.trim()))throw Error("Fallback chains require non-empty role and model selectors")}if(a.compaction?.strategy!==void 0&&!p.has(a.compaction.strategy))throw Error("Invalid compaction strategy");if(a.compaction?.keepRecentTokens!==void 0&&(!Number.isInteger(a.compaction.keepRecentTokens)||a.compaction.keepRecentTokens<1e3||a.compaction.keepRecentTokens>1e6))throw Error("Compaction retained tokens must be an integer between 1,000 and 1,000,000");if(a.memory?.backend!==void 0&&!q.has(a.memory.backend))throw Error("Invalid memory backend");if(a.autolearn?.minToolCalls!==void 0&&(!Number.isInteger(a.autolearn.minToolCalls)||a.autolearn.minToolCalls<0||a.autolearn.minToolCalls>100))throw Error("Auto-learn minimum tool calls must be an integer between 0 and 100");if(a.mnemopi?.scoping!==void 0&&!r.has(a.mnemopi.scoping))throw Error("Invalid Mnemopi memory scope");if(a.mcp?.notificationDebounceMs!==void 0&&(!Number.isInteger(a.mcp.notificationDebounceMs)||a.mcp.notificationDebounceMs<0||a.mcp.notificationDebounceMs>6e4))throw Error("MCP notification debounce must be an integer between 0 and 60,000");for(let[b,c]of Object.entries({enabledModels:a.enabledModels,disabledProviders:a.disabledProviders,modelProviderOrder:a.modelProviderOrder}))if(void 0!==c&&(!Array.isArray(c)||c.some(a=>"string"!=typeof a||!a.trim())))throw Error(`${b} must contain non-empty strings`);let{path:b,doc:c}=w();if((0,d.mkdirSync)((0,e.dirname)(b),{recursive:!0}),null===c.contents){let c=`${b}.tmp-${process.pid}-${Date.now()}`;try{(0,d.writeFileSync)(c,(0,f.As)(a),"utf8"),(0,d.renameSync)(c,b)}catch(a){try{(0,d.existsSync)(c)&&(0,d.unlinkSync)(c)}catch{}throw a}return}if(!(0,f.jh)(c.contents))throw Error(`${b} must contain a YAML mapping`);for(let[b,d]of(void 0!==a.defaultThinkingLevel&&c.set("defaultThinkingLevel",a.defaultThinkingLevel),void 0!==a.hideThinkingBlock&&c.set("hideThinkingBlock",a.hideThinkingBlock),void 0!==a.externalThinking&&c.set("externalThinking",a.externalThinking),void 0!==a.textVerbosity&&c.set("textVerbosity",a.textVerbosity),void 0!==a.personality&&c.set("personality",a.personality),Object.entries(a.advisor??{})))c.setIn(["advisor",b],d);for(let[b,d]of(a.tools?.approvalMode!==void 0&&c.setIn(["tools","approvalMode"],a.tools.approvalMode),a.tools?.approval?.bash!==void 0&&c.setIn(["tools","approval","bash"],a.tools.approval.bash),a.tools?.approval?.extension!==void 0&&c.setIn(["tools","approval","extension"],a.tools.approval.extension),void 0!==a.enabledModels&&c.set("enabledModels",a.enabledModels),void 0!==a.disabledProviders&&c.set("disabledProviders",a.disabledProviders),void 0!==a.modelProviderOrder&&c.set("modelProviderOrder",a.modelProviderOrder),Object.entries(a.retry??{})))c.setIn(["retry",b],d);for(let[b,d]of Object.entries(a.compaction??{}))c.setIn(["compaction",b],d);for(let[b,d]of Object.entries(a.memory??{}))c.setIn(["memory",b],d);for(let[b,d]of Object.entries(a.autolearn??{}))c.setIn(["autolearn",b],d);for(let[b,d]of Object.entries(a.mnemopi??{}))c.setIn(["mnemopi",b],d);for(let[b,d]of Object.entries(a.mcp??{}))c.setIn(["mcp",b],d);a.task?.prewalk!==void 0&&c.setIn(["task","prewalk"],a.task.prewalk),a.task?.agentModelOverrides!==void 0&&c.setIn(["task","agentModelOverrides"],a.task.agentModelOverrides),a.task?.agentPrewalk!==void 0&&c.setIn(["task","agentPrewalk"],a.task.agentPrewalk),a.task?.agentAdvisor!==void 0&&c.setIn(["task","agentAdvisor"],a.task.agentAdvisor),a.task?.disabledAgents!==void 0&&c.setIn(["task","disabledAgents"],a.task.disabledAgents);let g=`${b}.tmp-${process.pid}-${Date.now()}`;try{(0,d.writeFileSync)(g,c.toString(),"utf8"),(0,d.renameSync)(g,b)}catch(a){try{(0,d.existsSync)(g)&&(0,d.unlinkSync)(g)}catch{}throw a}}}};