pi-yun 0.2.2 → 0.2.4

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 (318) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +17 -16
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +4 -4
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_global-error/page.js +2 -2
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page.js +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +5 -5
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -4
  22. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  23. package/.next/server/app/api/agent/[id]/events/route.js +1 -3
  24. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
  25. package/.next/server/app/api/agent/[id]/lease/route.js +1 -1
  26. package/.next/server/app/api/agent/[id]/lease/route.js.nft.json +1 -1
  27. package/.next/server/app/api/agent/[id]/route.js +1 -1
  28. package/.next/server/app/api/agent/debug/route.js +1 -0
  29. package/.next/server/app/api/agent/debug/route.js.nft.json +1 -0
  30. package/.next/server/app/api/agent/debug/route_client-reference-manifest.js +1 -0
  31. package/.next/server/app/api/agent/new/route.js +1 -1
  32. package/.next/server/app/api/agent/running/route.js +1 -1
  33. package/.next/server/app/api/app-update/route.js +1 -1
  34. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  35. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  36. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  37. package/.next/server/app/api/auth/providers/route.js +1 -1
  38. package/.next/server/app/api/cache-miss-notices/route.js +1 -1
  39. package/.next/server/app/api/cwd/browse/route.js +1 -1
  40. package/.next/server/app/api/cwd/browse/route.js.nft.json +2 -2
  41. package/.next/server/app/api/cwd/validate/route.js +1 -1
  42. package/.next/server/app/api/cwd/validate/route.js.nft.json +2 -2
  43. package/.next/server/app/api/default-cwd/route.js +1 -1
  44. package/.next/server/app/api/file-index/route.js +1 -1
  45. package/.next/server/app/api/files/[...path]/route.js +3 -3
  46. package/.next/server/app/api/git/diff/route.js +1 -1
  47. package/.next/server/app/api/git/status/route.js +1 -1
  48. package/.next/server/app/api/home/route.js +1 -1
  49. package/.next/server/app/api/mcp/route.js +2 -2
  50. package/.next/server/app/api/mcp/sign-in/[flowId]/route.js +1 -1
  51. package/.next/server/app/api/mcp/sign-in/route.js +1 -1
  52. package/.next/server/app/api/mcp/test/route.js +1 -1
  53. package/.next/server/app/api/models/default/route.js +1 -1
  54. package/.next/server/app/api/models/default/route.js.nft.json +2 -2
  55. package/.next/server/app/api/models/enabled/route.js +1 -1
  56. package/.next/server/app/api/models/enabled/route.js.nft.json +2 -2
  57. package/.next/server/app/api/models/refresh/route.js +1 -1
  58. package/.next/server/app/api/models/route.js +1 -1
  59. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  60. package/.next/server/app/api/models-config/discover/route.js +1 -1
  61. package/.next/server/app/api/models-config/route.js +1 -1
  62. package/.next/server/app/api/models-config/test/route.js +1 -1
  63. package/.next/server/app/api/open-in-explorer/route.js +1 -1
  64. package/.next/server/app/api/plugins/check/route.js +1 -1
  65. package/.next/server/app/api/plugins/route.js +1 -1
  66. package/.next/server/app/api/project-trust/route.js +1 -1
  67. package/.next/server/app/api/provider-usage/query/route.js +1 -1
  68. package/.next/server/app/api/push/config/route.js +1 -1
  69. package/.next/server/app/api/push/subscribe/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
  71. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  72. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  73. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js +1 -1
  74. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  75. package/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  76. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  77. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  78. package/.next/server/app/api/sessions/delete/route.js +1 -1
  79. package/.next/server/app/api/sessions/route.js +1 -1
  80. package/.next/server/app/api/sessions/search/route.js +1 -1
  81. package/.next/server/app/api/sessions/stats/route.js +1 -1
  82. package/.next/server/app/api/sessions/ui-state/route.js +1 -1
  83. package/.next/server/app/api/skills/check/route.js +1 -1
  84. package/.next/server/app/api/skills/content/route.js +1 -1
  85. package/.next/server/app/api/skills/install/route.js +1 -1
  86. package/.next/server/app/api/skills/route.js +1 -1
  87. package/.next/server/app/api/skills/search/route.js +1 -1
  88. package/.next/server/app/api/skills/update/route.js +1 -1
  89. package/.next/server/app/api/subagents/[id]/route.js +1 -1
  90. package/.next/server/app/api/subagents/profiles/route.js +1 -1
  91. package/.next/server/app/api/subagents/settings/route.js +1 -1
  92. package/.next/server/app/api/terminal/[id]/events/route.js +3 -3
  93. package/.next/server/app/api/terminal/[id]/route.js +1 -1
  94. package/.next/server/app/api/terminal/route.js +1 -1
  95. package/.next/server/app/api/tools/settings/route.js +1 -1
  96. package/.next/server/app/api/web-auth/route.js +1 -1
  97. package/.next/server/app/api/worktrees/route.js +1 -1
  98. package/.next/server/app/favicon.ico/route.js +1 -1
  99. package/.next/server/app/index.html +1 -1
  100. package/.next/server/app/index.rsc +7 -7
  101. package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -7
  102. package/.next/server/app/index.segments/_full.segment.rsc +7 -7
  103. package/.next/server/app/index.segments/_tree.segment.rsc +4 -4
  104. package/.next/server/app/login/page.js +3 -3
  105. package/.next/server/app/login/page.js.nft.json +1 -1
  106. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/login.html +1 -1
  108. package/.next/server/app/login.rsc +6 -6
  109. package/.next/server/app/login.segments/_full.segment.rsc +6 -6
  110. package/.next/server/app/login.segments/_tree.segment.rsc +4 -4
  111. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  112. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  113. package/.next/server/app/page.js +852 -59
  114. package/.next/server/app/page.js.nft.json +1 -1
  115. package/.next/server/app/page_client-reference-manifest.js +1 -1
  116. package/.next/server/app/pet-preview/page.js +1 -1
  117. package/.next/server/app/pet-preview/page.js.nft.json +1 -1
  118. package/.next/server/app/pet-preview/page_client-reference-manifest.js +1 -1
  119. package/.next/server/app/pet-preview.html +1 -1
  120. package/.next/server/app/pet-preview.rsc +6 -6
  121. package/.next/server/app/pet-preview.segments/_full.segment.rsc +6 -6
  122. package/.next/server/app/pet-preview.segments/_tree.segment.rsc +4 -4
  123. package/.next/server/app/pet-preview.segments/pet-preview/__PAGE__.segment.rsc +6 -6
  124. package/.next/server/app-paths-manifest.json +17 -16
  125. package/.next/server/chunks/1207.js +1 -1
  126. package/.next/server/chunks/1906.js +1 -1
  127. package/.next/server/chunks/2243.js +1 -1
  128. package/.next/server/chunks/27.js +1 -1
  129. package/.next/server/chunks/3371.js +1 -0
  130. package/.next/server/chunks/3374.js +2 -2
  131. package/.next/server/chunks/3757.js +1 -1
  132. package/.next/server/chunks/3824.js +1 -1
  133. package/.next/server/chunks/4698.js +1 -1
  134. package/.next/server/chunks/5582.js +3 -3
  135. package/.next/server/chunks/6429.js +9 -9
  136. package/.next/server/chunks/7365.js +1 -1
  137. package/.next/server/chunks/8177.js +1 -0
  138. package/.next/server/chunks/8781.js +3 -0
  139. package/.next/server/functions-config-manifest.json +1 -0
  140. package/.next/server/instrumentation.js +1 -1
  141. package/.next/server/instrumentation.js.nft.json +1 -1
  142. package/.next/server/middleware-build-manifest.js +1 -1
  143. package/.next/server/middleware.js +1 -1
  144. package/.next/server/pages/404.html +1 -1
  145. package/.next/server/pages/500.html +1 -1
  146. package/.next/server/server-reference-manifest.json +1 -1
  147. package/.next/static/chunks/1278-924fb78593d04d55.js +1 -0
  148. package/.next/static/chunks/{9932-60e21347ba9f8664.js → 4908-bc77348603c9c216.js} +2 -2
  149. package/.next/static/chunks/app/_global-error/{page-cbe4231fb889bdce.js → page-aea014bebc656830.js} +1 -1
  150. package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-cbe4231fb889bdce.js → route-aea014bebc656830.js} +1 -1
  151. package/.next/static/chunks/app/api/agent/[id]/events/{route-cbe4231fb889bdce.js → route-aea014bebc656830.js} +1 -1
  152. package/.next/static/chunks/app/api/agent/[id]/lease/{route-cbe4231fb889bdce.js → route-aea014bebc656830.js} +1 -1
  153. package/.next/static/chunks/app/api/agent/[id]/route-aea014bebc656830.js +1 -0
  154. package/.next/static/chunks/app/api/agent/debug/route-aea014bebc656830.js +1 -0
  155. package/.next/static/chunks/app/api/agent/new/route-aea014bebc656830.js +1 -0
  156. package/.next/static/chunks/app/api/agent/running/route-aea014bebc656830.js +1 -0
  157. package/.next/static/chunks/app/api/app-update/route-aea014bebc656830.js +1 -0
  158. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-aea014bebc656830.js +1 -0
  159. package/.next/static/chunks/app/api/auth/login/[provider]/route-aea014bebc656830.js +1 -0
  160. package/.next/static/chunks/app/api/auth/logout/[provider]/route-aea014bebc656830.js +1 -0
  161. package/.next/static/chunks/app/api/auth/providers/route-aea014bebc656830.js +1 -0
  162. package/.next/static/chunks/app/api/cache-miss-notices/route-aea014bebc656830.js +1 -0
  163. package/.next/static/chunks/app/api/cwd/browse/route-aea014bebc656830.js +1 -0
  164. package/.next/static/chunks/app/api/cwd/validate/route-aea014bebc656830.js +1 -0
  165. package/.next/static/chunks/app/api/default-cwd/route-aea014bebc656830.js +1 -0
  166. package/.next/static/chunks/app/api/file-index/route-aea014bebc656830.js +1 -0
  167. package/.next/static/chunks/app/api/files/[...path]/route-aea014bebc656830.js +1 -0
  168. package/.next/static/chunks/app/api/git/diff/route-aea014bebc656830.js +1 -0
  169. package/.next/static/chunks/app/api/git/status/route-aea014bebc656830.js +1 -0
  170. package/.next/static/chunks/app/api/home/route-aea014bebc656830.js +1 -0
  171. package/.next/static/chunks/app/api/mcp/route-aea014bebc656830.js +1 -0
  172. package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-aea014bebc656830.js +1 -0
  173. package/.next/static/chunks/app/api/mcp/sign-in/route-aea014bebc656830.js +1 -0
  174. package/.next/static/chunks/app/api/mcp/test/route-aea014bebc656830.js +1 -0
  175. package/.next/static/chunks/app/api/models/default/route-aea014bebc656830.js +1 -0
  176. package/.next/static/chunks/app/api/models/enabled/route-aea014bebc656830.js +1 -0
  177. package/.next/static/chunks/app/api/models/refresh/route-aea014bebc656830.js +1 -0
  178. package/.next/static/chunks/app/api/models/route-aea014bebc656830.js +1 -0
  179. package/.next/static/chunks/app/api/models-config/catalog/route-aea014bebc656830.js +1 -0
  180. package/.next/static/chunks/app/api/models-config/discover/route-aea014bebc656830.js +1 -0
  181. package/.next/static/chunks/app/api/models-config/route-aea014bebc656830.js +1 -0
  182. package/.next/static/chunks/app/api/models-config/test/route-aea014bebc656830.js +1 -0
  183. package/.next/static/chunks/app/api/open-in-explorer/route-aea014bebc656830.js +1 -0
  184. package/.next/static/chunks/app/api/plugins/check/route-aea014bebc656830.js +1 -0
  185. package/.next/static/chunks/app/api/plugins/route-aea014bebc656830.js +1 -0
  186. package/.next/static/chunks/app/api/project-trust/route-aea014bebc656830.js +1 -0
  187. package/.next/static/chunks/app/api/provider-usage/query/route-aea014bebc656830.js +1 -0
  188. package/.next/static/chunks/app/api/push/config/route-aea014bebc656830.js +1 -0
  189. package/.next/static/chunks/app/api/push/subscribe/route-aea014bebc656830.js +1 -0
  190. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-aea014bebc656830.js +1 -0
  191. package/.next/static/chunks/app/api/sessions/[id]/context/route-aea014bebc656830.js +1 -0
  192. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-aea014bebc656830.js +1 -0
  193. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-aea014bebc656830.js +1 -0
  194. package/.next/static/chunks/app/api/sessions/[id]/export/route-aea014bebc656830.js +1 -0
  195. package/.next/static/chunks/app/api/sessions/[id]/fork/route-aea014bebc656830.js +1 -0
  196. package/.next/static/chunks/app/api/sessions/[id]/route-aea014bebc656830.js +1 -0
  197. package/.next/static/chunks/app/api/sessions/[id]/state/route-aea014bebc656830.js +1 -0
  198. package/.next/static/chunks/app/api/sessions/delete/route-aea014bebc656830.js +1 -0
  199. package/.next/static/chunks/app/api/sessions/route-aea014bebc656830.js +1 -0
  200. package/.next/static/chunks/app/api/sessions/search/route-aea014bebc656830.js +1 -0
  201. package/.next/static/chunks/app/api/sessions/stats/route-aea014bebc656830.js +1 -0
  202. package/.next/static/chunks/app/api/sessions/ui-state/route-aea014bebc656830.js +1 -0
  203. package/.next/static/chunks/app/api/skills/check/route-aea014bebc656830.js +1 -0
  204. package/.next/static/chunks/app/api/skills/content/route-aea014bebc656830.js +1 -0
  205. package/.next/static/chunks/app/api/skills/install/route-aea014bebc656830.js +1 -0
  206. package/.next/static/chunks/app/api/skills/route-aea014bebc656830.js +1 -0
  207. package/.next/static/chunks/app/api/skills/search/route-aea014bebc656830.js +1 -0
  208. package/.next/static/chunks/app/api/skills/update/route-aea014bebc656830.js +1 -0
  209. package/.next/static/chunks/app/api/subagents/[id]/route-aea014bebc656830.js +1 -0
  210. package/.next/static/chunks/app/api/subagents/profiles/route-aea014bebc656830.js +1 -0
  211. package/.next/static/chunks/app/api/subagents/settings/route-aea014bebc656830.js +1 -0
  212. package/.next/static/chunks/app/api/terminal/[id]/events/route-aea014bebc656830.js +1 -0
  213. package/.next/static/chunks/app/api/terminal/[id]/route-aea014bebc656830.js +1 -0
  214. package/.next/static/chunks/app/api/terminal/route-aea014bebc656830.js +1 -0
  215. package/.next/static/chunks/app/api/tools/settings/route-aea014bebc656830.js +1 -0
  216. package/.next/static/chunks/app/api/web-auth/route-aea014bebc656830.js +1 -0
  217. package/.next/static/chunks/app/api/worktrees/route-aea014bebc656830.js +1 -0
  218. package/.next/static/chunks/app/layout-fd458f024053777b.js +1 -0
  219. package/.next/static/chunks/app/manifest.webmanifest/route-aea014bebc656830.js +1 -0
  220. package/.next/static/chunks/app/page-d2c786f63d634b03.js +1022 -0
  221. package/.next/static/chunks/next/dist/client/components/builtin/app-error-aea014bebc656830.js +1 -0
  222. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-aea014bebc656830.js +1 -0
  223. package/.next/static/chunks/next/dist/client/components/builtin/not-found-aea014bebc656830.js +1 -0
  224. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-aea014bebc656830.js +1 -0
  225. package/.next/static/chunks/{webpack-03add08f717df51e.js → webpack-98cb88af9c517ce2.js} +1 -1
  226. package/.next/static/css/0e52953f40c91a8b.css +1 -0
  227. package/.next/static/css/11d43ff6e42cbb72.css +1 -0
  228. package/.next/static/css/bb657b16840154d3.css +1 -0
  229. package/.next/static/vJWDpddtTSWk_gKxyuTL7/_buildManifest.js +1 -0
  230. package/.next/trace +8 -8
  231. package/.next/trace-build +1 -1
  232. package/.next/types/app/api/agent/debug/route.ts +353 -0
  233. package/.next/types/routes.d.ts +2 -1
  234. package/.next/types/validator.ts +9 -0
  235. package/README.md +2 -1
  236. package/bin/browser-opener.js +44 -1
  237. package/bin/network-addresses.js +62 -0
  238. package/bin/pi-web.js +10 -2
  239. package/package.json +1 -1
  240. package/.next/server/chunks/5787.js +0 -1
  241. package/.next/server/chunks/7492.js +0 -1
  242. package/.next/static/chunks/1278-d1fbbce2d49aaaee.js +0 -1
  243. package/.next/static/chunks/app/api/agent/[id]/route-cbe4231fb889bdce.js +0 -1
  244. package/.next/static/chunks/app/api/agent/new/route-cbe4231fb889bdce.js +0 -1
  245. package/.next/static/chunks/app/api/agent/running/route-cbe4231fb889bdce.js +0 -1
  246. package/.next/static/chunks/app/api/app-update/route-cbe4231fb889bdce.js +0 -1
  247. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cbe4231fb889bdce.js +0 -1
  248. package/.next/static/chunks/app/api/auth/login/[provider]/route-cbe4231fb889bdce.js +0 -1
  249. package/.next/static/chunks/app/api/auth/logout/[provider]/route-cbe4231fb889bdce.js +0 -1
  250. package/.next/static/chunks/app/api/auth/providers/route-cbe4231fb889bdce.js +0 -1
  251. package/.next/static/chunks/app/api/cache-miss-notices/route-cbe4231fb889bdce.js +0 -1
  252. package/.next/static/chunks/app/api/cwd/browse/route-cbe4231fb889bdce.js +0 -1
  253. package/.next/static/chunks/app/api/cwd/validate/route-cbe4231fb889bdce.js +0 -1
  254. package/.next/static/chunks/app/api/default-cwd/route-cbe4231fb889bdce.js +0 -1
  255. package/.next/static/chunks/app/api/file-index/route-cbe4231fb889bdce.js +0 -1
  256. package/.next/static/chunks/app/api/files/[...path]/route-cbe4231fb889bdce.js +0 -1
  257. package/.next/static/chunks/app/api/git/diff/route-cbe4231fb889bdce.js +0 -1
  258. package/.next/static/chunks/app/api/git/status/route-cbe4231fb889bdce.js +0 -1
  259. package/.next/static/chunks/app/api/home/route-cbe4231fb889bdce.js +0 -1
  260. package/.next/static/chunks/app/api/mcp/route-cbe4231fb889bdce.js +0 -1
  261. package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-cbe4231fb889bdce.js +0 -1
  262. package/.next/static/chunks/app/api/mcp/sign-in/route-cbe4231fb889bdce.js +0 -1
  263. package/.next/static/chunks/app/api/mcp/test/route-cbe4231fb889bdce.js +0 -1
  264. package/.next/static/chunks/app/api/models/default/route-cbe4231fb889bdce.js +0 -1
  265. package/.next/static/chunks/app/api/models/enabled/route-cbe4231fb889bdce.js +0 -1
  266. package/.next/static/chunks/app/api/models/refresh/route-cbe4231fb889bdce.js +0 -1
  267. package/.next/static/chunks/app/api/models/route-cbe4231fb889bdce.js +0 -1
  268. package/.next/static/chunks/app/api/models-config/catalog/route-cbe4231fb889bdce.js +0 -1
  269. package/.next/static/chunks/app/api/models-config/discover/route-cbe4231fb889bdce.js +0 -1
  270. package/.next/static/chunks/app/api/models-config/route-cbe4231fb889bdce.js +0 -1
  271. package/.next/static/chunks/app/api/models-config/test/route-cbe4231fb889bdce.js +0 -1
  272. package/.next/static/chunks/app/api/open-in-explorer/route-cbe4231fb889bdce.js +0 -1
  273. package/.next/static/chunks/app/api/plugins/check/route-cbe4231fb889bdce.js +0 -1
  274. package/.next/static/chunks/app/api/plugins/route-cbe4231fb889bdce.js +0 -1
  275. package/.next/static/chunks/app/api/project-trust/route-cbe4231fb889bdce.js +0 -1
  276. package/.next/static/chunks/app/api/provider-usage/query/route-cbe4231fb889bdce.js +0 -1
  277. package/.next/static/chunks/app/api/push/config/route-cbe4231fb889bdce.js +0 -1
  278. package/.next/static/chunks/app/api/push/subscribe/route-cbe4231fb889bdce.js +0 -1
  279. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-cbe4231fb889bdce.js +0 -1
  280. package/.next/static/chunks/app/api/sessions/[id]/context/route-cbe4231fb889bdce.js +0 -1
  281. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-cbe4231fb889bdce.js +0 -1
  282. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-cbe4231fb889bdce.js +0 -1
  283. package/.next/static/chunks/app/api/sessions/[id]/export/route-cbe4231fb889bdce.js +0 -1
  284. package/.next/static/chunks/app/api/sessions/[id]/fork/route-cbe4231fb889bdce.js +0 -1
  285. package/.next/static/chunks/app/api/sessions/[id]/route-cbe4231fb889bdce.js +0 -1
  286. package/.next/static/chunks/app/api/sessions/[id]/state/route-cbe4231fb889bdce.js +0 -1
  287. package/.next/static/chunks/app/api/sessions/delete/route-cbe4231fb889bdce.js +0 -1
  288. package/.next/static/chunks/app/api/sessions/route-cbe4231fb889bdce.js +0 -1
  289. package/.next/static/chunks/app/api/sessions/search/route-cbe4231fb889bdce.js +0 -1
  290. package/.next/static/chunks/app/api/sessions/stats/route-cbe4231fb889bdce.js +0 -1
  291. package/.next/static/chunks/app/api/sessions/ui-state/route-cbe4231fb889bdce.js +0 -1
  292. package/.next/static/chunks/app/api/skills/check/route-cbe4231fb889bdce.js +0 -1
  293. package/.next/static/chunks/app/api/skills/content/route-cbe4231fb889bdce.js +0 -1
  294. package/.next/static/chunks/app/api/skills/install/route-cbe4231fb889bdce.js +0 -1
  295. package/.next/static/chunks/app/api/skills/route-cbe4231fb889bdce.js +0 -1
  296. package/.next/static/chunks/app/api/skills/search/route-cbe4231fb889bdce.js +0 -1
  297. package/.next/static/chunks/app/api/skills/update/route-cbe4231fb889bdce.js +0 -1
  298. package/.next/static/chunks/app/api/subagents/[id]/route-cbe4231fb889bdce.js +0 -1
  299. package/.next/static/chunks/app/api/subagents/profiles/route-cbe4231fb889bdce.js +0 -1
  300. package/.next/static/chunks/app/api/subagents/settings/route-cbe4231fb889bdce.js +0 -1
  301. package/.next/static/chunks/app/api/terminal/[id]/events/route-cbe4231fb889bdce.js +0 -1
  302. package/.next/static/chunks/app/api/terminal/[id]/route-cbe4231fb889bdce.js +0 -1
  303. package/.next/static/chunks/app/api/terminal/route-cbe4231fb889bdce.js +0 -1
  304. package/.next/static/chunks/app/api/tools/settings/route-cbe4231fb889bdce.js +0 -1
  305. package/.next/static/chunks/app/api/web-auth/route-cbe4231fb889bdce.js +0 -1
  306. package/.next/static/chunks/app/api/worktrees/route-cbe4231fb889bdce.js +0 -1
  307. package/.next/static/chunks/app/layout-da4ac400e5da80b9.js +0 -1
  308. package/.next/static/chunks/app/manifest.webmanifest/route-cbe4231fb889bdce.js +0 -1
  309. package/.next/static/chunks/app/page-a778cbf1fb8bc4e8.js +0 -229
  310. package/.next/static/chunks/next/dist/client/components/builtin/app-error-cbe4231fb889bdce.js +0 -1
  311. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cbe4231fb889bdce.js +0 -1
  312. package/.next/static/chunks/next/dist/client/components/builtin/not-found-cbe4231fb889bdce.js +0 -1
  313. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cbe4231fb889bdce.js +0 -1
  314. package/.next/static/css/0ba51581376fe049.css +0 -1
  315. package/.next/static/css/3d221be0a6116b3b.css +0 -1
  316. package/.next/static/css/d986dbac15b9ebaa.css +0 -1
  317. package/.next/static/iyZXp7lQacfoeCqiVEtJ1/_buildManifest.js +0 -1
  318. /package/.next/static/{iyZXp7lQacfoeCqiVEtJ1 → vJWDpddtTSWk_gKxyuTL7}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=27,exports.ids=[27],exports.modules={10879:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$q:()=>x,Vy:()=>v,bA:()=>y,ej:()=>u,yh:()=>C});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=c(8102),k=c(63108),l=c(37431),m=c(12069),n=a([g]);g=(n.then?(await n)():n)[0];let z=new Set(["version","revision","sessions","projects","removedProjects","projectOrder","projectNames","__proto__"]),A=Symbol.for("pi-web:session-ui-state-write-queue"),B={realpath:!1,stale:1e4,retries:{retries:10,factor:2,minTimeout:25,maxTimeout:500},onCompromised:a=>{console.warn(`[pi-web] the session UI state lock was compromised: ${a.message}`)}};class C extends Error{constructor(a="Another process holds the session UI state lock"){super(a),this.name="SessionUiStateLockedError"}}function o(){return globalThis.__piWebSessionUiStateCache??={reads:new Map,revisions:new Map}}function p(a,b){let c=o().revisions;b>(c.get(a)??-1)&&c.set(a,b)}function q(a){return structuredClone(a)}function r(a=(0,g.getAgentDir)()){return(0,f.join)(a,"pi-web-session-state.json")}function s(a){let b;try{b=JSON.parse(a)}catch{return{ok:!1}}let c=(0,m.Jx)(b);return c?{ok:!0,state:c,raw:b}:{ok:!1}}function t(a){let b,c;try{b=(0,e.statSync)(a)}catch(c){let b=c?.code;if("ENOENT"===b||"ENOTDIR"===b)return o().reads.delete(a),(0,m.ly)();throw c}let d=o().reads.get(a);if(d&&d.mtimeMs===b.mtimeMs&&d.size===b.size&&d.ino===b.ino)return d.state;let f=(0,l.y)(a,4194304);if(void 0===f)return o().reads.delete(a),(0,m.ly)();let g=s(f);return g.ok?(c=g.state,p(a,c.revision)):(console.warn(`[pi-web] ${a} is not valid session UI state; reading it as empty until the next change sets it aside`),c=(0,m.ly)()),o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:c}),c}function u(a){try{return q(t(a??r()))}catch(a){return console.warn(`[pi-web] could not read the session UI state: ${a instanceof Error?a.message:String(a)}`),(0,m.ly)()}}function v(a){try{return t(a??r()).revision}catch{return null}}function w(a,b){return(0,k.T)(A,a,async()=>{let c;(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0});try{c=await i().lock(a,B)}catch(a){if("ELOCKED"===a?.code)throw new C;throw a}try{let c,d=o().revisions.get(a)??0,f=(0,l.y)(a,4194304),g={},h=!1;if(void 0===f)c={...(0,m.ly)(),revision:d};else{let b=s(f);if(b.ok)for(let[a,d]of(c=b.state,Object.entries(b.raw)))z.has(a)||(g[a]=d);else{let b=`${a}.corrupt-${Date.now()}`;try{(0,e.renameSync)(a,b),console.warn(`[pi-web] ${a} could not be parsed; moved it to ${b} and started from an empty session UI state`)}catch(b){console.warn(`[pi-web] ${a} could not be parsed and could not be moved aside (${b instanceof Error?b.message:String(b)}); starting from an empty session UI state`)}c={...(0,m.ly)(),revision:d+1},h=!0}}let i=b(c);if(!i.changed&&!h)return q(c);let k={...i.state,version:m.fS,revision:c.revision+ +!!i.changed},n={version:k.version,revision:k.revision,sessions:k.sessions,projects:k.projects,...k.removedProjects&&Object.keys(k.removedProjects).length>0?{removedProjects:k.removedProjects}:{},...k.projectOrder?.length?{projectOrder:k.projectOrder}:{},...k.projectNames&&Object.keys(k.projectNames).length>0?{projectNames:k.projectNames}:{},...g};(0,j.$)(a,JSON.stringify(n,null,2)+"\n"),p(a,k.revision);try{let b=(0,e.statSync)(a);o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:q(k)})}catch{o().reads.delete(a)}return q(k)}finally{try{await c()}catch{}}})}function x(a,b){let c;try{c=b??r()}catch(a){return Promise.reject(a)}return w(c,b=>(0,m.D7)(b,a,Date.now()))}async function y(a,b){let c=b??r(),d=[...new Set(a)];if(0===d.length)return;let e=a=>d.some(b=>Object.prototype.hasOwnProperty.call(a.sessions,b));e(t(c))&&await w(c,a=>{if(!e(a))return{state:a,changed:!1};let b={...a.sessions};for(let a of d)delete b[a];return{state:{...a,sessions:b},changed:!0}})}d()}catch(a){d(a)}})},11881:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bl:()=>o,PM:()=>q,d5:()=>s,h3:()=>p,lv:()=>k,qB:()=>n,vF:()=>r});var e=c(21820),f=c(33873),g=c(55831),h=c(75430),i=c(13888),j=a([g,h]);[g,h]=j.then?(await j)():j;let t=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function k(a){return`${a.provider}/${a.id}`}async function l(a,b){let c={getAvailable:async()=>b},d=[];for(let b of a){let a=[];try{({scopedModels:a}=await (0,h.resolveModelScopeWithDiagnostics)([b],c))}catch{a=[]}let e=a.find(a=>a.thinkingLevel)?.thinkingLevel;d.push({pattern:b,matched:a.map(a=>k(a.model)),...e?{pin:e}:{}})}return d}let u=["*","**"];async function m(a){let b=new Map;for(let c of a){let a=b.get(c.provider);a?a.add(k(c)):b.set(c.provider,new Set([k(c)]))}let c={};for(let[d,e]of b){let b=u.map(a=>`${d}/${a}`);for(let f of(await l(b,a)))if(f.matched.length===e.size&&f.matched.every(a=>e.has(a))){c[d]=f.pattern;break}}return c}async function n(a,b,c={}){return{patterns:a,availableRefs:b.map(k),resolutions:await l(a??[],b),...c.withProviderGlobs?{providerGlobs:await m(b)}:{}}}function o(a){let b=new Set([...(0,g.getBuiltinProviders)(),...a.getRegisteredProviderIds()]);return new Set(a.getProviders().map(a=>a.id).filter(a=>!b.has(a)))}function p({input:a,models:b,providerNames:c,customProviders:d,scope:e,settingsPath:f,modelError:g}){let h=(0,i.KL)(a),j=new Set(h.enabled),l=new Map;for(let a of b){let b=k(a),c=h.pins[b],d={id:a.id,name:a.name||a.id,ref:b,enabled:j.has(b),...void 0===a.contextWindow?{}:{contextWindow:a.contextWindow},...c?{thinkingPin:c}:{}},e=l.get(a.provider);e?e.push(d):l.set(a.provider,[d])}let m=[...l.entries()].map(([a,b])=>(b.sort((a,b)=>t.compare(a.name,b.name)||t.compare(a.id,b.id)),{id:a,name:c.get(a)??a,kind:d.has(a)?"custom":"builtin",enabledCount:b.filter(a=>a.enabled).length,models:b}));return m.sort((a,b)=>t.compare(a.name,b.name)||t.compare(a.id,b.id)),{allEnabled:h.allEnabled,patterns:a.patterns??null,stalePatterns:h.stalePatterns,enabledTotal:h.enabled.length,availableTotal:a.availableRefs.length,providers:m,scope:e,settingsPath:f,editable:"global"===e,...g?{modelError:g}:{}}}function q(a){let b=(0,e.homedir)();if(!b||!a.startsWith(b))return a;let c=a.slice(b.length);return""===c||c.startsWith(f.sep)?`~${c}`:a}function r(a,{cwd:b,agentDir:c}){let d=a.getProjectSettings().enabledModels,e=void 0===d?"global":"project";return{patterns:a.getEnabledModels(),scope:e,path:q("project"===e?(0,f.join)(b,".pi","settings.json"):(0,f.join)(c,"settings.json"))}}async function s(a,b){let c=a.drainErrors().find(a=>"global"===a.scope);if(c)throw c.error;a.setEnabledModels(b),await a.flush();let d=a.drainErrors();if(d.length>0)throw d[0].error}d()}catch(a){d(a)}})},13888:(a,b,c)=>{function d(a){let b=a.indexOf("/");return b<0?a:a.slice(0,b)}function e(a){return a.map(a=>({pattern:a.pattern,matched:[...a.matched],...a.pin?{pin:a.pin}:{}}))}function f(a){let b=new Set,c=[];for(let d of a)for(let a of d.matched)b.has(a)||(b.add(a),c.push(a));return c}function g(a,b){return b?`${a}:${b}`:a}function h(a){let b=[];for(let c of a){let a=d(c);b.includes(a)||b.push(a)}return b}function i(a,b){return a.filter(a=>d(a)===b)}function j(a,b){let c=a.some(a=>0===a.matched.length),d=a.some(a=>a.pin),e=new Set(f(a));if(!b.availableRefs.every(a=>e.has(a))||c||d)return a.map(a=>a.pattern)}function k(a,b){return void 0===a||void 0===b?a===b:a.length===b.length&&a.every((a,c)=>a===b[c])}function l(a){let b=e(a.resolutions),c=f(b),d={};for(let a of b)if(a.pin)for(let b of a.matched)d[b]??=a.pin;let g=0===c.length;return{allEnabled:g,enabled:g?[...a.availableRefs]:c,pins:d,stalePatterns:b.filter(a=>0===a.matched.length).map(a=>a.pattern)}}function m(a,b,c){let d=new Set(a.availableRefs),l=[...new Set(b.filter(a=>d.has(a)))];if(0===l.length)return{ok:!0,patterns:a.patterns,changed:!1};let m=function(a){let b=e(a.resolutions);if(f(b).length>0)return b;for(let c of h(a.availableRefs)){let d=i(a.availableRefs,c),e=a.providerGlobs?.[c];if(e)b.push({pattern:e,matched:d});else for(let a of d)b.push({pattern:a,matched:[a]})}return b}(a);if(c){let a=new Set(f(m));for(let b of l)a.has(b)||(a.add(b),m.push({pattern:b,matched:[b]}))}else{let a=new Set(l),b=[];for(let c of m){if(!c.matched.some(b=>a.has(b))){b.push(c);continue}for(let d of c.matched.filter(b=>!a.has(b)))b.push({pattern:g(d,c.pin),matched:[d],...c.pin?{pin:c.pin}:{}})}if(0===f(b).length)return{ok:!1,reason:"last-model"};m=b}let n=j(function(a,b){let c=a;for(let a of h(b.availableRefs))c=function(a,b,c){let d=b.providerGlobs?.[c];if(!d)return a;let e=i(b.availableRefs,c);if(0===e.length)return a;let f=new Set(e),g=a.filter(a=>a.matched.some(a=>f.has(a)));if(g.some(a=>a.pin))return a;let h=new Set(g.flatMap(a=>a.matched.filter(a=>f.has(a))));if(e.some(a=>!h.has(a)))return a;let j=a=>a.matched.length>0&&a.matched.every(a=>f.has(a));if(a.filter(j).length<2)return a;let k=a.findIndex(j);if(k<0)return a;let l=new Set(g.filter(a=>!j(a)).flatMap(a=>a.matched));if(e.every(a=>l.has(a)))return a;let m={pattern:d,matched:e};return a.map((a,b)=>b===k?m:a).filter((a,b)=>b===k||!j(a))}(c,b,a);return c}(m,a),a);return{ok:!0,patterns:n,changed:!k(n,a.patterns)}}c.d(b,{KL:()=>l,Ld:()=>s,XW:()=>o,hi:()=>q,jo:()=>r,s2:()=>m,vf:()=>p});let n=new Set(["off","minimal","low","medium","high","xhigh","max"]);function o(a,b){if(!a)return a;let c=b.filter(a=>a.from&&a.to&&a.from!==a.to);return 0===c.length?a:a.map(a=>{for(let{from:b,to:d}of c){if(a===b)return d;if(!a.startsWith(`${b}:`))continue;let c=a.slice(b.length+1);if(n.has(c))return`${d}:${c}`}return a})}function p(a,b){if(!a)return a;let c=b.filter(a=>a.from&&a.to&&a.from!==a.to);return 0===c.length?a:a.map(a=>{let b=c.find(b=>a.startsWith(`${b.from}/`));return b?`${b.to}${a.slice(b.from.length)}`:a})}function q(a){let b=new Set(h(a.availableRefs)),c=[],f=!1;for(let h of e(a.resolutions)){let a=h.pattern.indexOf("/"),e=a>0?h.pattern.slice(0,a):"",i=b.has(e)?h.matched.filter(a=>d(a)===e):[];if(0===i.length||i.length===h.matched.length){c.push(h);continue}for(let a of(f=!0,i))c.push({pattern:g(a,h.pin),matched:[a],...h.pin?{pin:h.pin}:{}})}if(!f)return{ok:!0,patterns:a.patterns,changed:!1};let i=j(c,a);return{ok:!0,patterns:i,changed:!k(i,a.patterns)}}function r(a){let b=e(a.resolutions).filter(a=>a.matched.length>0);if(b.length===a.resolutions.length)return{ok:!0,patterns:a.patterns,changed:!1};let c=0===b.length?void 0:j(b,a);return{ok:!0,patterns:c,changed:!k(c,a.patterns)}}function s(a){return{ok:!0,patterns:void 0,changed:void 0!==a.patterns}}},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>j,py:()=>h,uw:()=>i});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let k=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}async function h(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable(),{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),h=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!(a.includes("*")||a.includes("?")||a.includes("[")))return!1;let b=a.lastIndexOf(":");return b<0||k.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:h};let i={};for(let a of f)a.thinkingLevel&&(i[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:i,warnings:h}}function i(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function j(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],k=e||i||!d?void 0:a.visible.find(a=>g(a,d)),l=e??i?.model??k,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...l?{model:l}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},19225:(a,b,c)=>{a.exports=c(44870)},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){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Map;for(let c of(await a.getAvailable()))b.set(c.provider,[...b.get(c.provider)??[],c]);let c=[...b.keys()].some(a=>!h().has(a));for(let[a,c]of b)h().set(a,c);c&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>m,B7:()=>n,mc:()=>l,uK:()=>j.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(10879),i=c(12069),j=c(58864),k=a([g,h]);async function l(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);let f=(0,h.ej)();for(let[a,b]of Object.entries(f.projects))(0,i.KV)(f,a)||d.add((0,e.Nw)(b.root));return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function m(a,b){return(0,f.o4)(a,b)}function n(a,b){return(0,f.xk)(a,b)}[g,h]=k.then?(await k)():k,d()}catch(a){d(a)}})},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
