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
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":246043236,"timestamp":50276450714,"id":14,"parentId":1,"tags":{},"startTime":1793245071814,"traceId":"fdc24af86a2d05bb"},{"name":"run-typescript","duration":25851240,"timestamp":50523798724,"id":848,"parentId":1,"tags":{},"startTime":1793245319163,"traceId":"fdc24af86a2d05bb"},{"name":"static-check","duration":16251594,"timestamp":50549862551,"id":851,"parentId":1,"tags":{},"startTime":1793245345228,"traceId":"fdc24af86a2d05bb"},{"name":"static-generation","duration":7401742,"timestamp":50566372244,"id":1005,"parentId":1,"tags":{},"startTime":1793245361738,"traceId":"fdc24af86a2d05bb"},{"name":"collect-build-traces","duration":40812085,"timestamp":50566175382,"id":1002,"parentId":1,"tags":{},"startTime":1793245361541,"traceId":"fdc24af86a2d05bb"},{"name":"telemetry-flush","duration":94,"timestamp":50606997334,"id":1014,"parentId":1,"tags":{},"startTime":1793245402363,"traceId":"fdc24af86a2d05bb"},{"name":"next-build","duration":331498521,"timestamp":50275498916,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1793245070863,"traceId":"fdc24af86a2d05bb"}]
1
+ [{"name":"run-webpack","duration":190069564,"timestamp":2154868451,"id":14,"parentId":1,"tags":{},"startTime":1793411665144,"traceId":"3c396bcea130e180"},{"name":"run-typescript","duration":30994652,"timestamp":2344952167,"id":838,"parentId":1,"tags":{},"startTime":1793411855230,"traceId":"3c396bcea130e180"},{"name":"static-check","duration":9924915,"timestamp":2376080174,"id":841,"parentId":1,"tags":{},"startTime":1793411886357,"traceId":"3c396bcea130e180"},{"name":"static-generation","duration":7034345,"timestamp":2386182852,"id":997,"parentId":1,"tags":{},"startTime":1793411896460,"traceId":"3c396bcea130e180"},{"name":"collect-build-traces","duration":35808098,"timestamp":2386009543,"id":994,"parentId":1,"tags":{},"startTime":1793411896287,"traceId":"3c396bcea130e180"},{"name":"telemetry-flush","duration":51,"timestamp":2421825147,"id":1006,"parentId":1,"tags":{},"startTime":1793411932103,"traceId":"3c396bcea130e180"},{"name":"next-build","duration":267904555,"timestamp":2153920648,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1793411664196,"traceId":"3c396bcea130e180"}]
@@ -0,0 +1,353 @@
1
+ // File: D:\yun\pi-web-yun\app\api\agent\debug\route.ts
2
+ import * as entry from '../../../../../../app/api/agent/debug/route.js'
3
+ import type { NextRequest } from 'next/server.js'
4
+
5
+ import type { InstantConfigForTypeCheckInternal, Prefetch } from 'next/dist/build/segment-config/app/app-segment-config.js'
6
+
7
+ type TEntry = typeof import('../../../../../../app/api/agent/debug/route.js')
8
+
9
+ type SegmentParams<T extends Object = any> = T extends Record<string, any>
10
+ ? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
11
+ : T
12
+
13
+ // Check that the entry is a valid entry
14
+ checkFields<Diff<{
15
+ GET?: Function
16
+ HEAD?: Function
17
+ OPTIONS?: Function
18
+ POST?: Function
19
+ PUT?: Function
20
+ DELETE?: Function
21
+ PATCH?: Function
22
+ config?: {}
23
+ generateStaticParams?: Function
24
+ instant?: InstantConfigForTypeCheckInternal
25
+ prefetch?: Prefetch
26
+ unstable_dynamicStaleTime?: number
27
+ revalidate?: RevalidateRange<TEntry> | false
28
+ dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
29
+ dynamicParams?: boolean
30
+ fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
31
+ /** @deprecated The `preferredRegion` config is deprecated. Remove this export. */
32
+ preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
33
+ runtime?: 'nodejs' | 'experimental-edge' | 'edge'
34
+ maxDuration?: number
35
+
36
+ }, TEntry, ''>>()
37
+
38
+ type RouteContext = { params: Promise<SegmentParams> }
39
+ // Check the prop type of the entry function
40
+ if ('GET' in entry) {
41
+ checkFields<
42
+ Diff<
43
+ ParamCheck<Request | NextRequest>,
44
+ {
45
+ __tag__: 'GET'
46
+ __param_position__: 'first'
47
+ __param_type__: FirstArg<MaybeField<TEntry, 'GET'>>
48
+ },
49
+ 'GET'
50
+ >
51
+ >()
52
+ checkFields<
53
+ Diff<
54
+ ParamCheck<RouteContext>,
55
+ {
56
+ __tag__: 'GET'
57
+ __param_position__: 'second'
58
+ __param_type__: SecondArg<MaybeField<TEntry, 'GET'>>
59
+ },
60
+ 'GET'
61
+ >
62
+ >()
63
+
64
+ checkFields<
65
+ Diff<
66
+ {
67
+ __tag__: 'GET',
68
+ __return_type__: Response | void | never | Promise<Response | void | never>
69
+ },
70
+ {
71
+ __tag__: 'GET',
72
+ __return_type__: ReturnType<MaybeField<TEntry, 'GET'>>
73
+ },
74
+ 'GET'
75
+ >
76
+ >()
77
+ }
78
+ // Check the prop type of the entry function
79
+ if ('HEAD' in entry) {
80
+ checkFields<
81
+ Diff<
82
+ ParamCheck<Request | NextRequest>,
83
+ {
84
+ __tag__: 'HEAD'
85
+ __param_position__: 'first'
86
+ __param_type__: FirstArg<MaybeField<TEntry, 'HEAD'>>
87
+ },
88
+ 'HEAD'
89
+ >
90
+ >()
91
+ checkFields<
92
+ Diff<
93
+ ParamCheck<RouteContext>,
94
+ {
95
+ __tag__: 'HEAD'
96
+ __param_position__: 'second'
97
+ __param_type__: SecondArg<MaybeField<TEntry, 'HEAD'>>
98
+ },
99
+ 'HEAD'
100
+ >
101
+ >()
102
+
103
+ checkFields<
104
+ Diff<
105
+ {
106
+ __tag__: 'HEAD',
107
+ __return_type__: Response | void | never | Promise<Response | void | never>
108
+ },
109
+ {
110
+ __tag__: 'HEAD',
111
+ __return_type__: ReturnType<MaybeField<TEntry, 'HEAD'>>
112
+ },
113
+ 'HEAD'
114
+ >
115
+ >()
116
+ }
117
+ // Check the prop type of the entry function
118
+ if ('OPTIONS' in entry) {
119
+ checkFields<
120
+ Diff<
121
+ ParamCheck<Request | NextRequest>,
122
+ {
123
+ __tag__: 'OPTIONS'
124
+ __param_position__: 'first'
125
+ __param_type__: FirstArg<MaybeField<TEntry, 'OPTIONS'>>
126
+ },
127
+ 'OPTIONS'
128
+ >
129
+ >()
130
+ checkFields<
131
+ Diff<
132
+ ParamCheck<RouteContext>,
133
+ {
134
+ __tag__: 'OPTIONS'
135
+ __param_position__: 'second'
136
+ __param_type__: SecondArg<MaybeField<TEntry, 'OPTIONS'>>
137
+ },
138
+ 'OPTIONS'
139
+ >
140
+ >()
141
+
142
+ checkFields<
143
+ Diff<
144
+ {
145
+ __tag__: 'OPTIONS',
146
+ __return_type__: Response | void | never | Promise<Response | void | never>
147
+ },
148
+ {
149
+ __tag__: 'OPTIONS',
150
+ __return_type__: ReturnType<MaybeField<TEntry, 'OPTIONS'>>
151
+ },
152
+ 'OPTIONS'
153
+ >
154
+ >()
155
+ }
156
+ // Check the prop type of the entry function
157
+ if ('POST' in entry) {
158
+ checkFields<
159
+ Diff<
160
+ ParamCheck<Request | NextRequest>,
161
+ {
162
+ __tag__: 'POST'
163
+ __param_position__: 'first'
164
+ __param_type__: FirstArg<MaybeField<TEntry, 'POST'>>
165
+ },
166
+ 'POST'
167
+ >
168
+ >()
169
+ checkFields<
170
+ Diff<
171
+ ParamCheck<RouteContext>,
172
+ {
173
+ __tag__: 'POST'
174
+ __param_position__: 'second'
175
+ __param_type__: SecondArg<MaybeField<TEntry, 'POST'>>
176
+ },
177
+ 'POST'
178
+ >
179
+ >()
180
+
181
+ checkFields<
182
+ Diff<
183
+ {
184
+ __tag__: 'POST',
185
+ __return_type__: Response | void | never | Promise<Response | void | never>
186
+ },
187
+ {
188
+ __tag__: 'POST',
189
+ __return_type__: ReturnType<MaybeField<TEntry, 'POST'>>
190
+ },
191
+ 'POST'
192
+ >
193
+ >()
194
+ }
195
+ // Check the prop type of the entry function
196
+ if ('PUT' in entry) {
197
+ checkFields<
198
+ Diff<
199
+ ParamCheck<Request | NextRequest>,
200
+ {
201
+ __tag__: 'PUT'
202
+ __param_position__: 'first'
203
+ __param_type__: FirstArg<MaybeField<TEntry, 'PUT'>>
204
+ },
205
+ 'PUT'
206
+ >
207
+ >()
208
+ checkFields<
209
+ Diff<
210
+ ParamCheck<RouteContext>,
211
+ {
212
+ __tag__: 'PUT'
213
+ __param_position__: 'second'
214
+ __param_type__: SecondArg<MaybeField<TEntry, 'PUT'>>
215
+ },
216
+ 'PUT'
217
+ >
218
+ >()
219
+
220
+ checkFields<
221
+ Diff<
222
+ {
223
+ __tag__: 'PUT',
224
+ __return_type__: Response | void | never | Promise<Response | void | never>
225
+ },
226
+ {
227
+ __tag__: 'PUT',
228
+ __return_type__: ReturnType<MaybeField<TEntry, 'PUT'>>
229
+ },
230
+ 'PUT'
231
+ >
232
+ >()
233
+ }
234
+ // Check the prop type of the entry function
235
+ if ('DELETE' in entry) {
236
+ checkFields<
237
+ Diff<
238
+ ParamCheck<Request | NextRequest>,
239
+ {
240
+ __tag__: 'DELETE'
241
+ __param_position__: 'first'
242
+ __param_type__: FirstArg<MaybeField<TEntry, 'DELETE'>>
243
+ },
244
+ 'DELETE'
245
+ >
246
+ >()
247
+ checkFields<
248
+ Diff<
249
+ ParamCheck<RouteContext>,
250
+ {
251
+ __tag__: 'DELETE'
252
+ __param_position__: 'second'
253
+ __param_type__: SecondArg<MaybeField<TEntry, 'DELETE'>>
254
+ },
255
+ 'DELETE'
256
+ >
257
+ >()
258
+
259
+ checkFields<
260
+ Diff<
261
+ {
262
+ __tag__: 'DELETE',
263
+ __return_type__: Response | void | never | Promise<Response | void | never>
264
+ },
265
+ {
266
+ __tag__: 'DELETE',
267
+ __return_type__: ReturnType<MaybeField<TEntry, 'DELETE'>>
268
+ },
269
+ 'DELETE'
270
+ >
271
+ >()
272
+ }
273
+ // Check the prop type of the entry function
274
+ if ('PATCH' in entry) {
275
+ checkFields<
276
+ Diff<
277
+ ParamCheck<Request | NextRequest>,
278
+ {
279
+ __tag__: 'PATCH'
280
+ __param_position__: 'first'
281
+ __param_type__: FirstArg<MaybeField<TEntry, 'PATCH'>>
282
+ },
283
+ 'PATCH'
284
+ >
285
+ >()
286
+ checkFields<
287
+ Diff<
288
+ ParamCheck<RouteContext>,
289
+ {
290
+ __tag__: 'PATCH'
291
+ __param_position__: 'second'
292
+ __param_type__: SecondArg<MaybeField<TEntry, 'PATCH'>>
293
+ },
294
+ 'PATCH'
295
+ >
296
+ >()
297
+
298
+ checkFields<
299
+ Diff<
300
+ {
301
+ __tag__: 'PATCH',
302
+ __return_type__: Response | void | never | Promise<Response | void | never>
303
+ },
304
+ {
305
+ __tag__: 'PATCH',
306
+ __return_type__: ReturnType<MaybeField<TEntry, 'PATCH'>>
307
+ },
308
+ 'PATCH'
309
+ >
310
+ >()
311
+ }
312
+
313
+ // Check the arguments and return type of the generateStaticParams function
314
+ if ('generateStaticParams' in entry) {
315
+ checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
316
+ checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
317
+ }
318
+
319
+ export interface PageProps {
320
+ params?: Promise<SegmentParams>
321
+ searchParams?: Promise<any>
322
+ }
323
+ export interface LayoutProps {
324
+ children?: React.ReactNode
325
+
326
+ params?: Promise<SegmentParams>
327
+ }
328
+
329
+ // =============
330
+ // Utility types
331
+ type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
332
+
333
+ // If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
334
+ type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
335
+ type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
336
+
337
+ type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
338
+ type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
339
+ type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
340
+
341
+ type ParamCheck<T> = {
342
+ __tag__: string
343
+ __param_position__: string
344
+ __param_type__: T
345
+ }
346
+
347
+ function checkFields<_ extends { [k in keyof any]: never }>() {}
348
+
349
+ // https://github.com/sindresorhus/type-fest
350
+ type Numeric = number | bigint
351
+ type Zero = 0 | 0n
352
+ type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
353
+ type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/login" | "/pet-preview"
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/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/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/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/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": {}
@@ -110,6 +110,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
110
110
  type __Unused = __Check
