@qt4798/pi-web 0.9.4 → 0.9.5

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 (211) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +15 -11
  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 +24 -0
  7. package/.next/server/app/_global-error/page.js +3 -3
  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/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  27. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  28. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  29. package/.next/server/app/api/agent/[id]/route.js +1 -1
  30. package/.next/server/app/api/agent/new/route.js +1 -1
  31. package/.next/server/app/api/agent/running/route.js +1 -1
  32. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  33. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  34. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  35. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/providers/route.js +1 -1
  37. package/.next/server/app/api/backup/export/route.js +1 -0
  38. package/.next/server/app/api/backup/export/route.js.nft.json +1 -0
  39. package/.next/server/app/api/backup/export/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/backup/import/route.js +1 -0
  41. package/.next/server/app/api/backup/import/route.js.nft.json +1 -0
  42. package/.next/server/app/api/backup/import/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/cwd/browse/route.js +1 -1
  44. package/.next/server/app/api/cwd/validate/route.js +1 -1
  45. package/.next/server/app/api/default-cwd/route.js +1 -1
  46. package/.next/server/app/api/file-index/route.js +1 -1
  47. package/.next/server/app/api/files/[...path]/route.js +1 -1
  48. package/.next/server/app/api/git/diff/route.js +1 -1
  49. package/.next/server/app/api/git/status/route.js +1 -1
  50. package/.next/server/app/api/home/route.js +1 -1
  51. package/.next/server/app/api/models/route.js +1 -1
  52. package/.next/server/app/api/models-config/builtin/route.js +1 -0
  53. package/.next/server/app/api/models-config/builtin/route.js.nft.json +1 -0
  54. package/.next/server/app/api/models-config/builtin/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  56. package/.next/server/app/api/models-config/discover/route.js +1 -1
  57. package/.next/server/app/api/models-config/route.js +1 -1
  58. package/.next/server/app/api/models-config/test/route.js +1 -1
  59. package/.next/server/app/api/plugins/route.js +1 -1
  60. package/.next/server/app/api/project-trust/route.js +1 -1
  61. package/.next/server/app/api/sessions/[id]/auto-name/route.js +3 -3
  62. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  63. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  64. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/queue-recovery/route.js +1 -1
  66. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  67. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  68. package/.next/server/app/api/sessions/route.js +1 -1
  69. package/.next/server/app/api/settings/title-model/route.js +1 -0
  70. package/.next/server/app/api/settings/title-model/route.js.nft.json +1 -0
  71. package/.next/server/app/api/settings/title-model/route_client-reference-manifest.js +1 -0
  72. package/.next/server/app/api/skills/check/route.js +1 -1
  73. package/.next/server/app/api/skills/install/route.js +1 -1
  74. package/.next/server/app/api/skills/route.js +1 -1
  75. package/.next/server/app/api/skills/search/route.js +1 -1
  76. package/.next/server/app/api/skills/update/route.js +1 -1
  77. package/.next/server/app/api/themes/[name]/route.js +1 -1
  78. package/.next/server/app/api/themes/route.js +1 -1
  79. package/.next/server/app/api/worktrees/route.js +1 -1
  80. package/.next/server/app/icon.ico/route.js +1 -1
  81. package/.next/server/app/icon.png/route.js +1 -1
  82. package/.next/server/app/icon.svg/route.js +1 -1
  83. package/.next/server/app/index.html +1 -1
  84. package/.next/server/app/index.rsc +3 -3
  85. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  86. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  87. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  89. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  90. package/.next/server/app/page.js +4 -4
  91. package/.next/server/app/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app-paths-manifest.json +15 -11
  93. package/.next/server/chunks/3379.js +1 -1
  94. package/.next/server/chunks/6106.js +1 -0
  95. package/.next/server/chunks/7915.js +2 -0
  96. package/.next/server/middleware-build-manifest.js +1 -1
  97. package/.next/server/pages/404.html +1 -1
  98. package/.next/server/pages/500.html +1 -1
  99. package/.next/static/18J6_veq2yz9MszwxTCgp/_buildManifest.js +1 -0
  100. package/.next/static/chunks/{8112-57500b5de3c7af0d.js → 3680-65534e3814abc656.js} +1 -1
  101. package/.next/static/chunks/app/_global-error/page-f69f27be6421c843.js +1 -0
  102. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-f69f27be6421c843.js +1 -0
  103. package/.next/static/chunks/app/api/agent/[id]/events/route-f69f27be6421c843.js +1 -0
  104. package/.next/static/chunks/app/api/agent/[id]/route-f69f27be6421c843.js +1 -0
  105. package/.next/static/chunks/app/api/agent/new/route-f69f27be6421c843.js +1 -0
  106. package/.next/static/chunks/app/api/agent/running/route-f69f27be6421c843.js +1 -0
  107. package/.next/static/chunks/app/api/auth/all-providers/route-f69f27be6421c843.js +1 -0
  108. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-f69f27be6421c843.js +1 -0
  109. package/.next/static/chunks/app/api/auth/login/[provider]/route-f69f27be6421c843.js +1 -0
  110. package/.next/static/chunks/app/api/auth/logout/[provider]/route-f69f27be6421c843.js +1 -0
  111. package/.next/static/chunks/app/api/auth/providers/route-f69f27be6421c843.js +1 -0
  112. package/.next/static/chunks/app/api/backup/export/route-f69f27be6421c843.js +1 -0
  113. package/.next/static/chunks/app/api/backup/import/route-f69f27be6421c843.js +1 -0
  114. package/.next/static/chunks/app/api/cwd/browse/route-f69f27be6421c843.js +1 -0
  115. package/.next/static/chunks/app/api/cwd/validate/route-f69f27be6421c843.js +1 -0
  116. package/.next/static/chunks/app/api/default-cwd/route-f69f27be6421c843.js +1 -0
  117. package/.next/static/chunks/app/api/file-index/route-f69f27be6421c843.js +1 -0
  118. package/.next/static/chunks/app/api/files/[...path]/route-f69f27be6421c843.js +1 -0
  119. package/.next/static/chunks/app/api/git/diff/route-f69f27be6421c843.js +1 -0
  120. package/.next/static/chunks/app/api/git/status/route-f69f27be6421c843.js +1 -0
  121. package/.next/static/chunks/app/api/home/route-f69f27be6421c843.js +1 -0
  122. package/.next/static/chunks/app/api/models/route-f69f27be6421c843.js +1 -0
  123. package/.next/static/chunks/app/api/models-config/builtin/route-f69f27be6421c843.js +1 -0
  124. package/.next/static/chunks/app/api/models-config/catalog/route-f69f27be6421c843.js +1 -0
  125. package/.next/static/chunks/app/api/models-config/discover/route-f69f27be6421c843.js +1 -0
  126. package/.next/static/chunks/app/api/models-config/route-f69f27be6421c843.js +1 -0
  127. package/.next/static/chunks/app/api/models-config/test/route-f69f27be6421c843.js +1 -0
  128. package/.next/static/chunks/app/api/plugins/route-f69f27be6421c843.js +1 -0
  129. package/.next/static/chunks/app/api/project-trust/route-f69f27be6421c843.js +1 -0
  130. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-f69f27be6421c843.js +1 -0
  131. package/.next/static/chunks/app/api/sessions/[id]/context/route-f69f27be6421c843.js +1 -0
  132. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-f69f27be6421c843.js +1 -0
  133. package/.next/static/chunks/app/api/sessions/[id]/export/route-f69f27be6421c843.js +1 -0
  134. package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-f69f27be6421c843.js +1 -0
  135. package/.next/static/chunks/app/api/sessions/[id]/route-f69f27be6421c843.js +1 -0
  136. package/.next/static/chunks/app/api/sessions/[id]/state/route-f69f27be6421c843.js +1 -0
  137. package/.next/static/chunks/app/api/sessions/route-f69f27be6421c843.js +1 -0
  138. package/.next/static/chunks/app/api/settings/title-model/route-f69f27be6421c843.js +1 -0
  139. package/.next/static/chunks/app/api/skills/check/route-f69f27be6421c843.js +1 -0
  140. package/.next/static/chunks/app/api/skills/install/route-f69f27be6421c843.js +1 -0
  141. package/.next/static/chunks/app/api/skills/route-f69f27be6421c843.js +1 -0
  142. package/.next/static/chunks/app/api/skills/search/route-f69f27be6421c843.js +1 -0
  143. package/.next/static/chunks/app/api/skills/update/route-f69f27be6421c843.js +1 -0
  144. package/.next/static/chunks/app/api/themes/[name]/route-f69f27be6421c843.js +1 -0
  145. package/.next/static/chunks/app/api/themes/route-f69f27be6421c843.js +1 -0
  146. package/.next/static/chunks/app/api/worktrees/route-f69f27be6421c843.js +1 -0
  147. package/.next/static/chunks/app/page-05dd2d3fa723be71.js +15 -0
  148. package/.next/static/chunks/next/dist/client/components/builtin/app-error-f69f27be6421c843.js +1 -0
  149. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f69f27be6421c843.js +1 -0
  150. package/.next/static/chunks/next/dist/client/components/builtin/not-found-f69f27be6421c843.js +1 -0
  151. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f69f27be6421c843.js +1 -0
  152. package/.next/trace +6 -6
  153. package/.next/trace-build +1 -1
  154. package/.next/types/app/api/backup/export/route.ts +351 -0
  155. package/.next/types/app/api/backup/import/route.ts +351 -0
  156. package/.next/types/app/api/models-config/builtin/route.ts +351 -0
  157. package/.next/types/app/api/settings/title-model/route.ts +351 -0
  158. package/.next/types/routes.d.ts +5 -1
  159. package/.next/types/validator.ts +36 -0
  160. package/README.en.md +4 -1
  161. package/README.md +17 -0
  162. package/package.json +15 -3
  163. package/.next/static/-RoYqrN1Mf4JD9crC9rVq/_buildManifest.js +0 -1
  164. package/.next/static/chunks/app/_global-error/page-1fddebcafb57d31a.js +0 -1
  165. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-1fddebcafb57d31a.js +0 -1
  166. package/.next/static/chunks/app/api/agent/[id]/events/route-1fddebcafb57d31a.js +0 -1
  167. package/.next/static/chunks/app/api/agent/[id]/route-1fddebcafb57d31a.js +0 -1
  168. package/.next/static/chunks/app/api/agent/new/route-1fddebcafb57d31a.js +0 -1
  169. package/.next/static/chunks/app/api/agent/running/route-1fddebcafb57d31a.js +0 -1
  170. package/.next/static/chunks/app/api/auth/all-providers/route-1fddebcafb57d31a.js +0 -1
  171. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-1fddebcafb57d31a.js +0 -1
  172. package/.next/static/chunks/app/api/auth/login/[provider]/route-1fddebcafb57d31a.js +0 -1
  173. package/.next/static/chunks/app/api/auth/logout/[provider]/route-1fddebcafb57d31a.js +0 -1
  174. package/.next/static/chunks/app/api/auth/providers/route-1fddebcafb57d31a.js +0 -1
  175. package/.next/static/chunks/app/api/cwd/browse/route-1fddebcafb57d31a.js +0 -1
  176. package/.next/static/chunks/app/api/cwd/validate/route-1fddebcafb57d31a.js +0 -1
  177. package/.next/static/chunks/app/api/default-cwd/route-1fddebcafb57d31a.js +0 -1
  178. package/.next/static/chunks/app/api/file-index/route-1fddebcafb57d31a.js +0 -1
  179. package/.next/static/chunks/app/api/files/[...path]/route-1fddebcafb57d31a.js +0 -1
  180. package/.next/static/chunks/app/api/git/diff/route-1fddebcafb57d31a.js +0 -1
  181. package/.next/static/chunks/app/api/git/status/route-1fddebcafb57d31a.js +0 -1
  182. package/.next/static/chunks/app/api/home/route-1fddebcafb57d31a.js +0 -1
  183. package/.next/static/chunks/app/api/models/route-1fddebcafb57d31a.js +0 -1
  184. package/.next/static/chunks/app/api/models-config/catalog/route-1fddebcafb57d31a.js +0 -1
  185. package/.next/static/chunks/app/api/models-config/discover/route-1fddebcafb57d31a.js +0 -1
  186. package/.next/static/chunks/app/api/models-config/route-1fddebcafb57d31a.js +0 -1
  187. package/.next/static/chunks/app/api/models-config/test/route-1fddebcafb57d31a.js +0 -1
  188. package/.next/static/chunks/app/api/plugins/route-1fddebcafb57d31a.js +0 -1
  189. package/.next/static/chunks/app/api/project-trust/route-1fddebcafb57d31a.js +0 -1
  190. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-1fddebcafb57d31a.js +0 -1
  191. package/.next/static/chunks/app/api/sessions/[id]/context/route-1fddebcafb57d31a.js +0 -1
  192. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-1fddebcafb57d31a.js +0 -1
  193. package/.next/static/chunks/app/api/sessions/[id]/export/route-1fddebcafb57d31a.js +0 -1
  194. package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-1fddebcafb57d31a.js +0 -1
  195. package/.next/static/chunks/app/api/sessions/[id]/route-1fddebcafb57d31a.js +0 -1
  196. package/.next/static/chunks/app/api/sessions/[id]/state/route-1fddebcafb57d31a.js +0 -1
  197. package/.next/static/chunks/app/api/sessions/route-1fddebcafb57d31a.js +0 -1
  198. package/.next/static/chunks/app/api/skills/check/route-1fddebcafb57d31a.js +0 -1
  199. package/.next/static/chunks/app/api/skills/install/route-1fddebcafb57d31a.js +0 -1
  200. package/.next/static/chunks/app/api/skills/route-1fddebcafb57d31a.js +0 -1
  201. package/.next/static/chunks/app/api/skills/search/route-1fddebcafb57d31a.js +0 -1
  202. package/.next/static/chunks/app/api/skills/update/route-1fddebcafb57d31a.js +0 -1
  203. package/.next/static/chunks/app/api/themes/[name]/route-1fddebcafb57d31a.js +0 -1
  204. package/.next/static/chunks/app/api/themes/route-1fddebcafb57d31a.js +0 -1
  205. package/.next/static/chunks/app/api/worktrees/route-1fddebcafb57d31a.js +0 -1
  206. package/.next/static/chunks/app/page-47de6c92ff29e268.js +0 -15
  207. package/.next/static/chunks/next/dist/client/components/builtin/app-error-1fddebcafb57d31a.js +0 -1
  208. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-1fddebcafb57d31a.js +0 -1
  209. package/.next/static/chunks/next/dist/client/components/builtin/not-found-1fddebcafb57d31a.js +0 -1
  210. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-1fddebcafb57d31a.js +0 -1
  211. /package/.next/static/{-RoYqrN1Mf4JD9crC9rVq → 18J6_veq2yz9MszwxTCgp}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/"
