@seqyuan/annovibe 0.8.135 → 0.8.136

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 (349) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +19 -12
  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 +46 -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 +4 -4
  23. package/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  24. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  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 +3 -3
  29. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  30. package/.next/server/app/api/agent/[id]/prepare/route.js +1 -1
  31. package/.next/server/app/api/agent/[id]/route.js +1 -1
  32. package/.next/server/app/api/agent/new/route.js +2 -2
  33. package/.next/server/app/api/agent/running/events/route.js +2 -2
  34. package/.next/server/app/api/agent/running/route.js +1 -1
  35. package/.next/server/app/api/agent/runtime/route.js +1 -1
  36. package/.next/server/app/api/apps/[id]/[[...path]]/route.js +2 -2
  37. package/.next/server/app/api/apps/route.js +2 -2
  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 +2 -2
  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/auth/totp/route.js +1 -1
  46. package/.next/server/app/api/debug-models/route.js +1 -1
  47. package/.next/server/app/api/default-cwd/route.js +1 -1
  48. package/.next/server/app/api/file-index/route.js +1 -0
  49. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -0
  50. package/.next/server/app/api/file-tree/delete/route.js +1 -1
  51. package/.next/server/app/api/file-tree/mkdir/route.js +1 -1
  52. package/.next/server/app/api/file-tree/rename/route.js +1 -1
  53. package/.next/server/app/api/file-tree/reveal/route.js +1 -1
  54. package/.next/server/app/api/file-tree/write/route.js +1 -1
  55. package/.next/server/app/api/file-watch/route.js +3 -3
  56. package/.next/server/app/api/files/[...path]/route.js +2 -2
  57. package/.next/server/app/api/harness/route.js +1 -1
  58. package/.next/server/app/api/home/route.js +1 -1
  59. package/.next/server/app/api/im/cancel/route.js +1 -1
  60. package/.next/server/app/api/im/gateway-status/route.js +1 -1
  61. package/.next/server/app/api/im/gateway-token/route.js +1 -1
  62. package/.next/server/app/api/im/project/route.js +1 -1
  63. package/.next/server/app/api/im/projects/route.js +1 -1
  64. package/.next/server/app/api/im/session-ids/route.js +1 -1
  65. package/.next/server/app/api/im/turn/route.js +2 -2
  66. package/.next/server/app/api/images/upload/route.js +1 -1
  67. package/.next/server/app/api/internal/runtime/route.js +1 -1
  68. package/.next/server/app/api/memory/dismiss/route.js +2 -2
  69. package/.next/server/app/api/memory/promote/route.js +2 -2
  70. package/.next/server/app/api/models/route.js +1 -1
  71. package/.next/server/app/api/models-config/discover/route.js +1 -1
  72. package/.next/server/app/api/models-config/route.js +1 -1
  73. package/.next/server/app/api/models-config/test/route.js +1 -1
  74. package/.next/server/app/api/plot-kernels/route.js +1 -1
  75. package/.next/server/app/api/plot-kernels/save/route.js +1 -1
  76. package/.next/server/app/api/plot-kernels/status/route.js +1 -1
  77. package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
  78. package/.next/server/app/api/plugins/route.js +1 -0
  79. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
  80. package/.next/server/app/api/project-trust/route.js +1 -0
  81. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -0
  82. package/.next/server/app/api/projects/browse/route.js +1 -1
  83. package/.next/server/app/api/projects/route.js +1 -1
  84. package/.next/server/app/api/search/route.js +1 -1
  85. package/.next/server/app/api/session-index/events/route.js +1 -1
  86. package/.next/server/app/api/sessions/[id]/auto-name/route.js +9 -8
  87. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  88. package/.next/server/app/api/sessions/[id]/export/route.js +1 -0
  89. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -0
  90. package/.next/server/app/api/sessions/[id]/kernel-state/route.js +1 -1
  91. package/.next/server/app/api/sessions/[id]/media/route.js +1 -0
  92. package/.next/server/app/api/sessions/[id]/media/route_client-reference-manifest.js +1 -0
  93. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  94. package/.next/server/app/api/sessions/[id]/shadowed/route.js +1 -1
  95. package/.next/server/app/api/sessions/[id]/workbench-artifact/route.js +1 -1
  96. package/.next/server/app/api/sessions/[id]/workbench-review/route.js +1 -1
  97. package/.next/server/app/api/sessions/new/route.js +1 -1
  98. package/.next/server/app/api/sessions/route.js +1 -1
  99. package/.next/server/app/api/settings/route.js +1 -1
  100. package/.next/server/app/api/skills/check/route.js +1 -0
  101. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -0
  102. package/.next/server/app/api/skills/install/route.js +2 -2
  103. package/.next/server/app/api/skills/route.js +2 -2
  104. package/.next/server/app/api/skills/search/route.js +1 -1
  105. package/.next/server/app/api/skills/update/route.js +2 -0
  106. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -0
  107. package/.next/server/app/api/smoke/prompt-admission/route.js +1 -1
  108. package/.next/server/app/api/soul/route.js +1 -1
  109. package/.next/server/app/api/subagents/status/route.js +1 -1
  110. package/.next/server/app/api/version/route.js +1 -1
  111. package/.next/server/app/favicon.ico/route.js +1 -1
  112. package/.next/server/app/icon.svg/route.js +1 -1
  113. package/.next/server/app/index.html +1 -1
  114. package/.next/server/app/index.rsc +5 -5
  115. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  116. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  117. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/index.segments/_index.segment.rsc +4 -4
  119. package/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  120. package/.next/server/app/login/page.js +2 -2
  121. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/login.html +1 -1
  123. package/.next/server/app/login.rsc +4 -4
  124. package/.next/server/app/login.segments/_full.segment.rsc +4 -4
  125. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  126. package/.next/server/app/login.segments/_index.segment.rsc +4 -4
  127. package/.next/server/app/login.segments/_tree.segment.rsc +3 -3
  128. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  129. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  130. package/.next/server/app/page.js +24 -24
  131. package/.next/server/app/page_client-reference-manifest.js +1 -1
  132. package/.next/server/app/smoke/page.js +3 -3
  133. package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
  134. package/.next/server/app/smoke/session-stream/page.js +2 -2
  135. package/.next/server/app/smoke/session-stream/page_client-reference-manifest.js +1 -1
  136. package/.next/server/app/smoke/session-stream.html +1 -1
  137. package/.next/server/app/smoke/session-stream.rsc +5 -5
  138. package/.next/server/app/smoke/session-stream.segments/_full.segment.rsc +5 -5
  139. package/.next/server/app/smoke/session-stream.segments/_head.segment.rsc +1 -1
  140. package/.next/server/app/smoke/session-stream.segments/_index.segment.rsc +4 -4
  141. package/.next/server/app/smoke/session-stream.segments/_tree.segment.rsc +3 -3
  142. package/.next/server/app/smoke/session-stream.segments/smoke/session-stream/__PAGE__.segment.rsc +2 -2
  143. package/.next/server/app/smoke/session-stream.segments/smoke/session-stream.segment.rsc +1 -1
  144. package/.next/server/app/smoke/session-stream.segments/smoke.segment.rsc +1 -1
  145. package/.next/server/app/smoke.html +2 -2
  146. package/.next/server/app/smoke.rsc +5 -5
  147. package/.next/server/app/smoke.segments/_full.segment.rsc +5 -5
  148. package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
  149. package/.next/server/app/smoke.segments/_index.segment.rsc +4 -4
  150. package/.next/server/app/smoke.segments/_tree.segment.rsc +3 -3
  151. package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +2 -2
  152. package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
  153. package/.next/server/app-paths-manifest.json +19 -12
  154. package/.next/server/chunks/1761.js +1 -1
  155. package/.next/server/chunks/402.js +4 -2
  156. package/.next/server/chunks/6429.js +6 -5
  157. package/.next/server/chunks/707.js +2 -2
  158. package/.next/server/chunks/7303.js +260 -0
  159. package/.next/server/chunks/7365.js +1 -0
  160. package/.next/server/chunks/7890.js +1 -1
  161. package/.next/server/chunks/8304.js +1 -1
  162. package/.next/server/chunks/8797.js +22 -0
  163. package/.next/server/functions-config-manifest.json +11 -1
  164. package/.next/server/middleware-build-manifest.js +1 -1
  165. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  166. package/.next/server/middleware.js +3 -3
  167. package/.next/server/pages/404.html +1 -1
  168. package/.next/server/pages/500.html +1 -1
  169. package/.next/server/server-reference-manifest.json +1 -1
  170. package/.next/static/chunks/{2693-b831832202452107.js → 2693-52c358cf5d84b069.js} +1 -1
  171. package/.next/static/chunks/291-bfdfc8bcf5d0a962.js +22 -0
  172. package/.next/static/chunks/{5618-3b8444e736e6ae4d.js → 5618-5e2e47e6ed401a75.js} +3 -3
  173. package/.next/static/chunks/{1960.b1e26436d7a5f586.js → 7198.4c3df741a5e26fb2.js} +1 -1
  174. package/.next/static/chunks/9867-b1d15d9354f100e7.js +260 -0
  175. package/.next/static/chunks/app/_global-error/page-dcc4d4b28dc1e9eb.js +1 -0
  176. package/.next/static/chunks/app/api/agent/[id]/events/route-dcc4d4b28dc1e9eb.js +1 -0
  177. package/.next/static/chunks/app/api/agent/[id]/prepare/route-dcc4d4b28dc1e9eb.js +1 -0
  178. package/.next/static/chunks/app/api/agent/[id]/route-dcc4d4b28dc1e9eb.js +1 -0
  179. package/.next/static/chunks/app/api/agent/new/route-dcc4d4b28dc1e9eb.js +1 -0
  180. package/.next/static/chunks/app/api/agent/running/events/route-dcc4d4b28dc1e9eb.js +1 -0
  181. package/.next/static/chunks/app/api/agent/running/route-dcc4d4b28dc1e9eb.js +1 -0
  182. package/.next/static/chunks/app/api/agent/runtime/route-dcc4d4b28dc1e9eb.js +1 -0
  183. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-dcc4d4b28dc1e9eb.js +1 -0
  184. package/.next/static/chunks/app/api/apps/route-dcc4d4b28dc1e9eb.js +1 -0
  185. package/.next/static/chunks/app/api/auth/all-providers/route-dcc4d4b28dc1e9eb.js +1 -0
  186. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-dcc4d4b28dc1e9eb.js +1 -0
  187. package/.next/static/chunks/app/api/auth/login/[provider]/route-dcc4d4b28dc1e9eb.js +1 -0
  188. package/.next/static/chunks/app/api/auth/login/route-dcc4d4b28dc1e9eb.js +1 -0
  189. package/.next/static/chunks/app/api/auth/logout/[provider]/route-dcc4d4b28dc1e9eb.js +1 -0
  190. package/.next/static/chunks/app/api/auth/providers/route-dcc4d4b28dc1e9eb.js +1 -0
  191. package/.next/static/chunks/app/api/auth/status/route-dcc4d4b28dc1e9eb.js +1 -0
  192. package/.next/static/chunks/app/api/auth/totp/route-dcc4d4b28dc1e9eb.js +1 -0
  193. package/.next/static/chunks/app/api/debug-models/route-dcc4d4b28dc1e9eb.js +1 -0
  194. package/.next/static/chunks/app/api/default-cwd/route-dcc4d4b28dc1e9eb.js +1 -0
  195. package/.next/static/chunks/app/api/file-index/route-dcc4d4b28dc1e9eb.js +1 -0
  196. package/.next/static/chunks/app/api/file-tree/delete/route-dcc4d4b28dc1e9eb.js +1 -0
  197. package/.next/static/chunks/app/api/file-tree/mkdir/route-dcc4d4b28dc1e9eb.js +1 -0
  198. package/.next/static/chunks/app/api/file-tree/rename/route-dcc4d4b28dc1e9eb.js +1 -0
  199. package/.next/static/chunks/app/api/file-tree/reveal/route-dcc4d4b28dc1e9eb.js +1 -0
  200. package/.next/static/chunks/app/api/file-tree/write/route-dcc4d4b28dc1e9eb.js +1 -0
  201. package/.next/static/chunks/app/api/file-watch/route-dcc4d4b28dc1e9eb.js +1 -0
  202. package/.next/static/chunks/app/api/files/[...path]/route-dcc4d4b28dc1e9eb.js +1 -0
  203. package/.next/static/chunks/app/api/harness/route-dcc4d4b28dc1e9eb.js +1 -0
  204. package/.next/static/chunks/app/api/home/route-dcc4d4b28dc1e9eb.js +1 -0
  205. package/.next/static/chunks/app/api/im/cancel/route-dcc4d4b28dc1e9eb.js +1 -0
  206. package/.next/static/chunks/app/api/im/gateway-status/route-dcc4d4b28dc1e9eb.js +1 -0
  207. package/.next/static/chunks/app/api/im/gateway-token/route-dcc4d4b28dc1e9eb.js +1 -0
  208. package/.next/static/chunks/app/api/im/project/route-dcc4d4b28dc1e9eb.js +1 -0
  209. package/.next/static/chunks/app/api/im/projects/route-dcc4d4b28dc1e9eb.js +1 -0
  210. package/.next/static/chunks/app/api/im/session-ids/route-dcc4d4b28dc1e9eb.js +1 -0
  211. package/.next/static/chunks/app/api/im/turn/route-dcc4d4b28dc1e9eb.js +1 -0
  212. package/.next/static/chunks/app/api/images/upload/route-dcc4d4b28dc1e9eb.js +1 -0
  213. package/.next/static/chunks/app/api/internal/runtime/route-dcc4d4b28dc1e9eb.js +1 -0
  214. package/.next/static/chunks/app/api/memory/dismiss/route-dcc4d4b28dc1e9eb.js +1 -0
  215. package/.next/static/chunks/app/api/memory/promote/route-dcc4d4b28dc1e9eb.js +1 -0
  216. package/.next/static/chunks/app/api/models/route-dcc4d4b28dc1e9eb.js +1 -0
  217. package/.next/static/chunks/app/api/models-config/discover/route-dcc4d4b28dc1e9eb.js +1 -0
  218. package/.next/static/chunks/app/api/models-config/route-dcc4d4b28dc1e9eb.js +1 -0
  219. package/.next/static/chunks/app/api/models-config/test/route-dcc4d4b28dc1e9eb.js +1 -0
  220. package/.next/static/chunks/app/api/plot-kernels/route-dcc4d4b28dc1e9eb.js +1 -0
  221. package/.next/static/chunks/app/api/plot-kernels/save/route-dcc4d4b28dc1e9eb.js +1 -0
  222. package/.next/static/chunks/app/api/plot-kernels/status/route-dcc4d4b28dc1e9eb.js +1 -0
  223. package/.next/static/chunks/app/api/plot-kernels/stop/route-dcc4d4b28dc1e9eb.js +1 -0
  224. package/.next/static/chunks/app/api/plugins/route-dcc4d4b28dc1e9eb.js +1 -0
  225. package/.next/static/chunks/app/api/project-trust/route-dcc4d4b28dc1e9eb.js +1 -0
  226. package/.next/static/chunks/app/api/projects/browse/route-dcc4d4b28dc1e9eb.js +1 -0
  227. package/.next/static/chunks/app/api/projects/route-dcc4d4b28dc1e9eb.js +1 -0
  228. package/.next/static/chunks/app/api/search/route-dcc4d4b28dc1e9eb.js +1 -0
  229. package/.next/static/chunks/app/api/session-index/events/route-dcc4d4b28dc1e9eb.js +1 -0
  230. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-dcc4d4b28dc1e9eb.js +1 -0
  231. package/.next/static/chunks/app/api/sessions/[id]/context/route-dcc4d4b28dc1e9eb.js +1 -0
  232. package/.next/static/chunks/app/api/sessions/[id]/export/route-dcc4d4b28dc1e9eb.js +1 -0
  233. package/.next/static/chunks/app/api/sessions/[id]/kernel-state/route-dcc4d4b28dc1e9eb.js +1 -0
  234. package/.next/static/chunks/app/api/sessions/[id]/media/route-dcc4d4b28dc1e9eb.js +1 -0
  235. package/.next/static/chunks/app/api/sessions/[id]/route-dcc4d4b28dc1e9eb.js +1 -0
  236. package/.next/static/chunks/app/api/sessions/[id]/shadowed/route-dcc4d4b28dc1e9eb.js +1 -0
  237. package/.next/static/chunks/app/api/sessions/[id]/workbench-artifact/route-dcc4d4b28dc1e9eb.js +1 -0
  238. package/.next/static/chunks/app/api/sessions/[id]/workbench-review/route-dcc4d4b28dc1e9eb.js +1 -0
  239. package/.next/static/chunks/app/api/sessions/new/route-dcc4d4b28dc1e9eb.js +1 -0
  240. package/.next/static/chunks/app/api/sessions/route-dcc4d4b28dc1e9eb.js +1 -0
  241. package/.next/static/chunks/app/api/settings/route-dcc4d4b28dc1e9eb.js +1 -0
  242. package/.next/static/chunks/app/api/skills/check/route-dcc4d4b28dc1e9eb.js +1 -0
  243. package/.next/static/chunks/app/api/skills/install/route-dcc4d4b28dc1e9eb.js +1 -0
  244. package/.next/static/chunks/app/api/skills/route-dcc4d4b28dc1e9eb.js +1 -0
  245. package/.next/static/chunks/app/api/skills/search/route-dcc4d4b28dc1e9eb.js +1 -0
  246. package/.next/static/chunks/app/api/skills/update/route-dcc4d4b28dc1e9eb.js +1 -0
  247. package/.next/static/chunks/app/api/smoke/prompt-admission/route-dcc4d4b28dc1e9eb.js +1 -0
  248. package/.next/static/chunks/app/api/soul/route-dcc4d4b28dc1e9eb.js +1 -0
  249. package/.next/static/chunks/app/api/subagents/status/route-dcc4d4b28dc1e9eb.js +1 -0
  250. package/.next/static/chunks/app/api/version/route-dcc4d4b28dc1e9eb.js +1 -0
  251. package/.next/static/chunks/app/favicon.ico/route-dcc4d4b28dc1e9eb.js +1 -0
  252. package/.next/static/chunks/app/{layout-5608bfe5e8f4e4c0.js → layout-101c4ccdf12880f0.js} +1 -1
  253. package/.next/static/chunks/app/page-703d91d8bff67f70.js +44 -0
  254. package/.next/static/chunks/app/smoke/{page-35df723c803f35e1.js → page-32674afc320aa48b.js} +2 -2
  255. package/.next/static/chunks/app/smoke/session-stream/page-e754151f65003821.js +6 -0
  256. package/.next/static/chunks/next/dist/client/components/builtin/app-error-dcc4d4b28dc1e9eb.js +1 -0
  257. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-dcc4d4b28dc1e9eb.js +1 -0
  258. package/.next/static/chunks/next/dist/client/components/builtin/not-found-dcc4d4b28dc1e9eb.js +1 -0
  259. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-dcc4d4b28dc1e9eb.js +1 -0
  260. package/.next/static/chunks/{webpack-abcc6ba654c7ed4b.js → webpack-0d1f7348ddb20bdc.js} +1 -1
  261. package/.next/static/css/738b0b1c24aae500.css +1 -0
  262. package/.next/static/css/{88714c00e109ce28.css → 9bcd6051db4f8890.css} +1 -1
  263. package/.next/static/zeWki1Z47rqBkR2ph5H6N/_buildManifest.js +1 -0
  264. package/README.md +4 -1
  265. package/bin/pi-web.js +103 -25
  266. package/package.json +6 -5
  267. package/.next/server/chunks/4584.js +0 -260
  268. package/.next/server/chunks/9230.js +0 -22
  269. package/.next/static/WmuL2h-UefYxq-xz32JzM/_buildManifest.js +0 -1
  270. package/.next/static/chunks/4456-646debea1b5bbec7.js +0 -260
  271. package/.next/static/chunks/9544-46c74a307e919fcb.js +0 -22
  272. package/.next/static/chunks/app/_global-error/page-c47e15c89def27e4.js +0 -1
  273. package/.next/static/chunks/app/api/agent/[id]/events/route-c47e15c89def27e4.js +0 -1
  274. package/.next/static/chunks/app/api/agent/[id]/prepare/route-c47e15c89def27e4.js +0 -1
  275. package/.next/static/chunks/app/api/agent/[id]/route-c47e15c89def27e4.js +0 -1
  276. package/.next/static/chunks/app/api/agent/new/route-c47e15c89def27e4.js +0 -1
  277. package/.next/static/chunks/app/api/agent/running/events/route-c47e15c89def27e4.js +0 -1
  278. package/.next/static/chunks/app/api/agent/running/route-c47e15c89def27e4.js +0 -1
  279. package/.next/static/chunks/app/api/agent/runtime/route-c47e15c89def27e4.js +0 -1
  280. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-c47e15c89def27e4.js +0 -1
  281. package/.next/static/chunks/app/api/apps/route-c47e15c89def27e4.js +0 -1
  282. package/.next/static/chunks/app/api/auth/all-providers/route-c47e15c89def27e4.js +0 -1
  283. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-c47e15c89def27e4.js +0 -1
  284. package/.next/static/chunks/app/api/auth/login/[provider]/route-c47e15c89def27e4.js +0 -1
  285. package/.next/static/chunks/app/api/auth/login/route-c47e15c89def27e4.js +0 -1
  286. package/.next/static/chunks/app/api/auth/logout/[provider]/route-c47e15c89def27e4.js +0 -1
  287. package/.next/static/chunks/app/api/auth/providers/route-c47e15c89def27e4.js +0 -1
  288. package/.next/static/chunks/app/api/auth/status/route-c47e15c89def27e4.js +0 -1
  289. package/.next/static/chunks/app/api/auth/totp/route-c47e15c89def27e4.js +0 -1
  290. package/.next/static/chunks/app/api/debug-models/route-c47e15c89def27e4.js +0 -1
  291. package/.next/static/chunks/app/api/default-cwd/route-c47e15c89def27e4.js +0 -1
  292. package/.next/static/chunks/app/api/file-tree/delete/route-c47e15c89def27e4.js +0 -1
  293. package/.next/static/chunks/app/api/file-tree/mkdir/route-c47e15c89def27e4.js +0 -1
  294. package/.next/static/chunks/app/api/file-tree/rename/route-c47e15c89def27e4.js +0 -1
  295. package/.next/static/chunks/app/api/file-tree/reveal/route-c47e15c89def27e4.js +0 -1
  296. package/.next/static/chunks/app/api/file-tree/write/route-c47e15c89def27e4.js +0 -1
  297. package/.next/static/chunks/app/api/file-watch/route-c47e15c89def27e4.js +0 -1
  298. package/.next/static/chunks/app/api/files/[...path]/route-c47e15c89def27e4.js +0 -1
  299. package/.next/static/chunks/app/api/harness/route-c47e15c89def27e4.js +0 -1
  300. package/.next/static/chunks/app/api/home/route-c47e15c89def27e4.js +0 -1
  301. package/.next/static/chunks/app/api/im/cancel/route-c47e15c89def27e4.js +0 -1
  302. package/.next/static/chunks/app/api/im/gateway-status/route-c47e15c89def27e4.js +0 -1
  303. package/.next/static/chunks/app/api/im/gateway-token/route-c47e15c89def27e4.js +0 -1
  304. package/.next/static/chunks/app/api/im/project/route-c47e15c89def27e4.js +0 -1
  305. package/.next/static/chunks/app/api/im/projects/route-c47e15c89def27e4.js +0 -1
  306. package/.next/static/chunks/app/api/im/session-ids/route-c47e15c89def27e4.js +0 -1
  307. package/.next/static/chunks/app/api/im/turn/route-c47e15c89def27e4.js +0 -1
  308. package/.next/static/chunks/app/api/images/upload/route-c47e15c89def27e4.js +0 -1
  309. package/.next/static/chunks/app/api/internal/runtime/route-c47e15c89def27e4.js +0 -1
  310. package/.next/static/chunks/app/api/memory/dismiss/route-c47e15c89def27e4.js +0 -1
  311. package/.next/static/chunks/app/api/memory/promote/route-c47e15c89def27e4.js +0 -1
  312. package/.next/static/chunks/app/api/models/route-c47e15c89def27e4.js +0 -1
  313. package/.next/static/chunks/app/api/models-config/discover/route-c47e15c89def27e4.js +0 -1
  314. package/.next/static/chunks/app/api/models-config/route-c47e15c89def27e4.js +0 -1
  315. package/.next/static/chunks/app/api/models-config/test/route-c47e15c89def27e4.js +0 -1
  316. package/.next/static/chunks/app/api/plot-kernels/route-c47e15c89def27e4.js +0 -1
  317. package/.next/static/chunks/app/api/plot-kernels/save/route-c47e15c89def27e4.js +0 -1
  318. package/.next/static/chunks/app/api/plot-kernels/status/route-c47e15c89def27e4.js +0 -1
  319. package/.next/static/chunks/app/api/plot-kernels/stop/route-c47e15c89def27e4.js +0 -1
  320. package/.next/static/chunks/app/api/projects/browse/route-c47e15c89def27e4.js +0 -1
  321. package/.next/static/chunks/app/api/projects/route-c47e15c89def27e4.js +0 -1
  322. package/.next/static/chunks/app/api/search/route-c47e15c89def27e4.js +0 -1
  323. package/.next/static/chunks/app/api/session-index/events/route-c47e15c89def27e4.js +0 -1
  324. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-c47e15c89def27e4.js +0 -1
  325. package/.next/static/chunks/app/api/sessions/[id]/context/route-c47e15c89def27e4.js +0 -1
  326. package/.next/static/chunks/app/api/sessions/[id]/kernel-state/route-c47e15c89def27e4.js +0 -1
  327. package/.next/static/chunks/app/api/sessions/[id]/route-c47e15c89def27e4.js +0 -1
  328. package/.next/static/chunks/app/api/sessions/[id]/shadowed/route-c47e15c89def27e4.js +0 -1
  329. package/.next/static/chunks/app/api/sessions/[id]/workbench-artifact/route-c47e15c89def27e4.js +0 -1
  330. package/.next/static/chunks/app/api/sessions/[id]/workbench-review/route-c47e15c89def27e4.js +0 -1
  331. package/.next/static/chunks/app/api/sessions/new/route-c47e15c89def27e4.js +0 -1
  332. package/.next/static/chunks/app/api/sessions/route-c47e15c89def27e4.js +0 -1
  333. package/.next/static/chunks/app/api/settings/route-c47e15c89def27e4.js +0 -1
  334. package/.next/static/chunks/app/api/skills/install/route-c47e15c89def27e4.js +0 -1
  335. package/.next/static/chunks/app/api/skills/route-c47e15c89def27e4.js +0 -1
  336. package/.next/static/chunks/app/api/skills/search/route-c47e15c89def27e4.js +0 -1
  337. package/.next/static/chunks/app/api/smoke/prompt-admission/route-c47e15c89def27e4.js +0 -1
  338. package/.next/static/chunks/app/api/soul/route-c47e15c89def27e4.js +0 -1
  339. package/.next/static/chunks/app/api/subagents/status/route-c47e15c89def27e4.js +0 -1
  340. package/.next/static/chunks/app/api/version/route-c47e15c89def27e4.js +0 -1
  341. package/.next/static/chunks/app/favicon.ico/route-c47e15c89def27e4.js +0 -1
  342. package/.next/static/chunks/app/page-765bc8a2e911eb4c.js +0 -44
  343. package/.next/static/chunks/app/smoke/session-stream/page-49b8cf27895b9187.js +0 -6
  344. package/.next/static/chunks/next/dist/client/components/builtin/app-error-c47e15c89def27e4.js +0 -1
  345. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-c47e15c89def27e4.js +0 -1
  346. package/.next/static/chunks/next/dist/client/components/builtin/not-found-c47e15c89def27e4.js +0 -1
  347. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c47e15c89def27e4.js +0 -1
  348. package/.next/static/css/4a3f6b9aa8eed19f.css +0 -1
  349. /package/.next/static/{WmuL2h-UefYxq-xz32JzM → zeWki1Z47rqBkR2ph5H6N}/_ssgManifest.js +0 -0
