@seqyuan/annovibe 0.8.144 → 0.8.146

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 (296) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +13 -14
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +28 -7
  8. package/.next/server/app/_global-error/page.js +2 -2
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found/page.js +2 -2
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  22. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  23. package/.next/server/app/api/agent/[id]/prepare/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/events/route.js +2 -2
  27. package/.next/server/app/api/agent/running/route.js +1 -1
  28. package/.next/server/app/api/agent/runtime/route.js +1 -1
  29. package/.next/server/app/api/apps/[id]/[[...path]]/route.js +2 -2
  30. package/.next/server/app/api/apps/route.js +2 -2
  31. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  32. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  33. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  34. package/.next/server/app/api/auth/login/route.js +1 -1
  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/auth/status/route.js +1 -1
  38. package/.next/server/app/api/auth/totp/route.js +1 -1
  39. package/.next/server/app/api/debug-models/route.js +1 -1
  40. package/.next/server/app/api/default-cwd/route.js +1 -1
  41. package/.next/server/app/api/file-index/route.js +1 -1
  42. package/.next/server/app/api/file-tree/delete/route.js +1 -1
  43. package/.next/server/app/api/file-tree/mkdir/route.js +1 -1
  44. package/.next/server/app/api/file-tree/rename/route.js +1 -1
  45. package/.next/server/app/api/file-tree/reveal/route.js +1 -1
  46. package/.next/server/app/api/file-tree/write/route.js +1 -1
  47. package/.next/server/app/api/file-watch/route.js +2 -2
  48. package/.next/server/app/api/files/[...path]/route.js +1 -1
  49. package/.next/server/app/api/harness/route.js +1 -1
  50. package/.next/server/app/api/home/route.js +1 -1
  51. package/.next/server/app/api/im/cancel/route.js +1 -1
  52. package/.next/server/app/api/im/gateway-status/route.js +1 -1
  53. package/.next/server/app/api/im/project/route.js +1 -1
  54. package/.next/server/app/api/im/projects/route.js +1 -1
  55. package/.next/server/app/api/im/session-ids/route.js +1 -1
  56. package/.next/server/app/api/im/turn/route.js +2 -2
  57. package/.next/server/app/api/images/upload/route.js +1 -1
  58. package/.next/server/app/api/internal/runtime/route.js +1 -1
  59. package/.next/server/app/api/memory/dismiss/route.js +2 -2
  60. package/.next/server/app/api/memory/promote/route.js +2 -2
  61. package/.next/server/app/api/models/route.js +1 -1
  62. package/.next/server/app/api/models-config/discover/route.js +1 -1
  63. package/.next/server/app/api/models-config/route.js +1 -1
  64. package/.next/server/app/api/models-config/test/route.js +1 -1
  65. package/.next/server/app/api/plot-kernels/route.js +1 -1
  66. package/.next/server/app/api/plot-kernels/status/route.js +1 -1
  67. package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
  68. package/.next/server/app/api/plugins/route.js +1 -1
  69. package/.next/server/app/api/project-trust/route.js +1 -1
  70. package/.next/server/app/api/projects/browse/route.js +1 -1
  71. package/.next/server/app/api/projects/route.js +1 -1
  72. package/.next/server/app/api/search/route.js +1 -1
  73. package/.next/server/app/api/session-index/events/route.js +2 -2
  74. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  75. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  76. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  77. package/.next/server/app/api/sessions/[id]/media/route.js +1 -1
  78. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  79. package/.next/server/app/api/sessions/[id]/shadowed/route.js +1 -1
  80. package/.next/server/app/api/sessions/new/route.js +1 -1
  81. package/.next/server/app/api/sessions/route.js +1 -1
  82. package/.next/server/app/api/settings/route.js +1 -1
  83. package/.next/server/app/api/skills/check/route.js +1 -1
  84. package/.next/server/app/api/skills/install/route.js +2 -2
  85. package/.next/server/app/api/skills/route.js +1 -1
  86. package/.next/server/app/api/skills/search/route.js +1 -1
  87. package/.next/server/app/api/skills/update/route.js +2 -2
  88. package/.next/server/app/api/smoke/prompt-admission/route.js +1 -1
  89. package/.next/server/app/api/soul/route.js +1 -1
  90. package/.next/server/app/api/subagents/status/route.js +1 -1
  91. package/.next/server/app/api/version/route.js +1 -1
  92. package/.next/server/app/favicon.ico/route.js +1 -1
  93. package/.next/server/app/icon.svg/route.js +1 -1
  94. package/.next/server/app/index.html +1 -1
  95. package/.next/server/app/index.rsc +5 -5
  96. package/.next/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  97. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  98. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  99. package/.next/server/app/login/page.js +2 -2
  100. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/login.html +1 -1
  102. package/.next/server/app/login.rsc +1 -1
  103. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  104. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  105. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  106. package/.next/server/app/page.js +14 -14
  107. package/.next/server/app/page_client-reference-manifest.js +1 -1
  108. package/.next/server/app/smoke/page.js +2 -2
  109. package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
  110. package/.next/server/app/smoke/session-stream/page.js +1 -1
  111. package/.next/server/app/smoke/session-stream/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/smoke/session-stream.html +1 -1
  113. package/.next/server/app/smoke/session-stream.rsc +3 -3
  114. package/.next/server/app/smoke/session-stream.segments/_full.segment.rsc +3 -3
  115. package/.next/server/app/smoke/session-stream.segments/_tree.segment.rsc +1 -1
  116. package/.next/server/app/smoke/session-stream.segments/smoke/session-stream/__PAGE__.segment.rsc +3 -3
  117. package/.next/server/app/smoke.html +2 -2
  118. package/.next/server/app/smoke.rsc +3 -3
  119. package/.next/server/app/smoke.segments/_full.segment.rsc +3 -3
  120. package/.next/server/app/smoke.segments/_tree.segment.rsc +1 -1
  121. package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +3 -3
  122. package/.next/server/app-paths-manifest.json +13 -14
  123. package/.next/server/chunks/402.js +2 -2
  124. package/.next/server/chunks/4801.js +1 -1
  125. package/.next/server/chunks/6429.js +9 -12
  126. package/.next/server/chunks/7831.js +1 -1
  127. package/.next/server/chunks/8305.js +3 -3
  128. package/.next/server/chunks/9557.js +1 -1
  129. package/.next/server/middleware-build-manifest.js +1 -1
  130. package/.next/server/pages/404.html +1 -1
  131. package/.next/server/pages/500.html +1 -1
  132. package/.next/server/preview-props.json +3 -3
  133. package/.next/server/server-reference-manifest.json +1 -1
  134. package/.next/static/MHc4xkUiwo0WjuBfXFXEz/_buildManifest.js +1 -0
  135. package/.next/static/chunks/{6630-31647d3f2ff04a3d.js → 6630-afa0ca63437a28c6.js} +4 -4
  136. package/.next/static/chunks/9867-11130aa00dcc6aa8.js +260 -0
  137. package/.next/static/chunks/app/_global-error/{page-ebf7ae60150d40d4.js → page-3bfe21af77950daa.js} +1 -1
  138. package/.next/static/chunks/app/api/agent/[id]/events/{route-ebf7ae60150d40d4.js → route-3bfe21af77950daa.js} +1 -1
  139. package/.next/static/chunks/app/api/agent/[id]/prepare/{route-ebf7ae60150d40d4.js → route-3bfe21af77950daa.js} +1 -1
  140. package/.next/static/chunks/app/api/agent/[id]/{route-ebf7ae60150d40d4.js → route-3bfe21af77950daa.js} +1 -1
  141. package/.next/static/chunks/app/api/agent/new/route-3bfe21af77950daa.js +1 -0
  142. package/.next/static/chunks/app/api/agent/running/events/route-3bfe21af77950daa.js +1 -0
  143. package/.next/static/chunks/app/api/agent/running/route-3bfe21af77950daa.js +1 -0
  144. package/.next/static/chunks/app/api/agent/runtime/route-3bfe21af77950daa.js +1 -0
  145. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-3bfe21af77950daa.js +1 -0
  146. package/.next/static/chunks/app/api/apps/route-3bfe21af77950daa.js +1 -0
  147. package/.next/static/chunks/app/api/auth/all-providers/route-3bfe21af77950daa.js +1 -0
  148. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-3bfe21af77950daa.js +1 -0
  149. package/.next/static/chunks/app/api/auth/login/[provider]/route-3bfe21af77950daa.js +1 -0
  150. package/.next/static/chunks/app/api/auth/login/route-3bfe21af77950daa.js +1 -0
  151. package/.next/static/chunks/app/api/auth/logout/[provider]/route-3bfe21af77950daa.js +1 -0
  152. package/.next/static/chunks/app/api/auth/providers/route-3bfe21af77950daa.js +1 -0
  153. package/.next/static/chunks/app/api/auth/status/route-3bfe21af77950daa.js +1 -0
  154. package/.next/static/chunks/app/api/auth/totp/route-3bfe21af77950daa.js +1 -0
  155. package/.next/static/chunks/app/api/debug-models/route-3bfe21af77950daa.js +1 -0
  156. package/.next/static/chunks/app/api/default-cwd/route-3bfe21af77950daa.js +1 -0
  157. package/.next/static/chunks/app/api/file-index/route-3bfe21af77950daa.js +1 -0
  158. package/.next/static/chunks/app/api/file-tree/delete/route-3bfe21af77950daa.js +1 -0
  159. package/.next/static/chunks/app/api/file-tree/mkdir/route-3bfe21af77950daa.js +1 -0
  160. package/.next/static/chunks/app/api/file-tree/rename/route-3bfe21af77950daa.js +1 -0
  161. package/.next/static/chunks/app/api/file-tree/reveal/route-3bfe21af77950daa.js +1 -0
  162. package/.next/static/chunks/app/api/file-tree/write/route-3bfe21af77950daa.js +1 -0
  163. package/.next/static/chunks/app/api/file-watch/route-3bfe21af77950daa.js +1 -0
  164. package/.next/static/chunks/app/api/files/[...path]/route-3bfe21af77950daa.js +1 -0
  165. package/.next/static/chunks/app/api/harness/route-3bfe21af77950daa.js +1 -0
  166. package/.next/static/chunks/app/api/home/route-3bfe21af77950daa.js +1 -0
  167. package/.next/static/chunks/app/api/im/cancel/route-3bfe21af77950daa.js +1 -0
  168. package/.next/static/chunks/app/api/im/gateway-status/route-3bfe21af77950daa.js +1 -0
  169. package/.next/static/chunks/app/api/im/project/route-3bfe21af77950daa.js +1 -0
  170. package/.next/static/chunks/app/api/im/projects/route-3bfe21af77950daa.js +1 -0
  171. package/.next/static/chunks/app/api/im/session-ids/route-3bfe21af77950daa.js +1 -0
  172. package/.next/static/chunks/app/api/im/turn/route-3bfe21af77950daa.js +1 -0
  173. package/.next/static/chunks/app/api/images/upload/route-3bfe21af77950daa.js +1 -0
  174. package/.next/static/chunks/app/api/internal/runtime/route-3bfe21af77950daa.js +1 -0
  175. package/.next/static/chunks/app/api/memory/dismiss/route-3bfe21af77950daa.js +1 -0
  176. package/.next/static/chunks/app/api/memory/promote/route-3bfe21af77950daa.js +1 -0
  177. package/.next/static/chunks/app/api/models/route-3bfe21af77950daa.js +1 -0
  178. package/.next/static/chunks/app/api/models-config/discover/route-3bfe21af77950daa.js +1 -0
  179. package/.next/static/chunks/app/api/models-config/route-3bfe21af77950daa.js +1 -0
  180. package/.next/static/chunks/app/api/models-config/test/route-3bfe21af77950daa.js +1 -0
  181. package/.next/static/chunks/app/api/plot-kernels/route-3bfe21af77950daa.js +1 -0
  182. package/.next/static/chunks/app/api/plot-kernels/status/route-3bfe21af77950daa.js +1 -0
  183. package/.next/static/chunks/app/api/plot-kernels/stop/route-3bfe21af77950daa.js +1 -0
  184. package/.next/static/chunks/app/api/plugins/route-3bfe21af77950daa.js +1 -0
  185. package/.next/static/chunks/app/api/project-trust/route-3bfe21af77950daa.js +1 -0
  186. package/.next/static/chunks/app/api/projects/browse/route-3bfe21af77950daa.js +1 -0
  187. package/.next/static/chunks/app/api/projects/route-3bfe21af77950daa.js +1 -0
  188. package/.next/static/chunks/app/api/search/route-3bfe21af77950daa.js +1 -0
  189. package/.next/static/chunks/app/api/session-index/events/route-3bfe21af77950daa.js +1 -0
  190. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-3bfe21af77950daa.js +1 -0
  191. package/.next/static/chunks/app/api/sessions/[id]/context/route-3bfe21af77950daa.js +1 -0
  192. package/.next/static/chunks/app/api/sessions/[id]/export/route-3bfe21af77950daa.js +1 -0
  193. package/.next/static/chunks/app/api/sessions/[id]/media/route-3bfe21af77950daa.js +1 -0
  194. package/.next/static/chunks/app/api/sessions/[id]/route-3bfe21af77950daa.js +1 -0
  195. package/.next/static/chunks/app/api/sessions/[id]/shadowed/route-3bfe21af77950daa.js +1 -0
  196. package/.next/static/chunks/app/api/sessions/new/route-3bfe21af77950daa.js +1 -0
  197. package/.next/static/chunks/app/api/sessions/route-3bfe21af77950daa.js +1 -0
  198. package/.next/static/chunks/app/api/settings/route-3bfe21af77950daa.js +1 -0
  199. package/.next/static/chunks/app/api/skills/check/route-3bfe21af77950daa.js +1 -0
  200. package/.next/static/chunks/app/api/skills/install/route-3bfe21af77950daa.js +1 -0
  201. package/.next/static/chunks/app/api/skills/route-3bfe21af77950daa.js +1 -0
  202. package/.next/static/chunks/app/api/skills/search/route-3bfe21af77950daa.js +1 -0
  203. package/.next/static/chunks/app/api/skills/update/route-3bfe21af77950daa.js +1 -0
  204. package/.next/static/chunks/app/api/smoke/prompt-admission/route-3bfe21af77950daa.js +1 -0
  205. package/.next/static/chunks/app/api/soul/route-3bfe21af77950daa.js +1 -0
  206. package/.next/static/chunks/app/api/subagents/status/route-3bfe21af77950daa.js +1 -0
  207. package/.next/static/chunks/app/api/version/route-3bfe21af77950daa.js +1 -0
  208. package/.next/static/chunks/app/favicon.ico/route-3bfe21af77950daa.js +1 -0
  209. package/.next/static/chunks/app/page-de91c8247d46a20b.js +22 -0
  210. package/.next/static/chunks/app/smoke/{page-82db33b4fdd2e0b4.js → page-7226fa31540df8a8.js} +1 -1
  211. package/.next/static/chunks/next/dist/client/components/builtin/app-error-3bfe21af77950daa.js +1 -0
  212. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-3bfe21af77950daa.js +1 -0
  213. package/.next/static/chunks/next/dist/client/components/builtin/not-found-3bfe21af77950daa.js +1 -0
  214. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-3bfe21af77950daa.js +1 -0
  215. package/README.md +30 -3
  216. package/next.config.ts +25 -0
  217. package/package.json +5 -1
  218. package/.next/server/app/api/plot-kernels/save/route.js +0 -1
  219. package/.next/server/app/api/plot-kernels/save/route_client-reference-manifest.js +0 -1
  220. package/.next/static/7W2hkrr4fbH0AG06se4th/_buildManifest.js +0 -1
  221. package/.next/static/chunks/9867-1b73c62e8b604095.js +0 -260
  222. package/.next/static/chunks/app/api/agent/new/route-ebf7ae60150d40d4.js +0 -1
  223. package/.next/static/chunks/app/api/agent/running/events/route-ebf7ae60150d40d4.js +0 -1
  224. package/.next/static/chunks/app/api/agent/running/route-ebf7ae60150d40d4.js +0 -1
  225. package/.next/static/chunks/app/api/agent/runtime/route-ebf7ae60150d40d4.js +0 -1
  226. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-ebf7ae60150d40d4.js +0 -1
  227. package/.next/static/chunks/app/api/apps/route-ebf7ae60150d40d4.js +0 -1
  228. package/.next/static/chunks/app/api/auth/all-providers/route-ebf7ae60150d40d4.js +0 -1
  229. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-ebf7ae60150d40d4.js +0 -1
  230. package/.next/static/chunks/app/api/auth/login/[provider]/route-ebf7ae60150d40d4.js +0 -1
  231. package/.next/static/chunks/app/api/auth/login/route-ebf7ae60150d40d4.js +0 -1
  232. package/.next/static/chunks/app/api/auth/logout/[provider]/route-ebf7ae60150d40d4.js +0 -1
  233. package/.next/static/chunks/app/api/auth/providers/route-ebf7ae60150d40d4.js +0 -1
  234. package/.next/static/chunks/app/api/auth/status/route-ebf7ae60150d40d4.js +0 -1
  235. package/.next/static/chunks/app/api/auth/totp/route-ebf7ae60150d40d4.js +0 -1
  236. package/.next/static/chunks/app/api/debug-models/route-ebf7ae60150d40d4.js +0 -1
  237. package/.next/static/chunks/app/api/default-cwd/route-ebf7ae60150d40d4.js +0 -1
  238. package/.next/static/chunks/app/api/file-index/route-ebf7ae60150d40d4.js +0 -1
  239. package/.next/static/chunks/app/api/file-tree/delete/route-ebf7ae60150d40d4.js +0 -1
  240. package/.next/static/chunks/app/api/file-tree/mkdir/route-ebf7ae60150d40d4.js +0 -1
  241. package/.next/static/chunks/app/api/file-tree/rename/route-ebf7ae60150d40d4.js +0 -1
  242. package/.next/static/chunks/app/api/file-tree/reveal/route-ebf7ae60150d40d4.js +0 -1
  243. package/.next/static/chunks/app/api/file-tree/write/route-ebf7ae60150d40d4.js +0 -1
  244. package/.next/static/chunks/app/api/file-watch/route-ebf7ae60150d40d4.js +0 -1
  245. package/.next/static/chunks/app/api/files/[...path]/route-ebf7ae60150d40d4.js +0 -1
  246. package/.next/static/chunks/app/api/harness/route-ebf7ae60150d40d4.js +0 -1
  247. package/.next/static/chunks/app/api/home/route-ebf7ae60150d40d4.js +0 -1
  248. package/.next/static/chunks/app/api/im/cancel/route-ebf7ae60150d40d4.js +0 -1
  249. package/.next/static/chunks/app/api/im/gateway-status/route-ebf7ae60150d40d4.js +0 -1
  250. package/.next/static/chunks/app/api/im/project/route-ebf7ae60150d40d4.js +0 -1
  251. package/.next/static/chunks/app/api/im/projects/route-ebf7ae60150d40d4.js +0 -1
  252. package/.next/static/chunks/app/api/im/session-ids/route-ebf7ae60150d40d4.js +0 -1
  253. package/.next/static/chunks/app/api/im/turn/route-ebf7ae60150d40d4.js +0 -1
  254. package/.next/static/chunks/app/api/images/upload/route-ebf7ae60150d40d4.js +0 -1
  255. package/.next/static/chunks/app/api/internal/runtime/route-ebf7ae60150d40d4.js +0 -1
  256. package/.next/static/chunks/app/api/memory/dismiss/route-ebf7ae60150d40d4.js +0 -1
  257. package/.next/static/chunks/app/api/memory/promote/route-ebf7ae60150d40d4.js +0 -1
  258. package/.next/static/chunks/app/api/models/route-ebf7ae60150d40d4.js +0 -1
  259. package/.next/static/chunks/app/api/models-config/discover/route-ebf7ae60150d40d4.js +0 -1
  260. package/.next/static/chunks/app/api/models-config/route-ebf7ae60150d40d4.js +0 -1
  261. package/.next/static/chunks/app/api/models-config/test/route-ebf7ae60150d40d4.js +0 -1
  262. package/.next/static/chunks/app/api/plot-kernels/route-ebf7ae60150d40d4.js +0 -1
  263. package/.next/static/chunks/app/api/plot-kernels/save/route-ebf7ae60150d40d4.js +0 -1
  264. package/.next/static/chunks/app/api/plot-kernels/status/route-ebf7ae60150d40d4.js +0 -1
  265. package/.next/static/chunks/app/api/plot-kernels/stop/route-ebf7ae60150d40d4.js +0 -1
  266. package/.next/static/chunks/app/api/plugins/route-ebf7ae60150d40d4.js +0 -1
  267. package/.next/static/chunks/app/api/project-trust/route-ebf7ae60150d40d4.js +0 -1
  268. package/.next/static/chunks/app/api/projects/browse/route-ebf7ae60150d40d4.js +0 -1
  269. package/.next/static/chunks/app/api/projects/route-ebf7ae60150d40d4.js +0 -1
  270. package/.next/static/chunks/app/api/search/route-ebf7ae60150d40d4.js +0 -1
  271. package/.next/static/chunks/app/api/session-index/events/route-ebf7ae60150d40d4.js +0 -1
  272. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-ebf7ae60150d40d4.js +0 -1
  273. package/.next/static/chunks/app/api/sessions/[id]/context/route-ebf7ae60150d40d4.js +0 -1
  274. package/.next/static/chunks/app/api/sessions/[id]/export/route-ebf7ae60150d40d4.js +0 -1
  275. package/.next/static/chunks/app/api/sessions/[id]/media/route-ebf7ae60150d40d4.js +0 -1
  276. package/.next/static/chunks/app/api/sessions/[id]/route-ebf7ae60150d40d4.js +0 -1
  277. package/.next/static/chunks/app/api/sessions/[id]/shadowed/route-ebf7ae60150d40d4.js +0 -1
  278. package/.next/static/chunks/app/api/sessions/new/route-ebf7ae60150d40d4.js +0 -1
  279. package/.next/static/chunks/app/api/sessions/route-ebf7ae60150d40d4.js +0 -1
  280. package/.next/static/chunks/app/api/settings/route-ebf7ae60150d40d4.js +0 -1
  281. package/.next/static/chunks/app/api/skills/check/route-ebf7ae60150d40d4.js +0 -1
  282. package/.next/static/chunks/app/api/skills/install/route-ebf7ae60150d40d4.js +0 -1
  283. package/.next/static/chunks/app/api/skills/route-ebf7ae60150d40d4.js +0 -1
  284. package/.next/static/chunks/app/api/skills/search/route-ebf7ae60150d40d4.js +0 -1
  285. package/.next/static/chunks/app/api/skills/update/route-ebf7ae60150d40d4.js +0 -1
  286. package/.next/static/chunks/app/api/smoke/prompt-admission/route-ebf7ae60150d40d4.js +0 -1
  287. package/.next/static/chunks/app/api/soul/route-ebf7ae60150d40d4.js +0 -1
  288. package/.next/static/chunks/app/api/subagents/status/route-ebf7ae60150d40d4.js +0 -1
  289. package/.next/static/chunks/app/api/version/route-ebf7ae60150d40d4.js +0 -1
  290. package/.next/static/chunks/app/favicon.ico/route-ebf7ae60150d40d4.js +0 -1
  291. package/.next/static/chunks/app/page-339e73a418b1be89.js +0 -22
  292. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ebf7ae60150d40d4.js +0 -1
  293. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ebf7ae60150d40d4.js +0 -1
  294. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ebf7ae60150d40d4.js +0 -1
  295. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ebf7ae60150d40d4.js +0 -1
  296. /package/.next/static/{7W2hkrr4fbH0AG06se4th → MHc4xkUiwo0WjuBfXFXEz}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2444],{54833:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>Y});var i=o(95155),r=o(12115),s=o(25618),n=o(76577),a=o(8391),d=o(99867),l=o(99670),c=o(31775),m=o(30259),p=o(49006),x=o(18678),u=o(99947),g=o(28093),h=o(17689),f=o(63161),k=o(53308),v=o(6750),w=o(96793);let b="/tmp/annovibe-smoke",y=`${b}/README.smoke.md`,j="/Volumes/data/github/seqyuan/annovibe",D=`${j}/smoke/report.md`,S=Date.UTC(2026,5,6,6,26,0);function C(e=0){return S+6e4*e}let E="data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22360%22%20viewBox%3D%220%200%20640%20360%22%3E%3Crect%20width%3D%22640%22%20height%3D%22360%22%20rx%3D%2224%22%20fill%3D%22%23f3f4f6%22%2F%3E%3Crect%20x%3D%2232%22%20y%3D%2232%22%20width%3D%22576%22%20height%3D%22296%22%20rx%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23d1d5db%22%2F%3E%3Ccircle%20cx%3D%22132%22%20cy%3D%22140%22%20r%3D%2256%22%20fill%3D%22%2360a5fa%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%2296%22%20width%3D%22272%22%20height%3D%2220%22%20rx%3D%2210%22%20fill%3D%22%23111827%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22132%22%20width%3D%22208%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%236b7280%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22162%22%20width%3D%22168%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%239ca3af%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22214%22%20width%3D%22128%22%20height%3D%2236%22%20rx%3D%2210%22%20fill%3D%22%232563eb%22%2F%3E%3Ctext%20x%3D%22280%22%20y%3D%22237%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2216%22%20text-anchor%3D%22middle%22%20fill%3D%22%23ffffff%22%3EAlpha%3C%2Ftext%3E%3C%2Fsvg%3E",T=`
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2444],{54833:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>Y});var i=o(95155),r=o(12115),s=o(25618),n=o(76577),a=o(8391),d=o(99867),l=o(99670),c=o(31775),m=o(56264),p=o(49006),x=o(18678),u=o(99947),g=o(28093),h=o(17689),f=o(63161),k=o(53308),v=o(6750),w=o(96793);let b="/tmp/annovibe-smoke",y=`${b}/README.smoke.md`,j="/Volumes/data/github/seqyuan/annovibe",D=`${j}/smoke/report.md`,S=Date.UTC(2026,5,6,6,26,0);function C(e=0){return S+6e4*e}let E="data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22360%22%20viewBox%3D%220%200%20640%20360%22%3E%3Crect%20width%3D%22640%22%20height%3D%22360%22%20rx%3D%2224%22%20fill%3D%22%23f3f4f6%22%2F%3E%3Crect%20x%3D%2232%22%20y%3D%2232%22%20width%3D%22576%22%20height%3D%22296%22%20rx%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23d1d5db%22%2F%3E%3Ccircle%20cx%3D%22132%22%20cy%3D%22140%22%20r%3D%2256%22%20fill%3D%22%2360a5fa%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%2296%22%20width%3D%22272%22%20height%3D%2220%22%20rx%3D%2210%22%20fill%3D%22%23111827%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22132%22%20width%3D%22208%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%236b7280%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22162%22%20width%3D%22168%22%20height%3D%2216%22%20rx%3D%228%22%20fill%3D%22%239ca3af%22%2F%3E%3Crect%20x%3D%22216%22%20y%3D%22214%22%20width%3D%22128%22%20height%3D%2236%22%20rx%3D%2210%22%20fill%3D%22%232563eb%22%2F%3E%3Ctext%20x%3D%22280%22%20y%3D%22237%22%20font-family%3D%22Arial%2C%20sans-serif%22%20font-size%3D%2216%22%20text-anchor%3D%22middle%22%20fill%3D%22%23ffffff%22%3EAlpha%3C%2Ftext%3E%3C%2Fsvg%3E",T=`
2
2
  # Generative UI Smoke
