@tasselx/pi-web 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +6 -5
  3. package/.next/build-manifest.json +4 -4
  4. package/.next/prerender-manifest.json +1 -157
  5. package/.next/react-loadable-manifest.json +1 -1
  6. package/.next/required-server-files.js +6 -6
  7. package/.next/required-server-files.json +6 -6
  8. package/.next/routes-manifest.json +6 -0
  9. package/.next/server/app/_global-error/page.js +2 -2
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +4 -4
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  23. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  24. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  26. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/agent/[id]/lease/route.js +1 -1
  28. package/.next/server/app/api/agent/[id]/lease/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/agent/[id]/route.js +1 -1
  30. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/agent/debug/route.js +3 -0
  32. package/.next/server/app/api/agent/debug/route.js.nft.json +1 -0
  33. package/.next/server/app/api/agent/debug/route_client-reference-manifest.js +1 -0
  34. package/.next/server/app/api/agent/new/route.js +1 -1
  35. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/agent/running/route.js +1 -1
  37. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/app-update/route.js +1 -1
  39. package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  41. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  43. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  45. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/auth/providers/route.js +1 -1
  47. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/cache-miss-notices/route.js +1 -1
  49. package/.next/server/app/api/cache-miss-notices/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/cwd/browse/route.js +1 -1
  51. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/cwd/pick/route.js +1 -1
  53. package/.next/server/app/api/cwd/pick/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/cwd/validate/route.js +1 -1
  55. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/default-cwd/route.js +1 -1
  57. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/file-index/route.js +1 -1
  59. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/files/[...path]/route.js +3 -3
  61. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/git/diff/route.js +2 -2
  63. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/git/status/route.js +2 -2
  65. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/home/route.js +1 -1
  67. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/mcp/route.js +2 -2
  69. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/mcp/sign-in/[flowId]/route.js +1 -1
  71. package/.next/server/app/api/mcp/sign-in/[flowId]/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/mcp/sign-in/route.js +1 -1
  73. package/.next/server/app/api/mcp/sign-in/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/mcp/test/route.js +1 -1
  75. package/.next/server/app/api/mcp/test/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/models/default/route.js +1 -1
  77. package/.next/server/app/api/models/default/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/models/enabled/route.js +1 -1
  79. package/.next/server/app/api/models/enabled/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/models/refresh/route.js +1 -1
  81. package/.next/server/app/api/models/refresh/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/models/route.js +1 -1
  83. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  85. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/models-config/discover/route.js +1 -1
  87. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/models-config/route.js +1 -1
  89. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/models-config/test/route.js +1 -1
  91. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/open-in-explorer/route.js +1 -1
  93. package/.next/server/app/api/open-in-explorer/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/plugins/check/route.js +1 -1
  95. package/.next/server/app/api/plugins/check/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/plugins/route.js +1 -1
  97. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/project-trust/route.js +1 -1
  99. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/provider-usage/query/route.js +1 -1
  101. package/.next/server/app/api/provider-usage/query/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/push/config/route.js +1 -1
  103. package/.next/server/app/api/push/config/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/push/subscribe/route.js +1 -1
  105. package/.next/server/app/api/push/subscribe/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
  107. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  109. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  111. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js +1 -1
  113. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  115. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  117. package/.next/server/app/api/sessions/[id]/fork/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  119. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  121. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/sessions/delete/route.js +1 -1
  123. package/.next/server/app/api/sessions/delete/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/sessions/route.js +1 -1
  125. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/sessions/search/route.js +1 -1
  127. package/.next/server/app/api/sessions/search/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/sessions/stats/route.js +1 -1
  129. package/.next/server/app/api/sessions/stats/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/sessions/ui-state/route.js +1 -1
  131. package/.next/server/app/api/sessions/ui-state/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/skills/check/route.js +1 -1
  133. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/skills/content/route.js +1 -1
  135. package/.next/server/app/api/skills/content/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/skills/install/route.js +1 -1
  137. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/skills/route.js +1 -1
  139. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/skills/search/route.js +1 -1
  141. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/skills/update/route.js +1 -1
  143. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/sleep-inhibit/route.js +1 -1
  145. package/.next/server/app/api/sleep-inhibit/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/subagents/[id]/route.js +1 -1
  147. package/.next/server/app/api/subagents/[id]/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/subagents/profiles/route.js +1 -1
  149. package/.next/server/app/api/subagents/profiles/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/subagents/settings/route.js +1 -1
  151. package/.next/server/app/api/subagents/settings/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/terminal/[id]/events/route.js +3 -3
  153. package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/terminal/[id]/route.js +1 -1
  155. package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/terminal/route.js +1 -1
  157. package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/tools/settings/route.js +1 -1
  159. package/.next/server/app/api/tools/settings/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/web-auth/route.js +1 -1
  161. package/.next/server/app/api/web-auth/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/route.js +1 -1
  163. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/favicon.ico/route.js +1 -1
  165. package/.next/server/app/index.html +1 -1
  166. package/.next/server/app/index.rsc +9 -9
  167. package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -9
  168. package/.next/server/app/index.segments/_full.segment.rsc +9 -9
  169. package/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  170. package/.next/server/app/login/page.js +1 -1
  171. package/.next/server/app/login/page.js.nft.json +1 -1
  172. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  173. package/.next/server/app/login.html +1 -1
  174. package/.next/server/app/login.rsc +6 -6
  175. package/.next/server/app/login.segments/_full.segment.rsc +6 -6
  176. package/.next/server/app/login.segments/_tree.segment.rsc +3 -3
  177. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  178. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  179. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/page.js +823 -30
  181. package/.next/server/app/page.js.nft.json +1 -1
  182. package/.next/server/app/page_client-reference-manifest.js +1 -1
  183. package/.next/server/app-paths-manifest.json +6 -5
  184. package/.next/server/chunks/1906.js +1 -1
  185. package/.next/server/chunks/2243.js +1 -1
  186. package/.next/server/chunks/2430.js +3 -3
  187. package/.next/server/chunks/2650.js +1 -1
  188. package/.next/server/chunks/27.js +1 -1
  189. package/.next/server/chunks/2970.js +1 -1
  190. package/.next/server/chunks/3371.js +1 -0
  191. package/.next/server/chunks/3757.js +1 -1
  192. package/.next/server/chunks/3824.js +1 -1
  193. package/.next/server/chunks/4315.js +1 -1
  194. package/.next/server/chunks/5582.js +3 -3
  195. package/.next/server/chunks/6216.js +1 -1
  196. package/.next/server/chunks/6429.js +9 -10
  197. package/.next/server/chunks/8947.js +1 -0
  198. package/.next/server/functions-config-manifest.json +1 -0
  199. package/.next/server/instrumentation.js +1 -1
  200. package/.next/server/instrumentation.js.nft.json +1 -1
  201. package/.next/server/middleware-build-manifest.js +1 -1
  202. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  203. package/.next/server/middleware.js +4 -4
  204. package/.next/server/next-font-manifest.js +1 -1
  205. package/.next/server/next-font-manifest.json +1 -1
  206. package/.next/server/pages/404.html +1 -1
  207. package/.next/server/pages/500.html +1 -1
  208. package/.next/server/preview-props.json +3 -3
  209. package/.next/server/server-reference-manifest.json +1 -1
  210. package/.next/static/SZGRKeK7Rp-GLXlZwXVpN/_buildManifest.js +1 -0
  211. package/.next/static/chunks/1278-7900e52add02a581.js +1 -0
  212. package/.next/static/chunks/{9932-ad7f7fe74cc1f50a.js → 4908-f430833122ebb4b2.js} +2 -2
  213. package/.next/static/chunks/{7379.f16ffe41e8afa0ef.js → 7379.078f0917cc6a0349.js} +1 -1
  214. package/.next/static/chunks/app/_global-error/{page-a509ce75fed6d8b0.js → page-ff5f37ea6085322e.js} +1 -1
  215. package/.next/static/chunks/app/_not-found/{page-35dee0d93253f38c.js → page-d4722b111eb204ad.js} +1 -1
  216. package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-a509ce75fed6d8b0.js → route-ff5f37ea6085322e.js} +1 -1
  217. package/.next/static/chunks/app/api/agent/[id]/events/{route-a509ce75fed6d8b0.js → route-ff5f37ea6085322e.js} +1 -1
  218. package/.next/static/chunks/app/api/agent/[id]/lease/{route-a509ce75fed6d8b0.js → route-ff5f37ea6085322e.js} +1 -1
  219. package/.next/static/chunks/app/api/agent/[id]/route-ff5f37ea6085322e.js +1 -0
  220. package/.next/static/chunks/app/api/agent/debug/route-ff5f37ea6085322e.js +1 -0
  221. package/.next/static/chunks/app/api/agent/new/route-ff5f37ea6085322e.js +1 -0
  222. package/.next/static/chunks/app/api/agent/running/route-ff5f37ea6085322e.js +1 -0
  223. package/.next/static/chunks/app/api/app-update/route-ff5f37ea6085322e.js +1 -0
  224. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-ff5f37ea6085322e.js +1 -0
  225. package/.next/static/chunks/app/api/auth/login/[provider]/route-ff5f37ea6085322e.js +1 -0
  226. package/.next/static/chunks/app/api/auth/logout/[provider]/route-ff5f37ea6085322e.js +1 -0
  227. package/.next/static/chunks/app/api/auth/providers/route-ff5f37ea6085322e.js +1 -0
  228. package/.next/static/chunks/app/api/cache-miss-notices/route-ff5f37ea6085322e.js +1 -0
  229. package/.next/static/chunks/app/api/cwd/browse/route-ff5f37ea6085322e.js +1 -0
  230. package/.next/static/chunks/app/api/cwd/pick/route-ff5f37ea6085322e.js +1 -0
  231. package/.next/static/chunks/app/api/cwd/validate/route-ff5f37ea6085322e.js +1 -0
  232. package/.next/static/chunks/app/api/default-cwd/route-ff5f37ea6085322e.js +1 -0
  233. package/.next/static/chunks/app/api/file-index/route-ff5f37ea6085322e.js +1 -0
  234. package/.next/static/chunks/app/api/files/[...path]/route-ff5f37ea6085322e.js +1 -0
  235. package/.next/static/chunks/app/api/git/diff/route-ff5f37ea6085322e.js +1 -0
  236. package/.next/static/chunks/app/api/git/status/route-ff5f37ea6085322e.js +1 -0
  237. package/.next/static/chunks/app/api/home/route-ff5f37ea6085322e.js +1 -0
  238. package/.next/static/chunks/app/api/mcp/route-ff5f37ea6085322e.js +1 -0
  239. package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-ff5f37ea6085322e.js +1 -0
  240. package/.next/static/chunks/app/api/mcp/sign-in/route-ff5f37ea6085322e.js +1 -0
  241. package/.next/static/chunks/app/api/mcp/test/route-ff5f37ea6085322e.js +1 -0
  242. package/.next/static/chunks/app/api/models/default/route-ff5f37ea6085322e.js +1 -0
  243. package/.next/static/chunks/app/api/models/enabled/route-ff5f37ea6085322e.js +1 -0
  244. package/.next/static/chunks/app/api/models/refresh/route-ff5f37ea6085322e.js +1 -0
  245. package/.next/static/chunks/app/api/models/route-ff5f37ea6085322e.js +1 -0
  246. package/.next/static/chunks/app/api/models-config/catalog/route-ff5f37ea6085322e.js +1 -0
  247. package/.next/static/chunks/app/api/models-config/discover/route-ff5f37ea6085322e.js +1 -0
  248. package/.next/static/chunks/app/api/models-config/route-ff5f37ea6085322e.js +1 -0
  249. package/.next/static/chunks/app/api/models-config/test/route-ff5f37ea6085322e.js +1 -0
  250. package/.next/static/chunks/app/api/open-in-explorer/route-ff5f37ea6085322e.js +1 -0
  251. package/.next/static/chunks/app/api/plugins/check/route-ff5f37ea6085322e.js +1 -0
  252. package/.next/static/chunks/app/api/plugins/route-ff5f37ea6085322e.js +1 -0
  253. package/.next/static/chunks/app/api/project-trust/route-ff5f37ea6085322e.js +1 -0
  254. package/.next/static/chunks/app/api/provider-usage/query/route-ff5f37ea6085322e.js +1 -0
  255. package/.next/static/chunks/app/api/push/config/route-ff5f37ea6085322e.js +1 -0
  256. package/.next/static/chunks/app/api/push/subscribe/route-ff5f37ea6085322e.js +1 -0
  257. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-ff5f37ea6085322e.js +1 -0
  258. package/.next/static/chunks/app/api/sessions/[id]/context/route-ff5f37ea6085322e.js +1 -0
  259. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-ff5f37ea6085322e.js +1 -0
  260. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-ff5f37ea6085322e.js +1 -0
  261. package/.next/static/chunks/app/api/sessions/[id]/export/route-ff5f37ea6085322e.js +1 -0
  262. package/.next/static/chunks/app/api/sessions/[id]/fork/route-ff5f37ea6085322e.js +1 -0
  263. package/.next/static/chunks/app/api/sessions/[id]/route-ff5f37ea6085322e.js +1 -0
  264. package/.next/static/chunks/app/api/sessions/[id]/state/route-ff5f37ea6085322e.js +1 -0
  265. package/.next/static/chunks/app/api/sessions/delete/route-ff5f37ea6085322e.js +1 -0
  266. package/.next/static/chunks/app/api/sessions/route-ff5f37ea6085322e.js +1 -0
  267. package/.next/static/chunks/app/api/sessions/search/route-ff5f37ea6085322e.js +1 -0
  268. package/.next/static/chunks/app/api/sessions/stats/route-ff5f37ea6085322e.js +1 -0
  269. package/.next/static/chunks/app/api/sessions/ui-state/route-ff5f37ea6085322e.js +1 -0
  270. package/.next/static/chunks/app/api/skills/check/route-ff5f37ea6085322e.js +1 -0
  271. package/.next/static/chunks/app/api/skills/content/route-ff5f37ea6085322e.js +1 -0
  272. package/.next/static/chunks/app/api/skills/install/route-ff5f37ea6085322e.js +1 -0
  273. package/.next/static/chunks/app/api/skills/route-ff5f37ea6085322e.js +1 -0
  274. package/.next/static/chunks/app/api/skills/search/route-ff5f37ea6085322e.js +1 -0
  275. package/.next/static/chunks/app/api/skills/update/route-ff5f37ea6085322e.js +1 -0
  276. package/.next/static/chunks/app/api/sleep-inhibit/route-ff5f37ea6085322e.js +1 -0
  277. package/.next/static/chunks/app/api/subagents/[id]/route-ff5f37ea6085322e.js +1 -0
  278. package/.next/static/chunks/app/api/subagents/profiles/route-ff5f37ea6085322e.js +1 -0
  279. package/.next/static/chunks/app/api/subagents/settings/route-ff5f37ea6085322e.js +1 -0
  280. package/.next/static/chunks/app/api/terminal/[id]/events/route-ff5f37ea6085322e.js +1 -0
  281. package/.next/static/chunks/app/api/terminal/[id]/route-ff5f37ea6085322e.js +1 -0
  282. package/.next/static/chunks/app/api/terminal/route-ff5f37ea6085322e.js +1 -0
  283. package/.next/static/chunks/app/api/tools/settings/route-ff5f37ea6085322e.js +1 -0
  284. package/.next/static/chunks/app/api/web-auth/route-ff5f37ea6085322e.js +1 -0
  285. package/.next/static/chunks/app/api/worktrees/route-ff5f37ea6085322e.js +1 -0
  286. package/.next/static/chunks/app/{layout-fba9ec844c19ded5.js → layout-fd5067066c05f1c1.js} +1 -1
  287. package/.next/static/chunks/app/login/{page-7d17aa0961f2fcbe.js → page-699dd04274c6737c.js} +1 -1
  288. package/.next/static/chunks/app/manifest.webmanifest/route-ff5f37ea6085322e.js +1 -0
  289. package/.next/static/chunks/app/page-e2c75ffccae708f8.js +1131 -0
  290. package/.next/static/chunks/{main-app-4b56fc85be3f7823.js → main-app-03bab309386a7cee.js} +1 -1
  291. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ff5f37ea6085322e.js +1 -0
  292. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ff5f37ea6085322e.js +1 -0
  293. package/.next/static/chunks/next/dist/client/components/builtin/global-error-7b03c800e367b0e2.js +1 -0
  294. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ff5f37ea6085322e.js +1 -0
  295. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ff5f37ea6085322e.js +1 -0
  296. package/.next/static/chunks/{webpack-10ae3428600991e0.js → webpack-95292085cd40fbc6.js} +1 -1
  297. package/.next/static/css/{bf49b4e87f26e436.css → 600a486e13adbe4a.css} +1 -1
  298. package/.next/static/css/f38e4e9c1d25d157.css +1 -0
  299. package/.next/trace +181 -59
  300. package/.next/trace-build +1 -1
  301. package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
  302. package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
  303. package/.next/types/app/api/agent/[id]/lease/route.ts +1 -1
  304. package/.next/types/app/api/agent/[id]/route.ts +1 -1
  305. package/.next/types/app/api/agent/debug/route.ts +355 -0
  306. package/.next/types/app/api/agent/new/route.ts +1 -1
  307. package/.next/types/app/api/agent/running/route.ts +1 -1
  308. package/.next/types/app/api/app-update/route.ts +1 -1
  309. package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
  310. package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
  311. package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
  312. package/.next/types/app/api/auth/providers/route.ts +1 -1
  313. package/.next/types/app/api/cache-miss-notices/route.ts +1 -1
  314. package/.next/types/app/api/cwd/browse/route.ts +1 -1
  315. package/.next/types/app/api/cwd/pick/route.ts +1 -1
  316. package/.next/types/app/api/cwd/validate/route.ts +1 -1
  317. package/.next/types/app/api/default-cwd/route.ts +1 -1
  318. package/.next/types/app/api/file-index/route.ts +1 -1
  319. package/.next/types/app/api/files/[...path]/route.ts +1 -1
  320. package/.next/types/app/api/git/diff/route.ts +1 -1
  321. package/.next/types/app/api/git/status/route.ts +1 -1
  322. package/.next/types/app/api/home/route.ts +1 -1
  323. package/.next/types/app/api/mcp/route.ts +1 -1
  324. package/.next/types/app/api/mcp/sign-in/[flowId]/route.ts +1 -1
  325. package/.next/types/app/api/mcp/sign-in/route.ts +1 -1
  326. package/.next/types/app/api/mcp/test/route.ts +1 -1
  327. package/.next/types/app/api/models/default/route.ts +1 -1
  328. package/.next/types/app/api/models/enabled/route.ts +1 -1
  329. package/.next/types/app/api/models/refresh/route.ts +1 -1
  330. package/.next/types/app/api/models/route.ts +1 -1
  331. package/.next/types/app/api/models-config/catalog/route.ts +1 -1
  332. package/.next/types/app/api/models-config/discover/route.ts +1 -1
  333. package/.next/types/app/api/models-config/route.ts +1 -1
  334. package/.next/types/app/api/models-config/test/route.ts +1 -1
  335. package/.next/types/app/api/open-in-explorer/route.ts +1 -1
  336. package/.next/types/app/api/plugins/check/route.ts +1 -1
  337. package/.next/types/app/api/plugins/route.ts +1 -1
  338. package/.next/types/app/api/project-trust/route.ts +1 -1
  339. package/.next/types/app/api/provider-usage/query/route.ts +1 -1
  340. package/.next/types/app/api/push/config/route.ts +1 -1
  341. package/.next/types/app/api/push/subscribe/route.ts +1 -1
  342. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
  343. package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
  344. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
  345. package/.next/types/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts +1 -1
  346. package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
  347. package/.next/types/app/api/sessions/[id]/fork/route.ts +1 -1
  348. package/.next/types/app/api/sessions/[id]/route.ts +1 -1
  349. package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
  350. package/.next/types/app/api/sessions/delete/route.ts +1 -1
  351. package/.next/types/app/api/sessions/route.ts +1 -1
  352. package/.next/types/app/api/sessions/search/route.ts +1 -1
  353. package/.next/types/app/api/sessions/stats/route.ts +1 -1
  354. package/.next/types/app/api/sessions/ui-state/route.ts +1 -1
  355. package/.next/types/app/api/skills/check/route.ts +1 -1
  356. package/.next/types/app/api/skills/content/route.ts +1 -1
  357. package/.next/types/app/api/skills/install/route.ts +1 -1
  358. package/.next/types/app/api/skills/route.ts +1 -1
  359. package/.next/types/app/api/skills/search/route.ts +1 -1
  360. package/.next/types/app/api/skills/update/route.ts +1 -1
  361. package/.next/types/app/api/sleep-inhibit/route.ts +1 -1
  362. package/.next/types/app/api/subagents/[id]/route.ts +1 -1
  363. package/.next/types/app/api/subagents/profiles/route.ts +1 -1
  364. package/.next/types/app/api/subagents/settings/route.ts +1 -1
  365. package/.next/types/app/api/terminal/[id]/events/route.ts +1 -1
  366. package/.next/types/app/api/terminal/[id]/route.ts +1 -1
  367. package/.next/types/app/api/terminal/route.ts +1 -1
  368. package/.next/types/app/api/tools/settings/route.ts +1 -1
  369. package/.next/types/app/api/web-auth/route.ts +1 -1
  370. package/.next/types/app/api/worktrees/route.ts +1 -1
  371. package/.next/types/app/layout.ts +1 -1
  372. package/.next/types/app/login/page.ts +1 -1
  373. package/.next/types/app/page.ts +1 -1
  374. package/.next/types/routes.d.ts +2 -1
  375. package/.next/types/validator.ts +10 -0
  376. package/README.md +2 -1
  377. package/bin/browser-opener.js +44 -1
  378. package/bin/network-addresses.js +62 -0
  379. package/bin/pi-web.js +10 -2
  380. package/package.json +1 -1
  381. package/.next/server/chunks/5924.js +0 -1
  382. package/.next/server/chunks/7979.js +0 -1
  383. package/.next/static/chunks/1278-acbd0cb712f7f8f0.js +0 -1
  384. package/.next/static/chunks/app/api/agent/[id]/route-a509ce75fed6d8b0.js +0 -1
  385. package/.next/static/chunks/app/api/agent/new/route-a509ce75fed6d8b0.js +0 -1
  386. package/.next/static/chunks/app/api/agent/running/route-a509ce75fed6d8b0.js +0 -1
  387. package/.next/static/chunks/app/api/app-update/route-a509ce75fed6d8b0.js +0 -1
  388. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-a509ce75fed6d8b0.js +0 -1
  389. package/.next/static/chunks/app/api/auth/login/[provider]/route-a509ce75fed6d8b0.js +0 -1
  390. package/.next/static/chunks/app/api/auth/logout/[provider]/route-a509ce75fed6d8b0.js +0 -1
  391. package/.next/static/chunks/app/api/auth/providers/route-a509ce75fed6d8b0.js +0 -1
  392. package/.next/static/chunks/app/api/cache-miss-notices/route-a509ce75fed6d8b0.js +0 -1
  393. package/.next/static/chunks/app/api/cwd/browse/route-a509ce75fed6d8b0.js +0 -1
  394. package/.next/static/chunks/app/api/cwd/pick/route-a509ce75fed6d8b0.js +0 -1
  395. package/.next/static/chunks/app/api/cwd/validate/route-a509ce75fed6d8b0.js +0 -1
  396. package/.next/static/chunks/app/api/default-cwd/route-a509ce75fed6d8b0.js +0 -1
  397. package/.next/static/chunks/app/api/file-index/route-a509ce75fed6d8b0.js +0 -1
  398. package/.next/static/chunks/app/api/files/[...path]/route-a509ce75fed6d8b0.js +0 -1
  399. package/.next/static/chunks/app/api/git/diff/route-a509ce75fed6d8b0.js +0 -1
  400. package/.next/static/chunks/app/api/git/status/route-a509ce75fed6d8b0.js +0 -1
  401. package/.next/static/chunks/app/api/home/route-a509ce75fed6d8b0.js +0 -1
  402. package/.next/static/chunks/app/api/mcp/route-a509ce75fed6d8b0.js +0 -1
  403. package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-a509ce75fed6d8b0.js +0 -1
  404. package/.next/static/chunks/app/api/mcp/sign-in/route-a509ce75fed6d8b0.js +0 -1
  405. package/.next/static/chunks/app/api/mcp/test/route-a509ce75fed6d8b0.js +0 -1
  406. package/.next/static/chunks/app/api/models/default/route-a509ce75fed6d8b0.js +0 -1
  407. package/.next/static/chunks/app/api/models/enabled/route-a509ce75fed6d8b0.js +0 -1
  408. package/.next/static/chunks/app/api/models/refresh/route-a509ce75fed6d8b0.js +0 -1
  409. package/.next/static/chunks/app/api/models/route-a509ce75fed6d8b0.js +0 -1
  410. package/.next/static/chunks/app/api/models-config/catalog/route-a509ce75fed6d8b0.js +0 -1
  411. package/.next/static/chunks/app/api/models-config/discover/route-a509ce75fed6d8b0.js +0 -1
  412. package/.next/static/chunks/app/api/models-config/route-a509ce75fed6d8b0.js +0 -1
  413. package/.next/static/chunks/app/api/models-config/test/route-a509ce75fed6d8b0.js +0 -1
  414. package/.next/static/chunks/app/api/open-in-explorer/route-a509ce75fed6d8b0.js +0 -1
  415. package/.next/static/chunks/app/api/plugins/check/route-a509ce75fed6d8b0.js +0 -1
  416. package/.next/static/chunks/app/api/plugins/route-a509ce75fed6d8b0.js +0 -1
  417. package/.next/static/chunks/app/api/project-trust/route-a509ce75fed6d8b0.js +0 -1
  418. package/.next/static/chunks/app/api/provider-usage/query/route-a509ce75fed6d8b0.js +0 -1
  419. package/.next/static/chunks/app/api/push/config/route-a509ce75fed6d8b0.js +0 -1
  420. package/.next/static/chunks/app/api/push/subscribe/route-a509ce75fed6d8b0.js +0 -1
  421. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-a509ce75fed6d8b0.js +0 -1
  422. package/.next/static/chunks/app/api/sessions/[id]/context/route-a509ce75fed6d8b0.js +0 -1
  423. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-a509ce75fed6d8b0.js +0 -1
  424. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-a509ce75fed6d8b0.js +0 -1
  425. package/.next/static/chunks/app/api/sessions/[id]/export/route-a509ce75fed6d8b0.js +0 -1
  426. package/.next/static/chunks/app/api/sessions/[id]/fork/route-a509ce75fed6d8b0.js +0 -1
  427. package/.next/static/chunks/app/api/sessions/[id]/route-a509ce75fed6d8b0.js +0 -1
  428. package/.next/static/chunks/app/api/sessions/[id]/state/route-a509ce75fed6d8b0.js +0 -1
  429. package/.next/static/chunks/app/api/sessions/delete/route-a509ce75fed6d8b0.js +0 -1
  430. package/.next/static/chunks/app/api/sessions/route-a509ce75fed6d8b0.js +0 -1
  431. package/.next/static/chunks/app/api/sessions/search/route-a509ce75fed6d8b0.js +0 -1
  432. package/.next/static/chunks/app/api/sessions/stats/route-a509ce75fed6d8b0.js +0 -1
  433. package/.next/static/chunks/app/api/sessions/ui-state/route-a509ce75fed6d8b0.js +0 -1
  434. package/.next/static/chunks/app/api/skills/check/route-a509ce75fed6d8b0.js +0 -1
  435. package/.next/static/chunks/app/api/skills/content/route-a509ce75fed6d8b0.js +0 -1
  436. package/.next/static/chunks/app/api/skills/install/route-a509ce75fed6d8b0.js +0 -1
  437. package/.next/static/chunks/app/api/skills/route-a509ce75fed6d8b0.js +0 -1
  438. package/.next/static/chunks/app/api/skills/search/route-a509ce75fed6d8b0.js +0 -1
  439. package/.next/static/chunks/app/api/skills/update/route-a509ce75fed6d8b0.js +0 -1
  440. package/.next/static/chunks/app/api/sleep-inhibit/route-a509ce75fed6d8b0.js +0 -1
  441. package/.next/static/chunks/app/api/subagents/[id]/route-a509ce75fed6d8b0.js +0 -1
  442. package/.next/static/chunks/app/api/subagents/profiles/route-a509ce75fed6d8b0.js +0 -1
  443. package/.next/static/chunks/app/api/subagents/settings/route-a509ce75fed6d8b0.js +0 -1
  444. package/.next/static/chunks/app/api/terminal/[id]/events/route-a509ce75fed6d8b0.js +0 -1
  445. package/.next/static/chunks/app/api/terminal/[id]/route-a509ce75fed6d8b0.js +0 -1
  446. package/.next/static/chunks/app/api/terminal/route-a509ce75fed6d8b0.js +0 -1
  447. package/.next/static/chunks/app/api/tools/settings/route-a509ce75fed6d8b0.js +0 -1
  448. package/.next/static/chunks/app/api/web-auth/route-a509ce75fed6d8b0.js +0 -1
  449. package/.next/static/chunks/app/api/worktrees/route-a509ce75fed6d8b0.js +0 -1
  450. package/.next/static/chunks/app/manifest.webmanifest/route-a509ce75fed6d8b0.js +0 -1
  451. package/.next/static/chunks/app/page-020b7792f47e61a6.js +0 -338
  452. package/.next/static/chunks/next/dist/client/components/builtin/app-error-a509ce75fed6d8b0.js +0 -1
  453. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-a509ce75fed6d8b0.js +0 -1
  454. package/.next/static/chunks/next/dist/client/components/builtin/global-error-064e367d6001dbac.js +0 -1
  455. package/.next/static/chunks/next/dist/client/components/builtin/not-found-a509ce75fed6d8b0.js +0 -1
  456. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a509ce75fed6d8b0.js +0 -1
  457. package/.next/static/css/e423cf64c3a31a65.css +0 -1
  458. package/.next/static/d8QChh2wYaULqtNavrBMx/_buildManifest.js +0 -1
  459. /package/.next/static/{d8QChh2wYaULqtNavrBMx → SZGRKeK7Rp-GLXlZwXVpN}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/provider-usage/query/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/provider-usage/query/route.ts