5
- type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-trust" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/queue-recovery" | "/api/sessions/[id]/state" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/themes" | "/api/themes/[name]" | "/api/worktrees"
5
+ type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/backup/export" | "/api/backup/import" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/models" | "/api/models-config" | "/api/models-config/builtin" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-trust" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/queue-recovery" | "/api/sessions/[id]/state" | "/api/settings/title-model" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/themes" | "/api/themes/[name]" | "/api/worktrees"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -22,6 +22,8 @@ interface ParamMap {
22
22
  "/api/auth/login/[provider]": { "provider": string; }
23
23
  "/api/auth/logout/[provider]": { "provider": string; }
24
24
  "/api/auth/providers": {}
25
+ "/api/backup/export": {}
26
+ "/api/backup/import": {}
25
27
  "/api/cwd/browse": {}
26
28
  "/api/cwd/validate": {}
27
29
  "/api/default-cwd": {}
@@ -32,6 +34,7 @@ interface ParamMap {
32
34
  "/api/home": {}
33
35
  "/api/models": {}
34
36
  "/api/models-config": {}
37
+ "/api/models-config/builtin": {}
35
38
  "/api/models-config/catalog": {}
36
39
  "/api/models-config/discover": {}
37
40
  "/api/models-config/test": {}
@@ -45,6 +48,7 @@ interface ParamMap {
45
48
  "/api/sessions/[id]/export": { "id": string; }
46
49
  "/api/sessions/[id]/queue-recovery": { "id": string; }
47
50
  "/api/sessions/[id]/state": { "id": string; }
51
+ "/api/settings/title-model": {}
48
52
  "/api/skills": {}
49
53
  "/api/skills/check": {}
50
54
  "/api/skills/install": {}
@@ -146,6 +146,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
146
146
  type __Unused = __Check
147
147
  }
148
148
 
149
+ // Validate ../../app/api/backup/export/route.ts
150
+ {
151
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/backup/export">> = Specific
152
+ const handler = {} as typeof import("../../app/api/backup/export/route.js")
153
+ type __Check = __IsExpected<typeof handler>
154
+ // @ts-ignore
155
+ type __Unused = __Check
156
+ }
157
+
158
+ // Validate ../../app/api/backup/import/route.ts
159
+ {
160
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/backup/import">> = Specific
161
+ const handler = {} as typeof import("../../app/api/backup/import/route.js")
162
+ type __Check = __IsExpected<typeof handler>
163
+ // @ts-ignore
164
+ type __Unused = __Check
165
+ }
166
+
149
167
  // Validate ../../app/api/cwd/browse/route.ts
150
168
  {
151
169
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/cwd/browse">> = Specific
@@ -218,6 +236,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
218
236
  type __Unused = __Check
219
237
  }
220
238
 
239
+ // Validate ../../app/api/models-config/builtin/route.ts
240
+ {
241
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/models-config/builtin">> = Specific
242
+ const handler = {} as typeof import("../../app/api/models-config/builtin/route.js")
243
+ type __Check = __IsExpected<typeof handler>
244
+ // @ts-ignore
245
+ type __Unused = __Check
246
+ }
247
+
221
248
  // Validate ../../app/api/models-config/catalog/route.ts
222
249
  {
223
250
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/models-config/catalog">> = Specific
@@ -353,6 +380,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
353
380
  type __Unused = __Check
354
381
  }
355
382
 
383
+ // Validate ../../app/api/settings/title-model/route.ts
384
+ {
385
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings/title-model">> = Specific
386
+ const handler = {} as typeof import("../../app/api/settings/title-model/route.js")
387
+ type __Check = __IsExpected<typeof handler>
388
+ // @ts-ignore
389
+ type __Unused = __Check
390
+ }
391
+
356
392
  // Validate ../../app/api/skills/check/route.ts
357
393
  {
358
394
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/skills/check">> = Specific
package/README.en.md CHANGED
@@ -19,8 +19,11 @@
19
19
  - Model, OAuth/API-key, skill, plugin, theme, language, and Git worktree management in the browser.
20
20
  - Mobile layout keeps the selected model and send action visible, while long project and repository labels truncate instead of causing horizontal scrolling.
21
21
 
22
- ## Latest changes (2026-08-03)
22
+ ## Latest changes (2026-08-04)
23
23
 
24
+ - **Backup & restore** — a new Backup tab in Settings exports/imports core config, skills, plugins, MCP servers, and sessions (optionally including API keys) as a pi-backup zip; imports remap paths and adapt MCP commands per platform, with per-category selection and per-server skip.
25
+ - **Auto session titles** — hover actions on a session now include a "Generate title" button that names the session from its content via a model; the title model can be set globally.
26
+ - **Security hardening** — auth checks were added to the auto-name, settings/title-model, models-config, and builtin-model routes; backup import gained decompression-bomb limits (per-entry and total, verified against actual bytes), script shebang allow-lists, local-package name validation, and opt-in npm reinstall.
24
27
  - The repository now uses the `pi-web-desktop` web baseline only. Electron, desktop packaging, the PWA Service Worker, and tag-triggered desktop releases were removed.
25
28
  - **Choose folder** opens a browsable directory picker instead of asking for a manually typed path.
26
29
  - On mobile, project and Git worktree labels are smaller and truncate safely; the model selector and send action remain visible.
package/README.md CHANGED
@@ -30,6 +30,7 @@
30
30
  | 会话管理 | 按项目查看会话,支持会话内分支、Fork、重命名、删除、AI 自动生成标题与 HTML 导出。 |
31
31
  | 项目与文件 | 通过目录选择器加载项目,浏览文件、Diff、图片、音频、PDF、DOCX。 |
32
32
  | 模型与认证 | 在网页中管理模型、OAuth/API Key、连通性测试和默认模型;支持从供应商自动获取模型列表与 models.dev 定价预设一键填入。 |
33
+ | 备份恢复 | 一键导出/导入核心配置、技能、插件、MCP 服务器与会话(可选含密钥),跨平台自动适配路径与命令。 |
33
34
  | 技能与插件 | 查询、安装、启停 Skills 与 package 插件。 |
34
35
  | Git Worktree | 在同一项目下创建、切换和移除 Worktree。 |
35
36
  | 主题与语言 | 支持 Pi TUI 主题、亮暗模式及中文/English。 |
@@ -37,12 +38,28 @@
37
38
 
38
39
  ## 最新更新(2026-08-04)
39
40
 
41
+ - **跨平台备份恢复**:设置弹窗新增「备份」标签页,一键导出/导入核心配置、技能、插件、MCP 与会话;导入按平台自动适配路径与命令,支持类别勾选与 MCP 跳过。
42
+ - **自动生成会话标题**:会话列表新增“生成标题”按钮,基于会话内容调用模型命名;可全局指定标题生成模型。
43
+ - **内置模型覆盖**:模型配置可查看供应商内置模型明细并叠加 models.json 自定义覆盖项。
44
+ - **安全加固**:auto-name / settings / models-config 等 API 补齐请求鉴权;备份导入增加解压炸弹防护(单条目/总量双重上限 + 实际字节校验)、脚本白名单、路径穿越校验与 npm 插件 opt-in 重装。
40
45
  - **供应商获取模型**:模型配置中可直接从供应商的 Base URL 拉取模型列表(支持 OpenAI / Anthropic / Google 等协议),筛选、多选后一键添加,无需手写模型 ID。
41
46
  - **models.dev 定价预设**:填写模型 ID 后一键从 models.dev 拉取名称、上下文窗口、价格等字段填入,支持撤销;价格来源与可信度一目了然。
42
47
  - **对话滚动跟随**:修复 agent 运行时消息列表跳到底部空白的问题;流式输出期间停留在列表底部则自动跟随,滚到上方查看历史不被打断,且最后一条消息与输入框之间保留间距。
43
48
  - **快捷操作**:文件标签页支持中间键关闭;会话删除支持 Shift+点击跳过确认;Markdown 中的本地图片可直接预览。
44
49
  - **URL 直达目录**:通过 `?cwd=<路径>` 参数打开网页时直接校验并进入指定目录的新会话。
45
50
 
51
+ ## 安装提示(npm 11)
52
+
53
+ 使用 npm ≥ 11 安装本包时可能出现两类提示,均为**提示性警告,不影响安装与运行**:
54
+
55
+ - `ERESOLVE overriding peer dependency`:上游 `@lobehub/ui` 依赖的 `@emoji-mart/react@1.1.1` 的 peer 声明仅到 React 18,而本包使用 React 19。npm 会自动 override 并继续安装(实际兼容)。如需彻底消除,可在你的项目 `package.json` 添加:
56
+
57
+ ```json
58
+ "overrides": { "@emoji-mart/react": { "react": "$react" } }
59
+ ```
60
+
61
+ - `allow-scripts`:npm 11 新增的安装脚本审批提示(sharp / protobufjs / @google/genai 等)。本项目已在包内声明 `allowScripts`,若你的 npm 仍提示,可执行 `npm approve-scripts --all` 审批,或在安装命令加 `--allow-scripts=sharp,protobufjs,@google/genai`。
62
+
46
63
  ## 最新更新(2026-08-03)
47
64
 
48
65
  - **Web-only 基线**:界面和运行代码已统一为 `pi-web-desktop` 的网页基线;Electron 主进程、桌面端打包、PWA Service Worker 与 tag 驱动的桌面 Release 工作流已移除。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qt4798/pi-web",
3
- "version": "0.9.4",
3
+ "version": "0.9.5",
4
4
  "description": "Web workspace for the pi coding agent",
5
5
  "homepage": "https://github.com/t479842598/pi-web-QT#readme",
6
6
  "repository": {
@@ -47,6 +47,7 @@
47
47
  "@lobehub/icons": "^5.6.0",
48
48
  "@phosphor-icons/react": "^2.1.10",
49
49
  "@types/react-syntax-highlighter": "^15.5.13",
50
+ "adm-zip": "^0.6.0",
50
51
  "katex": "^0.16.47",
51
52
  "mammoth": "^1.12.0",
52
53
  "mermaid": "^11.14.0",
@@ -63,6 +64,17 @@
63
64
  "remark-math": "^6.0.0",
64
65
  "undici": "8.5.0"
65
66
  },
67
+ "overrides": {
68
+ "@emoji-mart/react": {
69
+ "react": "$react"
70
+ }
71
+ },
72
+ "allowScripts": {
73
+ "@google/genai@1.52.0": true,
74
+ "protobufjs@7.6.5": true,
75
+ "sharp@0.34.5": true,
76
+ "unrs-resolver@1.11.1": true
77
+ },
66
78
  "devDependencies": {
67
79
  "@resvg/resvg-js": "^2.6.2",
68
80
  "@tailwindcss/postcss": "^4.2.2",
@@ -70,12 +82,12 @@
70
82
  "@types/proper-lockfile": "4.1.4",
71
83
  "@types/react": "^19",
72
84
  "@types/react-dom": "^19",
73
- "eslint": "^9",
85
+ "eslint": "^9.39.5",
74
86
  "eslint-config-next": "16.2.12",
75
87
  "jiti": "^2.7.0",
76
88
  "postcss": "^8",
77
89
  "tailwindcss": "^4.2.2",
78
90
  "to-ico": "^1.1.5",
79
- "typescript": "^5"
91
+ "typescript": "^5.9.3"
80
92
  }
81
93
  }
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:32,errorRate:1e-4,numBits:614,numHashes:14,bitArray:[0,0,1,0,1,1,0,1,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,1,0,0,1,1,0,0,0,1,0,1,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,0,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,0,1,1,0,1,1,0,1,1,1,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,0,0,0,1,0,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,0,1,0,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,1,0,1,1,1,0,1,0,1,0,1,0,1,1,1,0,0,1,0,0,1,0,1,1,1,0,1,0,0,1,0,0,1,0,1,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,0,1,0,1,0,1,1,1,1,1,0,0,0,1,1]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[0,1,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,1,1,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,1,0,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[552,976,1004,1097,1541,1960,2053,2138,2504,2835,2837,3432,3507,3851,3943,3955,4016,4037,4896,5221,5907,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8335,8380,8429,8504,8658,8743,8933,9156,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);