3
3
 
4
4
  Inline code: \`const answer = 42\`
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[21,64,186,222,394,552,976,1004,1097,1327,1541,1900,1921,1938,1960,2007,2053,2138,2234,2314,2469,2752,2835,2922,2929,2976,3230,3374,3502,3679,3785,3851,3955,4037,4368,4494,4813,4896,5177,5218,5221,5907,5987,6202,6442,6450,6709,6710,6780,6819,6849,6919,6988,7035,7067,7070,7253,7473,7483,7505,7758,7778,7812,7851,8167,8197,8658,8743,8933,9043,9156,9240,9579,9742,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[21,64,186,222,394,552,976,1004,1097,1327,1541,1900,1921,1938,1960,2007,2053,2138,2234,2314,2469,2752,2835,2922,2929,2976,3230,3374,3502,3679,3785,3851,3955,4037,4368,4494,4813,4896,5177,5218,5221,5907,5987,6202,6442,6450,6709,6710,6780,6819,6849,6919,6988,7035,7067,7070,7253,7473,7483,7505,7758,7778,7812,7851,8167,8197,8658,8743,8933,9043,9156,9240,9579,9742,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[21,64,186,222,394,552,976,1004,1097,1327,1541,1900,1921,1938,1960,2007,2053,2138,2234,2314,2469,2752,2835,2922,2929,2976,3230,3374,3502,3679,3785,3851,3955,4037,4368,4494,4813,4896,5177,5218,5221,5907,5987,6202,6442,6450,6709,6710,6780,6819,6849,6919,6988,7035,7067,7070,7253,7473,7483,7505,7758,7778,7812,7851,8167,8197,8658,8743,8933,9043,9156,9240,9579,9742,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[21,64,186,222,394,552,976,1004,1097,1327,1541,1900,1921,1938,1960,2007,2053,2138,2234,2314,2469,2752,2835,2922,2929,2976,3230,3374,3502,3679,3785,3851,3955,4037,4368,4494,4813,4896,5177,5218,5221,5907,5987,6202,6442,6450,6709,6710,6780,6819,6849,6919,6988,7035,7067,7070,7253,7473,7483,7505,7758,7778,7812,7851,8167,8197,8658,8743,8933,9043,9156,9240,9579,9742,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
package/README.md CHANGED
@@ -40,7 +40,7 @@ ANNOVIBE_PASSWORD=xxx annovibe # 环境变量设置密码
40
40
  - **密码保护** — 可选密码认证(bcrypt 哈希),类似 Jupyter。`annovibe passwd` 管理。
41
41
  - **会话浏览器** — 按工作目录分组展示所有 pi 会话
42
42
  - **实时对话** — 通过 SSE 流式输出与智能体实时交互
43
- - **会话分叉** — 从任意用户消息创建独立的新会话分支
43
+ - **会话分叉** — 从任意用户消息创建独立的新会话分支(需确认;长会话自动 fork 默认关闭,可在 Settings → Sessions 打开)
44
44
  - **会话内分支** — 回退到任意节点继续对话,在同一文件内创建分支
45
45
  - **分支导航器** — 可视化切换同一会话内的各个分支
46
46
  - **模型切换** — 对话中途随时切换模型
@@ -60,24 +60,51 @@ ANNOVIBE_PASSWORD=xxx annovibe # 环境变量设置密码
60
60
  - **模型配置** — 从智能体数据目录下的 `models.json` 读取可用模型,可在侧边栏的「Models」面板中编辑。
61
61
  - **文件浏览** — 侧边栏内置文件浏览器,可在标签页中查看和编辑当前工作目录下的文件。所有文件读写/删除/重命名接口只允许访问已注册项目、会话 cwd、`~/pi-cwd-*` 以及手动选择的目录,并会解析 symlink;它不是通用文件系统浏览器。
62
62
  - **项目信任** — 仓库内的 `.pi/extensions`、项目 settings 与 `.agents/skills` 默认不执行。打开此类项目时输入框上方会出现 Trust 提示,信任决定与 `pi` CLI 共享(`~/.pi/agent/trust.json`)。
63
- - **远程访问** — 默认只监听 localhost。绑定到 LAN 或自定义域名时,除密码外还会校验 Host/Origin;自定义域名需加入 `ANNOVIBE_ALLOWED_HOSTS`(逗号分隔)或使用 `--hostname` 启动。
63
+ - **远程访问** — 默认只监听 localhost。绑定到 LAN 或自定义域名时,除密码外还会校验 Host/Origin;自定义域名需加入 `ANNOVIBE_ALLOWED_HOSTS`(逗号分隔)或使用 `--hostname` 启动。若前面有 HTTPS 反向代理,设置 `ANNOVIBE_HTTPS=1`(或保证代理发送 `x-forwarded-proto: https`),登录 Cookie 才会带上 `Secure`。
64
64
  - **密码存储** — `~/.pi/agent/web-auth.json`,忘记密码可删除此文件重新设置。
65
65
  - **全局上下文** — `~/.pi/agent/soul.md`(全局 persona / 语气 / 工作风格)、`~/.pi/agent/harness.md`(行为约束)首次启动自动 seed。
66
66
 
67
+ ## 技术栈与安全
68
+
69
+ - 运行时:Node.js 22、Next.js `16.4.3`、React 19
70
+ - 智能体:pi SDK `1.4.0`
71
+ - 依赖审计:`npm audit` 0 vulnerabilities
72
+ - 安全模型(API 凭据、文件边界、项目信任、Host/Origin)见
73
+ [`docs/adr/0004-api-credentials.md`](docs/adr/0004-api-credentials.md) 与 [`AGENTS.md`](AGENTS.md)
74
+
67
75
  ## 开发
68
76
 
69
77
  ```bash