2
2
  import * as entry from '../../../../../../app/api/provider-usage/query/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/push/config/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/push/config/route.ts
2
2
  import * as entry from '../../../../../../app/api/push/config/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/push/subscribe/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/push/subscribe/route.ts
2
2
  import * as entry from '../../../../../../app/api/push/subscribe/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/auto-name/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/auto-name/route.ts
2
2
  import * as entry from '../../../../../../../app/api/sessions/[id]/auto-name/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/context/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/context/route.ts
2
2
  import * as entry from '../../../../../../../app/api/sessions/[id]/context/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts
2
2
  import * as entry from '../../../../../../../../../app/api/sessions/[id]/entries/[entryId]/thinking/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts
2
2
  import * as entry from '../../../../../../../../../app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/export/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/export/route.ts
2
2
  import * as entry from '../../../../../../../app/api/sessions/[id]/export/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/fork/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/fork/route.ts
2
2
  import * as entry from '../../../../../../../app/api/sessions/[id]/fork/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/route.ts
2
2
  import * as entry from '../../../../../../app/api/sessions/[id]/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/[id]/state/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/[id]/state/route.ts
2
2
  import * as entry from '../../../../../../../app/api/sessions/[id]/state/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/delete/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/delete/route.ts
2
2
  import * as entry from '../../../../../../app/api/sessions/delete/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/route.ts
