@seqyuan/annovibe 0.8.21 → 0.8.23

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 (207) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +8 -5
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/react-loadable-manifest.json +1 -1
  6. package/.next/required-server-files.js +1 -1
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/routes-manifest.json +21 -0
  9. package/.next/server/app/_global-error/page.js +3 -3
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/.next/server/app/_not-found/page.js +2 -2
  20. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/_not-found.html +1 -1
  22. package/.next/server/app/_not-found.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  28. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  29. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  30. package/.next/server/app/api/agent/[id]/route.js +1 -1
  31. package/.next/server/app/api/agent/new/route.js +1 -1
  32. package/.next/server/app/api/apps/[id]/[[...path]]/route.js +3 -0
  33. package/.next/server/app/api/apps/[id]/[[...path]]/route.js.nft.json +1 -0
  34. package/.next/server/app/api/apps/[id]/[[...path]]/route_client-reference-manifest.js +1 -0
  35. package/.next/server/app/api/apps/route.js +3 -0
  36. package/.next/server/app/api/apps/route.js.nft.json +1 -0
  37. package/.next/server/app/api/apps/route_client-reference-manifest.js +1 -0
  38. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  39. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  40. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  41. package/.next/server/app/api/auth/login/route.js +1 -1
  42. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  43. package/.next/server/app/api/auth/providers/route.js +1 -1
  44. package/.next/server/app/api/auth/status/route.js +1 -1
  45. package/.next/server/app/api/default-cwd/route.js +1 -1
  46. package/.next/server/app/api/files/[...path]/route.js +1 -1
  47. package/.next/server/app/api/harness/route.js +1 -1
  48. package/.next/server/app/api/home/route.js +1 -1
  49. package/.next/server/app/api/internal/runtime/route.js +1 -1
  50. package/.next/server/app/api/models/route.js +1 -1
  51. package/.next/server/app/api/models-config/discover/route.js +1 -1
  52. package/.next/server/app/api/models-config/route.js +1 -1
  53. package/.next/server/app/api/models-config/test/route.js +1 -1
  54. package/.next/server/app/api/plot-kernels/route.js +1 -1
  55. package/.next/server/app/api/plot-kernels/status/route.js +1 -1
  56. package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
  57. package/.next/server/app/api/projects/browse/route.js +1 -1
  58. package/.next/server/app/api/projects/route.js +2 -2
  59. package/.next/server/app/api/reports/[id]/route.js +2 -2
  60. package/.next/server/app/api/search/route.js +1 -1
  61. package/.next/server/app/api/sessions/[id]/context/route.js +2 -2
  62. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  63. package/.next/server/app/api/sessions/new/route.js +1 -1
  64. package/.next/server/app/api/sessions/route.js +2 -2
  65. package/.next/server/app/api/settings/route.js +1 -1
  66. package/.next/server/app/api/skills/install/route.js +2 -2
  67. package/.next/server/app/api/skills/route.js +2 -2
  68. package/.next/server/app/api/skills/search/route.js +1 -1
  69. package/.next/server/app/api/soul/route.js +1 -1
  70. package/.next/server/app/api/subagents/status/route.js +1 -0
  71. package/.next/server/app/api/subagents/status/route.js.nft.json +1 -0
  72. package/.next/server/app/api/subagents/status/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/version/route.js +1 -1
  74. package/.next/server/app/favicon.ico/route.js +1 -1
  75. package/.next/server/app/icon.svg/route.js +1 -1
  76. package/.next/server/app/index.html +1 -1
  77. package/.next/server/app/index.rsc +2 -2
  78. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  79. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  80. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/login/page.js +2 -2
  84. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  85. package/.next/server/app/login.html +1 -1
  86. package/.next/server/app/login.rsc +1 -1
  87. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  88. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  90. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  91. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  93. package/.next/server/app/page.js +12 -12
  94. package/.next/server/app/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app-paths-manifest.json +8 -5
  96. package/.next/server/chunks/5193.js +5 -5
  97. package/.next/server/chunks/7601.js +4 -6
  98. package/.next/server/chunks/8065.js +1 -1
  99. package/.next/server/middleware-build-manifest.js +1 -1
  100. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  101. package/.next/server/pages/404.html +1 -1
  102. package/.next/server/pages/500.html +1 -1
  103. package/.next/server/server-reference-manifest.json +1 -1
  104. package/.next/static/TFhJ1NtMURrrsapy9bEy4/_buildManifest.js +1 -0
  105. package/.next/static/chunks/8451.e941fba0bcfa554a.js +1 -0
  106. package/.next/static/chunks/app/_global-error/page-2d502c8f690e51a2.js +1 -0
  107. package/.next/static/chunks/app/api/agent/[id]/events/route-2d502c8f690e51a2.js +1 -0
  108. package/.next/static/chunks/app/api/agent/[id]/route-2d502c8f690e51a2.js +1 -0
  109. package/.next/static/chunks/app/api/agent/new/route-2d502c8f690e51a2.js +1 -0
  110. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-2d502c8f690e51a2.js +1 -0
  111. package/.next/static/chunks/app/api/apps/route-2d502c8f690e51a2.js +1 -0
  112. package/.next/static/chunks/app/api/auth/all-providers/route-2d502c8f690e51a2.js +1 -0
  113. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-2d502c8f690e51a2.js +1 -0
  114. package/.next/static/chunks/app/api/auth/login/[provider]/route-2d502c8f690e51a2.js +1 -0
  115. package/.next/static/chunks/app/api/auth/login/route-2d502c8f690e51a2.js +1 -0
  116. package/.next/static/chunks/app/api/auth/logout/[provider]/route-2d502c8f690e51a2.js +1 -0
  117. package/.next/static/chunks/app/api/auth/providers/route-2d502c8f690e51a2.js +1 -0
  118. package/.next/static/chunks/app/api/auth/status/route-2d502c8f690e51a2.js +1 -0
  119. package/.next/static/chunks/app/api/default-cwd/route-2d502c8f690e51a2.js +1 -0
  120. package/.next/static/chunks/app/api/files/[...path]/route-2d502c8f690e51a2.js +1 -0
  121. package/.next/static/chunks/app/api/harness/route-2d502c8f690e51a2.js +1 -0
  122. package/.next/static/chunks/app/api/home/route-2d502c8f690e51a2.js +1 -0
  123. package/.next/static/chunks/app/api/internal/runtime/route-2d502c8f690e51a2.js +1 -0
  124. package/.next/static/chunks/app/api/models/route-2d502c8f690e51a2.js +1 -0
  125. package/.next/static/chunks/app/api/models-config/discover/route-2d502c8f690e51a2.js +1 -0
  126. package/.next/static/chunks/app/api/models-config/route-2d502c8f690e51a2.js +1 -0
  127. package/.next/static/chunks/app/api/models-config/test/route-2d502c8f690e51a2.js +1 -0
  128. package/.next/static/chunks/app/api/plot-kernels/route-2d502c8f690e51a2.js +1 -0
  129. package/.next/static/chunks/app/api/plot-kernels/status/route-2d502c8f690e51a2.js +1 -0
  130. package/.next/static/chunks/app/api/plot-kernels/stop/route-2d502c8f690e51a2.js +1 -0
  131. package/.next/static/chunks/app/api/projects/browse/route-2d502c8f690e51a2.js +1 -0
  132. package/.next/static/chunks/app/api/projects/route-2d502c8f690e51a2.js +1 -0
  133. package/.next/static/chunks/app/api/reports/[id]/route-2d502c8f690e51a2.js +1 -0
  134. package/.next/static/chunks/app/api/search/route-2d502c8f690e51a2.js +1 -0
  135. package/.next/static/chunks/app/api/sessions/[id]/context/route-2d502c8f690e51a2.js +1 -0
  136. package/.next/static/chunks/app/api/sessions/[id]/route-2d502c8f690e51a2.js +1 -0
  137. package/.next/static/chunks/app/api/sessions/new/route-2d502c8f690e51a2.js +1 -0
  138. package/.next/static/chunks/app/api/sessions/route-2d502c8f690e51a2.js +1 -0
  139. package/.next/static/chunks/app/api/settings/route-2d502c8f690e51a2.js +1 -0
  140. package/.next/static/chunks/app/api/skills/install/route-2d502c8f690e51a2.js +1 -0
  141. package/.next/static/chunks/app/api/skills/route-2d502c8f690e51a2.js +1 -0
  142. package/.next/static/chunks/app/api/skills/search/route-2d502c8f690e51a2.js +1 -0
  143. package/.next/static/chunks/app/api/soul/route-2d502c8f690e51a2.js +1 -0
  144. package/.next/static/chunks/app/api/subagents/status/route-2d502c8f690e51a2.js +1 -0
  145. package/.next/static/chunks/app/api/version/route-2d502c8f690e51a2.js +1 -0
  146. package/.next/static/chunks/app/favicon.ico/route-2d502c8f690e51a2.js +1 -0
  147. package/.next/static/chunks/app/page-c63ff970773f1496.js +270 -0
  148. package/.next/static/chunks/next/dist/client/components/builtin/app-error-2d502c8f690e51a2.js +1 -0
  149. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-2d502c8f690e51a2.js +1 -0
  150. package/.next/static/chunks/next/dist/client/components/builtin/not-found-2d502c8f690e51a2.js +1 -0
  151. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2d502c8f690e51a2.js +1 -0
  152. package/.next/static/chunks/{webpack-b0025b8b630debd5.js → webpack-4594cd418079ecf1.js} +1 -1
  153. package/.next/trace +75 -75
  154. package/.next/trace-build +1 -1
  155. package/.next/types/app/api/apps/[id]/[[...path]]/route.ts +351 -0
  156. package/.next/types/app/api/apps/route.ts +351 -0
  157. package/.next/types/app/api/subagents/status/route.ts +351 -0
  158. package/.next/types/routes.d.ts +4 -1
  159. package/.next/types/validator.ts +27 -0
  160. package/bin/pi-web.js +44 -16
  161. package/package.json +1 -1
  162. package/.next/static/cRtONXI0SmYC7X_hUWbB6/_buildManifest.js +0 -1
  163. package/.next/static/chunks/8451.542eda09d2171474.js +0 -1
  164. package/.next/static/chunks/app/_global-error/page-96ca1bbedd0412b9.js +0 -1
  165. package/.next/static/chunks/app/api/agent/[id]/events/route-96ca1bbedd0412b9.js +0 -1
  166. package/.next/static/chunks/app/api/agent/[id]/route-96ca1bbedd0412b9.js +0 -1
  167. package/.next/static/chunks/app/api/agent/new/route-96ca1bbedd0412b9.js +0 -1
  168. package/.next/static/chunks/app/api/auth/all-providers/route-96ca1bbedd0412b9.js +0 -1
  169. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-96ca1bbedd0412b9.js +0 -1
  170. package/.next/static/chunks/app/api/auth/login/[provider]/route-96ca1bbedd0412b9.js +0 -1
  171. package/.next/static/chunks/app/api/auth/login/route-96ca1bbedd0412b9.js +0 -1
  172. package/.next/static/chunks/app/api/auth/logout/[provider]/route-96ca1bbedd0412b9.js +0 -1
  173. package/.next/static/chunks/app/api/auth/providers/route-96ca1bbedd0412b9.js +0 -1
  174. package/.next/static/chunks/app/api/auth/status/route-96ca1bbedd0412b9.js +0 -1
  175. package/.next/static/chunks/app/api/default-cwd/route-96ca1bbedd0412b9.js +0 -1
  176. package/.next/static/chunks/app/api/files/[...path]/route-96ca1bbedd0412b9.js +0 -1
  177. package/.next/static/chunks/app/api/harness/route-96ca1bbedd0412b9.js +0 -1
  178. package/.next/static/chunks/app/api/home/route-96ca1bbedd0412b9.js +0 -1
  179. package/.next/static/chunks/app/api/internal/runtime/route-96ca1bbedd0412b9.js +0 -1
  180. package/.next/static/chunks/app/api/models/route-96ca1bbedd0412b9.js +0 -1
  181. package/.next/static/chunks/app/api/models-config/discover/route-96ca1bbedd0412b9.js +0 -1
  182. package/.next/static/chunks/app/api/models-config/route-96ca1bbedd0412b9.js +0 -1
  183. package/.next/static/chunks/app/api/models-config/test/route-96ca1bbedd0412b9.js +0 -1
  184. package/.next/static/chunks/app/api/plot-kernels/route-96ca1bbedd0412b9.js +0 -1
  185. package/.next/static/chunks/app/api/plot-kernels/status/route-96ca1bbedd0412b9.js +0 -1
  186. package/.next/static/chunks/app/api/plot-kernels/stop/route-96ca1bbedd0412b9.js +0 -1
  187. package/.next/static/chunks/app/api/projects/browse/route-96ca1bbedd0412b9.js +0 -1
  188. package/.next/static/chunks/app/api/projects/route-96ca1bbedd0412b9.js +0 -1
  189. package/.next/static/chunks/app/api/reports/[id]/route-96ca1bbedd0412b9.js +0 -1
  190. package/.next/static/chunks/app/api/search/route-96ca1bbedd0412b9.js +0 -1
  191. package/.next/static/chunks/app/api/sessions/[id]/context/route-96ca1bbedd0412b9.js +0 -1
  192. package/.next/static/chunks/app/api/sessions/[id]/route-96ca1bbedd0412b9.js +0 -1
  193. package/.next/static/chunks/app/api/sessions/new/route-96ca1bbedd0412b9.js +0 -1
  194. package/.next/static/chunks/app/api/sessions/route-96ca1bbedd0412b9.js +0 -1
  195. package/.next/static/chunks/app/api/settings/route-96ca1bbedd0412b9.js +0 -1
  196. package/.next/static/chunks/app/api/skills/install/route-96ca1bbedd0412b9.js +0 -1
  197. package/.next/static/chunks/app/api/skills/route-96ca1bbedd0412b9.js +0 -1
  198. package/.next/static/chunks/app/api/skills/search/route-96ca1bbedd0412b9.js +0 -1
  199. package/.next/static/chunks/app/api/soul/route-96ca1bbedd0412b9.js +0 -1
  200. package/.next/static/chunks/app/api/version/route-96ca1bbedd0412b9.js +0 -1
  201. package/.next/static/chunks/app/favicon.ico/route-96ca1bbedd0412b9.js +0 -1
  202. package/.next/static/chunks/app/page-ce49972e39aa5d99.js +0 -270
  203. package/.next/static/chunks/next/dist/client/components/builtin/app-error-96ca1bbedd0412b9.js +0 -1
  204. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-96ca1bbedd0412b9.js +0 -1
  205. package/.next/static/chunks/next/dist/client/components/builtin/not-found-96ca1bbedd0412b9.js +0 -1
  206. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-96ca1bbedd0412b9.js +0 -1
  207. /package/.next/static/{cRtONXI0SmYC7X_hUWbB6 → TFhJ1NtMURrrsapy9bEy4}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"28447","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"62960":{"*":{"id":"99386","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Noto_Sans_Mono\",\"arguments\":[{\"subsets\":[\"latin\",\"cyrillic\"],\"variable\":\"--font-noto-mono\",\"display\":\"swap\"}],\"variableName\":\"notoSansMono\"}":{"id":83683,"name":"*","chunks":["7177","static/chunks/app/layout-9130ab8441517a56.js"],"async":false},"/home/runner/work/annovibe/annovibe/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9130ab8441517a56.js"],"async":false},"/home/runner/work/annovibe/annovibe/app/login/page.tsx":{"id":42309,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/components/AppShell.tsx":{"id":62960,"name":"*","chunks":["6079","static/chunks/363642f4-043c1475ab9af70e.js","8771","static/chunks/8771-3e14b6810486df1f.js","8974","static/chunks/app/page-ce49972e39aa5d99.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/annovibe/annovibe/":[],"/home/runner/work/annovibe/annovibe/app/layout":[{"inlined":false,"path":"static/css/8026433d69e690e2.css"}],"/home/runner/work/annovibe/annovibe/app/page":[]},"rscModuleMapping":{"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"69613","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"62960":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"30054":{"*":{"id":"13832","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"28447","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Noto_Sans_Mono\",\"arguments\":[{\"subsets\":[\"latin\",\"cyrillic\"],\"variable\":\"--font-noto-mono\",\"display\":\"swap\"}],\"variableName\":\"notoSansMono\"}":{"id":83683,"name":"*","chunks":["7177","static/chunks/app/layout-9130ab8441517a56.js"],"async":false},"/home/runner/work/annovibe/annovibe/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9130ab8441517a56.js"],"async":false},"/home/runner/work/annovibe/annovibe/app/login/page.tsx":{"id":42309,"name":"*","chunks":[],"async":false},"/home/runner/work/annovibe/annovibe/components/AppShell.tsx":{"id":30054,"name":"*","chunks":["6079","static/chunks/363642f4-043c1475ab9af70e.js","8771","static/chunks/8771-3e14b6810486df1f.js","8974","static/chunks/app/page-c63ff970773f1496.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/annovibe/annovibe/":[],"/home/runner/work/annovibe/annovibe/app/layout":[{"inlined":false,"path":"static/css/8026433d69e690e2.css"}],"/home/runner/work/annovibe/annovibe/app/page":[]},"rscModuleMapping":{"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"30054":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"69613","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -20,25 +20,28 @@
20
20
  "/favicon.ico/route": "app/favicon.ico/route.js",
21
21
  "/icon.svg/route": "app/icon.svg/route.js",
22
22
  "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
23
+ "/api/apps/route": "app/api/apps/route.js",
24
+ "/api/apps/[id]/[[...path]]/route": "app/api/apps/[id]/[[...path]]/route.js",
23
25
  "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
24
26
  "/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
25
- "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
26
27
  "/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
27
28
  "/api/auth/providers/route": "app/api/auth/providers/route.js",
28
29
  "/api/internal/runtime/route": "app/api/internal/runtime/route.js",
29
- "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
30
+ "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
30
31
  "/api/models-config/route": "app/api/models-config/route.js",
31
32
  "/api/models-config/test/route": "app/api/models-config/test/route.js",
32
- "/api/models/route": "app/api/models/route.js",
33
+ "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
33
34
  "/api/plot-kernels/route": "app/api/plot-kernels/route.js",
34
35
  "/api/plot-kernels/status/route": "app/api/plot-kernels/status/route.js",
35
36
  "/api/plot-kernels/stop/route": "app/api/plot-kernels/stop/route.js",
36
37
  "/api/reports/[id]/route": "app/api/reports/[id]/route.js",
37
- "/api/skills/install/route": "app/api/skills/install/route.js",
38
38
  "/api/settings/route": "app/api/settings/route.js",
39
39
  "/api/skills/route": "app/api/skills/route.js",
40
40
  "/api/skills/search/route": "app/api/skills/search/route.js",
41
+ "/api/subagents/status/route": "app/api/subagents/status/route.js",
41
42
  "/api/version/route": "app/api/version/route.js",
42
43
  "/login/page": "app/login/page.js",
43
- "/page": "app/page.js"
44
+ "/page": "app/page.js",
45
+ "/api/models/route": "app/api/models/route.js",
46
+ "/api/skills/install/route": "app/api/skills/install/route.js"
44
47
  }
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=5193,exports.ids=[5193],exports.modules={15193:(a,b,c)=>{c.d(b,{n6:()=>S,G_:()=>w,WM:()=>y,tE:()=>x,RJ:()=>z,rD:()=>ac,Ql:()=>$,Wm:()=>ab});var d=c(73024),e=c(76760);function f(a,b,c){let d=e.relative(a,b);if(d.startsWith("..")||e.isAbsolute(d))throw Error(c)}function g(a,...b){let c=e.resolve(a,...b);return f(e.resolve(a),c,"Path escapes archive root"),c}function h(a,b){let c=e.resolve(a),d=e.resolve(b);return f(c,d,"Path escapes archive root"),e.relative(c,d).split(e.sep).join("/")}function i(a,b){let c=a.normalize("NFKD").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,96);return c.length>0?c:b}function j(a){return e.resolve(a,".pi","kernel-lite")}async function k(a){await d.promises.mkdir(a,{recursive:!0});let b=await d.promises.lstat(a);if(b.isSymbolicLink()||!b.isDirectory())throw Error(`Archive path is not a real directory: ${a}`)}async function l(a){let b=e.resolve(a.cwd),c=e.resolve(a.archiveRoot??j(a.cwd));f(b,c,"Archive root must stay inside cwd");let h=i(a.ownerId,"owner"),l=i(a.runId,"run");if(l!==a.runId)throw Error("Invalid run id");let m=g(c,"sessions",h,"runs",l),n=g(m,"artifacts"),o=g(m,"r"===a.language?"script.R":"script.py"),p=g(m,"stdout.txt"),q=g(m,"stderr.txt"),r=g(m,"manifest.json");await k(n);let[s,t]=await Promise.all([d.promises.realpath(b),d.promises.realpath(c)]);return f(s,t,"Archive root must stay inside cwd"),await d.promises.writeFile(o,a.code,{encoding:"utf8",flag:"wx",mode:384}),{archiveRoot:c,ownerId:a.ownerId,safeOwnerId:h,runId:l,runDir:m,scriptPath:o,stdoutPath:p,stderrPath:q,outputDir:n,manifestPath:r}}async function m(a){await Promise.all([d.promises.writeFile(a.stdoutPath,a.stdout,{encoding:"utf8",flag:"w",mode:384}),d.promises.writeFile(a.stderrPath,a.stderr,{encoding:"utf8",flag:"w",mode:384})])}async function n(a){let b={schema:"kernel-plot.run.v1",runId:a.archive.runId,ownerId:a.archive.ownerId,language:a.language,runtime:a.runtime,status:a.status,title:a.title,scriptPath:a.archive.scriptPath,stdoutPath:a.archive.stdoutPath,stderrPath:a.archive.stderrPath,outputDir:a.archive.outputDir,artifacts:a.artifacts,stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode,error:a.error,cancelled:a.cancelled,timedOut:a.timedOut,createdAt:a.createdAt,completedAt:a.completedAt};return await d.promises.writeFile(a.archive.manifestPath,`${JSON.stringify(b,null,2)}
1
+ "use strict";exports.id=5193,exports.ids=[5193],exports.modules={15193:(a,b,c)=>{c.d(b,{n6:()=>S,sE:()=>B,G_:()=>w,WM:()=>y,EO:()=>U,tE:()=>x,RJ:()=>z,rD:()=>ae,Ql:()=>aa,Wm:()=>ad});var d=c(73024),e=c(76760);function f(a,b,c){let d=e.relative(a,b);if(d.startsWith("..")||e.isAbsolute(d))throw Error(c)}function g(a,...b){let c=e.resolve(a,...b);return f(e.resolve(a),c,"Path escapes archive root"),c}function h(a,b){let c=e.resolve(a),d=e.resolve(b);return f(c,d,"Path escapes archive root"),e.relative(c,d).split(e.sep).join("/")}function i(a,b){let c=a.normalize("NFKD").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,96);return c.length>0?c:b}function j(a){return e.resolve(a,".pi","kernel-lite")}async function k(a){await d.promises.mkdir(a,{recursive:!0});let b=await d.promises.lstat(a);if(b.isSymbolicLink()||!b.isDirectory())throw Error(`Archive path is not a real directory: ${a}`)}async function l(a){let b=e.resolve(a.cwd),c=e.resolve(a.archiveRoot??j(a.cwd));f(b,c,"Archive root must stay inside cwd");let h=i(a.ownerId,"owner"),l=i(a.runId,"run");if(l!==a.runId)throw Error("Invalid run id");let m=g(c,"sessions",h,"runs",l),n=g(m,"artifacts"),o=g(m,"r"===a.language?"script.R":"script.py"),p=g(m,"stdout.txt"),q=g(m,"stderr.txt"),r=g(m,"manifest.json");await k(n);let[s,t]=await Promise.all([d.promises.realpath(b),d.promises.realpath(c)]);return f(s,t,"Archive root must stay inside cwd"),await d.promises.writeFile(o,a.code,{encoding:"utf8",flag:"wx",mode:384}),{archiveRoot:c,ownerId:a.ownerId,safeOwnerId:h,runId:l,runDir:m,scriptPath:o,stdoutPath:p,stderrPath:q,outputDir:n,manifestPath:r}}async function m(a){await Promise.all([d.promises.writeFile(a.stdoutPath,a.stdout,{encoding:"utf8",flag:"w",mode:384}),d.promises.writeFile(a.stderrPath,a.stderr,{encoding:"utf8",flag:"w",mode:384})])}async function n(a){let b={schema:"kernel-plot.run.v1",runId:a.archive.runId,ownerId:a.archive.ownerId,language:a.language,runtime:a.runtime,status:a.status,title:a.title,scriptPath:a.archive.scriptPath,stdoutPath:a.archive.stdoutPath,stderrPath:a.archive.stderrPath,outputDir:a.archive.outputDir,artifacts:a.artifacts,stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode,error:a.error,cancelled:a.cancelled,timedOut:a.timedOut,createdAt:a.createdAt,completedAt:a.completedAt};return await d.promises.writeFile(a.archive.manifestPath,`${JSON.stringify(b,null,2)}
2
2
  `,{encoding:"utf8",flag:"w",mode:384}),b}async function o(a){let b=g(e.resolve(a.archiveRoot??j(a.cwd)),"sessions",i(a.ownerId,"owner"),"runs"),c=await d.promises.readdir(b,{withFileTypes:!0}).catch(()=>[]),f=[];for(let a of c){if(!a.isDirectory()||a.isSymbolicLink())continue;let c=g(b,a.name,"manifest.json"),e=await d.promises.readFile(c,"utf8").catch(()=>null);if(e)try{let a=JSON.parse(e);"kernel-plot.run.v1"===a.schema&&f.push(a)}catch{}}return f.sort((a,b)=>b.completedAt.localeCompare(a.completedAt,"en"))}let p=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".html",".htm",".pdf",".txt",".tsv",".csv",".json",".jsonl",".md",".parquet",".feather",".rds",".rda",".h5",".h5ad",".xlsx"]);async function q(a){if(a.depth>8)return[];let b=await d.promises.readdir(a.currentDir,{withFileTypes:!0}).catch(()=>[]),c=[];for(let f of b){if(c.length>=a.maxArtifactsPerRun)break;let b=e.join(a.currentDir,f.name);if(f.isSymbolicLink())continue;if(f.isDirectory()){c.push(...await q({...a,currentDir:b,depth:a.depth+1,maxArtifactsPerRun:a.maxArtifactsPerRun-c.length}));continue}if(!f.isFile())continue;let g=e.extname(f.name).toLowerCase();if(!p.has(g))continue;let i=await d.promises.lstat(b);i.isSymbolicLink()||!i.isFile()||i.size>a.maxArtifactBytes||c.push({path:b,relativePath:h(a.outputDir,b),archivePath:h(a.archiveRoot,b),name:f.name,mimeType:function(a){switch(a.toLowerCase()){case".png":return"image/png";case".jpg":case".jpeg":return"image/jpeg";case".gif":return"image/gif";case".webp":return"image/webp";case".svg":return"image/svg+xml";case".html":case".htm":return"text/html; charset=utf-8";case".pdf":return"application/pdf";case".txt":case".md":return"text/plain; charset=utf-8";case".csv":return"text/csv; charset=utf-8";case".tsv":return"text/tab-separated-values; charset=utf-8";case".json":case".jsonl":return"application/json; charset=utf-8";case".parquet":return"application/vnd.apache.parquet";case".feather":return"application/vnd.apache.arrow.file";case".rds":case".rda":return"application/x-r-data";case".h5":case".h5ad":return"application/x-hdf5";case".xlsx":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";default:return"application/octet-stream"}}(g),kind:function(a){let b=a.toLowerCase();return[".png",".jpg",".jpeg",".gif",".webp",".svg"].includes(b)?"image":[".html",".htm"].includes(b)?"html":[".pdf",".xlsx"].includes(b)?"document":[".txt",".md"].includes(b)?"text":[".csv",".tsv",".json",".jsonl",".parquet",".feather",".rds",".rda",".h5",".h5ad"].includes(b)?"data":"other"}(g),size:i.size})}return c}async function r(a){let b=await d.promises.lstat(a.outputDir).catch(()=>null);return!b||b.isSymbolicLink()||!b.isDirectory()?[]:(await q({...a,currentDir:a.outputDir,depth:0})).sort((a,b)=>a.archivePath.localeCompare(b.archivePath,"en"))}var s=c(48161),t=c(51455);function u(){return(0,e.join)((0,s.homedir)(),".config","warmplot.json")}function v(a){return(0,e.join)(a,".pi","warmplot.json")}async function w(){let a=u();try{let b=await (0,t.readFile)(a,"utf-8"),c=JSON.parse(b);return"1.0"!==c.version&&console.warn(`Config version mismatch: expected 1.0, got ${c.version}`),c}catch(a){return"ENOENT"===a.code||console.warn("Failed to load global config, using defaults:",a),{version:"1.0",kernels:{"default-python":{language:"python",command:"python3",args:["-u"],displayName:"Python 3 (System)",env:{}},"default-r":{language:"r",command:"R",args:["--slave","--vanilla"],displayName:"R (System)",env:{}}},defaultKernel:{python:"default-python",r:"default-r"},scanCache:{lastScan:new Date().toISOString(),scannedKernels:["default-python","default-r"]}}}}async function x(a){let b=u(),c=(0,e.join)((0,s.homedir)(),".config");try{await (0,t.mkdir)(c,{recursive:!0}),await (0,t.writeFile)(b,JSON.stringify(a,null,2),"utf-8")}catch(a){throw Error(`Failed to save global config: ${a instanceof Error?a.message:String(a)}`)}}async function y(a){let b=v(a);try{let a=await (0,t.readFile)(b,"utf-8"),c=JSON.parse(a);return"1.0"!==c.version&&console.warn(`Project config version mismatch: expected 1.0, got ${c.version}`),c}catch(a){return"ENOENT"===a.code||console.warn("Failed to load project config:",a),null}}async function z(a,b){let c=v(a),d=(0,e.join)(a,".pi");try{await (0,t.mkdir)(d,{recursive:!0}),await (0,t.writeFile)(c,JSON.stringify(b,null,2),"utf-8")}catch(a){throw Error(`Failed to save project config: ${a instanceof Error?a.message:String(a)}`)}}var A=c(77598);let B={enabled:!0,defaultRuntime:"kernel-lite",timeoutMs:6e4,idleTimeoutMs:9e5,maxLogChars:2e5,maxArtifactBytes:262144e3,maxArtifactsPerRun:200,pythonCommand:"python3",pythonArgs:[],rCommand:"R",rArgs:["--slave","--vanilla"],rscriptCommand:"Rscript",rscriptArgs:[]};var C=c(31421);function D(a,b){return a.length<=b?a:`${a.slice(0,b)}
3
3
  [Warmplot truncated log at ${b} characters]`}function E(a,b){return{...process.env,...b,WARMPLOT_OUTPUT_DIR:a,PI_KERNEL_PLOT_OUTPUT_DIR:a,OPENANNO_PLOT_OUTPUT_DIR:a}}function F(a,b){a.kill("SIGTERM"),setTimeout(()=>{b()||a.kill("SIGKILL")},1500).unref()}class G{activeRuns=new Map;register(a){let b=new AbortController,c={...a,abortController:b};return this.activeRuns.set(a.runId,c),{signal:b.signal,unregister:()=>{this.activeRuns.get(a.runId)===c&&this.activeRuns.delete(a.runId)}}}cancel(a,b="Plot run cancelled"){let c=this.activeRuns.get(a);return!!c&&(c.abortController.abort(b),!0)}isActive(a){return this.activeRuns.has(a)}count(){return this.activeRuns.size}}function H(a,b,c){if("r"===b)return{command:a.rCommand,args:a.rArgs};if(!c)throw Error("Python kernel driver required");return{command:a.pythonCommand,args:[...a.pythonArgs,"-u","-c",c]}}let I="WARMPLOT_KERNEL_RESPONSE ",J=String.raw`
4
4
  import contextlib
@@ -67,7 +67,7 @@ ${Object.entries(f).map(([a,b])=>` ${a} = ${M(b)}`).join(`,
67
67
  ))`,' sink(.warmplot_run_stdout, type = "output")',' sink(.warmplot_run_stderr, type = "message")',` source(${M(a.scriptPath)}, local = .GlobalEnv, echo = FALSE)`,"}, error = function(e) {",' .warmplot_run_status <<- "error"'," .warmplot_run_error <<- conditionMessage(e)"," message(conditionMessage(e))","}, finally = {",' while (sink.number(type = "output") > .warmplot_old_output_sinks) sink(type = "output")',' while (sink.number(type = "message") > .warmplot_old_message_sinks) sink(type = "message")'," try(setwd(.warmplot_old_wd), silent = TRUE)"," try(close(.warmplot_run_stdout), silent = TRUE)"," try(close(.warmplot_run_stderr), silent = TRUE)","})",`cat(${M(`${L}${a.id} `)}, .warmplot_run_status, "\\n", sep = "")`,"flush.console()",""].join(`
68
68
  `),{encoding:"utf8",flag:"wx",mode:384}),new Promise(f=>{this.pending={id:a.id,resolve:async a=>{let[g,h]=await Promise.all([d.promises.readFile(b,"utf8").catch(()=>""),d.promises.readFile(c,"utf8").catch(()=>"")]);await Promise.all([d.promises.rm(b,{force:!0}),d.promises.rm(c,{force:!0}),d.promises.rm(e,{force:!0})]),f({...a,stdout:D(g,this.policy.maxLogChars),stderr:D(h||a.stderr,this.policy.maxLogChars),error:a.error??(0===a.exitCode?null:D(h,this.policy.maxLogChars).trim()||"R plot kernel execution failed")})}},this.process.stdin.write(`source(${M(e)}, local = .GlobalEnv)
69
69
  `,a=>{a&&this.failPending(a.message)})})}async shutdown(){this.stopped=!0,this.process.stdin.write(`quit(save = "no", status = 0)
70
- `,()=>{}),this.process.kill("SIGTERM"),setTimeout(()=>{this.process.killed||this.process.kill("SIGKILL")},1500).unref(),this.failPending("R plot kernel stopped")}handleStdout(a){this.stdoutBuffer+=a;let b=this.stdoutBuffer.split(/\r?\n/);for(let a of(this.stdoutBuffer=b.pop()??"",b)){if(!a.startsWith(L))continue;let[,b,c]=a.match(/^WARMPLOT_KERNEL_RESPONSE\s+(\S+)\s+(\S+)/)??[],d=this.pending;d&&b===d.id&&(this.pending=null,d.resolve({stdout:"",stderr:"",exitCode:+("ok"!==c),timedOut:!1,cancelled:!1,error:null}))}}failPending(a){let b=this.pending;b&&(this.pending=null,b.resolve({stdout:"",stderr:this.stderr,exitCode:null,timedOut:!1,cancelled:!1,error:a}))}}class O{driver;idleTimeoutMs;onIdle;tail=Promise.resolve();idleTimer=null;constructor(a,b,c){this.driver=a,this.idleTimeoutMs=b,this.onIdle=c}execute(a){this.clearIdleTimer();let b=this.tail.then(()=>this.driver.execute(a));return this.tail=b.catch(()=>{}).finally(()=>this.armIdleTimer()),b}async shutdown(){this.clearIdleTimer(),await this.driver.shutdown()}armIdleTimer(){this.clearIdleTimer(),this.idleTimer=setTimeout(()=>{this.onIdle()},this.idleTimeoutMs),this.idleTimer.unref()}clearIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}}class P{policy;kernels=new Map;constructor(a){this.policy=a}execute(a){let b=this.createRuntimeKey(a.ownerId,a.language),c=this.getOrCreateKernel({key:b,language:a.language,cwd:a.run.cwd});return this.executeWithTimeout({key:b,kernel:c,run:a.run})}async stopSession(a){let b=a.language?[a.language]:["python","r"];await Promise.all(b.map(b=>this.stopKernelByKey(this.createRuntimeKey(a.ownerId,b))))}async dispose(){await Promise.all([...this.kernels.keys()].map(a=>this.stopKernelByKey(a)))}getActiveKernelCount(){return this.kernels.size}createRuntimeKey(a,b){return`${a}:${b}`}getOrCreateKernel(a){var b;let c=this.kernels.get(a.key);if(c)return c;let d=new O("r"===(b={language:a.language,cwd:a.cwd,policy:this.policy}).language?new N(b.cwd,b.policy):new K(b.cwd,b.policy),this.policy.idleTimeoutMs,()=>{this.stopKernelByKey(a.key)});return this.kernels.set(a.key,d),d}async stopKernelByKey(a){let b=this.kernels.get(a);b&&(this.kernels.delete(a),await b.shutdown())}executeWithTimeout(a){let b=null;return new Promise(c=>{let d=!1,e=()=>{d||(d=!0,b&&clearTimeout(b),this.stopKernelByKey(a.key),c({stdout:"",stderr:"",exitCode:null,timedOut:!1,cancelled:!0,error:"Plot run cancelled"}))};((b=setTimeout(()=>{d||(d=!0,a.run.signal?.removeEventListener("abort",e),this.stopKernelByKey(a.key),c({stdout:"",stderr:"",exitCode:null,timedOut:!0,cancelled:!1,error:`Plot kernel timed out after ${Math.round(a.run.timeoutMs/1e3)}s`}))},a.run.timeoutMs)).unref(),a.run.signal?.addEventListener("abort",e,{once:!0}),a.run.signal?.aborted)?e():a.kernel.execute(a.run).then(f=>{d||(d=!0,b&&clearTimeout(b),a.run.signal?.removeEventListener("abort",e),c(f))})})}}async function Q(a){var b,c,d,e;let f=(b=a.policy,c=a.run.language,d=a.run.scriptPath,"r"===c?{command:b.rscriptCommand,args:[...b.rscriptArgs,d]}:{command:b.pythonCommand,args:[...b.pythonArgs,d]});return e={command:f.command,args:f.args,cwd:a.run.cwd,env:E(a.run.outputDir,a.run.env),timeoutMs:a.run.timeoutMs,maxLogChars:a.policy.maxLogChars,signal:a.run.signal,label:`${"r"===a.run.language?"R":"Python"} plot worker`},new Promise(a=>{let b="",c="",d=!1,f=!1,g=!1,h=(0,C.spawn)(e.command,e.args,{cwd:e.cwd,env:e.env,shell:!1,stdio:["ignore","pipe","pipe"]}),i=b=>{d||(d=!0,clearTimeout(j),e.signal?.removeEventListener("abort",k),a(b))},j=setTimeout(()=>{f=!0,F(h,()=>d)},e.timeoutMs);j.unref();let k=()=>{d||(g=!0,F(h,()=>d))};e.signal?.addEventListener("abort",k,{once:!0}),e.signal?.aborted&&k(),h.stdout.on("data",a=>{b=D(`${b}${a.toString("utf8")}`,e.maxLogChars)}),h.stderr.on("data",a=>{c=D(`${c}${a.toString("utf8")}`,e.maxLogChars)}),h.on("error",a=>{i({stdout:b,stderr:c,exitCode:null,timedOut:f,cancelled:g,error:a.message})}),h.on("close",(a,d)=>{let h=g?`${e.label} cancelled`:null,j=f?`${e.label} timed out after ${Math.round(e.timeoutMs/1e3)}s`:null,k=!d||j||h?null:`${e.label} exited via signal ${d}`,l="number"==typeof a&&0!==a?`${e.label} exited with code ${a}`:null;i({stdout:b,stderr:c,exitCode:g||f?null:a,timedOut:f,cancelled:g,error:h??j??k??l})})})}class R{policy;runController=new G;kernelRuntime;constructor(a={}){this.policy=function(a){return{...B,...a,pythonArgs:a?.pythonArgs??B.pythonArgs,rArgs:a?.rArgs??B.rArgs,rscriptArgs:a?.rscriptArgs??B.rscriptArgs}}(a.policy),this.kernelRuntime=new P(this.policy)}async run(a){let b;if(!this.policy.enabled)throw Error("Kernel plotting is disabled");var c,d,e,f=a.language;if("python"!==f&&"r"!==f)throw Error("language must be python or r");let g=a.runtime??this.policy.defaultRuntime;if(function(a){if("kernel-lite"!==a&&"worker"!==a)throw Error("runtime must be kernel-lite or worker")}(g),"string"!=typeof a.code||0===a.code.length)throw Error("code required");let h=(0,A.randomUUID)().replace(/-/g,"").slice(0,16),i=new Date().toISOString(),j=await l({cwd:a.cwd,archiveRoot:a.archiveRoot,ownerId:a.ownerId,runId:h,language:a.language,code:a.code}),k=this.runController.register({runId:h,ownerId:a.ownerId,language:a.language,runtime:g}),o=function(a,b){if(!a)return b;if(!b)return a;let c=new AbortController,d=()=>{c.signal.aborted||c.abort(a.reason??b.reason)};return a.addEventListener("abort",d,{once:!0}),b.addEventListener("abort",d,{once:!0}),(a.aborted||b.aborted)&&d(),c.signal}(a.signal,k.signal);try{let c={id:h,language:a.language,code:a.code,cwd:a.cwd,outputDir:j.outputDir,scriptPath:j.scriptPath,stdoutPath:j.stdoutPath,stderrPath:j.stderrPath,timeoutMs:a.timeoutMs??this.policy.timeoutMs,env:a.env??{},signal:o};b="worker"===g?await Q({run:c,policy:this.policy}):await this.kernelRuntime.execute({ownerId:a.ownerId,language:a.language,run:c})}catch(e){let d=e instanceof Error?e.message:"Plot run failed";b={stdout:"",stderr:"",exitCode:null,timedOut:!1,cancelled:!1,error:(c=Error(d)).message.includes("ENOENT")||c.message.includes("not found")?`Missing ${"r"===a.language?"R":"Python"} runtime`:d}}finally{k.unregister()}await m({stdoutPath:j.stdoutPath,stderrPath:j.stderrPath,stdout:b.stdout,stderr:b.stderr});let p=await r({archiveRoot:j.archiveRoot,outputDir:j.outputDir,maxArtifactBytes:this.policy.maxArtifactBytes,maxArtifactsPerRun:this.policy.maxArtifactsPerRun}),q=(d=b).cancelled?"cancelled":d.timedOut?"timed_out":0!==d.exitCode||d.error?"failed":"succeeded",s=new Date().toISOString();return{runId:(e=await n({archive:j,language:a.language,runtime:g,status:q,title:a.title,stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode,error:b.error,cancelled:b.cancelled,timedOut:b.timedOut,artifacts:p,createdAt:i,completedAt:s})).runId,ownerId:e.ownerId,language:e.language,runtime:e.runtime,status:e.status,title:e.title,stdout:e.stdout,stderr:e.stderr,exitCode:e.exitCode,error:e.error,cancelled:e.cancelled,timedOut:e.timedOut,scriptPath:e.scriptPath,stdoutPath:e.stdoutPath,stderrPath:e.stderrPath,outputDir:e.outputDir,artifacts:e.artifacts,createdAt:e.createdAt,completedAt:e.completedAt}}async stopSession(a){await this.kernelRuntime.stopSession(a)}async cancelRun(a,b){return this.runController.cancel(a,b)}async listArtifacts(a){return(await o(a)).flatMap(a=>a.artifacts).slice(0,a.limit??100)}async dispose(){await this.kernelRuntime.dispose()}getActiveRunCount(){return this.runController.count()}getActiveKernelCount(){return this.kernelRuntime.getActiveKernelCount()}}function S(a){return new R(a)}let T=(0,c(57975).promisify)(C.exec);async function U(a){try{return await (0,t.access)(a,t.constants.X_OK),!0}catch{return!1}}async function V(){let a=[],b=[];try{let{stdout:b}=await T("conda env list");for(let c of b.split(`
71
- `)){if(c.startsWith("#")||!c.trim())continue;let b=c.trim().split(/\s+/);if(b.length<2)continue;let d=b[0],f=b[b.length-1],g=(0,e.join)(f,"bin","python");await U(g)&&a.push({language:"python",command:g,args:["-u"],displayName:`Python 3 (Conda ${d})`,env:{CONDA_DEFAULT_ENV:d}})}}catch(a){b.push(`Conda scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function W(a){let b=[];for(let c of[".venv","venv","env"])try{let d=(0,e.join)(a,c,"bin","python");if(await U(d)){let c=(0,e.basename)(a);b.push({language:"python",command:d,args:["-u"],displayName:`Python 3 (Venv ${c})`,env:{}})}}catch{}return{kernels:b,errors:[]}}async function X(){let a=[],b=[];try{let{stdout:b}=await T("pyenv versions --bare");for(let c of b.trim().split(`
72
- `)){if(!c.trim())continue;let b=(0,e.join)(process.env.HOME||"~",".pyenv","versions",c,"bin","python");await U(b)&&a.push({language:"python",command:b,args:["-u"],displayName:`Python ${c} (Pyenv)`,env:{}})}}catch(a){b.push(`Pyenv scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function Y(){let a=[],b=[];try{let{stdout:b}=await T("poetry env list --full-path");for(let c of b.trim().split(`
73
- `)){let b=c.split(" ")[0];if(!b)continue;let d=(0,e.join)(b,"bin","python");if(await U(d)){let c=(0,e.basename)(b);a.push({language:"python",command:d,args:["-u"],displayName:`Python 3 (Poetry ${c})`,env:{}})}}}catch(a){b.push(`Poetry scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function Z(){let a=[],b=[];try{let{stdout:b}=await T("which python3"),c=b.trim();if(c&&await U(c))try{let{stdout:b}=await T(`${c} --version`),d=b.trim().replace("Python ","");a.push({language:"python",command:"python3",args:["-u"],displayName:`Python ${d} (System)`,env:{}})}catch{a.push({language:"python",command:"python3",args:["-u"],displayName:"Python 3 (System)",env:{}})}}catch(a){b.push(`System Python scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function $(a){let b=[],c=[],d=[V(),X(),Y(),Z()];for(let{kernels:e,errors:f}of(a&&d.push(W(a)),await Promise.all(d)))b.push(...e),c.push(...f);return{newKernels:b,errors:c}}async function _(){let a=[],b=[];try{let{stdout:b}=await T("which R"),c=b.trim();if(c&&await U(c))try{let{stdout:b}=await T("R --version | head -1"),c=b.match(/R version ([\d.]+)/),d=c?c[1]:"";a.push({language:"r",command:"R",args:["--slave","--vanilla"],displayName:d?`R ${d} (System)`:"R (System)",env:{}})}catch{a.push({language:"r",command:"R",args:["--slave","--vanilla"],displayName:"R (System)",env:{}})}}catch(a){b.push(`System R scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function aa(a){let b=[];try{let c=(0,e.join)(a,"renv"),d=(0,e.join)(a,"renv.lock"),f=await U(c).catch(()=>!1),g=await (0,t.access)(d).then(()=>!0).catch(()=>!1);if(f||g){let c=(0,e.basename)(a);b.push({language:"r",command:"R",args:["--slave","--vanilla"],displayName:`R (Renv ${c})`,env:{RENV_PROJECT:a}})}}catch{}return{kernels:b,errors:[]}}async function ab(a){let b=[],c=[],d=[_()];for(let{kernels:e,errors:f}of(a&&d.push(aa(a)),await Promise.all(d)))b.push(...e),c.push(...f);return{newKernels:b,errors:c}}async function ac(a){let b=await $(a),c=await ab(a);return{newKernels:[...b.newKernels,...c.newKernels],errors:[...b.errors,...c.errors]}}}};
70
+ `,()=>{}),this.process.kill("SIGTERM"),setTimeout(()=>{this.process.killed||this.process.kill("SIGKILL")},1500).unref(),this.failPending("R plot kernel stopped")}handleStdout(a){this.stdoutBuffer+=a;let b=this.stdoutBuffer.split(/\r?\n/);for(let a of(this.stdoutBuffer=b.pop()??"",b)){if(!a.startsWith(L))continue;let[,b,c]=a.match(/^WARMPLOT_KERNEL_RESPONSE\s+(\S+)\s+(\S+)/)??[],d=this.pending;d&&b===d.id&&(this.pending=null,d.resolve({stdout:"",stderr:"",exitCode:+("ok"!==c),timedOut:!1,cancelled:!1,error:null}))}}failPending(a){let b=this.pending;b&&(this.pending=null,b.resolve({stdout:"",stderr:this.stderr,exitCode:null,timedOut:!1,cancelled:!1,error:a}))}}class O{driver;idleTimeoutMs;onIdle;tail=Promise.resolve();idleTimer=null;constructor(a,b,c){this.driver=a,this.idleTimeoutMs=b,this.onIdle=c}execute(a){this.clearIdleTimer();let b=this.tail.then(()=>this.driver.execute(a));return this.tail=b.catch(()=>{}).finally(()=>this.armIdleTimer()),b}async shutdown(){this.clearIdleTimer(),await this.driver.shutdown()}armIdleTimer(){this.clearIdleTimer(),this.idleTimer=setTimeout(()=>{this.onIdle()},this.idleTimeoutMs),this.idleTimer.unref()}clearIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null)}}class P{policy;kernels=new Map;constructor(a){this.policy=a}execute(a){let b=this.createRuntimeKey(a.ownerId,a.language),c=this.getOrCreateKernel({key:b,language:a.language,cwd:a.run.cwd});return this.executeWithTimeout({key:b,kernel:c,run:a.run})}async stopSession(a){let b=a.language?[a.language]:["python","r"];await Promise.all(b.map(b=>this.stopKernelByKey(this.createRuntimeKey(a.ownerId,b))))}async dispose(){await Promise.all([...this.kernels.keys()].map(a=>this.stopKernelByKey(a)))}getActiveKernelCount(){return this.kernels.size}createRuntimeKey(a,b){return`${a}:${b}`}getOrCreateKernel(a){var b;let c=this.kernels.get(a.key);if(c)return c;let d=new O("r"===(b={language:a.language,cwd:a.cwd,policy:this.policy}).language?new N(b.cwd,b.policy):new K(b.cwd,b.policy),this.policy.idleTimeoutMs,()=>{this.stopKernelByKey(a.key)});return this.kernels.set(a.key,d),d}async stopKernelByKey(a){let b=this.kernels.get(a);b&&(this.kernels.delete(a),await b.shutdown())}executeWithTimeout(a){let b=null;return new Promise(c=>{let d=!1,e=()=>{d||(d=!0,b&&clearTimeout(b),this.stopKernelByKey(a.key),c({stdout:"",stderr:"",exitCode:null,timedOut:!1,cancelled:!0,error:"Plot run cancelled"}))};((b=setTimeout(()=>{d||(d=!0,a.run.signal?.removeEventListener("abort",e),this.stopKernelByKey(a.key),c({stdout:"",stderr:"",exitCode:null,timedOut:!0,cancelled:!1,error:`Plot kernel timed out after ${Math.round(a.run.timeoutMs/1e3)}s`}))},a.run.timeoutMs)).unref(),a.run.signal?.addEventListener("abort",e,{once:!0}),a.run.signal?.aborted)?e():a.kernel.execute(a.run).then(f=>{d||(d=!0,b&&clearTimeout(b),a.run.signal?.removeEventListener("abort",e),c(f))})})}}async function Q(a){var b,c,d,e;let f=(b=a.policy,c=a.run.language,d=a.run.scriptPath,"r"===c?{command:b.rscriptCommand,args:[...b.rscriptArgs,d]}:{command:b.pythonCommand,args:[...b.pythonArgs,d]});return e={command:f.command,args:f.args,cwd:a.run.cwd,env:E(a.run.outputDir,a.run.env),timeoutMs:a.run.timeoutMs,maxLogChars:a.policy.maxLogChars,signal:a.run.signal,label:`${"r"===a.run.language?"R":"Python"} plot worker`},new Promise(a=>{let b="",c="",d=!1,f=!1,g=!1,h=(0,C.spawn)(e.command,e.args,{cwd:e.cwd,env:e.env,shell:!1,stdio:["ignore","pipe","pipe"]}),i=b=>{d||(d=!0,clearTimeout(j),e.signal?.removeEventListener("abort",k),a(b))},j=setTimeout(()=>{f=!0,F(h,()=>d)},e.timeoutMs);j.unref();let k=()=>{d||(g=!0,F(h,()=>d))};e.signal?.addEventListener("abort",k,{once:!0}),e.signal?.aborted&&k(),h.stdout.on("data",a=>{b=D(`${b}${a.toString("utf8")}`,e.maxLogChars)}),h.stderr.on("data",a=>{c=D(`${c}${a.toString("utf8")}`,e.maxLogChars)}),h.on("error",a=>{i({stdout:b,stderr:c,exitCode:null,timedOut:f,cancelled:g,error:a.message})}),h.on("close",(a,d)=>{let h=g?`${e.label} cancelled`:null,j=f?`${e.label} timed out after ${Math.round(e.timeoutMs/1e3)}s`:null,k=!d||j||h?null:`${e.label} exited via signal ${d}`,l="number"==typeof a&&0!==a?`${e.label} exited with code ${a}`:null;i({stdout:b,stderr:c,exitCode:g||f?null:a,timedOut:f,cancelled:g,error:h??j??k??l})})})}class R{policy;runController=new G;kernelRuntime;constructor(a={}){this.policy=function(a){return{...B,...a,pythonArgs:a?.pythonArgs??B.pythonArgs,rArgs:a?.rArgs??B.rArgs,rscriptArgs:a?.rscriptArgs??B.rscriptArgs}}(a.policy),this.kernelRuntime=new P(this.policy)}async run(a){let b;if(!this.policy.enabled)throw Error("Kernel plotting is disabled");var c,d,e,f=a.language;if("python"!==f&&"r"!==f)throw Error("language must be python or r");let g=a.runtime??this.policy.defaultRuntime;if(function(a){if("kernel-lite"!==a&&"worker"!==a)throw Error("runtime must be kernel-lite or worker")}(g),"string"!=typeof a.code||0===a.code.length)throw Error("code required");let h=(0,A.randomUUID)().replace(/-/g,"").slice(0,16),i=new Date().toISOString(),j=await l({cwd:a.cwd,archiveRoot:a.archiveRoot,ownerId:a.ownerId,runId:h,language:a.language,code:a.code}),k=this.runController.register({runId:h,ownerId:a.ownerId,language:a.language,runtime:g}),o=function(a,b){if(!a)return b;if(!b)return a;let c=new AbortController,d=()=>{c.signal.aborted||c.abort(a.reason??b.reason)};return a.addEventListener("abort",d,{once:!0}),b.addEventListener("abort",d,{once:!0}),(a.aborted||b.aborted)&&d(),c.signal}(a.signal,k.signal);try{let c={id:h,language:a.language,code:a.code,cwd:a.cwd,outputDir:j.outputDir,scriptPath:j.scriptPath,stdoutPath:j.stdoutPath,stderrPath:j.stderrPath,timeoutMs:a.timeoutMs??this.policy.timeoutMs,env:a.env??{},signal:o};b="worker"===g?await Q({run:c,policy:this.policy}):await this.kernelRuntime.execute({ownerId:a.ownerId,language:a.language,run:c})}catch(e){let d=e instanceof Error?e.message:"Plot run failed";b={stdout:"",stderr:"",exitCode:null,timedOut:!1,cancelled:!1,error:(c=Error(d)).message.includes("ENOENT")||c.message.includes("not found")?`Missing ${"r"===a.language?"R":"Python"} runtime`:d}}finally{k.unregister()}await m({stdoutPath:j.stdoutPath,stderrPath:j.stderrPath,stdout:b.stdout,stderr:b.stderr});let p=await r({archiveRoot:j.archiveRoot,outputDir:j.outputDir,maxArtifactBytes:this.policy.maxArtifactBytes,maxArtifactsPerRun:this.policy.maxArtifactsPerRun}),q=(d=b).cancelled?"cancelled":d.timedOut?"timed_out":0!==d.exitCode||d.error?"failed":"succeeded",s=new Date().toISOString();return{runId:(e=await n({archive:j,language:a.language,runtime:g,status:q,title:a.title,stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode,error:b.error,cancelled:b.cancelled,timedOut:b.timedOut,artifacts:p,createdAt:i,completedAt:s})).runId,ownerId:e.ownerId,language:e.language,runtime:e.runtime,status:e.status,title:e.title,stdout:e.stdout,stderr:e.stderr,exitCode:e.exitCode,error:e.error,cancelled:e.cancelled,timedOut:e.timedOut,scriptPath:e.scriptPath,stdoutPath:e.stdoutPath,stderrPath:e.stderrPath,outputDir:e.outputDir,artifacts:e.artifacts,createdAt:e.createdAt,completedAt:e.completedAt}}async stopSession(a){await this.kernelRuntime.stopSession(a)}async cancelRun(a,b){return this.runController.cancel(a,b)}async listArtifacts(a){return(await o(a)).flatMap(a=>a.artifacts).slice(0,a.limit??100)}async dispose(){await this.kernelRuntime.dispose()}getActiveRunCount(){return this.runController.count()}getActiveKernelCount(){return this.kernelRuntime.getActiveKernelCount()}}function S(a){return new R(a)}function T(a,b){return b.kernels[a]||null}async function U(a){var b,c,d;let e=await w(),f=await y(a.cwd);if(a.sessionKernelId){let b=T(a.sessionKernelId,e);if(b)return{command:b.command,args:b.args,env:b.env,source:"session",kernelId:a.sessionKernelId}}if(f?.selectedKernels[a.language]){let b=f.selectedKernels[a.language],c=T(b,e);if(c)return{command:c.command,args:c.args,env:c.env,source:"project",kernelId:b}}let g=e.defaultKernel[a.language];if(g){let a=T(g,e);if(a)return{command:a.command,args:a.args,env:a.env,source:"global",kernelId:g}}let h="python"===a.language?a.policy.pythonCommand:a.policy.rCommand;return"python3"!==h&&"R"!==h?(b=a.language,c=a.policy,"python"===b?{command:c.pythonCommand,args:c.pythonArgs,env:{},source:"policy"}:{command:c.rCommand,args:c.rArgs,env:{},source:"policy"}):{command:"python"===(d=a.language)?"python3":"R",args:"python"===d?["-u"]:["--slave","--vanilla"],env:{},source:"path"}}let V=(0,c(57975).promisify)(C.exec);async function W(a){try{return await (0,t.access)(a,t.constants.X_OK),!0}catch{return!1}}async function X(){let a=[],b=[];try{let{stdout:b}=await V("conda env list");for(let c of b.split(`
71
+ `)){if(c.startsWith("#")||!c.trim())continue;let b=c.trim().split(/\s+/);if(b.length<2)continue;let d=b[0],f=b[b.length-1],g=(0,e.join)(f,"bin","python");await W(g)&&a.push({language:"python",command:g,args:["-u"],displayName:`Python 3 (Conda ${d})`,env:{CONDA_DEFAULT_ENV:d}})}}catch(a){b.push(`Conda scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function Y(a){let b=[];for(let c of[".venv","venv","env"])try{let d=(0,e.join)(a,c,"bin","python");if(await W(d)){let c=(0,e.basename)(a);b.push({language:"python",command:d,args:["-u"],displayName:`Python 3 (Venv ${c})`,env:{}})}}catch{}return{kernels:b,errors:[]}}async function Z(){let a=[],b=[];try{let{stdout:b}=await V("pyenv versions --bare");for(let c of b.trim().split(`
72
+ `)){if(!c.trim())continue;let b=(0,e.join)(process.env.HOME||"~",".pyenv","versions",c,"bin","python");await W(b)&&a.push({language:"python",command:b,args:["-u"],displayName:`Python ${c} (Pyenv)`,env:{}})}}catch(a){b.push(`Pyenv scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function $(){let a=[],b=[];try{let{stdout:b}=await V("poetry env list --full-path");for(let c of b.trim().split(`
73
+ `)){let b=c.split(" ")[0];if(!b)continue;let d=(0,e.join)(b,"bin","python");if(await W(d)){let c=(0,e.basename)(b);a.push({language:"python",command:d,args:["-u"],displayName:`Python 3 (Poetry ${c})`,env:{}})}}}catch(a){b.push(`Poetry scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function _(){let a=[],b=[];try{let{stdout:b}=await V("which python3"),c=b.trim();if(c&&await W(c))try{let{stdout:b}=await V(`${c} --version`),d=b.trim().replace("Python ","");a.push({language:"python",command:"python3",args:["-u"],displayName:`Python ${d} (System)`,env:{}})}catch{a.push({language:"python",command:"python3",args:["-u"],displayName:"Python 3 (System)",env:{}})}}catch(a){b.push(`System Python scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function aa(a){let b=[],c=[],d=[X(),Z(),$(),_()];for(let{kernels:e,errors:f}of(a&&d.push(Y(a)),await Promise.all(d)))b.push(...e),c.push(...f);return{newKernels:b,errors:c}}async function ab(){let a=[],b=[];try{let{stdout:b}=await V("which R"),c=b.trim();if(c&&await W(c))try{let{stdout:b}=await V("R --version | head -1"),c=b.match(/R version ([\d.]+)/),d=c?c[1]:"";a.push({language:"r",command:"R",args:["--slave","--vanilla"],displayName:d?`R ${d} (System)`:"R (System)",env:{}})}catch{a.push({language:"r",command:"R",args:["--slave","--vanilla"],displayName:"R (System)",env:{}})}}catch(a){b.push(`System R scan failed: ${a instanceof Error?a.message:String(a)}`)}return{kernels:a,errors:b}}async function ac(a){let b=[];try{let c=(0,e.join)(a,"renv"),d=(0,e.join)(a,"renv.lock"),f=await W(c).catch(()=>!1),g=await (0,t.access)(d).then(()=>!0).catch(()=>!1);if(f||g){let c=(0,e.basename)(a);b.push({language:"r",command:"R",args:["--slave","--vanilla"],displayName:`R (Renv ${c})`,env:{RENV_PROJECT:a}})}}catch{}return{kernels:b,errors:[]}}async function ad(a){let b=[],c=[],d=[ab()];for(let{kernels:e,errors:f}of(a&&d.push(ac(a)),await Promise.all(d)))b.push(...e),c.push(...f);return{newKernels:b,errors:c}}async function ae(a){let b=await aa(a),c=await ad(a);return{newKernels:[...b.newKernels,...c.newKernels],errors:[...b.errors,...c.errors]}}}};
@@ -1,7 +1,7 @@
1
1
  exports.id=7601,exports.ids=[7601],exports.modules={3867:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{H:()=>p});var e=c(28802),f=c(75430),g=c(15193),h=c(79748),i=c(9774),j=a([e,f,i]);[e,f,i]=j.then?(await j)():j;let q=["Use kernel_plot_run for iterative R/Python plotting when data should stay in memory across turns.",'Use kernel_plot_run with runtime: "worker" for one-shot reproducible scripts.',"In kernel_plot_run code, save every output under WARMPLOT_OUTPUT_DIR.","Do not rely on notebook display; explicitly save PNG/JPEG/WebP previews plus any SVG, PDF, HTML, CSV, TSV, or JSON files.","When an image artifact is produced, the web chat renders the returned image inline; do not claim images cannot be displayed.","Do not use open, xdg-open, or other desktop viewers to show plots; return or reference the saved preview image path instead.","If a plot also has a PDF/SVG version, include the PNG/JPEG/WebP preview path in the final answer, not only the PDF/SVG path.","After a failed kernel_plot_run, inspect stderr and rerun only the minimal corrected code.","Use kernel_plot_stop when the user is done with a large object or asks to free memory."],r=null,s=null;function k(){let a=(0,i.cV)().plotIdleTimeoutMs;if(r&&s===a)return r;let b=r;return s=a,r=Promise.resolve((0,g.n6)({policy:{idleTimeoutMs:a}})),b?.then(a=>a.dispose()).catch(()=>{}),r}function l(a){return a.sessionManager.getSessionId()}function m(a,b=4e3){let c=a??"";return c.length<=b?c:`${c.slice(0,b)}
2
- [truncated ${c.length-b} chars]`}function n(a){return 0===a.length?["artifacts: none"]:["artifacts:",...a.map(a=>`- ${a.path}`)]}async function o(a){let b=a.find(a=>"image"===a.kind&&("image/png"===a.mimeType||"image/jpeg"===a.mimeType||"image/webp"===a.mimeType));if(b)try{let a=await (0,h.stat)(b.path);if(!a.isFile()||a.size>2097152)return;let c=await (0,h.readFile)(b.path);return{type:"image",data:c.toString("base64"),mimeType:b.mimeType}}catch{return}}function p(a){a.registerTool((0,f.defineTool)({name:"kernel_plot_run",label:"Kernel Plot Run",description:"Execute short R or Python plotting code in a warm kernel-lite runtime or one-shot worker and archive generated artifacts.",promptSnippet:"Run short R/Python plotting code in a warm kernel and save artifacts to disk.",promptGuidelines:q,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")],{description:"Runtime language for the plotting code."}),code:e.Type.String({description:"R or Python code. Save files under WARMPLOT_OUTPUT_DIR or PI_KERNEL_PLOT_OUTPUT_DIR."}),runtime:e.Type.Optional(e.Type.Union([e.Type.Literal("kernel-lite"),e.Type.Literal("worker")],{description:"kernel-lite keeps language state warm; worker runs a one-shot script."})),title:e.Type.Optional(e.Type.String({description:"Short title for the run."})),timeoutMs:e.Type.Optional(e.Type.Number({description:"Execution timeout in milliseconds."}))}),async execute(a,b,c,d,e){let f,g,h,i=await k(),j=await i.run({cwd:e.cwd,ownerId:l(e),language:b.language,runtime:b.runtime,code:b.code,title:b.title,timeoutMs:b.timeoutMs,signal:c}),p=[{type:"text",text:(f=[`kernel_plot_run ${j.status}`,`run_id: ${j.runId}`,`runtime: ${j.runtime}`,`script: ${j.scriptPath}`,`stdout: ${j.stdoutPath}`,`stderr: ${j.stderrPath}`],g=m(j.stdout,1200).trim(),h=m(j.stderr,1200).trim(),g&&f.push("stdout:",g),h&&f.push("stderr:",h),j.error&&f.push(`error: ${j.error}`),f.push(...n(j.artifacts)),f.join("\n"))}],q=await o(j.artifacts);return q&&p.push(q),{content:p,details:{schema:"kernel-plot.result.v1",kind:"run",run:{runId:j.runId,status:j.status,language:j.language,runtime:j.runtime,title:j.title,stdoutPath:j.stdoutPath,stderrPath:j.stderrPath,scriptPath:j.scriptPath,outputDir:j.outputDir,stdoutPreview:m(j.stdout),stderrPreview:m(j.stderr),error:j.error},artifacts:j.artifacts,nextAction:"succeeded"===j.status?"Inspect the artifact paths or continue iterating with kernel_plot_run.":"Inspect stderr and rerun only the minimal corrected code."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Kernel Plot Stop",description:"Stop the current Pi session's warm plotting kernel for one language or all languages.",promptSnippet:"Stop warm R/Python plotting kernels and release their memory.",promptGuidelines:q,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await k(),g=l(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Kernel Plot Artifacts",description:"List recent archived plotting artifacts for the current Pi session.",promptSnippet:"List recent R/Python plotting artifact paths for this session.",promptGuidelines:q,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await k(),g=l(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...n(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await k();await c.stopSession({ownerId:l(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b}}function k(){let a=i(),b=(0,e.existsSync)(a)?a:(0,f.join)((0,g.getAgentDir)(),"pidex-settings.json");if(!(0,e.existsSync)(b))return{...m};try{return j(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return{...m}}}function l(a){let b=j({...k(),...a}),c=i(),d=(0,f.dirname)(c);return(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0}),(0,e.writeFileSync)(c,JSON.stringify(b,null,2),"utf8"),b}d()}catch(a){d(a)}})},9805:(a,b,c)=>{"use strict";c.d(b,{FE:()=>i,J:()=>h,zN:()=>j});let d='<widget-capability>\nYou can create interactive visualizations using the `show-widget` code fence.\n\nUse `show-widget` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.\n\nFor diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.\n\nFormat:\n```show-widget\n{"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}\n```\n\nDetailed specs:\nWhen a `<widget-guidelines>` block is present, follow it. It contains the module-specific design rules for the current request.\n\nRequired rules:\n1. `widget_code` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.\n2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n3. Keep outer backgrounds transparent. The host supplies theme variables.\n4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate `show-widget` fence for each widget.\n5. Streaming order: SVG puts `<defs>` before visible shapes; HTML uses `<style>`, then visible markup, then `<script>` last.\n6. Prefer responsive SVG for static visuals and small HTML widgets for controls.\n7. SVG widgets use `<svg width="100%" viewBox="0 0 680 H">` and keep all content inside the viewBox.\n8. Interactive controls must visibly update the output. For Chart.js, call `chart.update()` after changes.\n9. Clickable drill-down actions call `window.__widgetSendMessage("short request")`.\n10. Cross-widget filters publish with `window.__widgetPublish("topic", { key: "value" })`; other widgets listen for `widget-filter`.\n11. Allowed CDN hosts: `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `unpkg.com`, `esm.sh`.\n12. CDN scripts must use an `onload` initializer plus an `if (window.Lib) init();` fallback.\n13. Use `min-height` instead of fixed outer `height` to prevent clipping.\n14. Title should be human-readable in the user\'s language.\n15. Put explanatory prose outside the code fence.\n16. Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n17. Do not convert Markdown outlines into Mermaid by default. Render them as a `show-widget` diagram unless Mermaid/source text is explicitly requested.\n</widget-capability>',e=/\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g,f=/\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g,g=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;function h(a){let b=a.toLowerCase();return b.includes("show-widget")&&(b.includes("# visualization harness")||b.includes("## when to visualize")||b.includes("widget format"))}function i(a){return a.replace(e,"\n").replace(f,"\n").replace(g,"\n").replace(/\n{3,}/g,"\n\n").trim()}function j(a){return a.includes("<widget-capability>")?a:a.trim()?`${d}
2
+ [truncated ${c.length-b} chars]`}function n(a){return 0===a.length?["artifacts: none"]:["artifacts:",...a.map(a=>`- ${a.path}`)]}async function o(a){let b=a.find(a=>"image"===a.kind&&("image/png"===a.mimeType||"image/jpeg"===a.mimeType||"image/webp"===a.mimeType));if(b)try{let a=await (0,h.stat)(b.path);if(!a.isFile()||a.size>2097152)return;let c=await (0,h.readFile)(b.path);return{type:"image",data:c.toString("base64"),mimeType:b.mimeType}}catch{return}}function p(a){a.registerTool((0,f.defineTool)({name:"kernel_plot_run",label:"Kernel Plot Run",description:"Execute short R or Python plotting code in a warm kernel-lite runtime or one-shot worker and archive generated artifacts.",promptSnippet:"Run short R/Python plotting code in a warm kernel and save artifacts to disk.",promptGuidelines:q,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")],{description:"Runtime language for the plotting code."}),code:e.Type.String({description:"R or Python code. Save files under WARMPLOT_OUTPUT_DIR or PI_KERNEL_PLOT_OUTPUT_DIR."}),runtime:e.Type.Optional(e.Type.Union([e.Type.Literal("kernel-lite"),e.Type.Literal("worker")],{description:"kernel-lite keeps language state warm; worker runs a one-shot script."})),title:e.Type.Optional(e.Type.String({description:"Short title for the run."})),timeoutMs:e.Type.Optional(e.Type.Number({description:"Execution timeout in milliseconds."}))}),async execute(a,b,c,d,e){let f,g,h,i=await k(),j=await i.run({cwd:e.cwd,ownerId:l(e),language:b.language,runtime:b.runtime,code:b.code,title:b.title,timeoutMs:b.timeoutMs,signal:c}),p=[{type:"text",text:(f=[`kernel_plot_run ${j.status}`,`run_id: ${j.runId}`,`runtime: ${j.runtime}`,`script: ${j.scriptPath}`,`stdout: ${j.stdoutPath}`,`stderr: ${j.stderrPath}`],g=m(j.stdout,1200).trim(),h=m(j.stderr,1200).trim(),g&&f.push("stdout:",g),h&&f.push("stderr:",h),j.error&&f.push(`error: ${j.error}`),f.push(...n(j.artifacts)),f.join("\n"))}],q=await o(j.artifacts);return q&&p.push(q),{content:p,details:{schema:"kernel-plot.result.v1",kind:"run",run:{runId:j.runId,status:j.status,language:j.language,runtime:j.runtime,title:j.title,stdoutPath:j.stdoutPath,stderrPath:j.stderrPath,scriptPath:j.scriptPath,outputDir:j.outputDir,stdoutPreview:m(j.stdout),stderrPreview:m(j.stderr),error:j.error},artifacts:j.artifacts,nextAction:"succeeded"===j.status?"Inspect the artifact paths or continue iterating with kernel_plot_run.":"Inspect stderr and rerun only the minimal corrected code."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Kernel Plot Stop",description:"Stop the current Pi session's warm plotting kernel for one language or all languages.",promptSnippet:"Stop warm R/Python plotting kernels and release their memory.",promptGuidelines:q,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await k(),g=l(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Kernel Plot Artifacts",description:"List recent archived plotting artifacts for the current Pi session.",promptSnippet:"List recent R/Python plotting artifact paths for this session.",promptGuidelines:q,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await k(),g=l(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...n(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await k();await c.stopSession({ownerId:l(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},7048:(a,b,c)=>{"use strict";c.d(b,{Y:()=>j});var d=c(29021),e=c(21820),f=c(33873);let g="pi-subagents";function h(a){try{return JSON.parse((0,d.readFileSync)(a,"utf-8"))}catch{return null}}function i(a){return"string"==typeof a?a:a&&"object"==typeof a?"string"==typeof a.source?a.source:"string"==typeof a.name?a.name:"string"==typeof a.package?a.package:null:null}function j(a=process.env.PI_CODING_AGENT_DIR??(0,f.join)((0,e.homedir)(),".pi","agent")){let b=(0,f.join)(a,"npm","node_modules",g),c=(0,f.join)(b,"package.json"),k=h(c),l=(0,d.existsSync)(c),m=h((0,f.join)(a,"settings.json")),n=(Array.isArray(m?.packages)?m.packages:[]).map(i).some(a=>a===g||a===`npm:${g}`||a?.endsWith(`/${g}`));return{installed:l,configured:n,ready:l&&n,packageName:g,packagePath:b,version:"string"==typeof k?.version?k.version:void 0,installCommand:"pi install npm:pi-subagents"}}},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b}}function k(){let a=i(),b=(0,e.existsSync)(a)?a:(0,f.join)((0,g.getAgentDir)(),"pidex-settings.json");if(!(0,e.existsSync)(b))return{...m};try{return j(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return{...m}}}function l(a){let b=j({...k(),...a}),c=i(),d=(0,f.dirname)(c);return(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0}),(0,e.writeFileSync)(c,JSON.stringify(b,null,2),"utf8"),b}d()}catch(a){d(a)}})},9805:(a,b,c)=>{"use strict";c.d(b,{FE:()=>i,J:()=>h,zN:()=>j});let d='<widget-capability>\nYou can create interactive visualizations using the `show-widget` code fence.\n\nUse `show-widget` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.\n\nFor diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.\n\nFormat:\n```show-widget\n{"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}\n```\n\nDetailed specs:\nWhen a `<widget-guidelines>` block is present, follow it. It contains the module-specific design rules for the current request.\n\nRequired rules:\n1. `widget_code` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.\n2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n3. Keep outer backgrounds transparent. The host supplies theme variables.\n4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate `show-widget` fence for each widget.\n5. Streaming order: SVG puts `<defs>` before visible shapes; HTML uses `<style>`, then visible markup, then `<script>` last.\n6. Prefer responsive SVG for static visuals and small HTML widgets for controls.\n7. SVG widgets use `<svg width="100%" viewBox="0 0 680 H">` and keep all content inside the viewBox.\n8. Interactive controls must visibly update the output. For Chart.js, call `chart.update()` after changes.\n9. Clickable drill-down actions call `window.__widgetSendMessage("short request")`.\n10. Cross-widget filters publish with `window.__widgetPublish("topic", { key: "value" })`; other widgets listen for `widget-filter`.\n11. Allowed CDN hosts: `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `unpkg.com`, `esm.sh`.\n12. CDN scripts must use an `onload` initializer plus an `if (window.Lib) init();` fallback.\n13. Use `min-height` instead of fixed outer `height` to prevent clipping.\n14. Title should be human-readable in the user\'s language.\n15. Put explanatory prose outside the code fence.\n16. Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n17. Do not convert Markdown outlines into Mermaid by default. Render them as a `show-widget` diagram unless Mermaid/source text is explicitly requested.\n</widget-capability>',e=/\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g,f=/\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g,g=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;function h(a){let b=a.toLowerCase();return b.includes("show-widget")&&(b.includes("# visualization harness")||b.includes("## when to visualize")||b.includes("widget format"))}function i(a){return a.replace(e,"\n").replace(f,"\n").replace(g,"\n").replace(/\n{3,}/g,"\n\n").trim()}function j(a){return a.includes("<widget-capability>")?a:a.trim()?`${a.trimEnd()}
3
3
 
4
- ${a}`:d}},12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},27348:(a,b,c)=>{"use strict";c.d(b,{WO:()=>B});let d=["interactive","chart","mockup","art","diagram"],e=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g,f="## Core design system\n\n### When to use widgets\n- Use `show-widget` by default when visual output is the primary answer.\n- This includes charts, diagrams, flowcharts, timelines, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, hierarchy views, comparisons, and visual explanations.\n- Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid because widgets stream more reliably in this UI.\n- Put explanatory prose outside the code fence. The fence contains exactly one JSON object.\n\n### Format rules\n- `widget_code` is a JSON string: escape quotes and newlines, close the JSON object, then close the fence.\n- Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n- Keep outer backgrounds transparent. Use host variables: `--bg`, `--bg-panel`, `--bg-hover`, `--bg-selected`, `--border`, `--text`, `--text-muted`, `--text-dim`, `--accent`, `--accent-hover`.\n- CodePilot-compatible variables are also available: `--color-background-primary`, `--color-background-secondary`, `--color-background-tertiary`, `--color-text-primary`, `--color-text-secondary`, `--color-text-tertiary`, `--color-border-tertiary`, `--color-border-secondary`, `--color-border-primary`, `--font-sans`, `--font-mono`.\n- HTML widgets should stream in this order: `<style>`, visible markup, `<script>`. SVG widgets should put `<defs>` before visible shapes.\n- Use `min-height` instead of fixed outer `height`; avoid bottom clipping at chat widths.\n- Use readable text: no font smaller than 11px, no negative letter spacing, no text overlap.\n\n### Visual style\n- The widget should feel native to chat, not like a foreign embed.\n- Use flat, solid fills with clear borders. Avoid decorative gradients, shadows, blur, glow, neon, and busy backgrounds.\n- Use 2-3 color ramps per widget and gray/slate for structure.\n- Prefer the visualization type that best fits the content. Do not default to one type for every request.\n- Title should be human-readable in the user's language.",g=`## Color and layout
4
+ ${d}`:d}},12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},27348:(a,b,c)=>{"use strict";c.d(b,{WO:()=>B});let d=["interactive","chart","mockup","art","diagram"],e=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g,f="## Core design system\n\n### When to use widgets\n- Use `show-widget` by default when visual output is the primary answer.\n- This includes charts, diagrams, flowcharts, timelines, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, hierarchy views, comparisons, and visual explanations.\n- Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid because widgets stream more reliably in this UI.\n- Put explanatory prose outside the code fence. The fence contains exactly one JSON object.\n\n### Format rules\n- `widget_code` is a JSON string: escape quotes and newlines, close the JSON object, then close the fence.\n- Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n- Keep outer backgrounds transparent. Use host variables: `--bg`, `--bg-panel`, `--bg-hover`, `--bg-selected`, `--border`, `--text`, `--text-muted`, `--text-dim`, `--accent`, `--accent-hover`.\n- CodePilot-compatible variables are also available: `--color-background-primary`, `--color-background-secondary`, `--color-background-tertiary`, `--color-text-primary`, `--color-text-secondary`, `--color-text-tertiary`, `--color-border-tertiary`, `--color-border-secondary`, `--color-border-primary`, `--font-sans`, `--font-mono`.\n- HTML widgets should stream in this order: `<style>`, visible markup, `<script>`. SVG widgets should put `<defs>` before visible shapes.\n- Use `min-height` instead of fixed outer `height`; avoid bottom clipping at chat widths.\n- Use readable text: no font smaller than 11px, no negative letter spacing, no text overlap.\n\n### Visual style\n- The widget should feel native to chat, not like a foreign embed.\n- Use flat, solid fills with clear borders. Avoid decorative gradients, shadows, blur, glow, neon, and busy backgrounds.\n- Use 2-3 color ramps per widget and gray/slate for structure.\n- Prefer the visualization type that best fits the content. Do not default to one type for every request.\n- Title should be human-readable in the user's language.",g=`## Color and layout
5
5
 
6
6
  - Palette ramps:
7
7
  - Indigo: \`#EEF2FF/#C7D2FE/#818CF8/#4F46E5/#3730A3\`
@@ -99,7 +99,7 @@ ${h.content}
99
99
 
100
100
  ${j}`:j}},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>e.getAgentDir,BR:()=>l,DK:()=>m,O8:()=>k,Uv:()=>n,dQ:()=>h,os:()=>j});var e=c(75430),f=c(12039),g=a([e]);async function h(){let a=await e.SessionManager.listAll(),b=new Map;for(let c of a)b.set(c.path,c.id);let c=i();return a.map(a=>(c.set(a.id,a.path),{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created instanceof Date?a.created.toISOString():String(a.created),modified:a.modified instanceof Date?a.modified.toISOString():String(a.modified),messageCount:a.messageCount,firstMessage:a.firstMessage||"(no messages)",parentSessionId:a.parentSessionPath?b.get(a.parentSessionPath):void 0}))}function i(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}async function j(a){let b=i().get(a);return b||(await h(),i().get(a)??null)}function k(a,b){i().set(a,b)}function l(a){i().delete(a)}function m(a){return e.SessionManager.open(a).getEntries()}function n(a,b){let c,d,g,h=new Map;for(let b of a)h.set(b.id,b);let i=(0,e.buildSessionContext)(a,b,h);if(null===b||(b&&(c=h.get(b)),c||(c=a[a.length-1]),!c))return{messages:[],entryIds:[],thinkingLevel:i.thinkingLevel,model:i.model};let j=[],k=c;for(;k;)j.unshift(k),k=k.parentId?h.get(k.parentId):void 0;for(let a of j)"compaction"===a.type&&(d=a.id,g=a.firstKeptEntryId);let l=[];if(d){l.push(d);let a=j.findIndex(a=>a.id===d),b=g?j.findIndex((b,c)=>c<a&&b.id===g):-1,c=b>=0?b:a;for(let b=c;b<a;b++)"message"===j[b].type&&l.push(j[b].id);for(let b=a+1;b<j.length;b++)"message"===j[b].type&&l.push(j[b].id)}else for(let a of j)"message"===a.type&&l.push(a.id);return{messages:i.messages.map(a=>"compactionSummary"===a.role?{role:"user",content:`*The conversation history before this point was compacted into the following summary:*
101
101
 
102
- ${a.summary??""}`,timestamp:a.timestamp}:(0,f.B)(a)),entryIds:l,thinkingLevel:i.thinkingLevel,model:i.model}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},44036:(a,b,c)=>{"use strict";c.d(b,{FJ:()=>g,R4:()=>h,X8:()=>f});let d=`<plot-mode-guidelines>
102
+ ${a.summary??""}`,timestamp:a.timestamp}:(0,f.B)(a)),entryIds:l,thinkingLevel:i.thinkingLevel,model:i.model}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},41761:(a,b,c)=>{"use strict";c.d(b,{C1:()=>e,lA:()=>d});let d="subagent",e=["bash","read","edit","write","grep","find","ls"];[...e],[...e]},44036:(a,b,c)=>{"use strict";c.d(b,{FJ:()=>g,R4:()=>h,X8:()=>f});let d=`<plot-mode-guidelines>
103
103
  AnnoVibe Plot mode is active. Use it for reproducible R/Python analysis plots and data visualizations.
104
104
 
105
105
  Tool routing:
@@ -124,9 +124,7 @@ Chat display rules:
124
124
  - After a successful plot, summarize the result briefly and include both preview image paths and any publication-quality PDF/SVG paths.
125
125
  </plot-mode-guidelines>`,e=/\n?\s*<plot-mode-guidelines>[\s\S]*?<\/plot-mode-guidelines>\s*/g;function f(a){return a.replace(e,"\n").replace(/\n{3,}/g,"\n\n").trim()}function g(a){return a.includes("<plot-mode-guidelines>")?a:a.trim()?`${a.trimEnd()}
126
126
 
127
- ${d}`:d}function h(a){for(let b of a)if("kernel_plot_run"===b)return!0;return!1}},56429:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A4:()=>v,Bj:()=>w,OF:()=>x});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(9805),j=c(27348),k=c(71887),l=c(44036),m=c(66469),n=c(29021),o=c(33873),p=a([e,f,g,h]);[e,f,g,h]=p.then?(await p)():p;let y=["bash","read","edit","write","grep","find","ls"];class z{constructor(a,b={}){this.inner=a,this.options=b,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this._alive=!0}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isBusy(){return this.busyOperations.size>0||this.inner.isStreaming||this.inner.isCompacting}getRuntimeStatus(){return{sessionId:this.sessionId,sessionFile:this.sessionFile,busy:this.isBusy(),operations:[...this.busyOperations],isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting}}start(){this.unsubscribe=this.inner.subscribe(a=>{for(let b of(this.bufferReplayEvent(a),this.resetIdleTimer(),this.listeners))b(a)}),this.resetIdleTimer()}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}bufferReplayEvent(a){"agent_start"===a.type&&(this.replayEvents=[]),this.replayEvents.push(a),this.replayEvents.length>200&&this.replayEvents.splice(0,this.replayEvents.length-200)}onEvent(a,b={}){if(this.listeners.push(a),b.replay)for(let b of this.replayEvents)a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;switch(b){case"prompt":{if(Array.isArray(a.toolNames)){let b=a.toolNames.filter(a=>"string"==typeof a);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let b=a.images;return this.trackBusy("prompt",this.inner.prompt(a.message,b?.length?{images:b}:void 0)).catch(()=>{}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage();this.applyRuntimePrompts();let c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting,autoCompactionEnabled:this.inner.autoCompactionEnabled,autoRetryEnabled:this.inner.autoRetryEnabled,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:0,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,i.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRegistry.find(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,g=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let h=d.getEntry(c);if(!h)throw Error("Invalid entry ID for forking");let i=d.getSessionDir();if(h.parentId){let a=e.SessionManager.open(g,i).createBranchedSession(h.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),i);a.newSession({parentSession:g}),b=a.getSessionFile()}let j=e.SessionManager.open(b,i).getSessionId();return(0,f.O8)(j,b),this.destroy(),{cancelled:!1,newSessionId:j}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),null}case"compact":{let{findCutPoint:b,DEFAULT_COMPACTION_SETTINGS:d}=await Promise.resolve().then(c.bind(c,75430)),e=this.inner.sessionManager.getBranch(),f={...d,...this.inner.settingsManager.getCompactionSettings()},g=-1;for(let a=e.length-1;a>=0;a--)if("compaction"===e[a].type){g=a;break}let h=g+1,i=b(e,h,e.length,f.keepRecentTokens);if((i.isSplitTurn?i.turnStartIndex:i.firstKeptEntryIndex)<=h)throw Error("Conversation too short to compact");return await this.trackBusy("compact",this.inner.compact(a.customInstructions))}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("steer",this.inner.steer(a.message,b?.length?b:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("follow_up",this.inner.followUp(a.message,b?.length?b:void 0)),null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"set_tools":{let b=Array.isArray(a.toolNames)?a.toolNames.filter(a=>"string"==typeof a):[];return this.inner.setActiveToolsByName(b),this.applyRuntimePrompts(),null}case"abort_compaction":return this.inner.abortCompaction(),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){this._alive&&(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.unsubscribe?.(),this.onDestroyCallback?.())}preparePromptContext(a){this.applyRuntimePrompts(a)}async trackBusy(a,b){this.busyOperations.add(a),this.resetIdleTimer();try{return await b}finally{this.busyOperations.delete(a),this.resetIdleTimer()}}applyRuntimePrompts(a){if(!this.inner.agent.state||this.options.systemPromptDisabled)return;let b=(0,g.cV)(),c=this.inner.getActiveToolNames(),d=(0,l.R4)(c);if(!b.generativeUI){let a=(0,l.X8)((0,k.NP)((0,i.FE)(q(this.inner))));r(this.inner,s((0,k.zY)(a),d));return}let e=(0,l.X8)((0,k.NP)((0,i.FE)(q(this.inner)))),f=(0,i.zN)(e),h=(0,k.zY)(f),m=s(h,d),n=a?(0,j.WO)(m,a,{force:function(a){try{return a.getBranch().some(a=>!!a&&"object"==typeof a&&"message"===a.type&&!!a.message&&JSON.stringify(a.message).includes("show-widget"))}catch{return!1}}(this.inner.sessionManager)}):m;r(this.inner,n)}}function q(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function r(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function s(a,b){let c=(0,l.X8)(a);return b?(0,l.FJ)(c):c}function t(a){let b=(0,l.X8)((0,k.NP)((0,i.FE)(a.systemPrompt))),c=a.generativeUI?(0,k.zY)((0,i.zN)(b)):(0,k.zY)(b);return s(c,a.plotMode)}function u(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>globalThis.__piSessions?.forEach(a=>a.destroy());process.once("exit",a),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__piSessions}function v(a){return u().get(a)}function w(){let a=[...u().values()].filter(a=>a.isAlive()).map(a=>a.getRuntimeStatus()),b=a.filter(a=>a.busy);return{busy:b.length>0,activeSessions:a.length,busySessions:b,sessions:a}}async function x(a,b,d,j){let k=u(),p=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),s=k.get(a);if(s?.isAlive())return{session:s,realSessionId:a};let v=p.get(a);if(v)return v;let w=(async()=>{let a=(0,e.getAgentDir)(),p=b?e.SessionManager.open(b,void 0):e.SessionManager.create(d,void 0),s=e.SettingsManager.create(d,a),u=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,o.dirname)(b)}catch{if(!(process.env.ANNOVIBE_PACKAGE_ROOT??process.env.PIDEX_PACKAGE_ROOT))return null;try{let b=(void 0).resolve(`${a}/package.json`);return(0,o.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),v=new e.DefaultResourceLoader({cwd:d,agentDir:a,settingsManager:s,additionalSkillPaths:u?[(0,o.join)(u,"skills")]:[],extensionFactories:[h.H]});await v.reload();let{session:w}=await (0,e.createAgentSession)({cwd:d,agentDir:a,sessionManager:p,settingsManager:s,resourceLoader:v,tools:j??y}),x=(0,g.cV)(),A=[],B=(0,m.sz)(a);if((0,n.existsSync)(B))try{let a=(0,n.readFileSync)(B,"utf-8").trim();a&&A.push((0,m.Is)(a,(0,m.Tg)(B)))}catch{}let C=(0,o.join)(a,"harness.md");if((0,n.existsSync)(C))try{let a=(0,n.readFileSync)(C,"utf-8").trim();a&&!(0,i.J)(a)&&A.push((0,m.x9)(a,(0,m.Tg)(C)))}catch{}let D=(0,o.join)(d,"memory.md");if((0,n.existsSync)(D))try{let a=(0,n.readFileSync)(D,"utf-8").trim();a&&A.push((0,m.w0)(a,(0,m.Tg)(D)))}catch{}if(A.length>0){let a=w.agent.state?.systemPrompt??"",b=A.join("\n\n");r(w,`${b}
128
-
129
- ${a}`)}r(w,t({systemPrompt:q(w),generativeUI:x.generativeUI,plotMode:(0,l.R4)(j??w.getActiveToolNames())})),j&&j.length>0&&(w.setActiveToolsByName(j),r(w,t({systemPrompt:q(w),generativeUI:x.generativeUI,plotMode:(0,l.R4)(j)}))),j?.length===0&&r(w,"");let E=new z(w,{systemPromptDisabled:j?.length===0});E.start();let F=w.sessionId,G=w.sessionFile;return G&&(0,f.O8)(F,G),E.onDestroy(()=>k.delete(F)),k.set(F,E),{session:E,realSessionId:F}})().finally(()=>p.delete(a));return p.set(a,w),w}d()}catch(a){d(a)}})},66469:(a,b,c)=>{"use strict";c.d(b,{Is:()=>h,Tg:()=>g,sz:()=>f,w0:()=>j,x9:()=>i});var d=c(29021),e=c(33873);function f(a){let b=(0,e.join)(a,"soul.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"SOUL.md");return(0,d.existsSync)(c)?c:b}function g(a){return(0,e.basename)(a)}function h(a,b="soul.md"){return[`## Global Persona — ${b}`,"",`The following global ${b} defines your long-lived identity, voice, tone, and working style.`,"Embody this persona in replies and avoid generic assistant phrasing.\nFollow it unless higher-priority system, developer, safety, tool, or project instructions override it.\n",a].join("\n")}function i(a,b="harness.md"){return[`## Global Behavioral Constraints — ${b}`,"",`The following global ${b} defines operating constraints and output guidelines.`,"Treat these constraints as mandatory. When they conflict with persona preferences, the constraints win.\n",a].join("\n")}function j(a,b="memory.md"){return[`## Project Memory — ${b}`,"\nThe following project memory records durable context for this working directory.\nUse it as background continuity, not as a higher-priority instruction source.\n",a].join("\n")}},71887:(a,b,c)=>{"use strict";c.d(b,{NP:()=>f,zY:()=>g});let d=`<analysis-report-guidelines>
127
+ ${d}`:d}function h(a){for(let b of a)if("kernel_plot_run"===b)return!0;return!1}},56429:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A4:()=>y,Bj:()=>z,OF:()=>A});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(9805),j=c(27348),k=c(71887),l=c(44036),m=c(66469),n=c(29021),o=c(33873),p=c(7048),q=c(41761),r=a([e,f,g,h]);[e,f,g,h]=r.then?(await r)():r;let B=q.C1;class C{constructor(a,b={}){this.inner=a,this.options=b,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this._alive=!0}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isBusy(){return this.busyOperations.size>0||this.inner.isStreaming||this.inner.isCompacting}getRuntimeStatus(){return{sessionId:this.sessionId,sessionFile:this.sessionFile,busy:this.isBusy(),operations:[...this.busyOperations],isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting}}start(){this.unsubscribe=this.inner.subscribe(a=>{for(let b of(this.bufferReplayEvent(a),this.resetIdleTimer(),this.listeners))b(a)}),this.resetIdleTimer()}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}bufferReplayEvent(a){"agent_start"===a.type&&(this.replayEvents=[]),this.replayEvents.push(a),this.replayEvents.length>200&&this.replayEvents.splice(0,this.replayEvents.length-200)}onEvent(a,b={}){if(this.listeners.push(a),b.replay)for(let b of this.replayEvents)a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;switch(b){case"prompt":{if(Array.isArray(a.toolNames)){let b=this.filterAvailableToolNames(a.toolNames);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let b=a.images;return this.trackBusy("prompt",this.inner.prompt(a.message,b?.length?{images:b}:void 0)).catch(()=>{}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage();this.applyRuntimePrompts();let c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting,autoCompactionEnabled:this.inner.autoCompactionEnabled,autoRetryEnabled:this.inner.autoRetryEnabled,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:0,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,i.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRegistry.find(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,g=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let h=d.getEntry(c);if(!h)throw Error("Invalid entry ID for forking");let i=d.getSessionDir();if(h.parentId){let a=e.SessionManager.open(g,i).createBranchedSession(h.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),i);a.newSession({parentSession:g}),b=a.getSessionFile()}let j=e.SessionManager.open(b,i).getSessionId();return(0,f.O8)(j,b),this.destroy(),{cancelled:!1,newSessionId:j}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),null}case"compact":{let{findCutPoint:b,DEFAULT_COMPACTION_SETTINGS:d}=await Promise.resolve().then(c.bind(c,75430)),e=this.inner.sessionManager.getBranch(),f={...d,...this.inner.settingsManager.getCompactionSettings()},g=-1;for(let a=e.length-1;a>=0;a--)if("compaction"===e[a].type){g=a;break}let h=g+1,i=b(e,h,e.length,f.keepRecentTokens);if((i.isSplitTurn?i.turnStartIndex:i.firstKeptEntryIndex)<=h)throw Error("Conversation too short to compact");return await this.trackBusy("compact",this.inner.compact(a.customInstructions))}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("steer",this.inner.steer(a.message,b?.length?b:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("follow_up",this.inner.followUp(a.message,b?.length?b:void 0)),null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"set_tools":{let b=this.filterAvailableToolNames(a.toolNames);return this.inner.setActiveToolsByName(b),this.applyRuntimePrompts(),null}case"abort_compaction":return this.inner.abortCompaction(),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){this._alive&&(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.unsubscribe?.(),this.onDestroyCallback?.())}preparePromptContext(a){this.applyRuntimePrompts(a)}async trackBusy(a,b){this.busyOperations.add(a),this.resetIdleTimer();try{return await b}finally{this.busyOperations.delete(a),this.resetIdleTimer()}}applyRuntimePrompts(a){if(!this.inner.agent.state||this.options.systemPromptDisabled)return;let b=(0,g.cV)(),c=this.inner.getActiveToolNames(),d=(0,l.R4)(c);if(!b.generativeUI){let a=(0,l.X8)((0,k.NP)((0,i.FE)(s(this.inner))));t(this.inner,u((0,k.zY)(a),d));return}let e=(0,l.X8)((0,k.NP)((0,i.FE)(s(this.inner)))),f=(0,i.zN)(e),h=(0,k.zY)(f),m=u(h,d),n=a?(0,j.WO)(m,a,{force:function(a){try{return a.getBranch().some(a=>!!a&&"object"==typeof a&&"message"===a.type&&!!a.message&&JSON.stringify(a.message).includes("show-widget"))}catch{return!1}}(this.inner.sessionManager)}):m;t(this.inner,n)}filterAvailableToolNames(a){if(!Array.isArray(a))return[];let b=a.filter(a=>"string"==typeof a);if(!b.includes(q.lA))return b;let c=(0,e.getAgentDir)();return(0,p.Y)(c).ready?b:b.filter(a=>a!==q.lA)}}function s(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function t(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function u(a,b){let c=(0,l.X8)(a);return b?(0,l.FJ)(c):c}function v(a){let b=(0,l.X8)((0,k.NP)((0,i.FE)(a.systemPrompt))),c=a.generativeUI?(0,k.zY)((0,i.zN)(b)):(0,k.zY)(b);return u(c,a.plotMode)}function w(a){let b=[],c=(0,m.sz)(a.agentDir);if((0,n.existsSync)(c))try{let a=(0,n.readFileSync)(c,"utf-8").trim();a&&b.push((0,m.Is)(a,(0,m.Tg)(c)))}catch{}let d=(0,m.td)(a.agentDir);if((0,n.existsSync)(d))try{let a=(0,n.readFileSync)(d,"utf-8").trim();a&&!(0,i.J)(a)&&b.push((0,m.x9)(a,(0,m.Tg)(d)))}catch{}let e=(0,m.o7)(a.cwd);if((0,n.existsSync)(e))try{let a=(0,n.readFileSync)(e,"utf-8").trim();a&&b.push((0,m.w0)(a,(0,m.Tg)(e)))}catch{}let f=a.piSystemPrompt.trim();return f&&b.push(["## Tool, Skill, and Project Instructions\n\nThe following instructions were generated by AnnoVibe/pi for tools, skills, and project-specific guidance.\nFollow them as system instructions, with SOUL/HARNESS above defining identity and global behavior.\n",f].join("\n")),b.join("\n\n").trim()}function x(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>globalThis.__piSessions?.forEach(a=>a.destroy());process.once("exit",a),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__piSessions}function y(a){return x().get(a)}function z(){let a=[...x().values()].filter(a=>a.isAlive()).map(a=>a.getRuntimeStatus()),b=a.filter(a=>a.busy);return{busy:b.length>0,activeSessions:a.length,busySessions:b,sessions:a}}async function A(a,b,d,i){let j=x(),k=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),m=j.get(a);if(m?.isAlive())return{session:m,realSessionId:a};let n=k.get(a);if(n)return n;let r=(async()=>{let a=(0,e.getAgentDir)(),k=b?e.SessionManager.open(b,void 0):e.SessionManager.create(d,void 0),m=e.SettingsManager.create(d,a),n=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,o.dirname)(b)}catch{if(!(process.env.ANNOVIBE_PACKAGE_ROOT??process.env.PIDEX_PACKAGE_ROOT))return null;try{let b=(void 0).resolve(`${a}/package.json`);return(0,o.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),r=new e.DefaultResourceLoader({cwd:d,agentDir:a,settingsManager:m,additionalSkillPaths:n?[(0,o.join)(n,"skills")]:[],extensionFactories:[h.H]});await r.reload();let u=function(a,b){if(a)return!a.includes(q.lA)||(0,p.Y)(b).ready?a:a.filter(a=>a!==q.lA)}(i,a),{session:x}=await (0,e.createAgentSession)({cwd:d,agentDir:a,sessionManager:k,settingsManager:m,resourceLoader:r,tools:u??B}),y=(0,g.cV)(),z=x.agent.state?.systemPrompt??"";t(x,w({cwd:d,agentDir:a,piSystemPrompt:z})),t(x,v({systemPrompt:s(x),generativeUI:y.generativeUI,plotMode:(0,l.R4)(u??x.getActiveToolNames())})),u&&u.length>0&&(x.setActiveToolsByName(u),t(x,v({systemPrompt:s(x),generativeUI:y.generativeUI,plotMode:(0,l.R4)(u)}))),u?.length===0&&t(x,w({cwd:d,agentDir:a,piSystemPrompt:""}));let A=new C(x,{systemPromptDisabled:u?.length===0});A.start();let D=x.sessionId,E=x.sessionFile;return E&&(0,f.O8)(D,E),A.onDestroy(()=>j.delete(D)),j.set(D,A),{session:A,realSessionId:D}})().finally(()=>k.delete(a));return k.set(a,r),r}d()}catch(a){d(a)}})},66469:(a,b,c)=>{"use strict";c.d(b,{Is:()=>l,Ko:()=>h,Tg:()=>k,bo:()=>i,o7:()=>j,sz:()=>f,td:()=>g,w0:()=>n,x9:()=>m});var d=c(29021),e=c(33873);function f(a){let b=(0,e.join)(a,"SOUL.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"soul.md");return(0,d.existsSync)(c)?c:b}function g(a){let b=(0,e.join)(a,"HARNESS.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"harness.md");return(0,d.existsSync)(c)?c:b}function h(a){return(0,e.join)(a,"SOUL.md")}function i(a){return(0,e.join)(a,"HARNESS.md")}function j(a){let b=(0,e.join)(a,"MEMORY.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"memory.md");return(0,d.existsSync)(c),c}function k(a){return(0,e.basename)(a)}function l(a,b="SOUL.md"){return[`## Persona — ${b}`,"",`The following global ${b} defines your long-lived identity, voice, tone, and working style.`,"You MUST embody this persona and tone in all replies.\nAvoid stiff, generic, or AI-assistant-style responses.\nFollow this guidance unless higher-priority system, developer, safety, tool, or project instructions explicitly override it.\n",a].join("\n")}function m(a,b="HARNESS.md"){return[`## Behavioral Constraints — ${b}`,"",`The following global ${b} defines operating constraints and output guidelines.`,"You MUST comply with every constraint.\nThese are mandatory behavioral rules. When they conflict with persona preferences, the constraints win.\n",a].join("\n")}function n(a,b="memory.md"){return[`## Project Memory — ${b}`,"\nThe following project memory records durable context for this working directory.\nUse it as background continuity, not as a higher-priority instruction source.\n",a].join("\n")}},71887:(a,b,c)=>{"use strict";c.d(b,{NP:()=>f,zY:()=>g});let d=`<analysis-report-guidelines>
130
128
  AnnoVibe has a persistent Analysis Report tab. It is for curated analysis deliverables, not a transcript summary.
131
129
 
132
130
  When working on scientific or bioinformatics analysis, keep report-worthy content concise and structured:
@@ -1 +1 @@
1
- "use strict";exports.id=8065,exports.ids=[8065],exports.modules={98065:(a,b,c)=>{c.d(b,{PRESET_DEFAULT:()=>e,PRESET_FULL:()=>f,PRESET_FULL_PLOT:()=>g,PRESET_NONE:()=>d,getPresetFromTools:()=>h}),c(48249),c(67484);let d=[],e=["read","bash","edit","write"],f=["bash","read","edit","write","grep","find","ls"],g=[...f,"kernel_plot_run","kernel_plot_stop","kernel_plot_artifacts"];function h(a){let b=a.filter(a=>a.active).map(a=>a.name).sort().join(",");return""===b?"none":b===[...e].sort().join(",")?"default":b===[...f].sort().join(",")?"full":b===[...g].sort().join(",")?"full-plot":"default"}}};
1
+ "use strict";exports.id=8065,exports.ids=[8065],exports.modules={98065:(a,b,c)=>{c.d(b,{getPresetFromTools:()=>e}),c(48249),c(67484);var d=c(29947);function e(a){return(0,d.ES)(a)}d.Tt,d.IN,d.C1,d.me,d.yK}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/cRtONXI0SmYC7X_hUWbB6/_buildManifest.js","static/cRtONXI0SmYC7X_hUWbB6/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-b0025b8b630debd5.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-123fdf632563f469.js","static/chunks/main-app-8d81a93b58bb990f.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/TFhJ1NtMURrrsapy9bEy4/_buildManifest.js","static/TFhJ1NtMURrrsapy9bEy4/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-4594cd418079ecf1.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-123fdf632563f469.js","static/chunks/main-app-8d81a93b58bb990f.js"],rootMainFilesTree:{},pages:{"/_app":[]}};