70
78
  npm install
71
79
  npm run dev # 端口 30141
72
80
  npm test # Node 内置 runner:lib/**/*.test.mjs
81
+ npm run lint
82
+ ```
83
+
84
+ 浏览器冒烟(必须用生产构建,dev 模式在无头 Chromium 下不水合):
85
+
86
+ ```bash
87
+ npm run build
88
+ PI_CODING_AGENT_DIR=/tmp/ui-test node_modules/.bin/next start -p 31234 &
89
+ scripts/ui-fixture.sh
90
+ npm run smoke:ui # 33 项检查
91
+ npm run test:api # 26 项凭据/写边界/分页断言(自己起临时实例)
92
+
93
+ # 会话规模(分页 / 冷启动)
94
+ scripts/ui-fixture.sh --many 300 && UI_SMOKE_MANY=1 npm run smoke:ui
95
+ npm run bench:sessions -- --agent-dir /tmp/ui-test --cwd /tmp/ui-test/cwd-a --cold
73
96
  ```
74
97
 
98
+ CI 会在 PR 与 main push 上跑 typecheck、单测、lint、构建与浏览器冒烟
99
+ (`.github/workflows/release-preflight.yml`)。
100
+
75
101
  - 日常开发不要运行 `npm run build` 或 `next build`;这只用于发布前验证。
76
102
  - `npm run dev` 使用开发态 `.next`,此时 `npm run pack:check` 失败是预期行为,因为它要求生产构建产物。
77
103
 
78
104
  ## 发布校验
79
105
 
80
- 发布前执行:
106
+ 发布前执行 `tsc`、`npm run lint`、`npm test`、`npm audit`(应为 0),并在生产构建上跑一遍浏览器冒烟;
107
+ 全部绿后再 bump 版本、打 tag(见 `AGENTS.md` 的 Release Rules)。打包检查:
81
108
 
82
109
  ```bash