2
2
  import * as entry from '../../../../../app/api/sessions/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/search/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/search/route.ts
2
2
  import * as entry from '../../../../../../app/api/sessions/search/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/stats/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/stats/route.ts
2
2
  import * as entry from '../../../../../../app/api/sessions/stats/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sessions/ui-state/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sessions/ui-state/route.ts
2
2
  import * as entry from '../../../../../../app/api/sessions/ui-state/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/skills/check/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/skills/check/route.ts
2
2
  import * as entry from '../../../../../../app/api/skills/check/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/skills/content/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/skills/content/route.ts
2
2
  import * as entry from '../../../../../../app/api/skills/content/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/skills/install/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/skills/install/route.ts
2
2
  import * as entry from '../../../../../../app/api/skills/install/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/skills/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/skills/route.ts
2
2
  import * as entry from '../../../../../app/api/skills/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/skills/search/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/skills/search/route.ts
2
2
  import * as entry from '../../../../../../app/api/skills/search/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/skills/update/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/skills/update/route.ts
2
2
  import * as entry from '../../../../../../app/api/skills/update/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/sleep-inhibit/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/sleep-inhibit/route.ts
2
2
  import * as entry from '../../../../../app/api/sleep-inhibit/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/subagents/[id]/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/subagents/[id]/route.ts