111
111
  }
112
112
 
113
+ // Validate ../../app/api/agent/debug/route.ts
114
+ {
115
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/agent/debug">> = Specific
116
+ const handler = {} as typeof import("../../app/api/agent/debug/route.js")
117
+ type __Check = __IsExpected<typeof handler>
118
+ // @ts-ignore
119
+ type __Unused = __Check
120
+ }
121
+
113
122
  // Validate ../../app/api/agent/new/route.ts
114
123
  {
115
124
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/agent/new">> = Specific
package/README.md CHANGED
@@ -65,6 +65,7 @@ For port and hostname, command-line options override the corresponding environme
65
65
  | `PI_WEB_PASSWORD` | Enable browser password login; API clients may use Basic Auth with username `pi` | Authentication disabled |
66
66
  | `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) |
67
67
  | `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) |
68
+ | `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` |
68
69
 
69
70
  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.
70
71
 
@@ -111,7 +112,7 @@ npx pi-web-yun@latest
111
112
 
112
113
  - **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.
113
114
  - **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.
114
- - **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces.
115
+ - **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.
115
116
  - **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.
116
117
  - **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior.
117
118
 
@@ -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": "pi-yun",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Web UI for the pi coding agent (fork of @agegr/pi-web)",
5
5
  "homepage": "https://github.com/Jason-24/pi-web-yun#readme",
6
6
  "repository": {