83
110
  npm run build
package/next.config.ts CHANGED
@@ -10,6 +10,31 @@ const nextConfig: NextConfig = {
10
10
  env: {
11
11
  NEXT_PUBLIC_APP_VERSION: version,
12
12
  },
13
+ /**
14
+ * Baseline security headers. Deliberately CSP-lite: widgets are srcdoc
15
+ * iframes that inherit the parent CSP, and their own meta CSP allows inline
16
+ * scripts plus four CDNs, while Next injects an inline `beforeInteractive`
17
+ * theme bootstrap. A nonce/strict-dynamic `script-src` would break every
18
+ * widget and the theme, so only the directives that are safe here are set.
19
+ * See ADR-0004 (accepted risk).
20
+ */
21
+ async headers() {
22
+ return [
23
+ {
24
+ source: "/:path*",
25
+ headers: [
26
+ { key: "X-Content-Type-Options", value: "nosniff" },
27
+ { key: "Referrer-Policy", value: "no-referrer" },
28
+ { key: "X-Frame-Options", value: "SAMEORIGIN" },
29
+ { key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=()" },
30
+ {
31
+ key: "Content-Security-Policy",
32
+ value: "base-uri 'none'; object-src 'none'; frame-ancestors 'self'; form-action 'self'",
33
+ },
34
+ ],
35
+ },
36
+ ];
37
+ },
13
38
  };
14
39
 
15
40
  export default nextConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seqyuan/annovibe",
3
- "version": "0.8.144",
3
+ "version": "0.8.146",
4
4
  "description": "AI-native bioinformatics workspace by Annoroad",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -30,6 +30,9 @@
30
30
  "lint": "eslint .",
31
31
  "pack:check": "node scripts/check-npm-pack.mjs",
32
32
  "smoke:generative-ui": "python3 scripts/smoke_generative_ui.py",
33
+ "smoke:ui": "node scripts/ui-smoke.mjs",
34
+ "test:api": "node scripts/api-smoke.mjs",
35
+ "bench:sessions": "node scripts/bench-sessions.mjs",
33
36
  "prepublishOnly": "node scripts/check-npm-pack.mjs",
34
37
  "test": "node --experimental-strip-types --test \"lib/**/*.test.mjs\""
35
38
  },