2
2
  import * as entry from '../../../../../../app/api/subagents/[id]/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/subagents/profiles/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/subagents/profiles/route.ts
2
2
  import * as entry from '../../../../../../app/api/subagents/profiles/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/subagents/settings/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/subagents/settings/route.ts
2
2
  import * as entry from '../../../../../../app/api/subagents/settings/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/terminal/[id]/events/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/terminal/[id]/events/route.ts
2
2
  import * as entry from '../../../../../../../app/api/terminal/[id]/events/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/terminal/[id]/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/terminal/[id]/route.ts
2
2
  import * as entry from '../../../../../../app/api/terminal/[id]/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/terminal/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/terminal/route.ts
2
2
  import * as entry from '../../../../../app/api/terminal/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/tools/settings/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/tools/settings/route.ts
2
2
  import * as entry from '../../../../../../app/api/tools/settings/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/web-auth/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/web-auth/route.ts
2
2
  import * as entry from '../../../../../app/api/web-auth/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/api/worktrees/route.ts
1
+ // File: /private/tmp/pi-web-merge/app/api/worktrees/route.ts
2
2
  import * as entry from '../../../../../app/api/worktrees/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/layout.tsx
1
+ // File: /private/tmp/pi-web-merge/app/layout.tsx
2
2
  import * as entry from '../../../app/layout.js'
