@seqyuan/annovibe 0.8.68 → 0.8.70

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 (239) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +11 -10
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_global-error/page.js +3 -3
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  29. package/.next/server/app/api/agent/[id]/route.js +1 -1
  30. package/.next/server/app/api/agent/new/route.js +1 -1
  31. package/.next/server/app/api/agent/runtime/route.js +1 -1
  32. package/.next/server/app/api/apps/[id]/[[...path]]/route.js +2 -2
  33. package/.next/server/app/api/apps/route.js +2 -2
  34. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  35. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  37. package/.next/server/app/api/auth/login/route.js +1 -1
  38. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  39. package/.next/server/app/api/auth/providers/route.js +1 -1
  40. package/.next/server/app/api/auth/status/route.js +1 -1
  41. package/.next/server/app/api/default-cwd/route.js +1 -1
  42. package/.next/server/app/api/files/[...path]/route.js +2 -2
  43. package/.next/server/app/api/harness/route.js +1 -1
  44. package/.next/server/app/api/home/route.js +1 -1
  45. package/.next/server/app/api/im/cancel/route.js +1 -1
  46. package/.next/server/app/api/im/gateway-status/route.js +1 -1
  47. package/.next/server/app/api/im/gateway-token/route.js +1 -1
  48. package/.next/server/app/api/im/project/route.js +2 -2
  49. package/.next/server/app/api/im/projects/route.js +2 -2
  50. package/.next/server/app/api/im/session-ids/route.js +1 -1
  51. package/.next/server/app/api/im/turn/route.js +2 -2
  52. package/.next/server/app/api/images/upload/route.js +1 -1
  53. package/.next/server/app/api/internal/runtime/route.js +1 -1
  54. package/.next/server/app/api/memory/dismiss/route.js +7 -0
  55. package/.next/server/app/api/memory/dismiss/route_client-reference-manifest.js +1 -0
  56. package/.next/server/app/api/memory/promote/route.js +4 -4
  57. package/.next/server/app/api/models/route.js +1 -1
  58. package/.next/server/app/api/models-config/discover/route.js +1 -1
  59. package/.next/server/app/api/models-config/route.js +1 -1
  60. package/.next/server/app/api/models-config/test/route.js +1 -1
  61. package/.next/server/app/api/plot-kernels/route.js +1 -1
  62. package/.next/server/app/api/plot-kernels/save/route.js +1 -1
  63. package/.next/server/app/api/plot-kernels/status/route.js +1 -1
  64. package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
  65. package/.next/server/app/api/projects/browse/route.js +1 -1
  66. package/.next/server/app/api/projects/route.js +2 -2
  67. package/.next/server/app/api/search/route.js +1 -1
  68. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  69. package/.next/server/app/api/sessions/[id]/plan/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  71. package/.next/server/app/api/sessions/new/route.js +1 -1
  72. package/.next/server/app/api/sessions/route.js +1 -1
  73. package/.next/server/app/api/settings/route.js +1 -1
  74. package/.next/server/app/api/skills/install/route.js +2 -2
  75. package/.next/server/app/api/skills/route.js +2 -2
  76. package/.next/server/app/api/skills/search/route.js +1 -1
  77. package/.next/server/app/api/soul/route.js +1 -1
  78. package/.next/server/app/api/subagents/status/route.js +1 -1
  79. package/.next/server/app/api/version/route.js +1 -1
  80. package/.next/server/app/favicon.ico/route.js +1 -1
  81. package/.next/server/app/icon.svg/route.js +1 -1
  82. package/.next/server/app/index.html +1 -1
  83. package/.next/server/app/index.rsc +2 -2
  84. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  85. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  86. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  87. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  88. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  89. package/.next/server/app/login/page.js +2 -2
  90. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  91. package/.next/server/app/login.html +1 -1
  92. package/.next/server/app/login.rsc +1 -1
  93. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  94. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  95. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  96. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  97. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  98. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  99. package/.next/server/app/page.js +9 -9
  100. package/.next/server/app/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/smoke/page.js +2 -2
  102. package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/smoke.html +2 -2
  104. package/.next/server/app/smoke.rsc +2 -2
  105. package/.next/server/app/smoke.segments/_full.segment.rsc +2 -2
  106. package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
  107. package/.next/server/app/smoke.segments/_index.segment.rsc +1 -1
  108. package/.next/server/app/smoke.segments/_tree.segment.rsc +1 -1
  109. package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +2 -2
  110. package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
  111. package/.next/server/app-paths-manifest.json +11 -10
  112. package/.next/server/chunks/1494.js +3 -3
  113. package/.next/server/chunks/7601.js +15 -15
  114. package/.next/server/chunks/7890.js +1 -1
  115. package/.next/server/chunks/9093.js +3 -3
  116. package/.next/server/middleware-build-manifest.js +1 -1
  117. package/.next/server/pages/404.html +1 -1
  118. package/.next/server/pages/500.html +1 -1
  119. package/.next/server/server-reference-manifest.json +1 -1
  120. package/.next/static/chunks/{9901-a87c4e0037c62107.js → 9901-54dfe54ff40a31d4.js} +5 -5
  121. package/.next/static/chunks/app/_global-error/page-4d80c4980a021c05.js +1 -0
  122. package/.next/static/chunks/app/api/agent/[id]/events/route-4d80c4980a021c05.js +1 -0
  123. package/.next/static/chunks/app/api/agent/[id]/route-4d80c4980a021c05.js +1 -0
  124. package/.next/static/chunks/app/api/agent/new/route-4d80c4980a021c05.js +1 -0
  125. package/.next/static/chunks/app/api/agent/runtime/route-4d80c4980a021c05.js +1 -0
  126. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-4d80c4980a021c05.js +1 -0
  127. package/.next/static/chunks/app/api/apps/route-4d80c4980a021c05.js +1 -0
  128. package/.next/static/chunks/app/api/auth/all-providers/route-4d80c4980a021c05.js +1 -0
  129. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-4d80c4980a021c05.js +1 -0
  130. package/.next/static/chunks/app/api/auth/login/[provider]/route-4d80c4980a021c05.js +1 -0
  131. package/.next/static/chunks/app/api/auth/login/route-4d80c4980a021c05.js +1 -0
  132. package/.next/static/chunks/app/api/auth/logout/[provider]/route-4d80c4980a021c05.js +1 -0
  133. package/.next/static/chunks/app/api/auth/providers/route-4d80c4980a021c05.js +1 -0
  134. package/.next/static/chunks/app/api/auth/status/route-4d80c4980a021c05.js +1 -0
  135. package/.next/static/chunks/app/api/default-cwd/route-4d80c4980a021c05.js +1 -0
  136. package/.next/static/chunks/app/api/files/[...path]/route-4d80c4980a021c05.js +1 -0
  137. package/.next/static/chunks/app/api/harness/route-4d80c4980a021c05.js +1 -0
  138. package/.next/static/chunks/app/api/home/route-4d80c4980a021c05.js +1 -0
  139. package/.next/static/chunks/app/api/im/cancel/route-4d80c4980a021c05.js +1 -0
  140. package/.next/static/chunks/app/api/im/gateway-status/route-4d80c4980a021c05.js +1 -0
  141. package/.next/static/chunks/app/api/im/gateway-token/route-4d80c4980a021c05.js +1 -0
  142. package/.next/static/chunks/app/api/im/project/route-4d80c4980a021c05.js +1 -0
  143. package/.next/static/chunks/app/api/im/projects/route-4d80c4980a021c05.js +1 -0
  144. package/.next/static/chunks/app/api/im/session-ids/route-4d80c4980a021c05.js +1 -0
  145. package/.next/static/chunks/app/api/im/turn/route-4d80c4980a021c05.js +1 -0
  146. package/.next/static/chunks/app/api/images/upload/route-4d80c4980a021c05.js +1 -0
  147. package/.next/static/chunks/app/api/internal/runtime/route-4d80c4980a021c05.js +1 -0
  148. package/.next/static/chunks/app/api/memory/dismiss/route-4d80c4980a021c05.js +1 -0
  149. package/.next/static/chunks/app/api/memory/promote/route-4d80c4980a021c05.js +1 -0
  150. package/.next/static/chunks/app/api/models/route-4d80c4980a021c05.js +1 -0
  151. package/.next/static/chunks/app/api/models-config/discover/route-4d80c4980a021c05.js +1 -0
  152. package/.next/static/chunks/app/api/models-config/route-4d80c4980a021c05.js +1 -0
  153. package/.next/static/chunks/app/api/models-config/test/route-4d80c4980a021c05.js +1 -0
  154. package/.next/static/chunks/app/api/plot-kernels/route-4d80c4980a021c05.js +1 -0
  155. package/.next/static/chunks/app/api/plot-kernels/save/route-4d80c4980a021c05.js +1 -0
  156. package/.next/static/chunks/app/api/plot-kernels/status/route-4d80c4980a021c05.js +1 -0
  157. package/.next/static/chunks/app/api/plot-kernels/stop/route-4d80c4980a021c05.js +1 -0
  158. package/.next/static/chunks/app/api/projects/browse/route-4d80c4980a021c05.js +1 -0
  159. package/.next/static/chunks/app/api/projects/route-4d80c4980a021c05.js +1 -0
  160. package/.next/static/chunks/app/api/search/route-4d80c4980a021c05.js +1 -0
  161. package/.next/static/chunks/app/api/sessions/[id]/context/route-4d80c4980a021c05.js +1 -0
  162. package/.next/static/chunks/app/api/sessions/[id]/plan/route-4d80c4980a021c05.js +1 -0
  163. package/.next/static/chunks/app/api/sessions/[id]/route-4d80c4980a021c05.js +1 -0
  164. package/.next/static/chunks/app/api/sessions/new/route-4d80c4980a021c05.js +1 -0
  165. package/.next/static/chunks/app/api/sessions/route-4d80c4980a021c05.js +1 -0
  166. package/.next/static/chunks/app/api/settings/route-4d80c4980a021c05.js +1 -0
  167. package/.next/static/chunks/app/api/skills/install/route-4d80c4980a021c05.js +1 -0
  168. package/.next/static/chunks/app/api/skills/route-4d80c4980a021c05.js +1 -0
  169. package/.next/static/chunks/app/api/skills/search/route-4d80c4980a021c05.js +1 -0
  170. package/.next/static/chunks/app/api/soul/route-4d80c4980a021c05.js +1 -0
  171. package/.next/static/chunks/app/api/subagents/status/route-4d80c4980a021c05.js +1 -0
  172. package/.next/static/chunks/app/api/version/route-4d80c4980a021c05.js +1 -0
  173. package/.next/static/chunks/app/favicon.ico/route-4d80c4980a021c05.js +1 -0
  174. package/.next/static/chunks/app/page-a113a7a2f2a36013.js +31 -0
  175. package/.next/static/chunks/next/dist/client/components/builtin/app-error-4d80c4980a021c05.js +1 -0
  176. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-4d80c4980a021c05.js +1 -0
  177. package/.next/static/chunks/next/dist/client/components/builtin/not-found-4d80c4980a021c05.js +1 -0
  178. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-4d80c4980a021c05.js +1 -0
  179. package/.next/static/fHPCy5VWfMn3HKqoTaWk-/_buildManifest.js +1 -0
  180. package/package.json +1 -1
  181. package/.next/static/LyxcjzAMerGYHaUetbU2z/_buildManifest.js +0 -1
  182. package/.next/static/chunks/app/_global-error/page-8bc0531916c80cbc.js +0 -1
  183. package/.next/static/chunks/app/api/agent/[id]/events/route-8bc0531916c80cbc.js +0 -1
  184. package/.next/static/chunks/app/api/agent/[id]/route-8bc0531916c80cbc.js +0 -1
  185. package/.next/static/chunks/app/api/agent/new/route-8bc0531916c80cbc.js +0 -1
  186. package/.next/static/chunks/app/api/agent/runtime/route-8bc0531916c80cbc.js +0 -1
  187. package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-8bc0531916c80cbc.js +0 -1
  188. package/.next/static/chunks/app/api/apps/route-8bc0531916c80cbc.js +0 -1
  189. package/.next/static/chunks/app/api/auth/all-providers/route-8bc0531916c80cbc.js +0 -1
  190. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-8bc0531916c80cbc.js +0 -1
  191. package/.next/static/chunks/app/api/auth/login/[provider]/route-8bc0531916c80cbc.js +0 -1
  192. package/.next/static/chunks/app/api/auth/login/route-8bc0531916c80cbc.js +0 -1
  193. package/.next/static/chunks/app/api/auth/logout/[provider]/route-8bc0531916c80cbc.js +0 -1
  194. package/.next/static/chunks/app/api/auth/providers/route-8bc0531916c80cbc.js +0 -1
  195. package/.next/static/chunks/app/api/auth/status/route-8bc0531916c80cbc.js +0 -1
  196. package/.next/static/chunks/app/api/default-cwd/route-8bc0531916c80cbc.js +0 -1
  197. package/.next/static/chunks/app/api/files/[...path]/route-8bc0531916c80cbc.js +0 -1
  198. package/.next/static/chunks/app/api/harness/route-8bc0531916c80cbc.js +0 -1
  199. package/.next/static/chunks/app/api/home/route-8bc0531916c80cbc.js +0 -1
  200. package/.next/static/chunks/app/api/im/cancel/route-8bc0531916c80cbc.js +0 -1
  201. package/.next/static/chunks/app/api/im/gateway-status/route-8bc0531916c80cbc.js +0 -1
  202. package/.next/static/chunks/app/api/im/gateway-token/route-8bc0531916c80cbc.js +0 -1
  203. package/.next/static/chunks/app/api/im/project/route-8bc0531916c80cbc.js +0 -1
  204. package/.next/static/chunks/app/api/im/projects/route-8bc0531916c80cbc.js +0 -1
  205. package/.next/static/chunks/app/api/im/session-ids/route-8bc0531916c80cbc.js +0 -1
  206. package/.next/static/chunks/app/api/im/turn/route-8bc0531916c80cbc.js +0 -1
  207. package/.next/static/chunks/app/api/images/upload/route-8bc0531916c80cbc.js +0 -1
  208. package/.next/static/chunks/app/api/internal/runtime/route-8bc0531916c80cbc.js +0 -1
  209. package/.next/static/chunks/app/api/memory/promote/route-8bc0531916c80cbc.js +0 -1
  210. package/.next/static/chunks/app/api/models/route-8bc0531916c80cbc.js +0 -1
  211. package/.next/static/chunks/app/api/models-config/discover/route-8bc0531916c80cbc.js +0 -1
  212. package/.next/static/chunks/app/api/models-config/route-8bc0531916c80cbc.js +0 -1
  213. package/.next/static/chunks/app/api/models-config/test/route-8bc0531916c80cbc.js +0 -1
  214. package/.next/static/chunks/app/api/plot-kernels/route-8bc0531916c80cbc.js +0 -1
  215. package/.next/static/chunks/app/api/plot-kernels/save/route-8bc0531916c80cbc.js +0 -1
  216. package/.next/static/chunks/app/api/plot-kernels/status/route-8bc0531916c80cbc.js +0 -1
  217. package/.next/static/chunks/app/api/plot-kernels/stop/route-8bc0531916c80cbc.js +0 -1
  218. package/.next/static/chunks/app/api/projects/browse/route-8bc0531916c80cbc.js +0 -1
  219. package/.next/static/chunks/app/api/projects/route-8bc0531916c80cbc.js +0 -1
  220. package/.next/static/chunks/app/api/search/route-8bc0531916c80cbc.js +0 -1
  221. package/.next/static/chunks/app/api/sessions/[id]/context/route-8bc0531916c80cbc.js +0 -1
  222. package/.next/static/chunks/app/api/sessions/[id]/plan/route-8bc0531916c80cbc.js +0 -1
  223. package/.next/static/chunks/app/api/sessions/[id]/route-8bc0531916c80cbc.js +0 -1
  224. package/.next/static/chunks/app/api/sessions/new/route-8bc0531916c80cbc.js +0 -1
  225. package/.next/static/chunks/app/api/sessions/route-8bc0531916c80cbc.js +0 -1
  226. package/.next/static/chunks/app/api/settings/route-8bc0531916c80cbc.js +0 -1
  227. package/.next/static/chunks/app/api/skills/install/route-8bc0531916c80cbc.js +0 -1
  228. package/.next/static/chunks/app/api/skills/route-8bc0531916c80cbc.js +0 -1
  229. package/.next/static/chunks/app/api/skills/search/route-8bc0531916c80cbc.js +0 -1
  230. package/.next/static/chunks/app/api/soul/route-8bc0531916c80cbc.js +0 -1
  231. package/.next/static/chunks/app/api/subagents/status/route-8bc0531916c80cbc.js +0 -1
  232. package/.next/static/chunks/app/api/version/route-8bc0531916c80cbc.js +0 -1
  233. package/.next/static/chunks/app/favicon.ico/route-8bc0531916c80cbc.js +0 -1
  234. package/.next/static/chunks/app/page-6b9a72b6372e86c7.js +0 -31
  235. package/.next/static/chunks/next/dist/client/components/builtin/app-error-8bc0531916c80cbc.js +0 -1
  236. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-8bc0531916c80cbc.js +0 -1
  237. package/.next/static/chunks/next/dist/client/components/builtin/not-found-8bc0531916c80cbc.js +0 -1
  238. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8bc0531916c80cbc.js +0 -1
  239. /package/.next/static/{LyxcjzAMerGYHaUetbU2z → fHPCy5VWfMn3HKqoTaWk-}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ exports.id=7601,exports.ids=[7601],exports.modules={3867:(a,b,c)=>{"use strict";
4
4
  ${d}`:d}},11745:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$:()=>j});var e=c(28802),f=c(75430),g=a([e,f]);function h(a){return a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:String(a)}function i(a){if(a<60)return`${a}s`;let b=Math.floor(a/60);if(b<60)return`${b}m ${String(a%60).padStart(2,"0")}s`;let c=Math.floor(b/60);return`${c}h ${b%60}m`}function j(a){let b=null,c=null,d=!1;function g(){return Date.now()}function j(){return{input:0,output:0,cacheRead:0,cacheWrite:0}}function k(){var a;if(!d||!b||!c)return;let e=j(),f=(a=c,Math.max(0,e.input-a.input)+Math.max(0,e.cacheWrite-a.cacheWrite)+Math.max(0,e.output-a.output));f>0&&(b.tokensUsed+=f,b.updatedAt=g(),void 0!==b.tokenBudget&&b.tokensUsed>=b.tokenBudget&&"active"===b.status&&(b.status="budget-limited")),c={...e}}function l(){a.appendEntry("goal-mode",b?{...b}:null)}a.registerTool((0,f.defineTool)({name:"goal",label:"Goal",description:'Use the goal tool to manage your current task objective.\n- goal(op="create", objective="...", token_budget=N?) — set a goal with optional token budget\n- goal(op="get") — check current goal status\n- goal(op="complete") — mark goal as complete\n- goal(op="drop") — abandon the current goal\nWhen you have a clear objective, set a goal to track progress and budget.',parameters:e.Type.Object({op:e.Type.Union([e.Type.Literal("create"),e.Type.Literal("get"),e.Type.Literal("complete"),e.Type.Literal("drop"),e.Type.Literal("resume")],{description:"goal operation"}),objective:e.Type.Optional(e.Type.String({description:"goal objective (required for create)"})),token_budget:e.Type.Optional(e.Type.Number({description:"token budget limit (optional)"}))}),execute:async(a,e,f,m)=>{let n=e.op,o=e.objective?.trim(),p=e.token_budget;switch(n){case"create":{if(!o)return{content:[{type:"text",text:"Error: objective is required for goal create."}],details:null};if(b&&"dropped"!==b.status&&"complete"!==b.status)return{content:[{type:"text",text:"Error: a goal is already active. Complete or drop it first."}],details:null};let a=g();b={id:`goal-${a}`,objective:o,status:"active",tokenBudget:p&&p>0?p:void 0,tokensUsed:0,timeUsedSeconds:0,createdAt:a,updatedAt:a},d=!0,c=j(),l();let e=b.tokenBudget?` | budget: ${h(b.tokenBudget)} tokens`:"";return{content:[{type:"text",text:`Goal set: "${o}"${e}`}],details:{...b}}}case"get":{if(!b)return{content:[{type:"text",text:"No active goal."}],details:null};k();let a=Math.floor((g()-b.createdAt)/1e3);b.timeUsedSeconds=Math.max(b.timeUsedSeconds,a);let c=b.tokenBudget?` | ${h(b.tokensUsed)} / ${h(b.tokenBudget)} tokens`:` | ${h(b.tokensUsed)} tokens`;return{content:[{type:"text",text:`Goal: "${b.objective}"
5
5
  Status: ${b.status}${c}
6
6
  Time: ${i(b.timeUsedSeconds)}`}],details:{...b}}}case"complete":{var q;let a;if(!b)return{content:[{type:"text",text:"No active goal to complete."}],details:null};k(),b.status="complete",b.updatedAt=g(),d=!1;let c=(q=b,a=[],void 0!==q.tokenBudget&&a.push(`tokens used: ${q.tokensUsed} of ${q.tokenBudget}`),q.timeUsedSeconds>0&&a.push(`time used: ${i(q.timeUsedSeconds)}`),a.length>0?`Goal achieved. Final budget: ${a.join("; ")}.`:null);return l(),{content:[{type:"text",text:`Goal completed: "${b.objective}"${c?`
7
- ${c}`:""}`}],details:{...b}}}case"drop":if(!b)return{content:[{type:"text",text:"No active goal to drop."}],details:null};return b.status="dropped",b.updatedAt=g(),d=!1,l(),{content:[{type:"text",text:`Goal dropped: "${b.objective}"`}],details:{...b}};case"resume":if(!b)return{content:[{type:"text",text:"No goal to resume."}],details:null};if("complete"===b.status)return{content:[{type:"text",text:"Cannot resume a completed goal."}],details:null};return b.status="active",b.updatedAt=g(),d=!0,c=j(),l(),{content:[{type:"text",text:`Goal resumed: "${b.objective}"`}],details:{...b}};default:return{content:[{type:"text",text:`Unknown goal operation: ${n}`}],details:null}}}})),a.on("before_agent_start",async()=>{if(b&&"active"===b.status){var a;return k(),{message:{customType:"goal-context",content:(a=b,["<goal_context>",`You are working toward a goal: "${a.objective}"`,void 0!==a.tokenBudget?`Token budget: ${h(a.tokenBudget)} (${h(a.tokensUsed)} used, ${h(a.tokenBudget-a.tokensUsed)} remaining).`:`Tokens used so far: ${h(a.tokensUsed)}.`,`Time spent: ${i(a.timeUsedSeconds)}.`,void 0!==a.tokenBudget&&a.tokensUsed>=a.tokenBudget?'BUDGET EXCEEDED. Complete the goal now with goal(op="complete").':'Stay focused. Call goal(op="get") to check progress, goal(op="complete") when finished.',"</goal_context>"].join("\n")),display:!1}}}}),a.on("tool_result",async()=>{k()}),a.on("turn_start",async()=>{d&&(c=j()),l()}),a.on("agent_end",async()=>{k(),l()}),a.on("session_start",async(a,e)=>{let f=e.sessionManager.getEntries().filter(a=>"custom"===a.type&&"goal-mode"===a.customType).pop();f?.data&&(b=f.data,(d="active"===b.status)&&(c=j()))})}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},27348:(a,b,c)=>{"use strict";c.d(b,{WO:()=>B});let d=["interactive","chart","mockup","art","diagram"],e=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g,f="## Core design system\n\n### When to use widgets\n- Use `show-widget` by default when visual output is the primary answer.\n- This includes charts, diagrams, flowcharts, timelines, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, hierarchy views, comparisons, and visual explanations.\n- Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid because widgets stream more reliably in this UI.\n- Put explanatory prose outside the code fence. The fence contains exactly one JSON object.\n\n### Format rules\n- `widget_code` is a JSON string: escape quotes and newlines, close the JSON object, then close the fence.\n- Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n- Keep outer backgrounds transparent. Use host variables: `--bg`, `--bg-panel`, `--bg-hover`, `--bg-selected`, `--border`, `--text`, `--text-muted`, `--text-dim`, `--accent`, `--accent-hover`.\n- CodePilot-compatible variables are also available: `--color-background-primary`, `--color-background-secondary`, `--color-background-tertiary`, `--color-text-primary`, `--color-text-secondary`, `--color-text-tertiary`, `--color-border-tertiary`, `--color-border-secondary`, `--color-border-primary`, `--font-sans`, `--font-mono`.\n- HTML widgets should stream in this order: `<style>`, visible markup, `<script>`. SVG widgets should put `<defs>` before visible shapes.\n- Use `min-height` instead of fixed outer `height`; avoid bottom clipping at chat widths.\n- Use readable text: no font smaller than 11px, no negative letter spacing, no text overlap.\n\n### Visual style\n- The widget should feel native to chat, not like a foreign embed.\n- Use flat, solid fills with clear borders. Avoid decorative gradients, shadows, blur, glow, neon, and busy backgrounds.\n- Use 2-3 color ramps per widget and gray/slate for structure.\n- Prefer the visualization type that best fits the content. Do not default to one type for every request.\n- Title should be human-readable in the user's language.",g=`## Color and layout
7
+ ${c}`:""}`}],details:{...b}}}case"drop":if(!b)return{content:[{type:"text",text:"No active goal to drop."}],details:null};return b.status="dropped",b.updatedAt=g(),d=!1,l(),{content:[{type:"text",text:`Goal dropped: "${b.objective}"`}],details:{...b}};case"resume":if(!b)return{content:[{type:"text",text:"No goal to resume."}],details:null};if("complete"===b.status)return{content:[{type:"text",text:"Cannot resume a completed goal."}],details:null};return b.status="active",b.updatedAt=g(),d=!0,c=j(),l(),{content:[{type:"text",text:`Goal resumed: "${b.objective}"`}],details:{...b}};default:return{content:[{type:"text",text:`Unknown goal operation: ${n}`}],details:null}}}})),a.on("before_agent_start",async()=>{if(b&&"active"===b.status){var a;return k(),{message:{customType:"goal-context",content:(a=b,["<goal_context>",`You are working toward a goal: "${a.objective}"`,void 0!==a.tokenBudget?`Token budget: ${h(a.tokenBudget)} (${h(a.tokensUsed)} used, ${h(a.tokenBudget-a.tokensUsed)} remaining).`:`Tokens used so far: ${h(a.tokensUsed)}.`,`Time spent: ${i(a.timeUsedSeconds)}.`,void 0!==a.tokenBudget&&a.tokensUsed>=a.tokenBudget?'BUDGET EXCEEDED. Complete the goal now with goal(op="complete").':'Stay focused. Call goal(op="get") to check progress, goal(op="complete") when finished.',"</goal_context>"].join("\n")),display:!1}}}}),a.on("tool_result",async()=>{k()}),a.on("turn_start",async()=>{d&&(c=j()),l()}),a.on("agent_end",async()=>{k(),l()}),a.on("session_start",async(a,e)=>{let f=e.sessionManager.getEntries().filter(a=>"custom"===a.type&&"goal-mode"===a.customType).pop();f?.data&&(b=f.data,(d="active"===b.status)&&(c=j()))})}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},23537:(a,b,c)=>{"use strict";function d(){return globalThis.__annovibePlanModeStates||(globalThis.__annovibePlanModeStates=new Map),globalThis.__annovibePlanModeStates}function e(a,b){d().set(a,{enabled:b,updatedAt:Date.now()})}function f(a){return d().get(a)}function g(a){d().delete(a)}c.d(b,{Mc:()=>g,hv:()=>e,xt:()=>f})},27348:(a,b,c)=>{"use strict";c.d(b,{WO:()=>B});let d=["interactive","chart","mockup","art","diagram"],e=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g,f="## Core design system\n\n### When to use widgets\n- Use `show-widget` by default when visual output is the primary answer.\n- This includes charts, diagrams, flowcharts, timelines, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, hierarchy views, comparisons, and visual explanations.\n- Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid because widgets stream more reliably in this UI.\n- Put explanatory prose outside the code fence. The fence contains exactly one JSON object.\n\n### Format rules\n- `widget_code` is a JSON string: escape quotes and newlines, close the JSON object, then close the fence.\n- Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n- Keep outer backgrounds transparent. Use host variables: `--bg`, `--bg-panel`, `--bg-hover`, `--bg-selected`, `--border`, `--text`, `--text-muted`, `--text-dim`, `--accent`, `--accent-hover`.\n- CodePilot-compatible variables are also available: `--color-background-primary`, `--color-background-secondary`, `--color-background-tertiary`, `--color-text-primary`, `--color-text-secondary`, `--color-text-tertiary`, `--color-border-tertiary`, `--color-border-secondary`, `--color-border-primary`, `--font-sans`, `--font-mono`.\n- HTML widgets should stream in this order: `<style>`, visible markup, `<script>`. SVG widgets should put `<defs>` before visible shapes.\n- Use `min-height` instead of fixed outer `height`; avoid bottom clipping at chat widths.\n- Use readable text: no font smaller than 11px, no negative letter spacing, no text overlap.\n\n### Visual style\n- The widget should feel native to chat, not like a foreign embed.\n- Use flat, solid fills with clear borders. Avoid decorative gradients, shadows, blur, glow, neon, and busy backgrounds.\n- Use 2-3 color ramps per widget and gray/slate for structure.\n- Prefer the visualization type that best fits the content. Do not default to one type for every request.\n- Title should be human-readable in the user's language.",g=`## Color and layout
8
8
 
9
9
  - Palette ramps:
10
10
  - Indigo: \`#EEF2FF/#C7D2FE/#818CF8/#4F46E5/#3730A3\`
@@ -100,14 +100,14 @@ if (window.Chart) init();
100
100
  ${h.content}
101
101
  </widget-guidelines>`;return g?`${g}
102
102
 
103
- ${j}`:j}},39737:(a,b,c)=>{"use strict";c.d(b,{L:()=>n});var d=c(29021),e=c(33873);let f=["read","bash","grep","find","ls"],g=["read","bash","edit","write","grep","find","ls"],h=[/\brm\b/i,/\brmdir\b/i,/\bmv\b/i,/\bcp\b/i,/\bmkdir\b/i,/\btouch\b/i,/\bchmod\b/i,/\bchown\b/i,/\bchgrp\b/i,/\bln\b/i,/\btee\b/i,/\btruncate\b/i,/\bdd\b/i,/\bshred\b/i,/[^<]>(?!>)/,/>>/,/\bnpm\s+(install|uninstall|update|ci|link|publish)/i,/\byarn\s+(add|remove|install|publish)/i,/\bpnpm\s+(add|remove|install|publish)/i,/\bpip\s+(install|uninstall)/i,/\bapt(?:-get)?\s+(install|remove|purge|update|upgrade)/i,/\bbrew\s+(install|uninstall|upgrade)/i,/\bgit\s+(add|commit|push|pull|merge|rebase|reset|checkout\s+-b|branch\s+-[dD]|stash|cherry-pick|revert|tag|init|clone)/i,/\bsudo\b/i,/\bsu\b/i,/\bkill\b/i,/\bpkill\b/i,/\bkillall\b/i,/\breboot\b/i,/\bshutdown\b/i,/\bsystemctl\s+(start|stop|restart|enable|disable)/i,/\bservice\s+\S+\s+(start|stop|restart)/i,/\b(vim?|nano|emacs|code|subl)\b/i],i=[/^\s*cat\b/,/^\s*head\b/,/^\s*tail\b/,/^\s*less\b/,/^\s*more\b/,/^\s*grep\b/,/^\s*find\b/,/^\s*ls\b/,/^\s*pwd\b/,/^\s*echo\b/,/^\s*printf\b/,/^\s*wc\b/,/^\s*sort\b/,/^\s*uniq\b/,/^\s*diff\b/,/^\s*file\b/,/^\s*stat\b/,/^\s*du\b/,/^\s*df\b/,/^\s*tree\b/,/^\s*which\b/,/^\s*whereis\b/,/^\s*type\b/,/^\s*env\b/,/^\s*printenv\b/,/^\s*uname\b/,/^\s*whoami\b/,/^\s*id\b/,/^\s*date\b/,/^\s*cal\b/,/^\s*uptime\b/,/^\s*ps\b/,/^\s*top\b/,/^\s*htop\b/,/^\s*free\b/,/^\s*git\s+(status|log|diff|show|branch|remote|config\s+--get)/i,/^\s*git\s+ls-/i,/^\s*npm\s+(list|ls|view|info|search|outdated|audit)/i,/^\s*yarn\s+(list|info|why|audit)/i,/^\s*node\s+--version/i,/^\s*python\s+--version/i,/^\s*curl\s/i,/^\s*wget\s+-O\s*-/i,/^\s*jq\b/,/^\s*sed\s+-n/i,/^\s*awk\b/,/^\s*rg\b/,/^\s*fd\b/,/^\s*bat\b/,/^\s*exa\b/,/^\s*R\s+-e/i,/^\s*Rscript\s+-e/i],j=".annovibe-plan.md";function k(a){return(0,e.join)(a,j)}function l(a,b,c){let e=c.length>0?["","## Steps","",...c.map(a=>`${a.completed?"- [x]":"- [ ]"} ${a.text}`)].join("\n"):"";(0,d.writeFileSync)(k(a),`# Annovibe Plan
103
+ ${j}`:j}},39737:(a,b,c)=>{"use strict";c.d(b,{L:()=>o});var d=c(29021),e=c(33873),f=c(23537);let g=["read","bash","grep","find","ls"],h=["read","bash","edit","write","grep","find","ls"],i=[/\brm\b/i,/\brmdir\b/i,/\bmv\b/i,/\bcp\b/i,/\bmkdir\b/i,/\btouch\b/i,/\bchmod\b/i,/\bchown\b/i,/\bchgrp\b/i,/\bln\b/i,/\btee\b/i,/\btruncate\b/i,/\bdd\b/i,/\bshred\b/i,/[^<]>(?!>)/,/>>/,/\bnpm\s+(install|uninstall|update|ci|link|publish)/i,/\byarn\s+(add|remove|install|publish)/i,/\bpnpm\s+(add|remove|install|publish)/i,/\bpip\s+(install|uninstall)/i,/\bapt(?:-get)?\s+(install|remove|purge|update|upgrade)/i,/\bbrew\s+(install|uninstall|upgrade)/i,/\bgit\s+(add|commit|push|pull|merge|rebase|reset|checkout\s+-b|branch\s+-[dD]|stash|cherry-pick|revert|tag|init|clone)/i,/\bsudo\b/i,/\bsu\b/i,/\bkill\b/i,/\bpkill\b/i,/\bkillall\b/i,/\breboot\b/i,/\bshutdown\b/i,/\bsystemctl\s+(start|stop|restart|enable|disable)/i,/\bservice\s+\S+\s+(start|stop|restart)/i,/\b(vim?|nano|emacs|code|subl)\b/i],j=[/^\s*cat\b/,/^\s*head\b/,/^\s*tail\b/,/^\s*less\b/,/^\s*more\b/,/^\s*grep\b/,/^\s*find\b/,/^\s*ls\b/,/^\s*pwd\b/,/^\s*echo\b/,/^\s*printf\b/,/^\s*wc\b/,/^\s*sort\b/,/^\s*uniq\b/,/^\s*diff\b/,/^\s*file\b/,/^\s*stat\b/,/^\s*du\b/,/^\s*df\b/,/^\s*tree\b/,/^\s*which\b/,/^\s*whereis\b/,/^\s*type\b/,/^\s*env\b/,/^\s*printenv\b/,/^\s*uname\b/,/^\s*whoami\b/,/^\s*id\b/,/^\s*date\b/,/^\s*cal\b/,/^\s*uptime\b/,/^\s*ps\b/,/^\s*top\b/,/^\s*htop\b/,/^\s*free\b/,/^\s*git\s+(status|log|diff|show|branch|remote|config\s+--get)/i,/^\s*git\s+ls-/i,/^\s*npm\s+(list|ls|view|info|search|outdated|audit)/i,/^\s*yarn\s+(list|info|why|audit)/i,/^\s*node\s+--version/i,/^\s*python\s+--version/i,/^\s*curl\s/i,/^\s*wget\s+-O\s*-/i,/^\s*jq\b/,/^\s*sed\s+-n/i,/^\s*awk\b/,/^\s*rg\b/,/^\s*fd\b/,/^\s*bat\b/,/^\s*exa\b/,/^\s*R\s+-e/i,/^\s*Rscript\s+-e/i],k=".annovibe-plan.md";function l(a){return(0,e.join)(a,k)}function m(a,b,c){let e=c.length>0?["","## Steps","",...c.map(a=>`${a.completed?"- [x]":"- [ ]"} ${a.text}`)].join("\n"):"";(0,d.writeFileSync)(l(a),`# Annovibe Plan
104
104
 
105
105
  This plan was generated by the Annovibe AI agent.
106
106
  It is read-only until the plan is approved for execution.
107
107
 
108
108
  ${b}${e}
109
- `)}function m(a){try{(0,d.unlinkSync)(k(a))}catch{}}function n(a){let b=!1,c=!1,e=!1,n=[];function o(){let c=a.getActiveTools(),d=c.length>0&&c.every(a=>f.includes(a))&&!c.includes("edit")&&!c.includes("write");d!==b&&(b=d,d||(e=!1,n=[]))}async function p(c){e=!1,n=[],(b=!b)?(await a.setActiveTools(f),c.ui.notify(`Plan mode enabled. Tools: ${f.join(", ")}`)):(await a.setActiveTools(g),c.ui.notify("Plan mode disabled. Full access restored."))}a.registerCommand("plan",{description:"Toggle plan mode (read-only exploration)",handler:async(a,b)=>{await p(b)}}),a.registerFlag("plan",{description:"Start in plan mode (read-only exploration)",type:"boolean",default:!1}),a.on("tool_call",async a=>{if(o(),!b||"bash"!==a.toolName)return;let c=a.input.command;if((!i.some(a=>a.test(c))||h.some(a=>a.test(c)))&&h.some(a=>a.test(c)))return{block:!0,reason:`Plan mode: destructive command blocked. Use /plan to disable plan mode first.
110
- Command: ${c}`}}),a.on("tool_result",async(a,b)=>{if(c=!0,!e||0===n.length)return;let d=n.find(a=>!a.completed);d&&(d.completed=!0)}),a.on("context",async a=>{if(!b)return{messages:a.messages.filter(a=>!("user"===a.role&&Array.isArray(a.content)&&a.content.some(a=>"text"===a.type&&a.text?.includes("[PLAN MODE ACTIVE]")))&&!0)}}),a.on("before_agent_start",async()=>{if(o(),b||e){if(b)return{message:{customType:"plan-mode-context",content:`[PLAN MODE ACTIVE]
109
+ `)}function n(a){try{(0,d.unlinkSync)(l(a))}catch{}}function o(a){let b=!1,c=!1,e=!1,o=[];function p(a){a!==b&&(b=a,a||(e=!1,o=[]))}function q(b){let c=b?(0,f.xt)(b):void 0;if(c)return void p(c.enabled);let d=a.getActiveTools();p(d.length>0&&d.every(a=>g.includes(a))&&!d.includes("edit")&&!d.includes("write"))}async function r(c){let d=c.sessionManager.getSessionId();b=!b,(0,f.hv)(d,b),e=!1,o=[],b?(await a.setActiveTools(g),c.ui.notify(`Plan mode enabled. Tools: ${g.join(", ")}`)):(await a.setActiveTools(h),c.ui.notify("Plan mode disabled. Full access restored."))}a.registerCommand("plan",{description:"Toggle plan mode (read-only exploration)",handler:async(a,b)=>{await r(b)}}),a.registerFlag("plan",{description:"Start in plan mode (read-only exploration)",type:"boolean",default:!1}),a.on("tool_call",async(a,c)=>{if(q(c.sessionManager.getSessionId()),!b||"bash"!==a.toolName)return;let d=a.input.command;if((!j.some(a=>a.test(d))||i.some(a=>a.test(d)))&&i.some(a=>a.test(d)))return{block:!0,reason:`Plan mode: destructive command blocked. Use /plan to disable plan mode first.
110
+ Command: ${d}`}}),a.on("tool_result",async(a,b)=>{if(c=!0,!e||0===o.length)return;let d=o.find(a=>!a.completed);d&&(d.completed=!0)}),a.on("context",async(a,c)=>{if(q(c.sessionManager.getSessionId()),!b)return{messages:a.messages.filter(a=>!("user"===a.role&&Array.isArray(a.content)&&a.content.some(a=>"text"===a.type&&a.text?.includes("[PLAN MODE ACTIVE]")))&&!0)}}),a.on("before_agent_start",async(a,c)=>{if(q(c.sessionManager.getSessionId()),b||e){if(b)return{message:{customType:"plan-mode-context",content:`[PLAN MODE ACTIVE]
111
111
  You are in plan mode — a read-only exploration mode for safe code analysis.
112
112
 
113
113
  Restrictions:
@@ -121,26 +121,26 @@ Create a detailed numbered plan:
121
121
  2. Second step description
122
122
  ...
123
123
 
124
- Do NOT make changes — just describe what you would do.`,display:!1}};if(e&&n.length>0){let a=n.filter(a=>!a.completed);return{message:{customType:"plan-execution-context",content:`[EXECUTING PLAN — Full tool access enabled]
124
+ Do NOT make changes — just describe what you would do.`,display:!1}};if(e&&o.length>0){let a=o.filter(a=>!a.completed);return{message:{customType:"plan-execution-context",content:`[EXECUTING PLAN — Full tool access enabled]
125
125
 
126
126
  Remaining steps:
127
127
  ${a.map(a=>`${a.step}. ${a.text}`).join("\n")}
128
128
 
129
- Execute each step in order.`,display:!1}}}}}),a.on("agent_end",async(c,d)=>{if(o(),e&&n.length>0){n.every(a=>a.completed)&&(a.sendMessage({customType:"plan-complete",content:`**Plan Complete!** ✓
129
+ Execute each step in order.`,display:!1}}}}}),a.on("agent_end",async(c,d)=>{if(q(d.sessionManager.getSessionId()),e&&o.length>0){o.every(a=>a.completed)&&(a.sendMessage({customType:"plan-complete",content:`**Plan Complete!** ✓
130
130
 
131
- ${n.map(a=>`${a.completed?"~~":""}${a.step}. ${a.text}${a.completed?"~~":""}`).join("\n")}`,display:!0},{triggerTurn:!1}),e=!1,n=[],m(d.cwd),await a.setActiveTools(g));return}if(!b)return;let f=c.messages;if(f){let a=[...f].reverse().find(a=>"assistant"===a.role);if(a?.content&&Array.isArray(a.content)){let b=a.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n");if(b){let a=function(a){let b=[];for(let c of a.matchAll(/^\s*(\d+)[.)]\s+\*{0,2}([^*\n]+)/gm)){let a=c[2].trim().replace(/\*{1,2}$/,"").trim();if(a.length>5&&!a.startsWith("`")&&!a.startsWith("/")&&!a.startsWith("-")){let c=function(a){let b=a.replace(/\*{1,2}([^*]+)\*{1,2}/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/^(Use|Run|Execute|Create|Write|Read|Check|Verify|Update|Modify|Add|Remove|Delete|Install)\s+(the\s+)?/i,"").replace(/\s+/g," ").trim();return b.length>0&&(b=b.charAt(0).toUpperCase()+b.slice(1)),b.length>50&&(b=`${b.slice(0,49)}…`),b}(a);c.length>3&&b.push({step:b.length+1,text:c,completed:!1})}}return b}(b);a.length>0&&(n=a)}}}let h=n.length>0;if(h&&a.sendMessage({customType:"plan-todo-list",content:`**Plan Steps (${n.length}):**
131
+ ${o.map(a=>`${a.completed?"~~":""}${a.step}. ${a.text}${a.completed?"~~":""}`).join("\n")}`,display:!0},{triggerTurn:!1}),e=!1,o=[],n(d.cwd),await a.setActiveTools(h));return}if(!b)return;let g=c.messages;if(g){let a=[...g].reverse().find(a=>"assistant"===a.role);if(a?.content&&Array.isArray(a.content)){let b=a.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n");if(b){let a=function(a){let b=[];for(let c of a.matchAll(/^\s*(\d+)[.)]\s+\*{0,2}([^*\n]+)/gm)){let a=c[2].trim().replace(/\*{1,2}$/,"").trim();if(a.length>5&&!a.startsWith("`")&&!a.startsWith("/")&&!a.startsWith("-")){let c=function(a){let b=a.replace(/\*{1,2}([^*]+)\*{1,2}/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/^(Use|Run|Execute|Create|Write|Read|Check|Verify|Update|Modify|Add|Remove|Delete|Install)\s+(the\s+)?/i,"").replace(/\s+/g," ").trim();return b.length>0&&(b=b.charAt(0).toUpperCase()+b.slice(1)),b.length>50&&(b=`${b.slice(0,49)}…`),b}(a);c.length>3&&b.push({step:b.length+1,text:c,completed:!1})}}return b}(b);a.length>0&&(o=a)}}}let i=o.length>0;if(i&&a.sendMessage({customType:"plan-todo-list",content:`**Plan Steps (${o.length}):**
132
132
 
133
- ${n.map(a=>`☐ ${a.text}`).join("\n")}`,display:!0},{triggerTurn:!1}),!d.hasUI)return;let i=await d.ui.select("Plan mode — what next?",[h?"Execute the plan":"Start executing","Stay in plan mode","Refine the plan"]);if(i?.startsWith("Execute")||i?.startsWith("Start")){if(h){let a=c.messages,b=a?[...a].reverse().find(a=>"assistant"===a.role):void 0,e=b?.content&&Array.isArray(b.content)?b.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):"";l(d.cwd,e,n)}b=!1,e=h,await a.setActiveTools(g);let f=h?`Execute the plan. Start with: ${n[0].text}`:"Execute the plan you just created.";a.sendMessage({customType:"plan-mode-execute",content:f,display:!0},{triggerTurn:!0})}else if("Refine the plan"===i){let a=await d.ui.input("What should be refined?");a&&d.ui.setEditorText&&d.ui.setEditorText(a)}else if(h){let a=c.messages,b=a?[...a].reverse().find(a=>"assistant"===a.role):void 0,e=b?.content&&Array.isArray(b.content)?b.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):"";l(d.cwd,e,n)}}),a.on("session_start",async(c,h)=>{var i;a.getFlag?.("plan")===!0&&(b=!0);let l=h.sessionManager.getEntries().filter(a=>"custom"===a.type&&"plan-mode"===a.customType).pop();if(l?.data&&(void 0!==l.data.enabled&&(b=l.data.enabled),l.data.todos&&(n=l.data.todos),l.data.executing&&(e=l.data.executing)),b&&await a.setActiveTools(f),!b&&!e&&(i=h.cwd,(0,d.existsSync)(k(i)))){let b=function(a){try{return(0,d.readFileSync)(k(a),"utf-8")}catch{return null}}(h.cwd);if(b&&h.hasUI){let c=await h.ui.select(`A saved plan exists (${j}). Resume?`,["Resume plan execution","Delete plan file","Ignore"]);"Resume plan execution"===c?(e=!0,await a.setActiveTools(g),a.sendMessage({customType:"plan-resume-context",content:`[RESUMING PLAN EXECUTION]
133
+ ${o.map(a=>`☐ ${a.text}`).join("\n")}`,display:!0},{triggerTurn:!1}),!d.hasUI)return;let j=await d.ui.select("Plan mode — what next?",[i?"Execute the plan":"Start executing","Stay in plan mode","Refine the plan"]);if(j?.startsWith("Execute")||j?.startsWith("Start")){if(i){let a=c.messages,b=a?[...a].reverse().find(a=>"assistant"===a.role):void 0,e=b?.content&&Array.isArray(b.content)?b.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):"";m(d.cwd,e,o)}b=!1,(0,f.hv)(d.sessionManager.getSessionId(),!1),e=i,await a.setActiveTools(h);let g=i?`Execute the plan. Start with: ${o[0].text}`:"Execute the plan you just created.";a.sendMessage({customType:"plan-mode-execute",content:g,display:!0},{triggerTurn:!0})}else if("Refine the plan"===j){let a=await d.ui.input("What should be refined?");a&&d.ui.setEditorText&&d.ui.setEditorText(a)}else if(i){let a=c.messages,b=a?[...a].reverse().find(a=>"assistant"===a.role):void 0,e=b?.content&&Array.isArray(b.content)?b.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):"";m(d.cwd,e,o)}}),a.on("session_start",async(c,i)=>{var j;a.getFlag?.("plan")===!0&&(b=!0);let m=i.sessionManager.getEntries().filter(a=>"custom"===a.type&&"plan-mode"===a.customType).pop();if(m?.data&&(void 0!==m.data.enabled&&(b=m.data.enabled),m.data.todos&&(o=m.data.todos),m.data.executing&&(e=m.data.executing)),(0,f.hv)(i.sessionManager.getSessionId(),b),b&&await a.setActiveTools(g),!b&&!e&&(j=i.cwd,(0,d.existsSync)(l(j)))){let b=function(a){try{return(0,d.readFileSync)(l(a),"utf-8")}catch{return null}}(i.cwd);if(b&&i.hasUI){let c=await i.ui.select(`A saved plan exists (${k}). Resume?`,["Resume plan execution","Delete plan file","Ignore"]);"Resume plan execution"===c?(e=!0,await a.setActiveTools(h),a.sendMessage({customType:"plan-resume-context",content:`[RESUMING PLAN EXECUTION]
134
134
 
135
135
  Saved plan:
136
136
 
137
137
  ${b}
138
138
 
139
- Continue executing from where you left off.`,display:!0},{triggerTurn:!0})):"Delete plan file"===c&&m(h.cwd)}}}),a.on("turn_start",async()=>{c=!1,a.appendEntry("plan-mode",{enabled:b,todos:n,executing:e})}),a.on("turn_end",async(a,b)=>{if(e&&0!==n.length&&!c){let a=n.find(a=>!a.completed);a&&(a.completed=!0)}})}},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)},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>e.getAgentDir,BR:()=>m,DK:()=>n,O8:()=>l,Uv:()=>o,dQ:()=>i,os:()=>k});var e=c(75430),f=c(12039),g=c(74788),h=a([e,g]);async function i(){let a=await e.SessionManager.listAll(),b=new Map,c=(0,g.tS)();for(let c of a)b.set(c.path,c.id);let d=j();return a.map(a=>{d.set(a.id,a.path);let e=c[a.id]??null;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created instanceof Date?a.created.toISOString():String(a.created),modified:a.modified instanceof Date?a.modified.toISOString():String(a.modified),messageCount:a.messageCount,firstMessage:a.firstMessage||"(no messages)",parentSessionId:a.parentSessionPath?b.get(a.parentSessionPath):void 0,sessionKind:e?.sessionKind,createdBy:e?.createdBy,sessionMeta:e}})}function j(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}async function k(a){let b=j().get(a);return b||(await i(),j().get(a)??null)}function l(a,b){j().set(a,b)}function m(a){j().delete(a)}function n(a){return e.SessionManager.open(a).getEntries()}function o(a,b){let c,d,g,h=new Map;for(let b of a)h.set(b.id,b);let i=(0,e.buildSessionContext)(a,b,h);if(null===b||(b&&(c=h.get(b)),c||(c=a[a.length-1]),!c))return{messages:[],entryIds:[],thinkingLevel:i.thinkingLevel,model:i.model};let j=[],k=c;for(;k;)j.unshift(k),k=k.parentId?h.get(k.parentId):void 0;for(let a of j)"compaction"===a.type&&(d=a.id,g=a.firstKeptEntryId);let l=[];if(d){l.push(d);let a=j.findIndex(a=>a.id===d),b=g?j.findIndex((b,c)=>c<a&&b.id===g):-1,c=b>=0?b:a;for(let b=c;b<a;b++)"message"===j[b].type&&l.push(j[b].id);for(let b=a+1;b<j.length;b++)"message"===j[b].type&&l.push(j[b].id)}else for(let a of j)"message"===a.type&&l.push(a.id);return{messages:i.messages.map(a=>"compactionSummary"===a.role?{role:"user",content:`*The conversation history before this point was compacted into the following summary:*
139
+ Continue executing from where you left off.`,display:!0},{triggerTurn:!0})):"Delete plan file"===c&&n(i.cwd)}}}),a.on("turn_start",async(d,f)=>{q(f.sessionManager.getSessionId()),c=!1,a.appendEntry("plan-mode",{enabled:b,todos:o,executing:e})}),a.on("turn_end",async(a,b)=>{if(e&&0!==o.length&&!c){let a=o.find(a=>!a.completed);a&&(a.completed=!0)}})}},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)},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>e.getAgentDir,BR:()=>m,DK:()=>n,O8:()=>l,Uv:()=>o,dQ:()=>i,os:()=>k});var e=c(75430),f=c(12039),g=c(74788),h=a([e,g]);async function i(){let a=await e.SessionManager.listAll(),b=new Map,c=(0,g.tS)();for(let c of a)b.set(c.path,c.id);let d=j();return a.map(a=>{d.set(a.id,a.path);let e=c[a.id]??null;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created instanceof Date?a.created.toISOString():String(a.created),modified:a.modified instanceof Date?a.modified.toISOString():String(a.modified),messageCount:a.messageCount,firstMessage:a.firstMessage||"(no messages)",parentSessionId:a.parentSessionPath?b.get(a.parentSessionPath):void 0,sessionKind:e?.sessionKind,createdBy:e?.createdBy,sessionMeta:e}})}function j(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}async function k(a){let b=j().get(a);return b||(await i(),j().get(a)??null)}function l(a,b){j().set(a,b)}function m(a){j().delete(a)}function n(a){return e.SessionManager.open(a).getEntries()}function o(a,b){let c,d,g,h=new Map;for(let b of a)h.set(b.id,b);let i=(0,e.buildSessionContext)(a,b,h);if(null===b||(b&&(c=h.get(b)),c||(c=a[a.length-1]),!c))return{messages:[],entryIds:[],thinkingLevel:i.thinkingLevel,model:i.model};let j=[],k=c;for(;k;)j.unshift(k),k=k.parentId?h.get(k.parentId):void 0;for(let a of j)"compaction"===a.type&&(d=a.id,g=a.firstKeptEntryId);let l=[];if(d){l.push(d);let a=j.findIndex(a=>a.id===d),b=g?j.findIndex((b,c)=>c<a&&b.id===g):-1,c=b>=0?b:a;for(let b=c;b<a;b++)"message"===j[b].type&&l.push(j[b].id);for(let b=a+1;b<j.length;b++)"message"===j[b].type&&l.push(j[b].id)}else for(let a of j)"message"===a.type&&l.push(a.id);return{messages:i.messages.map(a=>"compactionSummary"===a.role?{role:"user",content:`*The conversation history before this point was compacted into the following summary:*
140
140
 
141
141
  ${a.summary??""}`,timestamp:a.timestamp}:(0,f.B)(a)),entryIds:l,thinkingLevel:i.thinkingLevel,model:i.model}}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},41761:(a,b,c)=>{"use strict";c.d(b,{C1:()=>e,lA:()=>d});let d="subagent",e=["bash","read","edit","write","grep","find","ls"];[...e],[...e]},44036:(a,b,c)=>{"use strict";c.d(b,{FJ:()=>g,R4:()=>h,X8:()=>f});let d='<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_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\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\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()}
142
142
 
143
- ${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:()=>D,Bj:()=>E,OF:()=>F});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(85097),j=c(39737),k=c(11745),l=c(9805),m=c(27348),n=c(44036),o=c(66469),p=c(29021),q=c(33873),r=c(7048),s=c(41761),t=c(74788),u=c(57149),v=a([e,f,g,h,i,k,t]);[e,f,g,h,i,k,t]=v.then?(await v)():v;let G=s.C1;class H{constructor(a,b={}){this.inner=a,this.options=b,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this.activeTools=new Map,this.runStartedAtMs=null,this.firstModelEventAtMs=null,this.lastEventAtMs=null,this.lastEventType=null,this.lastErrorMessage=null,this._alive=!0,this._lastAppliedPromptKey=""}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:function(a){try{let b=a.sessionManager;return b.getCwd?.()??null}catch{return null}}(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:y(this.runStartedAtMs),firstModelEventAt:y(this.firstModelEventAtMs),lastEventAt:y(this.lastEventAtMs),lastEventType:this.lastEventType,uptimeMs:this.runStartedAtMs?Math.max(0,a-this.runStartedAtMs):null,waitingForModelMs:"waiting_model"===b&&this.runStartedAtMs?Math.max(0,(this.firstModelEventAtMs??a)-this.runStartedAtMs):null,pendingMessageCount:"number"==typeof this.inner.pendingMessageCount?this.inner.pendingMessageCount:null,errorMessage:this.lastErrorMessage}}start(){this.unsubscribe=this.inner.subscribe(a=>{for(let b of(this.recordRuntimeEvent(a),this.bufferReplayEvent(a),this.resetIdleTimer(),this.listeners))b(a)}),this.resetIdleTimer()}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}bufferReplayEvent(a){"agent_start"===a.type&&(this.replayEvents=[]),this.replayEvents.push(a),this.replayEvents.length>200&&this.replayEvents.splice(0,this.replayEvents.length-200)}onEvent(a,b={}){if(this.listeners.push(a),b.replay)for(let b of this.replayEvents)a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;switch(b){case"prompt":{if(Array.isArray(a.toolNames)){let b=this.filterAvailableToolNames(a.toolNames);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let b=a.images;return this.trackBusy("prompt",this.inner.prompt(a.message,b?.length?{images:b}:void 0)).catch(()=>{}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage(),c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)(),e=(0,t.U5)(this.inner.sessionId);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,goal:e?.goal??null,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,l.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRegistry.find(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,g=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let h=d.getEntry(c);if(!h)throw Error("Invalid entry ID for forking");let i=d.getSessionDir();if(h.parentId){let a=e.SessionManager.open(g,i).createBranchedSession(h.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),i);a.newSession({parentSession:g}),b=a.getSessionFile()}let j=e.SessionManager.open(b,i).getSessionId();(0,f.O8)(j,b);let k=(0,t.U5)(this.sessionId);return k&&await (0,t.oR)(j,{...k,createdBy:"fork",createdAt:new Date().toISOString()}),this.destroy(),{cancelled:!1,newSessionId:j}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),null}case"compact":{let{findCutPoint:b,DEFAULT_COMPACTION_SETTINGS:d}=await Promise.resolve().then(c.bind(c,75430)),e=this.inner.sessionManager.getBranch(),f={...d,...this.inner.settingsManager.getCompactionSettings()},g=-1;for(let a=e.length-1;a>=0;a--)if("compaction"===e[a].type){g=a;break}let h=g+1,i=b(e,h,e.length,f.keepRecentTokens);if((i.isSplitTurn?i.turnStartIndex:i.firstKeptEntryIndex)<=h)throw Error("Conversation too short to compact");return await this.trackBusy("compact",this.inner.compact(a.customInstructions))}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("steer",this.inner.steer(a.message,b?.length?b:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("follow_up",this.inner.followUp(a.message,b?.length?b:void 0)),null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"set_tools":{let b=this.filterAvailableToolNames(a.toolNames);return this.inner.setActiveToolsByName(b),this.applyRuntimePrompts(),(0,t.LN)(this.sessionId,{lastToolNames:this.inner.getActiveToolNames()}).catch(()=>{}),null}case"abort_compaction":return this.inner.abortCompaction(),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){this._alive&&(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.unsubscribe?.(),this.onDestroyCallback?.())}preparePromptContext(a){this.applyRuntimePrompts(a)}async trackBusy(a,b){this.busyOperations.add(a),this.resetIdleTimer();try{return await b}finally{this.busyOperations.delete(a),this.resetIdleTimer()}}getPhase(){return this.inner.isCompacting||this.busyOperations.has("compact")?"compacting":this.activeTools.size>0?"running_tools":this.inner.isStreaming||this.busyOperations.has("prompt")||this.busyOperations.has("steer")||this.busyOperations.has("follow_up")?this.firstModelEventAtMs?"streaming":"waiting_model":"idle"}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();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));break}case"message_end":{let b=a.message;b?.role==="assistant"&&"string"==typeof b.errorMessage&&(this.lastErrorMessage=b.errorMessage);break}case"tool_execution_start":{let b="string"==typeof a.toolCallId?a.toolCallId:"",c="string"==typeof a.toolName?a.toolName:"tool";b&&this.activeTools.set(b,c);break}case"tool_execution_end":{let b="string"==typeof a.toolCallId?a.toolCallId:"";b&&this.activeTools.delete(b);break}case"agent_end":this.activeTools.clear(),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,n.R4)(c),e=w(this.inner),f=a??"",h=`${d}|${b.generativeUI}|${f.length>0?"msg":"no-msg"}`;if(this._lastAppliedPromptKey===h&&e.length>0)return;if(!b.generativeUI){let a=(0,n.X8)((0,l.FE)(e));x(this.inner,z(a,d)),this._lastAppliedPromptKey=h;return}let i=(0,n.X8)((0,l.FE)(e)),j=(0,l.zN)(i),k=z(j,d),o=a?(0,m.WO)(k,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)}):k;x(this.inner,o),this._lastAppliedPromptKey=h}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 w(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function x(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function y(a){return a?new Date(a).toISOString():null}function z(a,b){let c=(0,n.X8)(a);return b?(0,n.FJ)(c):c}function A(a){let b=(0,n.X8)((0,l.FE)(a.systemPrompt)),c=a.generativeUI?(0,l.zN)(b):b;return z(c,a.plotMode)}function B(a){let b=[],c=(0,o.sz)(a.agentDir);if((0,p.existsSync)(c))try{let a=(0,p.readFileSync)(c,"utf-8").trim();a&&b.push((0,o.Is)(a,(0,o.Tg)(c)))}catch{}let d=(0,o.td)(a.agentDir);if((0,p.existsSync)(d))try{let a=(0,p.readFileSync)(d,"utf-8").trim();a&&!(0,l.J)(a)&&b.push((0,o.x9)(a,(0,o.Tg)(d)))}catch{}let e=(0,o.o7)(a.cwd);if((0,p.existsSync)(e))try{let a=(0,p.readFileSync)(e,"utf-8").trim();a&&b.push((0,o.w0)(a,(0,o.Tg)(e)))}catch{}let f=(0,o.a)(a.cwd);if((0,p.existsSync)(f))try{let a=(0,p.readFileSync)(f,"utf-8").trim();a&&b.push((0,o.Me)(a,(0,o.Tg)(f)))}catch{}let g=a.piSystemPrompt.trim();return g&&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",g].join("\n")),b.join("\n\n").trim()}function C(){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 D(a){return C().get(a)}function E(){let a=[...C().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 F(a,b,d,l,m){let o=C(),p=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),v=o.get(a);if(v?.isAlive())return{session:v,realSessionId:a};let y=p.get(a);if(y)return y;let z=(async()=>{let p=(0,e.getAgentDir)(),v=b?e.SessionManager.open(b,void 0):e.SessionManager.create(d,void 0),y=e.SettingsManager.create(d,p),z=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,q.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,q.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),C=new e.DefaultResourceLoader({cwd:d,agentDir:p,settingsManager:y,additionalSkillPaths:z?[(0,q.join)(z,"skills")]:[],extensionFactories:[h.H,i.A,j.L,k.$]});await C.reload();let D=!l&&a?(0,t.U5)(a)?.lastToolNames:void 0,E=function(a,b){if(a)return!a.includes(s.lA)||(0,r.Y)(b).ready?a:a.filter(a=>a!==s.lA)}(l??D,p),{session:F}=await (0,e.createAgentSession)({cwd:d,agentDir:p,sessionManager:v,settingsManager:y,resourceLoader:C,tools:E??G}),I=(0,g.cV)(),J=F.agent.state?.systemPrompt??"";x(F,B({cwd:d,agentDir:p,piSystemPrompt:J})),x(F,A({systemPrompt:w(F),generativeUI:I.generativeUI,plotMode:(0,n.R4)(E??F.getActiveToolNames())})),E&&E.length>0&&(F.setActiveToolsByName(E),x(F,A({systemPrompt:w(F),generativeUI:I.generativeUI,plotMode:(0,n.R4)(E)}))),E?.length===0&&x(F,B({cwd:d,agentDir:p,piSystemPrompt:""}));let K=new H(F,{systemPromptDisabled:E?.length===0});K.start(),"im"===m&&x(F,(0,u.N9)(w(F)));let L=F.sessionId,M=F.sessionFile;return M&&(0,f.O8)(L,M),K.onDestroy(()=>o.delete(L)),o.set(L,K),{session:K,realSessionId:L}})().finally(()=>p.delete(a));return p.set(a,z),z}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}
143
+ ${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:()=>E,Bj:()=>F,OF:()=>G});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(85097),j=c(39737),k=c(11745),l=c(9805),m=c(27348),n=c(44036),o=c(66469),p=c(29021),q=c(33873),r=c(7048),s=c(41761),t=c(74788),u=c(57149),v=c(23537),w=a([e,f,g,h,i,k,t]);[e,f,g,h,i,k,t]=w.then?(await w)():w;let H=s.C1;class I{constructor(a,b={}){this.inner=a,this.options=b,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this.activeTools=new Map,this.runStartedAtMs=null,this.firstModelEventAtMs=null,this.lastEventAtMs=null,this.lastEventType=null,this.lastErrorMessage=null,this._alive=!0,this._lastAppliedPromptKey=""}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:function(a){try{let b=a.sessionManager;return b.getCwd?.()??null}catch{return null}}(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:z(this.runStartedAtMs),firstModelEventAt:z(this.firstModelEventAtMs),lastEventAt:z(this.lastEventAtMs),lastEventType:this.lastEventType,uptimeMs:this.runStartedAtMs?Math.max(0,a-this.runStartedAtMs):null,waitingForModelMs:"waiting_model"===b&&this.runStartedAtMs?Math.max(0,(this.firstModelEventAtMs??a)-this.runStartedAtMs):null,pendingMessageCount:"number"==typeof this.inner.pendingMessageCount?this.inner.pendingMessageCount:null,errorMessage:this.lastErrorMessage}}start(){this.unsubscribe=this.inner.subscribe(a=>{for(let b of(this.recordRuntimeEvent(a),this.bufferReplayEvent(a),this.resetIdleTimer(),this.listeners))b(a)}),this.resetIdleTimer()}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}bufferReplayEvent(a){"agent_start"===a.type&&(this.replayEvents=[]),this.replayEvents.push(a),this.replayEvents.length>200&&this.replayEvents.splice(0,this.replayEvents.length-200)}onEvent(a,b={}){if(this.listeners.push(a),b.replay)for(let b of this.replayEvents)a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;switch(b){case"prompt":{if("boolean"==typeof a.planMode&&this.setPlanModeState(a.planMode),Array.isArray(a.toolNames)){let b=this.filterAvailableToolNames(a.toolNames);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let b=a.images;return this.trackBusy("prompt",this.inner.prompt(a.message,b?.length?{images:b}:void 0)).catch(()=>{}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage(),c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)(),e=(0,t.U5)(this.inner.sessionId);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,goal:e?.goal??null,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,l.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRegistry.find(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,g=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let h=d.getEntry(c);if(!h)throw Error("Invalid entry ID for forking");let i=d.getSessionDir();if(h.parentId){let a=e.SessionManager.open(g,i).createBranchedSession(h.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),i);a.newSession({parentSession:g}),b=a.getSessionFile()}let j=e.SessionManager.open(b,i).getSessionId();(0,f.O8)(j,b);let k=(0,t.U5)(this.sessionId);return k&&await (0,t.oR)(j,{...k,createdBy:"fork",createdAt:new Date().toISOString()}),this.destroy(),{cancelled:!1,newSessionId:j}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),null}case"compact":{let{findCutPoint:b,DEFAULT_COMPACTION_SETTINGS:d}=await Promise.resolve().then(c.bind(c,75430)),e=this.inner.sessionManager.getBranch(),f={...d,...this.inner.settingsManager.getCompactionSettings()},g=-1;for(let a=e.length-1;a>=0;a--)if("compaction"===e[a].type){g=a;break}let h=g+1,i=b(e,h,e.length,f.keepRecentTokens);if((i.isSplitTurn?i.turnStartIndex:i.firstKeptEntryIndex)<=h)throw Error("Conversation too short to compact");return await this.trackBusy("compact",this.inner.compact(a.customInstructions))}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("steer",this.inner.steer(a.message,b?.length?b:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images;return await this.trackBusy("follow_up",this.inner.followUp(a.message,b?.length?b:void 0)),null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"set_tools":{"boolean"==typeof a.planMode&&this.setPlanModeState(a.planMode,!0);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_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),(0,v.Mc)(this.sessionId),this.unsubscribe?.(),this.onDestroyCallback?.())}preparePromptContext(a){this.applyRuntimePrompts(a)}setPlanModeState(a,b=!1){(0,v.hv)(this.sessionId,a),b&&this.inner.sessionManager.appendCustomEntry("plan-mode",{enabled:a,todos:[],executing:!1})}async trackBusy(a,b){this.busyOperations.add(a),this.resetIdleTimer();try{return await b}finally{this.busyOperations.delete(a),this.resetIdleTimer()}}getPhase(){return this.inner.isCompacting||this.busyOperations.has("compact")?"compacting":this.activeTools.size>0?"running_tools":this.inner.isStreaming||this.busyOperations.has("prompt")||this.busyOperations.has("steer")||this.busyOperations.has("follow_up")?this.firstModelEventAtMs?"streaming":"waiting_model":"idle"}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();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));break}case"message_end":{let b=a.message;b?.role==="assistant"&&"string"==typeof b.errorMessage&&(this.lastErrorMessage=b.errorMessage);break}case"tool_execution_start":{let b="string"==typeof a.toolCallId?a.toolCallId:"",c="string"==typeof a.toolName?a.toolName:"tool";b&&this.activeTools.set(b,c);break}case"tool_execution_end":{let b="string"==typeof a.toolCallId?a.toolCallId:"";b&&this.activeTools.delete(b);break}case"agent_end":this.activeTools.clear(),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,n.R4)(c),e=x(this.inner),f=a??"",h=`${d}|${b.generativeUI}|${f.length>0?"msg":"no-msg"}`;if(this._lastAppliedPromptKey===h&&e.length>0)return;if(!b.generativeUI){let a=(0,n.X8)((0,l.FE)(e));y(this.inner,A(a,d)),this._lastAppliedPromptKey=h;return}let i=(0,n.X8)((0,l.FE)(e)),j=(0,l.zN)(i),k=A(j,d),o=a?(0,m.WO)(k,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)}):k;y(this.inner,o),this._lastAppliedPromptKey=h}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 x(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function y(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function z(a){return a?new Date(a).toISOString():null}function A(a,b){let c=(0,n.X8)(a);return b?(0,n.FJ)(c):c}function B(a){let b=(0,n.X8)((0,l.FE)(a.systemPrompt)),c=a.generativeUI?(0,l.zN)(b):b;return A(c,a.plotMode)}function C(a){let b=[],c=(0,o.sz)(a.agentDir);if((0,p.existsSync)(c))try{let a=(0,p.readFileSync)(c,"utf-8").trim();a&&b.push((0,o.Is)(a,(0,o.Tg)(c)))}catch{}let d=(0,o.td)(a.agentDir);if((0,p.existsSync)(d))try{let a=(0,p.readFileSync)(d,"utf-8").trim();a&&!(0,l.J)(a)&&b.push((0,o.x9)(a,(0,o.Tg)(d)))}catch{}let e=(0,o.o7)(a.cwd);if((0,p.existsSync)(e))try{let a=(0,p.readFileSync)(e,"utf-8").trim();a&&b.push((0,o.w0)(a,(0,o.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 D(){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 E(a){return D().get(a)}function F(){let a=[...D().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 G(a,b,d,l,m){let o=D(),p=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),v=o.get(a);if(v?.isAlive())return{session:v,realSessionId:a};let w=p.get(a);if(w)return w;let z=(async()=>{let p=(0,e.getAgentDir)(),v=b?e.SessionManager.open(b,void 0):e.SessionManager.create(d,void 0),w=e.SettingsManager.create(d,p),z=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,q.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,q.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),A=new e.DefaultResourceLoader({cwd:d,agentDir:p,settingsManager:w,additionalSkillPaths:z?[(0,q.join)(z,"skills")]:[],extensionFactories:[h.H,i.A,j.L,k.$]});await A.reload();let D=!l&&a?(0,t.U5)(a)?.lastToolNames:void 0,E=function(a,b){if(a)return!a.includes(s.lA)||(0,r.Y)(b).ready?a:a.filter(a=>a!==s.lA)}(l??D,p),{session:F}=await (0,e.createAgentSession)({cwd:d,agentDir:p,sessionManager:v,settingsManager:w,resourceLoader:A,tools:E??H}),G=(0,g.cV)(),J=F.agent.state?.systemPrompt??"";y(F,C({cwd:d,agentDir:p,piSystemPrompt:J})),y(F,B({systemPrompt:x(F),generativeUI:G.generativeUI,plotMode:(0,n.R4)(E??F.getActiveToolNames())})),E&&E.length>0&&(F.setActiveToolsByName(E),y(F,B({systemPrompt:x(F),generativeUI:G.generativeUI,plotMode:(0,n.R4)(E)}))),E?.length===0&&y(F,C({cwd:d,agentDir:p,piSystemPrompt:""}));let K=new I(F,{systemPromptDisabled:E?.length===0});K.start(),"im"===m&&y(F,(0,u.N9)(x(F)));let L=F.sessionId,M=F.sessionFile;return M&&(0,f.O8)(L,M),K.onDestroy(()=>o.delete(L)),o.set(L,K),{session:K,realSessionId:L}})().finally(()=>p.delete(a));return p.set(a,z),z}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}
144
144
 
145
145
  ${d}
146
146
  ## WeCom IM Channel Constraints
@@ -152,12 +152,12 @@ You are responding to a user via 企业微信 (WeCom) bot. Follow these rules:
152
152
  3. **Be concise.** WeCom messages have limited display width. Keep replies short and scannable.
153
153
  4. **For files/diagrams:** Save output files to the project directory and tell the user the file path. Do NOT attempt to inline images or charts.
154
154
  5. **Respond in the user's language.** If the user sends Chinese, reply in Chinese.
155
- </wecom_im_channel>`}},66469:(a,b,c)=>{"use strict";c.d(b,{Ed:()=>m,Is:()=>o,Ko:()=>h,M3:()=>k,Me:()=>r,Tg:()=>n,a:()=>l,bo:()=>i,o7:()=>j,sz:()=>f,td:()=>g,w0:()=>q,x9:()=>p});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){let b=(0,e.join)(a,"CONTEXT.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"context.md");return(0,d.existsSync)(c)?c:b}function m(a){return(0,e.join)(a,"CONTEXT.md")}function n(a){return(0,e.basename)(a)}function o(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 p(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 q(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")}function r(a,b="CONTEXT.md"){return[`## Project Context — ${b}`,"\nThe following project context captures stable facts, conventions, and working assumptions for this directory.\nUse it as durable background context, not as a higher-priority instruction source.\n",a].join("\n")}},74788:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{LN:()=>o,Of:()=>p,U5:()=>m,oR:()=>n,tS:()=>l});var e=c(29021),f=c(55511),g=c(33873),h=c(75430),i=a([h]);h=(i.then?(await i)():i)[0];let q=(0,g.join)((0,h.getAgentDir)(),"annovibe-session-meta.json"),r=Promise.resolve();function j(a){let b;b=(0,g.dirname)(q),(0,e.existsSync)(b)||(0,e.mkdirSync)(b,{recursive:!0});let c=`${q}.${(0,f.randomUUID)().slice(0,8)}.tmp`;(0,e.writeFileSync)(c,JSON.stringify(a,null,2)),(0,e.renameSync)(c,q)}async function k(a){let b,c=r;r=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}function l(){if(!(0,e.existsSync)(q))return{};try{let a=JSON.parse((0,e.readFileSync)(q,"utf-8")),b={};for(let[c,d]of Object.entries(a)){let a=function(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);a&&(b[c]=a)}return b}catch{return{}}}function m(a){return l()[a]??null}async function n(a,b){await k(()=>{let c=l();c[a]=b,j(c)})}async function o(a,b){await k(()=>{let c=l(),d=c[a];d&&(c[a]={...d,...b},j(c))})}async function p(a){await k(()=>{let b=l();a in b&&(delete b[a],j(b))})}d()}catch(a){d(a)}})},78335:()=>{},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"}:
155
+ </wecom_im_channel>`}},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")}},74788:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{LN:()=>o,Of:()=>p,U5:()=>m,oR:()=>n,tS:()=>l});var e=c(29021),f=c(55511),g=c(33873),h=c(75430),i=a([h]);h=(i.then?(await i)():i)[0];let q=(0,g.join)((0,h.getAgentDir)(),"annovibe-session-meta.json"),r=Promise.resolve();function j(a){let b;b=(0,g.dirname)(q),(0,e.existsSync)(b)||(0,e.mkdirSync)(b,{recursive:!0});let c=`${q}.${(0,f.randomUUID)().slice(0,8)}.tmp`;(0,e.writeFileSync)(c,JSON.stringify(a,null,2)),(0,e.renameSync)(c,q)}async function k(a){let b,c=r;r=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}function l(){if(!(0,e.existsSync)(q))return{};try{let a=JSON.parse((0,e.readFileSync)(q,"utf-8")),b={};for(let[c,d]of Object.entries(a)){let a=function(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);a&&(b[c]=a)}return b}catch{return{}}}function m(a){return l()[a]??null}async function n(a,b){await k(()=>{let c=l();c[a]=b,j(c)})}async function o(a,b){await k(()=>{let c=l(),d=c[a];d&&(c[a]={...d,...b},j(c))})}async function p(a){await k(()=>{let b=l();a in b&&(delete b[a],j(b))})}d()}catch(a){d(a)}})},78335:()=>{},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"}:
156
156
 
157
- ${(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)}})},96487:()=>{},96640:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Dj:()=>v,Dn:()=>z,TI:()=>w,Wb:()=>A,fu:()=>x,nf:()=>y,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)}
157
+ ${(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)}})},96487:()=>{},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)}
158
158
  `;(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")}
159
- `:"";(0,f.writeFileSync)(c,a,"utf8")})}function r(a,b){return b.score!==a.score?b.score-a.score:b.importance!==a.importance?b.importance-a.importance:Date.parse(b.timestamp)-Date.parse(a.timestamp)}async function s(a){let b=k(a.importance),c=b>=.9?"project_memory":b>=.7||"decision"===a.memoryType||"context"===a.memoryType?"spark":"none",d={id:(0,e.randomUUID)(),content:a.content.trim(),timestamp:new Date().toISOString(),importance:b,veracity:a.veracity??"tool",memoryType:a.memoryType??"fact",source:a.source??"annovibe.retain",sessionId:a.sessionId,cwd:a.cwd,metadata:a.metadata??{},governance:{tier:"working",candidate:c,reason:"project_memory"===c?"high importance durable record":"spark"===c?"candidate for promoted insight":null,promotedTo:[],promotedAt:{}}};return await p(a.cwd,d),d}async function t(a,b,c){let d=c.replace(/\r\n/g,"\n").trim(),e=!1;return await (0,h.withFileMutationQueue)(a,async()=>{let c=function(a,b){if(m(a),!(0,f.existsSync)(a)){let c=`${b}
159
+ `:"";(0,f.writeFileSync)(c,a,"utf8")})}function r(a,b){return b.score!==a.score?b.score-a.score:b.importance!==a.importance?b.importance-a.importance:Date.parse(b.timestamp)-Date.parse(a.timestamp)}async function s(a){let b=k(a.importance),c=b>=.9?"project_memory":b>=.7||"decision"===a.memoryType||"context"===a.memoryType?"spark":"none",d={id:(0,e.randomUUID)(),content:a.content.trim(),timestamp:new Date().toISOString(),importance:b,veracity:a.veracity??"tool",memoryType:a.memoryType??"fact",source:a.source??"annovibe.retain",sessionId:a.sessionId,cwd:a.cwd,metadata:a.metadata??{},governance:{tier:"working",candidate:c,reason:"project_memory"===c?"high importance durable record":"spark"===c?"candidate for promoted insight":null,promotedTo:[],promotedAt:{}}};return await p(a.cwd,d),d}function t(a,b){let c=a.find(a=>a.id===b);if(!c)throw Error(`Memory ${b} not found`);return c}async function u(a,b,c){let d=c.replace(/\r\n/g,"\n").trim(),e=!1;return await (0,h.withFileMutationQueue)(a,async()=>{let c=function(a,b){if(m(a),!(0,f.existsSync)(a)){let c=`${b}
160
160
 
161
161
  `;return(0,f.writeFileSync)(a,c,"utf8"),{content:c,created:!0}}return{content:(0,f.readFileSync)(a,"utf8"),created:!1}}(a,b);if(e=c.created,c.content.includes(d))return;let g=c.content.trimEnd().length>0?"\n\n":"";(0,f.writeFileSync)(a,`${c.content.trimEnd()}${g}${d}
162
- `,"utf8")}),{created:e}}async function u(a,b,c,d){let e=o(a).map(a=>{if(a.id!==b)return a;let e=a.governance.promotedTo??[],f=e.includes(c)?e:[...e,c];return{...a,governance:{...a.governance,promotedTo:f,promotedAt:{...a.governance.promotedAt??{},[c]:d}}}});await q(a,e)}async function v(a,b,c){let d,e,g,h=o(a),j=function(a,b){let c=a.find(a=>a.id===b);if(!c)throw Error(`Memory ${b} not found`);return c}(h,b),k="memory"===c?(0,i.o7)(a):(0,i.a)(a),l="memory"===c?(0,i.M3)(a):(0,i.Ed)(a),m=(0,f.existsSync)(k)?k:l,{created:n}="memory"===c?await (d=[`## ${j.timestamp.slice(0,10)} — ${j.memoryType}`,"",j.content.trim(),"",`- Memory ID: \`${j.id}\``,`- Importance: ${j.importance.toFixed(2)}`,`- Source: ${j.source}`],(e=j.sessionId.trim())&&d.push(`- Session: \`${e}\``),t(m,"# Project Memory",d.join("\n"))):await (g=[`- ${j.content.trim()}`,` - Memory ID: \`${j.id}\``,` - Type: ${j.memoryType}`,` - Importance: ${j.importance.toFixed(2)}`,` - Captured: ${j.timestamp}`],t(m,"# Project Context",g.join("\n"))),p=new Date().toISOString();return await u(a,b,c,p),{memoryId:b,target:c,filePath:m,created:n,promotedAt:p}}function w(a,b,c=5){let d=o(a),e=n(b.toLowerCase().split(/[^a-z0-9_\-.:\u4e00-\u9fff]+/i).map(a=>a.trim()).filter(a=>a.length>=2)),f=b.trim().toLowerCase();return d.map(a=>{let b=[a.content,JSON.stringify(a.metadata??{}),a.memoryType,a.source].join("\n"),c=function(a,b){let c=b.toLowerCase(),d=n(a.filter(a=>c.includes(a)));if(0===a.length)return{score:0,matchedTerms:d};let e=d.length/a.length,f=.15*!!c.includes(a.join(" "));return{score:e+f,matchedTerms:d}}(e,b),d=f&&a.content.toLowerCase().includes(f)?.35:0,g=.65*c.score+.2*a.importance+.15*function(a){let b=Date.parse(a);if(!Number.isFinite(b))return .2;let c=Math.max(0,(Date.now()-b)/864e5);return Math.exp(-c/30)}(a.timestamp)+d;return{...a,score:Number(g.toFixed(4)),matchedTerms:c.matchedTerms}}).filter(a=>a.score>0).sort(r).slice(0,Math.max(1,Math.min(20,c)))}function x(a){return a.map((a,b)=>{var c;let d,e=[`${b+1}. [${a.id}] importance=${a.importance.toFixed(2)} score=${a.score.toFixed(2)} ${a.timestamp}`,a.content],f=(c=a.metadata,d=Object.entries(c).filter(([,a])=>null!==a&&""!==a),0===d.length?null:d.map(([a,b])=>`${a}=${String(b)}`).join(", "));return f&&e.push(`metadata: ${f}`),a.matchedTerms.length>0&&e.push(`matched: ${a.matchedTerms.join(", ")}`),e.join("\n")}).join("\n\n")}function y(a,b,c,d=5){let e=c?.trim()?`${b}
163
- ${c.trim()}`:b,f=w(a,e,d);if(0===f.length)return{answer:"No relevant information found to reflect on.",results:f};let g=f.slice(0,Math.min(3,f.length)),h=[`Question: ${b.trim()}`,"","Relevant memory signals:",...g.map((a,b)=>`- ${b+1}. ${a.content}`)];return c?.trim()&&h.push("","Additional context:",c.trim()),h.push("","Working synthesis:",1===g.length?g[0].content:g.map((a,b)=>`${b+1}) ${a.content}`).join("\n")),{answer:h.join("\n"),results:f}}function z(a){return{filePath:l(a),count:o(a).length}}function A(a){let b=o(a),c={fact:0,context:0,preference:0,decision:0,note:0};for(let a of b)c[a.memoryType]+=1;let d=[...b].sort((a,b)=>Date.parse(b.timestamp)-Date.parse(a.timestamp)),e=a=>({id:a.id,content:a.content,timestamp:a.timestamp,importance:a.importance,memoryType:a.memoryType,candidate:a.governance.candidate,promotedTo:a.governance.promotedTo??[]}),f=d.filter(a=>"none"!==a.governance.candidate&&(a.governance.promotedTo?.length??0)<2).sort((a,b)=>b.importance!==a.importance?b.importance-a.importance:Date.parse(b.timestamp)-Date.parse(a.timestamp));return{filePath:l(a),count:b.length,candidateCount:f.length,byType:c,recent:d.slice(0,5).map(e),topCandidates:f.slice(0,5).map(e)}}h=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})}};
162
+ `,"utf8")}),{created:e}}async function v(a,b,c,d){let e=o(a).map(a=>{if(a.id!==b)return a;let e=a.governance.promotedTo??[],f=e.includes(c)?e:[...e,c];return{...a,governance:{...a.governance,promotedTo:f,promotedAt:{...a.governance.promotedAt??{},[c]:d}}}});await q(a,e)}async function w(a,b){let c=o(a),d=t(c,b);if("none"===d.governance.candidate)return;let e=c.map(a=>a.id!==b?a:{...a,governance:{...a.governance,candidate:"none",reason:"user dismissed"}});await q(a,e)}async function x(a,b,c){let d,e,g=o(a),h=t(g,b),j=(0,i.o7)(a),k=(0,i.M3)(a),l=(0,f.existsSync)(j)?j:k,{created:m}=await (d=[`## ${h.timestamp.slice(0,10)} — ${h.memoryType}`,"",h.content.trim(),"",`- Memory ID: \`${h.id}\``,`- Importance: ${h.importance.toFixed(2)}`,`- Source: ${h.source}`],(e=h.sessionId.trim())&&d.push(`- Session: \`${e}\``),u(l,"# Project Memory",d.join("\n"))),n=new Date().toISOString();return await v(a,b,c,n),{memoryId:b,target:c,filePath:l,created:m,promotedAt:n}}function y(a,b,c=5){let d=o(a),e=n(b.toLowerCase().split(/[^a-z0-9_\-.:\u4e00-\u9fff]+/i).map(a=>a.trim()).filter(a=>a.length>=2)),f=b.trim().toLowerCase();return d.map(a=>{let b=[a.content,JSON.stringify(a.metadata??{}),a.memoryType,a.source].join("\n"),c=function(a,b){let c=b.toLowerCase(),d=n(a.filter(a=>c.includes(a)));if(0===a.length)return{score:0,matchedTerms:d};let e=d.length/a.length,f=.15*!!c.includes(a.join(" "));return{score:e+f,matchedTerms:d}}(e,b),d=f&&a.content.toLowerCase().includes(f)?.35:0,g=.65*c.score+.2*a.importance+.15*function(a){let b=Date.parse(a);if(!Number.isFinite(b))return .2;let c=Math.max(0,(Date.now()-b)/864e5);return Math.exp(-c/30)}(a.timestamp)+d;return{...a,score:Number(g.toFixed(4)),matchedTerms:c.matchedTerms}}).filter(a=>a.score>0).sort(r).slice(0,Math.max(1,Math.min(20,c)))}function z(a){return a.map((a,b)=>{var c;let d,e=[`${b+1}. [${a.id}] importance=${a.importance.toFixed(2)} score=${a.score.toFixed(2)} ${a.timestamp}`,a.content],f=(c=a.metadata,d=Object.entries(c).filter(([,a])=>null!==a&&""!==a),0===d.length?null:d.map(([a,b])=>`${a}=${String(b)}`).join(", "));return f&&e.push(`metadata: ${f}`),a.matchedTerms.length>0&&e.push(`matched: ${a.matchedTerms.join(", ")}`),e.join("\n")}).join("\n\n")}function A(a,b,c,d=5){let e=c?.trim()?`${b}
163
+ ${c.trim()}`:b,f=y(a,e,d);if(0===f.length)return{answer:"No relevant information found to reflect on.",results:f};let g=f.slice(0,Math.min(3,f.length)),h=[`Question: ${b.trim()}`,"","Relevant memory signals:",...g.map((a,b)=>`- ${b+1}. ${a.content}`)];return c?.trim()&&h.push("","Additional context:",c.trim()),h.push("","Working synthesis:",1===g.length?g[0].content:g.map((a,b)=>`${b+1}) ${a.content}`).join("\n")),{answer:h.join("\n"),results:f}}function B(a){return{filePath:l(a),count:o(a).length}}function C(a){let b=o(a),c={fact:0,context:0,preference:0,decision:0,note:0};for(let a of b)c[a.memoryType]+=1;let d=[...b].sort((a,b)=>Date.parse(b.timestamp)-Date.parse(a.timestamp)),e=a=>({id:a.id,content:a.content,timestamp:a.timestamp,importance:a.importance,memoryType:a.memoryType,candidate:a.governance.candidate,promotedTo:a.governance.promotedTo??[]}),f=d.filter(a=>"none"!==a.governance.candidate&&(a.governance.promotedTo?.length??0)<1).sort((a,b)=>b.importance!==a.importance?b.importance-a.importance:Date.parse(b.timestamp)-Date.parse(a.timestamp));return{filePath:l(a),count:b.length,candidateCount:f.length,byType:c,recent:d.slice(0,5).map(e),topCandidates:f.slice(0,5).map(e)}}h=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})}};