@@ -6,6 +6,7 @@
6
6
  "/api/auth/status/route": "app/api/auth/status/route.js",
7
7
  "/api/auth/totp/route": "app/api/auth/totp/route.js",
8
8
  "/api/default-cwd/route": "app/api/default-cwd/route.js",
9
+ "/api/file-index/route": "app/api/file-index/route.js",
9
10
  "/api/harness/route": "app/api/harness/route.js",
10
11
  "/api/home/route": "app/api/home/route.js",
11
12
  "/api/images/upload/route": "app/api/images/upload/route.js",
@@ -22,57 +23,63 @@
22
23
  "/api/soul/route": "app/api/soul/route.js",
23
24
  "/favicon.ico/route": "app/favicon.ico/route.js",
24
25
  "/icon.svg/route": "app/icon.svg/route.js",
25
- "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
26
26
  "/api/agent/[id]/prepare/route": "app/api/agent/[id]/prepare/route.js",
27
+ "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
27
28
  "/api/agent/[id]/route": "app/api/agent/[id]/route.js",
29
+ "/api/agent/running/events/route": "app/api/agent/running/events/route.js",
28
30
  "/api/agent/running/route": "app/api/agent/running/route.js",
29
31
  "/api/agent/runtime/route": "app/api/agent/runtime/route.js",
30
- "/api/apps/[id]/[[...path]]/route": "app/api/apps/[id]/[[...path]]/route.js",
31
32
  "/api/apps/route": "app/api/apps/route.js",
33
+ "/api/apps/[id]/[[...path]]/route": "app/api/apps/[id]/[[...path]]/route.js",
32
34
  "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
33
35
  "/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
36
+ "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
34
37
  "/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
35
38
  "/api/auth/providers/route": "app/api/auth/providers/route.js",
36
39
  "/api/debug-models/route": "app/api/debug-models/route.js",
37
40
  "/api/file-tree/delete/route": "app/api/file-tree/delete/route.js",
38
41
  "/api/file-tree/mkdir/route": "app/api/file-tree/mkdir/route.js",
39
42
  "/api/file-tree/rename/route": "app/api/file-tree/rename/route.js",
43
+ "/api/file-tree/reveal/route": "app/api/file-tree/reveal/route.js",
40
44
  "/api/file-tree/write/route": "app/api/file-tree/write/route.js",
41
45
  "/api/file-watch/route": "app/api/file-watch/route.js",
42
- "/api/file-tree/reveal/route": "app/api/file-tree/reveal/route.js",
46
+ "/api/files/[...path]/route": "app/api/files/[...path]/route.js",
43
47
  "/api/im/cancel/route": "app/api/im/cancel/route.js",
44
48
  "/api/im/gateway-status/route": "app/api/im/gateway-status/route.js",
45
49
  "/api/im/gateway-token/route": "app/api/im/gateway-token/route.js",
46
50
  "/api/im/project/route": "app/api/im/project/route.js",
47
51
  "/api/im/projects/route": "app/api/im/projects/route.js",
48
52
  "/api/im/session-ids/route": "app/api/im/session-ids/route.js",
49
- "/api/agent/running/events/route": "app/api/agent/running/events/route.js",
53
+ "/api/im/turn/route": "app/api/im/turn/route.js",
50
54
  "/api/internal/runtime/route": "app/api/internal/runtime/route.js",
51
55
  "/api/memory/dismiss/route": "app/api/memory/dismiss/route.js",
52
56
  "/api/memory/promote/route": "app/api/memory/promote/route.js",
53
57
  "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
54
58
  "/api/models-config/route": "app/api/models-config/route.js",
55
59
  "/api/models-config/test/route": "app/api/models-config/test/route.js",
56
- "/api/models/route": "app/api/models/route.js",
57
- "/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
58
60
  "/api/plot-kernels/save/route": "app/api/plot-kernels/save/route.js",
59
61
  "/api/plot-kernels/status/route": "app/api/plot-kernels/status/route.js",
60
62
  "/api/plot-kernels/stop/route": "app/api/plot-kernels/stop/route.js",
63
+ "/api/plugins/route": "app/api/plugins/route.js",
64
+ "/api/project-trust/route": "app/api/project-trust/route.js",
65
+ "/api/plot-kernels/route": "app/api/plot-kernels/route.js",
66
+ "/api/models/route": "app/api/models/route.js",
61
67
  "/api/session-index/events/route": "app/api/session-index/events/route.js",
62
- "/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
68
+ "/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
69
+ "/api/sessions/[id]/media/route": "app/api/sessions/[id]/media/route.js",
63
70
  "/api/sessions/[id]/shadowed/route": "app/api/sessions/[id]/shadowed/route.js",
64
- "/api/im/turn/route": "app/api/im/turn/route.js",
71
+ "/api/settings/route": "app/api/settings/route.js",
72
+ "/api/skills/check/route": "app/api/skills/check/route.js",
65
73
  "/api/skills/install/route": "app/api/skills/install/route.js",
66
74
  "/api/skills/route": "app/api/skills/route.js",
67
- "/api/files/[...path]/route": "app/api/files/[...path]/route.js",
68
75
  "/api/skills/search/route": "app/api/skills/search/route.js",
76
+ "/api/skills/update/route": "app/api/skills/update/route.js",
69
77
  "/api/subagents/status/route": "app/api/subagents/status/route.js",
70
- "/api/plot-kernels/route": "app/api/plot-kernels/route.js",
78
+ "/api/version/route": "app/api/version/route.js",
79
+ "/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
71
80
  "/api/smoke/prompt-admission/route": "app/api/smoke/prompt-admission/route.js",
72
- "/api/settings/route": "app/api/settings/route.js",
73
81
  "/login/page": "app/login/page.js",
74
82
  "/page": "app/page.js",
75
83
  "/smoke/session-stream/page": "app/smoke/session-stream/page.js",
76
- "/api/version/route": "app/api/version/route.js",
77
84
  "/smoke/page": "app/smoke/page.js"
78
85
  }