3
3
  import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/login/page.tsx
1
+ // File: /private/tmp/pi-web-merge/app/login/page.tsx
2
2
  import * as entry from '../../../../app/login/page.js'
3
3
  import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/tassel/pi-web/app/page.tsx
1
+ // File: /private/tmp/pi-web-merge/app/page.tsx
2
2
  import * as entry from '../../../app/page.js'
3
3
  import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
4
4
 
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/login"
5
- type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/[id]/lease" | "/api/agent/new" | "/api/agent/running" | "/api/app-update" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cache-miss-notices" | "/api/cwd/browse" | "/api/cwd/pick" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/mcp" | "/api/mcp/sign-in" | "/api/mcp/sign-in/[flowId]" | "/api/mcp/test" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/models/default" | "/api/models/enabled" | "/api/models/refresh" | "/api/open-in-explorer" | "/api/plugins" | "/api/plugins/check" | "/api/project-trust" | "/api/provider-usage/query" | "/api/push/config" | "/api/push/subscribe" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/entries/[entryId]/tool-result-image" | "/api/sessions/[id]/export" | "/api/sessions/[id]/fork" | "/api/sessions/[id]/state" | "/api/sessions/delete" | "/api/sessions/search" | "/api/sessions/stats" | "/api/sessions/ui-state" | "/api/skills" | "/api/skills/check" | "/api/skills/content" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/sleep-inhibit" | "/api/subagents/[id]" | "/api/subagents/profiles" | "/api/subagents/settings" | "/api/terminal" | "/api/terminal/[id]" | "/api/terminal/[id]/events" | "/api/tools/settings" | "/api/web-auth" | "/api/worktrees"
5
+ type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/[id]/lease" | "/api/agent/debug" | "/api/agent/new" | "/api/agent/running" | "/api/app-update" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cache-miss-notices" | "/api/cwd/browse" | "/api/cwd/pick" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/mcp" | "/api/mcp/sign-in" | "/api/mcp/sign-in/[flowId]" | "/api/mcp/test" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/models/default" | "/api/models/enabled" | "/api/models/refresh" | "/api/open-in-explorer" | "/api/plugins" | "/api/plugins/check" | "/api/project-trust" | "/api/provider-usage/query" | "/api/push/config" | "/api/push/subscribe" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/entries/[entryId]/tool-result-image" | "/api/sessions/[id]/export" | "/api/sessions/[id]/fork" | "/api/sessions/[id]/state" | "/api/sessions/delete" | "/api/sessions/search" | "/api/sessions/stats" | "/api/sessions/ui-state" | "/api/skills" | "/api/skills/check" | "/api/skills/content" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/sleep-inhibit" | "/api/subagents/[id]" | "/api/subagents/profiles" | "/api/subagents/settings" | "/api/terminal" | "/api/terminal/[id]" | "/api/terminal/[id]/events" | "/api/tools/settings" | "/api/web-auth" | "/api/worktrees"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -16,6 +16,7 @@ interface ParamMap {
16
16
  "/api/agent/[id]/bash-output": { "id": string; }
17
17
  "/api/agent/[id]/events": { "id": string; }
18
18
  "/api/agent/[id]/lease": { "id": string; }
19
+ "/api/agent/debug": {}
19
20
  "/api/agent/new": {}
20
21
  "/api/agent/running": {}
21
22
  "/api/app-update": {}
@@ -126,6 +126,16 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
126
126
  type __Unused = __Check
127
127
  }