@@ -84,6 +87,7 @@
84
87
  "jszip": "^3.10.1",
85
88
  "mermaid": "^11.15.0",
86
89
  "pdfjs-dist": "^5.7.284",
90
+ "playwright": "^1.64.1",
87
91
  "postcss": "^8",
88
92
  "react-markdown": "^10.1.0",
89
93
  "remark-gfm": "^4.0.1",
@@ -1 +0,0 @@
1
- (()=>{var a={};a.id=9626,a.ids=[9626],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")},26048:(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/plot-kernels/save/route",pathname:"/api/plot-kernels/save",filename:"route",bundlePath:"app/api/plot-kernels/save/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/annovibe/annovibe/app/api/plot-kernels/save/route.ts",nextConfigOutput:"",userland:()=>c(63325),...{}}),{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/plot-kernels/save/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)}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{"use strict";a.exports=require("node:child_process")},33873:a=>{"use strict";a.exports=require("path")},39773:(a,b,c)=>{"use strict";c.d(b,{X:()=>g,w:()=>f});var d=c(55511);let e=new Map;function f(a){let b=(0,d.randomUUID)().replace(/-/g,"").slice(0,24);return e.set(b,{...a,token:b,expiresAt:Date.now()+18e5}),b}function g(a){let b=e.get(a);return b?Date.now()>b.expiresAt?(e.delete(a),null):b:null}setInterval(()=>{let a=Date.now();for(let[b,c]of e)a>c.expiresAt&&e.delete(b)},3e5)},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{"use strict";a.exports=require("node:os")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53571:(a,b,c)=>{"use strict";c.d(b,{Q:()=>f});var d=c(23211),e=c(74177);function f(a,b){let c=b.status??500,f=`[api] ${b.context} failed (${c}): ${(0,e.m)(a)}`;c>=500?console.error(f,a instanceof Error?a.stack??"":""):console.warn(f);let{error:g,detail:h}=(0,e.c)(a,{status:c,expose:b.expose,verbose:"1"===process.env.ANNOVIBE_VERBOSE_ERRORS});return d.NextResponse.json({error:g,...b.code?{code:b.code}:{},...h?{detail:h}:{},...b.extra},{status:c,...b.headers?{headers:b.headers}:{}})}},55511:a=>{"use strict";a.exports=require("crypto")},57975:a=>{"use strict";a.exports=require("node:util")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63325:(a,b,c)=>{"use strict";c.r(b),c.d(b,{POST:()=>i,dynamic:()=>h});var d=c(23211),e=c(15193),f=c(39773),g=c(53571);let h="force-dynamic";async function i(a){try{let{replayToken:b,format:c,dpi:g,width:h,height:i}=await a.json();if(!b)return d.NextResponse.json({error:"replayToken required"},{status:400});let j=(0,f.X)(b);if(!j)return d.NextResponse.json({error:"Save session expired. Re-render the plot."},{status:410});let k=await (0,e.n6)();if(!k.save)return d.NextResponse.json({error:"kernel-lite-core does not support save"},{status:501});let l=await k.save({scriptPath:j.scriptPath,outputDir:j.outputDir,language:j.language,format:"png"===c||"svg"===c?c:"pdf",dpi:"number"==typeof g&&Number.isFinite(g)&&g>=72&&g<=1200?g:300,width:"number"==typeof h&&Number.isFinite(h)&&h>=100?h:800,height:"number"==typeof i&&Number.isFinite(i)&&i>=100?i:600});return d.NextResponse.json({ok:!0,savedPath:l.savedPath,artifacts:l.artifacts})}catch(a){return(0,g.Q)(a,{context:"POST /api/plot-kernels/save"})}}},73024:a=>{"use strict";a.exports=require("node:fs")},74177:(a,b,c)=>{"use strict";c.d(b,{c:()=>f,m:()=>e});let d={400:"Request could not be processed",401:"Authentication required",403:"Request was rejected",404:"Not found",405:"Method not allowed",409:"Request conflicts with the current state",413:"Payload too large",415:"Unsupported media type",422:"Request could not be processed",429:"Too many requests"};function e(a){if(a instanceof Error)return a.message||a.name;if("string"==typeof a)return a;try{return JSON.stringify(a)??String(a)}catch{return String(a)}}function f(a,b){let c=e(a),f=d[b.status]??(b.status>=500?"Internal server error":"Request failed"),g=b.expose?c:f;return b.verbose&&c&&c!==g?{error:g,detail:c}:{error:g}}},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},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,5193],()=>b(b.s=26048));module.exports=c})();
@@ -1 +0,0 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/plot-kernels/save/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/annovibe/annovibe/app/api/plot-kernels/save/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:65,errorRate:1e-4,numBits:1247,numHashes:14,bitArray:[0,0,0,0,1,1,0,0,1,0,1,1,0,1,1,1,1,1,1,1,0,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,1,1,0,1,0,0,1,0,1,1,1,1,0,0,1,0,1,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,1,1,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,1,0,1,1,1,0,1,0,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,1,0,1,0,1,0,1,1,1,0,1,0,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0,1,1,1,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,0,1,0,0,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,0,0,0,1,0,1,1,0,1,0,0,1,0,1,1,1,0,1,0,1,0,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0,1,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,1,1,0,1,0,0,1,1,0,0,0,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,1,1,0]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[0,1,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,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,1,0,1,1,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,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();