@@ -1 +1 @@
1
- "use strict";exports.id=1761,exports.ids=[1761],exports.modules={11460:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{H5:()=>A,Oz:()=>C,RD:()=>x,hF:()=>w,m3:()=>B,oB:()=>y,oE:()=>z});var e=c(29021),f=c(33873),g=c(55511),h=c(40402),i=c(16185),j=c(10237),k=c(91179),l=a([h,i,j,k]);[h,i,j,k]=l.then?(await l)():l;let D=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function m(a){return(0,i.Pt)(a)}function n(a){let b=m(a);return(0,f.basename)(b)||b||"No Project"}function o(){let a=(0,j.IJ)();if(!a.ok){if(a.missing)return{registry:(0,j.Vu)(),missing:!0};throw Error(a.error)}return{registry:a.registry,missing:!1}}function p(a){let b,c,{registry:d}=o(),h=(0,j.xE)(d),i=(0,j.xE)(a);b=(0,j.ke)(),(0,e.mkdirSync)((0,f.dirname)(b),{recursive:!0}),c=`${b}.${(0,g.randomUUID)().slice(0,8)}.tmp`,(0,e.writeFileSync)(c,JSON.stringify(a,null,2),"utf8"),(0,e.renameSync)(c,b);let l=h!==i;return l&&(0,k.E8)(),{changed:l}}function q(a){try{return(0,e.statSync)(a).isDirectory()}catch{return!1}}function r(a,b){let c=D.compare(a.displayName,b.displayName);return 0!==c?c:a.cwd.localeCompare(b.cwd)}function s(a,b,c){let d=!0===a.pinned,e=!0===b.pinned;if(d!==e)return d?-1:1;if(c){let c="number"==typeof a.sortOrder&&Number.isFinite(a.sortOrder)?a.sortOrder:null,d="number"==typeof b.sortOrder&&Number.isFinite(b.sortOrder)?b.sortOrder:null;if(null!==c&&null!==d&&c!==d)return c-d;if(null!==c)return -1;if(null!==d)return 1}return r({displayName:a.name?.trim()||n(a.cwd),cwd:a.cwd},{displayName:b.name?.trim()||n(b.cwd),cwd:b.cwd})}function t(a){let b=-1;for(let c of Object.values(a.projects))"number"==typeof c.sortOrder&&Number.isFinite(c.sortOrder)&&(b=Math.max(b,c.sortOrder));return b+1}function u(a,b){let c=m(b),d=new Date().toISOString(),e=a.projects[c],f={cwd:c,addedAt:e?.addedAt??d,lastAccessed:e?.lastAccessed??d,...e?.name?{name:e.name}:{},..."boolean"==typeof e?.hidden?{hidden:e.hidden}:{},..."boolean"==typeof e?.pinned?{pinned:e.pinned}:{},..."number"==typeof e?.sortOrder&&Number.isFinite(e.sortOrder)?{sortOrder:e.sortOrder}:{}};return a.projects[c]=f,f}function v(a,b){a.manualOrder=!0;let c=new Set,d=0;for(let e of b){let b=m(e);if(!b||c.has(b))continue;let f=u(a,b);f.hidden=!1,f.sortOrder=d++,c.add(b)}for(let b of Object.values(a.projects).filter(a=>!a.hidden&&!c.has(a.cwd)).sort((a,b)=>s(a,b,!0)))b.sortOrder=d++}async function w(a={}){let b=!1!==a.includeSessions,{registry:c}=o(),d=b?await (0,h.dQ)({force:!0===a.force}):[],f=function(a){let b=new Map;for(let c of a){let a=m(c.cwd||"");if(!a)continue;let d=b.get(a)??{count:0,last:null,created:null};d.count+=1,(!d.last||c.modified>d.last)&&(d.last=c.modified),(!d.created||c.created<d.created)&&(d.created=c.created),b.set(a,d)}return b}(d),g=new Set([...f.keys(),...Object.keys(c.projects)]),i=[];for(let b of g){let d=c.projects[b];if(d?.hidden&&!a.includeHidden)continue;let g=f.get(b),h=g&&d?"both":g?"session":"manual",j=d?.lastAccessed&&(!g?.last||d.lastAccessed>g.last)?d.lastAccessed:g?.last??d?.lastAccessed??null;i.push({cwd:b,name:d?.name,displayName:d?.name?.trim()||n(b),chatCount:g?.count??0,lastAccessed:j,created:g?.created??d?.addedAt??null,hidden:d?.hidden,pinned:d?.pinned??!1,sortOrder:"number"==typeof d?.sortOrder&&Number.isFinite(d.sortOrder)?d.sortOrder:null,exists:!!(0,e.existsSync)(b)&&q(b),source:h})}return i.sort((a,b)=>{let d=!0===a.pinned,e=!0===b.pinned;if(d!==e)return d?-1:1;if(c.manualOrder){let c="number"==typeof a.sortOrder&&Number.isFinite(a.sortOrder)?a.sortOrder:null,d="number"==typeof b.sortOrder&&Number.isFinite(b.sortOrder)?b.sortOrder:null;if(null!==c&&null!==d&&c!==d)return c-d;if(null!==c)return -1;if(null!==d)return 1}return r(a,b)}),i}function x(a,b={}){let c=m(a);if(!c)throw Error("cwd is required");let{registry:d}=o(),e=new Date().toISOString(),f=d.projects[c],g={cwd:c,addedAt:f?.addedAt??e,lastAccessed:e,...f?.name?{name:f.name}:{},...f?.pinned===!0?{pinned:!0}:{},..."number"==typeof f?.sortOrder&&Number.isFinite(f.sortOrder)?{sortOrder:f.sortOrder}:{},hidden:b.hidden??!1};if(d.manualOrder&&void 0===g.sortOrder&&!g.hidden&&(g.sortOrder=t(d)),void 0!==b.name){let a=b.name?.trim()??"";a&&(g.name=a)}return d.projects[c]=g,p(d),{cwd:c,name:g.name,displayName:g.name?.trim()||n(c),chatCount:0,lastAccessed:g.lastAccessed??null,created:g.addedAt??null,hidden:g.hidden,pinned:g.pinned??!1,sortOrder:"number"==typeof g.sortOrder&&Number.isFinite(g.sortOrder)?g.sortOrder:null,exists:q(c),source:"manual"}}function y(a,b){let c=m(a),d=b.trim();if(!c)throw Error("cwd is required");let{registry:e}=o(),f=e.projects[c];e.projects[c]={cwd:c,addedAt:f?.addedAt??new Date().toISOString(),lastAccessed:new Date().toISOString(),...d?{name:d}:{},...f?.pinned===!0?{pinned:!0}:{},..."number"==typeof f?.sortOrder&&Number.isFinite(f.sortOrder)?{sortOrder:f.sortOrder}:{},hidden:f?.hidden??!1},p(e)}function z(a){let b=m(a);if(!b)throw Error("cwd is required");let{registry:c}=o();delete c.projects[b],p(c)}function A(a){let b=m(a);if(!b)return;let{registry:c}=o(),d=c.projects[b],e={cwd:b,addedAt:d?.addedAt??new Date().toISOString(),lastAccessed:new Date().toISOString(),...d?.name?{name:d.name}:{},...d?.pinned===!0?{pinned:!0}:{},..."number"==typeof d?.sortOrder&&Number.isFinite(d.sortOrder)?{sortOrder:d.sortOrder}:{},hidden:!1};c.manualOrder&&void 0===e.sortOrder&&(e.sortOrder=t(c)),c.projects[b]=e,p(c)}function B(a,b){let c=m(a);if(!c)throw Error("cwd is required");let{registry:d}=o(),e=u(d,c);if(e.hidden=!1,e.lastAccessed=new Date().toISOString(),e.pinned=b,d.manualOrder){let a=Object.values(d.projects).filter(a=>!a.hidden).sort((a,b)=>s(a,b,!0)).map(a=>a.cwd).filter(a=>a!==c),b=a.findIndex(a=>d.projects[a]?.pinned!==!0),e=-1===b?a.length:b;a.splice(e,0,c),v(d,a)}p(d)}function C(a){let{registry:b}=o();v(b,a),p(b)}d()}catch(a){d(a)}})},31761:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$7:()=>r,$N:()=>q,Cv:()=>y,Dg:()=>w,Mj:()=>u,PB:()=>v,Rz:()=>A,SR:()=>x,_Q:()=>B,ht:()=>t,oc:()=>C,oz:()=>s,rX:()=>D,wY:()=>p,y5:()=>E});var e=c(29021),f=c(33873),g=c(55511),h=c(11460),i=c(61367),j=a([h,i]);function k(a){if(!(0,e.existsSync)(a))return null;try{return JSON.parse((0,e.readFileSync)(a,"utf8"))}catch{return null}}function l(a,b){(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0,mode:448}),(0,e.writeFileSync)(a,JSON.stringify(b,null,2),"utf8")}function m(){let a="0123456789",b="";for(let c=0;c<6;c++)b+=a[Math.floor(Math.random()*a.length)];return b}function n(a,b){return null===a?null:"string"!=typeof a?b:a.trim()||null}function o(a){let b=(0,i.Xi)(a);if(!(0,e.existsSync)(b))return{config:null,secret:null};let c=k(b);if(!c)return{config:null,secret:null};let d="string"==typeof c.botSecret?c.botSecret.trim():null,f={enabled:!0===c.enabled,channel:(c.channel,"wecom"),botId:"string"==typeof c.botId?c.botId.trim():"",requireMentionInGroup:!0===c.requireMentionInGroup,allowedUsers:Array.isArray(c.allowedUsers)?c.allowedUsers.filter(a=>"string"==typeof a&&a.trim().length>0):[],pairingCode:"string"==typeof c.pairingCode&&c.pairingCode.trim()?c.pairingCode.trim():m(),boundChatId:n(c.boundChatId,null),modelProvider:n(c.modelProvider,null),modelId:n(c.modelId,null),updatedAt:"string"==typeof c.updatedAt?c.updatedAt:new Date().toISOString()};try{l((0,i.ve)(a),f),d&&l((0,i.FK)(a),{botSecret:d}),(0,e.unlinkSync)(b);let c=(0,i.bj)(a);if((0,e.existsSync)(c)){let b=k(c);b?.sessionId&&l((0,i.iK)(a),b),(0,e.unlinkSync)(c)}}catch{}return{config:f,secret:d}}function p(a){let b=a.trim();if(!b)return null;let c=(0,i.ve)(b);if((0,e.existsSync)(c)){let a=k(c);if(a)return{enabled:!0===a.enabled,channel:(a.channel,"wecom"),botId:"string"==typeof a.botId?a.botId.trim():"",requireMentionInGroup:!0===a.requireMentionInGroup,allowedUsers:Array.isArray(a.allowedUsers)?a.allowedUsers.filter(a=>"string"==typeof a&&a.trim().length>0):[],pairingCode:"string"==typeof a.pairingCode&&a.pairingCode.trim()?a.pairingCode.trim():m(),boundChatId:n(a.boundChatId,null),modelProvider:n(a.modelProvider,null),modelId:n(a.modelId,null),updatedAt:a.updatedAt??new Date().toISOString()}}return o(b).config}function q(a){let b=a.trim();if(!b)return null;let c=(0,i.FK)(b),d=k(c);if(d?.botSecret?.trim())return d;let e=o(b);return e.secret?{botSecret:e.secret}:null}function r(a,b){let c=a.trim(),d=p(c)??{enabled:!1,channel:"wecom",botId:"",requireMentionInGroup:!0,allowedUsers:[],pairingCode:m()},f={enabled:"boolean"==typeof b.enabled?b.enabled:d.enabled,channel:"wecom"===b.channel?"wecom":d.channel,botId:"string"==typeof b.botId?b.botId.trim():d.botId,requireMentionInGroup:"boolean"==typeof b.requireMentionInGroup?b.requireMentionInGroup:d.requireMentionInGroup,allowedUsers:Array.isArray(b.allowedUsers)?b.allowedUsers.filter(a=>"string"==typeof a&&a.trim().length>0):d.allowedUsers,pairingCode:"string"==typeof b.pairingCode&&b.pairingCode.trim()?b.pairingCode.trim().toUpperCase():d.pairingCode,boundChatId:null===b.boundChatId||"string"==typeof b.boundChatId?null===b.boundChatId?null:b.boundChatId.trim()||null:d.boundChatId,modelProvider:n(b.modelProvider,d.modelProvider),modelId:n(b.modelId,d.modelId),updatedAt:new Date().toISOString()};l((0,i.ve)(c),f);let g=(0,i.Xi)(c);if((0,e.existsSync)(g)){try{(0,e.unlinkSync)(g)}catch{}let a=(0,i.bj)(c);try{(0,e.existsSync)(a)&&(0,e.unlinkSync)(a)}catch{}}return f}function s(a,b){let c={botSecret:b.trim()};l((0,i.FK)(a.trim()),c);let d=(0,i.Xi)(a.trim());if((0,e.existsSync)(d))try{(0,e.unlinkSync)(d)}catch{}return c}function t(a){let b=a.trim();for(let a of[(0,i.ve)(b),(0,i.FK)(b),(0,i.iK)(b),(0,i.Xi)(b),(0,i.bj)(b)])try{(0,e.existsSync)(a)&&(0,e.unlinkSync)(a)}catch{}}function u(a){return k((0,i.iK)(a.trim()))}function v(a,b){let c={sessionId:b,updatedAt:new Date().toISOString()};return l((0,i.iK)(a.trim()),c),c}function w(a){let b=(0,i.iK)(a.trim());return!!(0,e.existsSync)(b)&&((0,e.unlinkSync)(b),!0)}function x(){return k((0,i.vr)())}function y(){var a;let b=x()??{};if(b.token?.trim())return b.token.trim();let c=(0,g.randomBytes)(24).toString("hex");return a={...b,token:c},l((0,i.vr)(),a),c}function z(a,b){let c=q(a),d=u(a);return{...b,cwd:a,projectKey:(0,i.F3)(a),hasSecret:!!c?.botSecret?.trim(),sessionId:d?.sessionId??null}}async function A(){let a=[],b=new Set;for(let c of(await (0,h.hF)({includeHidden:!0}))){let d=c.cwd.trim().replace(/[\\/]+$/,"");if(!d||b.has(d))continue;b.add(d);let e=p(d);e?.enabled&&a.push(z(d,e))}let{getAgentDir:d}=await Promise.resolve().then(c.bind(c,75430)),g=(0,f.join)(d(),"im");try{for(let c of(0,e.readdirSync)(g)){if(!c.endsWith(".json")||c.endsWith("-session.json")||"gateway.json"===c)continue;let d=(0,f.join)(g,c);try{let c=JSON.parse((0,e.readFileSync)(d,"utf-8"));if(!0!==c.enabled)continue;let f=("string"==typeof c.cwd?c.cwd.trim():"")||"";if(!f||b.has(f))continue;b.add(f);let g=p(f);g?.enabled&&a.push(z(f,g))}catch{}}}catch{}return a}function B(){let a=function(){let a=(()=>{try{return c(Object(function(){var a=Error("Cannot find module '@earendil-works/pi-coding-agent'");throw a.code="MODULE_NOT_FOUND",a}())).getAgentDir()}catch{let a=c(21820);return(0,f.join)(a.homedir(),".pi","agent")}})(),b=new Set,d=(0,f.join)(a,"annovibe-projects.json");if((0,e.existsSync)(d))try{let a=JSON.parse((0,e.readFileSync)(d,"utf-8"));for(let[c,d]of Object.entries(a.projects??{})){let a=("string"==typeof d?.cwd?d.cwd:c).trim().replace(/[\\/]+$/,"");a&&b.add(a)}}catch{}let g=(0,f.join)(a,"im");if((0,e.existsSync)(g))try{for(let a of(0,e.readdirSync)(g))if(!(!a.endsWith(".json")||a.endsWith("-session.json"))&&"gateway.json"!==a)try{let c=JSON.parse((0,e.readFileSync)((0,f.join)(g,a),"utf-8"));"string"==typeof c.cwd&&c.cwd.trim()&&b.add(c.cwd.trim().replace(/[\\/]+$/,""))}catch{}}catch{}return[...b]}(),b=[];for(let c of a){let a=p(c);if(!a?.enabled||!a.botId)continue;let d=function(a,b){let c=q(a)?.botSecret?.trim()??"";if(!c)return null;let d=u(a);return{...b,cwd:a,projectKey:(0,i.F3)(a),hasSecret:!0,sessionId:d?.sessionId??null,botSecret:c}}(c,a);d&&b.push(d)}return b}function C(a,b){let c=b.trim();return!!c&&0!==a.allowedUsers.length&&a.allowedUsers.some(a=>a.trim()===c)}function D(a,b,c,d){let e=d.trim().toUpperCase(),f=a.pairingCode.trim().toUpperCase();return e===f||e===`PAIR ${f}`?C(a,c)?{config:a,paired:!0,reply:"已授权。你现在可以与此 bot 交互了。"}:{config:r(b,{allowedUsers:[...a.allowedUsers,c.trim()]}),paired:!0,reply:"已授权。你现在可以与此 bot 交互了。"}:{config:a,paired:!1}}function E(a,b){return a.pairingCode?`${b} 的 bot 需要授权。 发送配对码 ${a.pairingCode} 即可。`:`${b} 的 bot 尚未配置。`}[h,i]=j.then?(await j)():j,d()}catch(a){d(a)}})},61367:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{F3:()=>i,FK:()=>k,Xi:()=>n,bj:()=>o,iK:()=>l,ve:()=>j,vr:()=>m});var e=c(55511),f=c(33873),g=c(75430),h=a([g]);function i(a){return(0,e.createHash)("sha1").update(a).digest("hex")}function j(a){return(0,f.join)(a,".annovibe","im.json")}function k(a){return(0,f.join)((0,g.getAgentDir)(),"im-secrets",`${i(a)}.json`)}function l(a){return(0,f.join)((0,g.getAgentDir)(),"im-sessions",`${i(a)}.json`)}function m(){return(0,f.join)((0,g.getAgentDir)(),"im","gateway.json")}function n(a){let b=(0,e.createHash)("sha256").update(a).digest("hex").slice(0,16);return(0,f.join)((0,g.getAgentDir)(),"im",`${b}.json`)}function o(a){let b=(0,e.createHash)("sha256").update(a).digest("hex").slice(0,16);return(0,f.join)((0,g.getAgentDir)(),"im",`${b}-session.json`)}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})}};
1
+ "use strict";exports.id=1761,exports.ids=[1761],exports.modules={11460:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{H5:()=>B,Oz:()=>D,RD:()=>y,hF:()=>x,m3:()=>C,oB:()=>z,oE:()=>A});var e=c(29021),f=c(33873),g=c(55511),h=c(40402),i=c(80547),j=c(16185),k=c(10237),l=c(91179),m=a([h,i,j,k,l]);[h,i,j,k,l]=m.then?(await m)():m;let E=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function n(a){return(0,j.Pt)(a)}function o(a){let b=n(a);return(0,f.basename)(b)||b||"No Project"}function p(){let a=(0,k.IJ)();if(!a.ok){if(a.missing)return{registry:(0,k.Vu)(),missing:!0};throw Error(a.error)}return{registry:a.registry,missing:!1}}function q(a){let b,c,{registry:d}=p(),h=(0,k.xE)(d),i=(0,k.xE)(a);b=(0,k.ke)(),(0,e.mkdirSync)((0,f.dirname)(b),{recursive:!0}),c=`${b}.${(0,g.randomUUID)().slice(0,8)}.tmp`,(0,e.writeFileSync)(c,JSON.stringify(a,null,2),"utf8"),(0,e.renameSync)(c,b);let j=h!==i;return j&&(0,l.E8)(),{changed:j}}function r(a){try{return(0,e.statSync)(a).isDirectory()}catch{return!1}}function s(a,b){let c=E.compare(a.displayName,b.displayName);return 0!==c?c:a.cwd.localeCompare(b.cwd)}function t(a,b,c){let d=!0===a.pinned,e=!0===b.pinned;if(d!==e)return d?-1:1;if(c){let c="number"==typeof a.sortOrder&&Number.isFinite(a.sortOrder)?a.sortOrder:null,d="number"==typeof b.sortOrder&&Number.isFinite(b.sortOrder)?b.sortOrder:null;if(null!==c&&null!==d&&c!==d)return c-d;if(null!==c)return -1;if(null!==d)return 1}return s({displayName:a.name?.trim()||o(a.cwd),cwd:a.cwd},{displayName:b.name?.trim()||o(b.cwd),cwd:b.cwd})}function u(a){let b=-1;for(let c of Object.values(a.projects))"number"==typeof c.sortOrder&&Number.isFinite(c.sortOrder)&&(b=Math.max(b,c.sortOrder));return b+1}function v(a,b){let c=n(b),d=new Date().toISOString(),e=a.projects[c],f={cwd:c,addedAt:e?.addedAt??d,lastAccessed:e?.lastAccessed??d,...e?.name?{name:e.name}:{},..."boolean"==typeof e?.hidden?{hidden:e.hidden}:{},..."boolean"==typeof e?.pinned?{pinned:e.pinned}:{},..."number"==typeof e?.sortOrder&&Number.isFinite(e.sortOrder)?{sortOrder:e.sortOrder}:{}};return a.projects[c]=f,f}function w(a,b){a.manualOrder=!0;let c=new Set,d=0;for(let e of b){let b=n(e);if(!b||c.has(b))continue;let f=v(a,b);f.hidden=!1,f.sortOrder=d++,c.add(b)}for(let b of Object.values(a.projects).filter(a=>!a.hidden&&!c.has(a.cwd)).sort((a,b)=>t(a,b,!0)))b.sortOrder=d++}async function x(a={}){let b=!1!==a.includeSessions,{registry:c}=p(),d=b?await (0,h.dQ)({force:!0===a.force}):[],f=function(a){let b=new Map;for(let c of a){let a=n(c.cwd||"");if(!a)continue;let d=b.get(a)??{count:0,last:null,created:null};d.count+=1,(!d.last||c.modified>d.last)&&(d.last=c.modified),(!d.created||c.created<d.created)&&(d.created=c.created),b.set(a,d)}return b}(d),g=new Set([...f.keys(),...Object.keys(c.projects)]),i=[];for(let b of g){let d=c.projects[b];if(d?.hidden&&!a.includeHidden)continue;let g=f.get(b),h=g&&d?"both":g?"session":"manual",j=d?.lastAccessed&&(!g?.last||d.lastAccessed>g.last)?d.lastAccessed:g?.last??d?.lastAccessed??null;i.push({cwd:b,name:d?.name,displayName:d?.name?.trim()||o(b),chatCount:g?.count??0,lastAccessed:j,created:g?.created??d?.addedAt??null,hidden:d?.hidden,pinned:d?.pinned??!1,sortOrder:"number"==typeof d?.sortOrder&&Number.isFinite(d.sortOrder)?d.sortOrder:null,exists:!!(0,e.existsSync)(b)&&r(b),source:h})}return i.sort((a,b)=>{let d=!0===a.pinned,e=!0===b.pinned;if(d!==e)return d?-1:1;if(c.manualOrder){let c="number"==typeof a.sortOrder&&Number.isFinite(a.sortOrder)?a.sortOrder:null,d="number"==typeof b.sortOrder&&Number.isFinite(b.sortOrder)?b.sortOrder:null;if(null!==c&&null!==d&&c!==d)return c-d;if(null!==c)return -1;if(null!==d)return 1}return s(a,b)}),i}function y(a,b={}){let c=n(a);if(!c)throw Error("cwd is required");(0,i.wz)(c);let{registry:d}=p(),e=new Date().toISOString(),f=d.projects[c],g={cwd:c,addedAt:f?.addedAt??e,lastAccessed:e,...f?.name?{name:f.name}:{},...f?.pinned===!0?{pinned:!0}:{},..."number"==typeof f?.sortOrder&&Number.isFinite(f.sortOrder)?{sortOrder:f.sortOrder}:{},hidden:b.hidden??!1};if(d.manualOrder&&void 0===g.sortOrder&&!g.hidden&&(g.sortOrder=u(d)),void 0!==b.name){let a=b.name?.trim()??"";a&&(g.name=a)}return d.projects[c]=g,q(d),{cwd:c,name:g.name,displayName:g.name?.trim()||o(c),chatCount:0,lastAccessed:g.lastAccessed??null,created:g.addedAt??null,hidden:g.hidden,pinned:g.pinned??!1,sortOrder:"number"==typeof g.sortOrder&&Number.isFinite(g.sortOrder)?g.sortOrder:null,exists:r(c),source:"manual"}}function z(a,b){let c=n(a),d=b.trim();if(!c)throw Error("cwd is required");let{registry:e}=p(),f=e.projects[c];e.projects[c]={cwd:c,addedAt:f?.addedAt??new Date().toISOString(),lastAccessed:new Date().toISOString(),...d?{name:d}:{},...f?.pinned===!0?{pinned:!0}:{},..."number"==typeof f?.sortOrder&&Number.isFinite(f.sortOrder)?{sortOrder:f.sortOrder}:{},hidden:f?.hidden??!1},q(e)}function A(a){let b=n(a);if(!b)throw Error("cwd is required");let{registry:c}=p();delete c.projects[b],q(c)}function B(a){let b=n(a);if(!b)return;let{registry:c}=p(),d=c.projects[b],e={cwd:b,addedAt:d?.addedAt??new Date().toISOString(),lastAccessed:new Date().toISOString(),...d?.name?{name:d.name}:{},...d?.pinned===!0?{pinned:!0}:{},..."number"==typeof d?.sortOrder&&Number.isFinite(d.sortOrder)?{sortOrder:d.sortOrder}:{},hidden:!1};c.manualOrder&&void 0===e.sortOrder&&(e.sortOrder=u(c)),c.projects[b]=e,q(c)}function C(a,b){let c=n(a);if(!c)throw Error("cwd is required");let{registry:d}=p(),e=v(d,c);if(e.hidden=!1,e.lastAccessed=new Date().toISOString(),e.pinned=b,d.manualOrder){let a=Object.values(d.projects).filter(a=>!a.hidden).sort((a,b)=>t(a,b,!0)).map(a=>a.cwd).filter(a=>a!==c),b=a.findIndex(a=>d.projects[a]?.pinned!==!0),e=-1===b?a.length:b;a.splice(e,0,c),w(d,a)}q(d)}function D(a){let{registry:b}=p();w(b,a),q(b)}d()}catch(a){d(a)}})},31761:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$7:()=>r,$N:()=>q,Cv:()=>y,Dg:()=>w,Mj:()=>u,PB:()=>v,Rz:()=>A,SR:()=>x,_Q:()=>B,ht:()=>t,oc:()=>C,oz:()=>s,rX:()=>D,wY:()=>p,y5:()=>E});var e=c(29021),f=c(33873),g=c(55511),h=c(11460),i=c(61367),j=a([h,i]);function k(a){if(!(0,e.existsSync)(a))return null;try{return JSON.parse((0,e.readFileSync)(a,"utf8"))}catch{return null}}function l(a,b){(0,e.mkdirSync)((0,f.dirname)(a),{recursive:!0,mode:448}),(0,e.writeFileSync)(a,JSON.stringify(b,null,2),"utf8")}function m(){let a="0123456789",b="";for(let c=0;c<6;c++)b+=a[Math.floor(Math.random()*a.length)];return b}function n(a,b){return null===a?null:"string"!=typeof a?b:a.trim()||null}function o(a){let b=(0,i.Xi)(a);if(!(0,e.existsSync)(b))return{config:null,secret:null};let c=k(b);if(!c)return{config:null,secret:null};let d="string"==typeof c.botSecret?c.botSecret.trim():null,f={enabled:!0===c.enabled,channel:(c.channel,"wecom"),botId:"string"==typeof c.botId?c.botId.trim():"",requireMentionInGroup:!0===c.requireMentionInGroup,allowedUsers:Array.isArray(c.allowedUsers)?c.allowedUsers.filter(a=>"string"==typeof a&&a.trim().length>0):[],pairingCode:"string"==typeof c.pairingCode&&c.pairingCode.trim()?c.pairingCode.trim():m(),boundChatId:n(c.boundChatId,null),modelProvider:n(c.modelProvider,null),modelId:n(c.modelId,null),updatedAt:"string"==typeof c.updatedAt?c.updatedAt:new Date().toISOString()};try{l((0,i.ve)(a),f),d&&l((0,i.FK)(a),{botSecret:d}),(0,e.unlinkSync)(b);let c=(0,i.bj)(a);if((0,e.existsSync)(c)){let b=k(c);b?.sessionId&&l((0,i.iK)(a),b),(0,e.unlinkSync)(c)}}catch{}return{config:f,secret:d}}function p(a){let b=a.trim();if(!b)return null;let c=(0,i.ve)(b);if((0,e.existsSync)(c)){let a=k(c);if(a)return{enabled:!0===a.enabled,channel:(a.channel,"wecom"),botId:"string"==typeof a.botId?a.botId.trim():"",requireMentionInGroup:!0===a.requireMentionInGroup,allowedUsers:Array.isArray(a.allowedUsers)?a.allowedUsers.filter(a=>"string"==typeof a&&a.trim().length>0):[],pairingCode:"string"==typeof a.pairingCode&&a.pairingCode.trim()?a.pairingCode.trim():m(),boundChatId:n(a.boundChatId,null),modelProvider:n(a.modelProvider,null),modelId:n(a.modelId,null),updatedAt:a.updatedAt??new Date().toISOString()}}return o(b).config}function q(a){let b=a.trim();if(!b)return null;let c=(0,i.FK)(b),d=k(c);if(d?.botSecret?.trim())return d;let e=o(b);return e.secret?{botSecret:e.secret}:null}function r(a,b){let c=a.trim(),d=p(c)??{enabled:!1,channel:"wecom",botId:"",requireMentionInGroup:!0,allowedUsers:[],pairingCode:m()},f={enabled:"boolean"==typeof b.enabled?b.enabled:d.enabled,channel:"wecom"===b.channel?"wecom":d.channel,botId:"string"==typeof b.botId?b.botId.trim():d.botId,requireMentionInGroup:"boolean"==typeof b.requireMentionInGroup?b.requireMentionInGroup:d.requireMentionInGroup,allowedUsers:Array.isArray(b.allowedUsers)?b.allowedUsers.filter(a=>"string"==typeof a&&a.trim().length>0):d.allowedUsers,pairingCode:"string"==typeof b.pairingCode&&b.pairingCode.trim()?b.pairingCode.trim().toUpperCase():d.pairingCode,boundChatId:null===b.boundChatId||"string"==typeof b.boundChatId?null===b.boundChatId?null:b.boundChatId.trim()||null:d.boundChatId,modelProvider:n(b.modelProvider,d.modelProvider),modelId:n(b.modelId,d.modelId),updatedAt:new Date().toISOString()};l((0,i.ve)(c),f);let g=(0,i.Xi)(c);if((0,e.existsSync)(g)){try{(0,e.unlinkSync)(g)}catch{}let a=(0,i.bj)(c);try{(0,e.existsSync)(a)&&(0,e.unlinkSync)(a)}catch{}}return f}function s(a,b){let c={botSecret:b.trim()};l((0,i.FK)(a.trim()),c);let d=(0,i.Xi)(a.trim());if((0,e.existsSync)(d))try{(0,e.unlinkSync)(d)}catch{}return c}function t(a){let b=a.trim();for(let a of[(0,i.ve)(b),(0,i.FK)(b),(0,i.iK)(b),(0,i.Xi)(b),(0,i.bj)(b)])try{(0,e.existsSync)(a)&&(0,e.unlinkSync)(a)}catch{}}function u(a){return k((0,i.iK)(a.trim()))}function v(a,b){let c={sessionId:b,updatedAt:new Date().toISOString()};return l((0,i.iK)(a.trim()),c),c}function w(a){let b=(0,i.iK)(a.trim());return!!(0,e.existsSync)(b)&&((0,e.unlinkSync)(b),!0)}function x(){return k((0,i.vr)())}function y(){var a;let b=x()??{};if(b.token?.trim())return b.token.trim();let c=(0,g.randomBytes)(24).toString("hex");return a={...b,token:c},l((0,i.vr)(),a),c}function z(a,b){let c=q(a),d=u(a);return{...b,cwd:a,projectKey:(0,i.F3)(a),hasSecret:!!c?.botSecret?.trim(),sessionId:d?.sessionId??null}}async function A(){let a=[],b=new Set;for(let c of(await (0,h.hF)({includeHidden:!0}))){let d=c.cwd.trim().replace(/[\\/]+$/,"");if(!d||b.has(d))continue;b.add(d);let e=p(d);e?.enabled&&a.push(z(d,e))}let{getAgentDir:d}=await Promise.resolve().then(c.bind(c,75430)),g=(0,f.join)(d(),"im");try{for(let c of(0,e.readdirSync)(g)){if(!c.endsWith(".json")||c.endsWith("-session.json")||"gateway.json"===c)continue;let d=(0,f.join)(g,c);try{let c=JSON.parse((0,e.readFileSync)(d,"utf-8"));if(!0!==c.enabled)continue;let f=("string"==typeof c.cwd?c.cwd.trim():"")||"";if(!f||b.has(f))continue;b.add(f);let g=p(f);g?.enabled&&a.push(z(f,g))}catch{}}}catch{}return a}function B(){let a=function(){let a=(()=>{try{return c(Object(function(){var a=Error("Cannot find module '@earendil-works/pi-coding-agent'");throw a.code="MODULE_NOT_FOUND",a}())).getAgentDir()}catch{let a=c(21820);return(0,f.join)(a.homedir(),".pi","agent")}})(),b=new Set,d=(0,f.join)(a,"annovibe-projects.json");if((0,e.existsSync)(d))try{let a=JSON.parse((0,e.readFileSync)(d,"utf-8"));for(let[c,d]of Object.entries(a.projects??{})){let a=("string"==typeof d?.cwd?d.cwd:c).trim().replace(/[\\/]+$/,"");a&&b.add(a)}}catch{}let g=(0,f.join)(a,"im");if((0,e.existsSync)(g))try{for(let a of(0,e.readdirSync)(g))if(!(!a.endsWith(".json")||a.endsWith("-session.json"))&&"gateway.json"!==a)try{let c=JSON.parse((0,e.readFileSync)((0,f.join)(g,a),"utf-8"));"string"==typeof c.cwd&&c.cwd.trim()&&b.add(c.cwd.trim().replace(/[\\/]+$/,""))}catch{}}catch{}return[...b]}(),b=[];for(let c of a){let a=p(c);if(!a?.enabled||!a.botId)continue;let d=function(a,b){let c=q(a)?.botSecret?.trim()??"";if(!c)return null;let d=u(a);return{...b,cwd:a,projectKey:(0,i.F3)(a),hasSecret:!0,sessionId:d?.sessionId??null,botSecret:c}}(c,a);d&&b.push(d)}return b}function C(a,b){let c=b.trim();return!!c&&0!==a.allowedUsers.length&&a.allowedUsers.some(a=>a.trim()===c)}function D(a,b,c,d){let e=d.trim().toUpperCase(),f=a.pairingCode.trim().toUpperCase();return e===f||e===`PAIR ${f}`?C(a,c)?{config:a,paired:!0,reply:"已授权。你现在可以与此 bot 交互了。"}:{config:r(b,{allowedUsers:[...a.allowedUsers,c.trim()]}),paired:!0,reply:"已授权。你现在可以与此 bot 交互了。"}:{config:a,paired:!1}}function E(a,b){return a.pairingCode?`${b} 的 bot 需要授权。 发送配对码 ${a.pairingCode} 即可。`:`${b} 的 bot 尚未配置。`}[h,i]=j.then?(await j)():j,d()}catch(a){d(a)}})},61367:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{F3:()=>i,FK:()=>k,Xi:()=>n,bj:()=>o,iK:()=>l,ve:()=>j,vr:()=>m});var e=c(55511),f=c(33873),g=c(75430),h=a([g]);function i(a){return(0,e.createHash)("sha1").update(a).digest("hex")}function j(a){return(0,f.join)(a,".annovibe","im.json")}function k(a){return(0,f.join)((0,g.getAgentDir)(),"im-secrets",`${i(a)}.json`)}function l(a){return(0,f.join)((0,g.getAgentDir)(),"im-sessions",`${i(a)}.json`)}function m(){return(0,f.join)((0,g.getAgentDir)(),"im","gateway.json")}function n(a){let b=(0,e.createHash)("sha256").update(a).digest("hex").slice(0,16);return(0,f.join)((0,g.getAgentDir)(),"im",`${b}.json`)}function o(a){let b=(0,e.createHash)("sha256").update(a).digest("hex").slice(0,16);return(0,f.join)((0,g.getAgentDir)(),"im",`${b}-session.json`)}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B7:()=>o,mc:()=>n,qG:()=>p,wz:()=>m});var e=c(29021),f=c(21820),g=c(33873),h=c(40402),i=c(10237),j=c(82536),k=a([h,i]);function l(){return globalThis.__annovibeAdditionalAllowedRoots||(globalThis.__annovibeAdditionalAllowedRoots=new Set),globalThis.__annovibeAdditionalAllowedRoots}function m(a){let b=a?.trim();if(!b)return;let c=(0,j.Nw)(b);l().add(c),globalThis.__annovibeAllowedRootsCache?.roots.add(c)}async function n(){let a=Date.now(),b=globalThis.__annovibeAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=new Set;try{for(let a of(await (0,h.dQ)()))a.cwd&&c.add((0,j.Nw)(a.cwd))}catch{}let d=(0,i.IJ)();if(d.ok)for(let a of Object.values(d.registry.projects))a.cwd&&c.add((0,j.Nw)(a.cwd));try{for(let a of(0,e.readdirSync)((0,f.homedir)()))/^pi-cwd-\d{8}$/.test(a)&&c.add((0,j.Nw)((0,g.join)((0,f.homedir)(),a)))}catch{}for(let a of l())c.add(a);return globalThis.__annovibeAllowedRootsCache={roots:c,expiresAt:a+5e3},c}function o(a,b){return(0,j.xk)(a,b)}function p(a,b){if(!(0,j.o4)(a,b))return!1;let c=a;for(let a=0;a<64;a++){if((0,j.xk)(c,b))return!0;if((0,e.existsSync)(c))break;let a=(0,g.join)(c,"..");if(a===c)break;c=a}return!1}[h,i]=k.then?(await k)():k,d()}catch(a){d(a)}})},82536:(a,b,c)=>{c.d(b,{Nw:()=>h,o4:()=>j,uK:()=>i,xk:()=>k});var d=c(29021),e=c(33873),f=c.n(e);let g=/^[a-zA-Z]:[\\/]/;function h(a){return a.replace(/\\/g,"/")}function i(a){return g.test(a)||a.startsWith("\\\\")||a.startsWith("//")}function j(a,b){for(let c of b){let b=i(a)||i(c),d=b?f().win32:f(),e=b?"\\":f().sep,g=d.resolve(a),h=d.resolve(c),j=b?g.toLowerCase():g,k=b?h.toLowerCase():h,l=k.endsWith(e)?k:k+e;if(j===k||j.startsWith(l))return!0}return!1}function k(a,b){let c;try{c=(0,d.realpathSync)(a)}catch{return!1}let e=new Set;for(let a of b)try{e.add((0,d.realpathSync)(a))}catch{}return j(c,e)}}};
@@ -1,3 +1,5 @@
1
- "use strict";exports.id=402,exports.ids=[402],exports.modules={12039:(a,b,c)=>{c.d(b,{B:()=>d});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}}},40402:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BR:()=>w,CF:()=>B,DK:()=>x,O8:()=>v,Pt:()=>l.Pt,Uv:()=>y,dQ:()=>r,ev:()=>A,gO:()=>m.g,lG:()=>C,os:()=>u,r2:()=>s});var e=c(75430),f=c(12039),g=c(74788),h=c(77443),i=c(29021),j=c(33873),k=c(50723),l=c(16185),m=c(47240),n=a([e,g,h,l]);function o(a,b){let c;try{c=(0,i.openSync)(a,"r");let d=(0,i.fstatSync)(c).size,e=Math.min(d,b),f=Buffer.alloc(e),g=(0,i.readSync)(c,f,0,e,d-e);return f.toString("utf-8",0,g)}finally{if(void 0!==c)try{(0,i.closeSync)(c)}catch{}}}function p(a){let b=a.split("\n");for(let a=b.length-1;a>=1;a--){let c=b[a].trim();if(c)try{let a=JSON.parse(c);if("session_info"!==a.type)continue;let b=a.name;if("string"==typeof b&&b.trim())return b.trim()}catch{}}}function q(a,b={}){let c=[];for(let b of a)if((0,i.existsSync)(b))try{for(let a of(0,i.readdirSync)(b))a.endsWith(".jsonl")&&c.push((0,j.join)(b,a))}catch{}let d=(0,g.tS)({force:!0===b.force}),e=t(),f=[];for(let a of c)try{let c,g,j,m=(0,k.V0)(a),n=b.force?null:(0,h._E)(a,m);if(n){if(c={id:n.id,cwd:n.cwd,timestamp:n.created,parentSession:n.parentSession,title:n.title},g=n.messageCount,j=n.firstMessage,void 0===n.title){let b=p(o(a,8192));c.title=b??"",(0,h.C8)(a,{...n,identity:m,title:c.title})}}else{let b=function(a){let b;try{b=(0,i.openSync)(a,"r");let c=Buffer.alloc(5120),d=(0,i.readSync)(b,c,0,5120,0);return c.toString("utf-8",0,d)}finally{if(void 0!==b)try{(0,i.closeSync)(b)}catch{}}}(a);if(!(c=function(a){let b=a.split("\n")[0]?.trim();if(!b)return null;try{let a=JSON.parse(b);if("session"!==a.type||"string"!=typeof a.id)return null;return{id:a.id,cwd:"string"==typeof a.cwd?a.cwd:"",timestamp:"string"==typeof a.timestamp?a.timestamp:new Date().toISOString(),parentSession:"string"==typeof a.parentSession?a.parentSession:void 0,title:"string"==typeof a.title?a.title:void 0}}catch{return null}}(b)))continue;c.title||(c.title=p(o(a,8192))??""),g=function(a){let b=0,c=-1;for(;-1!==(c=a.indexOf('"type":"message"',c+1));)b++;return b}(b),j=function(a){let b=a.split("\n");for(let a=1;a<b.length;a++){let c=b[a].trim();if(c)try{let a=JSON.parse(c);if("message"!==a.type)continue;let b=a.message;if(b?.role!=="user")continue;let d=b.content;if("string"==typeof d)return d;if(Array.isArray(d)){let a=d.find(a=>"object"==typeof a&&null!==a&&"text"===a.type);if(a?.text)return a.text}}catch{}}return""}(b)||"(no messages)",(0,h.C8)(a,{identity:m,id:c.id,cwd:(0,l.Pt)(c.cwd),created:c.timestamp,parentSession:c.parentSession,title:c.title,messageCount:g,firstMessage:j})}let q=(0,l.Pt)(c.cwd);if(b.filterCwd&&q!==b.filterCwd)continue;let r=d[c.id]??null;e.set(c.id,a),f.push({path:a,id:c.id,cwd:q,name:c.title,created:c.timestamp,modified:new Date((0,k.$Q)(m)).toISOString(),messageCount:g,firstMessage:j,parentSessionId:c.parentSession?function(a){let b=(a.split("/").pop()??"").match(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i);return b?.[0]}(c.parentSession):void 0,sessionKind:r?.sessionKind,createdBy:r?.createdBy,sessionMeta:r})}catch{}return f.sort((a,b)=>new Date(b.modified).getTime()-new Date(a.modified).getTime()),f}async function r(a={}){let b=(0,l.tE)(),c=[];try{for(let a of(0,i.readdirSync)(b)){let d=(0,j.join)(b,a);try{(0,i.statSync)(d).isDirectory()&&c.push(d)}catch{}}}catch{}return q(c,a)}async function s(a,b={}){let c=(0,l.Pt)(a);return q([(0,l.D0)(c)],{...b,filterCwd:c})}function t(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}async function u(a){let b=t().get(a);if(b)return b;let c=(0,h.Y1)(a);if(c)try{let b=(0,k.V0)(c),d=(0,h._E)(c,b);if(d&&d.id===a)return t().set(a,c),c}catch{}return await r(),t().get(a)??null}function v(a,b){t().set(a,b)}function w(a){t().delete(a)}function x(a){return e.SessionManager.open(a).getEntries()}function y(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=[],m=[];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);let e=0;for(let a=0;a<c;a++)"message"===j[a].type&&e++;e>0&&m.push({entryId:d,shadowedCount:e})}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:*
1
+ "use strict";exports.id=402,exports.ids=[402],exports.modules={12039:(a,b,c)=>{c.d(b,{B:()=>d});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}}},40402:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BR:()=>x,CF:()=>D,DK:()=>y,O8:()=>w,Pt:()=>m.Pt,Uv:()=>A,dQ:()=>s,ev:()=>C,gO:()=>n.g,lG:()=>E,os:()=>v,r2:()=>t,yv:()=>z});var e=c(75430),f=c(12039),g=c(90663),h=c(74788),i=c(77443),j=c(29021),k=c(33873),l=c(50723),m=c(16185),n=c(47240),o=a([e,h,i,m]);function p(a,b){let c;try{c=(0,j.openSync)(a,"r");let d=(0,j.fstatSync)(c).size,e=Math.min(d,b),f=Buffer.alloc(e),g=(0,j.readSync)(c,f,0,e,d-e);return f.toString("utf-8",0,g)}finally{if(void 0!==c)try{(0,j.closeSync)(c)}catch{}}}function q(a){let b=a.split("\n");for(let a=b.length-1;a>=1;a--){let c=b[a].trim();if(c)try{let a=JSON.parse(c);if("session_info"!==a.type)continue;let b=a.name;if("string"==typeof b&&b.trim())return b.trim()}catch{}}}function r(a,b={}){let c=[];for(let b of a)if((0,j.existsSync)(b))try{for(let a of(0,j.readdirSync)(b))a.endsWith(".jsonl")&&c.push((0,k.join)(b,a))}catch{}let d=(0,h.tS)({force:!0===b.force}),e=u(),f=[];for(let a of c)try{let c,g,h,k=(0,l.V0)(a),n=b.force?null:(0,i._E)(a,k);if(n){if(c={id:n.id,cwd:n.cwd,timestamp:n.created,parentSession:n.parentSession,title:n.title},g=n.messageCount,h=n.firstMessage,void 0===n.title){let b=q(p(a,8192));c.title=b??"",(0,i.C8)(a,{...n,identity:k,title:c.title})}}else{let b=function(a){let b;try{b=(0,j.openSync)(a,"r");let c=Buffer.alloc(5120),d=(0,j.readSync)(b,c,0,5120,0);return c.toString("utf-8",0,d)}finally{if(void 0!==b)try{(0,j.closeSync)(b)}catch{}}}(a);if(!(c=function(a){let b=a.split("\n")[0]?.trim();if(!b)return null;try{let a=JSON.parse(b);if("session"!==a.type||"string"!=typeof a.id)return null;return{id:a.id,cwd:"string"==typeof a.cwd?a.cwd:"",timestamp:"string"==typeof a.timestamp?a.timestamp:new Date().toISOString(),parentSession:"string"==typeof a.parentSession?a.parentSession:void 0,title:"string"==typeof a.title?a.title:void 0}}catch{return null}}(b)))continue;c.title||(c.title=q(p(a,8192))??""),g=function(a){let b=0,c=-1;for(;-1!==(c=a.indexOf('"type":"message"',c+1));)b++;return b}(b),h=function(a){let b=a.split("\n");for(let a=1;a<b.length;a++){let c=b[a].trim();if(c)try{let a=JSON.parse(c);if("message"!==a.type)continue;let b=a.message;if(b?.role!=="user")continue;let d=b.content;if("string"==typeof d)return d;if(Array.isArray(d)){let a=d.find(a=>"object"==typeof a&&null!==a&&"text"===a.type);if(a?.text)return a.text}}catch{}}return""}(b)||"(no messages)",(0,i.C8)(a,{identity:k,id:c.id,cwd:(0,m.Pt)(c.cwd),created:c.timestamp,parentSession:c.parentSession,title:c.title,messageCount:g,firstMessage:h})}let o=(0,m.Pt)(c.cwd);if(b.filterCwd&&o!==b.filterCwd)continue;let r=d[c.id]??null;e.set(c.id,a),f.push({path:a,id:c.id,cwd:o,name:c.title,created:c.timestamp,modified:new Date((0,l.$Q)(k)).toISOString(),messageCount:g,firstMessage:h,parentSessionId:c.parentSession?function(a){let b=(a.split("/").pop()??"").match(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i);return b?.[0]}(c.parentSession):void 0,sessionKind:r?.sessionKind,createdBy:r?.createdBy,sessionMeta:r})}catch{}return f.sort((a,b)=>new Date(b.modified).getTime()-new Date(a.modified).getTime()),f}async function s(a={}){let b=(0,m.tE)(),c=[];try{for(let a of(0,j.readdirSync)(b)){let d=(0,k.join)(b,a);try{(0,j.statSync)(d).isDirectory()&&c.push(d)}catch{}}}catch{}return r(c,a)}async function t(a,b={}){let c=(0,m.Pt)(a);return r([(0,m.D0)(c)],{...b,filterCwd:c})}function u(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}async function v(a){let b=u().get(a);if(b)return b;let c=(0,i.Y1)(a);if(c)try{let b=(0,l.V0)(c),d=(0,i._E)(c,b);if(d&&d.id===a)return u().set(a,c),c}catch{}return await s(),u().get(a)??null}function w(a,b){u().set(a,b)}function x(a){u().delete(a)}function y(a){return e.SessionManager.open(a).getEntries()}function z(a){return(0,g.y)(a.messages)}function A(a,b,c={}){let d,h,i,j=new Map;for(let b of a)j.set(b.id,b);let k=(0,e.buildSessionContext)(a,b,j);if(null===b||(b&&(d=j.get(b)),d||(d=a[a.length-1]),!d))return{messages:[],entryIds:[],thinkingLevel:k.thinkingLevel,model:k.model};let l=(0,e.buildContextEntries)(a,b,j).filter(a=>(0,e.sessionEntryToContextMessages)(a).length>0),m=l.map(a=>a.id),n=[],o=d;for(;o;)n.unshift(o),o=o.parentId?j.get(o.parentId):void 0;for(let a of n)"compaction"===a.type&&(h=a.id,i=a.firstKeptEntryId);let p=[];if(h){let a=n.findIndex(a=>a.id===h),b=i?n.findIndex((b,c)=>c<a&&b.id===i):-1,c=b>=0?b:a,d=0;for(let a=0;a<c;a++)"message"===n[a].type&&d++;d>0&&p.push({entryId:h,shadowedCount:d})}return{messages:l.flatMap(a=>(0,e.sessionEntryToContextMessages)(a)).map(a=>"compactionSummary"===a.role?{role:"user",content:`*The conversation history before this point was compacted into the following summary:*
2
2
 
3
- ${a.summary??""}`,timestamp:a.timestamp}:(0,f.B)(a)),entryIds:l,thinkingLevel:i.thinkingLevel,model:i.model,compactions:m.length>0?m:void 0}}function z(){return globalThis.__piSessionContextCache||(globalThis.__piSessionContextCache={map:new Map,order:[]}),globalThis.__piSessionContextCache}function A(a,b){let c=z(),d=c.map.get(a);if(!d)return null;if(d.mtime!==b){c.map.delete(a);let b=c.order.indexOf(a);return b>-1&&c.order.splice(b,1),null}let e=c.order.indexOf(a);return e>-1&&c.order.splice(e,1),c.order.push(a),d}function B(a,b){let c=z(),d=c.map.has(a);if(!d&&c.order.length>=16){let a=c.order.shift();a&&c.map.delete(a)}if(c.map.set(a,b),d){let b=c.order.indexOf(a);b>-1&&c.order.splice(b,1),c.order.push(a)}else c.order.push(a)}function C(a){let b=z();b.map.delete(a);let c=b.order.indexOf(a);c>-1&&b.order.splice(c,1)}[e,g,h,l]=n.then?(await n)():n,d()}catch(a){d(a)}})},47240:(a,b,c)=>{c.d(b,{g:()=>d});function d(a,b){let c,d=new Map;for(let b of a)d.set(b.id,b);if(b&&(c=d.get(b)),c||(c=a[a.length-1]),!c)return[];let e=[],f=c;for(;f;)e.unshift(f),f=f.parentId?d.get(f.parentId):void 0;let g=[];for(let a=0;a<e.length;a++){let b=e[a];if("compaction"!==b.type)continue;let c=b.firstKeptEntryId??"",d=c?e.findIndex((b,d)=>d<a&&b.id===c):-1,f=d>=0?d:a,h=[],i=[];for(let a=0;a<f;a++){let b=e[a];"message"===b.type&&b.message&&(h.push(b.message),i.push(b.id))}h.length>0&&g.push({compactionEntryId:b.id,firstKeptEntryId:c,messages:h,entryIds:i})}return g}},74788:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{LN:()=>s,Of:()=>t,U5:()=>q,oR:()=>r,tS:()=>p});var e=c(29021),f=c(55511),g=c(33873),h=c(75430),i=c(16185),j=c(91179),k=a([h,i,j]);[h,i,j]=k.then?(await k)():k;let v=(0,g.join)((0,h.getAgentDir)(),"annovibe-session-meta.json"),w=(0,i.vo)(),x=null;function l(a){return(0,i.je)(a)}function m(){(0,e.existsSync)(w)||(0,e.mkdirSync)(w,{recursive:!0})}function n(a,b){m();let c=l(a),d=`${c}.${(0,f.randomUUID)().slice(0,8)}.tmp`;(0,e.writeFileSync)(d,JSON.stringify(b)),(0,e.renameSync)(d,c),x=null}if((0,e.existsSync)(v))try{m();let a=JSON.parse((0,e.readFileSync)(v,"utf-8"));for(let[b,c]of Object.entries(a)){let a=u(c);if(!a)continue;let d=l(b);(0,e.existsSync)(d)||n(b,a)}(0,e.renameSync)(v,`${v}.migrated`)}catch{}function o(a,b){a?(0,j.fd)(a):(0,j.xm)(b)}function p(a={}){if(!a.force&&x)return x;if(!(0,e.existsSync)(w))return x={};let b={};try{for(let a of(0,e.readdirSync)(w)){if(!a.endsWith(".json")||a.endsWith(".tmp"))continue;let c=a.slice(0,-5);try{let d=JSON.parse((0,e.readFileSync)((0,g.join)(w,a),"utf-8")),f=u(d);f&&(b[c]=f)}catch{}}}catch{}return x=b,b}function q(a){let b=l(a);if(!(0,e.existsSync)(b))return null;try{let a=JSON.parse((0,e.readFileSync)(b,"utf-8"));return u(a)}catch{return null}}async function r(a,b,c={}){n(a,b),o(c.cwd,a)}async function s(a,b,c={}){let d=q(a);d&&(n(a,{...d,...b}),o(c.cwd,a))}async function t(a,b={}){let c=l(a);if((0,e.existsSync)(c))try{(0,e.unlinkSync)(c),x=null,o(b.cwd,a)}catch{}}function u(a){let b;if(!a||"object"!=typeof a)return null;let c="workbench"===a.sessionKind||"chat"===a.sessionKind?a.sessionKind:null;if(!c)return null;let d="launcher"===a.createdBy||"fork"===a.createdBy||"manual"===a.createdBy?a.createdBy:"manual",e=Array.isArray(a.lastToolNames)?a.lastToolNames.filter(a=>"string"==typeof a):[],f="string"==typeof a.createdAt?a.createdAt:new Date().toISOString(),g="string"==typeof a.initialSourcePath&&a.initialSourcePath?a.initialSourcePath:void 0,h="r"===a.initialKernel||"python"===a.initialKernel?a.initialKernel:void 0,i="string"==typeof a.initialKernelId&&a.initialKernelId?a.initialKernelId:void 0,j="string"==typeof a.initialKernelDisplayName&&a.initialKernelDisplayName?a.initialKernelDisplayName:void 0;if(a.goal&&"object"==typeof a.goal){let c=a.goal;"string"==typeof c.id&&"string"==typeof c.objective&&"string"==typeof c.status&&(b={id:c.id,objective:c.objective,status:c.status,tokenBudget:"number"==typeof c.tokenBudget?c.tokenBudget:void 0,tokensUsed:"number"==typeof c.tokensUsed?c.tokensUsed:0,timeUsedSeconds:"number"==typeof c.timeUsedSeconds?c.timeUsedSeconds:0,createdAt:"number"==typeof c.createdAt?c.createdAt:Date.now(),updatedAt:"number"==typeof c.updatedAt?c.updatedAt:Date.now()})}return{sessionKind:c,lastToolNames:e,createdBy:d,createdAt:f,initialSourcePath:g,initialKernel:h,initialKernelId:i,initialKernelDisplayName:j,goal:b}}d()}catch(a){d(a)}})}};
3
+ ${a.summary??""}`,timestamp:a.timestamp}:"branchSummary"===a.role?{role:"custom",customType:"branch-summary",content:`*The conversation briefly explored another branch and returned with this summary:*
4
+
5
+ ${a.summary??""}`,display:!0,timestamp:a.timestamp}:(0,f.B)(a)).map(a=>(0,g.P)(a,c)),entryIds:m,thinkingLevel:k.thinkingLevel,model:k.model,compactions:p.length>0?p:void 0}}function B(){return globalThis.__piSessionContextCache||(globalThis.__piSessionContextCache={map:new Map,order:[]}),globalThis.__piSessionContextCache}function C(a,b){let c=B(),d=c.map.get(a);if(!d)return null;if(d.mtime!==b){c.map.delete(a);let b=c.order.indexOf(a);return b>-1&&c.order.splice(b,1),null}let e=c.order.indexOf(a);return e>-1&&c.order.splice(e,1),c.order.push(a),d}function D(a,b){let c=B(),d=c.map.has(a);if(!d&&c.order.length>=16){let a=c.order.shift();a&&c.map.delete(a)}if(c.map.set(a,b),d){let b=c.order.indexOf(a);b>-1&&c.order.splice(b,1),c.order.push(a)}else c.order.push(a)}function E(a){let b=B();b.map.delete(a);let c=b.order.indexOf(a);c>-1&&b.order.splice(c,1)}[e,h,i,m]=o.then?(await o)():o,d()}catch(a){d(a)}})},47240:(a,b,c)=>{c.d(b,{g:()=>d});function d(a,b){let c,d=new Map;for(let b of a)d.set(b.id,b);if(b&&(c=d.get(b)),c||(c=a[a.length-1]),!c)return[];let e=[],f=c;for(;f;)e.unshift(f),f=f.parentId?d.get(f.parentId):void 0;let g=[];for(let a=0;a<e.length;a++){let b=e[a];if("compaction"!==b.type)continue;let c=b.firstKeptEntryId??"",d=c?e.findIndex((b,d)=>d<a&&b.id===c):-1,f=d>=0?d:a,h=[],i=[];for(let a=0;a<f;a++){let b=e[a];"message"===b.type&&b.message&&(h.push(b.message),i.push(b.id))}h.length>0&&g.push({compactionEntryId:b.id,firstKeptEntryId:c,messages:h,entryIds:i})}return g}},74788:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{LN:()=>s,Of:()=>t,U5:()=>q,oR:()=>r,tS:()=>p});var e=c(29021),f=c(55511),g=c(33873),h=c(75430),i=c(16185),j=c(91179),k=a([h,i,j]);[h,i,j]=k.then?(await k)():k;let v=(0,g.join)((0,h.getAgentDir)(),"annovibe-session-meta.json"),w=(0,i.vo)(),x=null;function l(a){return(0,i.je)(a)}function m(){(0,e.existsSync)(w)||(0,e.mkdirSync)(w,{recursive:!0})}function n(a,b){m();let c=l(a),d=`${c}.${(0,f.randomUUID)().slice(0,8)}.tmp`;(0,e.writeFileSync)(d,JSON.stringify(b)),(0,e.renameSync)(d,c),x=null}if((0,e.existsSync)(v))try{m();let a=JSON.parse((0,e.readFileSync)(v,"utf-8"));for(let[b,c]of Object.entries(a)){let a=u(c);if(!a)continue;let d=l(b);(0,e.existsSync)(d)||n(b,a)}(0,e.renameSync)(v,`${v}.migrated`)}catch{}function o(a,b){a?(0,j.fd)(a):(0,j.xm)(b)}function p(a={}){if(!a.force&&x)return x;if(!(0,e.existsSync)(w))return x={};let b={};try{for(let a of(0,e.readdirSync)(w)){if(!a.endsWith(".json")||a.endsWith(".tmp"))continue;let c=a.slice(0,-5);try{let d=JSON.parse((0,e.readFileSync)((0,g.join)(w,a),"utf-8")),f=u(d);f&&(b[c]=f)}catch{}}}catch{}return x=b,b}function q(a){let b=l(a);if(!(0,e.existsSync)(b))return null;try{let a=JSON.parse((0,e.readFileSync)(b,"utf-8"));return u(a)}catch{return null}}async function r(a,b,c={}){n(a,b),o(c.cwd,a)}async function s(a,b,c={}){let d=q(a);d&&(n(a,{...d,...b}),o(c.cwd,a))}async function t(a,b={}){let c=l(a);if((0,e.existsSync)(c))try{(0,e.unlinkSync)(c),x=null,o(b.cwd,a)}catch{}}function u(a){let b;if(!a||"object"!=typeof a)return null;let c="workbench"===a.sessionKind||"chat"===a.sessionKind?a.sessionKind:null;if(!c)return null;let d="launcher"===a.createdBy||"fork"===a.createdBy||"manual"===a.createdBy?a.createdBy:"manual",e=Array.isArray(a.lastToolNames)?a.lastToolNames.filter(a=>"string"==typeof a):[],f="string"==typeof a.createdAt?a.createdAt:new Date().toISOString(),g="string"==typeof a.initialSourcePath&&a.initialSourcePath?a.initialSourcePath:void 0,h="r"===a.initialKernel||"python"===a.initialKernel?a.initialKernel:void 0,i="string"==typeof a.initialKernelId&&a.initialKernelId?a.initialKernelId:void 0,j="string"==typeof a.initialKernelDisplayName&&a.initialKernelDisplayName?a.initialKernelDisplayName:void 0;if(a.goal&&"object"==typeof a.goal){let c=a.goal;"string"==typeof c.id&&"string"==typeof c.objective&&"string"==typeof c.status&&(b={id:c.id,objective:c.objective,status:c.status,tokenBudget:"number"==typeof c.tokenBudget?c.tokenBudget:void 0,tokensUsed:"number"==typeof c.tokensUsed?c.tokensUsed:0,timeUsedSeconds:"number"==typeof c.timeUsedSeconds?c.timeUsedSeconds:0,createdAt:"number"==typeof c.createdAt?c.createdAt:Date.now(),updatedAt:"number"==typeof c.updatedAt?c.updatedAt:Date.now()})}return{sessionKind:c,lastToolNames:e,createdBy:d,createdAt:f,initialSourcePath:g,initialKernel:h,initialKernelId:i,initialKernelDisplayName:j,goal:b}}d()}catch(a){d(a)}})},90663:(a,b,c)=>{function d(a,b){if("assistant"===a.role&&b.deferThinking){let b=!1,c=a.content.map(a=>"thinking"!==a.type||""===a.thinking.trim()?a:(b=!0,{...a,thinking:"",deferred:!0}));return b?{...a,content:c}:a}if("toolResult"===a.role&&b.deferToolResultImages){if("kernel-plot.render.v1"===a.details?.schema)return a;let b=!1,c=a.content.map(a=>{if("image"!==a.type)return a;let c=function(a){if(a.path||!(a.data??a.source?.data))return null;let b={...a,deferred:!0};if(delete b.data,b.source){let a={...b.source};delete a.data,b.source=a}return b}(a);return c?(b=!0,c):a});return b?{...a,content:c}:a}return a}function e(a){for(let b of a)if("assistant"===b.role){if(b.content.some(a=>"thinking"===a.type&&a.deferred))return!0}else if("toolResult"===b.role&&b.content.some(a=>"image"===a.type&&a.deferred))return!0;return!1}c.d(b,{P:()=>d,y:()=>e})}};
@@ -137,13 +137,14 @@ if (window.Chart) init();
137
137
  ${h.content}
138
138
  </widget-guidelines>`;return g?`${g}
139
139
 
140
- ${j}`:j}},34429:(a,b,c)=>{"use strict";c.d(b,{O:()=>f});let d=/\bstream(?:[_\s-]+)read(?:[_\s-]+)error\b/i,e=new WeakSet;function f(a){if(e.has(a))return!0;let b=a._isRetryableError;return"function"==typeof b&&(a._isRetryableError=function(a){return!!a&&"object"==typeof a&&"error"===a.stopReason&&"string"==typeof a.errorMessage&&d.test(a.errorMessage)||b.call(this,a)},e.add(a),!0)}},36945:(a,b,c)=>{"use strict";function d(a){if(!a.afterEventId)return{afterSequence:void 0,replayGap:!1};let b=a.afterEventId.lastIndexOf(":"),c=b>0?a.afterEventId.slice(0,b):"",d=b>0?Number(a.afterEventId.slice(b+1)):NaN;if(c!==a.streamEpoch||!Number.isSafeInteger(d))return{afterSequence:void 0,replayGap:!0};let e=a.events.length>0?Number(a.events[0].__eventSequence):a.nextSequence;return!Number.isSafeInteger(e)||d<e-1?{afterSequence:void 0,replayGap:!0}:{afterSequence:d,replayGap:!1}}c.d(b,{Z:()=>d})},39773:(a,b,c)=>{"use strict";c.d(b,{X:()=>g,w:()=>f});var d=c(55511);let e=new Map;function f(a){let b=(0,d.randomUUID)().replace(/-/g,"").slice(0,24);return e.set(b,{...a,token:b,expiresAt:Date.now()+18e5}),b}function g(a){let b=e.get(a);return b?Date.now()>b.expiresAt?(e.delete(a),null):b:null}setInterval(()=>{let a=Date.now();for(let[b,c]of e)a>c.expiresAt&&e.delete(b)},3e5)},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="<workbench-guidelines>\nAnnoVibe Workbench is active. Use it for reproducible R/Python analysis plots, data visualizations, and warm-runtime analysis work.\n\nTool routing:\n- Use `kernel_plot_render` for one-shot iterative plot previews — images auto-render inline in chat without saving files. Call `render_plot()` to mark the preview target. ggplot2 (R) and plt.show() (Python) are auto-captured as convenience.\n- Use `kernel_plot_inspect` after resuming a workbench session, after suspected kernel restart, or whenever you are unsure whether objects like `adata`/`seurat_obj` are still live in memory.\n- Use `kernel_plot_run` when plots depend on data already loaded in warm kernel memory, or when saving final artifacts to disk.\n- Use `runtime: \"kernel-lite\"` in `kernel_plot_run` when variables or loaded data should persist across turns.\n- Use `runtime: \"worker\"` for one-shot scripts that should be isolated.\n- Do not run Rscript/python plotting through `bash` unless the workbench tools are unavailable.\n- Do not use bash with `conda run python`, `Rscript`, or direct interpreter calls for analysis code — always prefer `kernel_plot_run`.\n\nkernel-lite memory rules — CRITICAL:\n- Packages imported (import scanpy, library(Seurat), etc.) and variables assigned in one kernel_plot_run call persist while the same kernel-lite runtime is alive. Do NOT repeat imports in every call. Import each package only once, in the first call that needs it.\n- Large data objects loaded via sc.read(), readRDS(), qread(), pd.read_csv(), etc. stay in memory while the warm kernel is alive. Before calling any load function, check whether the object already exists:\n Python: `if 'adata' not in globals(): adata = sc.read(path)`\n R: `if (!exists('seurat_obj')) seurat_obj <- readRDS(path)`\n Print a brief note when reusing in-memory data vs loading fresh.\n- Do NOT put sc.read() / readRDS() / qread() at the top of every call. This reloads multi-GB files needlessly and is the #1 performance mistake in workbench sessions.\n- After browser refreshes, model switches, compaction, or a resumed workbench session, treat prior history as inferred only: first use `kernel_plot_inspect` or an explicit existence check to see whether required objects still exist, then reload only missing objects from the known source path.\n\nWorkbench artifact rules:\n- Save every output under `WARMPLOT_OUTPUT_DIR` or `PI_KERNEL_PLOT_OUTPUT_DIR`.\n- Create a primary PNG/JPEG/WebP preview for chat display whenever a figure is produced, not PDF-only output. Keep the preview reasonably sized so it can be embedded inline.\n- If a publication-quality PDF/SVG is needed, save it in addition to the preview image.\n- Name the primary preview clearly, for example `00_preview.png`, so it is easy to identify.\n- When the user asks to save final outputs to a specific project directory, use that directory (not WARMPLOT_OUTPUT_DIR) for the final artifacts.\n\nChat display rules:\n- The web chat renders returned image artifacts inline. Do not say that images cannot be displayed.\n- Do not use `open`, `xdg-open`, or desktop viewers to show plots.\n- After generating any plot, make the chat response displayable by including the PNG/JPEG/WebP preview path in the final answer or by returning it as a tool image artifact. Do not mention only PDF paths when an image preview exists.\n- When using shell tools for plotting, still save a PNG/JPEG/WebP preview and include that preview path in the final answer; avoid a final answer that only says a desktop window was opened.\n- When the user asks to show an existing PNG/JPEG/WebP file, use `read` on that image path; the UI will display the image even if the model cannot inspect pixels.\n- If only a PDF exists and the user asks to see it in chat, generate a PNG preview with `kernel_plot_run` or report the PDF path only if conversion is not practical.\n- After a successful plot, summarize the result briefly and include both preview image paths and any publication-quality PDF/SVG paths.\n</workbench-guidelines>",e=/\n?\s*(?:<plot-mode-guidelines>[\s\S]*?<\/plot-mode-guidelines>|<workbench-guidelines>[\s\S]*?<\/workbench-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.includes("<workbench-guidelines>")?a:a.trim()?`${a.trimEnd()}
140
+ ${j}`:j}},34429:(a,b,c)=>{"use strict";c.d(b,{O:()=>f});let d=/\bstream(?:[_\s-]+)read(?:[_\s-]+)error\b/i,e=new WeakSet;function f(a){if(e.has(a))return!0;let b=a._isRetryableError;return"function"==typeof b&&(a._isRetryableError=function(a){return!!a&&"object"==typeof a&&"error"===a.stopReason&&"string"==typeof a.errorMessage&&d.test(a.errorMessage)||b.call(this,a)},e.add(a),!0)}},36945:(a,b,c)=>{"use strict";function d(a){if(!a.afterEventId)return{afterSequence:void 0,replayGap:!1};let b=a.afterEventId.lastIndexOf(":"),c=b>0?a.afterEventId.slice(0,b):"",d=b>0?Number(a.afterEventId.slice(b+1)):NaN;if(c!==a.streamEpoch||!Number.isSafeInteger(d))return{afterSequence:void 0,replayGap:!0};let e=a.events.length>0?Number(a.events[0].__eventSequence):a.nextSequence;return!Number.isSafeInteger(e)||d<e-1?{afterSequence:void 0,replayGap:!0}:{afterSequence:d,replayGap:!1}}c.d(b,{Z:()=>d})},39773:(a,b,c)=>{"use strict";c.d(b,{X:()=>g,w:()=>f});var d=c(55511);let e=new Map;function f(a){let b=(0,d.randomUUID)().replace(/-/g,"").slice(0,24);return e.set(b,{...a,token:b,expiresAt:Date.now()+18e5}),b}function g(a){let b=e.get(a);return b?Date.now()>b.expiresAt?(e.delete(a),null):b:null}setInterval(()=>{let a=Date.now();for(let[b,c]of e)a>c.expiresAt&&e.delete(b)},3e5)},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]},42912:(a,b,c)=>{"use strict";function d(a){if("message_update"===a.type){let b=a.assistantMessageEvent;if(!b)return a;let c={...b};delete c.partial;let d=function(a){if("string"==typeof a.id&&"string"==typeof a.toolName)return{id:a.id,toolName:a.toolName};let b=a.partial,c=a.contentIndex;if(!b||!Array.isArray(b.content)||"number"!=typeof c)return null;let d=b.content[c];if(!d||"toolCall"!==d.type)return null;let e="string"==typeof d.id?d.id:"string"==typeof d.toolCallId?d.toolCallId:null,f="string"==typeof d.name?d.name:"string"==typeof d.toolName?d.toolName:null;return null!==e&&null!==f?{id:e,toolName:f}:null}(b);return{type:"message_update",assistantMessageEvent:d?{...c,...d}:c}}return"tool_execution_update"===a.type?{type:"tool_execution_update",toolCallId:a.toolCallId,toolName:a.toolName,partialResult:a.partialResult}:a}c.d(b,{b:()=>d})},44036:(a,b,c)=>{"use strict";c.d(b,{FJ:()=>g,R4:()=>h,X8:()=>f});let d="<workbench-guidelines>\nAnnoVibe Workbench is active. Use it for reproducible R/Python analysis plots, data visualizations, and warm-runtime analysis work.\n\nTool routing:\n- Use `kernel_plot_render` for one-shot iterative plot previews — images auto-render inline in chat without saving files. Call `render_plot()` to mark the preview target. ggplot2 (R) and plt.show() (Python) are auto-captured as convenience.\n- Use `kernel_plot_inspect` after resuming a workbench session, after suspected kernel restart, or whenever you are unsure whether objects like `adata`/`seurat_obj` are still live in memory.\n- Use `kernel_plot_run` when plots depend on data already loaded in warm kernel memory, or when saving final artifacts to disk.\n- Use `runtime: \"kernel-lite\"` in `kernel_plot_run` when variables or loaded data should persist across turns.\n- Use `runtime: \"worker\"` for one-shot scripts that should be isolated.\n- Do not run Rscript/python plotting through `bash` unless the workbench tools are unavailable.\n- Do not use bash with `conda run python`, `Rscript`, or direct interpreter calls for analysis code — always prefer `kernel_plot_run`.\n\nkernel-lite memory rules — CRITICAL:\n- Packages imported (import scanpy, library(Seurat), etc.) and variables assigned in one kernel_plot_run call persist while the same kernel-lite runtime is alive. Do NOT repeat imports in every call. Import each package only once, in the first call that needs it.\n- Large data objects loaded via sc.read(), readRDS(), qread(), pd.read_csv(), etc. stay in memory while the warm kernel is alive. Before calling any load function, check whether the object already exists:\n Python: `if 'adata' not in globals(): adata = sc.read(path)`\n R: `if (!exists('seurat_obj')) seurat_obj <- readRDS(path)`\n Print a brief note when reusing in-memory data vs loading fresh.\n- Do NOT put sc.read() / readRDS() / qread() at the top of every call. This reloads multi-GB files needlessly and is the #1 performance mistake in workbench sessions.\n- After browser refreshes, model switches, compaction, or a resumed workbench session, treat prior history as inferred only: first use `kernel_plot_inspect` or an explicit existence check to see whether required objects still exist, then reload only missing objects from the known source path.\n\nWorkbench artifact rules:\n- Save every output under `WARMPLOT_OUTPUT_DIR` or `PI_KERNEL_PLOT_OUTPUT_DIR`.\n- Create a primary PNG/JPEG/WebP preview for chat display whenever a figure is produced, not PDF-only output. Keep the preview reasonably sized so it can be embedded inline.\n- If a publication-quality PDF/SVG is needed, save it in addition to the preview image.\n- Name the primary preview clearly, for example `00_preview.png`, so it is easy to identify.\n- When the user asks to save final outputs to a specific project directory, use that directory (not WARMPLOT_OUTPUT_DIR) for the final artifacts.\n\nChat display rules:\n- The web chat renders returned image artifacts inline. Do not say that images cannot be displayed.\n- Do not use `open`, `xdg-open`, or desktop viewers to show plots.\n- After generating any plot, make the chat response displayable by including the PNG/JPEG/WebP preview path in the final answer or by returning it as a tool image artifact. Do not mention only PDF paths when an image preview exists.\n- When using shell tools for plotting, still save a PNG/JPEG/WebP preview and include that preview path in the final answer; avoid a final answer that only says a desktop window was opened.\n- When the user asks to show an existing PNG/JPEG/WebP file, use `read` on that image path; the UI will display the image even if the model cannot inspect pixels.\n- If only a PDF exists and the user asks to see it in chat, generate a PNG preview with `kernel_plot_run` or report the PDF path only if conversion is not practical.\n- After a successful plot, summarize the result briefly and include both preview image paths and any publication-quality PDF/SVG paths.\n</workbench-guidelines>",e=/\n?\s*(?:<plot-mode-guidelines>[\s\S]*?<\/plot-mode-guidelines>|<workbench-guidelines>[\s\S]*?<\/workbench-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.includes("<workbench-guidelines>")?a:a.trim()?`${a.trimEnd()}
141
141
 
142
- ${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:()=>J,Bj:()=>P,Fn:()=>M,HG:()=>K,OF:()=>Q,V$:()=>N,dU:()=>U,kp:()=>A});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(85097),j=c(11745),k=c(9805),l=c(27348),m=c(44036),n=c(66469),o=c(29021),p=c(33873),q=c(55511),r=c(7048),s=c(41761),t=c(74788),u=c(91179),v=c(57149),w=c(60103),x=c(36945),y=c(34429),z=a([e,f,g,h,i,j,t,u]);[e,f,g,h,i,j,t,u]=z.then?(await z)():z;class R extends Error{constructor(a){super(`Session ${a} is already processing another command`),this.code="SESSION_BUSY",this.name="SessionBusyError"}}function A(a){return a instanceof R||!!a&&"object"==typeof a&&"SESSION_BUSY"===a.code}class S extends Error{constructor(a,b){super(b),this.reason=a,this.code="COMPACTION_ERROR",this.name="CompactionError"}}let T=s.C1;class U{constructor(a,b,c={}){this.inner=a,this.modelRegistry=b,this.options=c,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.pendingAgentEndTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this.activeTools=new Map,this.currentRuntimePhase="idle",this.phaseStartedAtMs=null,this.promptRunId=0,this.activePromptRunId=null,this.abortedPromptRunId=0,this.runStartedAtMs=null,this.firstModelEventAtMs=null,this.lastEventAtMs=null,this.lastEventType=null,this.lastErrorMessage=null,this.streamEpoch=(0,q.randomUUID)(),this.nextEventId=1,this._alive=!0,this._lastAppliedPromptKey="",this._kernelStateCache=null,(0,y.O)(a)}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(){let a=Date.now(),b=this.getPhase(),c=this.inner.model?{provider:this.inner.model.provider,id:this.inner.model.id}:null;return{sessionId:this.sessionId,sessionFile:this.sessionFile,cwd:D(this.inner),busy:this.isBusy(),operations:[...this.busyOperations],isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting,phase:b,model:c,activeTools:[...this.activeTools.entries()].map(([a,b])=>({id:a,name:b})),runStartedAt:E(this.runStartedAtMs),firstModelEventAt:E(this.firstModelEventAtMs),lastEventAt:E(this.lastEventAtMs),lastEventType:this.lastEventType,uptimeMs:this.runStartedAtMs?Math.max(0,a-this.runStartedAtMs):null,waitingForModelMs:"waiting_model"===b&&this.phaseStartedAtMs?Math.max(0,a-this.phaseStartedAtMs):null,pendingMessageCount:"number"==typeof this.inner.pendingMessageCount?this.inner.pendingMessageCount:null,errorMessage:this.lastErrorMessage}}start(){this.unsubscribe=this.inner.subscribe(a=>{let b=null!==this.activePromptRunId&&void 0===a.__runId?{...a,__runId:this.activePromptRunId}:a;if("message_end"===a.type)return void queueMicrotask(()=>this.forwardEvent(this.withLatestEntryId(b)));if("agent_end"===a.type){this.pendingAgentEndTimer&&clearTimeout(this.pendingAgentEndTimer),this.pendingAgentEndTimer=setTimeout(()=>{this.pendingAgentEndTimer=null,this.forwardEvent(b)},0);return}"agent_start"===a.type&&this.pendingAgentEndTimer&&(clearTimeout(this.pendingAgentEndTimer),this.pendingAgentEndTimer=null),this.forwardEvent(b)}),this.resetIdleTimer(),O()}forwardEvent(a){let b=null!==this.activePromptRunId&&void 0===a.__runId?{...a,__runId:this.activePromptRunId}:a;this.recordRuntimeEvent(b),("message_end"===a.type||"compaction_end"===a.type||"auto_compaction_end"===a.type)&&this.bumpSessionCwd();let c=this.sequenceEvent(b);for(let b of(this.bufferReplayEvent(c),this.resetIdleTimer(),("agent_end"===a.type||"agent_start"===a.type)&&O(),this.listeners))b(c)}withLatestEntryId(a){let b=a.message;if(!b||"user"!==b.role&&"assistant"!==b.role&&"toolResult"!==b.role)return a;try{let c=this.inner.sessionManager.getEntries(),d=JSON.stringify(b);for(let b=c.length-1;b>=0;b--){let e=c[b];if("message"===e.type&&"string"==typeof e.id&&JSON.stringify(e.message)===d)return{...a,__entryId:e.id}}}catch{}let c=function(a){let b="string"==typeof a.role?a.role:null;if(!b)return null;let c="number"==typeof a.timestamp?a.timestamp:0,d=0;try{let b=JSON.stringify(a.content??"");for(let a=0;a<b.length;a++)d=(d<<5)-d+b.charCodeAt(a)|0}catch{}return`synth:${b}:${c}:${(d>>>0).toString(36)}`}(b);return c?{...a,__entryId:c}:a}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}sequenceEvent(a){"string"!=typeof this.streamEpoch&&(this.streamEpoch=(0,q.randomUUID)());let b=Number.isSafeInteger(this.nextEventId)?this.nextEventId:1;return this.nextEventId=b+1,{...a,__eventId:`${this.streamEpoch}:${b}`,__eventSequence:b,__streamEpoch:this.streamEpoch}}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){let c=(0,x.Z)({streamEpoch:this.streamEpoch,nextSequence:this.nextEventId,events:this.replayEvents,afterEventId:b.afterEventId}),{afterSequence:d}=c;for(let e of(c.replayGap&&(a({type:"replay_gap",requestedAfter:b.afterEventId,streamEpoch:this.streamEpoch,oldestEventId:this.replayEvents[0]?.__eventId??null}),d=void 0),this.replayEvents)){let b="number"==typeof e.__eventSequence?e.__eventSequence:0;(void 0===d||b>d)&&a(e)}}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(null!==this.activePromptRunId||this.isBusy())throw new R(this.sessionId);Number.isSafeInteger(this.promptRunId)||(this.promptRunId=0);let b=++this.promptRunId;this.activePromptRunId=b,this.busyOperations.add("prompt"),this.setRuntimePhase("waiting_model"),this.resetIdleTimer(),this.replayEvents=[],this.emit({type:"prompt_admitted",__runId:b}),O();try{let c="string"==typeof a.leafId&&a.leafId.trim()?a.leafId:null;if(c&&this.inner.sessionManager.getLeafId()!==c&&(await this.inner.navigateTree(c,{})).cancelled)throw Error(`Failed to navigate session to leaf ${c}`);if("string"==typeof a.provider&&"string"==typeof a.modelId&&await this.applyModelSelection(a.provider,a.modelId),"string"==typeof a.thinkingLevel&&this.applyThinkingLevel(a.thinkingLevel),Array.isArray(a.toolNames)){let b=this.filterAvailableToolNames(a.toolNames);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let d=a.images,e=this.inner.model?.input,f=!e||0===e.length||e.includes("image")?d:void 0;return this.inner.prompt(a.message,f?.length?{images:f}:void 0).then(()=>{this.emit({type:"prompt_done",__runId:b})}).catch(a=>{this.abortedPromptRunId!==b&&this.emit({type:"prompt_error",__runId:b,error:a instanceof Error?a.message:String(a)})}).finally(()=>this.finishPromptRun(b)),{runId:b}}catch(a){throw this.emit({type:"prompt_error",__runId:b,error:a instanceof Error?a.message:String(a)}),this.finishPromptRun(b),a}}case"abort":return this.abortedPromptRunId=this.promptRunId,await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage(),c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)(),e=(0,t.U5)(this.inner.sessionId),f=this.getRuntimeStatus();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,phase:f.phase,activeTools:f.activeTools,lastEventAt:f.lastEventAt,lastEventType:f.lastEventType,errorMessage:f.errorMessage,goal:e?.goal??null,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,k.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"set_model":{if(this.isBusy())throw new R(this.sessionId);let{provider:b,modelId:c}=a,d=await this.applyModelSelection(b,c);return{id:d.id,provider:d.provider,thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"fork":{let b;if(this.isBusy())throw new R(this.sessionId);let 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();(0,f.O8)(j,b);let k=D(this.inner),l=(0,t.U5)(this.sessionId);return l&&await (0,t.oR)(j,{...l,createdBy:"fork",createdAt:new Date().toISOString()},k?{cwd:k}:{}),this.destroy(),k&&((0,u.fd)(k),(0,u.E8)()),{cancelled:!1,newSessionId:j}}case"navigate_tree":if(this.isBusy())throw new R(this.sessionId);return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":if(this.isBusy())throw new R(this.sessionId);return this.applyThinkingLevel(a.level),null;case"compact":{let b;if(this.isBusy())throw new R(this.sessionId);let{findCutPoint:d,DEFAULT_COMPACTION_SETTINGS:e}=await Promise.resolve().then(c.bind(c,75430)),f=this.inner.sessionManager.getBranch(),g={...e,...this.inner.settingsManager.getCompactionSettings()},h=-1;for(let a=f.length-1;a>=0;a--)if("compaction"===f[a].type){h=a;break}let i=h+1,j=d(f,i,f.length,g.keepRecentTokens);if((j.isSplitTurn?j.turnStartIndex:j.firstKeptEntryIndex)<=i)throw new S("too-short","Conversation is too short to compact");try{b=await this.trackBusy("compact",this.inner.compact(a.customInstructions))}catch(c){let a,b;throw(b=(a=c instanceof Error?c.message:String(c)).toLowerCase()).includes("already compacted")?new S("already-compacted","This session has already been compacted"):b.includes("too small")||b.includes("nothing to compact")||b.includes("too short")?new S("too-short","Conversation is too short to compact"):b.includes("cancelled")||b.includes("abort")?new S("cancelled","Compaction was cancelled"):new S("failed",a||"Compaction failed")}let k=b;return{tokensBefore:"number"==typeof k?.tokensBefore?k.tokensBefore:null,tokensAfter:"number"==typeof k?.estimatedTokensAfter?k.estimatedTokensAfter:null,reducedBy:"number"==typeof k?.tokensBefore&&"number"==typeof k?.estimatedTokensAfter?Math.max(0,k.tokensBefore-k.estimatedTokensAfter):null}}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return await this.trackBusy("steer",this.inner.steer(a.message,d?.length?d:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return await this.trackBusy("follow_up",this.inner.followUp(a.message,d?.length?d: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":{if(this.isBusy())throw new R(this.sessionId);let b=this.filterAvailableToolNames(a.toolNames);return this.inner.setActiveToolsByName(b),this.applyRuntimePrompts(),(0,t.LN)(this.sessionId,{lastToolNames:this.inner.getActiveToolNames()}).catch(()=>{}),null}case"abort_compaction":return this.inner.abortCompaction(),null;case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return this.inner.setSessionName(b),(0,f.lG)(this.sessionId),(0,u.xm)(this.sessionId),null}case"append_message":{if(this.isBusy())throw new R(this.sessionId);let b=a.message;if("string"!=typeof b||!b.trim())return null;if(!this.inner.sendCustomMessage)throw Error("Session does not support append_message");return await this.inner.sendCustomMessage({customType:"string"==typeof a.customType&&a.customType?a.customType:"context-note",content:b,display:"boolean"!=typeof a.display||a.display},{triggerTurn:!1}),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.pendingAgentEndTimer&&clearTimeout(this.pendingAgentEndTimer),this.pendingAgentEndTimer=null,this.unsubscribe?.(),this.onDestroyCallback?.(),O())}bumpSessionCwd(){let a=D(this.inner);a&&(0,u.fd)(a)}async applyModelSelection(a,b){let c=this.modelRegistry.find(a,b);if(!c){let d=a.toLowerCase().replace(/-/g,"");d!==a&&(c=this.modelRegistry.find(d,b))}if(!c)throw Error(`Model not found: ${a}/${b}`);return await this.inner.setModel(c),c}applyThinkingLevel(a){this.inner.setThinkingLevel(a),"xhigh"===a&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh")}preparePromptContext(a){this.applyRuntimePrompts(a)}finishPromptRun(a){this.activePromptRunId===a&&(this.activePromptRunId=null,this.busyOperations.delete("prompt"),this.isBusy()||this.setRuntimePhase("idle"),this.resetIdleTimer(),O())}async trackBusy(a,b){this.busyOperations.add(a),this.setRuntimePhase("compact"===a?"compacting":"waiting_model"),this.resetIdleTimer(),O();try{return await b}finally{this.busyOperations.delete(a),this.isBusy()||this.setRuntimePhase("idle"),this.resetIdleTimer(),O()}}setRuntimePhase(a,b=Date.now()){this.currentRuntimePhase!==a&&(this.currentRuntimePhase=a,this.phaseStartedAtMs="idle"===a?null:b)}getPhase(){if(this.inner.isCompacting||this.busyOperations.has("compact"))return"compacting";if(this.activeTools.size>0)return"running_tools";if(this.isBusy()){let a=this.currentRuntimePhase;return a&&"idle"!==a?a:"waiting_model"}return"idle"}emit(a){let b=this.sequenceEvent(a);for(let a of(this.bufferReplayEvent(b),this.listeners))a(b)}recordRuntimeEvent(a){let b=Date.now();switch(this.lastEventAtMs=b,this.lastEventType=a.type,a.type){case"agent_start":this.runStartedAtMs=b,this.firstModelEventAtMs=null,this.lastErrorMessage=null,this.activeTools.clear(),this.setRuntimePhase("waiting_model",b);break;case"message_start":case"message_update":{let c=a.message;c?.role==="assistant"?(this.firstModelEventAtMs||(this.firstModelEventAtMs=b),"string"==typeof c.errorMessage&&(this.lastErrorMessage=c.errorMessage),this.setRuntimePhase("streaming",b)):c?.role==="user"&&this.setRuntimePhase("waiting_model",b);break}case"message_end":{let c=a.message;c?.role==="assistant"&&"string"==typeof c.errorMessage&&(this.lastErrorMessage=c.errorMessage),this.setRuntimePhase("waiting_model",b);break}case"tool_execution_start":{let c="string"==typeof a.toolCallId?a.toolCallId:"",d="string"==typeof a.toolName?a.toolName:"tool";c&&this.activeTools.set(c,d),this.setRuntimePhase("running_tools",b);break}case"tool_execution_end":{let c="string"==typeof a.toolCallId?a.toolCallId:"";c&&this.activeTools.delete(c),this.setRuntimePhase(this.activeTools.size>0?"running_tools":"waiting_model",b);break}case"auto_retry_start":this.setRuntimePhase("waiting_model",b);break;case"compaction_start":case"auto_compaction_start":this.setRuntimePhase("compacting",b);break;case"compaction_end":case"auto_compaction_end":this.setRuntimePhase(this.isBusy()?"waiting_model":"idle",b);break;case"agent_end":this.activeTools.clear(),!0===a.willRetry?this.setRuntimePhase("waiting_model",b):(this.setRuntimePhase("idle",b),this.runStartedAtMs=null,this.firstModelEventAtMs=null)}}applyRuntimePrompts(a){if(!this.inner.agent.state||this.options.systemPromptDisabled)return;let b=(0,g.cV)(),c=this.inner.getActiveToolNames(),d=(0,m.R4)(c),e=B(this.inner),f=0;if(this.sessionFile)try{f=(0,o.statSync)(this.sessionFile).mtimeMs}catch{f=0}let h=null;if(d&&this.sessionFile)if(this._kernelStateCache&&this._kernelStateCache.mtime===f)h=this._kernelStateCache.summary;else{let a=(0,w.f)(this.sessionFile);a?(h=(0,w.v)(a),this._kernelStateCache={mtime:f,summary:h}):this._kernelStateCache=null}else this._kernelStateCache=null;let i=h?`|mtime=${f}`:"",j=a??"",n=`${d}|${b.generativeUI}|${j.length>0?"msg":"no-msg"}${i}`;if(this._lastAppliedPromptKey===n&&e.length>0)return;if(!b.generativeUI){let a=(0,m.X8)((0,k.FE)(e)),b=F(a,d),c=h?`${b}
142
+ ${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:()=>L,Bj:()=>S,Fn:()=>P,HG:()=>N,OF:()=>T,V$:()=>Q,dU:()=>Z,kJ:()=>M,kp:()=>C});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(85097),j=c(11745),k=c(9805),l=c(27348),m=c(44036),n=c(66469),o=c(29021),p=c(33873),q=c(55511),r=c(7048),s=c(41761),t=c(74788),u=c(72498),v=c(91179),w=c(57149),x=c(60103),y=c(36945),z=c(34429),A=c(42912),B=a([e,f,g,h,i,j,t,u,v]);[e,f,g,h,i,j,t,u,v]=B.then?(await B)():B;class U extends Error{constructor(a){super(`Session ${a} is already processing another command`),this.code="SESSION_BUSY",this.name="SessionBusyError"}}function C(a){return a instanceof U||!!a&&"object"==typeof a&&"SESSION_BUSY"===a.code}class V extends Error{constructor(a,b){super(b),this.reason=a,this.code="COMPACTION_ERROR",this.name="CompactionError"}}let W=s.C1;class X extends e.Theme{constructor(){super({text:"",thinkingXhigh:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let Y=new X;class Z{constructor(a,b,c={}){this.inner=a,this.modelRuntime=b,this.options=c,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.pendingAgentEndTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this.activeTools=new Map,this.currentRuntimePhase="idle",this.phaseStartedAtMs=null,this.promptRunId=0,this.activePromptRunId=null,this.abortedPromptRunId=0,this.runStartedAtMs=null,this.firstModelEventAtMs=null,this.lastEventAtMs=null,this.lastEventType=null,this.lastErrorMessage=null,this.streamEpoch=(0,q.randomUUID)(),this.nextEventId=1,this._alive=!0,this.extensionsBound=!1,this.pendingUiResponses=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this._lastAppliedPromptKey="",this._kernelStateCache=null,(0,z.O)(a)}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}get cwd(){return F(this.inner)??""}isAlive(){return this._alive}isBusy(){return this.busyOperations.size>0||this.inner.isStreaming||this.inner.isCompacting}getRuntimeStatus(){let a=Date.now(),b=this.getPhase(),c=this.inner.model?{provider:this.inner.model.provider,id:this.inner.model.id}:null;return{sessionId:this.sessionId,sessionFile:this.sessionFile,cwd:F(this.inner),busy:this.isBusy(),operations:[...this.busyOperations],isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting,isBashRunning:this.inner.isBashRunning??!1,phase:b,model:c,activeTools:[...this.activeTools.entries()].map(([a,b])=>({id:a,name:b})),runStartedAt:G(this.runStartedAtMs),firstModelEventAt:G(this.firstModelEventAtMs),lastEventAt:G(this.lastEventAtMs),lastEventType:this.lastEventType,uptimeMs:this.runStartedAtMs?Math.max(0,a-this.runStartedAtMs):null,waitingForModelMs:"waiting_model"===b&&this.phaseStartedAtMs?Math.max(0,a-this.phaseStartedAtMs):null,pendingMessageCount:"number"==typeof this.inner.pendingMessageCount?this.inner.pendingMessageCount:null,errorMessage:this.lastErrorMessage}}start(){this.unsubscribe=this.inner.subscribe(a=>{let b=null!==this.activePromptRunId&&void 0===a.__runId?{...a,__runId:this.activePromptRunId}:a;if("message_end"===a.type)return void queueMicrotask(()=>this.forwardEvent(this.withLatestEntryId(b)));if("agent_end"===a.type){this.pendingAgentEndTimer&&clearTimeout(this.pendingAgentEndTimer),this.pendingAgentEndTimer=setTimeout(()=>{this.pendingAgentEndTimer=null,this.forwardEvent(b)},0);return}"agent_start"===a.type&&this.pendingAgentEndTimer&&(clearTimeout(this.pendingAgentEndTimer),this.pendingAgentEndTimer=null),this.forwardEvent(b)}),this.resetIdleTimer(),R()}forwardEvent(a){let b=null!==this.activePromptRunId&&void 0===a.__runId?{...a,__runId:this.activePromptRunId}:a;this.recordRuntimeEvent(b),("message_end"===a.type||"compaction_end"===a.type||"auto_compaction_end"===a.type)&&this.bumpSessionCwd();let c=this.sequenceEvent((0,A.b)(b));for(let b of(this.bufferReplayEvent(c),this.resetIdleTimer(),("agent_end"===a.type||"agent_start"===a.type||"agent_settled"===a.type)&&R(),this.listeners))b(c)}withLatestEntryId(a){let b=a.message;if(!b||"user"!==b.role&&"assistant"!==b.role&&"toolResult"!==b.role)return a;try{let c=this.inner.sessionManager.getEntries(),d=JSON.stringify(b);for(let b=c.length-1;b>=0;b--){let e=c[b];if("message"===e.type&&"string"==typeof e.id&&JSON.stringify(e.message)===d)return{...a,__entryId:e.id}}}catch{}let c=function(a){let b="string"==typeof a.role?a.role:null;if(!b)return null;let c="number"==typeof a.timestamp?a.timestamp:0,d=0;try{let b=JSON.stringify(a.content??"");for(let a=0;a<b.length;a++)d=(d<<5)-d+b.charCodeAt(a)|0}catch{}return`synth:${b}:${c}:${(d>>>0).toString(36)}`}(b);return c?{...a,__entryId:c}:a}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}sequenceEvent(a){"string"!=typeof this.streamEpoch&&(this.streamEpoch=(0,q.randomUUID)());let b=Number.isSafeInteger(this.nextEventId)?this.nextEventId:1;return this.nextEventId=b+1,{...a,__eventId:`${this.streamEpoch}:${b}`,__eventSequence:b,__streamEpoch:this.streamEpoch}}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){let c=(0,y.Z)({streamEpoch:this.streamEpoch,nextSequence:this.nextEventId,events:this.replayEvents,afterEventId:b.afterEventId}),{afterSequence:d}=c;for(let e of(c.replayGap&&(a({type:"replay_gap",requestedAfter:b.afterEventId,streamEpoch:this.streamEpoch,oldestEventId:this.replayEvents[0]?.__eventId??null}),d=void 0),this.replayEvents)){let b="number"==typeof e.__eventSequence?e.__eventSequence:0;(void 0===d||b>d)&&a(e)}}return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async bindExtensions(){if(this.extensionsBound)return;let a=this.createExtensionUiContext(),b=this.createExtensionCommandContextActions();"function"==typeof this.inner.bindExtensions?await this.inner.bindExtensions({uiContext:a,mode:"rpc",commandContextActions:b,shutdownHandler:()=>this.emit({type:"extension_ui_request",id:(0,q.randomUUID)(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in AnnoVibe."}),onError:a=>this.emit({type:"extension_error",extensionPath:a?.extensionPath??"unknown",event:a?.event??"unknown",error:a?.error instanceof Error?a.error.message:String(a?.error??"Extension error")})}):this.inner.extensionRunner?.setUIContext?.(a,"rpc"),this.extensionsBound=!0}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:async(a,b)=>({cancelled:(await this.inner.navigateTree(a,{summarize:b?.summarize})).cancelled}),switchSession:async()=>({cancelled:!0}),reload:async()=>{await this.inner.reload?.(),this.extensionsBound=!1,await this.bindExtensions()}}}createExtensionUiContext(){let a=a=>{this.emit({type:"extension_ui_request",id:(0,q.randomUUID)(),...a})};return{select:(a,b,c)=>this.requestExtensionUi({method:"select",title:a,options:b,...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"string"==typeof a.value?a.value:void 0,c),confirm:(a,b,c)=>this.requestExtensionUi({method:"confirm",title:a,message:b,...c?.timeout?{timeout:c.timeout}:{}},!1,a=>!0===a.confirmed,c),input:(a,b,c)=>this.requestExtensionUi({method:"input",title:a,...void 0!==b?{placeholder:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"string"==typeof a.value?a.value:void 0,c),editor:(a,b,c)=>this.requestExtensionUi({method:"editor",title:a,...void 0!==b?{prefill:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"string"==typeof a.value?a.value:void 0,c),notify:(b,c)=>{a({method:"notify",message:b,notifyType:c})},setStatus:(b,c)=>{void 0===c?this.extensionStatuses.delete(b):this.extensionStatuses.set(b,c),a({method:"setStatus",statusKey:b,statusText:c??null})},setWidget:(b,c,d)=>{if(Array.isArray(c)&&c.every(a=>"string"==typeof a)){let e=d?.placement??"aboveEditor";this.extensionWidgets.set(b,{lines:c,placement:e}),a({method:"setWidget",widgetKey:b,widgetLines:c,widgetPlacement:e});return}(void 0===c||"function"==typeof c)&&(this.extensionWidgets.delete(b),a({method:"setWidget",widgetKey:b,widgetLines:null}))},setTitle:b=>a({method:"setTitle",title:b}),pasteToEditor:b=>a({method:"set_editor_text",text:b}),setEditorText:b=>a({method:"set_editor_text",text:b}),getEditorText:()=>"",custom:async()=>void 0,onTerminalInput:()=>()=>{},setWorkingMessage:()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setFooter:()=>{},setHeader:()=>{},addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,get theme(){return Y},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in AnnoVibe extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}requestExtensionUi(a,b,c,d){if(d?.signal?.aborted)return Promise.resolve(b);let e=(0,q.randomUUID)();return new Promise(f=>{let g=!1,h=null,i=a=>{g||(g=!0,h&&clearTimeout(h),d?.signal?.removeEventListener("abort",k),this.pendingUiResponses.delete(e),f(a))},j=()=>this.emit({type:"extension_ui_request",id:e,method:"dismiss"}),k=()=>{j(),i(b)};this.pendingUiResponses.set(e,{respond:a=>i(c(a)),cancel:()=>i(b)}),d?.signal?.addEventListener("abort",k,{once:!0}),d?.timeout&&d.timeout>0&&(h=setTimeout(()=>{j(),i(b)},d.timeout)),this.emit({type:"extension_ui_request",id:e,...a})})}resolveExtensionUiResponse(a){let b="string"==typeof a.id?a.id:"",c=this.pendingUiResponses.get(b);c&&(!0===a.cancelled?c.cancel():c.respond(a))}async send(a){this.resetIdleTimer();let b=a.type;switch(b){case"prompt":{if(null!==this.activePromptRunId||this.isBusy())throw new U(this.sessionId);Number.isSafeInteger(this.promptRunId)||(this.promptRunId=0);let b=++this.promptRunId;this.activePromptRunId=b,this.busyOperations.add("prompt"),this.setRuntimePhase("waiting_model"),this.resetIdleTimer(),this.replayEvents=[],this.emit({type:"prompt_admitted",__runId:b}),R();try{let c,d,e="string"==typeof a.leafId&&a.leafId.trim()?a.leafId:null;if(e&&this.inner.sessionManager.getLeafId()!==e&&(await this.inner.navigateTree(e,{})).cancelled)throw Error(`Failed to navigate session to leaf ${e}`);if("string"==typeof a.provider&&"string"==typeof a.modelId&&await this.applyModelSelection(a.provider,a.modelId),"string"==typeof a.thinkingLevel&&this.applyThinkingLevel(a.thinkingLevel),Array.isArray(a.toolNames)){let b=this.filterAvailableToolNames(a.toolNames);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let f=a.images,g=this.inner.model?.input,h=!g||0===g.length||g.includes("image")?f:void 0,i=!1,j=!1,k=new Promise((a,b)=>{c=()=>{j||(i=!0,j=!0,a())},d=a=>{j||(j=!0,b(a))}});return this.inner.prompt(a.message,{...h?.length?{images:h}:{},preflightResult:a=>{a&&c()}}).then(()=>{c(),this.emit({type:"prompt_done",__runId:b})}).catch(a=>{d(a),i&&this.abortedPromptRunId!==b&&this.emit({type:"prompt_error",__runId:b,error:a instanceof Error?a.message:String(a)})}).finally(()=>this.finishPromptRun(b)),await k,{runId:b}}catch(a){throw this.emit({type:"prompt_error",__runId:b,error:a instanceof Error?a.message:String(a)}),this.finishPromptRun(b),a}}case"abort":if(this.inner.isBashRunning)return this.inner.abortBash?.(),null;return this.abortedPromptRunId=this.promptRunId,await this.inner.abort(),null;case"abort_bash":return this.inner.abortBash?.(),null;case"bash":{if(this.isBusy()||this.inner.isBashRunning)throw new U(this.sessionId);if("function"!=typeof this.inner.executeBash)throw Error("Shell execution is not supported by this pi version");let b="string"==typeof a.command?a.command.trim():"";if(!b)throw Error("command is required");let c=!0===a.excludeFromContext;this.busyOperations.add("bash"),this.setRuntimePhase("running_tools"),this.resetIdleTimer(),R(),this.emit({type:"bash_execution_start",command:b,excludeFromContext:c});try{let a=await this.inner.executeBash(b,a=>this.emit({type:"bash_execution_update",command:b,chunk:a}),{excludeFromContext:c});return(0,f.lG)(this.sessionId),this.bumpSessionCwd(),this.emit({type:"bash_done",command:b,output:a.output,exitCode:a.exitCode,cancelled:a.cancelled,truncated:a.truncated,fullOutputPath:a.fullOutputPath,excludeFromContext:c}),a}finally{this.busyOperations.delete("bash"),this.isBusy()||this.setRuntimePhase("idle"),this.resetIdleTimer(),R()}}case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage(),c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)(),e=(0,t.U5)(this.inner.sessionId),f=this.getRuntimeStatus();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:this.inner.pendingMessageCount??0,isBashRunning:this.inner.isBashRunning??!1,queuedMessages:{steering:[...this.inner.getSteeringMessages?.()??[]],followUp:[...this.inner.getFollowUpMessages?.()??[]]},phase:f.phase,activeTools:f.activeTools,lastEventAt:f.lastEventAt,lastEventType:f.lastEventType,errorMessage:f.errorMessage,goal:e?.goal??null,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,k.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:[...this.extensionStatuses.entries()].map(([a,b])=>({key:a,text:b})),extensionWidgets:[...this.extensionWidgets.entries()].map(([a,b])=>({key:a,lines:b.lines,placement:b.placement}))}}case"set_model":{if(this.isBusy())throw new U(this.sessionId);let{provider:b,modelId:c}=a,d=await this.applyModelSelection(b,c);return{id:d.id,provider:d.provider,thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"fork":{let b;if(this.isBusy())throw new U(this.sessionId);let 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();(0,f.O8)(j,b);let k=F(this.inner),l=(0,t.U5)(this.sessionId);return l&&await (0,t.oR)(j,{...l,createdBy:"fork",createdAt:new Date().toISOString()},k?{cwd:k}:{}),this.destroy(),k&&((0,v.fd)(k),(0,v.E8)()),{cancelled:!1,newSessionId:j}}case"navigate_tree":if(this.isBusy())throw new U(this.sessionId);return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":if(this.isBusy())throw new U(this.sessionId);return this.applyThinkingLevel(a.level),null;case"compact":{let b;if(this.isBusy())throw new U(this.sessionId);let{findCutPoint:d,DEFAULT_COMPACTION_SETTINGS:e}=await Promise.resolve().then(c.bind(c,75430)),f=this.inner.sessionManager.getBranch(),g={...e,...this.inner.settingsManager.getCompactionSettings()},h=-1;for(let a=f.length-1;a>=0;a--)if("compaction"===f[a].type){h=a;break}let i=h+1,j=d(f,i,f.length,g.keepRecentTokens);if((j.isSplitTurn?j.turnStartIndex:j.firstKeptEntryIndex)<=i)throw new V("too-short","Conversation is too short to compact");try{b=await this.trackBusy("compact",this.inner.compact(a.customInstructions))}catch(c){let a,b;throw(b=(a=c instanceof Error?c.message:String(c)).toLowerCase()).includes("already compacted")?new V("already-compacted","This session has already been compacted"):b.includes("too small")||b.includes("nothing to compact")||b.includes("too short")?new V("too-short","Conversation is too short to compact"):b.includes("cancelled")||b.includes("abort")?new V("cancelled","Compaction was cancelled"):new V("failed",a||"Compaction failed")}let k=b;return{tokensBefore:"number"==typeof k?.tokensBefore?k.tokensBefore:null,tokensAfter:"number"==typeof k?.estimatedTokensAfter?k.estimatedTokensAfter:null,reducedBy:"number"==typeof k?.tokensBefore&&"number"==typeof k?.estimatedTokensAfter?Math.max(0,k.tokensBefore-k.estimatedTokensAfter):null}}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return await this.trackBusy("steer",this.inner.steer(a.message,d?.length?d:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return await this.trackBusy("follow_up",this.inner.followUp(a.message,d?.length?d:void 0)),null}case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"get_commands":{let a=[];try{for(let b of this.inner.extensionRunner?.getRegisteredCommands?.()??[])a.push({name:b.invocationName,...b.description?{description:b.description}:{},source:"extension"})}catch{}try{for(let b of this.inner.promptTemplates??[])a.push({name:b.name,...b.description?{description:b.description}:{},source:"prompt"})}catch{}try{for(let b of this.inner.resourceLoader?.getSkills?.().skills??[])a.push({name:`skill:${b.name}`,...b.description?{description:b.description}:{},source:"skill",...b.disableModelInvocation?{disableModelInvocation:!0}:{}})}catch{}return{commands:a}}case"clear_queue":return this.inner.clearQueue?this.inner.clearQueue():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":{if(this.isBusy())throw new U(this.sessionId);let b=this.filterAvailableToolNames(a.toolNames);return this.inner.setActiveToolsByName(b),this.applyRuntimePrompts(),(0,t.LN)(this.sessionId,{lastToolNames:this.inner.getActiveToolNames()}).catch(()=>{}),null}case"abort_compaction":return this.inner.abortCompaction(),null;case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return this.inner.setSessionName(b),(0,f.lG)(this.sessionId),(0,v.xm)(this.sessionId),null}case"append_message":{if(this.isBusy())throw new U(this.sessionId);let b=a.message;if("string"!=typeof b||!b.trim())return null;if(!this.inner.sendCustomMessage)throw Error("Session does not support append_message");return await this.inner.sendCustomMessage({customType:"string"==typeof a.customType&&a.customType?a.customType:"context-note",content:b,display:"boolean"!=typeof a.display||a.display},{triggerTurn:!1}),null}case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){if(this._alive){for(let a of(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.pendingAgentEndTimer&&clearTimeout(this.pendingAgentEndTimer),this.pendingAgentEndTimer=null,this.unsubscribe?.(),this.pendingUiResponses.values()))a.cancel();this.pendingUiResponses.clear(),this.onDestroyCallback?.(),R()}}bumpSessionCwd(){let a=F(this.inner);a&&(0,v.fd)(a)}async applyModelSelection(a,b){let c=this.modelRuntime.getModel(a,b);if(!c){let d=a.toLowerCase().replace(/-/g,"");d!==a&&(c=this.modelRuntime.getModel(d,b))}if(!c){try{await this.modelRuntime.refresh({allowNetwork:!1})}catch{}if(!(c=this.modelRuntime.getModel(a,b))){let d=a.toLowerCase().replace(/-/g,"");d!==a&&(c=this.modelRuntime.getModel(d,b))}}if(!c)throw Error(`Model not found: ${a}/${b}`);return await this.inner.setModel(c),c}applyThinkingLevel(a){this.inner.setThinkingLevel(a),"xhigh"===a&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh")}preparePromptContext(a){this.applyRuntimePrompts(a)}finishPromptRun(a){this.activePromptRunId===a&&(this.activePromptRunId=null,this.busyOperations.delete("prompt"),this.isBusy()||this.setRuntimePhase("idle"),this.resetIdleTimer(),R())}async trackBusy(a,b){this.busyOperations.add(a),this.setRuntimePhase("compact"===a?"compacting":"waiting_model"),this.resetIdleTimer(),R();try{return await b}finally{this.busyOperations.delete(a),this.isBusy()||this.setRuntimePhase("idle"),this.resetIdleTimer(),R()}}setRuntimePhase(a,b=Date.now()){this.currentRuntimePhase!==a&&(this.currentRuntimePhase=a,this.phaseStartedAtMs="idle"===a?null:b)}getPhase(){if(this.inner.isCompacting||this.busyOperations.has("compact"))return"compacting";if(this.activeTools.size>0)return"running_tools";if(this.isBusy()){let a=this.currentRuntimePhase;return a&&"idle"!==a?a:"waiting_model"}return"idle"}emit(a){let b=this.sequenceEvent(a);for(let a of(this.bufferReplayEvent(b),this.listeners))a(b)}recordRuntimeEvent(a){let b=Date.now();switch(this.lastEventAtMs=b,this.lastEventType=a.type,a.type){case"agent_start":this.runStartedAtMs=b,this.firstModelEventAtMs=null,this.lastErrorMessage=null,this.activeTools.clear(),this.setRuntimePhase("waiting_model",b);break;case"message_start":case"message_update":{let c=a.message;c?.role==="assistant"?(this.firstModelEventAtMs||(this.firstModelEventAtMs=b),"string"==typeof c.errorMessage&&(this.lastErrorMessage=c.errorMessage),this.setRuntimePhase("streaming",b)):c?.role==="user"&&this.setRuntimePhase("waiting_model",b);break}case"message_end":{let c=a.message;c?.role==="assistant"&&"string"==typeof c.errorMessage&&(this.lastErrorMessage=c.errorMessage),this.setRuntimePhase("waiting_model",b);break}case"tool_execution_start":{let c="string"==typeof a.toolCallId?a.toolCallId:"",d="string"==typeof a.toolName?a.toolName:"tool";c&&this.activeTools.set(c,d),this.setRuntimePhase("running_tools",b);break}case"tool_execution_end":{let c="string"==typeof a.toolCallId?a.toolCallId:"";c&&this.activeTools.delete(c),this.setRuntimePhase(this.activeTools.size>0?"running_tools":"waiting_model",b);break}case"auto_retry_start":this.setRuntimePhase("waiting_model",b);break;case"compaction_start":case"auto_compaction_start":this.setRuntimePhase("compacting",b);break;case"compaction_end":case"auto_compaction_end":this.setRuntimePhase(this.isBusy()?"waiting_model":"idle",b);break;case"agent_end":this.activeTools.clear(),!0===a.willRetry?this.setRuntimePhase("waiting_model",b):(this.setRuntimePhase("idle",b),this.runStartedAtMs=null,this.firstModelEventAtMs=null);break;case"agent_settled":this.activeTools.clear(),this.setRuntimePhase("idle",b),this.runStartedAtMs=null,this.firstModelEventAtMs=null}}applyRuntimePrompts(a){if(!this.inner.agent.state||this.options.systemPromptDisabled)return;let b=(0,g.cV)(),c=this.inner.getActiveToolNames(),d=(0,m.R4)(c),e=D(this.inner),f=0;if(this.sessionFile)try{f=(0,o.statSync)(this.sessionFile).mtimeMs}catch{f=0}let h=null;if(d&&this.sessionFile)if(this._kernelStateCache&&this._kernelStateCache.mtime===f)h=this._kernelStateCache.summary;else{let a=(0,x.f)(this.sessionFile);a?(h=(0,x.v)(a),this._kernelStateCache={mtime:f,summary:h}):this._kernelStateCache=null}else this._kernelStateCache=null;let i=h?`|mtime=${f}`:"",j=a??"",n=`${d}|${b.generativeUI}|${j.length>0?"msg":"no-msg"}${i}`;if(this._lastAppliedPromptKey===n&&e.length>0)return;if(!b.generativeUI){let a=(0,m.X8)((0,k.FE)(e)),b=H(a,d),c=h?`${b}
143
143
 
144
- ${h}`:b;C(this.inner,c),this._lastAppliedPromptKey=n;return}let p=(0,m.X8)((0,k.FE)(e)),q=(0,k.zN)(p),r=F(q,d),s=a?(0,l.WO)(r,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)}):r;h&&(s=`${s}
144
+ ${h}`:b;E(this.inner,c),this._lastAppliedPromptKey=n;return}let p=(0,m.X8)((0,k.FE)(e)),q=(0,k.zN)(p),r=H(q,d),s=a?(0,l.WO)(r,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)}):r;h&&(s=`${s}
145
145
 
146
- ${h}`),C(this.inner,s),this._lastAppliedPromptKey=n}filterAvailableToolNames(a){if(!Array.isArray(a))return[];let b=a.filter(a=>"string"==typeof a);if(!b.includes(s.lA))return b;let c=(0,e.getAgentDir)();return(0,r.Y)(c).ready?b:b.filter(a=>a!==s.lA)}}function B(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function C(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function D(a){try{let b=a.sessionManager;return b.getCwd?.()??null}catch{return null}}function E(a){return a?new Date(a).toISOString():null}function F(a,b){let c=(0,m.X8)(a);return b?(0,m.FJ)(c):c}function G(a){let b=(0,m.X8)((0,k.FE)(a.systemPrompt)),c=a.generativeUI?(0,k.zN)(b):b;return F(c,a.plotMode)}function H(a){let b=[],c=(0,n.sz)(a.agentDir);if((0,o.existsSync)(c))try{let a=(0,o.readFileSync)(c,"utf-8").trim();a&&b.push((0,n.Is)(a,(0,n.Tg)(c)))}catch{}let d=(0,n.td)(a.agentDir);if((0,o.existsSync)(d))try{let a=(0,o.readFileSync)(d,"utf-8").trim();a&&!(0,k.J)(a)&&b.push((0,n.x9)(a,(0,n.Tg)(d)))}catch{}let e=(0,n.o7)(a.cwd);if((0,o.existsSync)(e))try{let a=(0,o.readFileSync)(e,"utf-8").trim();a&&b.push((0,n.w0)(a,(0,n.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 I(){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 J(a){return I().get(a)}function K(){let a=new Set;for(let[b,c]of I())c.isAlive()&&c.isBusy()&&a.add(c.sessionId||b);return[...a]}function L(){return globalThis.__piRunningListeners||(globalThis.__piRunningListeners=new Set),globalThis.__piRunningListeners}function M(a){let b=L();return b.add(a),()=>{b.delete(a)}}function N(){return L().size}let V="";function O(){let a=K(),b=JSON.stringify([...a].sort());if(b!==V)for(let c of(V=b,L()))try{c(a)}catch{}}function P(){let a=[...I().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 Q(a,b,d,k,l){let n=I(),o=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),q=n.get(a);if(q?.isAlive())return{session:q,realSessionId:a};let u=o.get(a);if(u)return u;let w=(async()=>{let o=(0,e.getAgentDir)(),q=b?e.SessionManager.open(b,void 0):e.SessionManager.create(d,void 0),u=e.SettingsManager.create(d,o),w=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,p.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,p.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),x=await (0,e.createAgentSessionServices)({cwd:d,agentDir:o,settingsManager:u,resourceLoaderOptions:{additionalSkillPaths:w?[(0,p.join)(w,"skills")]:[],extensionFactories:[h.H,i.A,j.$]}}),y=!k&&a?(0,t.U5)(a)?.lastToolNames:void 0,z=function(a,b){if(a)return!a.includes(s.lA)||(0,r.Y)(b).ready?a:a.filter(a=>a!==s.lA)}(k??y,o),{session:A}=await (0,e.createAgentSessionFromServices)({services:x,sessionManager:q,tools:z??T}),D=(0,g.cV)(),E=A.agent.state?.systemPrompt??"";C(A,H({cwd:d,agentDir:o,piSystemPrompt:E})),C(A,G({systemPrompt:B(A),generativeUI:D.generativeUI,plotMode:(0,m.R4)(z??A.getActiveToolNames())})),z&&z.length>0&&(A.setActiveToolsByName(z),C(A,G({systemPrompt:B(A),generativeUI:D.generativeUI,plotMode:(0,m.R4)(z)}))),z?.length===0&&C(A,H({cwd:d,agentDir:o,piSystemPrompt:""}));let F=new U(A,x.modelRegistry,{systemPromptDisabled:z?.length===0});F.start(),"im"===l&&C(A,(0,v.N9)(B(A)));let I=A.sessionId,J=A.sessionFile;return J&&(0,f.O8)(I,J),F.onDestroy(()=>n.delete(I)),n.set(I,F),{session:F,realSessionId:I}})().finally(()=>o.delete(a));return o.set(a,w),w}d()}catch(a){d(a)}})},57149:(a,b,c)=>{"use strict";c.d(b,{N9:()=>e});let d="<wecom_im_channel>";function e(a){return a.includes(d)?a:`${a}
146
+ ${h}`),E(this.inner,s),this._lastAppliedPromptKey=n}filterAvailableToolNames(a){if(!Array.isArray(a))return[];let b=a.filter(a=>"string"==typeof a);if(!b.includes(s.lA))return b;let c=(0,e.getAgentDir)();return(0,r.Y)(c).ready?b:b.filter(a=>a!==s.lA)}}function D(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function E(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function F(a){try{let b=a.sessionManager;return b.getCwd?.()??null}catch{return null}}function G(a){return a?new Date(a).toISOString():null}function H(a,b){let c=(0,m.X8)(a);return b?(0,m.FJ)(c):c}function I(a){let b=(0,m.X8)((0,k.FE)(a.systemPrompt)),c=a.generativeUI?(0,k.zN)(b):b;return H(c,a.plotMode)}function J(a){let b=[],c=(0,n.sz)(a.agentDir);if((0,o.existsSync)(c))try{let a=(0,o.readFileSync)(c,"utf-8").trim();a&&b.push((0,n.Is)(a,(0,n.Tg)(c)))}catch{}let d=(0,n.td)(a.agentDir);if((0,o.existsSync)(d))try{let a=(0,o.readFileSync)(d,"utf-8").trim();a&&!(0,k.J)(a)&&b.push((0,n.x9)(a,(0,n.Tg)(d)))}catch{}let e=(0,n.o7)(a.cwd);if((0,o.existsSync)(e))try{let a=(0,o.readFileSync)(e,"utf-8").trim();a&&b.push((0,n.w0)(a,(0,n.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 K(){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 L(a){return K().get(a)}function M(a){let b="win32"===process.platform?(0,p.resolve)(a).toLowerCase():(0,p.resolve)(a),c=[],d=[];for(let[a,e]of K())e.isAlive()&&(e.cwd?"win32"===process.platform?(0,p.resolve)(e.cwd).toLowerCase():(0,p.resolve)(e.cwd):"")===b&&(e.isBusy()?d.push(a):(e.destroy(),c.push(a)));return{destroyed:c,busy:d}}function N(){let a=new Set;for(let[b,c]of K())c.isAlive()&&c.isBusy()&&a.add(c.sessionId||b);return[...a]}function O(){return globalThis.__piRunningListeners||(globalThis.__piRunningListeners=new Set),globalThis.__piRunningListeners}function P(a){let b=O();return b.add(a),()=>{b.delete(a)}}function Q(){return O().size}let $="";function R(){let a=N(),b=JSON.stringify([...a].sort());if(b!==$)for(let c of($=b,O()))try{c(a)}catch{}}function S(){let a=[...K().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 T(a,b,d,k,l){let n=K(),q=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),v=n.get(a);if(v?.isAlive())return{session:v,realSessionId:a};let x=q.get(a);if(x)return x;let y=(async()=>{let q,v=(0,e.getAgentDir)(),x=function(a,b,c){if(a&&(0,o.existsSync)(a))return e.SessionManager.open(a,void 0);let d=a?e.SessionManager.create(b,(0,p.dirname)(a)):e.SessionManager.create(b,void 0);if(a&&!c.startsWith("__"))try{d.newSession({id:c})}catch{}let f=a||d.getSessionFile(),g=d.getHeader();return f&&g?((0,o.mkdirSync)((0,p.dirname)(f),{recursive:!0}),(0,o.writeFileSync)(f,`${JSON.stringify(g)}
147
+ `,"utf8"),e.SessionManager.open(f,void 0)):d}(b,d,a),y=e.SettingsManager.create(d,v),z=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,p.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,p.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),A=(0,u.Fk)(d,v),B=await (0,e.createAgentSessionServices)({cwd:d,agentDir:v,settingsManager:y,...A?{resourceLoaderReloadOptions:A}:{},resourceLoaderOptions:{additionalSkillPaths:z?[(0,p.join)(z,"skills")]:[],extensionFactories:[h.H,i.A,j.$]}}),C=!k&&a?(0,t.U5)(a)?.lastToolNames:void 0,F=function(a,b){if(a)return!a.includes(s.lA)||(0,r.Y)(b).ready?a:a.filter(a=>a!==s.lA)}(k??C,v),G=y.getEnabledModels()??[];if(G.length>0){let a=await (0,e.resolveModelScopeWithDiagnostics)(G,B.modelRuntime);for(let b of a.diagnostics)console.warn(`[annovibe] enabledModels: ${b.message}`);a.scopedModels.length>0&&(q=a.scopedModels)}let{session:H}=await (0,e.createAgentSessionFromServices)({services:B,sessionManager:x,tools:F??W,...q?{scopedModels:q}:{}}),K=new Z(H,B.modelRuntime,{systemPromptDisabled:F?.length===0});try{await K.bindExtensions()}catch(a){console.error("[annovibe] extension binding failed:",a instanceof Error?a.message:a)}let L=(0,g.cV)(),M=H.agent.state?.systemPrompt??"";E(H,J({cwd:d,agentDir:v,piSystemPrompt:M})),E(H,I({systemPrompt:D(H),generativeUI:L.generativeUI,plotMode:(0,m.R4)(F??H.getActiveToolNames())})),F&&F.length>0&&(H.setActiveToolsByName(F),E(H,I({systemPrompt:D(H),generativeUI:L.generativeUI,plotMode:(0,m.R4)(F)}))),F?.length===0&&E(H,J({cwd:d,agentDir:v,piSystemPrompt:""})),K.start(),"im"===l&&E(H,(0,w.N9)(D(H)));let N=H.sessionId,O=H.sessionFile;return O&&(0,f.O8)(N,O),K.onDestroy(()=>n.delete(N)),n.set(N,K),{session:K,realSessionId:N}})().finally(()=>q.delete(a));return q.set(a,y),y}d()}catch(a){d(a)}})},57149:(a,b,c)=>{"use strict";c.d(b,{N9:()=>e});let d="<wecom_im_channel>";function e(a){return a.includes(d)?a:`${a}
147
148
 
148
149
  ${d}
149
150
  ## WeCom IM Channel Constraints
@@ -166,7 +167,7 @@ Rules:
166
167
  - Cheap package imports are acceptable after a resume if needed, but avoid repeating boilerplate in every call.
167
168
  - For large objects, first check existence: Python: if 'name' not in globals() — R: if (!exists('name')).
168
169
  - Do NOT call sc.read() / readRDS() / qread() blindly at the top of every call.
169
- - If a required object is missing after a resumed session, reload only that missing object from its known source path, then continue using it.`),b.push("</workbench-kernel-state>"),b.join("\n")}},66469:(a,b,c)=>{"use strict";c.d(b,{Is:()=>m,Ko:()=>h,M3:()=>k,Tg:()=>l,bo:()=>i,o7:()=>j,sz:()=>f,td:()=>g,w0:()=>o,x9:()=>n});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:b}function k(a){return(0,e.join)(a,"MEMORY.md")}function l(a){return(0,e.basename)(a)}function m(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 n(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 o(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")}},83026:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=83026,a.exports=b},85097:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>i});var e=c(28802),f=c(75430),g=c(96640),h=a([e,f,g]);function i(a){a.registerTool((0,f.defineTool)({name:"retain",label:"Retain",description:"Store important facts in project memory for later recall.",promptSnippet:"Store stable project facts, decisions, or preferences in memory.",promptGuidelines:["Use retain when the user or tool output reveals durable project facts worth remembering.","Prefer a few compact factual items over dumping whole conversations.","Set higher importance for decisions, stable paths, or repeated user preferences."],executionMode:"sequential",parameters:e.Type.Object({items:e.Type.Array(e.Type.Object({content:e.Type.String({description:"Information to remember."}),context:e.Type.Optional(e.Type.String({description:"Short source context for the memory."})),importance:e.Type.Optional(e.Type.Number({description:"Priority from 0 to 1."})),memoryType:e.Type.Optional(e.Type.Union([e.Type.Literal("fact"),e.Type.Literal("context"),e.Type.Literal("preference"),e.Type.Literal("decision"),e.Type.Literal("note")],{description:"Memory category."}))}),{minItems:1})}),async execute(a,b,c,d,e){let f=e.sessionManager.getSessionId(),h=[];for(let a of b.items){let b=await (0,g.ny)({content:a.content,importance:a.importance,sessionId:f,cwd:e.cwd,memoryType:a.memoryType,metadata:{context:a.context??null,tool:"retain"}});h.push(b)}let i=(0,g.Dn)(e.cwd);return{content:[{type:"text",text:`${h.length} ${1===h.length?"memory":"memories"} stored.`}],details:{schema:"annovibe.memory.retain.v1",stored:h,store:i}}}})),a.registerTool((0,f.defineTool)({name:"recall",label:"Recall",description:"Search project memory for relevant prior context.",promptSnippet:"Search project memory for prior facts or decisions relevant to the current task.",promptGuidelines:["Use recall before repeating project discovery work across sessions.","Ask focused natural-language queries that mention the project, file, sample, or analysis concept."],executionMode:"sequential",parameters:e.Type.Object({query:e.Type.String({description:"Natural-language memory search query."}),limit:e.Type.Optional(e.Type.Number({description:"Maximum results to return."}))}),async execute(a,b,c,d,e){let f=(0,g.TI)(e.cwd,b.query,b.limit??5),h=(0,g.Dn)(e.cwd);return 0===f.length?{content:[{type:"text",text:"No relevant memories found."}],details:{schema:"annovibe.memory.recall.v1",results:[],store:h}}:{content:[{type:"text",text:`Found ${f.length} relevant ${1===f.length?"memory":"memories"}:
170
+ - If a required object is missing after a resumed session, reload only that missing object from its known source path, then continue using it.`),b.push("</workbench-kernel-state>"),b.join("\n")}},66469:(a,b,c)=>{"use strict";c.d(b,{Is:()=>m,Ko:()=>h,M3:()=>k,Tg:()=>l,bo:()=>i,o7:()=>j,sz:()=>f,td:()=>g,w0:()=>o,x9:()=>n});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:b}function k(a){return(0,e.join)(a,"MEMORY.md")}function l(a){return(0,e.basename)(a)}function m(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 n(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 o(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")}},72498:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Fk:()=>i,Y1:()=>g,er:()=>h});var e=c(75430),f=a([e]);function g(a,b=(0,e.getAgentDir)()){if(!a||!(0,e.hasTrustRequiringProjectResources)(a))return{cwd:a,requiresTrust:!1,trusted:!0};let c=new e.ProjectTrustStore(b);return{cwd:a,requiresTrust:!0,trusted:!0===c.get(a)}}function h(a,b=(0,e.getAgentDir)()){let c=g(a,b);return c.requiresTrust?(new e.ProjectTrustStore(b).set(a,!0),{...c,trusted:!0}):c}function i(a,b=(0,e.getAgentDir)()){if(!a||!(0,e.hasTrustRequiringProjectResources)(a))return;let c=new e.ProjectTrustStore(b);return{resolveProjectTrust:async()=>!0===c.get(a)}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},83026:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=83026,a.exports=b},85097:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>i});var e=c(28802),f=c(75430),g=c(96640),h=a([e,f,g]);function i(a){a.registerTool((0,f.defineTool)({name:"retain",label:"Retain",description:"Store important facts in project memory for later recall.",promptSnippet:"Store stable project facts, decisions, or preferences in memory.",promptGuidelines:["Use retain when the user or tool output reveals durable project facts worth remembering.","Prefer a few compact factual items over dumping whole conversations.","Set higher importance for decisions, stable paths, or repeated user preferences."],executionMode:"sequential",parameters:e.Type.Object({items:e.Type.Array(e.Type.Object({content:e.Type.String({description:"Information to remember."}),context:e.Type.Optional(e.Type.String({description:"Short source context for the memory."})),importance:e.Type.Optional(e.Type.Number({description:"Priority from 0 to 1."})),memoryType:e.Type.Optional(e.Type.Union([e.Type.Literal("fact"),e.Type.Literal("context"),e.Type.Literal("preference"),e.Type.Literal("decision"),e.Type.Literal("note")],{description:"Memory category."}))}),{minItems:1})}),async execute(a,b,c,d,e){let f=e.sessionManager.getSessionId(),h=[];for(let a of b.items){let b=await (0,g.ny)({content:a.content,importance:a.importance,sessionId:f,cwd:e.cwd,memoryType:a.memoryType,metadata:{context:a.context??null,tool:"retain"}});h.push(b)}let i=(0,g.Dn)(e.cwd);return{content:[{type:"text",text:`${h.length} ${1===h.length?"memory":"memories"} stored.`}],details:{schema:"annovibe.memory.retain.v1",stored:h,store:i}}}})),a.registerTool((0,f.defineTool)({name:"recall",label:"Recall",description:"Search project memory for relevant prior context.",promptSnippet:"Search project memory for prior facts or decisions relevant to the current task.",promptGuidelines:["Use recall before repeating project discovery work across sessions.","Ask focused natural-language queries that mention the project, file, sample, or analysis concept."],executionMode:"sequential",parameters:e.Type.Object({query:e.Type.String({description:"Natural-language memory search query."}),limit:e.Type.Optional(e.Type.Number({description:"Maximum results to return."}))}),async execute(a,b,c,d,e){let f=(0,g.TI)(e.cwd,b.query,b.limit??5),h=(0,g.Dn)(e.cwd);return 0===f.length?{content:[{type:"text",text:"No relevant memories found."}],details:{schema:"annovibe.memory.recall.v1",results:[],store:h}}:{content:[{type:"text",text:`Found ${f.length} relevant ${1===f.length?"memory":"memories"}:
170
171
 
171
172
  ${(0,g.fu)(f)}`}],details:{schema:"annovibe.memory.recall.v1",results:f,store:h}}}})),a.registerTool((0,f.defineTool)({name:"reflect",label:"Reflect",description:"Synthesize an answer from recalled project memory.",promptSnippet:"Synthesize a concise answer grounded in remembered project context.",promptGuidelines:["Use reflect when the user asks for a summary or reminder that depends on past project memory.","Keep the answer grounded in recalled memories; do not invent facts not present in memory."],executionMode:"sequential",parameters:e.Type.Object({query:e.Type.String({description:"Question to answer from project memory."}),context:e.Type.Optional(e.Type.String({description:"Optional extra context to bias the reflection."})),limit:e.Type.Optional(e.Type.Number({description:"Maximum recall results to use."}))}),async execute(a,b,c,d,e){let f=(0,g.nf)(e.cwd,b.query,b.context,b.limit??5),h=(0,g.Dn)(e.cwd);return{content:[{type:"text",text:f.answer}],details:{schema:"annovibe.memory.reflect.v1",results:f.results,store:h}}}}))}[e,f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},96640:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Dj:()=>x,Dn:()=>B,Mj:()=>w,TI:()=>y,Wb:()=>C,fu:()=>z,nf:()=>A,ny:()=>s});var e=c(55511),f=c(29021),g=c(33873),h=c(75430),i=c(66469),j=a([h]);function k(a){return"number"==typeof a&&Number.isFinite(a)?Math.max(0,Math.min(1,Number(a.toFixed(3)))):.75}function l(a){return(0,g.join)((0,g.join)((0,h.getAgentDir)(),"memory",(0,e.createHash)("sha1").update(a).digest("hex")),"entries.jsonl")}function m(a){let b=(0,g.dirname)(a);(0,f.existsSync)(b)||(0,f.mkdirSync)(b,{recursive:!0})}function n(a){return[...new Set(a)]}function o(a){let b=l(a);if(!(0,f.existsSync)(b))return[];try{let a=(0,f.readFileSync)(b,"utf8").split("\n").map(a=>a.trim()).filter(Boolean),d=[];for(let b of a){var c;let a=(c=JSON.parse(b))&&"object"==typeof c?"string"!=typeof c.id||"string"!=typeof c.content||"string"!=typeof c.timestamp?null:{id:c.id,content:c.content,timestamp:c.timestamp,importance:k(c.importance),veracity:"tool"===c.veracity||"user"===c.veracity?c.veracity:"unknown",memoryType:"context"===c.memoryType||"preference"===c.memoryType||"decision"===c.memoryType||"note"===c.memoryType?c.memoryType:"fact",source:"string"==typeof c.source?c.source:"annovibe",sessionId:"string"==typeof c.sessionId?c.sessionId:"",cwd:"string"==typeof c.cwd?c.cwd:"",metadata:c.metadata&&"object"==typeof c.metadata?c.metadata:{},governance:c.governance&&"object"==typeof c.governance?{tier:"working",candidate:"spark"===c.governance.candidate||"project_memory"===c.governance.candidate?c.governance.candidate:"none",reason:"string"==typeof c.governance.reason?c.governance.reason:null,promotedTo:Array.isArray(c.governance.promotedTo)?c.governance.promotedTo.filter(a=>"memory"===a||"context"===a):[],promotedAt:"object"==typeof c.governance.promotedAt&&null!==c.governance.promotedAt?Object.fromEntries(Object.entries(c.governance.promotedAt).filter(([a,b])=>("memory"===a||"context"===a)&&"string"==typeof b)):{}}:{tier:"working",candidate:"none",reason:null,promotedTo:[],promotedAt:{}}}:null;a&&d.push(a)}return d}catch{return[]}}async function p(a,b){let c=l(a);m(c),await (0,h.withFileMutationQueue)(c,async()=>{let a=(0,f.existsSync)(c)?(0,f.readFileSync)(c,"utf8"):"",d=`${a}${a.endsWith("\n")||0===a.length?"":"\n"}${JSON.stringify(b)}
172
173
  `;(0,f.writeFileSync)(c,d,"utf8")})}async function q(a,b){let c=l(a);m(c),await (0,h.withFileMutationQueue)(c,async()=>{let a=b.length>0?`${b.map(a=>JSON.stringify(a)).join("\n")}