128
128
 
129
+ // Validate ../../app/api/agent/debug/route.ts
130
+ {
131
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/agent/debug">> = Specific
132
+ const handler = {} as typeof import("../../app/api/agent/debug/route.js")
133
+ type __Check = __IsExpected<typeof handler>
134
+
135
+ // @ts-ignore
136
+ type __Unused = __Check
137
+ }
138
+
129
139
  // Validate ../../app/api/agent/new/route.ts
130
140
  {
131
141
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/agent/new">> = Specific
package/README.md CHANGED
@@ -81,6 +81,7 @@ For port and hostname, command-line options override the corresponding environme
81
81
  | `PI_WEB_PASSWORD` | Enable browser password login; API clients may use Basic Auth with username `pi` | Authentication disabled |
82
82
  | `PI_WEB_IDLE_TIMEOUT_MS` | Session idle timeout in milliseconds, up to `2147483647`; `0` disables idle shutdown; invalid or out-of-range values use the default | `600000` (10 min) |
83
83
  | `PI_WEB_SHUTDOWN_DEADLINE_MS` | How long extensions get to handle `session_shutdown` before a closing session is disposed anyway, in milliseconds up to `2147483647`; `0`, invalid or out-of-range values use the default | `5000` (5 s) |
84
+ | `PI_CODEMODE_MAX_WORKERS` | pi's limit on codemode scripts running at once, shared by every session and subagent in the server; pi's own default is `2`, and pi-web sets `8` when the variable is unset or empty. Each script may use up to 256 MB | `8` |
84
85
 
85
86
  Set `PI_WEB_APP_NAME` before starting the server (for example, `PI_WEB_APP_NAME='Work Pi' pi-web`). After changing it, restart the server to serve the new manifest; no rebuild is required. Updates to the name of an already installed PWA are managed by the browser and are not guaranteed to appear immediately. This does not change the page title or icons.
86
87
 
@@ -128,7 +129,7 @@ npx @tasselx/pi-web@latest
128
129
  - **Agent data**: Pi Web reads pi data from `~/.pi/agent` by default, including session files under `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`. Set `PI_CODING_AGENT_DIR` to use another pi agent directory.
129
130
  - **Filesystem access**: Pi Web must be able to read the agent data directory and the working directories recorded by its sessions. Run Pi Web in the same filesystem environment as pi when sharing existing sessions.
130
131
  - **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces. An open session applies a saved edit of its model when you select the model again.
131
- - **Code mode workers**: pi runs Code mode scripts in at most two sandbox workers at a time, shared by every session and in-process subagent of the Pi Web server. A further script waits up to 60 seconds for a free worker. If several sessions run scripts at once, set `PI_CODEMODE_MAX_WORKERS` to a larger whole number before starting Pi Web; each worker's script may use up to 256 MB.
132
+ - **Code mode workers**: pi's own limit is two sandbox workers at a time; Pi Web raises it to eight unless `PI_CODEMODE_MAX_WORKERS` is set. The workers are shared by every session and in-process subagent of the Pi Web server, and a further script waits up to 60 seconds for a free worker. To change the limit, set `PI_CODEMODE_MAX_WORKERS` to a whole number before starting Pi Web; each worker's script may use up to 256 MB.
132
133
  - **File access boundary**: the file browser is limited to working directories selected in Pi Web and project or session roots it already knows about; it is not a general filesystem browser.
133
134
  - **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior.
134
135
 
@@ -2,6 +2,16 @@
2
2
 
3
3
  // eslint-disable-next-line @typescript-eslint/no-require-imports
4
4
  const { spawn } = require("child_process");
5
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
6
+ const { getOpenUrl } = require("./run-records");
7
+
8
+ // Next.js prints "Ready" before it has loaded its request handlers, and the
9
+ // first request then also waits out the pi SDK import that instrumentation
10
+ // starts (#964): half a second on macOS, seconds on a slow disk, and a first
11
+ // navigation that outlasts the service worker's 8 s timeout shows
12
+ // offline.html (#1358). Past this limit the browser opens anyway.
13
+ const FIRST_PAGE_TIMEOUT_MS = 30_000;
14
+ const FIRST_PAGE_RETRY_MS = 250;
5
15
 
6
16
  function openInBrowser(url, platform = process.platform) {
7
17
  // Avoid `shell: true` to suppress Node.js DEP0190 deprecation
@@ -31,4 +41,37 @@ function openInBrowser(url, platform = process.platform) {
31
41
  opener.unref();
32
42
  }
33
43
 
34
- module.exports = { openInBrowser };
44
+ // Resolves true once url has answered a GET with any HTTP status and the whole
45
+ // body has arrived, or false when nothing answered within timeoutMs. Never
46
+ // rejects. Redirects are followed: with PI_WEB_PASSWORD, / redirects to /login,
47
+ // the page the browser lands on, and the proxy sends that redirect while the
48
+ // pi SDK import is still running.
49
+ async function waitForFirstPage(url, {
50
+ fetchImpl = fetch,
51
+ timeoutMs = FIRST_PAGE_TIMEOUT_MS,
52
+ retryMs = FIRST_PAGE_RETRY_MS,
53
+ } = {}) {
54
+ const deadline = AbortSignal.timeout(timeoutMs);
55
+ while (!deadline.aborted) {
56
+ try {
57
+ const response = await fetchImpl(url, { signal: deadline });
58
+ // The page has rendered once its body has arrived, not its headers.
59
+ await response.arrayBuffer();
60
+ return true;
61
+ } catch {
62
+ if (!deadline.aborted) await new Promise((resolve) => setTimeout(resolve, retryMs));
63
+ }
64
+ }
65
+ return false;
66
+ }
67
+
68
+ // Opens the browser once the server has served its first page, so the
69
+ // browser's own first navigation finds the page route loaded. A wildcard bind
70
+ // is asked on loopback. Port 0 leaves the real port unknown, so that browser
71
+ // opens at once. The launcher exits with Next.js, which ends the wait too.
72
+ function openWhenServing({ hostname, port, url, open = openInBrowser, wait = waitForFirstPage }) {
73
+ const served = port === "0" ? Promise.resolve() : wait(`${getOpenUrl(hostname, port)}/`);
74
+ return served.then(() => open(url));
75
+ }
76
+
77
+ module.exports = { openInBrowser, openWhenServing, waitForFirstPage };
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
4
+ const os = require("os");
5
+
6
+ const WILDCARD_HOSTNAMES = new Set(["0.0.0.0", "::", "[::]"]);
7
+
8
+ function isWildcardHostname(hostname) {
9
+ return WILDCARD_HOSTNAMES.has(hostname);
10
+ }
11
+
12
+ // An IPv6 wildcard listens dual-stack (Node's default, and Next passes no
13
+ // ipv6Only), so it answers on every IPv4 address too.
14
+ function addressFamilies(hostname) {
15
+ return hostname.includes(":") ? ["IPv4", "IPv6"] : ["IPv4"];
16
+ }
17
+
18
+ // Addresses another machine can open when the server binds a wildcard address:
19
+ // the wildcard itself routes nowhere, so list this host's interfaces instead.
20
+ function getReachableAddresses(hostname, { interfaces = os.networkInterfaces() } = {}) {
21
+ if (!isWildcardHostname(hostname)) return [];
22
+ const addresses = [];
23
+ for (const family of addressFamilies(hostname)) {
24
+ for (const [name, entries] of Object.entries(interfaces)) {
25
+ for (const entry of entries ?? []) {
26
+ // `internal` covers loopback; a scoped IPv6 address (fe80::/10) needs a
27
+ // zone id, so it cannot be pasted into another machine's browser.
28
+ if (entry.family !== family || entry.internal || entry.scopeid) continue;
29
+ addresses.push({ name, address: entry.address });
30
+ }
31
+ }
32
+ }
33
+ return addresses;
34
+ }
35
+
36
+ function formatUrl(address, port) {
37
+ const host = address.includes(":") ? `[${address}]` : address;
38
+ return `http://${host}:${port}`;
39
+ }
40
+
41
+ // The startup block that names each interface and the URL it serves. Empty when
42
+ // there is nothing to add: a concrete bind address, port 0 (the OS picks one we
43
+ // never learn), or no address of the bound family.
44
+ function formatReachableAddresses(hostname, port, options) {
45
+ if (String(port) === "0") return "";
46
+ const addresses = getReachableAddresses(hostname, options);
47
+ if (addresses.length === 0) return "";
48
+ const width = Math.max(...addresses.map(({ name }) => name.length));
49
+ return [
50
+ "Reachable at:",
51
+ ...addresses.map(
52
+ ({ name, address }) => ` ${name.padEnd(width)} ${formatUrl(address, port)}`,
53
+ ),
54
+ ].join("\n");
55
+ }
56
+
57
+ module.exports = {
58
+ formatReachableAddresses,
59
+ formatUrl,
60
+ getReachableAddresses,
61
+ isWildcardHostname,
62
+ };
package/bin/pi-web.js CHANGED
@@ -24,11 +24,13 @@ const { wireChildProcessLifecycle } = require("./process-lifecycle");
24
24
  // eslint-disable-next-line @typescript-eslint/no-require-imports
25
25
  const { rotatePreviewSecrets, getRotationWarning } = require("./rotate-preview-secrets");
26
26
  // eslint-disable-next-line @typescript-eslint/no-require-imports
27
- const { openInBrowser } = require("./browser-opener");
27
+ const { openWhenServing } = require("./browser-opener");
28
28
  // eslint-disable-next-line @typescript-eslint/no-require-imports
29
29
  const { createRunRecordTracker, getOpenUrl, getRunDir } = require("./run-records");
30
30
  // eslint-disable-next-line @typescript-eslint/no-require-imports
31
31
  const { getPackageVersion, runCommand } = require("./pi-web-commands");
32
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
33
+ const { formatReachableAddresses } = require("./network-addresses");
32
34
 
33
35
  let launchOptions;
34
36
  try {
@@ -144,14 +146,20 @@ function startServer({ port, hostname, openBrowser }) {
144
146
 
145
147
  let serverReady = false;
146
148
  const url = `http://${hostname}:${port}`;
149
+ // Next.js repeats the `-H` value in its own "Network:" line, which a wildcard
150
+ // bind makes unusable; name the interfaces and their addresses instead.
151
+ const reachable = formatReachableAddresses(hostname, port);
147
152
 
148
153
  child.stdout.on("data", (chunk) => {
149
154
  const text = chunk.toString();
150
155
  process.stdout.write(text);
151
156
  if (!serverReady && text.includes("Ready")) {
152
157
  serverReady = true;
158
+ if (reachable) process.stdout.write(`${reachable}\n`);
159
+ // The record needs no wait: status, stop and open list a record only
160
+ // once its URL answers. The browser waits for the first page.
153
161
  if (port !== "0") runRecord.markReady();
154
- if (openBrowser) openInBrowser(url);
162
+ if (openBrowser) openWhenServing({ hostname, port, url });
155
163
  }
156
164
  });
157
165
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasselx/pi-web",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "Web UI for the pi coding agent",
5
5
  "homepage": "https://github.com/tasselx/pi-web#readme",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- "use strict";exports.id=5924,exports.ids=[5924],exports.modules={45924:(a,b,c)=>{c.d(b,{registerNodeInstrumentation:()=>t});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;function t(){!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("ENOENT"===(a=b?.code)||"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(()=>{})}}};