1
+ "use strict";exports.id=27,exports.ids=[27],exports.modules={10879:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$q:()=>x,Vy:()=>v,bA:()=>y,ej:()=>u,yh:()=>C});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=c(8102),k=c(63108),l=c(37431),m=c(12069),n=a([g]);g=(n.then?(await n)():n)[0];let z=new Set(["version","revision","sessions","projects","removedProjects","projectOrder","projectNames","__proto__"]),A=Symbol.for("pi-web:session-ui-state-write-queue"),B={realpath:!1,stale:1e4,retries:{retries:10,factor:2,minTimeout:25,maxTimeout:500},onCompromised:a=>{console.warn(`[pi-web] the session UI state lock was compromised: ${a.message}`)}};class C extends Error{constructor(a="Another process holds the session UI state lock"){super(a),this.name="SessionUiStateLockedError"}}function o(){return globalThis.__piWebSessionUiStateCache??={reads:new Map,revisions:new Map}}function p(a,b){let c=o().revisions;b>(c.get(a)??-1)&&c.set(a,b)}function q(a){return structuredClone(a)}function r(a=(0,g.getAgentDir)()){return(0,f.join)(a,"pi-web-session-state.json")}function s(a){let b;try{b=JSON.parse(a)}catch{return{ok:!1}}let c=(0,m.Jx)(b);return c?{ok:!0,state:c,raw:b}:{ok:!1}}function t(a){let b,c;try{b=(0,e.statSync)(a)}catch(c){let b=c?.code;if("ENOENT"===b||"ENOTDIR"===b)return o().reads.delete(a),(0,m.ly)();throw c}let d=o().reads.get(a);if(d&&d.mtimeMs===b.mtimeMs&&d.size===b.size&&d.ino===b.ino)return d.state;let f=(0,l.y)(a,4194304);if(void 0===f)return o().reads.delete(a),(0,m.ly)();let g=s(f);return g.ok?(c=g.state,p(a,c.revision)):(console.warn(`[pi-web] ${a} is not valid session UI state; reading it as empty until the next change sets it aside`),c=(0,m.ly)()),o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:c}),c}function u(a){try{return q(t(a??r()))}catch(a){return console.warn(`[pi-web] could not read the session UI state: ${a instanceof Error?a.message:String(a)}`),(0,m.ly)()}}function v(a){try{return t(a??r()).revision}catch{return null}}function w(a,b){return(0,k.T)(A,a,async()=>{let c;(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0});try{c=await i().lock(a,B)}catch(a){if("ELOCKED"===a?.code)throw new C;throw a}try{let c,d=o().revisions.get(a)??0,f=(0,l.y)(a,4194304),g={},h=!1;if(void 0===f)c={...(0,m.ly)(),revision:d};else{let b=s(f);if(b.ok)for(let[a,d]of(c=b.state,Object.entries(b.raw)))z.has(a)||(g[a]=d);else{let b=`${a}.corrupt-${Date.now()}`;try{(0,e.renameSync)(a,b),console.warn(`[pi-web] ${a} could not be parsed; moved it to ${b} and started from an empty session UI state`)}catch(b){console.warn(`[pi-web] ${a} could not be parsed and could not be moved aside (${b instanceof Error?b.message:String(b)}); starting from an empty session UI state`)}c={...(0,m.ly)(),revision:d+1},h=!0}}let i=b(c);if(!i.changed&&!h)return q(c);let k={...i.state,version:m.fS,revision:c.revision+ +!!i.changed},n={version:k.version,revision:k.revision,sessions:k.sessions,projects:k.projects,...k.removedProjects&&Object.keys(k.removedProjects).length>0?{removedProjects:k.removedProjects}:{},...k.projectOrder?.length?{projectOrder:k.projectOrder}:{},...k.projectNames&&Object.keys(k.projectNames).length>0?{projectNames:k.projectNames}:{},...g};(0,j.$)(a,JSON.stringify(n,null,2)+"\n"),p(a,k.revision);try{let b=(0,e.statSync)(a);o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:q(k)})}catch{o().reads.delete(a)}return q(k)}finally{try{await c()}catch{}}})}function x(a,b){let c;try{c=b??r()}catch(a){return Promise.reject(a)}return w(c,b=>(0,m.D7)(b,a,Date.now()))}async function y(a,b){let c=b??r(),d=[...new Set(a)];if(0===d.length)return;let e=a=>d.some(b=>Object.prototype.hasOwnProperty.call(a.sessions,b));e(t(c))&&await w(c,a=>{if(!e(a))return{state:a,changed:!1};let b={...a.sessions};for(let a of d)delete b[a];return{state:{...a,sessions:b},changed:!0}})}d()}catch(a){d(a)}})},11881:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bl:()=>o,PM:()=>q,d5:()=>s,h3:()=>p,lv:()=>k,qB:()=>n,vF:()=>r});var e=c(21820),f=c(33873),g=c(55831),h=c(75430),i=c(13888),j=a([g,h]);[g,h]=j.then?(await j)():j;let t=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function k(a){return`${a.provider}/${a.id}`}async function l(a,b){let c={getAvailable:async()=>b},d=[];for(let b of a){let a=[];try{({scopedModels:a}=await (0,h.resolveModelScopeWithDiagnostics)([b],c))}catch{a=[]}let e=a.find(a=>a.thinkingLevel)?.thinkingLevel;d.push({pattern:b,matched:a.map(a=>k(a.model)),...e?{pin:e}:{}})}return d}let u=["*","**"];async function m(a){let b=new Map;for(let c of a){let a=b.get(c.provider);a?a.add(k(c)):b.set(c.provider,new Set([k(c)]))}let c={};for(let[d,e]of b){let b=u.map(a=>`${d}/${a}`);for(let f of(await l(b,a)))if(f.matched.length===e.size&&f.matched.every(a=>e.has(a))){c[d]=f.pattern;break}}return c}async function n(a,b,c={}){let d=await l(a??[],b),e=d.filter(a=>0===a.matched.length);if(c.catalog&&e.length>0){let a=await l(e.map(a=>a.pattern),c.catalog);e.forEach((b,c)=>{a[c].matched.length>0&&(b.known=!0)})}return{patterns:a,availableRefs:b.map(k),resolutions:d,...c.withProviderGlobs?{providerGlobs:await m(b)}:{}}}function o(a){let b=new Set([...(0,g.getBuiltinProviders)(),...a.getRegisteredProviderIds()]);return new Set(a.getProviders().map(a=>a.id).filter(a=>!b.has(a)))}function p({input:a,models:b,providerNames:c,customProviders:d,scope:e,settingsPath:f,modelError:g}){let h=(0,i.KL)(a),j=new Set(h.enabled),l=new Map;for(let a of b){let b=k(a),c=h.pins[b],d={id:a.id,name:a.name||a.id,ref:b,enabled:j.has(b),...void 0===a.contextWindow?{}:{contextWindow:a.contextWindow},...c?{thinkingPin:c}:{}},e=l.get(a.provider);e?e.push(d):l.set(a.provider,[d])}let m=[...l.entries()].map(([a,b])=>(b.sort((a,b)=>t.compare(a.name,b.name)||t.compare(a.id,b.id)),{id:a,name:c.get(a)??a,kind:d.has(a)?"custom":"builtin",enabledCount:b.filter(a=>a.enabled).length,models:b}));return m.sort((a,b)=>t.compare(a.name,b.name)||t.compare(a.id,b.id)),{allEnabled:h.allEnabled,patterns:a.patterns??null,stalePatterns:h.stalePatterns,enabledTotal:h.enabled.length,availableTotal:a.availableRefs.length,providers:m,scope:e,settingsPath:f,editable:"global"===e,...g?{modelError:g}:{}}}function q(a){let b=(0,e.homedir)();if(!b||!a.startsWith(b))return a;let c=a.slice(b.length);return""===c||c.startsWith(f.sep)?`~${c}`:a}function r(a,{cwd:b,agentDir:c}){let d=a.getProjectSettings().enabledModels,e=void 0===d?"global":"project";return{patterns:a.getEnabledModels(),scope:e,path:q("project"===e?(0,f.join)(b,".pi","settings.json"):(0,f.join)(c,"settings.json"))}}async function s(a,b){let c=a.drainErrors().find(a=>"global"===a.scope);if(c)throw c.error;a.setEnabledModels(b),await a.flush();let d=a.drainErrors();if(d.length>0)throw d[0].error}d()}catch(a){d(a)}})},13888:(a,b,c)=>{function d(a){let b=a.indexOf("/");return b<0?a:a.slice(0,b)}function e(a){return a.map(a=>({pattern:a.pattern,matched:[...a.matched],...a.pin?{pin:a.pin}:{}}))}function f(a){let b=new Set,c=[];for(let d of a)for(let a of d.matched)b.has(a)||(b.add(a),c.push(a));return c}function g(a,b){return b?`${a}:${b}`:a}function h(a){let b=[];for(let c of a){let a=d(c);b.includes(a)||b.push(a)}return b}function i(a,b){return a.filter(a=>d(a)===b)}function j(a,b){let c=a.some(a=>0===a.matched.length),d=a.some(a=>a.pin),e=new Set(f(a));if(!b.availableRefs.every(a=>e.has(a))||c||d)return a.map(a=>a.pattern)}function k(a,b){return void 0===a||void 0===b?a===b:a.length===b.length&&a.every((a,c)=>a===b[c])}function l(a){let b=e(a.resolutions),c=f(b),d={};for(let a of b)if(a.pin)for(let b of a.matched)d[b]??=a.pin;let g=0===c.length;return{allEnabled:g,enabled:g?[...a.availableRefs]:c,pins:d,stalePatterns:a.resolutions.filter(a=>0===a.matched.length&&!a.known).map(a=>a.pattern)}}function m(a,b,c){let d=new Set(a.availableRefs),l=[...new Set(b.filter(a=>d.has(a)))];if(0===l.length)return{ok:!0,patterns:a.patterns,changed:!1};let m=function(a){let b=e(a.resolutions);if(f(b).length>0)return b;for(let c of h(a.availableRefs)){let d=i(a.availableRefs,c),e=a.providerGlobs?.[c];if(e)b.push({pattern:e,matched:d});else for(let a of d)b.push({pattern:a,matched:[a]})}return b}(a);if(c){let a=new Set(f(m));for(let b of l)a.has(b)||(a.add(b),m.push({pattern:b,matched:[b]}))}else{let a=new Set(l),b=[];for(let c of m){if(!c.matched.some(b=>a.has(b))){b.push(c);continue}for(let d of c.matched.filter(b=>!a.has(b)))b.push({pattern:g(d,c.pin),matched:[d],...c.pin?{pin:c.pin}:{}})}if(0===f(b).length)return{ok:!1,reason:"last-model"};m=b}let n=j(function(a,b){let c=a;for(let a of h(b.availableRefs))c=function(a,b,c){let d=b.providerGlobs?.[c];if(!d)return a;let e=i(b.availableRefs,c);if(0===e.length)return a;let f=new Set(e),g=a.filter(a=>a.matched.some(a=>f.has(a)));if(g.some(a=>a.pin))return a;let h=new Set(g.flatMap(a=>a.matched.filter(a=>f.has(a))));if(e.some(a=>!h.has(a)))return a;let j=a=>a.matched.length>0&&a.matched.every(a=>f.has(a));if(a.filter(j).length<2)return a;let k=a.findIndex(j);if(k<0)return a;let l=new Set(g.filter(a=>!j(a)).flatMap(a=>a.matched));if(e.every(a=>l.has(a)))return a;let m={pattern:d,matched:e};return a.map((a,b)=>b===k?m:a).filter((a,b)=>b===k||!j(a))}(c,b,a);return c}(m,a),a);return{ok:!0,patterns:n,changed:!k(n,a.patterns)}}c.d(b,{KL:()=>l,Ld:()=>s,XW:()=>o,hi:()=>q,jo:()=>r,s2:()=>m,vf:()=>p});let n=new Set(["off","minimal","low","medium","high","xhigh","max"]);function o(a,b){if(!a)return a;let c=b.filter(a=>a.from&&a.to&&a.from!==a.to);return 0===c.length?a:a.map(a=>{for(let{from:b,to:d}of c){if(a===b)return d;if(!a.startsWith(`${b}:`))continue;let c=a.slice(b.length+1);if(n.has(c))return`${d}:${c}`}return a})}function p(a,b){if(!a)return a;let c=b.filter(a=>a.from&&a.to&&a.from!==a.to);return 0===c.length?a:a.map(a=>{let b=c.find(b=>a.startsWith(`${b.from}/`));return b?`${b.to}${a.slice(b.from.length)}`:a})}function q(a){let b=new Set(h(a.availableRefs)),c=[],f=!1;for(let h of e(a.resolutions)){let a=h.pattern.indexOf("/"),e=a>0?h.pattern.slice(0,a):"",i=b.has(e)?h.matched.filter(a=>d(a)===e):[];if(0===i.length||i.length===h.matched.length){c.push(h);continue}for(let a of(f=!0,i))c.push({pattern:g(a,h.pin),matched:[a],...h.pin?{pin:h.pin}:{}})}if(!f)return{ok:!0,patterns:a.patterns,changed:!1};let i=j(c,a);return{ok:!0,patterns:i,changed:!k(i,a.patterns)}}function r(a){let b=e(a.resolutions).filter((b,c)=>b.matched.length>0||a.resolutions[c].known);if(b.length===a.resolutions.length)return{ok:!0,patterns:a.patterns,changed:!1};let c=0===b.length?void 0:j(b,a);return{ok:!0,patterns:c,changed:!k(c,a.patterns)}}function s(a){return{ok:!0,patterns:void 0,changed:void 0!==a.patterns}}},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>j,py:()=>h,uw:()=>i});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let k=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}async function h(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable(),{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),h=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!(a.includes("*")||a.includes("?")||a.includes("[")))return!1;let b=a.lastIndexOf(":");return b<0||k.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:h};let i={};for(let a of f)a.thinkingLevel&&(i[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:i,warnings:h}}function i(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function j(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],k=e||i||!d?void 0:a.visible.find(a=>g(a,d)),l=e??i?.model??k,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...l?{model:l}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},19225:(a,b,c)=>{a.exports=c(44870)},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){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Set(a.getRegisteredProviderIds()),c=new Map;for(let d of(await a.getAvailable()))!b.has(d.provider)&&(!a.getModel(d.provider,d.id)||a.getPhysicalModel(d.provider,d.id))||c.set(d.provider,[...c.get(d.provider)??[],d]);let d=[...c.keys()].some(a=>!h().has(a));for(let[a,b]of c)h().set(a,b);d&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>m,B7:()=>n,mc:()=>l,uK:()=>j.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(10879),i=c(12069),j=c(58864),k=a([g,h]);async function l(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);let f=(0,h.ej)();for(let[a,b]of Object.entries(f.projects))(0,i.KV)(f,a)||d.add((0,e.Nw)(b.root));return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function m(a,b){return(0,f.o4)(a,b)}function n(a,b){return(0,f.xk)(a,b)}[g,h]=k.then?(await k)():k,d()}catch(a){d(a)}})},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=3371,exports.ids=[3371],exports.modules={3371:(a,b,c)=>{c.d(b,{registerNodeInstrumentation:()=>u});var d=c(78474),e=c(48161),f=c(76760),g=c(73136),h=c(9956),i=c(73024);let j=i.constants.O_RDONLY|(i.constants.O_NONBLOCK||0),k=globalThis,l=globalThis.fetch,m=()=>{};function n(a){if("string"==typeof a){let b=a.trim();if("disabled"===b.toLowerCase())return 0;if(0===b.length)return;return n(Number(b))}if("number"==typeof a&&Number.isFinite(a)&&!(a<0))return Math.floor(a)}function o(a){return a instanceof d.EventEmitter&&d.EventEmitter.prototype.on.call(a,"error",m),a}function p(a,b){return o(new h.Client(a,b))}function q(a,b){return 1===b.connections?p(a,b):o(new h.Pool(a,{...b,factory:p}))}let r=Symbol.for("pi-web.agentEventStreamClosers"),s=globalThis[r]??=new Set,t=Symbol.for("pi-web.agentEventStreamInfos");function u(){!function(a=process.env){(void 0===a.PI_CODEMODE_MAX_WORKERS||""===a.PI_CODEMODE_MAX_WORKERS)&&(a.PI_CODEMODE_MAX_WORKERS=String(8))}(),function(a=3e5){if(k.__piWebHttpDispatcherConfigured)return;let b=n(a);if(void 0===b)throw Error(`Invalid HTTP idle timeout: ${String(a)}`);let c=o(new h.EnvHttpProxyAgent({allowH2:!1,proxyTunnel:!0,bodyTimeout:b,connect:{autoSelectFamilyAttemptTimeout:2e3},headersTimeout:b,clientFactory:p,factory:q}));h.setGlobalDispatcher(c),globalThis.fetch===l&&h.install?.(),k.__piWebHttpDispatcherConfigured=!0}(function(a=function(){let a=process.env.PI_CODING_AGENT_DIR;return a?("win32"===process.platform&&(a=function(a){if(!a.startsWith("/")||a.startsWith("//")||a.includes("\\"))return a;let b=a.match(/^\/(?:mnt\/|cygdrive\/)?([a-z])(?:\/(.*))?$/i);return b?`${b[1].toUpperCase()}:\\${b[2]?.replaceAll("/","\\")??""}`:a}(a)),"~"===a)?(0,e.homedir)():a.startsWith("~/")||"win32"===process.platform&&a.startsWith("~\\")?(0,f.join)((0,e.homedir)(),a.slice(2)):/^file:\/\//.test(a)?(0,g.fileURLToPath)(a):a:(0,f.join)((0,e.homedir)(),".pi","agent")}()){let b,c;try{b=function(a){let b;try{b=(0,i.openSync)(a,j)}catch(b){let a;if(a=b?.code,"ENOENT"===a||"ENOTDIR"===a)return;throw b}try{if(!(0,i.fstatSync)(b).isFile())throw Error(`${a} is not a regular file`);return(0,i.readFileSync)(b,"utf8")}finally{(0,i.closeSync)(b)}}((0,f.join)(a,"settings.json"))}catch{return}if(void 0!==b){try{c=JSON.parse(65279===b.charCodeAt(0)?b.slice(1):b)}catch{return}if("object"==typeof c&&null!==c)return n(c.httpIdleTimeoutMs)}}());let a=()=>(function(){for(let a of[...s])try{a("error")}catch{}})();process.on("SIGINT",a),process.on("SIGTERM",a),Promise.resolve().then(c.bind(c,75430)).catch(()=>{})}globalThis[t]??=new Map}};
@@ -1,6 +1,6 @@
1
- "use strict";exports.id=3374,exports.ids=[3374],exports.modules={1060:(a,b,c)=>{c.d(b,{Ac:()=>p,GO:()=>k,X:()=>m,_4:()=>d,cV:()=>l,jL:()=>f,k2:()=>n,kv:()=>e,oC:()=>o});let d=262144,e=0xa00000,f=0xa00000,g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},h={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"},i={mp4:"video/mp4",m4v:"video/mp4",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg"},j={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function k(a){return(a.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function l(a){return g[k(a)]??null}function m(a){return h[k(a)]??null}function n(a){return i[k(a)]??null}function o(a){return j[k(a)]??null}function p(a){let b=k(a);return"pdf"===b||"docx"===b?b:null}},10879:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$q:()=>x,Vy:()=>v,bA:()=>y,ej:()=>u,yh:()=>C});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=c(8102),k=c(63108),l=c(37431),m=c(12069),n=a([g]);g=(n.then?(await n)():n)[0];let z=new Set(["version","revision","sessions","projects","removedProjects","projectOrder","projectNames","__proto__"]),A=Symbol.for("pi-web:session-ui-state-write-queue"),B={realpath:!1,stale:1e4,retries:{retries:10,factor:2,minTimeout:25,maxTimeout:500},onCompromised:a=>{console.warn(`[pi-web] the session UI state lock was compromised: ${a.message}`)}};class C extends Error{constructor(a="Another process holds the session UI state lock"){super(a),this.name="SessionUiStateLockedError"}}function o(){return globalThis.__piWebSessionUiStateCache??={reads:new Map,revisions:new Map}}function p(a,b){let c=o().revisions;b>(c.get(a)??-1)&&c.set(a,b)}function q(a){return structuredClone(a)}function r(a=(0,g.getAgentDir)()){return(0,f.join)(a,"pi-web-session-state.json")}function s(a){let b;try{b=JSON.parse(a)}catch{return{ok:!1}}let c=(0,m.Jx)(b);return c?{ok:!0,state:c,raw:b}:{ok:!1}}function t(a){let b,c;try{b=(0,e.statSync)(a)}catch(c){let b=c?.code;if("ENOENT"===b||"ENOTDIR"===b)return o().reads.delete(a),(0,m.ly)();throw c}let d=o().reads.get(a);if(d&&d.mtimeMs===b.mtimeMs&&d.size===b.size&&d.ino===b.ino)return d.state;let f=(0,l.y)(a,4194304);if(void 0===f)return o().reads.delete(a),(0,m.ly)();let g=s(f);return g.ok?(c=g.state,p(a,c.revision)):(console.warn(`[pi-web] ${a} is not valid session UI state; reading it as empty until the next change sets it aside`),c=(0,m.ly)()),o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:c}),c}function u(a){try{return q(t(a??r()))}catch(a){return console.warn(`[pi-web] could not read the session UI state: ${a instanceof Error?a.message:String(a)}`),(0,m.ly)()}}function v(a){try{return t(a??r()).revision}catch{return null}}function w(a,b){return(0,k.T)(A,a,async()=>{let c;(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0});try{c=await i().lock(a,B)}catch(a){if("ELOCKED"===a?.code)throw new C;throw a}try{let c,d=o().revisions.get(a)??0,f=(0,l.y)(a,4194304),g={},h=!1;if(void 0===f)c={...(0,m.ly)(),revision:d};else{let b=s(f);if(b.ok)for(let[a,d]of(c=b.state,Object.entries(b.raw)))z.has(a)||(g[a]=d);else{let b=`${a}.corrupt-${Date.now()}`;try{(0,e.renameSync)(a,b),console.warn(`[pi-web] ${a} could not be parsed; moved it to ${b} and started from an empty session UI state`)}catch(b){console.warn(`[pi-web] ${a} could not be parsed and could not be moved aside (${b instanceof Error?b.message:String(b)}); starting from an empty session UI state`)}c={...(0,m.ly)(),revision:d+1},h=!0}}let i=b(c);if(!i.changed&&!h)return q(c);let k={...i.state,version:m.fS,revision:c.revision+ +!!i.changed},n={version:k.version,revision:k.revision,sessions:k.sessions,projects:k.projects,...k.removedProjects&&Object.keys(k.removedProjects).length>0?{removedProjects:k.removedProjects}:{},...k.projectOrder?.length?{projectOrder:k.projectOrder}:{},...k.projectNames&&Object.keys(k.projectNames).length>0?{projectNames:k.projectNames}:{},...g};(0,j.$)(a,JSON.stringify(n,null,2)+"\n"),p(a,k.revision);try{let b=(0,e.statSync)(a);o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:q(k)})}catch{o().reads.delete(a)}return q(k)}finally{try{await c()}catch{}}})}function x(a,b){let c;try{c=b??r()}catch(a){return Promise.reject(a)}return w(c,b=>(0,m.D7)(b,a,Date.now()))}async function y(a,b){let c=b??r(),d=[...new Set(a)];if(0===d.length)return;let e=a=>d.some(b=>Object.prototype.hasOwnProperty.call(a.sessions,b));e(t(c))&&await w(c,a=>{if(!e(a))return{state:a,changed:!1};let b={...a.sessions};for(let a of d)delete b[a];return{state:{...a,sessions:b},changed:!0}})}d()}catch(a){d(a)}})},33012:(a,b,c)=>{c.d(b,{S:()=>y,$:()=>t});var d=c(79646),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(28354),j=c(1060);let k=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function l(a){let b=`${a.indexStatus}${a.worktreeStatus}`;return"??"===b?{status:"untracked",code:"U"}:k.has(b)||b.includes("U")?{status:"conflict",code:"C"}:b.includes("D")?{status:"deleted",code:"D"}:b.includes("R")||b.includes("C")?{status:"renamed",code:"R"}:b.includes("A")?{status:"added",code:"A"}:{status:"modified",code:"M"}}let m=(0,i.promisify)(d.execFile);async function n(a,b,c=8388608){let{stdout:d}=await m("git",["-C",a,...b],{timeout:1e4,maxBuffer:c,env:{...process.env,LC_ALL:"C"}});return d}async function o(a){try{return(await n(a,["rev-parse","--show-toplevel"])).trim()||null}catch{return null}}function p(a,b){let c=h().relative(h().resolve(a),h().resolve(b));return""===c||!c.startsWith(`..${h().sep}`)&&".."!==c&&!h().isAbsolute(c)}function q(a){return a.split(h().sep).join("/")}async function r(a,b=[]){return function(a){let b=a.split("\0"),c=[];for(let a=0;a<b.length;a++){let d=b[a];if(!d||d.length<4||" "!==d[2])continue;let e=d[0],f=d[1],g={path:d.slice(3),indexStatus:e,worktreeStatus:f};("R"===e||"C"===e||"R"===f||"C"===f)&&(g.originalPath=b[++a]||void 0),c.push(g)}return c}(await n(a,[...b,"status","--porcelain=v1","-z","--untracked-files=all"]))}async function s(a,b){let c=q(h().relative(a,b));try{let b=await n(a,["diff","--no-color","--no-ext-diff","--numstat","HEAD","--",c||"."]),d=0,e=0;for(let a of b.split(/\r?\n/)){if(!a)continue;let[b,c]=a.split(" ",2),f=Number(b),g=Number(c);Number.isInteger(f)&&(d+=f),Number.isInteger(g)&&(e+=g)}return{additions:d,deletions:e}}catch{return{additions:0,deletions:0}}}async function t(a){let b=await o(a);if(!b)return{isGitRepository:!1,repositoryRoot:null,files:[],additions:0,deletions:0};let[c,d]=await Promise.all([r(b),s(b,a)]),e=c.flatMap(c=>{let d=h().resolve(b,c.path);return p(a,d)?[{filePath:d,...l(c),indexStatus:c.indexStatus,worktreeStatus:c.worktreeStatus}]:[]}),g=e.reduce((a,b)=>a+("untracked"===b.status?function(a){try{let b=f().lstatSync(a);if(!b.isFile()||b.size>j._4)return 0;let c=f().readFileSync(a);if(u(c)||0===c.length)return 0;let d=c.toString("utf8");return d.endsWith("\n")?d.split("\n").length-1:d.split("\n").length}catch{return 0}}(b.filePath):0),0);return{isGitRepository:!0,repositoryRoot:b,files:e,additions:d.additions+g,deletions:d.deletions}}function u(a){return a.includes(0)}function v(a,b){let c=b.endsWith("\n"),d=b.split("\n");c&&d.pop();let e=d.map(a=>`+${a}`).join("\n"),f=!c&&d.length>0?"\n\":"";return`diff --git a/${a} b/${a}
1
+ "use strict";exports.id=3374,exports.ids=[3374],exports.modules={1060:(a,b,c)=>{c.d(b,{Ac:()=>p,GO:()=>k,X:()=>m,_4:()=>d,cV:()=>l,jL:()=>f,k2:()=>n,kv:()=>e,oC:()=>o});let d=262144,e=0xa00000,f=0xa00000,g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},h={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"},i={mp4:"video/mp4",m4v:"video/mp4",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg"},j={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function k(a){return(a.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function l(a){return g[k(a)]??null}function m(a){return h[k(a)]??null}function n(a){return i[k(a)]??null}function o(a){return j[k(a)]??null}function p(a){let b=k(a);return"pdf"===b||"docx"===b?b:null}},10879:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$q:()=>x,Vy:()=>v,bA:()=>y,ej:()=>u,yh:()=>C});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=c(8102),k=c(63108),l=c(37431),m=c(12069),n=a([g]);g=(n.then?(await n)():n)[0];let z=new Set(["version","revision","sessions","projects","removedProjects","projectOrder","projectNames","__proto__"]),A=Symbol.for("pi-web:session-ui-state-write-queue"),B={realpath:!1,stale:1e4,retries:{retries:10,factor:2,minTimeout:25,maxTimeout:500},onCompromised:a=>{console.warn(`[pi-web] the session UI state lock was compromised: ${a.message}`)}};class C extends Error{constructor(a="Another process holds the session UI state lock"){super(a),this.name="SessionUiStateLockedError"}}function o(){return globalThis.__piWebSessionUiStateCache??={reads:new Map,revisions:new Map}}function p(a,b){let c=o().revisions;b>(c.get(a)??-1)&&c.set(a,b)}function q(a){return structuredClone(a)}function r(a=(0,g.getAgentDir)()){return(0,f.join)(a,"pi-web-session-state.json")}function s(a){let b;try{b=JSON.parse(a)}catch{return{ok:!1}}let c=(0,m.Jx)(b);return c?{ok:!0,state:c,raw:b}:{ok:!1}}function t(a){let b,c;try{b=(0,e.statSync)(a)}catch(c){let b=c?.code;if("ENOENT"===b||"ENOTDIR"===b)return o().reads.delete(a),(0,m.ly)();throw c}let d=o().reads.get(a);if(d&&d.mtimeMs===b.mtimeMs&&d.size===b.size&&d.ino===b.ino)return d.state;let f=(0,l.y)(a,4194304);if(void 0===f)return o().reads.delete(a),(0,m.ly)();let g=s(f);return g.ok?(c=g.state,p(a,c.revision)):(console.warn(`[pi-web] ${a} is not valid session UI state; reading it as empty until the next change sets it aside`),c=(0,m.ly)()),o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:c}),c}function u(a){try{return q(t(a??r()))}catch(a){return console.warn(`[pi-web] could not read the session UI state: ${a instanceof Error?a.message:String(a)}`),(0,m.ly)()}}function v(a){try{return t(a??r()).revision}catch{return null}}function w(a,b){return(0,k.T)(A,a,async()=>{let c;(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0});try{c=await i().lock(a,B)}catch(a){if("ELOCKED"===a?.code)throw new C;throw a}try{let c,d=o().revisions.get(a)??0,f=(0,l.y)(a,4194304),g={},h=!1;if(void 0===f)c={...(0,m.ly)(),revision:d};else{let b=s(f);if(b.ok)for(let[a,d]of(c=b.state,Object.entries(b.raw)))z.has(a)||(g[a]=d);else{let b=`${a}.corrupt-${Date.now()}`;try{(0,e.renameSync)(a,b),console.warn(`[pi-web] ${a} could not be parsed; moved it to ${b} and started from an empty session UI state`)}catch(b){console.warn(`[pi-web] ${a} could not be parsed and could not be moved aside (${b instanceof Error?b.message:String(b)}); starting from an empty session UI state`)}c={...(0,m.ly)(),revision:d+1},h=!0}}let i=b(c);if(!i.changed&&!h)return q(c);let k={...i.state,version:m.fS,revision:c.revision+ +!!i.changed},n={version:k.version,revision:k.revision,sessions:k.sessions,projects:k.projects,...k.removedProjects&&Object.keys(k.removedProjects).length>0?{removedProjects:k.removedProjects}:{},...k.projectOrder?.length?{projectOrder:k.projectOrder}:{},...k.projectNames&&Object.keys(k.projectNames).length>0?{projectNames:k.projectNames}:{},...g};(0,j.$)(a,JSON.stringify(n,null,2)+"\n"),p(a,k.revision);try{let b=(0,e.statSync)(a);o().reads.set(a,{mtimeMs:b.mtimeMs,size:b.size,ino:b.ino,state:q(k)})}catch{o().reads.delete(a)}return q(k)}finally{try{await c()}catch{}}})}function x(a,b){let c;try{c=b??r()}catch(a){return Promise.reject(a)}return w(c,b=>(0,m.D7)(b,a,Date.now()))}async function y(a,b){let c=b??r(),d=[...new Set(a)];if(0===d.length)return;let e=a=>d.some(b=>Object.prototype.hasOwnProperty.call(a.sessions,b));e(t(c))&&await w(c,a=>{if(!e(a))return{state:a,changed:!1};let b={...a.sessions};for(let a of d)delete b[a];return{state:{...a,sessions:b},changed:!0}})}d()}catch(a){d(a)}})},33012:(a,b,c)=>{c.d(b,{S:()=>z,$:()=>u});var d=c(79646),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(28354),j=c(1060);let k=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function l(a){let b=`${a.indexStatus}${a.worktreeStatus}`;return"??"===b?{status:"untracked",code:"U"}:k.has(b)||b.includes("U")?{status:"conflict",code:"C"}:b.includes("D")?{status:"deleted",code:"D"}:b.includes("R")||b.includes("C")?{status:"renamed",code:"R"}:b.includes("A")?{status:"added",code:"A"}:{status:"modified",code:"M"}}var m=c(58864);let n=(0,i.promisify)(d.execFile);async function o(a,b,c=8388608){let{stdout:d}=await n("git",["-C",a,...b],{timeout:1e4,maxBuffer:c,env:{...process.env,LC_ALL:"C"}});return d}async function p(a){try{return(await o(a,["rev-parse","--show-toplevel"])).trim()||null}catch{return null}}function q(a,b){let c=h().relative(h().resolve(a),h().resolve(b));return""===c||!c.startsWith(`..${h().sep}`)&&".."!==c&&!h().isAbsolute(c)}function r(a){return a.split(h().sep).join("/")}async function s(a,b=[]){return function(a){let b=a.split("\0"),c=[];for(let a=0;a<b.length;a++){let d=b[a];if(!d||d.length<4||" "!==d[2])continue;let e=d[0],f=d[1],g={path:d.slice(3),indexStatus:e,worktreeStatus:f};("R"===e||"C"===e||"R"===f||"C"===f)&&(g.originalPath=b[++a]||void 0),c.push(g)}return c}(await o(a,[...b,"status","--porcelain=v1","-z","--untracked-files=all"]))}async function t(a,b){let c=r(h().relative(a,b));try{let b=await o(a,["diff","--no-color","--no-ext-diff","--numstat","HEAD","--",c||"."]),d=0,e=0;for(let a of b.split(/\r?\n/)){if(!a)continue;let[b,c]=a.split(" ",2),f=Number(b),g=Number(c);Number.isInteger(f)&&(d+=f),Number.isInteger(g)&&(e+=g)}return{additions:d,deletions:e}}catch{return{additions:0,deletions:0}}}async function u(a){let b=await p(a);if(!b)return{isGitRepository:!1,repositoryRoot:null,files:[],additions:0,deletions:0};let c=(0,m.V)(b),d=(0,m.V)(a),[e,g]=await Promise.all([s(b),t(c,d)]),i=e.flatMap(b=>{let e=h().resolve(c,b.path);return q(d,e)?[{filePath:h().join(a,h().relative(d,e)),...l(b),indexStatus:b.indexStatus,worktreeStatus:b.worktreeStatus}]:[]}),k=i.reduce((a,b)=>a+("untracked"===b.status?function(a){try{let b=f().lstatSync(a);if(!b.isFile()||b.size>j._4)return 0;let c=f().readFileSync(a);if(v(c)||0===c.length)return 0;let d=c.toString("utf8");return d.endsWith("\n")?d.split("\n").length-1:d.split("\n").length}catch{return 0}}(b.filePath):0),0);return{isGitRepository:!0,repositoryRoot:b,files:i,additions:g.additions+k,deletions:g.deletions}}function v(a){return a.includes(0)}function w(a,b){let c=b.endsWith("\n"),d=b.split("\n");c&&d.pop();let e=d.map(a=>`+${a}`).join("\n"),f=!c&&d.length>0?"\n\":"";return`diff --git a/${a} b/${a}
2
2
  new file mode 100644
3
3
  --- /dev/null
4
4
  +++ b/${a}
5
5
  @@ -0,0 +1,${d.length} @@
6
- ${e}${f}`}async function w(a,b,c,d=[]){try{return await n(a,[...d,"diff","--no-color","--no-ext-diff","--unified=3","HEAD","--",...c&&c!==b?[c,b]:[b]],4*j._4)}catch{return null}}async function x(a,b){let c=h().dirname(h().resolve(b));for(;!f().existsSync(c);){let a=h().dirname(c);if(a===c)break;c=a}return await o(c)??await o(a)}async function y(a,b){let c,d,e=await x(a,b);if(!e||!p(e,b))return{supported:!1};let g=p(e,a)?[]:["-c","core.fsmonitor=false"],i=h().resolve(b),k=q(h().relative(e,i)),m=(await r(e,g)).find(a=>a.path===k);if(!m)return{supported:!1};let{status:n}=l(m);if("deleted"===n){let a=await w(e,k,m.originalPath,g);return a?.includes("\n@@ ")?{supported:!0,status:n,patch:a}:{supported:!1}}try{c=f().lstatSync(i)}catch{return{supported:!1}}if(!c.isFile()||c.size>j._4)return{supported:!1};let o=f().readFileSync(i);if(u(o))return{supported:!1};let s=o.toString("utf8");if("untracked"===n)d=v(k,s);else{let a=await w(e,k,m.originalPath,g);if(null===a){if("added"!==n)return{supported:!1};d=v(k,s)}else d=a}return d.includes("\n@@ ")?{supported:!0,status:n,patch:d}:{supported:!1}}},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>m,B7:()=>n,mc:()=>l,uK:()=>j.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(10879),i=c(12069),j=c(58864),k=a([g,h]);async function l(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);let f=(0,h.ej)();for(let[a,b]of Object.entries(f.projects))(0,i.KV)(f,a)||d.add((0,e.Nw)(b.root));return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function m(a,b){return(0,f.o4)(a,b)}function n(a,b){return(0,f.xk)(a,b)}[g,h]=k.then?(await k)():k,d()}catch(a){d(a)}})}};
6
+ ${e}${f}`}async function x(a,b,c,d=[]){try{return await o(a,[...d,"diff","--no-color","--no-ext-diff","--unified=3","HEAD","--",...c&&c!==b?[c,b]:[b]],4*j._4)}catch{return null}}async function y(a,b){let c=h().dirname(h().resolve(b));for(;!f().existsSync(c);){let a=h().dirname(c);if(a===c)break;c=a}return await p(c)??await p(a)}async function z(a,b){let c,d,e=await y(a,b);if(!e)return{supported:!1};let g=(0,m.V)(e),i=(0,m.V)(b);if(!q(g,i))return{supported:!1};let k=q(g,(0,m.V)(a))?[]:["-c","core.fsmonitor=false"],n=h().resolve(b),o=r(h().relative(g,i)),p=(await s(e,k)).find(a=>a.path===o);if(!p)return{supported:!1};let{status:t}=l(p);if("deleted"===t){let a=await x(e,o,p.originalPath,k);return a?.includes("\n@@ ")?{supported:!0,status:t,patch:a}:{supported:!1}}try{c=f().lstatSync(n)}catch{return{supported:!1}}if(!c.isFile()||c.size>j._4)return{supported:!1};let u=f().readFileSync(n);if(v(u))return{supported:!1};let z=u.toString("utf8");if("untracked"===t)d=w(o,z);else{let a=await x(e,o,p.originalPath,k);if(null===a){if("added"!==t)return{supported:!1};d=w(o,z)}else d=a}return d.includes("\n@@ ")?{supported:!0,status:t,patch:d}:{supported:!1}}},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>m,B7:()=>n,mc:()=>l,uK:()=>j.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(10879),i=c(12069),j=c(58864),k=a([g,h]);async function l(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);let f=(0,h.ej)();for(let[a,b]of Object.entries(f.projects))(0,i.KV)(f,a)||d.add((0,e.Nw)(b.root));return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function m(a,b){return(0,f.o4)(a,b)}function n(a,b){return(0,f.xk)(a,b)}[g,h]=k.then?(await k)():k,d()}catch(a){d(a)}})}};
@@ -1 +1 @@
1
- "use strict";exports.id=3757,exports.ids=[3757],exports.modules={3140:(a,b,c)=>{c.d(b,{DA:()=>M,Iq:()=>G,Q6:()=>d,TB:()=>P,Wy:()=>H,Yh:()=>C,eh:()=>l,oF:()=>L,yP:()=>B,yQ:()=>u});let d="•••",e=new Set(["key","apikey","token","secret","password","passwd","passphrase","pwd","pass","credential","credentials","authorization","bearer","jwt","cookie","signature","pat"]),f=new Set([...e,"auth","sig","code","pw"]),g=["token","secret","password","passwd","apikey"],h=new Set(["file","path","dir","url","uri","endpoint","id","name","type","header","env","var","length","ttl","expiry","expires","timeout","mode","format"]),i=new Set(["-k"]);function j(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function k(a,b){let c=j(a);return!(c.length>1&&h.has(c[c.length-1]))&&c.some(a=>b.has(a)||g.some(b=>a.length>b.length&&a.endsWith(b)))}function l(a){return k(a,e)}let m=RegExp("^(?:sk-[A-Za-z0-9_-]{16,}|(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{16,}|gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|glpat-[A-Za-z0-9_-]{16,}|xox[abposr]-[A-Za-z0-9-]{10,}|(?:AKIA|ASIA)[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{30,}|ya29\\.[0-9A-Za-z_-]{20,}|npm_[A-Za-z0-9]{30,}|hf_[A-Za-z0-9]{30,}|shp(?:at|ss|ca|pa)_[A-Fa-f0-9]{20,}|dop_v1_[a-f0-9]{40,}|lin_api_[A-Za-z0-9]{20,})"),n=/^eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]*$/,o=/^[A-Za-z0-9_\-+/=.~]+$/;function p(a){return!(/\s/.test(a)||u(a))&&(!!(m.test(a)||n.test(a))||!(a.length<24||!o.test(a)||/^[./~]/.test(a)||/\.[A-Za-z][A-Za-z0-9]{0,4}$/.test(a)||a.split("/").length>2)&&!!/\d/.test(a)&&!!/[A-Za-z]/.test(a)&&(/[a-z]/.test(a)&&/[A-Z]/.test(a)||/^[0-9a-f]+$/i.test(a)||!/[-_.]/.test(a))&&function(a){let b=new Map;for(let c of a)b.set(c,(b.get(c)??0)+1);let c=0;for(let d of b.values()){let b=d/a.length;c-=b*Math.log2(b)}return c}(a)>=3.5)}let q=/\$\{[A-Za-z_][A-Za-z0-9_]*\}|\$[A-Za-z_][A-Za-z0-9_]*/,r=RegExp(q.source,"g"),s=/^(?:bearer|basic|token)\s+/i;function t(a,b,c){let d=a.replace(s,"");return b.test(d)&&/^[^A-Za-z0-9]*$/.test(d.replace(c,""))}function u(a){return t(a.replace(/\$[$!]/g,"_x"),q,r)}let v=/\$\{[A-Za-z_][A-Za-z0-9_]*\}|\$[A-Z_][A-Z0-9_]*(?![A-Za-z0-9_])/,w=RegExp(v.source,"g");function x(a){return t(a,v,w)}function y(a,b){if(!a||""===b)return;a.push(b);let c=D(b);c!==b&&a.push(c)}let z=/^([A-Za-z][A-Za-z0-9+.-]*:\/\/)([^/?#]*)/;function A(a,b,c){let e=!1,g=a,h="",i=z.exec(a);if(i){let[f,j,k]=i,l=k.lastIndexOf("@");if(l>=0&&!b(D(k.slice(0,l)))){h=`${j}${d}${k.slice(l)}`,e=!0;let a=k.slice(0,l);y(c,a);let b=a.indexOf(":");b>=0&&y(c,a.slice(b+1))}else h=f;g=a.slice(f.length)}let j=g.search(/[?#]/),l=j<0?g:g.slice(0,j),m=j<0?"":g.slice(j),n=l.split("/").map(a=>p(D(a))?(e=!0,y(c,a),d):a).join("/");return m=m.replace(/([?&#;])([^&#;]*)/g,(a,g,h)=>{let i=h.indexOf("=");if(i<0){let f=D(h);return!p(f)||b(f)?a:(e=!0,y(c,h),`${g}${d}`)}let j=h.slice(0,i),l=D(h.slice(i+1));return""===l||b(l)||!function(a){let b=a;try{b=decodeURIComponent(a)}catch{}return k(b,f)}(j)&&!p(l)?a:(e=!0,y(c,h.slice(i+1)),`${g}${j}=${d}`)}),{value:`${h}${n}${m}`,masked:e}}function B(a){return A(a,x)}function C(a){let b=[];return A(a,x,b),[...new Set(b)]}function D(a){try{return decodeURIComponent(a)}catch{return a}}let E=/^(\s*[A-Za-z][A-Za-z0-9 _.-]*=)([\s\S]*)$/;function F(a,b,c){let e=/^([A-Za-z0-9_-]+):(\s*)([\s\S]*)$/.exec(a);if(e&&""!==e[3]&&!e[3].startsWith("//")&&l(e[1])){let[,f,g,h]=e;return b(h)?{value:a,masked:!1}:(y(c,h.trim()),{value:`${f}:${g}${d}`,masked:!0})}let f=a.includes(";")?function(a,b,c){let e=a.split(";");if(e.length<2||!e.every(a=>""===a.trim()||E.test(a)))return;let f=!1;return{value:e.map(a=>{let e=E.exec(a);if(!e)return a;let[,g,h]=e;if(""===h.trim()||b(h))return a;if(l(g.slice(0,-1).trim()))return f=!0,y(c,h.trim()),`${g}${d}`;let i=F(h,b,c);return f||=i.masked,`${g}${i.value}`}).join(";"),masked:f}}(a,b,c):void 0;if(f)return f;let g=/^([A-Za-z_][A-Za-z0-9_]*)=([\s\S]*)$/.exec(a);if(g&&""!==g[2]&&l(g[1]))return b(g[2])?{value:a,masked:!1}:(y(c,g[2]),{value:`${g[1]}=${d}`,masked:!0});if(/\s/.test(a)){var h,i,j;let d,e;return h=a,i=b,j=c,e=K((d=h.split(/(\s+)/)).filter((a,b)=>b%2==0),i,!0,j),{value:d.map((a,b)=>b%2==0?e.values[b/2]:a).join(""),masked:e.masked}}if(/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(a))return A(a,b,c);if(g&&""!==g[2]){let a=F(g[2],b,c);return{value:`${g[1]}=${a.value}`,masked:a.masked}}return p(a)&&!b(a)?(y(c,a),{value:d,masked:!0}):{value:a,masked:!1}}function G(a){return F(a,x)}function H(a){let b=[];return F(a,x,b),[...new Set(b)]}function I(a){if(i.has(a))return!0;if(!/^--?[A-Za-z]/.test(a))return!1;let b=a.replace(/^-+/,"");return l(b)||"auth"===j(b).at(-1)}let J=/^(?:bearer|basic|token)$/i;function K(a,b,c,e){let f=!1,g=!1;return{values:a.map(a=>{if(""===a)return a;if(g){if(c&&J.test(a))return a;if(g=!1,!/^-[A-Za-z-]/.test(a))return b(a)?a:(f=!0,y(e,a),d)}let h=/^(--?[A-Za-z][A-Za-z0-9_.-]*)=([\s\S]*)$/.exec(a);if(h){let[,a,c]=h;if(""!==c&&I(a)&&!b(c))return f=!0,y(e,c),`${a}=${d}`;let g=F(c,b,e);return f||=g.masked,`${a}=${g.value}`}if(/^--?[A-Za-z][A-Za-z0-9_.-]*$/.test(a))return g=I(a),a;if(c){let b=/^([A-Za-z0-9_-]+):$/.exec(a);if(J.test(a)||b&&l(b[1]))return g=!0,a}let i=F(a,b,e);return f||=i.masked,i.value}),masked:f}}function L(a){let{values:b,masked:c}=K(a,x,!1);return{args:b,masked:c}}function M(a){let b=[];return K(a,x,!1,b),[...new Set(b)]}function N(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function O(a){return!a.startsWith("!")&&!u(a)}function P(a){if(!N(a))return[];let b=[];for(let c of["env","headers"]){let d=a[c];if(N(d))for(let[a,e]of Object.entries(d))"string"==typeof e&&O(e)&&""!==e&&(l(a)||/^(?:bearer|basic|token)\s+\S/i.test(e)||F(e,u).masked)&&b.push({kind:"env"===c?"env":"header",name:a})}let c=N(a.oauth)?a.oauth.clientSecret:void 0;return"string"==typeof c&&""!==c&&O(c)&&b.push({kind:"oauth-client-secret"}),"string"==typeof a.url&&B(a.url).masked&&b.push({kind:"url"}),"string"==typeof a.command&&G(a.command).masked&&b.push({kind:"command"}),Array.isArray(a.args)&&L(a.args.filter(a=>"string"==typeof a)).masked&&b.push({kind:"args"}),b}},9993:(a,b,c)=>{function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){if(d(a)&&"url"in a&&"string"==typeof a.url&&!a.auth)return(d(a.headers)?Object.keys(a.headers):[]).some(a=>"authorization"===a.toLowerCase())?void 0:a.url}function f(a,b){let c=String(new URL(b));return{key:`mcp__${a.replace(/-/g,"_")}|${c}`,legacyKey:c}}function g(a,b){return f(a,b).key}c.d(b,{Hi:()=>n,P0:()=>e,U$:()=>g,X9:()=>h,ZB:()=>o,bV:()=>l,n_:()=>f,we:()=>m});class h extends Error{constructor(){super("The server was signed out of while this connection was under way, so it stores nothing more"),this.name="McpSignedOutError"}}let i=Symbol.for("pi-web:mcp-sign-outs"),j=Symbol.for("pi-web:mcp-sign-in");function k(){let a=globalThis,b=a[j];return a[i]??=b?.signOuts??new Map}function l(a){return k().get(a)??0}function m(a){let b=k();b.set(a,(b.get(a)??0)+1)}function n(a,b){let c=g(a,b),d=l(c);return()=>{if(l(c)!==d)throw new h}}function o(a,b){class c extends a.McpOAuthCredentialStore{forServer(a,c){let d=super.forServer(a,c);return{load:()=>d.load(),save:a=>(b(),d.save(a)),withRefreshLock:a=>d.withRefreshLock(a)}}}return new c}},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>j,py:()=>h,uw:()=>i});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let k=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}async function h(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable(),{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),h=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!(a.includes("*")||a.includes("?")||a.includes("[")))return!1;let b=a.lastIndexOf(":");return b<0||k.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:h};let i={};for(let a of f)a.thinkingLevel&&(i[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:i,warnings:h}}function i(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function j(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],k=e||i||!d?void 0:a.visible.find(a=>g(a,d)),l=e??i?.model??k,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...l?{model:l}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},23757:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IW:()=>A,KO:()=>r,Sg:()=>z,XA:()=>v,fR:()=>t,lL:()=>p,lt:()=>y,pt:()=>w,r5:()=>u,zE:()=>q});var e=c(75430),f=c(3140),g=c(9993),h=c(66479),i=c(43084),j=c(60268),k=a([e,i,j]);[e,i,j]=k.then?(await k)():k;let A=2e4,B="from shell command: ",C=new Set(["codemode","deferred","direct","hidden"]);function l(a){let b;return{promise:new Promise(c=>{b=setTimeout(c,a),b.unref?.()}),cancel:()=>clearTimeout(b)}}function m(a){return a.aborted?Promise.resolve():new Promise(b=>a.addEventListener("abort",()=>b(),{once:!0}))}function n(a,b,c){var d;return d=b(a.slice(0,65536)),d.length>c?`${d.slice(0,c-1)}…`:d}function o(a,b,c){return b(a.slice(-65536)).slice(-c)}function p(a,b){return n(a,b,2e3)}function q(a,b){return o(a,b,2e3)}function r(a,b){return(0,i.xW)(a).some(({value:a})=>b.isCommandConfigValue(a))}let D=/^(?:bearer|basic|token)$/i;function s(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function t(a,b,c,d=[]){let e=new Map,g=(a,b,c)=>{let d=e.get(a);d&&(!d.word||c)||e.set(a,{raw:a,shown:b,word:c})},h=a=>{if(void 0===a)return;let b=a.trim();for(let a of(b.length>=6&&g(b,f.Q6,!1),b.split(/\s+/)))a!==b&&a.length>=6&&!D.test(a)&&g(a,f.Q6,!0)},j=(a,b)=>{b.masked&&a.length>=6&&g(a,b.value,!1)};for(let{value:b}of(0,i.xW)(a))if(c.isCommandConfigValue(b)){let a=b.slice(1);a.trim()&&g(`${B}${a}`,`${B}${f.Q6}`,!1),a.trim().length>=6&&g(a.trim(),f.Q6,!0)}else(0,f.yQ)(b)||h(b);let k=b.map(a=>a.options??{});if("url"in a){for(let a of k)for(let b of Object.values(a.headers??{}))h(b);j(a.url,(0,f.yP)(a.url));try{let b=new URL(a.url).href;b!==a.url&&j(b,(0,f.yP)(b))}catch{}for(let b of(0,f.Yh)(a.url))h(b)}else{for(let b of k)for(let c of Object.keys(a.env??{}))h(b.env?.[c]);for(let b of(j(a.command,(0,f.Iq)(a.command)),(0,f.Wy)(a.command)))h(b);let b=a.args??[],c=(0,f.oF)(b).args;for(let a of(b.forEach((a,b)=>j(a,{value:c[b]??f.Q6,masked:c[b]!==a})),(0,f.DA)(b)))h(a)}for(let a of d)h(a);let l=[...e.values()].sort((a,b)=>b.raw.length-a.raw.length).map(({raw:a,shown:b,word:c})=>({shown:b,pattern:RegExp(c?`(?<![A-Za-z0-9_])${s(a)}(?![A-Za-z0-9_])`:s(a),"g")}));return a=>l.reduce((a,{pattern:b,shown:c})=>a.replace(b,()=>c),a)}function u(a,b,c={}){let d,f=c.requestTimeoutMs??15e3,{config:g}=a,h=Math.min(g.timeout??60,f/1e3),k={name:a.name,config:{...g,timeout:h},source:a.sourcePath,scope:a.scope},l=[],m=(0,i.Pn)(b);return{connection:new b.McpServerConnection({entry:k,cwd:a.cwd,createTransport:(...a)=>{let b=m(...a);return l.push(b),b},credentials:c.credentials??new b.McpOAuthCredentialStore,providerToken:c.providerToken??(async a=>{try{return d??=(0,j.OH)().then(a=>new e.ModelRegistry(a)),await (await d).getApiKeyForProvider(a)}catch{return}}),onTools:()=>{}}),transports:l}}async function v({connection:a,transports:b},c=2e3){let d=[a.close(),...b.map(a=>a.close())].map(a=>a.catch(()=>void 0)),e=l(c);await Promise.race([Promise.all(d),e.promise]),e.cancel()}async function w({connection:a,transports:b},c,d,e,f={}){var g,h;let{config:i}=c,j=f.attempt??(()=>a.getClient()),k=Date.now(),l=e.aborted?{aborted:!0}:await Promise.race([j().then(a=>({client:a}),a=>({error:a})),m(e).then(()=>({aborted:!0}))]),p=Date.now()-k,q=b.filter(a=>a instanceof d.StdioTransport),r=q[q.length-1],s=t(i,b,d,f.resolvedSecrets),u="url"in i?{}:{cwd:r?.options.cwd??c.cwd};if("aborted"in l){let a=r?.stderr.trim();return{state:"failed",timedOut:!0,tools:[],toolCount:0,durationMs:p,...u,...a?{stderr:o(a,s,2e3)}:{}}}let v="connected"===a.state?"connected":"needs-auth"===a.state?"needs-auth":"failed",x="connected"===v?a.tools:[],y="client"in l?l.client:void 0,z={state:v,tools:x.slice(0,500).map(a=>{var b;let c,e,f,g;return c="object"==typeof a.annotations&&null!==a.annotations?a.annotations:{},e=([a.description,a.title,c.title].find(a=>"string"==typeof a)??"").split(/\r?\n/).map(a=>a.trim()).find(Boolean),{name:n(a.name,s,300),...e?{description:n(e,s,300)}:{},readOnly:!0===c.readOnlyHint,exposure:(b=a.name,f=Object.assign(Object.create(null),i.toolExposure),g=d.getMcpToolExposure({...i,toolExposure:f},b),"string"==typeof g&&C.has(g)?g:i.exposure??"codemode")}}),toolCount:x.length,durationMs:p,...u,..."connected"===v&&a.hasResources?{resources:!0}:{},...y?.serverInfo?{serverInfo:(g=y.serverInfo,{name:n(String(g.name??""),s,300),version:n(String(g.version??""),s,300),..."string"==typeof g.title&&g.title?{title:n(g.title,s,300)}:{}})}:{}};if("failed"===v){let b=a.error??("error"in l?(h=l.error)instanceof Error?h.message:String(h):"The connection failed"),{error:c,stderr:d}=function(a,b){let c=b?.stderr.trim()??"";if(!c)return{error:a};for(let b=a.indexOf("\n");b>=0;b=a.indexOf("\n",b+1)){let d=a.slice(b+1);if(d&&c.includes(d))return{error:a.slice(0,b),stderr:c}}return{error:a,stderr:c}}(b,r);z.error=n(c,s,2e3),d&&(z.stderr=o(d,s,2e3))}return z}async function x(a,b,c,d={}){let e=u(a,b,{...void 0!==d.requestTimeoutMs?{requestTimeoutMs:d.requestTimeoutMs}:{},...d.guard?{credentials:(0,g.ZB)(b,d.guard)}:{}});try{return await w(e,a,b,c)}finally{await v(e,d.closeWaitMs??2e3)}}let E=Symbol.for("pi-web:mcp-test-flights"),F=Symbol.for("pi-web:mcp-test-command-queue"),G="cancelled";async function y(a,b){let c,d,e=(d=globalThis,d[F]??={tail:Promise.resolve()}),f=e.tail,g=new Promise(a=>{c=a});e.tail=f.then(()=>g);let h=l(b),i=await Promise.race([f.then(()=>"turn"),h.promise.then(()=>"timeout"),m(a).then(()=>"aborted")]);return h.cancel(),"turn"!==i&&c(),{release:c,turn:"turn"===i,timedOut:"timeout"===i}}function z(a,b,c={}){var d,e,f,i;let j,k,n,o,p,q,s,t,u,v,w,B=[a.scope,a.sourcePath,a.name,a.configKey,a.cwd,function(a){let b=(0,g.P0)(a.config);if(void 0===b)return 0;try{return(0,g.bV)((0,g.U$)(a.name,b))}catch{return 0}}(a)].join("\0"),C=(w=globalThis,w[E]??=new Map),D=C.get(B);if(D)return D.join(c.signal),D;let F=(d=a,e=b,f=c,i=()=>{C.get(B)===F&&C.delete(B)},j=f.deadlineMs??A,k=f.closeWaitMs??2e3,n=function(a){let b=(0,g.P0)(a.config);if(void 0!==b)try{return(0,g.Hi)(a.name,b)}catch{return}}(d),o=f.connect??((a,b)=>x(a,e,b,{requestTimeoutMs:f.requestTimeoutMs,closeWaitMs:k,guard:n})),p=new AbortController,q=0,s=!1,t=[],u=async()=>{try{return await v()}finally{for(let[a,b]of t)a.removeEventListener("abort",b)}},v=async()=>{await Promise.resolve();let a=Date.now(),b=r(d.config,e),c=b?await y(p.signal,j):void 0,f=b?Date.now()-a:0,g=(a,b)=>{let c={...a,testedAt:Date.now(),...f>0?{queuedMs:f}:{}};return b&&!(()=>{try{return n?.(),!1}catch{return!0}})()&&(0,h.kY)(d,d.configKey,{...c,origin:"test"}),c},i=a=>({state:"failed",tools:[],toolCount:0,durationMs:0,...a});if(c&&!c.turn)return g(i(c.timedOut?{queueTimedOut:!0}:{}),!1);let q=setTimeout(()=>p.abort("deadline"),j);q.unref?.();let s=Date.now();try{let a=m(p.signal).then(()=>l(k+500).promise).then(()=>i({timedOut:!0,durationMs:Date.now()-s})),b=await Promise.race([o(d,p.signal),a]),c=p.signal.reason===G&&!0===b.timedOut;return g(b,!c)}finally{clearTimeout(q),c?.release()}},Object.assign(u(),{join:a=>{if(!a){s=!0;return}q+=1;let b=()=>{q-=1,0!==q||s||p.signal.aborted||(p.abort(G),i())};a.aborted?b():(a.addEventListener("abort",b,{once:!0}),t.push([a,b]))}}));return C.set(B,F),F.finally(()=>{C.get(B)===F&&C.delete(B)}).catch(()=>void 0),F.join(c.signal),F}d()}catch(a){d(a)}})},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){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Map;for(let c of(await a.getAvailable()))b.set(c.provider,[...b.get(c.provider)??[],c]);let c=[...b.keys()].some(a=>!h().has(a));for(let[a,c]of b)h().set(a,c);c&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},43084:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Pn:()=>h,aS:()=>e.aS,tF:()=>e.tF,xW:()=>e.xW});var e=c(54218),f=c(53303),g=a([f]);function h(a,b={}){let c=b.platform??process.platform;return(d,g,h)=>{var i;let j,k=(i=d.config,(j=(0,e.tF)(i,a))&&("oauth-client-secret"===j.kind?"oauth.clientSecret":`${j.kind} "${j.name}"`));if(k)throw Error(`MCP server "${d.name}" ${k} references ${e.aS}, which Pi Web does not pass to MCP servers`);let l=a.createDefaultTransport(d,g,h);if("url"in d.config)return l;if(!(l instanceof a.StdioTransport))throw Error(`MCP server "${d.name}": the SDK did not create a stdio transport`);let{env:m={},...n}=l.options,o=new Set(Object.keys(d.config.env??{})),p=Object.keys(m).find(a=>!o.has(a));if(void 0!==p)throw Error(`MCP server "${d.name}": the SDK set environment variable ${p}, which its config does not declare`);return new a.StdioTransport({...n,env:function(a,b,c){let d={};for(let[b,e]of Object.entries((0,f.$9)(a,c)))void 0!==e&&(d[b]=e);for(let[a,e]of Object.entries(b)){if("win32"===c)for(let b of Object.keys(d))b.toUpperCase()===a.toUpperCase()&&delete d[b];d[a]=e}return d}(b.baseEnvironment??process.env,m,c),inheritEnv:!1})}}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},53303:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$9:()=>h,Ds:()=>k,J1:()=>i,eD:()=>j});var e=c(75430),f=c(76760),g=a([e]);e=(g.then?(await g)():g)[0];let l="pi-web-project-command-environment",m=`<inline:${l}>`;function h(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_")||"PI_WEB_PASSWORD"===c})(a,b)&&delete c[a];return c}function i(a={}){let{abortSettleGraceMs:b=1e3,agentBinDir:c=(0,f.join)((0,e.getAgentDir)(),"bin"),baseEnvironment:d=process.env,localOperations:g=(0,e.createLocalBashOperations)({shellPath:a.shellPath}),platform:j=process.platform}=a;return{exec(a,e,f){var i;let k,l,m,n=(i=h(f.env??d,j),k="win32"===j?Object.keys(i).find(a=>"PATH"===a.toUpperCase())??"PATH":"PATH",l="win32"===j?";":":",(m=i[k]??"").split(l).filter(Boolean).includes(c)||(i[k]=[c,m].filter(Boolean).join(l)),i),{onData:o,signal:p,timeout:q}=f,r=!1,s=g.exec(a,e,{...f,env:n,onData:a=>{r||o(a)}}),t="number"==typeof q&&Number.isFinite(q)&&q>0?1e3*q:void 0;return p||void 0!==t?new Promise((a,c)=>{let d=[],e=()=>{for(let a of(r=!0,d))clearTimeout(a);p?.removeEventListener("abort",g)},f=(a,b)=>{d.push(setTimeout(()=>{e(),c(b)},Math.min(a,0x7fffffff)))},g=()=>f(b,Error("aborted"));void 0!==t&&f(t+b,Error(`timeout:${q}`)),s.then(b=>{e(),a(b)},a=>{e(),c(a)}),p?.aborted?g():p?.addEventListener("abort",g,{once:!0})}):s}}}function j(a){return{name:l,hidden:!0,factory:b=>{let c=(0,e.createBashToolDefinition)(a.cwd);b.registerTool({...c,defaultActive:!1,execute:(b,c,d,f,g)=>(0,e.createBashToolDefinition)(a.cwd,{commandPrefix:a.settings.getShellCommandPrefix(),operations:i({shellPath:a.settings.getShellPath()})}).execute(b,c,d,f,g)})}}}function k(a){let b=a.extensions.findIndex(a=>a.path===m);if(b<0)return a;let c=a.extensions.slice(0,b).find(a=>a.tools.has("bash"));return c?{...a,extensions:a.extensions.filter((a,c)=>c!==b),errors:a.errors.filter(a=>a.path!==m||a.error!==`Tool "bash" conflicts with ${c.path}`)}:a}d()}catch(a){d(a)}})},54218:(a,b,c)=>{c.d(b,{aS:()=>d,tF:()=>h,xW:()=>g});let d="PI_WEB_PASSWORD";function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a){return e(a)?Object.entries(a).filter(a=>"string"==typeof a[1]):[]}function g(a){if(!e(a))return[];if(!("url"in a))return f(a.env).map(([a,b])=>({kind:"env",name:a,value:b}));let b=f(a.headers).map(([a,b])=>({kind:"header",name:a,value:b})),c=e(a.oauth)?a.oauth.clientSecret:void 0;return"string"==typeof c&&b.push({kind:"oauth-client-secret",value:c}),b}function h(a,b){for(let{value:c,...e}of g(a))if(b.isCommandConfigValue(c)?c.toUpperCase().includes(d):b.getConfigValueEnvVarNames(c).some(a=>a.toUpperCase()===d))return e}},60268:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OH:()=>k,O_:()=>j,nx:()=>l});var e=c(75430),f=c(77598),g=c(28994),h=c(63108),i=a([e,g]);async function j(){let a=(0,e.getAgentDir)(),b=await (0,e.createAgentSessionServices)({cwd:a,agentDir:a});return await (0,g.vd)(b.modelRuntime),b.modelRuntime}[e,g]=i.then?(await i)():i;let m=Symbol.for("pi-web:shared-model-runtime-refresh");async function k(){var a;let b,c=(0,e.getAgentDir)(),d=globalThis.__piWebSharedModelRuntime;(!d||d.agentDir!==c||d.expiresAt<=Date.now())&&((b={agentDir:a=c,runtime:j(),queueKey:`${a}\0${(0,f.randomUUID)()}`,expiresAt:1/0}).runtime.then(()=>{b.expiresAt=Date.now()+6e5},()=>{globalThis.__piWebSharedModelRuntime===b&&(globalThis.__piWebSharedModelRuntime=void 0)}),d=b,globalThis.__piWebSharedModelRuntime=d);let i=await d.runtime;return(0,h.T)(m,d.queueKey,async()=>(await i.refresh({allowNetwork:!1}),await (0,g.vd)(i),i))}function l(){globalThis.__piWebSharedModelRuntime=void 0}d()}catch(a){d(a)}})},66479:(a,b,c)=>{c.d(b,{My:()=>k,Te:()=>p,Tx:()=>i,Ul:()=>r,Wu:()=>j,jQ:()=>q,kY:()=>h,mj:()=>m,vU:()=>l,wf:()=>g});var d=c(58864);let e=Symbol.for("pi-web:mcp-status:by-config");function f(){let a=globalThis;return a[e]??=new Map}function g(a){return`${a.scope}\0${a.sourcePath}\0${a.name}`}function h(a,b,c){let d=f(),e=g(a),h=d.get(e)??new Map;d.delete(e),h.delete(b),h.set(b,c),d.set(e,h);for(let a=function(a){let b=0;for(let c of a.values())b+=c.size;return b}(d);a>500;a--){let[a,b]=d.entries().next().value;b.delete(b.keys().next().value),0===b.size&&d.delete(a)}}function i(a,b){let c=f(),d=new Set(a.map(g)),e=new Set(b.map(a=>`${a.scope}\0${a.path}\0`));for(let a of[...c.keys()]){let b=a.slice(0,a.lastIndexOf("\0")+1);e.has(b)&&!d.has(a)&&c.delete(a)}return a.map(a=>{let b=function(a,b){let c=f(),d=g(a),e=c.get(d);if(!e)return;let h=e.get(b);for(let a of[...e.keys()])a!==b&&e.delete(a);return 0===e.size&&c.delete(d),h}(a,a.configKey);return b?{...a,status:b}:a})}function j(a,b,c){return f().get(g(a))?.get(b)===c}function k(a,b,c){if(!j(a,b,c))return!1;let d=f(),e=g(a),h=d.get(e);return h?.delete(b),h?.size===0&&d.delete(e),!0}function l(a,b,c,d){return!!j(a,b,c)&&(h(a,b,d),!0)}function m(a){f().delete(g(a))}let n=Symbol.for("pi-web:mcp-inactive-hosts");function o(){let a=globalThis;return a[n]??=new Map}function p(a,b){let c=o();for(c.delete(a),c.set(a,b);c.size>100;)c.delete(c.keys().next().value)}function q(a,b){let c=o();(void 0===b||c.get(a)===b)&&c.delete(a)}function r(a){let b=[...o().values()].sort((a,b)=>b.updatedAt-a.updatedAt);return(void 0===a?void 0:b.find(b=>(0,d.Eb)(b.cwd,a)))??b[0]}}};
1
+ "use strict";exports.id=3757,exports.ids=[3757],exports.modules={3140:(a,b,c)=>{c.d(b,{DA:()=>M,Iq:()=>G,Q6:()=>d,TB:()=>P,Wy:()=>H,Yh:()=>C,eh:()=>l,oF:()=>L,yP:()=>B,yQ:()=>u});let d="•••",e=new Set(["key","apikey","token","secret","password","passwd","passphrase","pwd","pass","credential","credentials","authorization","bearer","jwt","cookie","signature","pat"]),f=new Set([...e,"auth","sig","code","pw"]),g=["token","secret","password","passwd","apikey"],h=new Set(["file","path","dir","url","uri","endpoint","id","name","type","header","env","var","length","ttl","expiry","expires","timeout","mode","format"]),i=new Set(["-k"]);function j(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function k(a,b){let c=j(a);return!(c.length>1&&h.has(c[c.length-1]))&&c.some(a=>b.has(a)||g.some(b=>a.length>b.length&&a.endsWith(b)))}function l(a){return k(a,e)}let m=RegExp("^(?:sk-[A-Za-z0-9_-]{16,}|(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{16,}|gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|glpat-[A-Za-z0-9_-]{16,}|xox[abposr]-[A-Za-z0-9-]{10,}|(?:AKIA|ASIA)[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{30,}|ya29\\.[0-9A-Za-z_-]{20,}|npm_[A-Za-z0-9]{30,}|hf_[A-Za-z0-9]{30,}|shp(?:at|ss|ca|pa)_[A-Fa-f0-9]{20,}|dop_v1_[a-f0-9]{40,}|lin_api_[A-Za-z0-9]{20,})"),n=/^eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]*$/,o=/^[A-Za-z0-9_\-+/=.~]+$/;function p(a){return!(/\s/.test(a)||u(a))&&(!!(m.test(a)||n.test(a))||!(a.length<24||!o.test(a)||/^[./~]/.test(a)||/\.[A-Za-z][A-Za-z0-9]{0,4}$/.test(a)||a.split("/").length>2)&&!!/\d/.test(a)&&!!/[A-Za-z]/.test(a)&&(/[a-z]/.test(a)&&/[A-Z]/.test(a)||/^[0-9a-f]+$/i.test(a)||!/[-_.]/.test(a))&&function(a){let b=new Map;for(let c of a)b.set(c,(b.get(c)??0)+1);let c=0;for(let d of b.values()){let b=d/a.length;c-=b*Math.log2(b)}return c}(a)>=3.5)}let q=/\$\{[A-Za-z_][A-Za-z0-9_]*\}|\$[A-Za-z_][A-Za-z0-9_]*/,r=RegExp(q.source,"g"),s=/^(?:bearer|basic|token)\s+/i;function t(a,b,c){let d=a.replace(s,"");return b.test(d)&&/^[^A-Za-z0-9]*$/.test(d.replace(c,""))}function u(a){return t(a.replace(/\$[$!]/g,"_x"),q,r)}let v=/\$\{[A-Za-z_][A-Za-z0-9_]*\}|\$[A-Z_][A-Z0-9_]*(?![A-Za-z0-9_])/,w=RegExp(v.source,"g");function x(a){return t(a,v,w)}function y(a,b){if(!a||""===b)return;a.push(b);let c=D(b);c!==b&&a.push(c)}let z=/^([A-Za-z][A-Za-z0-9+.-]*:\/\/)([^/?#]*)/;function A(a,b,c){let e=!1,g=a,h="",i=z.exec(a);if(i){let[f,j,k]=i,l=k.lastIndexOf("@");if(l>=0&&!b(D(k.slice(0,l)))){h=`${j}${d}${k.slice(l)}`,e=!0;let a=k.slice(0,l);y(c,a);let b=a.indexOf(":");b>=0&&y(c,a.slice(b+1))}else h=f;g=a.slice(f.length)}let j=g.search(/[?#]/),l=j<0?g:g.slice(0,j),m=j<0?"":g.slice(j),n=l.split("/").map(a=>p(D(a))?(e=!0,y(c,a),d):a).join("/");return m=m.replace(/([?&#;])([^&#;]*)/g,(a,g,h)=>{let i=h.indexOf("=");if(i<0){let f=D(h);return!p(f)||b(f)?a:(e=!0,y(c,h),`${g}${d}`)}let j=h.slice(0,i),l=D(h.slice(i+1));return""===l||b(l)||!function(a){let b=a;try{b=decodeURIComponent(a)}catch{}return k(b,f)}(j)&&!p(l)?a:(e=!0,y(c,h.slice(i+1)),`${g}${j}=${d}`)}),{value:`${h}${n}${m}`,masked:e}}function B(a){return A(a,x)}function C(a){let b=[];return A(a,x,b),[...new Set(b)]}function D(a){try{return decodeURIComponent(a)}catch{return a}}let E=/^(\s*[A-Za-z][A-Za-z0-9 _.-]*=)([\s\S]*)$/;function F(a,b,c){let e=/^([A-Za-z0-9_-]+):(\s*)([\s\S]*)$/.exec(a);if(e&&""!==e[3]&&!e[3].startsWith("//")&&l(e[1])){let[,f,g,h]=e;return b(h)?{value:a,masked:!1}:(y(c,h.trim()),{value:`${f}:${g}${d}`,masked:!0})}let f=a.includes(";")?function(a,b,c){let e=a.split(";");if(e.length<2||!e.every(a=>""===a.trim()||E.test(a)))return;let f=!1;return{value:e.map(a=>{let e=E.exec(a);if(!e)return a;let[,g,h]=e;if(""===h.trim()||b(h))return a;if(l(g.slice(0,-1).trim()))return f=!0,y(c,h.trim()),`${g}${d}`;let i=F(h,b,c);return f||=i.masked,`${g}${i.value}`}).join(";"),masked:f}}(a,b,c):void 0;if(f)return f;let g=/^([A-Za-z_][A-Za-z0-9_]*)=([\s\S]*)$/.exec(a);if(g&&""!==g[2]&&l(g[1]))return b(g[2])?{value:a,masked:!1}:(y(c,g[2]),{value:`${g[1]}=${d}`,masked:!0});if(/\s/.test(a)){var h,i,j;let d,e;return h=a,i=b,j=c,e=K((d=h.split(/(\s+)/)).filter((a,b)=>b%2==0),i,!0,j),{value:d.map((a,b)=>b%2==0?e.values[b/2]:a).join(""),masked:e.masked}}if(/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(a))return A(a,b,c);if(g&&""!==g[2]){let a=F(g[2],b,c);return{value:`${g[1]}=${a.value}`,masked:a.masked}}return p(a)&&!b(a)?(y(c,a),{value:d,masked:!0}):{value:a,masked:!1}}function G(a){return F(a,x)}function H(a){let b=[];return F(a,x,b),[...new Set(b)]}function I(a){if(i.has(a))return!0;if(!/^--?[A-Za-z]/.test(a))return!1;let b=a.replace(/^-+/,"");return l(b)||"auth"===j(b).at(-1)}let J=/^(?:bearer|basic|token)$/i;function K(a,b,c,e){let f=!1,g=!1;return{values:a.map(a=>{if(""===a)return a;if(g){if(c&&J.test(a))return a;if(g=!1,!/^-[A-Za-z-]/.test(a))return b(a)?a:(f=!0,y(e,a),d)}let h=/^(--?[A-Za-z][A-Za-z0-9_.-]*)=([\s\S]*)$/.exec(a);if(h){let[,a,c]=h;if(""!==c&&I(a)&&!b(c))return f=!0,y(e,c),`${a}=${d}`;let g=F(c,b,e);return f||=g.masked,`${a}=${g.value}`}if(/^--?[A-Za-z][A-Za-z0-9_.-]*$/.test(a))return g=I(a),a;if(c){let b=/^([A-Za-z0-9_-]+):$/.exec(a);if(J.test(a)||b&&l(b[1]))return g=!0,a}let i=F(a,b,e);return f||=i.masked,i.value}),masked:f}}function L(a){let{values:b,masked:c}=K(a,x,!1);return{args:b,masked:c}}function M(a){let b=[];return K(a,x,!1,b),[...new Set(b)]}function N(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function O(a){return!a.startsWith("!")&&!u(a)}function P(a){if(!N(a))return[];let b=[];for(let c of["env","headers"]){let d=a[c];if(N(d))for(let[a,e]of Object.entries(d))"string"==typeof e&&O(e)&&""!==e&&(l(a)||/^(?:bearer|basic|token)\s+\S/i.test(e)||F(e,u).masked)&&b.push({kind:"env"===c?"env":"header",name:a})}let c=N(a.oauth)?a.oauth.clientSecret:void 0;return"string"==typeof c&&""!==c&&O(c)&&b.push({kind:"oauth-client-secret"}),"string"==typeof a.url&&B(a.url).masked&&b.push({kind:"url"}),"string"==typeof a.command&&G(a.command).masked&&b.push({kind:"command"}),Array.isArray(a.args)&&L(a.args.filter(a=>"string"==typeof a)).masked&&b.push({kind:"args"}),b}},9993:(a,b,c)=>{function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){if(d(a)&&"url"in a&&"string"==typeof a.url&&!a.auth)return(d(a.headers)?Object.keys(a.headers):[]).some(a=>"authorization"===a.toLowerCase())?void 0:a.url}function f(a,b){let c=String(new URL(b));return{key:`mcp__${a.replace(/-/g,"_")}|${c}`,legacyKey:c}}function g(a,b){return f(a,b).key}c.d(b,{Hi:()=>n,P0:()=>e,U$:()=>g,X9:()=>h,ZB:()=>o,bV:()=>l,n_:()=>f,we:()=>m});class h extends Error{constructor(){super("The server was signed out of while this connection was under way, so it stores nothing more"),this.name="McpSignedOutError"}}let i=Symbol.for("pi-web:mcp-sign-outs"),j=Symbol.for("pi-web:mcp-sign-in");function k(){let a=globalThis,b=a[j];return a[i]??=b?.signOuts??new Map}function l(a){return k().get(a)??0}function m(a){let b=k();b.set(a,(b.get(a)??0)+1)}function n(a,b){let c=g(a,b),d=l(c);return()=>{if(l(c)!==d)throw new h}}function o(a,b){class c extends a.McpOAuthCredentialStore{forServer(a,c){let d=super.forServer(a,c);return{load:()=>d.load(),save:a=>(b(),d.save(a)),withRefreshLock:a=>d.withRefreshLock(a)}}}return new c}},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>j,py:()=>h,uw:()=>i});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let k=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}async function h(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable(),{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),h=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!(a.includes("*")||a.includes("?")||a.includes("[")))return!1;let b=a.lastIndexOf(":");return b<0||k.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:h};let i={};for(let a of f)a.thinkingLevel&&(i[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:i,warnings:h}}function i(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function j(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],k=e||i||!d?void 0:a.visible.find(a=>g(a,d)),l=e??i?.model??k,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...l?{model:l}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},23757:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IW:()=>A,KO:()=>r,Sg:()=>z,XA:()=>v,fR:()=>t,lL:()=>p,lt:()=>y,pt:()=>w,r5:()=>u,zE:()=>q});var e=c(75430),f=c(3140),g=c(9993),h=c(66479),i=c(43084),j=c(60268),k=a([e,i,j]);[e,i,j]=k.then?(await k)():k;let A=2e4,B="from shell command: ",C=new Set(["codemode","deferred","direct","hidden"]);function l(a){let b;return{promise:new Promise(c=>{b=setTimeout(c,a),b.unref?.()}),cancel:()=>clearTimeout(b)}}function m(a){return a.aborted?Promise.resolve():new Promise(b=>a.addEventListener("abort",()=>b(),{once:!0}))}function n(a,b,c){var d;return d=b(a.slice(0,65536)),d.length>c?`${d.slice(0,c-1)}…`:d}function o(a,b,c){return b(a.slice(-65536)).slice(-c)}function p(a,b){return n(a,b,2e3)}function q(a,b){return o(a,b,2e3)}function r(a,b){return(0,i.xW)(a).some(({value:a})=>b.isCommandConfigValue(a))}let D=/^(?:bearer|basic|token)$/i;function s(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function t(a,b,c,d=[]){let e=new Map,g=(a,b,c)=>{let d=e.get(a);d&&(!d.word||c)||e.set(a,{raw:a,shown:b,word:c})},h=a=>{if(void 0===a)return;let b=a.trim();for(let a of(b.length>=6&&g(b,f.Q6,!1),b.split(/\s+/)))a!==b&&a.length>=6&&!D.test(a)&&g(a,f.Q6,!0)},j=(a,b)=>{b.masked&&a.length>=6&&g(a,b.value,!1)};for(let{value:b}of(0,i.xW)(a))if(c.isCommandConfigValue(b)){let a=b.slice(1);a.trim()&&g(`${B}${a}`,`${B}${f.Q6}`,!1),a.trim().length>=6&&g(a.trim(),f.Q6,!0)}else(0,f.yQ)(b)||h(b);let k=b.map(a=>a.options??{});if("url"in a){for(let a of k)for(let b of Object.values(a.headers??{}))h(b);j(a.url,(0,f.yP)(a.url));try{let b=new URL(a.url).href;b!==a.url&&j(b,(0,f.yP)(b))}catch{}for(let b of(0,f.Yh)(a.url))h(b)}else{for(let b of k)for(let c of Object.keys(a.env??{}))h(b.env?.[c]);for(let b of(j(a.command,(0,f.Iq)(a.command)),(0,f.Wy)(a.command)))h(b);let b=a.args??[],c=(0,f.oF)(b).args;for(let a of(b.forEach((a,b)=>j(a,{value:c[b]??f.Q6,masked:c[b]!==a})),(0,f.DA)(b)))h(a)}for(let a of d)h(a);let l=[...e.values()].sort((a,b)=>b.raw.length-a.raw.length).map(({raw:a,shown:b,word:c})=>({shown:b,pattern:RegExp(c?`(?<![A-Za-z0-9_])${s(a)}(?![A-Za-z0-9_])`:s(a),"g")}));return a=>l.reduce((a,{pattern:b,shown:c})=>a.replace(b,()=>c),a)}function u(a,b,c={}){let d,f=c.requestTimeoutMs??15e3,{config:g}=a,h=Math.min(g.timeout??60,f/1e3),k={name:a.name,config:{...g,timeout:h},source:a.sourcePath,scope:a.scope},l=[],m=(0,i.Pn)(b);return{connection:new b.McpServerConnection({entry:k,cwd:a.cwd,createTransport:(...a)=>{let b=m(...a);return l.push(b),b},credentials:c.credentials??new b.McpOAuthCredentialStore,providerToken:c.providerToken??(async a=>{try{return d??=(0,j.OH)().then(a=>new e.ModelRegistry(a)),await (await d).getApiKeyForProvider(a)}catch{return}}),onTools:()=>{}}),transports:l}}async function v({connection:a,transports:b},c=2e3){let d=[a.close(),...b.map(a=>a.close())].map(a=>a.catch(()=>void 0)),e=l(c);await Promise.race([Promise.all(d),e.promise]),e.cancel()}async function w({connection:a,transports:b},c,d,e,f={}){var g,h;let{config:i}=c,j=f.attempt??(()=>a.getClient()),k=Date.now(),l=e.aborted?{aborted:!0}:await Promise.race([j().then(a=>({client:a}),a=>({error:a})),m(e).then(()=>({aborted:!0}))]),p=Date.now()-k,q=b.filter(a=>a instanceof d.StdioTransport),r=q[q.length-1],s=t(i,b,d,f.resolvedSecrets),u="url"in i?{}:{cwd:r?.options.cwd??c.cwd};if("aborted"in l){let a=r?.stderr.trim();return{state:"failed",timedOut:!0,tools:[],toolCount:0,durationMs:p,...u,...a?{stderr:o(a,s,2e3)}:{}}}let v="connected"===a.state?"connected":"needs-auth"===a.state?"needs-auth":"failed",x="connected"===v?a.tools:[],y="client"in l?l.client:void 0,z={state:v,tools:x.slice(0,500).map(a=>{var b;let c,e,f,g;return c="object"==typeof a.annotations&&null!==a.annotations?a.annotations:{},e=([a.description,a.title,c.title].find(a=>"string"==typeof a)??"").split(/\r?\n/).map(a=>a.trim()).find(Boolean),{name:n(a.name,s,300),...e?{description:n(e,s,300)}:{},readOnly:!0===c.readOnlyHint,exposure:(b=a.name,f=Object.assign(Object.create(null),i.toolExposure),g=d.getMcpToolExposure({...i,toolExposure:f},b),"string"==typeof g&&C.has(g)?g:i.exposure??"codemode")}}),toolCount:x.length,durationMs:p,...u,..."connected"===v&&a.hasResources?{resources:!0}:{},...y?.serverInfo?{serverInfo:(g=y.serverInfo,{name:n(String(g.name??""),s,300),version:n(String(g.version??""),s,300),..."string"==typeof g.title&&g.title?{title:n(g.title,s,300)}:{}})}:{}};if("failed"===v){let b=a.error??("error"in l?(h=l.error)instanceof Error?h.message:String(h):"The connection failed"),{error:c,stderr:d}=function(a,b){let c=b?.stderr.trim()??"";if(!c)return{error:a};for(let b=a.indexOf("\n");b>=0;b=a.indexOf("\n",b+1)){let d=a.slice(b+1);if(d&&c.includes(d))return{error:a.slice(0,b),stderr:c}}return{error:a,stderr:c}}(b,r);z.error=n(c,s,2e3),d&&(z.stderr=o(d,s,2e3))}return z}async function x(a,b,c,d={}){let e=u(a,b,{...void 0!==d.requestTimeoutMs?{requestTimeoutMs:d.requestTimeoutMs}:{},...d.guard?{credentials:(0,g.ZB)(b,d.guard)}:{}});try{return await w(e,a,b,c)}finally{await v(e,d.closeWaitMs??2e3)}}let E=Symbol.for("pi-web:mcp-test-flights"),F=Symbol.for("pi-web:mcp-test-command-queue"),G="cancelled";async function y(a,b){let c,d,e=(d=globalThis,d[F]??={tail:Promise.resolve()}),f=e.tail,g=new Promise(a=>{c=a});e.tail=f.then(()=>g);let h=l(b),i=await Promise.race([f.then(()=>"turn"),h.promise.then(()=>"timeout"),m(a).then(()=>"aborted")]);return h.cancel(),"turn"!==i&&c(),{release:c,turn:"turn"===i,timedOut:"timeout"===i}}function z(a,b,c={}){var d,e,f,i;let j,k,n,o,p,q,s,t,u,v,w,B=[a.scope,a.sourcePath,a.name,a.configKey,a.cwd,function(a){let b=(0,g.P0)(a.config);if(void 0===b)return 0;try{return(0,g.bV)((0,g.U$)(a.name,b))}catch{return 0}}(a)].join("\0"),C=(w=globalThis,w[E]??=new Map),D=C.get(B);if(D)return D.join(c.signal),D;let F=(d=a,e=b,f=c,i=()=>{C.get(B)===F&&C.delete(B)},j=f.deadlineMs??A,k=f.closeWaitMs??2e3,n=function(a){let b=(0,g.P0)(a.config);if(void 0!==b)try{return(0,g.Hi)(a.name,b)}catch{return}}(d),o=f.connect??((a,b)=>x(a,e,b,{requestTimeoutMs:f.requestTimeoutMs,closeWaitMs:k,guard:n})),p=new AbortController,q=0,s=!1,t=[],u=async()=>{try{return await v()}finally{for(let[a,b]of t)a.removeEventListener("abort",b)}},v=async()=>{await Promise.resolve();let a=Date.now(),b=r(d.config,e),c=b?await y(p.signal,j):void 0,f=b?Date.now()-a:0,g=(a,b)=>{let c={...a,testedAt:Date.now(),...f>0?{queuedMs:f}:{}};return b&&!(()=>{try{return n?.(),!1}catch{return!0}})()&&(0,h.kY)(d,d.configKey,{...c,origin:"test"}),c},i=a=>({state:"failed",tools:[],toolCount:0,durationMs:0,...a});if(c&&!c.turn)return g(i(c.timedOut?{queueTimedOut:!0}:{}),!1);let q=setTimeout(()=>p.abort("deadline"),j);q.unref?.();let s=Date.now();try{let a=m(p.signal).then(()=>l(k+500).promise).then(()=>i({timedOut:!0,durationMs:Date.now()-s})),b=await Promise.race([o(d,p.signal),a]),c=p.signal.reason===G&&!0===b.timedOut;return g(b,!c)}finally{clearTimeout(q),c?.release()}},Object.assign(u(),{join:a=>{if(!a){s=!0;return}q+=1;let b=()=>{q-=1,0!==q||s||p.signal.aborted||(p.abort(G),i())};a.aborted?b():(a.addEventListener("abort",b,{once:!0}),t.push([a,b]))}}));return C.set(B,F),F.finally(()=>{C.get(B)===F&&C.delete(B)}).catch(()=>void 0),F.join(c.signal),F}d()}catch(a){d(a)}})},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){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Set(a.getRegisteredProviderIds()),c=new Map;for(let d of(await a.getAvailable()))!b.has(d.provider)&&(!a.getModel(d.provider,d.id)||a.getPhysicalModel(d.provider,d.id))||c.set(d.provider,[...c.get(d.provider)??[],d]);let d=[...c.keys()].some(a=>!h().has(a));for(let[a,b]of c)h().set(a,b);d&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},43084:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Pn:()=>h,aS:()=>e.aS,tF:()=>e.tF,xW:()=>e.xW});var e=c(54218),f=c(53303),g=a([f]);function h(a,b={}){let c=b.platform??process.platform;return(d,g,h)=>{var i;let j,k=(i=d.config,(j=(0,e.tF)(i,a))&&("oauth-client-secret"===j.kind?"oauth.clientSecret":`${j.kind} "${j.name}"`));if(k)throw Error(`MCP server "${d.name}" ${k} references ${e.aS}, which Pi Web does not pass to MCP servers`);let l=a.createDefaultTransport(d,g,h);if("url"in d.config)return l;if(!(l instanceof a.StdioTransport))throw Error(`MCP server "${d.name}": the SDK did not create a stdio transport`);let{env:m={},...n}=l.options,o=new Set(Object.keys(d.config.env??{})),p=Object.keys(m).find(a=>!o.has(a));if(void 0!==p)throw Error(`MCP server "${d.name}": the SDK set environment variable ${p}, which its config does not declare`);return new a.StdioTransport({...n,env:function(a,b,c){let d={};for(let[b,e]of Object.entries((0,f.$9)(a,c)))void 0!==e&&(d[b]=e);for(let[a,e]of Object.entries(b)){if("win32"===c)for(let b of Object.keys(d))b.toUpperCase()===a.toUpperCase()&&delete d[b];d[a]=e}return d}(b.baseEnvironment??process.env,m,c),inheritEnv:!1})}}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},53303:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$9:()=>h,Ds:()=>k,J1:()=>i,eD:()=>j});var e=c(75430),f=c(76760),g=a([e]);e=(g.then?(await g)():g)[0];let l="pi-web-project-command-environment",m=`<inline:${l}>`;function h(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_")||"PI_WEB_PASSWORD"===c})(a,b)&&delete c[a];return c}function i(a={}){let{abortSettleGraceMs:b=1e3,agentBinDir:c=(0,f.join)((0,e.getAgentDir)(),"bin"),baseEnvironment:d=process.env,localOperations:g=(0,e.createLocalBashOperations)({shellPath:a.shellPath}),platform:j=process.platform}=a;return{exec(a,e,f){var i;let k,l,m,n=(i=h(f.env??d,j),k="win32"===j?Object.keys(i).find(a=>"PATH"===a.toUpperCase())??"PATH":"PATH",l="win32"===j?";":":",(m=i[k]??"").split(l).filter(Boolean).includes(c)||(i[k]=[c,m].filter(Boolean).join(l)),i),{onData:o,signal:p,timeout:q}=f,r=!1,s=g.exec(a,e,{...f,env:n,onData:a=>{r||o(a)}}),t="number"==typeof q&&Number.isFinite(q)&&q>0?1e3*q:void 0;return p||void 0!==t?new Promise((a,c)=>{let d=[],e=()=>{for(let a of(r=!0,d))clearTimeout(a);p?.removeEventListener("abort",g)},f=(a,b)=>{d.push(setTimeout(()=>{e(),c(b)},Math.min(a,0x7fffffff)))},g=()=>f(b,Error("aborted"));void 0!==t&&f(t+b,Error(`timeout:${q}`)),s.then(b=>{e(),a(b)},a=>{e(),c(a)}),p?.aborted?g():p?.addEventListener("abort",g,{once:!0})}):s}}}function j(a){return{name:l,hidden:!0,factory:b=>{let c=(0,e.createBashToolDefinition)(a.cwd);b.registerTool({...c,defaultActive:!1,execute:(b,c,d,f,g)=>(0,e.createBashToolDefinition)(a.cwd,{commandPrefix:a.settings.getShellCommandPrefix(),operations:i({shellPath:a.settings.getShellPath()})}).execute(b,c,d,f,g)})}}}function k(a){let b=a.extensions.findIndex(a=>a.path===m);if(b<0)return a;let c=a.extensions.slice(0,b).find(a=>a.tools.has("bash"));return c?{...a,extensions:a.extensions.filter((a,c)=>c!==b),errors:a.errors.filter(a=>a.path!==m||a.error!==`Tool "bash" conflicts with ${c.path}`)}:a}d()}catch(a){d(a)}})},54218:(a,b,c)=>{c.d(b,{aS:()=>d,tF:()=>h,xW:()=>g});let d="PI_WEB_PASSWORD";function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a){return e(a)?Object.entries(a).filter(a=>"string"==typeof a[1]):[]}function g(a){if(!e(a))return[];if(!("url"in a))return f(a.env).map(([a,b])=>({kind:"env",name:a,value:b}));let b=f(a.headers).map(([a,b])=>({kind:"header",name:a,value:b})),c=e(a.oauth)?a.oauth.clientSecret:void 0;return"string"==typeof c&&b.push({kind:"oauth-client-secret",value:c}),b}function h(a,b){for(let{value:c,...e}of g(a))if(b.isCommandConfigValue(c)?c.toUpperCase().includes(d):b.getConfigValueEnvVarNames(c).some(a=>a.toUpperCase()===d))return e}},60268:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OH:()=>k,O_:()=>j,nx:()=>l});var e=c(75430),f=c(77598),g=c(28994),h=c(63108),i=a([e,g]);async function j(){let a=(0,e.getAgentDir)(),b=await (0,e.createAgentSessionServices)({cwd:a,agentDir:a});return await (0,g.vd)(b.modelRuntime),b.modelRuntime}[e,g]=i.then?(await i)():i;let m=Symbol.for("pi-web:shared-model-runtime-refresh");async function k(){var a;let b,c=(0,e.getAgentDir)(),d=globalThis.__piWebSharedModelRuntime;(!d||d.agentDir!==c||d.expiresAt<=Date.now())&&((b={agentDir:a=c,runtime:j(),queueKey:`${a}\0${(0,f.randomUUID)()}`,expiresAt:1/0}).runtime.then(()=>{b.expiresAt=Date.now()+6e5},()=>{globalThis.__piWebSharedModelRuntime===b&&(globalThis.__piWebSharedModelRuntime=void 0)}),d=b,globalThis.__piWebSharedModelRuntime=d);let i=await d.runtime;return(0,h.T)(m,d.queueKey,async()=>(await i.refresh({allowNetwork:!1}),await (0,g.vd)(i),i))}function l(){globalThis.__piWebSharedModelRuntime=void 0}d()}catch(a){d(a)}})},66479:(a,b,c)=>{c.d(b,{My:()=>k,Te:()=>p,Tx:()=>i,Ul:()=>r,Wu:()=>j,jQ:()=>q,kY:()=>h,mj:()=>m,vU:()=>l,wf:()=>g});var d=c(58864);let e=Symbol.for("pi-web:mcp-status:by-config");function f(){let a=globalThis;return a[e]??=new Map}function g(a){return`${a.scope}\0${a.sourcePath}\0${a.name}`}function h(a,b,c){let d=f(),e=g(a),h=d.get(e)??new Map;d.delete(e),h.delete(b),h.set(b,c),d.set(e,h);for(let a=function(a){let b=0;for(let c of a.values())b+=c.size;return b}(d);a>500;a--){let[a,b]=d.entries().next().value;b.delete(b.keys().next().value),0===b.size&&d.delete(a)}}function i(a,b){let c=f(),d=new Set(a.map(g)),e=new Set(b.map(a=>`${a.scope}\0${a.path}\0`));for(let a of[...c.keys()]){let b=a.slice(0,a.lastIndexOf("\0")+1);e.has(b)&&!d.has(a)&&c.delete(a)}return a.map(a=>{let b=function(a,b){let c=f(),d=g(a),e=c.get(d);if(!e)return;let h=e.get(b);for(let a of[...e.keys()])a!==b&&e.delete(a);return 0===e.size&&c.delete(d),h}(a,a.configKey);return b?{...a,status:b}:a})}function j(a,b,c){return f().get(g(a))?.get(b)===c}function k(a,b,c){if(!j(a,b,c))return!1;let d=f(),e=g(a),h=d.get(e);return h?.delete(b),h?.size===0&&d.delete(e),!0}function l(a,b,c,d){return!!j(a,b,c)&&(h(a,b,d),!0)}function m(a){f().delete(g(a))}let n=Symbol.for("pi-web:mcp-inactive-hosts");function o(){let a=globalThis;return a[n]??=new Map}function p(a,b){let c=o();for(c.delete(a),c.set(a,b);c.size>100;)c.delete(c.keys().next().value)}function q(a,b){let c=o();(void 0===b||c.get(a)===b)&&c.delete(a)}function r(a){let b=[...o().values()].sort((a,b)=>b.updatedAt-a.updatedAt);return(void 0===a?void 0:b.find(b=>(0,d.Eb)(b.cwd,a)))??b[0]}}};
@@ -1 +1 @@
1
- exports.id=3824,exports.ids=[3824],exports.modules={18904:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>j,py:()=>h,uw:()=>i});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let k=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}async function h(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable(),{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),h=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!(a.includes("*")||a.includes("?")||a.includes("[")))return!1;let b=a.lastIndexOf(":");return b<0||k.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:h};let i={};for(let a of f)a.thinkingLevel&&(i[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:i,warnings:h}}function i(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function j(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],k=e||i||!d?void 0:a.visible.find(a=>g(a,d)),l=e??i?.model??k,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...l?{model:l}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},28967:(a,b,c)=>{"use strict";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){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Map;for(let c of(await a.getAvailable()))b.set(c.provider,[...b.get(c.provider)??[],c]);let c=[...b.keys()].some(a=>!h().has(a));for(let[a,c]of b)h().set(a,c);c&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},60268:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{OH:()=>k,O_:()=>j,nx:()=>l});var e=c(75430),f=c(77598),g=c(28994),h=c(63108),i=a([e,g]);async function j(){let a=(0,e.getAgentDir)(),b=await (0,e.createAgentSessionServices)({cwd:a,agentDir:a});return await (0,g.vd)(b.modelRuntime),b.modelRuntime}[e,g]=i.then?(await i)():i;let m=Symbol.for("pi-web:shared-model-runtime-refresh");async function k(){var a;let b,c=(0,e.getAgentDir)(),d=globalThis.__piWebSharedModelRuntime;(!d||d.agentDir!==c||d.expiresAt<=Date.now())&&((b={agentDir:a=c,runtime:j(),queueKey:`${a}\0${(0,f.randomUUID)()}`,expiresAt:1/0}).runtime.then(()=>{b.expiresAt=Date.now()+6e5},()=>{globalThis.__piWebSharedModelRuntime===b&&(globalThis.__piWebSharedModelRuntime=void 0)}),d=b,globalThis.__piWebSharedModelRuntime=d);let i=await d.runtime;return(0,h.T)(m,d.queueKey,async()=>(await i.refresh({allowNetwork:!1}),await (0,g.vd)(i),i))}function l(){globalThis.__piWebSharedModelRuntime=void 0}d()}catch(a){d(a)}})},63108:(a,b,c)=>{"use strict";function d(a,b,c){let d=globalThis,e=d[a]??=new Map,f=(e.get(b)??Promise.resolve()).then(c),g=f.then(()=>void 0,()=>void 0);return e.set(b,g),g.then(()=>{e.get(b)===g&&e.delete(b)}),f}c.d(b,{T:()=>d})},69429:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{C:()=>n,Q:()=>m});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=a([g]);g=(j.then?(await j)():j)[0];let o={encoding:"utf-8",mode:384};function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function l(a,b){let c,d;d=(0,f.dirname)(a),(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0,mode:448}),(0,e.existsSync)(a)||((0,e.writeFileSync)(a,"{}",o),(0,e.chmodSync)(a,384));let g=await i().lock(a,{retries:{retries:10,factor:2,minTimeout:100,maxTimeout:1e4,randomize:!0},stale:3e4,onCompromised:a=>{c=a}}),h=()=>{if(c)throw c};try{h();let c=JSON.parse((0,e.readFileSync)(a,"utf-8"));if(!k(c))throw Error("Invalid auth.json: expected an object");let{result:d,changed:f}=b(c);return f&&(h(),(0,e.writeFileSync)(a,JSON.stringify(c,null,2),o),(0,e.chmodSync)(a,384),h()),d}finally{try{await g()}catch{}}}function m(a,b,c=(0,f.join)((0,g.getAgentDir)(),"auth.json")){return l(c,c=>(c[a]=b,{result:void 0,changed:!0}))}async function n(a,b,c=(0,f.join)((0,g.getAgentDir)(),"auth.json")){return l(c,c=>{if(!Object.hasOwn(c,a))return{result:{status:"not_found"},changed:!1};let d=c[a],e=k(d)&&"string"==typeof d.type?d.type:"unknown";return e!==b?{result:{status:"type_mismatch",storedType:e},changed:!1}:(delete c[a],{result:{status:"removed"},changed:!0})})}d()}catch(a){d(a)}})},78335:()=>{},96487:()=>{}};
1
+ exports.id=3824,exports.ids=[3824],exports.modules={18904:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>j,py:()=>h,uw:()=>i});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let k=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}async function h(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable(),{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),h=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!(a.includes("*")||a.includes("?")||a.includes("[")))return!1;let b=a.lastIndexOf(":");return b<0||k.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:h};let i={};for(let a of f)a.thinkingLevel&&(i[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:i,warnings:h}}function i(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function j(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],k=e||i||!d?void 0:a.visible.find(a=>g(a,d)),l=e??i?.model??k,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...l?{model:l}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},28967:(a,b,c)=>{"use strict";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){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Set(a.getRegisteredProviderIds()),c=new Map;for(let d of(await a.getAvailable()))!b.has(d.provider)&&(!a.getModel(d.provider,d.id)||a.getPhysicalModel(d.provider,d.id))||c.set(d.provider,[...c.get(d.provider)??[],d]);let d=[...c.keys()].some(a=>!h().has(a));for(let[a,b]of c)h().set(a,b);d&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},60268:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{OH:()=>k,O_:()=>j,nx:()=>l});var e=c(75430),f=c(77598),g=c(28994),h=c(63108),i=a([e,g]);async function j(){let a=(0,e.getAgentDir)(),b=await (0,e.createAgentSessionServices)({cwd:a,agentDir:a});return await (0,g.vd)(b.modelRuntime),b.modelRuntime}[e,g]=i.then?(await i)():i;let m=Symbol.for("pi-web:shared-model-runtime-refresh");async function k(){var a;let b,c=(0,e.getAgentDir)(),d=globalThis.__piWebSharedModelRuntime;(!d||d.agentDir!==c||d.expiresAt<=Date.now())&&((b={agentDir:a=c,runtime:j(),queueKey:`${a}\0${(0,f.randomUUID)()}`,expiresAt:1/0}).runtime.then(()=>{b.expiresAt=Date.now()+6e5},()=>{globalThis.__piWebSharedModelRuntime===b&&(globalThis.__piWebSharedModelRuntime=void 0)}),d=b,globalThis.__piWebSharedModelRuntime=d);let i=await d.runtime;return(0,h.T)(m,d.queueKey,async()=>(await i.refresh({allowNetwork:!1}),await (0,g.vd)(i),i))}function l(){globalThis.__piWebSharedModelRuntime=void 0}d()}catch(a){d(a)}})},63108:(a,b,c)=>{"use strict";function d(a,b,c){let d=globalThis,e=d[a]??=new Map,f=(e.get(b)??Promise.resolve()).then(c),g=f.then(()=>void 0,()=>void 0);return e.set(b,g),g.then(()=>{e.get(b)===g&&e.delete(b)}),f}c.d(b,{T:()=>d})},69429:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{C:()=>n,Q:()=>m});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=a([g]);g=(j.then?(await j)():j)[0];let o={encoding:"utf-8",mode:384};function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function l(a,b){let c,d;d=(0,f.dirname)(a),(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0,mode:448}),(0,e.existsSync)(a)||((0,e.writeFileSync)(a,"{}",o),(0,e.chmodSync)(a,384));let g=await i().lock(a,{retries:{retries:10,factor:2,minTimeout:100,maxTimeout:1e4,randomize:!0},stale:3e4,onCompromised:a=>{c=a}}),h=()=>{if(c)throw c};try{h();let c=JSON.parse((0,e.readFileSync)(a,"utf-8"));if(!k(c))throw Error("Invalid auth.json: expected an object");let{result:d,changed:f}=b(c);return f&&(h(),(0,e.writeFileSync)(a,JSON.stringify(c,null,2),o),(0,e.chmodSync)(a,384),h()),d}finally{try{await g()}catch{}}}function m(a,b,c=(0,f.join)((0,g.getAgentDir)(),"auth.json")){return l(c,c=>(c[a]=b,{result:void 0,changed:!0}))}async function n(a,b,c=(0,f.join)((0,g.getAgentDir)(),"auth.json")){return l(c,c=>{if(!Object.hasOwn(c,a))return{result:{status:"not_found"},changed:!1};let d=c[a],e=k(d)&&"string"==typeof d.type?d.type:"unknown";return e!==b?{result:{status:"type_mismatch",storedType:e},changed:!1}:(delete c[a],{result:{status:"removed"},changed:!0})})}d()}catch(a){d(a)}})},78335:()=>{},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=4698,exports.ids=[4698],exports.modules={305:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Up:()=>n,dp:()=>m,e5:()=>k,wQ:()=>i});var e=c(10674),f=a([e]);e=(f.then?(await f)():f)[0];let o=["read","bash","edit","write"],p=new Set(["bash","powershell"]);function g(a,b=process.platform){return"win32"===b&&a?.includes("powershell")===!0&&!a.includes("bash")}function h(a,b){let c=b?"powershell":"bash",d=[];for(let b of a){let a=p.has(b)?c:b;d.includes(a)||d.push(a)}return d}function i(a,b,c=process.platform){return h(a,g(b,c))}function j(a){return a.startsWith("+")||a.startsWith("-")}function k(a){let b=a.filter(a=>!j(a)),c=b.length>0||0===a.length?b:[...o];for(let b of a){if(!j(b))continue;let a=b.slice(1),d=c.indexOf(a);b.startsWith("+")&&-1===d&&a?c.push(a):b.startsWith("-")&&-1!==d&&c.splice(d,1)}return c}function l(a){let b=(0,e.cj)(a);return void 0===b?void 0:k(b)}async function m(a=(0,e.WD)(void 0),b=process.platform){return(0,e.lz)(a,a=>g(l(a),b))}async function n(a,b=(0,e.WD)(void 0),c=process.platform){if("win32"!==c)throw Error("PowerShell tool settings are only available on Windows");return await (0,e.AC)(b,b=>{let c=l(b)??o,d=h(c,a);c.some(a=>p.has(a))||d.push(a?"powershell":"bash"),b.defaultTools=d}),a}d()}catch(a){d(a)}})},2650:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B6:()=>A,Db:()=>x,M7:()=>y,Vq:()=>u,cu:()=>m,n7:()=>z,t1:()=>q});var e=c(76760),f=c(75430),g=c(99999),h=c(43084),i=c(49507),j=c(72498),k=c(37431),l=a([f,g,h,i,j]);[f,g,h,i,j]=l.then?(await l)():l;let A="PI_WEB_DISABLE_MCP";function m(a=process.env){let b=a[A]?.trim().toLowerCase();return void 0!==b&&""!==b&&"0"!==b&&"false"!==b}async function n(){let a;if(await (0,f.createCodemodeExtension)({models:!1})({registerTool:b=>{a=b},getSettings:()=>({}),getAllTools:()=>[],appendEntry:()=>{}}),!a)throw Error("the codemode extension registered no tool");return a}async function o(a={}){let b,c=a.timeoutMs??1e4,d=new AbortController,e=new Promise((a,e)=>{b=setTimeout(()=>{d.abort(),e(Error(`the sandbox did not answer within ${c} ms`))},c),b.unref?.()});try{let b=(async()=>{let b=await (a.createDefinition??n)();return await b.execute("pi-web-self-test",{code:"return 6 * 7"},d.signal,void 0,void 0)})();b.catch(()=>{});let c=await Promise.race([b,e]),f=(c.content??[]).flatMap(a=>"text"===a.type&&void 0!==a.text?[a.text]:[]);if(c.isError)return{available:!1,reason:`the self-test script failed: ${f.join(" ").trim()||"no output"}`};if(!f.some(a=>"42"===a.trim()))return{available:!1,reason:`the self-test script returned ${JSON.stringify(f.join(" ").trim())}`};return{available:!0}}catch(a){return{available:!1,reason:a instanceof Error?a.message:String(a)}}finally{clearTimeout(b)}}let B=Symbol.for("pi-web.codemodeSandbox");function p(){let a=globalThis;return a[B]??=o().then(a=>(a.available||console.warn(`[pi-web] Code mode is off: ${a.reason}`),a))}let C=Symbol("not settled");async function q(){let a=globalThis[B];if(!a)return{checked:!1};let b=await Promise.race([a,Promise.resolve(C)]);return b===C?{checked:!1}:{checked:!0,...b}}let D=Symbol.for("pi-web.mcpOffWarned");async function r(){let a=function(a,b=process.env){return m(b)?{available:!1,reason:`${A} is set`}:a.ok?{available:!0,internals:a}:{available:!1,reason:a.reason}}(await (0,i.U)()),b=globalThis;return a.available||m()||b[D]===a.reason||(b[D]=a.reason,console.warn(`[pi-web] MCP is off: ${a.reason}`)),a}let E=["codemode","tool-search","mcp"];function s(a,b){let c,d=(0,k.y)(a,b);if(void 0===d)return;try{c=JSON.parse(65279===d.charCodeAt(0)?d.slice(1):d)}catch{return}let e="object"==typeof c&&null!==c?c.extensions:void 0;return Array.isArray(e)?e.filter(a=>"string"==typeof a):void 0}async function t(a,b,c){let{agentDir:d,cwd:e,projectTrusted:g}=a,h=new f.DefaultPackageManager({cwd:e,agentDir:d,settingsManager:f.SettingsManager.fromStorage({withLock:(a,c)=>{let d=b[a];c(d?JSON.stringify({extensions:d}):void 0)}},{projectTrusted:g}),builtinExtensions:[...E]}),i=await h.resolve(async()=>"skip"),j={};for(let a of E){let b=i.extensions.find(b=>b.path===`builtin:${a}`),d=b?.enabled??!0;j[a]=d?{enabled:d}:{enabled:d,settingsPath:b?.metadata.scope==="project"?c.project:c.global}}return j}async function u(a){let{agentDir:b}=a,c=void 0!==a.cwd&&a.projectTrusted,d=a.cwd??b,g={global:(0,e.join)(b,"settings.json"),project:(0,e.join)(d,f.CONFIG_DIR_NAME,"settings.json")},h=s(g.global),i=c?s(g.project,k.T):void 0,j=await t({agentDir:b,cwd:d,projectTrusted:c},{global:h,project:i},g);if(void 0===i)return j;let l=await t({agentDir:b,cwd:d,projectTrusted:!1},{global:h},g);for(let a of E)j[a].global=l[a];return j}let F=()=>{};function v(a,b){return{name:a,factory:b,replaceable:!0,builtin:!0}}function w(a,b){let c=b.gate??((a,b)=>b),d=a.available?new g.nx({...b.mcpHost,agentDir:b.agentDir,internals:a.internals,codemodeAvailable:b.codemodeAvailable}):void 0,e=[v("tool-search",c("tool-search",(0,f.createToolSearchExtension)())),v("mcp",c("mcp",a.available&&d?(0,f.createMcpExtension)({loadConfig:function(a,b,c=a=>(0,j.n)(a,b)){return d=>{let e;try{e=a.loadMcpConfig({agentDir:b,cwd:d.cwd,projectTrusted:c(d.cwd)}).autoEnableCodemode}catch{}return{servers:[],errors:[],...void 0===e?{}:{autoEnableCodemode:e}}}}(a.internals,b.agentDir),createTransport:d.wrapTransportFactory((0,h.Pn)(a.internals)),startupWaitMs:0,openUrl:()=>{}}):F))];return d&&e.push(d.extension()),{extensions:e,mcpHost:d}}async function x(a){let b=await p();if(!b.available)throw Error(`Code mode is unavailable: ${b.reason}`);let c=(0,f.createCodemodeExtension)();return{name:"codemode",replaceable:!0,factory:async b=>{(await u({agentDir:a.agentDir,cwd:a.cwd,projectTrusted:a.projectTrusted()})).codemode.enabled&&await c(b)}}}async function y(a){return w(await r(),{agentDir:a.agentDir,codemodeAvailable:()=>a.codemode,...a.mcpHost?{mcpHost:a.mcpHost}:{},gate:(b,c)=>async d=>{(await u({agentDir:a.agentDir,cwd:a.cwd,projectTrusted:a.projectTrusted()}))[b].enabled&&await c(d)}})}async function z(a){let[b,c]=await Promise.all([p(),r()]),{extensions:d,mcpHost:e}=w(c,{agentDir:a.agentDir,codemodeAvailable:()=>b.available,...a.mcpHost?{mcpHost:a.mcpHost}:{}});return{extensions:[v("codemode",b.available?(0,f.createCodemodeExtension)():F),...d],mcpHost:e}}d()}catch(a){d(a)}})},10674:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>o,WD:()=>k,cj:()=>m,lz:()=>n});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=a([g]);function k(a=(0,g.getAgentDir)()){return(0,f.join)(a,"settings.json")}function l(a){if(!(0,e.existsSync)(a))return{};let b=JSON.parse((0,e.readFileSync)(a,"utf8"));if("object"!=typeof b||null===b||Array.isArray(b))throw Error("Invalid settings.json: expected an object");return b}function m(a){if(void 0!==a.defaultTools){if(!Array.isArray(a.defaultTools)||a.defaultTools.some(a=>"string"!=typeof a))throw Error("Invalid settings.json: defaultTools must be an array of strings");return[...a.defaultTools]}}async function n(a,b){if(!(0,e.existsSync)(a))return b({});let c=await i().lock(a,{realpath:!1,retries:10});try{return b(l(a))}finally{await c()}}async function o(a,b){(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0});try{(0,e.writeFileSync)(a,"{}",{flag:"wx",mode:384})}catch(a){if("EEXIST"!==a.code)throw a}let c=await i().lock(a,{realpath:!1,retries:10});try{let c=l(a),d=b(c);return(0,e.writeFileSync)(a,JSON.stringify(c,null,2),"utf8"),(0,e.chmodSync)(a,384),d}finally{await c()}}g=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},11784:(a,b,c)=>{c.d(b,{Y:()=>e,y:()=>g});let d=/^Unexpected token '([\s\S])', ([\s\S]*) is not valid JSON$/;function e(a,b){let c,e,f,g=a instanceof Error?a.message:String(a);if(!g.includes('"'))return g;let h=d.exec(g);if(!h)return"Not valid JSON";let[,i,j]=h,k=i.charCodeAt(0),l=/[\p{L}\p{N}]/u.test(i)?"":/[\p{P}\p{S}]/u.test(i)?` '${i}'`:` U+${k.toString(16).toUpperCase().padStart(4,"0")}`,m=function(a,b,c){let d,e=c.startsWith('..."'),f=c.endsWith('"...'),g=c.slice(3*!!e,f?-3:void 0);if(g.length<2||!g.startsWith('"')||!g.endsWith('"')||!e&&!f)return;let h=g.slice(1,-1);if(e)if(f){for(d=a.indexOf(h);d>=0&&a[d+10]!==b;)d=a.indexOf(h,d+1);if(d<0)return;d+=10}else{if(!a.endsWith(h))return;d=a.length-h.length+10}else{if(!a.startsWith(h))return;d=h.length-10}return a[d]===b?d:void 0}(b,i,j);return`Unexpected token${l} in JSON${void 0===m?"":` ${e=(c=b.slice(0,m)).split("\n").length,f=m-c.lastIndexOf("\n"),`at position ${m} (line ${e} column ${f})`}`}`}let f=/is not valid JSON$/;function g(a,b){let c=b.map(a=>`${a}: `).find(b=>a.startsWith(b))??"",d=a.slice(c.length);return f.test(d)?`${c}${e(d,"")}`:a}},44088:(a,b,c)=>{c.d(b,{Ai:()=>g,Ll:()=>e,pM:()=>d,zT:()=>f});let d="builtin:mcp";function e(a){return"mcp"===a.name&&a.sourceInfo?.path===d}function f(a){return"prompt"!==a.source&&("mcp"===a.name||/^mcp:\d+$/.test(a.name))}function g(a,b){if(!a.startsWith("/"))return"wait";let c=a.indexOf(" "),d=-1===c?a.slice(1):a.slice(1,c),f=b.find(a=>a.name===d);return f?e(f)?"register":"none":"wait"}},49507:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{U:()=>p});var e=c(75430),f=c(73024),g=c(98995),h=c(76760),i=c(73136),j=a([e]);e=(j.then?(await j)():j)[0];let q="@earendil-works/pi-coding-agent",r="@earendil-works/pi-mcp",s={mcpExtension:"dist/extensions/mcp/index.js",mcpRuntime:"dist/extensions/mcp/runtime.js",mcpConfig:"dist/extensions/mcp/config.js",mcpOAuth:"dist/extensions/mcp/oauth.js",mcpServers:"dist/core/mcp-servers.js",configValues:"dist/core/resolve-config-value.js"},t={McpServerConnection:{module:"mcpRuntime",kind:"class"},createDefaultTransport:{module:"mcpRuntime",kind:"function"},StdioTransport:{module:"mcpClient",kind:"class"},loadMcpConfig:{module:"mcpConfig",kind:"function"},addMcpServerConfig:{module:"mcpConfig",kind:"function"},updateMcpServerConfig:{module:"mcpConfig",kind:"function"},removeMcpServerConfig:{module:"mcpConfig",kind:"function"},validateMcpServerConfig:{module:"mcpServers",kind:"function"},getMcpToolExposure:{module:"mcpServers",kind:"function"},signInMcpServer:{module:"mcpOAuth",kind:"function"},McpOAuthCredentialStore:{module:"mcpOAuth",kind:"class"},McpSignInCancelledError:{module:"mcpOAuth",kind:"class"},resolveConfigValueOrThrow:{module:"configValues",kind:"function"},resolveHeadersOrThrow:{module:"configValues",kind:"function"},getConfigValueEnvVarNames:{module:"configValues",kind:"function"},isCommandConfigValue:{module:"configValues",kind:"function"}};function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function l(a){return a instanceof Error?a.message:String(a)}async function m(a){return await import((0,i.pathToFileURL)(a).href)}let u=new Set(["node","import","module-sync","node-addons","default"]);async function n(a){let b=Object.fromEntries(Object.entries(s).map(([b,c])=>[b,(0,h.join)(a,c)]));try{b.mcpClient=function(a){let b=(0,i.pathToFileURL)((0,h.join)(a,s.mcpRuntime)).href,c=(0,g.findPackageJSON)(r,b);if(!c)throw Error(`cannot resolve ${r}`);let d=function(a){if(!k(a))return;let{exports:b}=a;return void 0===b?"string"==typeof a.main?a.main:"index.js":function a(b){if("string"==typeof b||null===b)return b;for(let c of Array.isArray(b)?b:k(b)?Object.entries(b).filter(([a])=>u.has(a)).map(([,a])=>a):[]){let b=a(c);if(void 0!==b)return b}}(k(b)&&"."in b?b["."]:b)??void 0}(JSON.parse((0,f.readFileSync)(c,"utf8")));if(!d)throw Error(`${c} declares no import entry`);return(0,h.join)(c,"..",d)}(a)}catch(a){return`${r}: ${l(a)}`}let c={};for(let[a,d]of Object.entries(b))try{c[a]=await m(d)}catch(a){return`cannot load ${d}: ${l(a)}`}return c}async function o(a={}){var b;let c,{environment:d=process.env,cwd:j=process.cwd()}=a;if(d.PI_PACKAGE_DIR)return{ok:!1,reason:`PI_PACKAGE_DIR is set; MCP support loads only from the ${q} that Pi Web runs`};try{c=(0,f.realpathSync)((0,e.getPackageDir)());let a=function(a){let b=(0,g.findPackageJSON)(q,(0,i.pathToFileURL)((0,h.join)(a,"package.json")).href);if(!b)throw Error(`cannot resolve ${q} from ${a}`);return(0,f.realpathSync)((0,h.join)(b,".."))}(j);if(b=c,"win32"===process.platform?b.toLowerCase()!==a.toLowerCase():b!==a)return{ok:!1,reason:`${q} at ${c} is not the package Pi Web resolves (${a})`}}catch(a){return{ok:!1,reason:`cannot locate ${q}: ${l(a)}`}}let k=await n(c);if("string"==typeof k)return{ok:!1,reason:k};if(k.mcpExtension.createMcpExtension!==e.createMcpExtension)return{ok:!1,reason:`${s.mcpExtension} loaded as a second copy of ${q}`};let m=function(a){let b={};for(let[c,{module:d,kind:e}]of Object.entries(t)){let f=a[d][c];if("class"===e?!("function"==typeof f&&/^class[\s{]/.test(Function.prototype.toString.call(f))):"function"!=typeof f){let a="mcpClient"===d?r:s[d];return`${a} does not export ${c} as a ${e}`}b[c]=f}return b}(k);if("string"==typeof m)return{ok:!1,reason:m};let p={packageDir:c,...m};try{if(!(p.createDefaultTransport({name:"pi-web-probe",config:{command:"pi-web-probe"},source:"pi-web"},p.packageDir,void 0)instanceof p.StdioTransport))return{ok:!1,reason:`${r} resolved to another copy than ${s.mcpRuntime} uses`}}catch(a){return{ok:!1,reason:`${s.mcpRuntime}: ${l(a)}`}}return{ok:!0,...p}}let v=Symbol.for("pi-web.piSdkInternals");function p(){let a=globalThis;return a[v]??=o().catch(a=>({ok:!1,reason:l(a)}))}d()}catch(a){d(a)}})},76609:(a,b,c)=>{c.d(b,{U2:()=>i,dj:()=>f,qu:()=>h});var d=c(77598);function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a,b=0){return Array.isArray(a)||e(a)?b>=64?"<too deep>":Array.isArray(a)?`[${a.map(a=>f(a,b+1)).join(",")}]`:`{${Object.keys(a).sort().map(c=>`${JSON.stringify(c)}:${f(a[c],b+1)}`).join(",")}}`:JSON.stringify(a)??"null"}let g=Symbol.for("pi-web:mcp-config-key-secret");function h(a){let b=globalThis,c=b[g]??=(0,d.randomBytes)(32);return(0,d.createHmac)("sha256",c).update(f(a)).digest("base64url")}function i(a,b){return h(e(b)?b:a)}},85825:(a,b,c)=>{c.d(b,{lW:()=>d,vN:()=>e,vR:()=>f});let d=["enabled","exposure","toolExposure"];function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)&&void 0===a.command&&void 0===a.url&&void 0===a.type}function f(a,b,c){return c?Object.keys(b).some(a=>!d.includes(a))?`server "${a}": an override can only set ${d.join(", ")}`:void 0:`server "${a}" needs "command" or "url", or a global server to override`}},99999:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{nx:()=>D});var e=c(73024),f=c(76760),g=c(75430),h=c(44088),i=c(76609),j=c(11784),k=c(85825),l=c(66479),m=c(23757),n=c(82536),o=c(72498),p=a([g,m,o]);[g,m,o]=p.then?(await p)():p;let w=new Set(["tools/list"]);function q(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function r(a){return a instanceof Error?a.message:String(a)}let x=Symbol.for("pi-web:mcp-config-errors-logged");function s(a){let b=globalThis,c=b[x]??=new Set;c.has(a)||(c.size>=200&&c.delete(c.values().next().value),c.add(a),console.warn(`[pi-web] MCP config: ${a}`))}let y=e.constants.O_RDONLY|(e.constants.O_NONBLOCK||0)|(e.constants.O_NOFOLLOW||0);function t(a){return a instanceof Error?a.name:void 0}let z={connecting:"connecting",ready:"connected",failed:"failed","needs-auth":"needs-auth",disconnected:"disconnected"};class A{constructor(a,b,c,d){this.configKey=a,this.scope=b,this.target=c,this.started=!1,this.settled=!1,this.waited=!1,this.released=!1,this.state="connecting",this.startedListeners=new Set,this.settledListeners=new Set,this.declaresTools=(d.exposure??"codemode")==="direct"||Object.values(d.toolExposure??{}).includes("direct")}markStarted(){if(!this.started){for(let a of(this.started=!0,this.startedListeners))a();this.startedListeners.clear()}}update(a,b={}){if(this.state=a,this.error=b.error,this.stderr=b.stderr,"connecting"!==a&&!this.settled){for(let a of(this.settled=!0,this.markStarted(),this.settledListeners))a();this.settledListeners.clear()}}whenStarted(){return this.started?Promise.resolve():new Promise(a=>this.startedListeners.add(a))}whenSettled(){return this.settled?Promise.resolve():new Promise(a=>this.settledListeners.add(a))}}let B=/is already registered by extension "(.+)"$/;function u(a){try{return a.sessionManager?.getSessionId()??""}catch{return""}}function v(a){let b;return{promise:new Promise(c=>{b=setTimeout(c,a),b.unref?.()}),cancel:()=>clearTimeout(b)}}class C{constructor(a,b){this.pi=a,this.options=b,this.active=!1,this.disposed=!1,this.attempts=new Map,this.abandoned=new Map,this.problems=new Map,this.problemReports=new Map,this.queue=Promise.resolve(),this.runActive=!1,this.preparing=0,this.isCommandValue=a=>this.options.internals.isCommandConfigValue?.(a)??a.startsWith("!"),a.on("session_start",(b,c)=>{if(this.disposed)return;this.ctx=c;let d=a.getCommands().filter(h.zT);this.active=d.some(h.Ll),this.reportActivity(c,this.active?void 0:d[0]?.sourceInfo?.path)}),a.on("before_agent_start",()=>{this.clearIdle(),this.sync()}),a.on("agent_start",()=>{this.runActive=!0,this.clearIdle()}),a.on("agent_end",()=>{this.runActive=!1,this.armIdle()}),a.on("session_shutdown",()=>{this.dispose()})}attemptFor(a){let b=this.attempts.get(a.name);return b&&!b.released&&b.configKey===(0,i.dj)(a.config)?b:void 0}refuseAbandoned(a){let b=`${a.name}\0${(0,i.dj)(a.config)}`,c=this.abandoned.get(b);return!!c&&(c>1?this.abandoned.set(b,c-1):this.abandoned.delete(b),console.warn(`[pi-web] MCP server "${a.name}" was unregistered before its connection opened; its transport is refused`),!0)}transportFailed(a,b,c){a.current=void 0;let d=(0,m.fR)(b.config,[],{isCommandConfigValue:this.isCommandValue});this.update(a,"failed",{error:(0,m.lL)(r(c),d)})}watch(a,b,c,d){let e;a.markStarted(),a.current=c,this.update(a,"connecting");let f=a=>(e??=(0,m.fR)(b.config,[c],{isCommandConfigValue:this.isCommandValue}))(a),g=a=>void 0===a?{}:{stderr:(0,m.zE)(a,f)};!function(a,b,c){var d;let e,f,g,h,i,j,k,l,m,n,o=!1,p=!1,r=!1,s=a=>{let c;(c=t(a),"McpOAuthAuthorizationRequiredError"===c||b&&"McpAuthRequiredError"===c)?p=!0:void 0===m&&"McpConnectionClosedError"!==t(a)&&(m=a)},u=()=>{let b="string"==typeof a.stderr?a.stderr.trim():"";return b?{stderr:b}:{}};if(d=a=>{"ready"===a?(o=!0,c({type:"ready"})):c({type:"failed",authRequired:p,...void 0===m?{}:{error:m},...u()})},f=!1,g=!1,h=0,i=new Set,j=a=>{f||(f=!0,d(a))},k=()=>{setImmediate(()=>{f||!g||void 0===e||i.size>0||e&&0===h||j("ready")})},l=a.send.bind(a),a.send=a=>(q(a)&&"string"==typeof a.method&&(void 0!==a.id&&w.has(a.method)?(i.add(a.id),h+=1):void 0===a.id&&"notifications/initialized"===a.method&&(g=!0,k())),l(a)),a.onMessage(a=>{if(q(a)&&void 0===a.method&&void 0!==a.id){if(void 0===e&&q(a.result)&&q(a.result.capabilities)){let{capabilities:b}=a.result;e=!!b.tools,k();return}i.delete(a.id)&&k()}}),a.onClose(()=>j("closed")),"function"==typeof a.start){let b=a.start;a.start=()=>b.call(a).catch(a=>{throw s(a),a})}let v=a.send;if(a.send=b=>(q(b)&&"initialize"===b.method&&void 0!==b.id&&(n=b.id),v.call(a,b).catch(a=>{throw s(a),a})),"function"==typeof a.close){let b=a.close;a.close=()=>(r=!0,b.call(a))}a.onMessage(a=>{void 0===m&&void 0!==n&&q(a)&&a.id===n&&q(a.error)&&"string"==typeof a.error.message&&(m=a.error.message)}),a.onClose(()=>{o&&c({type:"closed",dropped:!r,authRequired:p,...u()})})}(c,d,b=>{if(a.current===c)if("ready"===b.type)this.update(a,"ready");else if("failed"===b.type)if(b.authRequired)this.update(a,"needs-auth");else{let c=void 0===b.error?"The connection closed before the server was ready":r(b.error);this.update(a,"failed",{error:(0,m.lL)(c,f),...g(b.stderr)})}else b.authRequired?this.update(a,"needs-auth"):b.dropped&&this.update(a,"disconnected",g(b.stderr))})}sync(){let a=this.enqueue(async()=>{if(!this.active||!this.ctx)return;let a=this.desiredServers(this.ctx);for(let[b,c]of[...this.attempts]){let d=a.get(b);d&&(0,i.dj)(d.config)===c.configKey||await this.unregister(b)}for(let[b,c]of a)this.attempts.has(b)||this.register(b,c);this.reportProblems()});return a.then(()=>this.armIdle()),a}async prepareForPrompt(a,b){this.clearIdle(),this.runActive=!1,this.preparing+=1;try{await this.waitForServers(a,b)}finally{this.preparing-=1,this.armIdle()}}async waitForServers(a,b){let c=a.aborted?Promise.resolve():new Promise(b=>a.addEventListener("abort",()=>b(),{once:!0}));if(await Promise.race([this.sync(),c]),a.aborted||!b)return;let d=[...this.attempts.values()].filter(a=>a.declaresTools&&!a.settled&&!a.waited);if(0===d.length)return;let e=v(this.options.promptWaitMs),f=await Promise.race([Promise.all(d.map(a=>a.whenSettled())).then(()=>!1),e.promise.then(()=>!0),c.then(()=>!1)]);if(e.cancel(),f)for(let a of d)a.waited=!0}serverStates(){let a=[...this.problems.values()].map(a=>a.status);for(let[b,c]of this.attempts)a.push({name:b,scope:c.scope,state:c.state,...c.error?{error:c.error}:{},...c.stderr?{stderr:c.stderr}:{}});return a.sort((a,b)=>a.name.localeCompare(b.name)||a.scope.localeCompare(b.scope))}release(){return this.enqueue(async()=>{for(let a of[...this.attempts.keys()])await this.unregister(a)})}dispose(){this.disposed=!0,this.active=!1,this.clearIdle(),this.letGoOfAll(),this.reportActivity(void 0,void 0)}entryConfigKey(a,b){return(0,i.U2)(b,this.options.internals.validateMcpServerConfig?.(a,b))}projectEntryConfigKey(a,b,c){return q(b)&&(0,k.vN)(b)&&void 0===(0,k.vR)(a,b,void 0!==c)?this.entryConfigKey(a,{...c,...b}):this.entryConfigKey(a,b)}write(a,b){let c=this.ctx;if(!c)return;let d={origin:"session",state:b.state,sessionId:u(c),cwd:c.cwd,updatedAt:Date.now(),...b.error?{error:b.error}:{},...b.stderr?{stderr:b.stderr}:{},...b.conflict?{conflict:b.conflict}:{}};return(0,l.kY)(a,a.configKey,d),d}update(a,b,c={}){a.update(b,c),a.released||(a.recorded=this.write(a.target,{state:z[b],...c}))}letGo(a){a.released=!0;let{target:b,recorded:c}=a;c&&("connecting"===a.state?(0,l.My)(b,b.configKey,c):"ready"===a.state&&(0,l.vU)(b,b.configKey,c,{...c,closedAt:Date.now()}))}letGoOfAll(){for(let a of this.attempts.values())this.letGo(a);for(let{target:a,status:b}of this.problemReports.values())(0,l.My)(a,a.configKey,b);this.problemReports.clear()}reportProblems(){let a=new Set;for(let{target:b,report:c}of this.problems.values()){let d=(0,l.wf)(b);a.add(d);let e=[b.configKey,c.state,c.conflict??"",c.error??""].join("\0"),f=this.problemReports.get(d);if(f?.signature===e&&(0,l.Wu)(b,b.configKey,f.status))continue;let g=this.write(b,c);g&&this.problemReports.set(d,{signature:e,target:b,status:g})}for(let b of[...this.problemReports.keys()])a.has(b)||this.problemReports.delete(b)}reportActivity(a,b){if(this.inactiveReport&&(0,l.jQ)(this.inactiveReport.sessionId,this.inactiveReport.info),this.inactiveReport=void 0,!a)return;let c=u(a);if(!b)return void(0,l.jQ)(c);let d={owner:b,cwd:a.cwd,updatedAt:Date.now()};(0,l.Te)(c,d),this.inactiveReport={sessionId:c,info:d}}enqueue(a){let b=this.queue.then(a);return this.queue=b.catch(a=>{console.error("[pi-web] MCP host operation failed:",r(a))}),this.queue}desiredServers(a){let b;this.problems=new Map;let c=new Map,d=this.options.mayReadProjectConfig(a.cwd);try{b=this.options.internals.loadMcpConfig({agentDir:this.options.agentDir,cwd:a.cwd,projectTrusted:d})}catch(a){s(`cannot read mcp.json: ${r(a)}`)}let h=(0,f.join)(a.cwd,g.CONFIG_DIR_NAME,"mcp.json");if(!d){let c=function(a){let b,c=(0,f.join)(a,g.CONFIG_DIR_NAME,"mcp.json");try{if((0,n.TU)(c))return[];let d=(0,e.realpathSync)(c);if(!(0,n.o4)(d,(0,n.qy)(new Set([a]))))return[];b=(0,e.openSync)(d,y);let f=(0,e.fstatSync)(b);if(!f.isFile()||f.size>1048576)return[];let g=Buffer.alloc(f.size+1),h=0;for(;h<g.length;){let a=(0,e.readSync)(b,g,h,g.length-h,null);if(0===a)break;h+=a}if(h>f.size)return[];let i=JSON.parse(g.toString("utf8",0,h).replace(/^\uFEFF/,""));return q(i)&&q(i.mcpServers)?Object.entries(i.mcpServers):[]}catch{return[]}finally{void 0!==b&&(0,e.closeSync)(b)}}(a.cwd),d=new Map((b?.servers??[]).map(a=>[a.name,a.config]));for(let[a,b]of c.slice(0,100))try{this.problems.set(`project\0${a}`,{status:{name:a,scope:"project",state:"not-trusted"},target:{scope:"project",sourcePath:h,name:a,configKey:this.projectEntryConfigKey(a,b,d.get(a))},report:{state:"not-trusted"}})}catch(b){s(`${h}: server "${a}" is not reported: ${r(b)}`)}c.length>100&&s(`${h}: ${c.length-100} more servers of this untrusted project are not reported`)}if(!b)return c;let k=[(0,f.join)(this.options.agentDir,"mcp.json"),h];for(let a of b.errors.slice(0,20))s((0,j.y)(a,k));for(let a of(b.errors.length>20&&s(`${b.errors.length-20} more errors in mcp.json are not logged`),b.servers)){if(!1===a.config.enabled)continue;let b=a.override,d="project"===a.scope||void 0!==b?"project":"global";try{c.set(a.name,{config:function(a,b){if(b)return a;let c=a=>"codemode"===a?"deferred":a,d=a.toolExposure?Object.fromEntries(Object.entries(a.toolExposure).map(([a,b])=>[a,c(b)])):void 0;return{...a,exposure:c(a.exposure??"codemode"),...d?{toolExposure:d}:{}}}(a.config,this.options.codemodeAvailable()),scope:d,target:{scope:d,sourcePath:b??a.source,name:a.name,configKey:(0,i.qu)(a.config)}})}catch(b){s(`${a.source}: server "${a.name}" is not connected: ${r(b)}`)}}return c}register(a,b){let{config:c,scope:d,target:e}=b,f=new A((0,i.dj)(c),d,e,c);this.attempts.set(a,f);try{this.pi.registerMcpServer(a,c)}catch(h){this.attempts.delete(a);let b=r(h),f=this.registeredOwner(a)??B.exec(b)?.[1],g=(0,m.fR)(c,[],{isCommandConfigValue:this.isCommandValue});this.problems.set(`${d}\0${a}`,{status:{name:a,scope:d,state:"not-registered",error:b,...f?{conflict:f}:{}},target:e,report:f?{state:"conflict",conflict:f}:{state:"failed",error:(0,m.lL)(b,g)}})}}registeredOwner(a){try{return this.pi.getMcpServers?.().find(b=>b.name===a)?.extensionPath}catch{return}}async unregister(a){let b=this.attempts.get(a);if(b&&!b.started){let a=v(this.options.replaceWaitMs);await Promise.race([b.whenStarted(),a.promise]),a.cancel()}if(this.attempts.delete(a),b&&!b.started){let c=`${a}\0${b.configKey}`;this.abandoned.set(c,(this.abandoned.get(c)??0)+1)}b&&this.letGo(b);try{this.pi.unregisterMcpServer(a)}catch(b){console.error(`[pi-web] cannot unregister MCP server "${a}":`,r(b))}}clearIdle(){clearTimeout(this.idleTimer),this.idleTimer=void 0}armIdle(){this.clearIdle(),this.runActive||this.preparing>0||this.options.idleMs<=0||0===this.attempts.size||(this.idleTimer=setTimeout(()=>{this.idleTimer=void 0,(!this.ctx||this.ctx.isIdle())&&this.release()},this.options.idleMs),this.idleTimer.unref?.())}}class D{constructor(a){this.options={idleMs:function(a=process.env.PI_WEB_MCP_IDLE_MS){if(void 0!==a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b)&&b>=0&&b<=0x7fffffff)return b;console.warn(`[pi-web] invalid PI_WEB_MCP_IDLE_MS "${a}", falling back to 10 minutes`)}return 6e5}(),promptWaitMs:1e4,replaceWaitMs:5e3,...a,mayReadProjectConfig:a.mayReadProjectConfig??(b=>(0,o.n)(b,a.agentDir))}}extension(){return{name:"pi-web-mcp-host",hidden:!0,factory:a=>{this.current?.dispose(),this.current=new C(a,this.options)}}}wrapTransportFactory(a){return(b,c,d)=>{let e,f=this.current,g=f?.attemptFor(b);if(!g&&f?.refuseAbandoned(b))throw Error(`MCP server "${b.name}" was removed before it connected, so Pi Web did not start it`);try{e=a(b,c,d)}catch(a){throw f&&g&&f.transportFailed(g,b,a),a}return f&&g&&f.watch(g,b,e,void 0!==d),e}}dispose(){this.current?.dispose()}prepareForPrompt(a,b={}){return this.current?.prepareForPrompt(a,b.wait??!0)??Promise.resolve()}serverStates(){return this.current?.serverStates()??[]}release(){return this.current?.release()??Promise.resolve()}}d()}catch(a){d(a)}})}};
1
+ "use strict";exports.id=4698,exports.ids=[4698],exports.modules={305:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Up:()=>n,dp:()=>m,e5:()=>k,wQ:()=>i});var e=c(10674),f=a([e]);e=(f.then?(await f)():f)[0];let o=["read","bash","edit","write"],p=new Set(["bash","powershell"]);function g(a,b=process.platform){return"win32"===b&&a?.includes("powershell")===!0&&!a.includes("bash")}function h(a,b){let c=b?"powershell":"bash",d=[];for(let b of a){let a=p.has(b)?c:b;d.includes(a)||d.push(a)}return d}function i(a,b,c=process.platform){return h(a,g(b,c))}function j(a){return a.startsWith("+")||a.startsWith("-")}function k(a){let b=a.filter(a=>!j(a)),c=b.length>0||0===a.length?b:[...o];for(let b of a){if(!j(b))continue;let a=b.slice(1),d=c.indexOf(a);b.startsWith("+")&&-1===d&&a?c.push(a):b.startsWith("-")&&-1!==d&&c.splice(d,1)}return c}function l(a){let b=(0,e.cj)(a);return void 0===b?void 0:k(b)}async function m(a=(0,e.WD)(void 0),b=process.platform){return(0,e.lz)(a,a=>g(l(a),b))}async function n(a,b=(0,e.WD)(void 0),c=process.platform){if("win32"!==c)throw Error("PowerShell tool settings are only available on Windows");return await (0,e.AC)(b,b=>{let c=l(b)??o,d=h(c,a);c.some(a=>p.has(a))||d.push(a?"powershell":"bash"),b.defaultTools=d}),a}d()}catch(a){d(a)}})},2650:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B6:()=>A,Db:()=>x,M7:()=>y,Vq:()=>u,cu:()=>m,n7:()=>z,t1:()=>q});var e=c(76760),f=c(75430),g=c(99999),h=c(43084),i=c(49507),j=c(72498),k=c(37431),l=a([f,g,h,i,j]);[f,g,h,i,j]=l.then?(await l)():l;let A="PI_WEB_DISABLE_MCP";function m(a=process.env){let b=a[A]?.trim().toLowerCase();return void 0!==b&&""!==b&&"0"!==b&&"false"!==b}async function n(){let a;if(await (0,f.createCodemodeExtension)({models:!1})({registerTool:b=>{a=b},getSettings:()=>({}),getAllTools:()=>[],appendEntry:()=>{}}),!a)throw Error("the codemode extension registered no tool");return a}async function o(a={}){let b,c=a.timeoutMs??1e4,d=new AbortController,e=new Promise((a,e)=>{b=setTimeout(()=>{d.abort(),e(Error(`the sandbox did not answer within ${c} ms`))},c),b.unref?.()});try{let b=(async()=>{let b=await (a.createDefinition??n)();return await b.execute("pi-web-self-test",{code:"return 6 * 7"},d.signal,void 0,void 0)})();b.catch(()=>{});let c=await Promise.race([b,e]),f=(c.content??[]).flatMap(a=>"text"===a.type&&void 0!==a.text?[a.text]:[]);if(c.isError)return{available:!1,reason:`the self-test script failed: ${f.join(" ").trim()||"no output"}`};if(!f.some(a=>"42"===a.trim()))return{available:!1,reason:`the self-test script returned ${JSON.stringify(f.join(" ").trim())}`};return{available:!0}}catch(a){return{available:!1,reason:a instanceof Error?a.message:String(a)}}finally{clearTimeout(b)}}let B=Symbol.for("pi-web.codemodeSandbox");function p(){let a=globalThis;return a[B]??=o().then(a=>(a.available||console.warn(`[pi-web] Code mode is off: ${a.reason}`),a))}let C=Symbol("not settled");async function q(){let a=globalThis[B];if(!a)return{checked:!1};let b=await Promise.race([a,Promise.resolve(C)]);return b===C?{checked:!1}:{checked:!0,...b}}let D=Symbol.for("pi-web.mcpOffWarned");async function r(){let a=function(a,b=process.env){return m(b)?{available:!1,reason:`${A} is set`}:a.ok?{available:!0,internals:a}:{available:!1,reason:a.reason}}(await (0,i.U)()),b=globalThis;return a.available||m()||b[D]===a.reason||(b[D]=a.reason,console.warn(`[pi-web] MCP is off: ${a.reason}`)),a}let E=["codemode","tool-search","mcp"];function s(a,b){let c,d=(0,k.y)(a,b);if(void 0===d)return;try{c=JSON.parse(65279===d.charCodeAt(0)?d.slice(1):d)}catch{return}let e="object"==typeof c&&null!==c?c.extensions:void 0;return Array.isArray(e)?e.filter(a=>"string"==typeof a):void 0}async function t(a,b,c){let{agentDir:d,cwd:e,projectTrusted:g}=a,h=new f.DefaultPackageManager({cwd:e,agentDir:d,settingsManager:f.SettingsManager.fromStorage({withLock:(a,c)=>{let d=b[a];c(d?JSON.stringify({extensions:d}):void 0)}},{projectTrusted:g}),builtinExtensions:[...E]}),i=await h.resolve(async()=>"skip"),j={};for(let a of E){let b=i.extensions.find(b=>b.path===`builtin:${a}`),d=b?.enabled??!0;j[a]=d?{enabled:d}:{enabled:d,settingsPath:b?.metadata.scope==="project"?c.project:c.global}}return j}async function u(a){let{agentDir:b}=a,c=void 0!==a.cwd&&a.projectTrusted,d=a.cwd??b,g={global:(0,e.join)(b,"settings.json"),project:(0,e.join)(d,f.CONFIG_DIR_NAME,"settings.json")},h=s(g.global),i=c?s(g.project,k.T):void 0,j=await t({agentDir:b,cwd:d,projectTrusted:c},{global:h,project:i},g);if(void 0===i)return j;let l=await t({agentDir:b,cwd:d,projectTrusted:!1},{global:h},g);for(let a of E)j[a].global=l[a];return j}let F=()=>{};function v(a,b){return{name:a,factory:b,replaceable:!0,builtin:!0}}function w(a,b){let c=b.gate??((a,b)=>b),d=a.available?new g.nx({...b.mcpHost,agentDir:b.agentDir,internals:a.internals,codemodeAvailable:b.codemodeAvailable}):void 0,e=[v("tool-search",c("tool-search",(0,f.createToolSearchExtension)())),v("mcp",c("mcp",a.available&&d?(0,f.createMcpExtension)({loadConfig:function(a,b,c=a=>(0,j.n)(a,b)){return d=>{let e;try{e=a.loadMcpConfig({agentDir:b,cwd:d.cwd,projectTrusted:c(d.cwd)}).autoEnableCodemode}catch{}return{servers:[],errors:[],...void 0===e?{}:{autoEnableCodemode:e}}}}(a.internals,b.agentDir),createTransport:d.wrapTransportFactory((0,h.Pn)(a.internals)),startupWaitMs:0,openUrl:()=>{}}):F))];return d&&e.push(d.extension()),{extensions:e,mcpHost:d}}async function x(a){let b=await p();if(!b.available)throw Error(`Code mode is unavailable: ${b.reason}`);let c=(0,f.createCodemodeExtension)();return{name:"codemode",replaceable:!0,factory:async b=>{(await u({agentDir:a.agentDir,cwd:a.cwd,projectTrusted:a.projectTrusted()})).codemode.enabled&&await c(b)}}}async function y(a){return w(await r(),{agentDir:a.agentDir,codemodeAvailable:()=>a.codemode,...a.mcpHost?{mcpHost:a.mcpHost}:{},gate:(b,c)=>async d=>{(await u({agentDir:a.agentDir,cwd:a.cwd,projectTrusted:a.projectTrusted()}))[b].enabled&&await c(d)}})}async function z(a){let[b,c]=await Promise.all([p(),r()]),{extensions:d,mcpHost:e}=w(c,{agentDir:a.agentDir,codemodeAvailable:()=>b.available,...a.mcpHost?{mcpHost:a.mcpHost}:{}});return{extensions:[v("codemode",b.available?(0,f.createCodemodeExtension)():F),...d],mcpHost:e}}d()}catch(a){d(a)}})},10674:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>o,WD:()=>k,cj:()=>m,lz:()=>n});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=a([g]);function k(a=(0,g.getAgentDir)()){return(0,f.join)(a,"settings.json")}function l(a){var b;let c;if(!(0,e.existsSync)(a))return{};let d=(0,e.readFileSync)(a,"utf8");try{c=JSON.parse(d)}catch(c){let b=c instanceof Error?c.message:String(c);throw SyntaxError(`${a}: ${b}`)}if(b=c,"object"!=typeof b||null===b||Array.isArray(b))throw Error("Invalid settings.json: expected an object");return c}function m(a){if(void 0!==a.defaultTools){if(!Array.isArray(a.defaultTools)||a.defaultTools.some(a=>"string"!=typeof a))throw Error("Invalid settings.json: defaultTools must be an array of strings");return[...a.defaultTools]}}async function n(a,b){if(!(0,e.existsSync)(a))return b({});let c=await i().lock(a,{realpath:!1,retries:10});try{return b(l(a))}finally{await c()}}async function o(a,b){(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0});try{(0,e.writeFileSync)(a,"{}",{flag:"wx",mode:384})}catch(a){if("EEXIST"!==a.code)throw a}let c=await i().lock(a,{realpath:!1,retries:10});try{let c=l(a),d=b(c);return(0,e.writeFileSync)(a,JSON.stringify(c,null,2),"utf8"),(0,e.chmodSync)(a,384),d}finally{await c()}}g=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},11784:(a,b,c)=>{c.d(b,{Y:()=>e,y:()=>g});let d=/^Unexpected token '([\s\S])', ([\s\S]*) is not valid JSON$/;function e(a,b){let c,e,f,g=a instanceof Error?a.message:String(a);if(!g.includes('"'))return g;let h=d.exec(g);if(!h)return"Not valid JSON";let[,i,j]=h,k=i.charCodeAt(0),l=/[\p{L}\p{N}]/u.test(i)?"":/[\p{P}\p{S}]/u.test(i)?` '${i}'`:` U+${k.toString(16).toUpperCase().padStart(4,"0")}`,m=function(a,b,c){let d,e=c.startsWith('..."'),f=c.endsWith('"...'),g=c.slice(3*!!e,f?-3:void 0);if(g.length<2||!g.startsWith('"')||!g.endsWith('"')||!e&&!f)return;let h=g.slice(1,-1);if(e)if(f){for(d=a.indexOf(h);d>=0&&a[d+10]!==b;)d=a.indexOf(h,d+1);if(d<0)return;d+=10}else{if(!a.endsWith(h))return;d=a.length-h.length+10}else{if(!a.startsWith(h))return;d=h.length-10}return a[d]===b?d:void 0}(b,i,j);return`Unexpected token${l} in JSON${void 0===m?"":` ${e=(c=b.slice(0,m)).split("\n").length,f=m-c.lastIndexOf("\n"),`at position ${m} (line ${e} column ${f})`}`}`}let f=/is not valid JSON$/;function g(a,b){let c=b.map(a=>`${a}: `).find(b=>a.startsWith(b))??"",d=a.slice(c.length);return f.test(d)?`${c}${e(d,"")}`:a}},44088:(a,b,c)=>{c.d(b,{Ai:()=>g,Ll:()=>e,pM:()=>d,zT:()=>f});let d="builtin:mcp";function e(a){return"mcp"===a.name&&a.sourceInfo?.path===d}function f(a){return"prompt"!==a.source&&("mcp"===a.name||/^mcp:\d+$/.test(a.name))}function g(a,b){if(!a.startsWith("/"))return"wait";let c=a.indexOf(" "),d=-1===c?a.slice(1):a.slice(1,c),f=b.find(a=>a.name===d);return f?e(f)?"register":"none":"wait"}},49507:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{U:()=>p});var e=c(75430),f=c(73024),g=c(98995),h=c(76760),i=c(73136),j=a([e]);e=(j.then?(await j)():j)[0];let q="@earendil-works/pi-coding-agent",r="@earendil-works/pi-mcp",s={mcpExtension:"dist/extensions/mcp/index.js",mcpRuntime:"dist/extensions/mcp/runtime.js",mcpConfig:"dist/extensions/mcp/config.js",mcpOAuth:"dist/extensions/mcp/oauth.js",mcpServers:"dist/core/mcp-servers.js",configValues:"dist/core/resolve-config-value.js"},t={McpServerConnection:{module:"mcpRuntime",kind:"class"},createDefaultTransport:{module:"mcpRuntime",kind:"function"},StdioTransport:{module:"mcpClient",kind:"class"},loadMcpConfig:{module:"mcpConfig",kind:"function"},addMcpServerConfig:{module:"mcpConfig",kind:"function"},updateMcpServerConfig:{module:"mcpConfig",kind:"function"},removeMcpServerConfig:{module:"mcpConfig",kind:"function"},validateMcpServerConfig:{module:"mcpServers",kind:"function"},getMcpToolExposure:{module:"mcpServers",kind:"function"},signInMcpServer:{module:"mcpOAuth",kind:"function"},McpOAuthCredentialStore:{module:"mcpOAuth",kind:"class"},McpSignInCancelledError:{module:"mcpOAuth",kind:"class"},resolveConfigValueOrThrow:{module:"configValues",kind:"function"},resolveHeadersOrThrow:{module:"configValues",kind:"function"},getConfigValueEnvVarNames:{module:"configValues",kind:"function"},isCommandConfigValue:{module:"configValues",kind:"function"}};function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function l(a){return a instanceof Error?a.message:String(a)}async function m(a){return await import((0,i.pathToFileURL)(a).href)}let u=new Set(["node","import","module-sync","node-addons","default"]);async function n(a){let b=Object.fromEntries(Object.entries(s).map(([b,c])=>[b,(0,h.join)(a,c)]));try{b.mcpClient=function(a){let b=(0,i.pathToFileURL)((0,h.join)(a,s.mcpRuntime)).href,c=(0,g.findPackageJSON)(r,b);if(!c)throw Error(`cannot resolve ${r}`);let d=function(a){if(!k(a))return;let{exports:b}=a;return void 0===b?"string"==typeof a.main?a.main:"index.js":function a(b){if("string"==typeof b||null===b)return b;for(let c of Array.isArray(b)?b:k(b)?Object.entries(b).filter(([a])=>u.has(a)).map(([,a])=>a):[]){let b=a(c);if(void 0!==b)return b}}(k(b)&&"."in b?b["."]:b)??void 0}(JSON.parse((0,f.readFileSync)(c,"utf8")));if(!d)throw Error(`${c} declares no import entry`);return(0,h.join)(c,"..",d)}(a)}catch(a){return`${r}: ${l(a)}`}let c={};for(let[a,d]of Object.entries(b))try{c[a]=await m(d)}catch(a){return`cannot load ${d}: ${l(a)}`}return c}async function o(a={}){var b;let c,{environment:d=process.env,cwd:j=process.cwd()}=a;if(d.PI_PACKAGE_DIR)return{ok:!1,reason:`PI_PACKAGE_DIR is set; MCP support loads only from the ${q} that Pi Web runs`};try{c=(0,f.realpathSync)((0,e.getPackageDir)());let a=function(a){let b=(0,g.findPackageJSON)(q,(0,i.pathToFileURL)((0,h.join)(a,"package.json")).href);if(!b)throw Error(`cannot resolve ${q} from ${a}`);return(0,f.realpathSync)((0,h.join)(b,".."))}(j);if(b=c,"win32"===process.platform?b.toLowerCase()!==a.toLowerCase():b!==a)return{ok:!1,reason:`${q} at ${c} is not the package Pi Web resolves (${a})`}}catch(a){return{ok:!1,reason:`cannot locate ${q}: ${l(a)}`}}let k=await n(c);if("string"==typeof k)return{ok:!1,reason:k};if(k.mcpExtension.createMcpExtension!==e.createMcpExtension)return{ok:!1,reason:`${s.mcpExtension} loaded as a second copy of ${q}`};let m=function(a){let b={};for(let[c,{module:d,kind:e}]of Object.entries(t)){let f=a[d][c];if("class"===e?!("function"==typeof f&&/^class[\s{]/.test(Function.prototype.toString.call(f))):"function"!=typeof f){let a="mcpClient"===d?r:s[d];return`${a} does not export ${c} as a ${e}`}b[c]=f}return b}(k);if("string"==typeof m)return{ok:!1,reason:m};let p={packageDir:c,...m};try{if(!(p.createDefaultTransport({name:"pi-web-probe",config:{command:"pi-web-probe"},source:"pi-web"},p.packageDir,void 0)instanceof p.StdioTransport))return{ok:!1,reason:`${r} resolved to another copy than ${s.mcpRuntime} uses`}}catch(a){return{ok:!1,reason:`${s.mcpRuntime}: ${l(a)}`}}return{ok:!0,...p}}let v=Symbol.for("pi-web.piSdkInternals");function p(){let a=globalThis;return a[v]??=o().catch(a=>({ok:!1,reason:l(a)}))}d()}catch(a){d(a)}})},76609:(a,b,c)=>{c.d(b,{U2:()=>i,dj:()=>f,qu:()=>h});var d=c(77598);function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a,b=0){return Array.isArray(a)||e(a)?b>=64?"<too deep>":Array.isArray(a)?`[${a.map(a=>f(a,b+1)).join(",")}]`:`{${Object.keys(a).sort().map(c=>`${JSON.stringify(c)}:${f(a[c],b+1)}`).join(",")}}`:JSON.stringify(a)??"null"}let g=Symbol.for("pi-web:mcp-config-key-secret");function h(a){let b=globalThis,c=b[g]??=(0,d.randomBytes)(32);return(0,d.createHmac)("sha256",c).update(f(a)).digest("base64url")}function i(a,b){return h(e(b)?b:a)}},85825:(a,b,c)=>{c.d(b,{lW:()=>d,vN:()=>e,vR:()=>f});let d=["enabled","exposure","toolExposure"];function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)&&void 0===a.command&&void 0===a.url&&void 0===a.type}function f(a,b,c){return c?Object.keys(b).some(a=>!d.includes(a))?`server "${a}": an override can only set ${d.join(", ")}`:void 0:`server "${a}" needs "command" or "url", or a global server to override`}},99999:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{nx:()=>D});var e=c(73024),f=c(76760),g=c(75430),h=c(44088),i=c(76609),j=c(11784),k=c(85825),l=c(66479),m=c(23757),n=c(82536),o=c(72498),p=a([g,m,o]);[g,m,o]=p.then?(await p)():p;let w=new Set(["tools/list"]);function q(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function r(a){return a instanceof Error?a.message:String(a)}let x=Symbol.for("pi-web:mcp-config-errors-logged");function s(a){let b=globalThis,c=b[x]??=new Set;c.has(a)||(c.size>=200&&c.delete(c.values().next().value),c.add(a),console.warn(`[pi-web] MCP config: ${a}`))}let y=e.constants.O_RDONLY|(e.constants.O_NONBLOCK||0)|(e.constants.O_NOFOLLOW||0);function t(a){return a instanceof Error?a.name:void 0}let z={connecting:"connecting",ready:"connected",failed:"failed","needs-auth":"needs-auth",disconnected:"disconnected"};class A{constructor(a,b,c,d){this.configKey=a,this.scope=b,this.target=c,this.started=!1,this.settled=!1,this.waited=!1,this.released=!1,this.state="connecting",this.startedListeners=new Set,this.settledListeners=new Set,this.declaresTools=(d.exposure??"codemode")==="direct"||Object.values(d.toolExposure??{}).includes("direct")}markStarted(){if(!this.started){for(let a of(this.started=!0,this.startedListeners))a();this.startedListeners.clear()}}update(a,b={}){if(this.state=a,this.error=b.error,this.stderr=b.stderr,"connecting"!==a&&!this.settled){for(let a of(this.settled=!0,this.markStarted(),this.settledListeners))a();this.settledListeners.clear()}}whenStarted(){return this.started?Promise.resolve():new Promise(a=>this.startedListeners.add(a))}whenSettled(){return this.settled?Promise.resolve():new Promise(a=>this.settledListeners.add(a))}}let B=/is already registered by extension "(.+)"$/;function u(a){try{return a.sessionManager?.getSessionId()??""}catch{return""}}function v(a){let b;return{promise:new Promise(c=>{b=setTimeout(c,a),b.unref?.()}),cancel:()=>clearTimeout(b)}}class C{constructor(a,b){this.pi=a,this.options=b,this.active=!1,this.disposed=!1,this.attempts=new Map,this.abandoned=new Map,this.problems=new Map,this.problemReports=new Map,this.queue=Promise.resolve(),this.runActive=!1,this.preparing=0,this.isCommandValue=a=>this.options.internals.isCommandConfigValue?.(a)??a.startsWith("!"),a.on("session_start",(b,c)=>{if(this.disposed)return;this.ctx=c;let d=a.getCommands().filter(h.zT);this.active=d.some(h.Ll),this.reportActivity(c,this.active?void 0:d[0]?.sourceInfo?.path)}),a.on("before_agent_start",()=>{this.clearIdle(),this.sync()}),a.on("agent_start",()=>{this.runActive=!0,this.clearIdle()}),a.on("agent_end",()=>{this.runActive=!1,this.armIdle()}),a.on("session_shutdown",()=>{this.dispose()})}attemptFor(a){let b=this.attempts.get(a.name);return b&&!b.released&&b.configKey===(0,i.dj)(a.config)?b:void 0}refuseAbandoned(a){let b=`${a.name}\0${(0,i.dj)(a.config)}`,c=this.abandoned.get(b);return!!c&&(c>1?this.abandoned.set(b,c-1):this.abandoned.delete(b),console.warn(`[pi-web] MCP server "${a.name}" was unregistered before its connection opened; its transport is refused`),!0)}transportFailed(a,b,c){a.current=void 0;let d=(0,m.fR)(b.config,[],{isCommandConfigValue:this.isCommandValue});this.update(a,"failed",{error:(0,m.lL)(r(c),d)})}watch(a,b,c,d){let e;a.markStarted(),a.current=c,this.update(a,"connecting");let f=a=>(e??=(0,m.fR)(b.config,[c],{isCommandConfigValue:this.isCommandValue}))(a),g=a=>void 0===a?{}:{stderr:(0,m.zE)(a,f)};!function(a,b,c){var d;let e,f,g,h,i,j,k,l,m,n,o=!1,p=!1,r=!1,s=a=>{let c;(c=t(a),"McpOAuthAuthorizationRequiredError"===c||b&&"McpAuthRequiredError"===c)?p=!0:void 0===m&&"McpConnectionClosedError"!==t(a)&&(m=a)},u=()=>{let b="string"==typeof a.stderr?a.stderr.trim():"";return b?{stderr:b}:{}};if(d=a=>{"ready"===a?(o=!0,c({type:"ready"})):c({type:"failed",authRequired:p,...void 0===m?{}:{error:m},...u()})},f=!1,g=!1,h=0,i=new Set,j=a=>{f||(f=!0,d(a))},k=()=>{setImmediate(()=>{f||!g||void 0===e||i.size>0||e&&0===h||j("ready")})},l=a.send.bind(a),a.send=a=>(q(a)&&"string"==typeof a.method&&(void 0!==a.id&&w.has(a.method)?(i.add(a.id),h+=1):void 0===a.id&&"notifications/initialized"===a.method&&(g=!0,k())),l(a)),a.onMessage(a=>{if(q(a)&&void 0===a.method&&void 0!==a.id){if(void 0===e&&q(a.result)&&q(a.result.capabilities)){let{capabilities:b}=a.result;e=!!b.tools,k();return}i.delete(a.id)&&k()}}),a.onClose(()=>j("closed")),"function"==typeof a.start){let b=a.start;a.start=()=>b.call(a).catch(a=>{throw s(a),a})}let v=a.send;if(a.send=b=>(q(b)&&"initialize"===b.method&&void 0!==b.id&&(n=b.id),v.call(a,b).catch(a=>{throw s(a),a})),"function"==typeof a.close){let b=a.close;a.close=()=>(r=!0,b.call(a))}a.onMessage(a=>{void 0===m&&void 0!==n&&q(a)&&a.id===n&&q(a.error)&&"string"==typeof a.error.message&&(m=a.error.message)}),a.onClose(()=>{o&&c({type:"closed",dropped:!r,authRequired:p,...u()})})}(c,d,b=>{if(a.current===c)if("ready"===b.type)this.update(a,"ready");else if("failed"===b.type)if(b.authRequired)this.update(a,"needs-auth");else{let c=void 0===b.error?"The connection closed before the server was ready":r(b.error);this.update(a,"failed",{error:(0,m.lL)(c,f),...g(b.stderr)})}else b.authRequired?this.update(a,"needs-auth"):b.dropped&&this.update(a,"disconnected",g(b.stderr))})}sync(){let a=this.enqueue(async()=>{if(!this.active||!this.ctx)return;let a=this.desiredServers(this.ctx);for(let[b,c]of[...this.attempts]){let d=a.get(b);d&&(0,i.dj)(d.config)===c.configKey||await this.unregister(b)}for(let[b,c]of a)this.attempts.has(b)||this.register(b,c);this.reportProblems()});return a.then(()=>this.armIdle()),a}async prepareForPrompt(a,b){this.clearIdle(),this.runActive=!1,this.preparing+=1;try{await this.waitForServers(a,b)}finally{this.preparing-=1,this.armIdle()}}async waitForServers(a,b){let c=a.aborted?Promise.resolve():new Promise(b=>a.addEventListener("abort",()=>b(),{once:!0}));if(await Promise.race([this.sync(),c]),a.aborted||!b)return;let d=[...this.attempts.values()].filter(a=>a.declaresTools&&!a.settled&&!a.waited);if(0===d.length)return;let e=v(this.options.promptWaitMs),f=await Promise.race([Promise.all(d.map(a=>a.whenSettled())).then(()=>!1),e.promise.then(()=>!0),c.then(()=>!1)]);if(e.cancel(),f)for(let a of d)a.waited=!0}serverStates(){let a=[...this.problems.values()].map(a=>a.status);for(let[b,c]of this.attempts)a.push({name:b,scope:c.scope,state:c.state,...c.error?{error:c.error}:{},...c.stderr?{stderr:c.stderr}:{}});return a.sort((a,b)=>a.name.localeCompare(b.name)||a.scope.localeCompare(b.scope))}debugSnapshot(){let a=[...this.attempts].map(([a,b])=>({name:a,scope:b.scope,state:z[b.state],hasError:!!b.error,released:b.released}));return{active:this.active,disposed:this.disposed,runActive:this.runActive,idleMs:this.options.idleMs,idleReleaseAt:this.idleDeadline??null,servers:a.sort((a,b)=>a.name.localeCompare(b.name)||a.scope.localeCompare(b.scope)),problems:this.problems.size}}release(){return this.enqueue(async()=>{for(let a of[...this.attempts.keys()])await this.unregister(a)})}dispose(){this.disposed=!0,this.active=!1,this.clearIdle(),this.letGoOfAll(),this.reportActivity(void 0,void 0)}entryConfigKey(a,b){return(0,i.U2)(b,this.options.internals.validateMcpServerConfig?.(a,b))}projectEntryConfigKey(a,b,c){return q(b)&&(0,k.vN)(b)&&void 0===(0,k.vR)(a,b,void 0!==c)?this.entryConfigKey(a,{...c,...b}):this.entryConfigKey(a,b)}write(a,b){let c=this.ctx;if(!c)return;let d={origin:"session",state:b.state,sessionId:u(c),cwd:c.cwd,updatedAt:Date.now(),...b.error?{error:b.error}:{},...b.stderr?{stderr:b.stderr}:{},...b.conflict?{conflict:b.conflict}:{}};return(0,l.kY)(a,a.configKey,d),d}update(a,b,c={}){a.update(b,c),a.released||(a.recorded=this.write(a.target,{state:z[b],...c}))}letGo(a){a.released=!0;let{target:b,recorded:c}=a;c&&("connecting"===a.state?(0,l.My)(b,b.configKey,c):"ready"===a.state&&(0,l.vU)(b,b.configKey,c,{...c,closedAt:Date.now()}))}letGoOfAll(){for(let a of this.attempts.values())this.letGo(a);for(let{target:a,status:b}of this.problemReports.values())(0,l.My)(a,a.configKey,b);this.problemReports.clear()}reportProblems(){let a=new Set;for(let{target:b,report:c}of this.problems.values()){let d=(0,l.wf)(b);a.add(d);let e=[b.configKey,c.state,c.conflict??"",c.error??""].join("\0"),f=this.problemReports.get(d);if(f?.signature===e&&(0,l.Wu)(b,b.configKey,f.status))continue;let g=this.write(b,c);g&&this.problemReports.set(d,{signature:e,target:b,status:g})}for(let b of[...this.problemReports.keys()])a.has(b)||this.problemReports.delete(b)}reportActivity(a,b){if(this.inactiveReport&&(0,l.jQ)(this.inactiveReport.sessionId,this.inactiveReport.info),this.inactiveReport=void 0,!a)return;let c=u(a);if(!b)return void(0,l.jQ)(c);let d={owner:b,cwd:a.cwd,updatedAt:Date.now()};(0,l.Te)(c,d),this.inactiveReport={sessionId:c,info:d}}enqueue(a){let b=this.queue.then(a);return this.queue=b.catch(a=>{console.error("[pi-web] MCP host operation failed:",r(a))}),this.queue}desiredServers(a){let b;this.problems=new Map;let c=new Map,d=this.options.mayReadProjectConfig(a.cwd);try{b=this.options.internals.loadMcpConfig({agentDir:this.options.agentDir,cwd:a.cwd,projectTrusted:d})}catch(a){s(`cannot read mcp.json: ${r(a)}`)}let h=(0,f.join)(a.cwd,g.CONFIG_DIR_NAME,"mcp.json");if(!d){let c=function(a){let b,c=(0,f.join)(a,g.CONFIG_DIR_NAME,"mcp.json");try{if((0,n.TU)(c))return[];let d=(0,e.realpathSync)(c);if(!(0,n.o4)(d,(0,n.qy)(new Set([a]))))return[];b=(0,e.openSync)(d,y);let f=(0,e.fstatSync)(b);if(!f.isFile()||f.size>1048576)return[];let g=Buffer.alloc(f.size+1),h=0;for(;h<g.length;){let a=(0,e.readSync)(b,g,h,g.length-h,null);if(0===a)break;h+=a}if(h>f.size)return[];let i=JSON.parse(g.toString("utf8",0,h).replace(/^\uFEFF/,""));return q(i)&&q(i.mcpServers)?Object.entries(i.mcpServers):[]}catch{return[]}finally{void 0!==b&&(0,e.closeSync)(b)}}(a.cwd),d=new Map((b?.servers??[]).map(a=>[a.name,a.config]));for(let[a,b]of c.slice(0,100))try{this.problems.set(`project\0${a}`,{status:{name:a,scope:"project",state:"not-trusted"},target:{scope:"project",sourcePath:h,name:a,configKey:this.projectEntryConfigKey(a,b,d.get(a))},report:{state:"not-trusted"}})}catch(b){s(`${h}: server "${a}" is not reported: ${r(b)}`)}c.length>100&&s(`${h}: ${c.length-100} more servers of this untrusted project are not reported`)}if(!b)return c;let k=[(0,f.join)(this.options.agentDir,"mcp.json"),h];for(let a of b.errors.slice(0,20))s((0,j.y)(a,k));for(let a of(b.errors.length>20&&s(`${b.errors.length-20} more errors in mcp.json are not logged`),b.servers)){if(!1===a.config.enabled)continue;let b=a.override,d="project"===a.scope||void 0!==b?"project":"global";try{c.set(a.name,{config:function(a,b){if(b)return a;let c=a=>"codemode"===a?"deferred":a,d=a.toolExposure?Object.fromEntries(Object.entries(a.toolExposure).map(([a,b])=>[a,c(b)])):void 0;return{...a,exposure:c(a.exposure??"codemode"),...d?{toolExposure:d}:{}}}(a.config,this.options.codemodeAvailable()),scope:d,target:{scope:d,sourcePath:b??a.source,name:a.name,configKey:(0,i.qu)(a.config)}})}catch(b){s(`${a.source}: server "${a.name}" is not connected: ${r(b)}`)}}return c}register(a,b){let{config:c,scope:d,target:e}=b,f=new A((0,i.dj)(c),d,e,c);this.attempts.set(a,f);try{this.pi.registerMcpServer(a,c)}catch(h){this.attempts.delete(a);let b=r(h),f=this.registeredOwner(a)??B.exec(b)?.[1],g=(0,m.fR)(c,[],{isCommandConfigValue:this.isCommandValue});this.problems.set(`${d}\0${a}`,{status:{name:a,scope:d,state:"not-registered",error:b,...f?{conflict:f}:{}},target:e,report:f?{state:"conflict",conflict:f}:{state:"failed",error:(0,m.lL)(b,g)}})}}registeredOwner(a){try{return this.pi.getMcpServers?.().find(b=>b.name===a)?.extensionPath}catch{return}}async unregister(a){let b=this.attempts.get(a);if(b&&!b.started){let a=v(this.options.replaceWaitMs);await Promise.race([b.whenStarted(),a.promise]),a.cancel()}if(this.attempts.delete(a),b&&!b.started){let c=`${a}\0${b.configKey}`;this.abandoned.set(c,(this.abandoned.get(c)??0)+1)}b&&this.letGo(b);try{this.pi.unregisterMcpServer(a)}catch(b){console.error(`[pi-web] cannot unregister MCP server "${a}":`,r(b))}}clearIdle(){clearTimeout(this.idleTimer),this.idleTimer=void 0,this.idleDeadline=void 0}armIdle(){this.clearIdle(),this.runActive||this.preparing>0||this.options.idleMs<=0||0===this.attempts.size||(this.idleDeadline=Date.now()+this.options.idleMs,this.idleTimer=setTimeout(()=>{this.idleTimer=void 0,this.idleDeadline=void 0,(!this.ctx||this.ctx.isIdle())&&this.release()},this.options.idleMs),this.idleTimer.unref?.())}}class D{constructor(a){this.options={idleMs:function(a=process.env.PI_WEB_MCP_IDLE_MS){if(void 0!==a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b)&&b>=0&&b<=0x7fffffff)return b;console.warn(`[pi-web] invalid PI_WEB_MCP_IDLE_MS "${a}", falling back to 10 minutes`)}return 6e5}(),promptWaitMs:1e4,replaceWaitMs:5e3,...a,mayReadProjectConfig:a.mayReadProjectConfig??(b=>(0,o.n)(b,a.agentDir))}}extension(){return{name:"pi-web-mcp-host",hidden:!0,factory:a=>{this.current?.dispose(),this.current=new C(a,this.options)}}}wrapTransportFactory(a){return(b,c,d)=>{let e,f=this.current,g=f?.attemptFor(b);if(!g&&f?.refuseAbandoned(b))throw Error(`MCP server "${b.name}" was removed before it connected, so Pi Web did not start it`);try{e=a(b,c,d)}catch(a){throw f&&g&&f.transportFailed(g,b,a),a}return f&&g&&f.watch(g,b,e,void 0!==d),e}}dispose(){this.current?.dispose()}prepareForPrompt(a,b={}){return this.current?.prepareForPrompt(a,b.wait??!0)??Promise.resolve()}serverStates(){return this.current?.serverStates()??[]}debugSnapshot(){return this.current?.debugSnapshot()??null}release(){return this.current?.release()??Promise.resolve()}}d()}catch(a){d(a)}})}};