@tasselx/pi-web 1.1.0 → 1.2.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 (281) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +11 -10
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/required-server-files.js +1 -1
  5. package/.next/required-server-files.json +1 -1
  6. package/.next/routes-manifest.json +6 -0
  7. package/.next/server/app/_global-error/page.js +1 -1
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page.js +1 -1
  15. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/_not-found.html +1 -1
  17. package/.next/server/app/_not-found.rsc +4 -4
  18. package/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  21. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  22. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  23. package/.next/server/app/api/agent/[id]/lease/route.js +1 -1
  24. package/.next/server/app/api/agent/[id]/route.js +1 -1
  25. package/.next/server/app/api/agent/new/route.js +1 -1
  26. package/.next/server/app/api/agent/running/route.js +1 -1
  27. package/.next/server/app/api/app-update/route.js +1 -1
  28. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  29. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  30. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  31. package/.next/server/app/api/auth/providers/route.js +1 -1
  32. package/.next/server/app/api/cache-miss-notices/route.js +1 -1
  33. package/.next/server/app/api/cwd/browse/route.js +1 -1
  34. package/.next/server/app/api/cwd/pick/route.js +1 -0
  35. package/.next/server/app/api/cwd/pick/route.js.nft.json +1 -0
  36. package/.next/server/app/api/cwd/pick/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/cwd/validate/route.js +1 -1
  38. package/.next/server/app/api/default-cwd/route.js +1 -1
  39. package/.next/server/app/api/file-index/route.js +1 -1
  40. package/.next/server/app/api/files/[...path]/route.js +1 -1
  41. package/.next/server/app/api/git/diff/route.js +1 -1
  42. package/.next/server/app/api/git/status/route.js +1 -1
  43. package/.next/server/app/api/home/route.js +1 -1
  44. package/.next/server/app/api/mcp/route.js +1 -1
  45. package/.next/server/app/api/mcp/sign-in/[flowId]/route.js +1 -1
  46. package/.next/server/app/api/mcp/sign-in/route.js +1 -1
  47. package/.next/server/app/api/mcp/test/route.js +1 -1
  48. package/.next/server/app/api/models/default/route.js +1 -1
  49. package/.next/server/app/api/models/enabled/route.js +1 -1
  50. package/.next/server/app/api/models/refresh/route.js +1 -1
  51. package/.next/server/app/api/models/route.js +1 -1
  52. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  53. package/.next/server/app/api/models-config/discover/route.js +1 -1
  54. package/.next/server/app/api/models-config/route.js +1 -1
  55. package/.next/server/app/api/models-config/test/route.js +1 -1
  56. package/.next/server/app/api/open-in-explorer/route.js +1 -1
  57. package/.next/server/app/api/plugins/check/route.js +1 -1
  58. package/.next/server/app/api/plugins/route.js +1 -1
  59. package/.next/server/app/api/project-trust/route.js +1 -1
  60. package/.next/server/app/api/provider-usage/query/route.js +1 -1
  61. package/.next/server/app/api/push/config/route.js +1 -1
  62. package/.next/server/app/api/push/subscribe/route.js +1 -1
  63. package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
  64. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  66. package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js +1 -1
  67. package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
  68. package/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  69. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  71. package/.next/server/app/api/sessions/delete/route.js +1 -1
  72. package/.next/server/app/api/sessions/route.js +1 -1
  73. package/.next/server/app/api/sessions/search/route.js +1 -1
  74. package/.next/server/app/api/sessions/stats/route.js +1 -1
  75. package/.next/server/app/api/sessions/ui-state/route.js +1 -1
  76. package/.next/server/app/api/skills/check/route.js +1 -1
  77. package/.next/server/app/api/skills/content/route.js +1 -1
  78. package/.next/server/app/api/skills/install/route.js +1 -1
  79. package/.next/server/app/api/skills/route.js +2 -2
  80. package/.next/server/app/api/skills/search/route.js +1 -1
  81. package/.next/server/app/api/skills/update/route.js +1 -1
  82. package/.next/server/app/api/subagents/[id]/route.js +1 -1
  83. package/.next/server/app/api/subagents/profiles/route.js +1 -1
  84. package/.next/server/app/api/subagents/settings/route.js +1 -1
  85. package/.next/server/app/api/terminal/[id]/events/route.js +2 -2
  86. package/.next/server/app/api/terminal/[id]/route.js +1 -1
  87. package/.next/server/app/api/terminal/route.js +1 -1
  88. package/.next/server/app/api/tools/settings/route.js +1 -1
  89. package/.next/server/app/api/web-auth/route.js +1 -1
  90. package/.next/server/app/api/worktrees/route.js +1 -1
  91. package/.next/server/app/favicon.ico/route.js +1 -1
  92. package/.next/server/app/index.html +1 -1
  93. package/.next/server/app/index.rsc +8 -8
  94. package/.next/server/app/index.segments/__PAGE__.segment.rsc +8 -8
  95. package/.next/server/app/index.segments/_full.segment.rsc +8 -8
  96. package/.next/server/app/index.segments/_tree.segment.rsc +4 -4
  97. package/.next/server/app/login/page.js +1 -1
  98. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  99. package/.next/server/app/login.html +1 -1
  100. package/.next/server/app/login.rsc +5 -5
  101. package/.next/server/app/login.segments/_full.segment.rsc +5 -5
  102. package/.next/server/app/login.segments/_tree.segment.rsc +3 -3
  103. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
  104. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  105. package/.next/server/app/page.js +22 -22
  106. package/.next/server/app/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app-paths-manifest.json +11 -10
  108. package/.next/server/chunks/2243.js +1 -1
  109. package/.next/server/chunks/3379.js +1 -1
  110. package/.next/server/chunks/7979.js +1 -1
  111. package/.next/server/chunks/9165.js +1 -1
  112. package/.next/server/functions-config-manifest.json +1 -0
  113. package/.next/server/middleware-build-manifest.js +1 -1
  114. package/.next/server/pages/404.html +1 -1
  115. package/.next/server/pages/500.html +1 -1
  116. package/.next/static/-g1KUgp8qZzNmZ5_sTyxp/_buildManifest.js +1 -0
  117. package/.next/static/chunks/1278-d56768cd20f66ed4.js +1 -0
  118. package/.next/static/chunks/app/_global-error/page-5d60af35a4bb1818.js +1 -0
  119. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-5d60af35a4bb1818.js +1 -0
  120. package/.next/static/chunks/app/api/agent/[id]/events/route-5d60af35a4bb1818.js +1 -0
  121. package/.next/static/chunks/app/api/agent/[id]/lease/route-5d60af35a4bb1818.js +1 -0
  122. package/.next/static/chunks/app/api/agent/[id]/route-5d60af35a4bb1818.js +1 -0
  123. package/.next/static/chunks/app/api/agent/new/route-5d60af35a4bb1818.js +1 -0
  124. package/.next/static/chunks/app/api/agent/running/route-5d60af35a4bb1818.js +1 -0
  125. package/.next/static/chunks/app/api/app-update/route-5d60af35a4bb1818.js +1 -0
  126. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-5d60af35a4bb1818.js +1 -0
  127. package/.next/static/chunks/app/api/auth/login/[provider]/route-5d60af35a4bb1818.js +1 -0
  128. package/.next/static/chunks/app/api/auth/logout/[provider]/route-5d60af35a4bb1818.js +1 -0
  129. package/.next/static/chunks/app/api/auth/providers/route-5d60af35a4bb1818.js +1 -0
  130. package/.next/static/chunks/app/api/cache-miss-notices/route-5d60af35a4bb1818.js +1 -0
  131. package/.next/static/chunks/app/api/cwd/browse/route-5d60af35a4bb1818.js +1 -0
  132. package/.next/static/chunks/app/api/cwd/pick/route-5d60af35a4bb1818.js +1 -0
  133. package/.next/static/chunks/app/api/cwd/validate/route-5d60af35a4bb1818.js +1 -0
  134. package/.next/static/chunks/app/api/default-cwd/route-5d60af35a4bb1818.js +1 -0
  135. package/.next/static/chunks/app/api/file-index/route-5d60af35a4bb1818.js +1 -0
  136. package/.next/static/chunks/app/api/files/[...path]/route-5d60af35a4bb1818.js +1 -0
  137. package/.next/static/chunks/app/api/git/diff/route-5d60af35a4bb1818.js +1 -0
  138. package/.next/static/chunks/app/api/git/status/route-5d60af35a4bb1818.js +1 -0
  139. package/.next/static/chunks/app/api/home/route-5d60af35a4bb1818.js +1 -0
  140. package/.next/static/chunks/app/api/mcp/route-5d60af35a4bb1818.js +1 -0
  141. package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-5d60af35a4bb1818.js +1 -0
  142. package/.next/static/chunks/app/api/mcp/sign-in/route-5d60af35a4bb1818.js +1 -0
  143. package/.next/static/chunks/app/api/mcp/test/route-5d60af35a4bb1818.js +1 -0
  144. package/.next/static/chunks/app/api/models/default/route-5d60af35a4bb1818.js +1 -0
  145. package/.next/static/chunks/app/api/models/enabled/route-5d60af35a4bb1818.js +1 -0
  146. package/.next/static/chunks/app/api/models/refresh/route-5d60af35a4bb1818.js +1 -0
  147. package/.next/static/chunks/app/api/models/route-5d60af35a4bb1818.js +1 -0
  148. package/.next/static/chunks/app/api/models-config/catalog/route-5d60af35a4bb1818.js +1 -0
  149. package/.next/static/chunks/app/api/models-config/discover/route-5d60af35a4bb1818.js +1 -0
  150. package/.next/static/chunks/app/api/models-config/route-5d60af35a4bb1818.js +1 -0
  151. package/.next/static/chunks/app/api/models-config/test/route-5d60af35a4bb1818.js +1 -0
  152. package/.next/static/chunks/app/api/open-in-explorer/route-5d60af35a4bb1818.js +1 -0
  153. package/.next/static/chunks/app/api/plugins/check/route-5d60af35a4bb1818.js +1 -0
  154. package/.next/static/chunks/app/api/plugins/route-5d60af35a4bb1818.js +1 -0
  155. package/.next/static/chunks/app/api/project-trust/route-5d60af35a4bb1818.js +1 -0
  156. package/.next/static/chunks/app/api/provider-usage/query/route-5d60af35a4bb1818.js +1 -0
  157. package/.next/static/chunks/app/api/push/config/route-5d60af35a4bb1818.js +1 -0
  158. package/.next/static/chunks/app/api/push/subscribe/route-5d60af35a4bb1818.js +1 -0
  159. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-5d60af35a4bb1818.js +1 -0
  160. package/.next/static/chunks/app/api/sessions/[id]/context/route-5d60af35a4bb1818.js +1 -0
  161. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-5d60af35a4bb1818.js +1 -0
  162. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-5d60af35a4bb1818.js +1 -0
  163. package/.next/static/chunks/app/api/sessions/[id]/export/route-5d60af35a4bb1818.js +1 -0
  164. package/.next/static/chunks/app/api/sessions/[id]/fork/route-5d60af35a4bb1818.js +1 -0
  165. package/.next/static/chunks/app/api/sessions/[id]/route-5d60af35a4bb1818.js +1 -0
  166. package/.next/static/chunks/app/api/sessions/[id]/state/route-5d60af35a4bb1818.js +1 -0
  167. package/.next/static/chunks/app/api/sessions/delete/route-5d60af35a4bb1818.js +1 -0
  168. package/.next/static/chunks/app/api/sessions/route-5d60af35a4bb1818.js +1 -0
  169. package/.next/static/chunks/app/api/sessions/search/route-5d60af35a4bb1818.js +1 -0
  170. package/.next/static/chunks/app/api/sessions/stats/route-5d60af35a4bb1818.js +1 -0
  171. package/.next/static/chunks/app/api/sessions/ui-state/route-5d60af35a4bb1818.js +1 -0
  172. package/.next/static/chunks/app/api/skills/check/route-5d60af35a4bb1818.js +1 -0
  173. package/.next/static/chunks/app/api/skills/content/route-5d60af35a4bb1818.js +1 -0
  174. package/.next/static/chunks/app/api/skills/install/route-5d60af35a4bb1818.js +1 -0
  175. package/.next/static/chunks/app/api/skills/route-5d60af35a4bb1818.js +1 -0
  176. package/.next/static/chunks/app/api/skills/search/route-5d60af35a4bb1818.js +1 -0
  177. package/.next/static/chunks/app/api/skills/update/route-5d60af35a4bb1818.js +1 -0
  178. package/.next/static/chunks/app/api/subagents/[id]/route-5d60af35a4bb1818.js +1 -0
  179. package/.next/static/chunks/app/api/subagents/profiles/route-5d60af35a4bb1818.js +1 -0
  180. package/.next/static/chunks/app/api/subagents/settings/route-5d60af35a4bb1818.js +1 -0
  181. package/.next/static/chunks/app/api/terminal/[id]/events/route-5d60af35a4bb1818.js +1 -0
  182. package/.next/static/chunks/app/api/terminal/[id]/route-5d60af35a4bb1818.js +1 -0
  183. package/.next/static/chunks/app/api/terminal/route-5d60af35a4bb1818.js +1 -0
  184. package/.next/static/chunks/app/api/tools/settings/route-5d60af35a4bb1818.js +1 -0
  185. package/.next/static/chunks/app/api/web-auth/route-5d60af35a4bb1818.js +1 -0
  186. package/.next/static/chunks/app/api/worktrees/route-5d60af35a4bb1818.js +1 -0
  187. package/.next/static/chunks/app/{layout-4fac0a406b05e28e.js → layout-e538e5d308a97d51.js} +1 -1
  188. package/.next/static/chunks/app/manifest.webmanifest/route-5d60af35a4bb1818.js +1 -0
  189. package/.next/static/chunks/app/page-ae6a7d3a5517d7e9.js +286 -0
  190. package/.next/static/chunks/next/dist/client/components/builtin/app-error-5d60af35a4bb1818.js +1 -0
  191. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-5d60af35a4bb1818.js +1 -0
  192. package/.next/static/chunks/next/dist/client/components/builtin/not-found-5d60af35a4bb1818.js +1 -0
  193. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-5d60af35a4bb1818.js +1 -0
  194. package/.next/static/css/{ad96e794a9954323.css → bf4305e2891fcef1.css} +1 -1
  195. package/.next/static/css/{2c3ed27b408ff881.css → dac4513c1f26d498.css} +1 -1
  196. package/.next/static/css/e423cf64c3a31a65.css +1 -0
  197. package/.next/trace +58 -178
  198. package/.next/trace-build +1 -1
  199. package/.next/types/app/api/cwd/pick/route.ts +355 -0
  200. package/.next/types/routes.d.ts +2 -1
  201. package/.next/types/validator.ts +10 -0
  202. package/README.md +1 -0
  203. package/package.json +1 -1
  204. package/.next/static/chunks/1278-04df33c86a8cedbb.js +0 -1
  205. package/.next/static/chunks/app/_global-error/page-cbe4231fb889bdce.js +0 -1
  206. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-cbe4231fb889bdce.js +0 -1
  207. package/.next/static/chunks/app/api/agent/[id]/events/route-cbe4231fb889bdce.js +0 -1
  208. package/.next/static/chunks/app/api/agent/[id]/lease/route-cbe4231fb889bdce.js +0 -1
  209. package/.next/static/chunks/app/api/agent/[id]/route-cbe4231fb889bdce.js +0 -1
  210. package/.next/static/chunks/app/api/agent/new/route-cbe4231fb889bdce.js +0 -1
  211. package/.next/static/chunks/app/api/agent/running/route-cbe4231fb889bdce.js +0 -1
  212. package/.next/static/chunks/app/api/app-update/route-cbe4231fb889bdce.js +0 -1
  213. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cbe4231fb889bdce.js +0 -1
  214. package/.next/static/chunks/app/api/auth/login/[provider]/route-cbe4231fb889bdce.js +0 -1
  215. package/.next/static/chunks/app/api/auth/logout/[provider]/route-cbe4231fb889bdce.js +0 -1
  216. package/.next/static/chunks/app/api/auth/providers/route-cbe4231fb889bdce.js +0 -1
  217. package/.next/static/chunks/app/api/cache-miss-notices/route-cbe4231fb889bdce.js +0 -1
  218. package/.next/static/chunks/app/api/cwd/browse/route-cbe4231fb889bdce.js +0 -1
  219. package/.next/static/chunks/app/api/cwd/validate/route-cbe4231fb889bdce.js +0 -1
  220. package/.next/static/chunks/app/api/default-cwd/route-cbe4231fb889bdce.js +0 -1
  221. package/.next/static/chunks/app/api/file-index/route-cbe4231fb889bdce.js +0 -1
  222. package/.next/static/chunks/app/api/files/[...path]/route-cbe4231fb889bdce.js +0 -1
  223. package/.next/static/chunks/app/api/git/diff/route-cbe4231fb889bdce.js +0 -1
  224. package/.next/static/chunks/app/api/git/status/route-cbe4231fb889bdce.js +0 -1
  225. package/.next/static/chunks/app/api/home/route-cbe4231fb889bdce.js +0 -1
  226. package/.next/static/chunks/app/api/mcp/route-cbe4231fb889bdce.js +0 -1
  227. package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-cbe4231fb889bdce.js +0 -1
  228. package/.next/static/chunks/app/api/mcp/sign-in/route-cbe4231fb889bdce.js +0 -1
  229. package/.next/static/chunks/app/api/mcp/test/route-cbe4231fb889bdce.js +0 -1
  230. package/.next/static/chunks/app/api/models/default/route-cbe4231fb889bdce.js +0 -1
  231. package/.next/static/chunks/app/api/models/enabled/route-cbe4231fb889bdce.js +0 -1
  232. package/.next/static/chunks/app/api/models/refresh/route-cbe4231fb889bdce.js +0 -1
  233. package/.next/static/chunks/app/api/models/route-cbe4231fb889bdce.js +0 -1
  234. package/.next/static/chunks/app/api/models-config/catalog/route-cbe4231fb889bdce.js +0 -1
  235. package/.next/static/chunks/app/api/models-config/discover/route-cbe4231fb889bdce.js +0 -1
  236. package/.next/static/chunks/app/api/models-config/route-cbe4231fb889bdce.js +0 -1
  237. package/.next/static/chunks/app/api/models-config/test/route-cbe4231fb889bdce.js +0 -1
  238. package/.next/static/chunks/app/api/open-in-explorer/route-cbe4231fb889bdce.js +0 -1
  239. package/.next/static/chunks/app/api/plugins/check/route-cbe4231fb889bdce.js +0 -1
  240. package/.next/static/chunks/app/api/plugins/route-cbe4231fb889bdce.js +0 -1
  241. package/.next/static/chunks/app/api/project-trust/route-cbe4231fb889bdce.js +0 -1
  242. package/.next/static/chunks/app/api/provider-usage/query/route-cbe4231fb889bdce.js +0 -1
  243. package/.next/static/chunks/app/api/push/config/route-cbe4231fb889bdce.js +0 -1
  244. package/.next/static/chunks/app/api/push/subscribe/route-cbe4231fb889bdce.js +0 -1
  245. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-cbe4231fb889bdce.js +0 -1
  246. package/.next/static/chunks/app/api/sessions/[id]/context/route-cbe4231fb889bdce.js +0 -1
  247. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-cbe4231fb889bdce.js +0 -1
  248. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-cbe4231fb889bdce.js +0 -1
  249. package/.next/static/chunks/app/api/sessions/[id]/export/route-cbe4231fb889bdce.js +0 -1
  250. package/.next/static/chunks/app/api/sessions/[id]/fork/route-cbe4231fb889bdce.js +0 -1
  251. package/.next/static/chunks/app/api/sessions/[id]/route-cbe4231fb889bdce.js +0 -1
  252. package/.next/static/chunks/app/api/sessions/[id]/state/route-cbe4231fb889bdce.js +0 -1
  253. package/.next/static/chunks/app/api/sessions/delete/route-cbe4231fb889bdce.js +0 -1
  254. package/.next/static/chunks/app/api/sessions/route-cbe4231fb889bdce.js +0 -1
  255. package/.next/static/chunks/app/api/sessions/search/route-cbe4231fb889bdce.js +0 -1
  256. package/.next/static/chunks/app/api/sessions/stats/route-cbe4231fb889bdce.js +0 -1
  257. package/.next/static/chunks/app/api/sessions/ui-state/route-cbe4231fb889bdce.js +0 -1
  258. package/.next/static/chunks/app/api/skills/check/route-cbe4231fb889bdce.js +0 -1
  259. package/.next/static/chunks/app/api/skills/content/route-cbe4231fb889bdce.js +0 -1
  260. package/.next/static/chunks/app/api/skills/install/route-cbe4231fb889bdce.js +0 -1
  261. package/.next/static/chunks/app/api/skills/route-cbe4231fb889bdce.js +0 -1
  262. package/.next/static/chunks/app/api/skills/search/route-cbe4231fb889bdce.js +0 -1
  263. package/.next/static/chunks/app/api/skills/update/route-cbe4231fb889bdce.js +0 -1
  264. package/.next/static/chunks/app/api/subagents/[id]/route-cbe4231fb889bdce.js +0 -1
  265. package/.next/static/chunks/app/api/subagents/profiles/route-cbe4231fb889bdce.js +0 -1
  266. package/.next/static/chunks/app/api/subagents/settings/route-cbe4231fb889bdce.js +0 -1
  267. package/.next/static/chunks/app/api/terminal/[id]/events/route-cbe4231fb889bdce.js +0 -1
  268. package/.next/static/chunks/app/api/terminal/[id]/route-cbe4231fb889bdce.js +0 -1
  269. package/.next/static/chunks/app/api/terminal/route-cbe4231fb889bdce.js +0 -1
  270. package/.next/static/chunks/app/api/tools/settings/route-cbe4231fb889bdce.js +0 -1
  271. package/.next/static/chunks/app/api/web-auth/route-cbe4231fb889bdce.js +0 -1
  272. package/.next/static/chunks/app/api/worktrees/route-cbe4231fb889bdce.js +0 -1
  273. package/.next/static/chunks/app/manifest.webmanifest/route-cbe4231fb889bdce.js +0 -1
  274. package/.next/static/chunks/app/page-55d6c63b3fad59ba.js +0 -286
  275. package/.next/static/chunks/next/dist/client/components/builtin/app-error-cbe4231fb889bdce.js +0 -1
  276. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cbe4231fb889bdce.js +0 -1
  277. package/.next/static/chunks/next/dist/client/components/builtin/not-found-cbe4231fb889bdce.js +0 -1
  278. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cbe4231fb889bdce.js +0 -1
  279. package/.next/static/css/2e00ddf94db0ac93.css +0 -1
  280. package/.next/static/kGHKpcRcJUSY2DuTSILsx/_buildManifest.js +0 -1
  281. /package/.next/static/{kGHKpcRcJUSY2DuTSILsx → -g1KUgp8qZzNmZ5_sTyxp}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (()=>{var a={};a.id=9787,a.ids=[9787],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26777:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{u:()=>k});var e=c(29021),f=c(21820),g=c(33873),h=c(75430),i=a([h]);function j(a){return"object"!=typeof a||null===a||Array.isArray(a)?{}:Object.fromEntries(Object.entries(a).filter(a=>"string"==typeof a[1]))}async function k(a,b){let c;try{c=(0,e.mkdtempSync)((0,g.join)((0,f.tmpdir)(),"pi-web-model-discovery-"));let d=(0,g.join)(c,"models.json"),i="__pi_web_model_discovery__";(0,e.writeFileSync)(d,JSON.stringify({providers:{[a]:{...b,models:[{id:i}]}}},null,2),"utf8");let k=await h.ModelRuntime.create({modelsPath:d}),l=k.getError();if(l)throw Error(l);let m=k.getModel(a,i);if(!m)throw Error(`Unable to load provider "${a}"`);let n=m.baseUrl?.trim()||k.getProvider(a)?.baseUrl?.trim()||void 0,o=m.api??k.getModels(a)[0]?.api,p=await k.getAuth(m);if(p)return{apiKey:p.auth.apiKey,headers:j(p.auth.headers),baseUrl:n,api:o};return{headers:j(k.getCompatibilityRequestConfig(m).headers),baseUrl:n,api:o}}finally{c&&(0,e.rmSync)(c,{recursive:!0,force:!0})}}h=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51874:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>i,dynamic:()=>j});var e=c(23211),f=c(26777),g=c(93598),h=a([f]);f=(h.then?(await h)():h)[0];let j="force-dynamic";async function i(a){try{var b;let c,d,h,i=await a.json(),j="string"==typeof i.providerName?i.providerName.trim():"";if(!j)return e.NextResponse.json({error:"providerName is required"},{status:400});if(b=i.provider,"object"!=typeof b||null===b||Array.isArray(b))return e.NextResponse.json({error:"provider is required"},{status:400});let k="string"==typeof i.provider.baseUrl?i.provider.baseUrl.trim():"",l="string"==typeof i.provider.api&&i.provider.api?i.provider.api:"";try{c=await (0,f.u)(j,i.provider)}catch(a){if(!k)return e.NextResponse.json({error:"Base URL is required"},{status:400});throw a}if("string"==typeof i.provider.apiKey&&i.provider.apiKey.trim()&&!c.apiKey)return e.NextResponse.json({error:`No API key found for "${j}"`},{status:400});let m=k||c.baseUrl||"";if(!m)return e.NextResponse.json({error:"Base URL is required"},{status:400});let n=l||c.api||"openai-completions";try{d=(0,g.y)(m,n)}catch{return e.NextResponse.json({error:"Base URL is invalid"},{status:400})}let o=await fetch(d,{cache:"no-store",headers:function(a,b,c){let d=new Headers(c);return(d.has("accept")||d.set("Accept","application/json"),b)?("anthropic-messages"===a?(d.has("x-api-key")||d.set("x-api-key",b),d.has("anthropic-version")||d.set("anthropic-version","2023-06-01")):"google-generative-ai"===a?d.has("x-goog-api-key")||d.set("x-goog-api-key",b):d.has("authorization")||d.set("Authorization",`Bearer ${b}`),d):d}(n,c.apiKey,c.headers),signal:AbortSignal.timeout(2e4)}),p=await o.text();if(!o.ok)return e.NextResponse.json({error:p.slice(0,500)||`Upstream returned HTTP ${o.status}`,status:o.status},{status:502});try{h=JSON.parse(p)}catch{return e.NextResponse.json({error:"Upstream model list was not valid JSON"},{status:502})}let q=(0,g.f)(h);if(0===q.length)return e.NextResponse.json({error:"No models found in the upstream response"},{status:502});return e.NextResponse.json({models:q,endpoint:d.toString()})}catch(c){let a=c instanceof Error?c.message:String(c),b=c instanceof DOMException&&"TimeoutError"===c.name?504:500;return e.NextResponse.json({error:a},{status:b})}}d()}catch(a){d(a)}})},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93598:(a,b,c)=>{"use strict";c.d(b,{f:()=>l,y:()=>m});let d=["minimal","low","medium","high","xhigh","max"],e=["context_length","contextLength","context_window","contextWindow","max_model_len","max_input_tokens","inputTokenLimit"],f=["max_output_tokens","maxOutputTokens","max_completion_tokens","outputTokenLimit"],g=["supports_reasoning","supportsReasoning","reasoning","thinking"],h=["supported_efforts","supportedEfforts"];function i(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function j(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function k(a,b){for(let c of b){let b=a[c],d="string"==typeof b&&/^\d+$/.test(b.trim())?Number(b):b;if("number"==typeof d&&Number.isSafeInteger(d)&&d>0)return d}}function l(a){let b=new Set,c=[];for(let l of function(a){if(Array.isArray(a))return a;if(!i(a))return[];for(let b of["data","models","results","items"]){let c=a[b];if(Array.isArray(c))return c;if(i(c))return Object.values(c)}return[]}(a)){let a=function(a){let b,c,l,m;if("string"==typeof a){let b=a.trim();return b?{id:b}:null}if(!i(a))return null;let n=j(a.id)??j(a.model)??j(a.name);if(!n)return null;let o=n.startsWith("models/")?n.slice(7):n;if(!o)return null;let p=j(a.display_name)??j(a.displayName)??(j(a.id)||j(a.model)?j(a.name):void 0);return{id:o,...p&&p!==o?{name:p}:{},...(c=(b=g.some(b=>!0===a[b]))?function(a){let b=h.map(b=>a[b]).find(Array.isArray);if(!b)return;let c=new Set(b.filter(a=>"string"==typeof a));if(!d.some(a=>c.has(a)))return;let e={};for(let a of d)c.has(a)?("xhigh"===a||"max"===a)&&(e[a]=a):e[a]=null;return e}(a):void 0,l=k(a,e),m=k(a,f),{...b?{reasoning:!0}:{},...c?{thinkingLevelMap:c}:{},...l?{contextWindow:l}:{},...m?{maxTokens:m}:{}})}}(l);!a||b.has(a.id)||(b.add(a.id),c.push(a))}return c.sort((a,b)=>(a.name??a.id).localeCompare(b.name??b.id,void 0,{numeric:!0,sensitivity:"base"}))}function m(a,b){let c=new URL(a.trim()),d=c.pathname.replace(/\/+$/,"");if(!/\/models$/i.test(d)){let a=d;"anthropic-messages"!==b||/\/v\d+(?:beta)?$/i.test(a)||(a+="/v1"),"google-generative-ai"!==b||/\/v\d+(?:beta)?$/i.test(a)||(a+="/v1beta"),c.pathname=`${a}/models`.replace(/\/+/g,"/")}return"anthropic-messages"!==b||c.searchParams.has("limit")||c.searchParams.set("limit","1000"),"google-generative-ai"!==b||c.searchParams.has("pageSize")||c.searchParams.set("pageSize","1000"),c}},95853:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models-config/discover/route",pathname:"/api/models-config/discover",filename:"route",bundlePath:"app/api/models-config/discover/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/models-config/discover/route.ts",nextConfigOutput:"",userland:()=>c(51874),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models-config/discover/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=95853));module.exports=c})();
1
+ (()=>{var a={};a.id=9787,a.ids=[9787],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26777:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{u:()=>k});var e=c(29021),f=c(21820),g=c(33873),h=c(75430),i=a([h]);function j(a){return"object"!=typeof a||null===a||Array.isArray(a)?{}:Object.fromEntries(Object.entries(a).filter(a=>"string"==typeof a[1]))}async function k(a,b){let c;try{c=(0,e.mkdtempSync)((0,g.join)((0,f.tmpdir)(),"pi-web-model-discovery-"));let d=(0,g.join)(c,"models.json"),i="__pi_web_model_discovery__";(0,e.writeFileSync)(d,JSON.stringify({providers:{[a]:{...b,models:[{id:i}]}}},null,2),"utf8");let k=await h.ModelRuntime.create({modelsPath:d}),l=k.getError();if(l)throw Error(l);let m=k.getModel(a,i);if(!m)throw Error(`Unable to load provider "${a}"`);let n=m.baseUrl?.trim()||k.getProvider(a)?.baseUrl?.trim()||void 0,o=m.api??k.getModels(a)[0]?.api,p=await k.getAuth(m);if(p)return{apiKey:p.auth.apiKey,headers:j(p.auth.headers),baseUrl:n,api:o};return{headers:j(k.getCompatibilityRequestConfig(m).headers),baseUrl:n,api:o}}finally{c&&(0,e.rmSync)(c,{recursive:!0,force:!0})}}h=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51874:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>i,dynamic:()=>j});var e=c(23211),f=c(26777),g=c(93598),h=a([f]);f=(h.then?(await h)():h)[0];let j="force-dynamic";async function i(a){try{var b;let c,d,h,i=await a.json(),j="string"==typeof i.providerName?i.providerName.trim():"";if(!j)return e.NextResponse.json({error:"providerName is required"},{status:400});if(b=i.provider,"object"!=typeof b||null===b||Array.isArray(b))return e.NextResponse.json({error:"provider is required"},{status:400});let k="string"==typeof i.provider.baseUrl?i.provider.baseUrl.trim():"",l="string"==typeof i.provider.api&&i.provider.api?i.provider.api:"";try{c=await (0,f.u)(j,i.provider)}catch(a){if(!k)return e.NextResponse.json({error:"Base URL is required"},{status:400});throw a}if("string"==typeof i.provider.apiKey&&i.provider.apiKey.trim()&&!c.apiKey)return e.NextResponse.json({error:`No API key found for "${j}"`},{status:400});let m=k||c.baseUrl||"";if(!m)return e.NextResponse.json({error:"Base URL is required"},{status:400});let n=l||c.api||"openai-completions";try{d=(0,g.y)(m,n)}catch{return e.NextResponse.json({error:"Base URL is invalid"},{status:400})}let o=await fetch(d,{cache:"no-store",headers:function(a,b,c){let d=new Headers(c);return(d.has("accept")||d.set("Accept","application/json"),b)?("anthropic-messages"===a?(d.has("x-api-key")||d.set("x-api-key",b),d.has("anthropic-version")||d.set("anthropic-version","2023-06-01")):"google-generative-ai"===a?d.has("x-goog-api-key")||d.set("x-goog-api-key",b):d.has("authorization")||d.set("Authorization",`Bearer ${b}`),d):d}(n,c.apiKey,c.headers),signal:AbortSignal.timeout(2e4)}),p=await o.text();if(!o.ok)return e.NextResponse.json({error:p.slice(0,500)||`Upstream returned HTTP ${o.status}`,status:o.status},{status:502});try{h=JSON.parse(p)}catch{return e.NextResponse.json({error:"Upstream model list was not valid JSON"},{status:502})}let q=(0,g.f)(h);if(0===q.length)return e.NextResponse.json({error:"No models found in the upstream response"},{status:502});return e.NextResponse.json({models:q,endpoint:d.toString()})}catch(c){let a=c instanceof Error?c.message:String(c),b=c instanceof DOMException&&"TimeoutError"===c.name?504:500;return e.NextResponse.json({error:a},{status:b})}}d()}catch(a){d(a)}})},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},78335:()=>{},78697:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models-config/discover/route",pathname:"/api/models-config/discover",filename:"route",bundlePath:"app/api/models-config/discover/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/models-config/discover/route.ts",nextConfigOutput:"",userland:()=>c(51874),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models-config/discover/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93598:(a,b,c)=>{"use strict";c.d(b,{f:()=>l,y:()=>m});let d=["minimal","low","medium","high","xhigh","max"],e=["context_length","contextLength","context_window","contextWindow","max_model_len","max_input_tokens","inputTokenLimit"],f=["max_output_tokens","maxOutputTokens","max_completion_tokens","outputTokenLimit"],g=["supports_reasoning","supportsReasoning","reasoning","thinking"],h=["supported_efforts","supportedEfforts"];function i(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function j(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function k(a,b){for(let c of b){let b=a[c],d="string"==typeof b&&/^\d+$/.test(b.trim())?Number(b):b;if("number"==typeof d&&Number.isSafeInteger(d)&&d>0)return d}}function l(a){let b=new Set,c=[];for(let l of function(a){if(Array.isArray(a))return a;if(!i(a))return[];for(let b of["data","models","results","items"]){let c=a[b];if(Array.isArray(c))return c;if(i(c))return Object.values(c)}return[]}(a)){let a=function(a){let b,c,l,m;if("string"==typeof a){let b=a.trim();return b?{id:b}:null}if(!i(a))return null;let n=j(a.id)??j(a.model)??j(a.name);if(!n)return null;let o=n.startsWith("models/")?n.slice(7):n;if(!o)return null;let p=j(a.display_name)??j(a.displayName)??(j(a.id)||j(a.model)?j(a.name):void 0);return{id:o,...p&&p!==o?{name:p}:{},...(c=(b=g.some(b=>!0===a[b]))?function(a){let b=h.map(b=>a[b]).find(Array.isArray);if(!b)return;let c=new Set(b.filter(a=>"string"==typeof a));if(!d.some(a=>c.has(a)))return;let e={};for(let a of d)c.has(a)?("xhigh"===a||"max"===a)&&(e[a]=a):e[a]=null;return e}(a):void 0,l=k(a,e),m=k(a,f),{...b?{reasoning:!0}:{},...c?{thinkingLevelMap:c}:{},...l?{contextWindow:l}:{},...m?{maxTokens:m}:{}})}}(l);!a||b.has(a.id)||(b.add(a.id),c.push(a))}return c.sort((a,b)=>(a.name??a.id).localeCompare(b.name??b.id,void 0,{numeric:!0,sensitivity:"base"}))}function m(a,b){let c=new URL(a.trim()),d=c.pathname.replace(/\/+$/,"");if(!/\/models$/i.test(d)){let a=d;"anthropic-messages"!==b||/\/v\d+(?:beta)?$/i.test(a)||(a+="/v1"),"google-generative-ai"!==b||/\/v\d+(?:beta)?$/i.test(a)||(a+="/v1beta"),c.pathname=`${a}/models`.replace(/\/+/g,"/")}return"anthropic-messages"!==b||c.searchParams.has("limit")||c.searchParams.set("limit","1000"),"google-generative-ai"!==b||c.searchParams.has("pageSize")||c.searchParams.set("pageSize","1000"),c}},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=78697));module.exports=c})();
@@ -1 +1 @@
1
- (()=>{var a={};a.id=7483,a.ids=[7483],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17551:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IX:()=>o,LB:()=>q,V6:()=>n});var e=c(73024),f=c(76760),g=c(75430),h=c(8102),i=c(35975),j=c(28967),k=a([g]);g=(k.then?(await k)():k)[0];let p=["input","output","cacheRead","cacheWrite"];function l(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function m(){return(0,f.join)((0,g.getAgentDir)(),"models.json")}class q extends Error{constructor(a){super(a),this.name="ModelsConfigReadError"}}function n(a=m()){let b;if(!(0,e.existsSync)(a))return{providers:{}};try{let c=(0,e.readFileSync)(a,"utf8").replace(/^\uFEFF/,"");if(!c.trim())return{providers:{}};b=JSON.parse((0,i.R)(c))}catch(b){throw new q(`Failed to read ${a}: ${b instanceof Error?b.message:String(b)}`)}if(!l(b))throw new q(`Failed to read ${a}: expected a JSON object`);return b}function o(a,b=m()){n(b);let c=(0,f.dirname)(b);(0,e.existsSync)(c)||(0,e.mkdirSync)(c,{recursive:!0});let d=function(a){let b=structuredClone(a);if(!l(b.providers))return b;for(let a of Object.values(b.providers))if(l(a)&&Array.isArray(a.models))for(let b of a.models){if(!l(b)||!("cost"in b))continue;let a=function(a){if(!l(a))return;let b=p.filter(b=>void 0!==a[b]);if(0!==b.length&&!b.some(b=>"number"!=typeof a[b]||!Number.isFinite(a[b])))return Object.fromEntries([...Object.entries(a),...p.map(b=>[b,a[b]??0])])}(b.cost);a?b.cost=a:delete b.cost}return b}(function(a){if(!l(a.providers))return a;let b=Object.fromEntries(Object.entries(a.providers).map(([a,b])=>{if(!l(b)||!Array.isArray(b.models))return[a,b];let c=b.models.filter(a=>!l(a)||"string"!=typeof a.id||a.id.trim().length>0);return[a,{...b,models:c}]}));return{...a,providers:b}}(a)),g=b;if((0,e.lstatSync)(b,{throwIfNoEntry:!1})?.isSymbolicLink())try{g=(0,e.realpathSync)(b)}catch{throw new q(`Failed to write ${b}: dangling symbolic link`)}(0,h.$)(g,JSON.stringify(d,null,2)),(0,j.kn)()}d()}catch(a){d(a)}})},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28967:(a,b,c)=>{"use strict";function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){return b?{...a,modelError:b}:a}function g(a){return{...a,modelError:"Model list is temporarily unavailable. Check your configuration and try again."}}function h(a,b){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},35639:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}c.d(b,{ad:()=>e,kB:()=>f});class e extends Error{constructor(a){super(`Context window of ${a} must be a positive number of tokens`),this.name="ContextWindowError",this.model=a}}function f(a){let b=structuredClone(a);if(!d(b.providers))return b;for(let[a,c]of Object.entries(b.providers))if(d(c)&&d(c.modelOverrides))for(let[b,f]of Object.entries(c.modelOverrides)){if(!d(f)||!Object.hasOwn(f,"contextWindow"))continue;let c=function(a){if("string"==typeof a){let b=/^\d+$/.test(a.trim())?Number(a.trim()):0;return Number.isSafeInteger(b)&&b>0?b:void 0}return"number"==typeof a&&Number.isFinite(a)&&a>0?a:void 0}(f.contextWindow);if(void 0===c)throw new e(`${a}/${b}`);f.contextWindow=c}return b}},35975:(a,b,c)=>{"use strict";function d(a){return a.replace(/"(?:\\.|[^"\\])*"|\/\/[^\n]*|\/\*[\s\S]*?\*\//g,a=>'"'===a[0]?a:"*"===a[1]?" ":"").replace(/"(?:\\.|[^"\\])*"|,(\s*[}\]])/g,(a,b)=>b??('"'===a[0]?a:""))}function e(a){return JSON.parse(d(a.replace(/^\uFEFF/,"")))}c.d(b,{R:()=>d,p:()=>e})},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},53718:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>i,PUT:()=>j,dynamic:()=>k});var e=c(23211),f=c(17551),g=c(35639),h=a([f]);f=(h.then?(await h)():h)[0];let k="force-dynamic";async function i(){try{return e.NextResponse.json((0,f.V6)())}catch(a){if(a instanceof f.LB)return e.NextResponse.json({error:a.message},{status:422});return e.NextResponse.json({error:String(a)},{status:500})}}async function j(a){try{let b=await a.json();return(0,f.IX)((0,g.kB)(b)),e.NextResponse.json({success:!0})}catch(a){if(a instanceof g.ad)return e.NextResponse.json({error:a.message},{status:400});if(a instanceof f.LB)return e.NextResponse.json({error:a.message},{status:409});return e.NextResponse.json({error:String(a)},{status:500})}}d()}catch(a){d(a)}})},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70725:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models-config/route",pathname:"/api/models-config",filename:"route",bundlePath:"app/api/models-config/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/models-config/route.ts",nextConfigOutput:"",userland:()=>c(53718),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models-config/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},73024:a=>{"use strict";a.exports=require("node:fs")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{"use strict";a.exports=require("node:path")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=70725));module.exports=c})();
1
+ (()=>{var a={};a.id=7483,a.ids=[7483],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17551:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IX:()=>o,LB:()=>q,V6:()=>n});var e=c(73024),f=c(76760),g=c(75430),h=c(8102),i=c(35975),j=c(28967),k=a([g]);g=(k.then?(await k)():k)[0];let p=["input","output","cacheRead","cacheWrite"];function l(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function m(){return(0,f.join)((0,g.getAgentDir)(),"models.json")}class q extends Error{constructor(a){super(a),this.name="ModelsConfigReadError"}}function n(a=m()){let b;if(!(0,e.existsSync)(a))return{providers:{}};try{let c=(0,e.readFileSync)(a,"utf8").replace(/^\uFEFF/,"");if(!c.trim())return{providers:{}};b=JSON.parse((0,i.R)(c))}catch(b){throw new q(`Failed to read ${a}: ${b instanceof Error?b.message:String(b)}`)}if(!l(b))throw new q(`Failed to read ${a}: expected a JSON object`);return b}function o(a,b=m()){n(b);let c=(0,f.dirname)(b);(0,e.existsSync)(c)||(0,e.mkdirSync)(c,{recursive:!0});let d=function(a){let b=structuredClone(a);if(!l(b.providers))return b;for(let a of Object.values(b.providers))if(l(a)&&Array.isArray(a.models))for(let b of a.models){if(!l(b)||!("cost"in b))continue;let a=function(a){if(!l(a))return;let b=p.filter(b=>void 0!==a[b]);if(0!==b.length&&!b.some(b=>"number"!=typeof a[b]||!Number.isFinite(a[b])))return Object.fromEntries([...Object.entries(a),...p.map(b=>[b,a[b]??0])])}(b.cost);a?b.cost=a:delete b.cost}return b}(function(a){if(!l(a.providers))return a;let b=Object.fromEntries(Object.entries(a.providers).map(([a,b])=>{if(!l(b)||!Array.isArray(b.models))return[a,b];let c=b.models.filter(a=>!l(a)||"string"!=typeof a.id||a.id.trim().length>0);return[a,{...b,models:c}]}));return{...a,providers:b}}(a)),g=b;if((0,e.lstatSync)(b,{throwIfNoEntry:!1})?.isSymbolicLink())try{g=(0,e.realpathSync)(b)}catch{throw new q(`Failed to write ${b}: dangling symbolic link`)}(0,h.$)(g,JSON.stringify(d,null,2)),(0,j.kn)()}d()}catch(a){d(a)}})},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28967:(a,b,c)=>{"use strict";function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){return b?{...a,modelError:b}:a}function g(a){return{...a,modelError:"Model list is temporarily unavailable. Check your configuration and try again."}}function h(a,b){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},35639:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}c.d(b,{ad:()=>e,kB:()=>f});class e extends Error{constructor(a){super(`Context window of ${a} must be a positive number of tokens`),this.name="ContextWindowError",this.model=a}}function f(a){let b=structuredClone(a);if(!d(b.providers))return b;for(let[a,c]of Object.entries(b.providers))if(d(c)&&d(c.modelOverrides))for(let[b,f]of Object.entries(c.modelOverrides)){if(!d(f)||!Object.hasOwn(f,"contextWindow"))continue;let c=function(a){if("string"==typeof a){let b=/^\d+$/.test(a.trim())?Number(a.trim()):0;return Number.isSafeInteger(b)&&b>0?b:void 0}return"number"==typeof a&&Number.isFinite(a)&&a>0?a:void 0}(f.contextWindow);if(void 0===c)throw new e(`${a}/${b}`);f.contextWindow=c}return b}},35975:(a,b,c)=>{"use strict";function d(a){return a.replace(/"(?:\\.|[^"\\])*"|\/\/[^\n]*|\/\*[\s\S]*?\*\//g,a=>'"'===a[0]?a:"*"===a[1]?" ":"").replace(/"(?:\\.|[^"\\])*"|,(\s*[}\]])/g,(a,b)=>b??('"'===a[0]?a:""))}function e(a){return JSON.parse(d(a.replace(/^\uFEFF/,"")))}c.d(b,{R:()=>d,p:()=>e})},38641:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models-config/route",pathname:"/api/models-config",filename:"route",bundlePath:"app/api/models-config/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/models-config/route.ts",nextConfigOutput:"",userland:()=>c(53718),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models-config/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},53718:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>i,PUT:()=>j,dynamic:()=>k});var e=c(23211),f=c(17551),g=c(35639),h=a([f]);f=(h.then?(await h)():h)[0];let k="force-dynamic";async function i(){try{return e.NextResponse.json((0,f.V6)())}catch(a){if(a instanceof f.LB)return e.NextResponse.json({error:a.message},{status:422});return e.NextResponse.json({error:String(a)},{status:500})}}async function j(a){try{let b=await a.json();return(0,f.IX)((0,g.kB)(b)),e.NextResponse.json({success:!0})}catch(a){if(a instanceof g.ad)return e.NextResponse.json({error:a.message},{status:400});if(a instanceof f.LB)return e.NextResponse.json({error:a.message},{status:409});return e.NextResponse.json({error:String(a)},{status:500})}}d()}catch(a){d(a)}})},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{"use strict";a.exports=require("node:fs")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{"use strict";a.exports=require("node:path")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=38641));module.exports=c})();
@@ -1 +1 @@
1
- (()=>{var a={};a.id=8658,a.ids=[8658],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},5061:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models-config/test/route",pathname:"/api/models-config/test",filename:"route",bundlePath:"app/api/models-config/test/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/models-config/test/route.ts",nextConfigOutput:"",userland:()=>c(12773),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models-config/test/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12773:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>n,dynamic:()=>o});var e=c(23211),f=c(29021),g=c(21820),h=c(33873),i=c(19821),j=c(75430),k=c(66544),l=a([i,j]);[i,j]=l.then?(await l)():l;let o="force-dynamic";function m(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function n(a){let b;if(!(0,k.EN)(a))return e.NextResponse.json({ok:!1,error:"Untrusted API request"},{status:403});if(!(0,k.E2)(a))return e.NextResponse.json({ok:!1,error:"Content-Type must be application/json"},{status:415});try{let c,d=await a.json(),k="string"==typeof d.providerName?d.providerName.trim():"";if(!k)return e.NextResponse.json({ok:!1,error:"providerName is required"},{status:400});if(!m(d.provider))return e.NextResponse.json({ok:!1,error:"provider is required"},{status:400});if(!m(d.model))return e.NextResponse.json({ok:!1,error:"model is required"},{status:400});let l="string"==typeof d.model.id?d.model.id.trim():"";if(!l)return e.NextResponse.json({ok:!1,error:"Model ID is required"},{status:400});b=(0,f.mkdtempSync)((0,h.join)((0,g.tmpdir)(),"pi-web-model-test-"));let n=(0,h.join)(b,"models.json");(0,f.writeFileSync)(n,JSON.stringify({providers:{[k]:{...d.provider,models:[{...d.model,id:l}]}}},null,2),"utf8");let o=await j.ModelRuntime.create({modelsPath:n}),p=o.getError();if(p)return e.NextResponse.json({ok:!1,error:p});let q=o.getModel(k,l);if(!q)return e.NextResponse.json({ok:!1,error:`Model not found: ${k}/${l}`});let r=await o.getAuth(q);if(!r?.auth.apiKey)return e.NextResponse.json({ok:!1,error:`No API key found for "${k}"`});let s=new AbortController,t=setTimeout(()=>s.abort(),2e4),u=Date.now();try{let a=await (0,i.completeSimple)(q,{messages:[{role:"user",content:"Reply with OK only.",timestamp:Date.now()}]},{apiKey:r.auth.apiKey,headers:r.auth.headers,maxTokens:16,timeoutMs:2e4,maxRetries:0,cacheRetention:"none",signal:s.signal,onResponse:a=>{c=a.status}}),b=Date.now()-u;if("error"===a.stopReason||"aborted"===a.stopReason)return e.NextResponse.json({ok:!1,error:a.errorMessage??(s.signal.aborted?"Test timed out":"Model returned an error"),latencyMs:b,status:c});return e.NextResponse.json({ok:!0,latencyMs:b,status:c,responseText:a.content.filter(a=>"text"===a.type).map(a=>a.text).join("").slice(0,300)})}finally{clearTimeout(t)}}catch(a){return e.NextResponse.json({ok:!1,error:a instanceof Error?a.message:String(a)},{status:500})}finally{b&&(0,f.rmSync)(b,{recursive:!0,force:!0})}}d()}catch(a){d(a)}})},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19821:a=>{"use strict";a.exports=import("@earendil-works/pi-ai/compat")},21820:a=>{"use strict";a.exports=require("os")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}function j(a,b=h()){return!!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{let b=new URL(a.url);return/^\/api\/sessions\/[^/]+\/export$/.test(b.pathname)||function(a){if(!a.pathname.startsWith("/api/files/")||"read"!==a.searchParams.get("type"))return!1;let b=a.pathname.slice(a.pathname.lastIndexOf("/")+1);try{return decodeURIComponent(b).toLowerCase().endsWith(".pdf")}catch{return!1}}(b)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d,e=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&i(e)===f)return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},77030:a=>{"use strict";a.exports=require("node:net")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=5061));module.exports=c})();
1
+ (()=>{var a={};a.id=8658,a.ids=[8658],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12773:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>n,dynamic:()=>o});var e=c(23211),f=c(29021),g=c(21820),h=c(33873),i=c(19821),j=c(75430),k=c(66544),l=a([i,j]);[i,j]=l.then?(await l)():l;let o="force-dynamic";function m(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function n(a){let b;if(!(0,k.EN)(a))return e.NextResponse.json({ok:!1,error:"Untrusted API request"},{status:403});if(!(0,k.E2)(a))return e.NextResponse.json({ok:!1,error:"Content-Type must be application/json"},{status:415});try{let c,d=await a.json(),k="string"==typeof d.providerName?d.providerName.trim():"";if(!k)return e.NextResponse.json({ok:!1,error:"providerName is required"},{status:400});if(!m(d.provider))return e.NextResponse.json({ok:!1,error:"provider is required"},{status:400});if(!m(d.model))return e.NextResponse.json({ok:!1,error:"model is required"},{status:400});let l="string"==typeof d.model.id?d.model.id.trim():"";if(!l)return e.NextResponse.json({ok:!1,error:"Model ID is required"},{status:400});b=(0,f.mkdtempSync)((0,h.join)((0,g.tmpdir)(),"pi-web-model-test-"));let n=(0,h.join)(b,"models.json");(0,f.writeFileSync)(n,JSON.stringify({providers:{[k]:{...d.provider,models:[{...d.model,id:l}]}}},null,2),"utf8");let o=await j.ModelRuntime.create({modelsPath:n}),p=o.getError();if(p)return e.NextResponse.json({ok:!1,error:p});let q=o.getModel(k,l);if(!q)return e.NextResponse.json({ok:!1,error:`Model not found: ${k}/${l}`});let r=await o.getAuth(q);if(!r?.auth.apiKey)return e.NextResponse.json({ok:!1,error:`No API key found for "${k}"`});let s=new AbortController,t=setTimeout(()=>s.abort(),2e4),u=Date.now();try{let a=await (0,i.completeSimple)(q,{messages:[{role:"user",content:"Reply with OK only.",timestamp:Date.now()}]},{apiKey:r.auth.apiKey,headers:r.auth.headers,maxTokens:16,timeoutMs:2e4,maxRetries:0,cacheRetention:"none",signal:s.signal,onResponse:a=>{c=a.status}}),b=Date.now()-u;if("error"===a.stopReason||"aborted"===a.stopReason)return e.NextResponse.json({ok:!1,error:a.errorMessage??(s.signal.aborted?"Test timed out":"Model returned an error"),latencyMs:b,status:c});return e.NextResponse.json({ok:!0,latencyMs:b,status:c,responseText:a.content.filter(a=>"text"===a.type).map(a=>a.text).join("").slice(0,300)})}finally{clearTimeout(t)}}catch(a){return e.NextResponse.json({ok:!1,error:a instanceof Error?a.message:String(a)},{status:500})}finally{b&&(0,f.rmSync)(b,{recursive:!0,force:!0})}}d()}catch(a){d(a)}})},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19821:a=>{"use strict";a.exports=import("@earendil-works/pi-ai/compat")},21820:a=>{"use strict";a.exports=require("os")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}function j(a,b=h()){return!!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{let b=new URL(a.url);return/^\/api\/sessions\/[^/]+\/export$/.test(b.pathname)||function(a){if(!a.pathname.startsWith("/api/files/")||"read"!==a.searchParams.get("type"))return!1;let b=a.pathname.slice(a.pathname.lastIndexOf("/")+1);try{return decodeURIComponent(b).toLowerCase().endsWith(".pdf")}catch{return!1}}(b)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d,e=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&i(e)===f)return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},77030:a=>{"use strict";a.exports=require("node:net")},77425:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models-config/test/route",pathname:"/api/models-config/test",filename:"route",bundlePath:"app/api/models-config/test/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/models-config/test/route.ts",nextConfigOutput:"",userland:()=>c(12773),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models-config/test/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=77425));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=9362,a.ids=[9362],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63406:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/open-in-explorer/route",pathname:"/api/open-in-explorer",filename:"route",bundlePath:"app/api/open-in-explorer/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/open-in-explorer/route.ts",nextConfigOutput:"",userland:()=>c(97953),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/open-in-explorer/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},97953:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>l,POST:()=>m,dynamic:()=>n,runtime:()=>o});var e=c(79748),f=c(33873),g=c(23211),h=c(80547),i=c(98571),j=a([h]);h=(j.then?(await j)():j)[0];let n="force-dynamic",o="nodejs";function k(a){return(0,i.cW)(a.headers.get("host"))?(0,i.a0)(process.platform)?{supported:!0,reason:null}:{supported:!1,reason:"unsupported-platform"}:{supported:!1,reason:"remote"}}async function l(a){let{supported:b,reason:c}=k(a);return g.NextResponse.json({supported:b,reason:c,platform:process.platform})}async function m(a){try{let{supported:b,reason:c}=k(a);if(!b)return g.NextResponse.json({error:c},{status:403});let d=await a.json();if("string"!=typeof d.cwd||!d.cwd.trim())return g.NextResponse.json({error:"cwd-required"},{status:400});let j=(0,f.resolve)(d.cwd),l=await (0,h.mc)();if(!(0,h.B7)(j,l))return g.NextResponse.json({error:"access-denied"},{status:403});if(!(await (0,e.stat)(j)).isDirectory())return g.NextResponse.json({error:"not-a-directory"},{status:400});return await (0,i.Jh)(j),g.NextResponse.json({opened:!0})}catch(a){return g.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}d()}catch(a){d(a)}})},98571:(a,b,c)=>{c.d(b,{a0:()=>g,cW:()=>h,Jh:()=>i});var d=c(79646);let e=require("net"),f=new Map([["win32","explorer.exe"],["darwin","open"],["linux","xdg-open"]]);function g(a){return f.has(a)}function h(a){if(!a)return!1;let b=a.trim().toLowerCase(),c=b.indexOf("]"),d=b.startsWith("[")&&-1!==c?b.slice(1,c):b.split(":")[0];return!!("localhost"===d||d.endsWith(".localhost"))||"::1"===d||4===(0,e.isIP)(d)&&d.startsWith("127.")}function i(a,b=process.platform){let c,e=(c=f.get(b))?{command:c,args:[a]}:null;return e?new Promise((a,b)=>{let c=(0,d.spawn)(e.command,e.args,{detached:!0,stdio:"ignore"});c.once("error",b),c.once("spawn",()=>{c.unref(),a()})}):Promise.reject(Error(`Unsupported platform: ${b}`))}}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,5582],()=>b(b.s=63406));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=9362,a.ids=[9362],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},5125:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/open-in-explorer/route",pathname:"/api/open-in-explorer",filename:"route",bundlePath:"app/api/open-in-explorer/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/open-in-explorer/route.ts",nextConfigOutput:"",userland:()=>c(97953),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/open-in-explorer/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},97953:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>l,POST:()=>m,dynamic:()=>n,runtime:()=>o});var e=c(79748),f=c(33873),g=c(23211),h=c(80547),i=c(98571),j=a([h]);h=(j.then?(await j)():j)[0];let n="force-dynamic",o="nodejs";function k(a){return(0,i.cW)(a.headers.get("host"))?(0,i.a0)(process.platform)?{supported:!0,reason:null}:{supported:!1,reason:"unsupported-platform"}:{supported:!1,reason:"remote"}}async function l(a){let{supported:b,reason:c}=k(a);return g.NextResponse.json({supported:b,reason:c,platform:process.platform})}async function m(a){try{let{supported:b,reason:c}=k(a);if(!b)return g.NextResponse.json({error:c},{status:403});let d=await a.json();if("string"!=typeof d.cwd||!d.cwd.trim())return g.NextResponse.json({error:"cwd-required"},{status:400});let j=(0,f.resolve)(d.cwd),l=await (0,h.mc)();if(!(0,h.B7)(j,l))return g.NextResponse.json({error:"access-denied"},{status:403});if(!(await (0,e.stat)(j)).isDirectory())return g.NextResponse.json({error:"not-a-directory"},{status:400});return await (0,i.Jh)(j),g.NextResponse.json({opened:!0})}catch(a){return g.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}d()}catch(a){d(a)}})},98571:(a,b,c)=>{c.d(b,{a0:()=>g,cW:()=>h,Jh:()=>i});var d=c(79646);let e=require("net"),f=new Map([["win32","explorer.exe"],["darwin","open"],["linux","xdg-open"]]);function g(a){return f.has(a)}function h(a){if(!a)return!1;let b=a.trim().toLowerCase(),c=b.indexOf("]"),d=b.startsWith("[")&&-1!==c?b.slice(1,c):b.split(":")[0];return!!("localhost"===d||d.endsWith(".localhost"))||"::1"===d||4===(0,e.isIP)(d)&&d.startsWith("127.")}function i(a,b=process.platform){let c,e=(c=f.get(b))?{command:c,args:[a]}:null;return e?new Promise((a,b)=>{let c=(0,d.spawn)(e.command,e.args,{detached:!0,stdio:"ignore"});c.once("error",b),c.once("spawn",()=>{c.unref(),a()})}):Promise.reject(Error(`Unsupported platform: ${b}`))}}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,5582],()=>b(b.s=5125));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=2403,a.ids=[2403],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10595:(a,b,c)=>{c.d(b,{f:()=>g});var d=c(29021),e=c(33873);let f=require("process");function g(a,b,c={}){let h=function(a,b={}){let c=b.nodeDir??(0,e.dirname)(f.execPath),g=b.fileExists??d.existsSync;for(let b of[(0,e.join)(c,"node_modules","npm","bin",`${a}-cli.js`),(0,e.join)(c,"..","lib","node_modules","npm","bin",`${a}-cli.js`)])try{if(g(b))return b}catch{}return null}(a,c);return h?{command:f.execPath,args:[h,...b]}:{command:a,args:b}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},56565:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/plugins/check/route",pathname:"/api/plugins/check",filename:"route",bundlePath:"app/api/plugins/check/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/plugins/check/route.ts",nextConfigOutput:"",userland:()=>c(97982),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/plugins/check/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65742:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Q:()=>u,t:()=>p});var e=c(79646),f=c(29021),g=c(33873),h=c(28354),i=c(75430),j=c(43618),k=c(10595),l=c(38363),m=c(72498),n=a([i,m]);[i,m]=n.then?(await n)():n;let v=(0,h.promisify)(e.execFile);function o(a){return"project"===a?"project":"global"}function p(a){let b=(0,l.e)(a);return b?null===(0,j.valid)(b.version??""):!!(a.startsWith("git:")||/^(https?|ssh|git):\/\//i.test(a))&&!function(a){let b=a.startsWith("git:")?a.slice(4).trim():a.trim(),c=b.match(/^git@[^:]+:(.+)$/)?.[1];if(c)return c.includes("@");if(b.includes("://"))try{return new URL(b).pathname.replace(/^\/+/,"").includes("@")}catch{return!1}let d=b.indexOf("/");return d>=0&&b.slice(d+1).includes("@")}(a)}function q(a,b,c){let d=(0,l.e)(a.source);return{source:a.source,scope:o(a.scope),displayName:d?.name??a.source,type:d?"npm":"git",state:b,message:c}}async function r(a,b,c){let d="npm"===a?(0,k.f)("npm",b):{command:a,args:b},{stdout:e}=await v(d.command,d.args,{cwd:c.cwd,env:c.env?{...process.env,...c.env}:process.env,encoding:"utf8",timeout:1e4});return e}async function s(a,b,c,d){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let e=(0,l.e)(a.source);if(!e)return q(a,"unsupported");let[h="npm",...i]=c??[];if(!h)return q(a,"error","Invalid npmCommand.");let k=function(a){let b=JSON.parse((0,f.readFileSync)((0,g.join)(a,"package.json"),"utf8"));if("string"!=typeof b.version||!(0,j.valid)(b.version))throw Error("Installed package version is unavailable.");return b.version}(a.installedPath),m=function(a,b){let c=JSON.parse(a.trim());if("string"==typeof c&&(0,j.valid)(c))return c;if(Array.isArray(c)){let a=c.filter(a=>"string"==typeof a&&null!==(0,j.valid)(a)),d=b?(0,j.maxSatisfying)(a,b):a.sort(j.rcompare)[0];if(d)return d}throw Error("Unexpected response from npm view.")}(await d(h,[...i,"view",e.spec,"version","--json"],{cwd:b}),e.version?(0,j.validRange)(e.version)??void 0:void 0);return q(a,(0,j.gt)(m,k)?"update-available":"up-to-date")}async function t(a,b){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let c={cwd:a.installedPath,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}},d=(await b("git",["rev-parse","HEAD"],c)).trim(),e=await b("git",["rev-parse","--abbrev-ref","@{upstream}"],c).then(a=>a.trim()).catch(()=>""),g=e.startsWith("origin/")?`refs/heads/${e.slice(7)}`:"HEAD",h=await b("git",["ls-remote","origin",g],c),i=h.match(/^([0-9a-f]{40,64})\s+/m)?.[1];if(!i)throw Error(`Failed to determine remote ${g}.`);return q(a,d===i?"up-to-date":"update-available")}async function u(a,b,c={}){let d=c.packages,e=c.npmCommand;if(!d){let b=(0,i.getAgentDir)(),c=(0,m.Y1)(a,b),f=i.SettingsManager.create(a,b,{projectTrusted:c.trusted});d=new i.DefaultPackageManager({cwd:a,agentDir:b,settingsManager:f}).listConfiguredPackages(),e??=f.getNpmCommand()}let f=d.filter(a=>!b?.source||a.source===b.source&&o(a.scope)===b.scope),g=c.runCommand??r;return Promise.all(f.map(async b=>{if(!p(b.source))return q(b,"unsupported","Pinned or local packages cannot be checked automatically.");if(/^(1|true|yes)$/i.test(process.env.PI_OFFLINE??""))return q(b,"error","Update checks are disabled while PI_OFFLINE=1.");try{return(0,l.e)(b.source)?await s(b,a,e,g):await t(b,g)}catch(a){return q(b,"error",a instanceof Error?a.message:String(a))}}))}d()}catch(a){d(a)}})},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},97982:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>i,dynamic:()=>j});var e=c(23211),f=c(80547),g=c(65742),h=a([f,g]);[f,g]=h.then?(await h)():h;let j="force-dynamic";async function i(a){try{let b=await a.json(),c="string"==typeof b.cwd?b.cwd:"";if(!c)return e.NextResponse.json({error:"cwd required"},{status:400});let d=await (0,f.mc)();if(!(0,f.B7)(c,d))return e.NextResponse.json({error:"Access denied"},{status:403});let h="string"==typeof b.source?b.source:void 0,i="global"===b.scope||"project"===b.scope?b.scope:void 0;if(h&&!i||!h&&i)return e.NextResponse.json({error:"source and scope must be provided together"},{status:400});let j=await (0,g.Q)(c,h&&i?{source:h,scope:i}:void 0);if(h&&i&&0===j.length)return e.NextResponse.json({error:"Configured package not found"},{status:404});return e.NextResponse.json({updates:j})}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}d()}catch(a){d(a)}})}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,3618,5582,2498],()=>b(b.s=56565));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=2403,a.ids=[2403],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10595:(a,b,c)=>{c.d(b,{f:()=>g});var d=c(29021),e=c(33873);let f=require("process");function g(a,b,c={}){let h=function(a,b={}){let c=b.nodeDir??(0,e.dirname)(f.execPath),g=b.fileExists??d.existsSync;for(let b of[(0,e.join)(c,"node_modules","npm","bin",`${a}-cli.js`),(0,e.join)(c,"..","lib","node_modules","npm","bin",`${a}-cli.js`)])try{if(g(b))return b}catch{}return null}(a,c);return h?{command:f.execPath,args:[h,...b]}:{command:a,args:b}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65742:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Q:()=>u,t:()=>p});var e=c(79646),f=c(29021),g=c(33873),h=c(28354),i=c(75430),j=c(43618),k=c(10595),l=c(38363),m=c(72498),n=a([i,m]);[i,m]=n.then?(await n)():n;let v=(0,h.promisify)(e.execFile);function o(a){return"project"===a?"project":"global"}function p(a){let b=(0,l.e)(a);return b?null===(0,j.valid)(b.version??""):!!(a.startsWith("git:")||/^(https?|ssh|git):\/\//i.test(a))&&!function(a){let b=a.startsWith("git:")?a.slice(4).trim():a.trim(),c=b.match(/^git@[^:]+:(.+)$/)?.[1];if(c)return c.includes("@");if(b.includes("://"))try{return new URL(b).pathname.replace(/^\/+/,"").includes("@")}catch{return!1}let d=b.indexOf("/");return d>=0&&b.slice(d+1).includes("@")}(a)}function q(a,b,c){let d=(0,l.e)(a.source);return{source:a.source,scope:o(a.scope),displayName:d?.name??a.source,type:d?"npm":"git",state:b,message:c}}async function r(a,b,c){let d="npm"===a?(0,k.f)("npm",b):{command:a,args:b},{stdout:e}=await v(d.command,d.args,{cwd:c.cwd,env:c.env?{...process.env,...c.env}:process.env,encoding:"utf8",timeout:1e4});return e}async function s(a,b,c,d){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let e=(0,l.e)(a.source);if(!e)return q(a,"unsupported");let[h="npm",...i]=c??[];if(!h)return q(a,"error","Invalid npmCommand.");let k=function(a){let b=JSON.parse((0,f.readFileSync)((0,g.join)(a,"package.json"),"utf8"));if("string"!=typeof b.version||!(0,j.valid)(b.version))throw Error("Installed package version is unavailable.");return b.version}(a.installedPath),m=function(a,b){let c=JSON.parse(a.trim());if("string"==typeof c&&(0,j.valid)(c))return c;if(Array.isArray(c)){let a=c.filter(a=>"string"==typeof a&&null!==(0,j.valid)(a)),d=b?(0,j.maxSatisfying)(a,b):a.sort(j.rcompare)[0];if(d)return d}throw Error("Unexpected response from npm view.")}(await d(h,[...i,"view",e.spec,"version","--json"],{cwd:b}),e.version?(0,j.validRange)(e.version)??void 0:void 0);return q(a,(0,j.gt)(m,k)?"update-available":"up-to-date")}async function t(a,b){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let c={cwd:a.installedPath,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}},d=(await b("git",["rev-parse","HEAD"],c)).trim(),e=await b("git",["rev-parse","--abbrev-ref","@{upstream}"],c).then(a=>a.trim()).catch(()=>""),g=e.startsWith("origin/")?`refs/heads/${e.slice(7)}`:"HEAD",h=await b("git",["ls-remote","origin",g],c),i=h.match(/^([0-9a-f]{40,64})\s+/m)?.[1];if(!i)throw Error(`Failed to determine remote ${g}.`);return q(a,d===i?"up-to-date":"update-available")}async function u(a,b,c={}){let d=c.packages,e=c.npmCommand;if(!d){let b=(0,i.getAgentDir)(),c=(0,m.Y1)(a,b),f=i.SettingsManager.create(a,b,{projectTrusted:c.trusted});d=new i.DefaultPackageManager({cwd:a,agentDir:b,settingsManager:f}).listConfiguredPackages(),e??=f.getNpmCommand()}let f=d.filter(a=>!b?.source||a.source===b.source&&o(a.scope)===b.scope),g=c.runCommand??r;return Promise.all(f.map(async b=>{if(!p(b.source))return q(b,"unsupported","Pinned or local packages cannot be checked automatically.");if(/^(1|true|yes)$/i.test(process.env.PI_OFFLINE??""))return q(b,"error","Update checks are disabled while PI_OFFLINE=1.");try{return(0,l.e)(b.source)?await s(b,a,e,g):await t(b,g)}catch(a){return q(b,"error",a instanceof Error?a.message:String(a))}}))}d()}catch(a){d(a)}})},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87457:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/plugins/check/route",pathname:"/api/plugins/check",filename:"route",bundlePath:"app/api/plugins/check/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/plugins/check/route.ts",nextConfigOutput:"",userland:()=>c(97982),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/plugins/check/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},97982:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>i,dynamic:()=>j});var e=c(23211),f=c(80547),g=c(65742),h=a([f,g]);[f,g]=h.then?(await h)():h;let j="force-dynamic";async function i(a){try{let b=await a.json(),c="string"==typeof b.cwd?b.cwd:"";if(!c)return e.NextResponse.json({error:"cwd required"},{status:400});let d=await (0,f.mc)();if(!(0,f.B7)(c,d))return e.NextResponse.json({error:"Access denied"},{status:403});let h="string"==typeof b.source?b.source:void 0,i="global"===b.scope||"project"===b.scope?b.scope:void 0;if(h&&!i||!h&&i)return e.NextResponse.json({error:"source and scope must be provided together"},{status:400});let j=await (0,g.Q)(c,h&&i?{source:h,scope:i}:void 0);if(h&&i&&0===j.length)return e.NextResponse.json({error:"Configured package not found"},{status:404});return e.NextResponse.json({updates:j})}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}d()}catch(a){d(a)}})}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,3618,5582,2498],()=>b(b.s=87457));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=9742,a.ids=[9742],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10595:(a,b,c)=>{c.d(b,{f:()=>g});var d=c(29021),e=c(33873);let f=require("process");function g(a,b,c={}){let h=function(a,b={}){let c=b.nodeDir??(0,e.dirname)(f.execPath),g=b.fileExists??d.existsSync;for(let b of[(0,e.join)(c,"node_modules","npm","bin",`${a}-cli.js`),(0,e.join)(c,"..","lib","node_modules","npm","bin",`${a}-cli.js`)])try{if(g(b))return b}catch{}return null}(a,c);return h?{command:f.execPath,args:[h,...b]}:{command:a,args:b}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>l,py:()=>j,uw:()=>k});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let m=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}function h(a){return a.includes("*")||a.includes("?")||a.includes("[")}function i(a,b){let c=a.toLowerCase(),d=b.filter(a=>`${a.provider}/${a.id}`.toLowerCase()===c);return d.length>0?d:b.filter(a=>a.id.toLowerCase()===c)}async function j(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable();for(let a of c){if(h(a))continue;let b=i(a,d);if(0===b.length){let c=a.lastIndexOf(":"),e=c>=0?a.slice(c+1):"";m.has(e)&&(b=i(a.slice(0,c),d))}if(b.length>1){let c=b.map(a=>`${a.provider}/${a.id}`).sort().join(", ");throw Error(`Ambiguous enabledModels entry "${a}" matches multiple models: ${c}. Use provider/modelId.`)}}let{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),j=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!h(a))return!1;let b=a.lastIndexOf(":");return b<0||m.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:j};let k={};for(let a of f)a.thinkingLevel&&(k[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:k,warnings:j}}function k(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function l(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],j=e||i||!d?void 0:a.visible.find(a=>g(a,d)),k=e??i?.model??j,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...k?{model:k}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},28967:(a,b,c)=>{function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){return b?{...a,modelError:b}:a}function g(a){return{...a,modelError:"Model list is temporarily unavailable. Check your configuration and try again."}}function h(a,b){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Map;for(let c of(await a.getAvailable()))b.set(c.provider,[...b.get(c.provider)??[],c]);let c=[...b.keys()].some(a=>!h().has(a));for(let[a,c]of b)h().set(a,c);c&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32493:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>z,POST:()=>A,dynamic:()=>B});var e=c(23211),f=c(29021),g=c(76760),h=c(75430),i=c(80547),j=c(66544),k=c(72498),l=c(65742),m=c(60268),n=a([h,i,k,l,m]);[h,i,k,l,m]=n.then?(await n)():n;let B="force-dynamic";function o(){return{extensions:0,skills:0,prompts:0,themes:0}}function p(a){return"project"===a?"project":"global"}function q(a,b){return`${b}\0${a}`}function r(a){return"string"==typeof a?a:a.source}function s(a){return"string"!=typeof a&&Array.isArray(a.extensions)&&0===a.extensions.length&&Array.isArray(a.skills)&&0===a.skills.length&&Array.isArray(a.prompts)&&0===a.prompts.length&&Array.isArray(a.themes)&&0===a.themes.length}function t(a,b,c,d,{keepEntrySettings:e=!1}={}){let f="project"===c?a.getProjectSettings().packages??[]:a.getGlobalSettings().packages??[],g=new Set(b),h=new Set,i=!1,j=f.map(a=>{var c;let f=r(a);if(!b.includes(f)||(g.delete(f),s(a)===d))return a;if(d&&e&&"object"==typeof(c=a)&&!s(c))return h.add(f),a;if(i=!0,d)return{..."string"==typeof a?{source:a}:a,extensions:[],skills:[],prompts:[],themes:[]};if("string"==typeof a)return f;let j={...a};return delete j.extensions,delete j.skills,delete j.prompts,delete j.themes,Object.keys(j).length>1?j:f});return i&&("project"===c?a.setProjectPackages(j):a.setPackages(j)),{missing:g,kept:h}}async function u(a,b,c,d){let e=new Map;for(let f of["global","project"]){let g=b.filter(a=>a.scope===f).map(a=>a.source);if(0===g.length)continue;if("project"===f&&!d){for(let a of g)e.set(q(a,f),"Project resources must be trusted before modifying project plugins");continue}let{missing:h,kept:i}=t(a,g,f,c,{keepEntrySettings:!0});for(let a of h)e.set(q(a,f),"Package is not configured");for(let a of i)e.set(q(a,f),"Has resource filters, which disabling would remove; use the package's own switch")}await a.flush();let f=new Map;for(let{scope:b,path:c,error:d}of a.drainErrors())f.has(b)||f.set(b,c?`${c}: ${d.message}`:d.message);return b.map(a=>{let b=f.get(a.scope)??e.get(q(a.source,a.scope));return b?{...a,error:b}:{...a}})}function v(a,b){var c,d;let e,f;return{kind:b,name:(c=a.path,d=b,e=(0,g.basename)(c),f=(0,g.extname)(e),"skill"===d&&"skill.md"===e.toLowerCase()?(0,g.basename)((0,g.dirname)(c)):("extension"===d||"theme"===d||"prompt"===d)&&f?"extension"===d&&/^index\.(ts|js)$/.test(e)?(0,g.basename)((0,g.dirname)(c)):e.slice(0,-f.length):e),path:a.path,relativePath:function(a){let b=a.metadata.baseDir;if(!b)return a.path;let c=(0,g.relative)(b,a.path);return c&&!c.startsWith("..")?c.split(g.sep).join("/"):a.path}(a)}}function w(a,b,c,d,e){if(!a.enabled||"package"!==a.metadata.origin)return;let f=q(a.metadata.source,p(a.metadata.scope)),g=c.get(f)??o();g[b]+=1,e[b]+=1,c.set(f,g);let h=d.get(f)??[];h.push(v(a,"extensions"===b?"extension":"skills"===b?"skill":"prompts"===b?"prompt":"theme")),d.set(f,h)}async function x(a){let b=(0,h.getAgentDir)(),c=(0,k.Y1)(a,b),d=h.SettingsManager.create(a,b,{projectTrusted:c.trusted}),e=new h.DefaultPackageManager({cwd:a,agentDir:b,settingsManager:d}),i=[],j=new Map,m=new Map,n=[],t=o(),u=function(a){let b=new Map;for(let c of a.getGlobalSettings().packages??[])b.set(q(r(c),"global"),s(c));for(let c of a.getProjectSettings().packages??[])b.set(q(r(c),"project"),s(c));return b}(d);try{let a=await e.resolve(async a=>(i.push({type:"warning",source:a,message:"Package is configured but not installed yet."}),"skip"));({countsByPackage:j,resourcesByPackage:m,standaloneExtensions:n,totals:t}=function(a){let b=new Map,c=new Map,d=o();for(let e of a.extensions)w(e,"extensions",b,c,d);for(let e of a.skills)w(e,"skills",b,c,d);for(let e of a.prompts)w(e,"prompts",b,c,d);for(let e of a.themes)w(e,"themes",b,c,d);let e=a.extensions.filter(a=>"top-level"===a.metadata.origin).map(a=>({...v(a,"extension"),kind:"extension",scope:p(a.metadata.scope),enabled:a.enabled}));return d.extensions+=e.filter(a=>a.enabled).length,{countsByPackage:b,resourcesByPackage:c,standaloneExtensions:e,totals:d}}(a))}catch(a){i.push({type:"error",message:a instanceof Error?a.message:String(a)})}return{packages:e.listConfiguredPackages().map(a=>{let b=p(a.scope),c=q(a.source,b),d=u.get(c)??!1,e=j.get(c)??o(),h=m.get(c)??[],k=e.extensions+e.skills+e.prompts+e.themes,n=function(a){if(!a)return{};try{let b=(0,f.statSync)(a).isDirectory()?(0,g.join)(a,"package.json"):(0,g.join)((0,g.dirname)(a),"package.json");if(!(0,f.existsSync)(b))return{};let c=JSON.parse((0,f.readFileSync)(b,"utf8"));return{packageName:"string"==typeof c.name?c.name:void 0,version:"string"==typeof c.version?c.version:void 0,description:"string"==typeof c.description?c.description:void 0}}catch{return{}}}(a.installedPath);return a.installedPath||i.push({type:"warning",source:a.source,message:"Configured package path was not found."}),{source:a.source,scope:b,canCheckForUpdates:(0,l.t)(a.source),filtered:a.filtered,disabled:d,installedPath:a.installedPath,packageName:n.packageName,version:n.version,configuredVersion:function(a){let b=a.startsWith("npm:")?a.slice(4):void 0;if(b){let a=b.lastIndexOf("@");return a>(b.startsWith("@")?b.indexOf("/",1):0)&&b.slice(a+1)||void 0}if(a.startsWith("git:")||/^[a-z]+:\/\//.test(a)){let b=a.lastIndexOf("@");if(b>Math.max(a.lastIndexOf("/"),a.lastIndexOf(":")))return a.slice(b+1)||void 0}}(a.source),description:n.description,counts:e,resources:h,status:d?"disabled":k>0?"loaded":a.installedPath?"installed":"missing"}}),standaloneExtensions:n,totals:t,diagnostics:i,projectResourcesLoaded:c.trusted}}function y(a){return"project"===a?"project":"global"}async function z(a){let{searchParams:b}=new URL(a.url),c=b.get("cwd");if(!c)return e.NextResponse.json({error:"cwd required"},{status:400});try{let a=await (0,i.mc)();if(!(0,i.B7)(c,a))return e.NextResponse.json({error:"Access denied"},{status:403});return e.NextResponse.json(await x(c))}catch(a){return e.NextResponse.json({error:String(a)},{status:500})}}async function A(a){if(!(0,j.EN)(a))return e.NextResponse.json({error:"Untrusted API request"},{status:403});if(!(0,j.E2)(a))return e.NextResponse.json({error:"Content-Type must be application/json"},{status:415});try{let b=await a.json();if(!b.cwd)return e.NextResponse.json({error:"cwd required"},{status:400});if(!b.action)return e.NextResponse.json({error:"action required"},{status:400});let c=await (0,i.mc)();if(!(0,i.B7)(b.cwd,c))return e.NextResponse.json({error:"Access denied"},{status:403});let d=(0,h.getAgentDir)(),f=(0,k.Y1)(b.cwd,d),g=h.SettingsManager.create(b.cwd,d,{projectTrusted:f.trusted});if(void 0!==b.packages){if("enable"!==b.action&&"disable"!==b.action)return e.NextResponse.json({error:"packages is only supported by enable and disable"},{status:400});let a=function(a){if(!Array.isArray(a))return null;let b=new Map;for(let c of a){let a="string"==typeof c?.source?c.source.trim():"";if(!a)return null;let d=y(c.scope);b.set(q(a,d),{source:a,scope:d})}return[...b.values()]}(b.packages);if(!a)return e.NextResponse.json({error:"packages must be a list of { source, scope }"},{status:400});let c=await u(g,a,"disable"===b.action,f.trusted);return e.NextResponse.json({...await x(b.cwd),results:c})}let j=y(b.scope);if("project"===j&&!f.trusted)return e.NextResponse.json({error:"Project resources must be trusted before modifying project plugins"},{status:403});let l=new h.DefaultPackageManager({cwd:b.cwd,agentDir:d,settingsManager:g}),m=b.source?.trim(),n="project"===j;if("install"===b.action){if(!m)return e.NextResponse.json({error:"source required"},{status:400});await l.installAndPersist(m,{local:n})}else if("remove"===b.action){if(!m)return e.NextResponse.json({error:"source required"},{status:400});await l.removeAndPersist(m,{local:n})}else if("update"===b.action){if(!m&&!f.trusted&&l.listConfiguredPackages().some(a=>"project"===a.scope))return e.NextResponse.json({error:"Project resources must be trusted before updating project plugins"},{status:403});await l.update(m)}else if("disable"===b.action){if(!m)return e.NextResponse.json({error:"source required"},{status:400});t(g,[m],j,!0),await g.flush()}else{if("enable"!==b.action)return e.NextResponse.json({error:`Unsupported action: ${b.action}`},{status:400});if(!m)return e.NextResponse.json({error:"source required"},{status:400});t(g,[m],j,!1),await g.flush()}return e.NextResponse.json(await x(b.cwd))}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}finally{(0,m.nx)()}}d()}catch(a){d(a)}})},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},60268:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OH:()=>k,O_:()=>j,nx:()=>l});var e=c(75430),f=c(77598),g=c(28994),h=c(63108),i=a([e,g]);async function j(){let a=(0,e.getAgentDir)(),b=await (0,e.createAgentSessionServices)({cwd:a,agentDir:a});return await (0,g.vd)(b.modelRuntime),b.modelRuntime}[e,g]=i.then?(await i)():i;let m=Symbol.for("pi-web:shared-model-runtime-refresh");async function k(){var a;let b,c=(0,e.getAgentDir)(),d=globalThis.__piWebSharedModelRuntime;(!d||d.agentDir!==c||d.expiresAt<=Date.now())&&((b={agentDir:a=c,runtime:j(),queueKey:`${a}\0${(0,f.randomUUID)()}`,expiresAt:1/0}).runtime.then(()=>{b.expiresAt=Date.now()+6e5},()=>{globalThis.__piWebSharedModelRuntime===b&&(globalThis.__piWebSharedModelRuntime=void 0)}),d=b,globalThis.__piWebSharedModelRuntime=d);let i=await d.runtime;return(0,h.T)(m,d.queueKey,async()=>(await i.refresh({allowNetwork:!1}),await (0,g.vd)(i),i))}function l(){globalThis.__piWebSharedModelRuntime=void 0}d()}catch(a){d(a)}})},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65742:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Q:()=>u,t:()=>p});var e=c(79646),f=c(29021),g=c(33873),h=c(28354),i=c(75430),j=c(43618),k=c(10595),l=c(38363),m=c(72498),n=a([i,m]);[i,m]=n.then?(await n)():n;let v=(0,h.promisify)(e.execFile);function o(a){return"project"===a?"project":"global"}function p(a){let b=(0,l.e)(a);return b?null===(0,j.valid)(b.version??""):!!(a.startsWith("git:")||/^(https?|ssh|git):\/\//i.test(a))&&!function(a){let b=a.startsWith("git:")?a.slice(4).trim():a.trim(),c=b.match(/^git@[^:]+:(.+)$/)?.[1];if(c)return c.includes("@");if(b.includes("://"))try{return new URL(b).pathname.replace(/^\/+/,"").includes("@")}catch{return!1}let d=b.indexOf("/");return d>=0&&b.slice(d+1).includes("@")}(a)}function q(a,b,c){let d=(0,l.e)(a.source);return{source:a.source,scope:o(a.scope),displayName:d?.name??a.source,type:d?"npm":"git",state:b,message:c}}async function r(a,b,c){let d="npm"===a?(0,k.f)("npm",b):{command:a,args:b},{stdout:e}=await v(d.command,d.args,{cwd:c.cwd,env:c.env?{...process.env,...c.env}:process.env,encoding:"utf8",timeout:1e4});return e}async function s(a,b,c,d){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let e=(0,l.e)(a.source);if(!e)return q(a,"unsupported");let[h="npm",...i]=c??[];if(!h)return q(a,"error","Invalid npmCommand.");let k=function(a){let b=JSON.parse((0,f.readFileSync)((0,g.join)(a,"package.json"),"utf8"));if("string"!=typeof b.version||!(0,j.valid)(b.version))throw Error("Installed package version is unavailable.");return b.version}(a.installedPath),m=function(a,b){let c=JSON.parse(a.trim());if("string"==typeof c&&(0,j.valid)(c))return c;if(Array.isArray(c)){let a=c.filter(a=>"string"==typeof a&&null!==(0,j.valid)(a)),d=b?(0,j.maxSatisfying)(a,b):a.sort(j.rcompare)[0];if(d)return d}throw Error("Unexpected response from npm view.")}(await d(h,[...i,"view",e.spec,"version","--json"],{cwd:b}),e.version?(0,j.validRange)(e.version)??void 0:void 0);return q(a,(0,j.gt)(m,k)?"update-available":"up-to-date")}async function t(a,b){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let c={cwd:a.installedPath,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}},d=(await b("git",["rev-parse","HEAD"],c)).trim(),e=await b("git",["rev-parse","--abbrev-ref","@{upstream}"],c).then(a=>a.trim()).catch(()=>""),g=e.startsWith("origin/")?`refs/heads/${e.slice(7)}`:"HEAD",h=await b("git",["ls-remote","origin",g],c),i=h.match(/^([0-9a-f]{40,64})\s+/m)?.[1];if(!i)throw Error(`Failed to determine remote ${g}.`);return q(a,d===i?"up-to-date":"update-available")}async function u(a,b,c={}){let d=c.packages,e=c.npmCommand;if(!d){let b=(0,i.getAgentDir)(),c=(0,m.Y1)(a,b),f=i.SettingsManager.create(a,b,{projectTrusted:c.trusted});d=new i.DefaultPackageManager({cwd:a,agentDir:b,settingsManager:f}).listConfiguredPackages(),e??=f.getNpmCommand()}let f=d.filter(a=>!b?.source||a.source===b.source&&o(a.scope)===b.scope),g=c.runCommand??r;return Promise.all(f.map(async b=>{if(!p(b.source))return q(b,"unsupported","Pinned or local packages cannot be checked automatically.");if(/^(1|true|yes)$/i.test(process.env.PI_OFFLINE??""))return q(b,"error","Update checks are disabled while PI_OFFLINE=1.");try{return(0,l.e)(b.source)?await s(b,a,e,g):await t(b,g)}catch(a){return q(b,"error",a instanceof Error?a.message:String(a))}}))}d()}catch(a){d(a)}})},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}function j(a,b=h()){return!!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{let b=new URL(a.url);return/^\/api\/sessions\/[^/]+\/export$/.test(b.pathname)||function(a){if(!a.pathname.startsWith("/api/files/")||"read"!==a.searchParams.get("type"))return!1;let b=a.pathname.slice(a.pathname.lastIndexOf("/")+1);try{return decodeURIComponent(b).toLowerCase().endsWith(".pdf")}catch{return!1}}(b)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d,e=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&i(e)===f)return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},73024:a=>{a.exports=require("node:fs")},73781:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/plugins/route",pathname:"/api/plugins",filename:"route",bundlePath:"app/api/plugins/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/plugins/route.ts",nextConfigOutput:"",userland:()=>c(32493),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/plugins/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,3618,5582,2498],()=>b(b.s=73781));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=9742,a.ids=[9742],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10595:(a,b,c)=>{c.d(b,{f:()=>g});var d=c(29021),e=c(33873);let f=require("process");function g(a,b,c={}){let h=function(a,b={}){let c=b.nodeDir??(0,e.dirname)(f.execPath),g=b.fileExists??d.existsSync;for(let b of[(0,e.join)(c,"node_modules","npm","bin",`${a}-cli.js`),(0,e.join)(c,"..","lib","node_modules","npm","bin",`${a}-cli.js`)])try{if(g(b))return b}catch{}return null}(a,c);return h?{command:f.execPath,args:[h,...b]}:{command:a,args:b}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>l,py:()=>j,uw:()=>k});var e=c(75430),f=a([e]);e=(f.then?(await f)():f)[0];let m=new Set(["off","minimal","low","medium","high","xhigh","max"]);function g(a,b){return a.provider===b.provider&&a.id===b.modelId}function h(a){return a.includes("*")||a.includes("?")||a.includes("[")}function i(a,b){let c=a.toLowerCase(),d=b.filter(a=>`${a.provider}/${a.id}`.toLowerCase()===c);return d.length>0?d:b.filter(a=>a.id.toLowerCase()===c)}async function j(a,b){let c=(b??[]).map(a=>a.trim()).filter(Boolean);if(0===c.length)return{visible:await a.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let d=await a.getAvailable();for(let a of c){if(h(a))continue;let b=i(a,d);if(0===b.length){let c=a.lastIndexOf(":"),e=c>=0?a.slice(c+1):"";m.has(e)&&(b=i(a.slice(0,c),d))}if(b.length>1){let c=b.map(a=>`${a.provider}/${a.id}`).sort().join(", ");throw Error(`Ambiguous enabledModels entry "${a}" matches multiple models: ${c}. Use provider/modelId.`)}}let{scopedModels:f,diagnostics:g}=await (0,e.resolveModelScopeWithDiagnostics)(c,{getAvailable:async()=>d}),j=g.filter(a=>"no-match"!==a.code||0===f.length||!function(a){if(!h(a))return!1;let b=a.lastIndexOf(":");return b<0||m.has(a.slice(b+1))}(a.pattern)).map(a=>a.message);if(0===f.length)return{visible:d,scopedModels:[],thinkingLevelPins:{},warnings:j};let k={};for(let a of f)a.thinkingLevel&&(k[`${a.model.provider}/${a.model.id}`]=a.thinkingLevel);return{visible:f.map(a=>a.model),scopedModels:f,thinkingLevelPins:k,warnings:j}}function k(a){return a.scopedModels.length>0?[...a.visible]:[...a.visible].sort((a,b)=>a.provider.localeCompare(b.provider))}function l(a,b={}){let c=b.requestedModel,d=b.defaultModel,e=c?a.visible.find(a=>g(a,c)):void 0;if(c&&!e)throw Error(`Model is not available in the enabled scope: ${c.provider}/${c.modelId}`);let f=e?a.scopedModels.find(a=>a.model===e||g(a.model,{provider:e.provider,modelId:e.id})):void 0,h=!e&&d?a.scopedModels.find(a=>g(a.model,d)):void 0,i=e?void 0:h??a.scopedModels[0],j=e||i||!d?void 0:a.visible.find(a=>g(a,d)),k=e??i?.model??j,m=f??i,n=b.thinkingLevel??m?.thinkingLevel;return{...k?{model:k}:{},...n?{thinkingLevel:n}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},28967:(a,b,c)=>{function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){return b?{...a,modelError:b}:a}function g(a){return{...a,modelError:"Model list is temporarily unavailable. Check your configuration and try again."}}function h(a,b){let c=d(),e=c.entries.get(a);if(e){if(e.expiresAt>Date.now())return Promise.resolve(e.data);c.entries.delete(a)}let f=c.inFlight.get(a);if(f)return f;let g=c.generation,h=Promise.resolve().then(b).then(b=>{if(c.generation===g&&c.inFlight.get(a)===h){let d=Date.now();for(let[a,b]of c.entries)b.expiresAt<=d&&c.entries.delete(a);for(;c.entries.size>=32;){let a=c.entries.keys().next().value;if(void 0===a)break;c.entries.delete(a)}c.entries.set(a,{data:b,expiresAt:d+6e4})}return b}).finally(()=>{c.inFlight.get(a)===h&&c.inFlight.delete(a)});return c.inFlight.set(a,h),h}c.d(b,{Fw:()=>g,Mx:()=>f,kn:()=>e,rC:()=>h})},28994:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S9:()=>l,TH:()=>k,je:()=>m,vd:()=>i});var e=c(28967),f=c(18904),g=a([f]);function h(){return globalThis.__piWebProviderModelCatalog??=new Map,globalThis.__piWebProviderModelCatalog}async function i(a){let b=new Map;for(let c of(await a.getAvailable()))b.set(c.provider,[...b.get(c.provider)??[],c]);let c=[...b.keys()].some(a=>!h().has(a));for(let[a,c]of b)h().set(a,c);c&&(0,e.kn)()}function j(a){let b=new Set(a.getModels().map(a=>a.provider));return[...h()].flatMap(([a,c])=>b.has(a)?[]:c)}function k(a){return new Proxy(a,{get(a,b,c){if("getAvailable"===b)return async(...b)=>{let[c]=b,d=j(a).filter(a=>!c||a.provider===c);return[...await a.getAvailable(...b),...d]};let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}})}function l(a,b,c){return j(a).find(a=>a.provider===b&&a.id===c)}async function m(a,b,c){let d;if(0===j(a).length)return;try{d=(0,f.IR)(await (0,f.py)(k(a),b),c)}catch{return}let e=d.model&&l(a,d.model.provider,d.model.id);return e?{model:e,...d.thinkingLevel?{thinkingLevelPin:d.thinkingLevel}:{}}:void 0}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32493:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>z,POST:()=>A,dynamic:()=>B});var e=c(23211),f=c(29021),g=c(76760),h=c(75430),i=c(80547),j=c(66544),k=c(72498),l=c(65742),m=c(60268),n=a([h,i,k,l,m]);[h,i,k,l,m]=n.then?(await n)():n;let B="force-dynamic";function o(){return{extensions:0,skills:0,prompts:0,themes:0}}function p(a){return"project"===a?"project":"global"}function q(a,b){return`${b}\0${a}`}function r(a){return"string"==typeof a?a:a.source}function s(a){return"string"!=typeof a&&Array.isArray(a.extensions)&&0===a.extensions.length&&Array.isArray(a.skills)&&0===a.skills.length&&Array.isArray(a.prompts)&&0===a.prompts.length&&Array.isArray(a.themes)&&0===a.themes.length}function t(a,b,c,d,{keepEntrySettings:e=!1}={}){let f="project"===c?a.getProjectSettings().packages??[]:a.getGlobalSettings().packages??[],g=new Set(b),h=new Set,i=!1,j=f.map(a=>{var c;let f=r(a);if(!b.includes(f)||(g.delete(f),s(a)===d))return a;if(d&&e&&"object"==typeof(c=a)&&!s(c))return h.add(f),a;if(i=!0,d)return{..."string"==typeof a?{source:a}:a,extensions:[],skills:[],prompts:[],themes:[]};if("string"==typeof a)return f;let j={...a};return delete j.extensions,delete j.skills,delete j.prompts,delete j.themes,Object.keys(j).length>1?j:f});return i&&("project"===c?a.setProjectPackages(j):a.setPackages(j)),{missing:g,kept:h}}async function u(a,b,c,d){let e=new Map;for(let f of["global","project"]){let g=b.filter(a=>a.scope===f).map(a=>a.source);if(0===g.length)continue;if("project"===f&&!d){for(let a of g)e.set(q(a,f),"Project resources must be trusted before modifying project plugins");continue}let{missing:h,kept:i}=t(a,g,f,c,{keepEntrySettings:!0});for(let a of h)e.set(q(a,f),"Package is not configured");for(let a of i)e.set(q(a,f),"Has resource filters, which disabling would remove; use the package's own switch")}await a.flush();let f=new Map;for(let{scope:b,path:c,error:d}of a.drainErrors())f.has(b)||f.set(b,c?`${c}: ${d.message}`:d.message);return b.map(a=>{let b=f.get(a.scope)??e.get(q(a.source,a.scope));return b?{...a,error:b}:{...a}})}function v(a,b){var c,d;let e,f;return{kind:b,name:(c=a.path,d=b,e=(0,g.basename)(c),f=(0,g.extname)(e),"skill"===d&&"skill.md"===e.toLowerCase()?(0,g.basename)((0,g.dirname)(c)):("extension"===d||"theme"===d||"prompt"===d)&&f?"extension"===d&&/^index\.(ts|js)$/.test(e)?(0,g.basename)((0,g.dirname)(c)):e.slice(0,-f.length):e),path:a.path,relativePath:function(a){let b=a.metadata.baseDir;if(!b)return a.path;let c=(0,g.relative)(b,a.path);return c&&!c.startsWith("..")?c.split(g.sep).join("/"):a.path}(a)}}function w(a,b,c,d,e){if(!a.enabled||"package"!==a.metadata.origin)return;let f=q(a.metadata.source,p(a.metadata.scope)),g=c.get(f)??o();g[b]+=1,e[b]+=1,c.set(f,g);let h=d.get(f)??[];h.push(v(a,"extensions"===b?"extension":"skills"===b?"skill":"prompts"===b?"prompt":"theme")),d.set(f,h)}async function x(a){let b=(0,h.getAgentDir)(),c=(0,k.Y1)(a,b),d=h.SettingsManager.create(a,b,{projectTrusted:c.trusted}),e=new h.DefaultPackageManager({cwd:a,agentDir:b,settingsManager:d}),i=[],j=new Map,m=new Map,n=[],t=o(),u=function(a){let b=new Map;for(let c of a.getGlobalSettings().packages??[])b.set(q(r(c),"global"),s(c));for(let c of a.getProjectSettings().packages??[])b.set(q(r(c),"project"),s(c));return b}(d);try{let a=await e.resolve(async a=>(i.push({type:"warning",source:a,message:"Package is configured but not installed yet."}),"skip"));({countsByPackage:j,resourcesByPackage:m,standaloneExtensions:n,totals:t}=function(a){let b=new Map,c=new Map,d=o();for(let e of a.extensions)w(e,"extensions",b,c,d);for(let e of a.skills)w(e,"skills",b,c,d);for(let e of a.prompts)w(e,"prompts",b,c,d);for(let e of a.themes)w(e,"themes",b,c,d);let e=a.extensions.filter(a=>"top-level"===a.metadata.origin).map(a=>({...v(a,"extension"),kind:"extension",scope:p(a.metadata.scope),enabled:a.enabled}));return d.extensions+=e.filter(a=>a.enabled).length,{countsByPackage:b,resourcesByPackage:c,standaloneExtensions:e,totals:d}}(a))}catch(a){i.push({type:"error",message:a instanceof Error?a.message:String(a)})}return{packages:e.listConfiguredPackages().map(a=>{let b=p(a.scope),c=q(a.source,b),d=u.get(c)??!1,e=j.get(c)??o(),h=m.get(c)??[],k=e.extensions+e.skills+e.prompts+e.themes,n=function(a){if(!a)return{};try{let b=(0,f.statSync)(a).isDirectory()?(0,g.join)(a,"package.json"):(0,g.join)((0,g.dirname)(a),"package.json");if(!(0,f.existsSync)(b))return{};let c=JSON.parse((0,f.readFileSync)(b,"utf8"));return{packageName:"string"==typeof c.name?c.name:void 0,version:"string"==typeof c.version?c.version:void 0,description:"string"==typeof c.description?c.description:void 0}}catch{return{}}}(a.installedPath);return a.installedPath||i.push({type:"warning",source:a.source,message:"Configured package path was not found."}),{source:a.source,scope:b,canCheckForUpdates:(0,l.t)(a.source),filtered:a.filtered,disabled:d,installedPath:a.installedPath,packageName:n.packageName,version:n.version,configuredVersion:function(a){let b=a.startsWith("npm:")?a.slice(4):void 0;if(b){let a=b.lastIndexOf("@");return a>(b.startsWith("@")?b.indexOf("/",1):0)&&b.slice(a+1)||void 0}if(a.startsWith("git:")||/^[a-z]+:\/\//.test(a)){let b=a.lastIndexOf("@");if(b>Math.max(a.lastIndexOf("/"),a.lastIndexOf(":")))return a.slice(b+1)||void 0}}(a.source),description:n.description,counts:e,resources:h,status:d?"disabled":k>0?"loaded":a.installedPath?"installed":"missing"}}),standaloneExtensions:n,totals:t,diagnostics:i,projectResourcesLoaded:c.trusted}}function y(a){return"project"===a?"project":"global"}async function z(a){let{searchParams:b}=new URL(a.url),c=b.get("cwd");if(!c)return e.NextResponse.json({error:"cwd required"},{status:400});try{let a=await (0,i.mc)();if(!(0,i.B7)(c,a))return e.NextResponse.json({error:"Access denied"},{status:403});return e.NextResponse.json(await x(c))}catch(a){return e.NextResponse.json({error:String(a)},{status:500})}}async function A(a){if(!(0,j.EN)(a))return e.NextResponse.json({error:"Untrusted API request"},{status:403});if(!(0,j.E2)(a))return e.NextResponse.json({error:"Content-Type must be application/json"},{status:415});try{let b=await a.json();if(!b.cwd)return e.NextResponse.json({error:"cwd required"},{status:400});if(!b.action)return e.NextResponse.json({error:"action required"},{status:400});let c=await (0,i.mc)();if(!(0,i.B7)(b.cwd,c))return e.NextResponse.json({error:"Access denied"},{status:403});let d=(0,h.getAgentDir)(),f=(0,k.Y1)(b.cwd,d),g=h.SettingsManager.create(b.cwd,d,{projectTrusted:f.trusted});if(void 0!==b.packages){if("enable"!==b.action&&"disable"!==b.action)return e.NextResponse.json({error:"packages is only supported by enable and disable"},{status:400});let a=function(a){if(!Array.isArray(a))return null;let b=new Map;for(let c of a){let a="string"==typeof c?.source?c.source.trim():"";if(!a)return null;let d=y(c.scope);b.set(q(a,d),{source:a,scope:d})}return[...b.values()]}(b.packages);if(!a)return e.NextResponse.json({error:"packages must be a list of { source, scope }"},{status:400});let c=await u(g,a,"disable"===b.action,f.trusted);return e.NextResponse.json({...await x(b.cwd),results:c})}let j=y(b.scope);if("project"===j&&!f.trusted)return e.NextResponse.json({error:"Project resources must be trusted before modifying project plugins"},{status:403});let l=new h.DefaultPackageManager({cwd:b.cwd,agentDir:d,settingsManager:g}),m=b.source?.trim(),n="project"===j;if("install"===b.action){if(!m)return e.NextResponse.json({error:"source required"},{status:400});await l.installAndPersist(m,{local:n})}else if("remove"===b.action){if(!m)return e.NextResponse.json({error:"source required"},{status:400});await l.removeAndPersist(m,{local:n})}else if("update"===b.action){if(!m&&!f.trusted&&l.listConfiguredPackages().some(a=>"project"===a.scope))return e.NextResponse.json({error:"Project resources must be trusted before updating project plugins"},{status:403});await l.update(m)}else if("disable"===b.action){if(!m)return e.NextResponse.json({error:"source required"},{status:400});t(g,[m],j,!0),await g.flush()}else{if("enable"!==b.action)return e.NextResponse.json({error:`Unsupported action: ${b.action}`},{status:400});if(!m)return e.NextResponse.json({error:"source required"},{status:400});t(g,[m],j,!1),await g.flush()}return e.NextResponse.json(await x(b.cwd))}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}finally{(0,m.nx)()}}d()}catch(a){d(a)}})},33873:a=>{a.exports=require("path")},39073:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/plugins/route",pathname:"/api/plugins",filename:"route",bundlePath:"app/api/plugins/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/plugins/route.ts",nextConfigOutput:"",userland:()=>c(32493),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/plugins/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},60268:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OH:()=>k,O_:()=>j,nx:()=>l});var e=c(75430),f=c(77598),g=c(28994),h=c(63108),i=a([e,g]);async function j(){let a=(0,e.getAgentDir)(),b=await (0,e.createAgentSessionServices)({cwd:a,agentDir:a});return await (0,g.vd)(b.modelRuntime),b.modelRuntime}[e,g]=i.then?(await i)():i;let m=Symbol.for("pi-web:shared-model-runtime-refresh");async function k(){var a;let b,c=(0,e.getAgentDir)(),d=globalThis.__piWebSharedModelRuntime;(!d||d.agentDir!==c||d.expiresAt<=Date.now())&&((b={agentDir:a=c,runtime:j(),queueKey:`${a}\0${(0,f.randomUUID)()}`,expiresAt:1/0}).runtime.then(()=>{b.expiresAt=Date.now()+6e5},()=>{globalThis.__piWebSharedModelRuntime===b&&(globalThis.__piWebSharedModelRuntime=void 0)}),d=b,globalThis.__piWebSharedModelRuntime=d);let i=await d.runtime;return(0,h.T)(m,d.queueKey,async()=>(await i.refresh({allowNetwork:!1}),await (0,g.vd)(i),i))}function l(){globalThis.__piWebSharedModelRuntime=void 0}d()}catch(a){d(a)}})},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65742:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Q:()=>u,t:()=>p});var e=c(79646),f=c(29021),g=c(33873),h=c(28354),i=c(75430),j=c(43618),k=c(10595),l=c(38363),m=c(72498),n=a([i,m]);[i,m]=n.then?(await n)():n;let v=(0,h.promisify)(e.execFile);function o(a){return"project"===a?"project":"global"}function p(a){let b=(0,l.e)(a);return b?null===(0,j.valid)(b.version??""):!!(a.startsWith("git:")||/^(https?|ssh|git):\/\//i.test(a))&&!function(a){let b=a.startsWith("git:")?a.slice(4).trim():a.trim(),c=b.match(/^git@[^:]+:(.+)$/)?.[1];if(c)return c.includes("@");if(b.includes("://"))try{return new URL(b).pathname.replace(/^\/+/,"").includes("@")}catch{return!1}let d=b.indexOf("/");return d>=0&&b.slice(d+1).includes("@")}(a)}function q(a,b,c){let d=(0,l.e)(a.source);return{source:a.source,scope:o(a.scope),displayName:d?.name??a.source,type:d?"npm":"git",state:b,message:c}}async function r(a,b,c){let d="npm"===a?(0,k.f)("npm",b):{command:a,args:b},{stdout:e}=await v(d.command,d.args,{cwd:c.cwd,env:c.env?{...process.env,...c.env}:process.env,encoding:"utf8",timeout:1e4});return e}async function s(a,b,c,d){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let e=(0,l.e)(a.source);if(!e)return q(a,"unsupported");let[h="npm",...i]=c??[];if(!h)return q(a,"error","Invalid npmCommand.");let k=function(a){let b=JSON.parse((0,f.readFileSync)((0,g.join)(a,"package.json"),"utf8"));if("string"!=typeof b.version||!(0,j.valid)(b.version))throw Error("Installed package version is unavailable.");return b.version}(a.installedPath),m=function(a,b){let c=JSON.parse(a.trim());if("string"==typeof c&&(0,j.valid)(c))return c;if(Array.isArray(c)){let a=c.filter(a=>"string"==typeof a&&null!==(0,j.valid)(a)),d=b?(0,j.maxSatisfying)(a,b):a.sort(j.rcompare)[0];if(d)return d}throw Error("Unexpected response from npm view.")}(await d(h,[...i,"view",e.spec,"version","--json"],{cwd:b}),e.version?(0,j.validRange)(e.version)??void 0:void 0);return q(a,(0,j.gt)(m,k)?"update-available":"up-to-date")}async function t(a,b){if(!a.installedPath||!(0,f.existsSync)(a.installedPath))return q(a,"error","Package is not installed.");let c={cwd:a.installedPath,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}},d=(await b("git",["rev-parse","HEAD"],c)).trim(),e=await b("git",["rev-parse","--abbrev-ref","@{upstream}"],c).then(a=>a.trim()).catch(()=>""),g=e.startsWith("origin/")?`refs/heads/${e.slice(7)}`:"HEAD",h=await b("git",["ls-remote","origin",g],c),i=h.match(/^([0-9a-f]{40,64})\s+/m)?.[1];if(!i)throw Error(`Failed to determine remote ${g}.`);return q(a,d===i?"up-to-date":"update-available")}async function u(a,b,c={}){let d=c.packages,e=c.npmCommand;if(!d){let b=(0,i.getAgentDir)(),c=(0,m.Y1)(a,b),f=i.SettingsManager.create(a,b,{projectTrusted:c.trusted});d=new i.DefaultPackageManager({cwd:a,agentDir:b,settingsManager:f}).listConfiguredPackages(),e??=f.getNpmCommand()}let f=d.filter(a=>!b?.source||a.source===b.source&&o(a.scope)===b.scope),g=c.runCommand??r;return Promise.all(f.map(async b=>{if(!p(b.source))return q(b,"unsupported","Pinned or local packages cannot be checked automatically.");if(/^(1|true|yes)$/i.test(process.env.PI_OFFLINE??""))return q(b,"error","Update checks are disabled while PI_OFFLINE=1.");try{return(0,l.e)(b.source)?await s(b,a,e,g):await t(b,g)}catch(a){return q(b,"error",a instanceof Error?a.message:String(a))}}))}d()}catch(a){d(a)}})},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}function j(a,b=h()){return!!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{let b=new URL(a.url);return/^\/api\/sessions\/[^/]+\/export$/.test(b.pathname)||function(a){if(!a.pathname.startsWith("/api/files/")||"read"!==a.searchParams.get("type"))return!1;let b=a.pathname.slice(a.pathname.lastIndexOf("/")+1);try{return decodeURIComponent(b).toLowerCase().endsWith(".pdf")}catch{return!1}}(b)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d,e=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&i(e)===f)return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,3618,5582,2498],()=>b(b.s=39073));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=1960,a.ids=[1960],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19885:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/project-trust/route",pathname:"/api/project-trust",filename:"route",bundlePath:"app/api/project-trust/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/project-trust/route.ts",nextConfigOutput:"",userland:()=>c(24979),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/project-trust/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},24979:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>r,POST:()=>s,dynamic:()=>t});var e=c(23211),f=c(75430),g=c(57736),h=c(29165),i=c(28967),j=c(72498),k=c(66544),l=c(56429),m=a([f,g,h,j,l]);[f,g,h,j,l]=m.then?(await m)():m;let t="force-dynamic";function n(a){return a instanceof Error?a.message:String(a)}function o(a,b,c){return e.NextResponse.json({error:c,reason:b},{status:a})}async function p(a){let b=await (0,h.ks)(a);return(0,h.X2)(b)?{response:e.NextResponse.json(b.body,{status:b.status})}:b}async function q(a,b,c){try{let{file:d,servers:e}=await (0,g.Y6)({agentDir:a,cwd:b,allowedRoots:c});return{mcpFile:d,mcpServers:e}}catch(a){return{mcpServers:[],mcpError:n(a)}}}async function r(a){let b=await p(new URL(a.url).searchParams.get("cwd"));if("response"in b)return b.response;let c=(0,f.getAgentDir)(),d=await q(c,b.cwd,b.allowedRoots);try{return e.NextResponse.json({...(0,j.Y1)(b.cwd,c),...d})}catch(a){return e.NextResponse.json({error:n(a),reason:"trust-unreadable",...d},{status:500})}}async function s(a){if(!(0,k.EN)(a))return o(403,"request-denied","Untrusted API request");if(!(0,k.E2)(a))return o(415,"content-type","Content-Type must be application/json");try{let b=await a.json().catch(()=>null),c=await p(b?.cwd);if("response"in c)return c.response;let d=(0,f.getAgentDir)();if(!(0,j.Y1)(c.cwd,d).requiresTrust)return o(409,"trust-not-required","This project has no resources that require trust");if((0,l._I)(c.cwd))return o(409,"session-busy","Wait for the active session to finish before trusting this project");let g=(0,j.er)(c.cwd,d);return(0,i.kn)(),await (0,l.oA)(c.cwd),e.NextResponse.json(g)}catch(a){return o(500,"internal",n(a))}}d()}catch(a){d(a)}})},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29862:a=>{a.exports=import("@earendil-works/pi-tui")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51181:a=>{a.exports=require("web-push")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},81115:a=>{a.exports=require("constants")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,974,5582,2498,3757,4698,2243,6429,1207,9165],()=>b(b.s=19885));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=1960,a.ids=[1960],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},24979:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>r,POST:()=>s,dynamic:()=>t});var e=c(23211),f=c(75430),g=c(57736),h=c(29165),i=c(28967),j=c(72498),k=c(66544),l=c(56429),m=a([f,g,h,j,l]);[f,g,h,j,l]=m.then?(await m)():m;let t="force-dynamic";function n(a){return a instanceof Error?a.message:String(a)}function o(a,b,c){return e.NextResponse.json({error:c,reason:b},{status:a})}async function p(a){let b=await (0,h.ks)(a);return(0,h.X2)(b)?{response:e.NextResponse.json(b.body,{status:b.status})}:b}async function q(a,b,c){try{let{file:d,servers:e}=await (0,g.Y6)({agentDir:a,cwd:b,allowedRoots:c});return{mcpFile:d,mcpServers:e}}catch(a){return{mcpServers:[],mcpError:n(a)}}}async function r(a){let b=await p(new URL(a.url).searchParams.get("cwd"));if("response"in b)return b.response;let c=(0,f.getAgentDir)(),d=await q(c,b.cwd,b.allowedRoots);try{return e.NextResponse.json({...(0,j.Y1)(b.cwd,c),...d})}catch(a){return e.NextResponse.json({error:n(a),reason:"trust-unreadable",...d},{status:500})}}async function s(a){if(!(0,k.EN)(a))return o(403,"request-denied","Untrusted API request");if(!(0,k.E2)(a))return o(415,"content-type","Content-Type must be application/json");try{let b=await a.json().catch(()=>null),c=await p(b?.cwd);if("response"in c)return c.response;let d=(0,f.getAgentDir)();if(!(0,j.Y1)(c.cwd,d).requiresTrust)return o(409,"trust-not-required","This project has no resources that require trust");if((0,l._I)(c.cwd))return o(409,"session-busy","Wait for the active session to finish before trusting this project");let g=(0,j.er)(c.cwd,d);return(0,i.kn)(),await (0,l.oA)(c.cwd),e.NextResponse.json(g)}catch(a){return o(500,"internal",n(a))}}d()}catch(a){d(a)}})},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29862:a=>{a.exports=import("@earendil-works/pi-tui")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51181:a=>{a.exports=require("web-push")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},81115:a=>{a.exports=require("constants")},86313:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/project-trust/route",pathname:"/api/project-trust",filename:"route",bundlePath:"app/api/project-trust/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/tassel/pi-web/app/api/project-trust/route.ts",nextConfigOutput:"",userland:()=>c(24979),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/project-trust/route";"/index"===d&&(d="/");let{instrumentation:e}=await v.ensureInstrumentation(a,{deferSpans:!0});return v.traceRequest(a,{tracer:(0,h.getTracer)(),spanName:`${a.method||"GET"} ${d}`,httpTarget:a.url,instrumentation:e},(e,f)=>B(a,b,c,d,!1,e,f))}async function B(a,b,c,d,f,w,x){let y=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:f});if(!y)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:z,deploymentId:A,params:B,nextConfig:C,parsedUrl:D,isDraftMode:E,prerenderManifest:F,routerServerContext:G,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,resolvedPathname:J,clientReferenceManifest:K,serverActionsManifest:L,previewProps:M}=y,N=(0,j.normalizeAppPath)(d),O=!!F.routes[J]&&(v.isDev||(0,t.isRouteCacheOwner)(J,v.cacheOwner,F.routes[J])),P=!!(F.dynamicRoutes[N]||O),Q=async()=>((null==G?void 0:G.render404)?await G.render404(a,b,D,!1):b.end("This page could not be found"),null);if(P&&!E){let a=F.dynamicRoutes[N];if(a&&!1===a.fallback&&!O){if(C.adapterPath)return await Q();throw new s.NoFallbackError}}let R=null;!P||v.isDev||E||(R="/index"===(R=J)?"/":R),L&&K&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:K,serverActionsManifest:L});let S=a.method||"GET",T=(0,h.getTracer)(),U=!!(null==G?void 0:G.isWrappedByNextServer),V=!!(0,g.getRequestMeta)(a,"minimalMode"),W=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,C,M,F,V);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let X={params:B,previewProps:M,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout,durableUseCacheEntries:!!C.experimental.durableUseCacheEntries},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:E,incrementalCache:W,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:z,deploymentId:A}},Y=new k.NodeNextRequest(a),Z=new k.NodeNextResponse(b),$=l.NextRequestAdapter.fromNodeNextRequest(Y,(0,l.signalFromNodeResponse)(b)),_=async({previousCacheEntry:e})=>{try{if(!V&&H&&I&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===R?await v.handle($,X):await v.prerender($,X);a.fetchMetrics=X.renderOpts.fetchMetrics;let f=X.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=X.renderOpts.collectedTags;if(!P)return await (0,o.I)(Y,Z,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,e=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),b}},aa=async d=>{try{var f,g;let d=await v.handleResponse({req:a,nextConfig:C,cacheKey:R,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:M,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:H,revalidateOnlyGenerated:I,responseGenerator:_,waitUntil:c.waitUntil,isMinimalMode:V});if(null!==d&&"error"in d)throw d.error;if(!P)return;if((null==d||null==(f=d.value)?void 0:f.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(g=d.value)?void 0:g.kind}`);V||b.setHeader("x-nextjs-cache",H?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),E&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);V&&P||h.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(Y,Z,new Response(d.value.body,{headers:h,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==R,isOnDemandRevalidate:H})},!1,G),P)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(Y,Z,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=T.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||N,f=`${S} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":f}),d.updateName(f),x&&x!==d&&(x.setAttribute("http.route",e),x.updateName(f))})()}};U||void 0===a.url||null==w||w.setAttribute("http.target",a.url),await aa(w)}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,974,5582,2498,3757,4698,2243,6429,1207,9165],()=>b(b.s=86313));module.exports=c})();