@circuitwall/jarela 2.2.1 → 2.4.0

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 (703) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +2 -1
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/routes-manifest.json +8 -0
  6. package/.next/standalone/.next/server/app/_global-error/page.js +68 -68
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page.js +76 -76
  14. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  16. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/standalone/.next/server/app/api/v1/access/[identity]/route.js +100 -93
  22. package/.next/standalone/.next/server/app/api/v1/access/route.js +176 -169
  23. package/.next/standalone/.next/server/app/api/v1/agents/[id]/compact/route.js +89 -56
  24. package/.next/standalone/.next/server/app/api/v1/agents/[id]/compact/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/v1/agents/[id]/display-filters/route.js +139 -127
  26. package/.next/standalone/.next/server/app/api/v1/agents/[id]/route.js +107 -100
  27. package/.next/standalone/.next/server/app/api/v1/agents/[id]/thread/route.js +765 -753
  28. package/.next/standalone/.next/server/app/api/v1/agents/route.js +72 -65
  29. package/.next/standalone/.next/server/app/api/v1/allowed-sites/[hostname]/route.js +371 -364
  30. package/.next/standalone/.next/server/app/api/v1/allowed-sites/route.js +809 -802
  31. package/.next/standalone/.next/server/app/api/v1/artifacts/lifecycle/route.js +9 -2
  32. package/.next/standalone/.next/server/app/api/v1/attachments/files/route.js +49 -49
  33. package/.next/standalone/.next/server/app/api/v1/attachments/images/route.js +910 -910
  34. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js +583 -16
  35. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/[remote_jid]/route.js +41 -30
  37. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/route.js +48 -37
  38. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js +697 -130
  39. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js +703 -136
  41. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js +796 -229
  43. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/[route_id]/route.js +762 -746
  45. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/route.js +1050 -1034
  46. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js +673 -106
  47. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/v1/bridges/kinds/route.js +811 -804
  49. package/.next/standalone/.next/server/app/api/v1/bridges/kinds/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/v1/bridges/route.js +718 -706
  51. package/.next/standalone/.next/server/app/api/v1/bridges/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js +9 -9
  53. package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/v1/config/route.js +85 -85
  55. package/.next/standalone/.next/server/app/api/v1/credentials/[id]/route.js +709 -709
  56. package/.next/standalone/.next/server/app/api/v1/credentials/[id]/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/v1/credentials/route.js +2 -2
  58. package/.next/standalone/.next/server/app/api/v1/credentials/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/v1/dashboard/currency/route.js +10 -10
  60. package/.next/standalone/.next/server/app/api/v1/dashboard/metrics/route.js +796 -784
  61. package/.next/standalone/.next/server/app/api/v1/dashboard/pricing/route.js +30 -23
  62. package/.next/standalone/.next/server/app/api/v1/dashboard/pricing-task/route.js +86 -86
  63. package/.next/standalone/.next/server/app/api/v1/dashboard/pricing-task/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/v1/delegations/codex/[job_id]/route.js +57 -57
  65. package/.next/standalone/.next/server/app/api/v1/delegations/codex/[job_id]/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/v1/documents/search/route.js +385 -378
  67. package/.next/standalone/.next/server/app/api/v1/documents/settings/route.js +51 -44
  68. package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/reindex/route.js +65 -65
  69. package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/reindex/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/route.js +122 -122
  71. package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/v1/documents/sources/route.js +37 -37
  73. package/.next/standalone/.next/server/app/api/v1/documents/sources/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/v1/env/route.js +9 -9
  75. package/.next/standalone/.next/server/app/api/v1/env-sync/allowlist/route.js +375 -368
  76. package/.next/standalone/.next/server/app/api/v1/env-sync/route.js +51 -44
  77. package/.next/standalone/.next/server/app/api/v1/events/route.js +745 -178
  78. package/.next/standalone/.next/server/app/api/v1/events/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/v1/events/test/route.js +77 -77
  80. package/.next/standalone/.next/server/app/api/v1/extension/agents/route.js +763 -763
  81. package/.next/standalone/.next/server/app/api/v1/extension/agents/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/v1/extension/browser/activate/route.js +51 -44
  83. package/.next/standalone/.next/server/app/api/v1/extension/browser/foreground/route.js +16 -9
  84. package/.next/standalone/.next/server/app/api/v1/extension/browser/history/route.js +72 -65
  85. package/.next/standalone/.next/server/app/api/v1/extension/browser/poll/route.js +41 -34
  86. package/.next/standalone/.next/server/app/api/v1/extension/browser/progress/route.js +211 -204
  87. package/.next/standalone/.next/server/app/api/v1/extension/browser/result/route.js +140 -133
  88. package/.next/standalone/.next/server/app/api/v1/extension/browser/retry/route.js +113 -106
  89. package/.next/standalone/.next/server/app/api/v1/extension/browser/status/route.js +121 -114
  90. package/.next/standalone/.next/server/app/api/v1/extension/browser/tabs/route.js +141 -134
  91. package/.next/standalone/.next/server/app/api/v1/extension/fill/route.js +690 -690
  92. package/.next/standalone/.next/server/app/api/v1/extension/fill/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/v1/extension/refine/route.js +93 -93
  94. package/.next/standalone/.next/server/app/api/v1/extension/refine/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/v1/extension/turn/route.js +9 -9
  96. package/.next/standalone/.next/server/app/api/v1/extension/turn/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/v1/extensions/route.js +185 -185
  98. package/.next/standalone/.next/server/app/api/v1/extensions/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/config/route.js +171 -171
  100. package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/config/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/route.js +396 -396
  102. package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/secrets/route.js +212 -212
  104. package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/secrets/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/v1/files/[name]/route.js +235 -235
  106. package/.next/standalone/.next/server/app/api/v1/fs/browse/route.js +26 -26
  107. package/.next/standalone/.next/server/app/api/v1/harnesses/[id]/route.js +228 -221
  108. package/.next/standalone/.next/server/app/api/v1/harnesses/default/route.js +65 -58
  109. package/.next/standalone/.next/server/app/api/v1/harnesses/route.js +79 -72
  110. package/.next/standalone/.next/server/app/api/v1/health/probes/route.js +9 -9
  111. package/.next/standalone/.next/server/app/api/v1/health/probes/route.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/api/v1/health/route.js +783 -771
  113. package/.next/standalone/.next/server/app/api/v1/integrations/[name]/route.js +140 -133
  114. package/.next/standalone/.next/server/app/api/v1/integrations/[name]/test/route.js +9 -9
  115. package/.next/standalone/.next/server/app/api/v1/integrations/[name]/test/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/callback/route.js +370 -363
  117. package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/start/route.js +240 -233
  118. package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/status/route.js +689 -682
  119. package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/callback/route.js +886 -879
  120. package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/start/route.js +115 -108
  121. package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/status/route.js +955 -948
  122. package/.next/standalone/.next/server/app/api/v1/integrations/route.js +223 -216
  123. package/.next/standalone/.next/server/app/api/v1/lifecycle/adoption/route.js +876 -847
  124. package/.next/standalone/.next/server/app/api/v1/lifecycle/adoption/route.js.nft.json +1 -1
  125. package/.next/standalone/.next/server/app/api/v1/local-file/route.js +26 -26
  126. package/.next/standalone/.next/server/app/api/v1/logs/route.js +70 -70
  127. package/.next/standalone/.next/server/app/api/v1/maps/embed/route.js +79 -72
  128. package/.next/standalone/.next/server/app/api/v1/mcp-servers/[name]/route.js +991 -979
  129. package/.next/standalone/.next/server/app/api/v1/mcp-servers/registry/route.js +196 -196
  130. package/.next/standalone/.next/server/app/api/v1/mcp-servers/route.js +19 -7
  131. package/.next/standalone/.next/server/app/api/v1/memory/[namespace]/[key]/route.js +539 -532
  132. package/.next/standalone/.next/server/app/api/v1/memory/policy/route.js +86 -79
  133. package/.next/standalone/.next/server/app/api/v1/memory/route.js +58 -51
  134. package/.next/standalone/.next/server/app/api/v1/memory/search/route.js +138 -131
  135. package/.next/standalone/.next/server/app/api/v1/models/[name]/compact-threads/route.js +381 -369
  136. package/.next/standalone/.next/server/app/api/v1/models/[name]/compact-threads/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/v1/models/[name]/route.js +150 -143
  138. package/.next/standalone/.next/server/app/api/v1/models/route.js +634 -627
  139. package/.next/standalone/.next/server/app/api/v1/packages/catalog/route.js +445 -445
  140. package/.next/standalone/.next/server/app/api/v1/packages/defaults/[id]/route.js +120 -120
  141. package/.next/standalone/.next/server/app/api/v1/packages/defaults/[id]/route.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/api/v1/packages/install/[id]/route.js +234 -234
  143. package/.next/standalone/.next/server/app/api/v1/packages/install/[id]/route.js.nft.json +1 -1
  144. package/.next/standalone/.next/server/app/api/v1/packages/install/route.js +407 -407
  145. package/.next/standalone/.next/server/app/api/v1/packages/install/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/enabled/route.js +37 -37
  147. package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/enabled/route.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/route.js +107 -107
  149. package/.next/standalone/.next/server/app/api/v1/packages/manifests/[name]/route.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/api/v1/packages/manifests/route.js +228 -228
  151. package/.next/standalone/.next/server/app/api/v1/packages/manifests/route.js.nft.json +1 -1
  152. package/.next/standalone/.next/server/app/api/v1/packages/reload/route.js +9 -9
  153. package/.next/standalone/.next/server/app/api/v1/packages/reload/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/v1/packages/route.js +148 -148
  155. package/.next/standalone/.next/server/app/api/v1/packages/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/v1/page-capture/route.js +787 -787
  157. package/.next/standalone/.next/server/app/api/v1/page-capture/route.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/approve/route.js +529 -514
  159. package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/approve/route.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/deny/route.js +181 -181
  161. package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/deny/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/v1/pending-actions/route.js +258 -258
  163. package/.next/standalone/.next/server/app/api/v1/pending-actions/route.js.nft.json +1 -1
  164. package/.next/standalone/.next/server/app/api/v1/profile/location/route.js +37 -30
  165. package/.next/standalone/.next/server/app/api/v1/profile/route.js +171 -164
  166. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +51 -44
  167. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js +15 -8
  168. package/.next/standalone/.next/server/app/api/v1/providers/github-copilot/auth/route.js +171 -164
  169. package/.next/standalone/.next/server/app/api/v1/providers/route.js +101 -94
  170. package/.next/standalone/.next/server/app/api/v1/proxy-config/route.js +457 -450
  171. package/.next/standalone/.next/server/app/api/v1/redaction/init/route.js +44 -37
  172. package/.next/standalone/.next/server/app/api/v1/redaction/route.js +65 -58
  173. package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/route.js +617 -605
  174. package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/run/route.js +44 -44
  175. package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/run/route.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/route.js +739 -732
  177. package/.next/standalone/.next/server/app/api/v1/security/idle-timeout/route.js +329 -322
  178. package/.next/standalone/.next/server/app/api/v1/security/pin/route.js +204 -197
  179. package/.next/standalone/.next/server/app/api/v1/security/state/route.js +58 -51
  180. package/.next/standalone/.next/server/app/api/v1/security/unlock/route.js +183 -176
  181. package/.next/standalone/.next/server/app/api/v1/security/verify-pin/route.js +194 -187
  182. package/.next/standalone/.next/server/app/api/v1/setup/test-key/route.js +26 -26
  183. package/.next/standalone/.next/server/app/api/v1/skills/[id]/route.js +776 -769
  184. package/.next/standalone/.next/server/app/api/v1/skills/repos/[id]/route.js +122 -115
  185. package/.next/standalone/.next/server/app/api/v1/skills/repos/route.js +334 -327
  186. package/.next/standalone/.next/server/app/api/v1/skills/route.js +873 -866
  187. package/.next/standalone/.next/server/app/api/v1/system/abort/route.js +838 -808
  188. package/.next/standalone/.next/server/app/api/v1/system/restart/route.js +177 -177
  189. package/.next/standalone/.next/server/app/api/v1/system/restart/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/v1/tailscale/route.js +164 -164
  191. package/.next/standalone/.next/server/app/api/v1/tasks/[agent_id]/route.js +122 -115
  192. package/.next/standalone/.next/server/app/api/v1/tasks/route.js +30 -23
  193. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route.js +1436 -0
  194. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route.js.nft.json +1 -0
  195. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route_client-reference-manifest.js +1 -0
  196. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/context-pin/route.js +638 -631
  197. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/context-pin/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/route.js +60 -439
  199. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/route.js.nft.json +1 -1
  200. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js +172 -173
  201. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/v1/threads/route.js +925 -913
  203. package/.next/standalone/.next/server/app/api/v1/tools/route.js +2 -2
  204. package/.next/standalone/.next/server/app/api/v1/tools/route.js.nft.json +1 -1
  205. package/.next/standalone/.next/server/app/api/v1/update/apply/route.js +17 -17
  206. package/.next/standalone/.next/server/app/api/v1/update/apply/route.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/app/api/v1/update/route.js +570 -570
  208. package/.next/standalone/.next/server/app/api/v1/voice/transcribe/route.js +241 -229
  209. package/.next/standalone/.next/server/app/api/v1/voice/tts/route.js +989 -977
  210. package/.next/standalone/.next/server/app/api/v1/watchers/[id]/route.js +40 -28
  211. package/.next/standalone/.next/server/app/api/v1/watchers/[id]/run/route.js +72 -72
  212. package/.next/standalone/.next/server/app/api/v1/watchers/[id]/run/route.js.nft.json +1 -1
  213. package/.next/standalone/.next/server/app/api/v1/watchers/reaction-scripts/route.js +128 -128
  214. package/.next/standalone/.next/server/app/api/v1/watchers/route.js +164 -164
  215. package/.next/standalone/.next/server/app/api/v1/watchers/route.js.nft.json +1 -1
  216. package/.next/standalone/.next/server/app/icon.svg/route.js +62 -62
  217. package/.next/standalone/.next/server/app/manifest.webmanifest/route.js +436 -436
  218. package/.next/standalone/.next/server/app/page.js +1179 -743
  219. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/setup/page.js +99 -91
  221. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app-paths-manifest.json +2 -1
  223. package/.next/standalone/.next/server/chunks/{424.js → 1388.js} +441 -1022
  224. package/.next/standalone/.next/server/chunks/1433.js +1 -1
  225. package/.next/standalone/.next/server/chunks/1638.js +1 -2
  226. package/.next/standalone/.next/server/chunks/1738.js +1 -1
  227. package/.next/standalone/.next/server/chunks/2068.js +47 -10
  228. package/.next/standalone/.next/server/chunks/210.js +3 -3
  229. package/.next/standalone/.next/server/chunks/2151.js +31 -1
  230. package/.next/standalone/.next/server/chunks/2207.js +1 -0
  231. package/.next/standalone/.next/server/chunks/2447.js +10 -5
  232. package/.next/standalone/.next/server/chunks/2471.js +45 -45
  233. package/.next/standalone/.next/server/chunks/2504.js +1 -1
  234. package/.next/standalone/.next/server/chunks/2695.js +17 -17
  235. package/.next/standalone/.next/server/chunks/3042.js +24 -16
  236. package/.next/standalone/.next/server/chunks/{4540.js → 309.js} +104 -38
  237. package/.next/standalone/.next/server/chunks/{2350.js → 3272.js} +104 -37
  238. package/.next/standalone/.next/server/chunks/3399.js +526 -526
  239. package/.next/standalone/.next/server/chunks/3524.js +150 -67
  240. package/.next/standalone/.next/server/chunks/3566.js +1 -1
  241. package/.next/standalone/.next/server/chunks/4189.js +946 -0
  242. package/.next/standalone/.next/server/chunks/4433.js +146 -146
  243. package/.next/standalone/.next/server/chunks/4508.js +3 -3
  244. package/.next/standalone/.next/server/chunks/4588.js +1 -0
  245. package/.next/standalone/.next/server/chunks/46.js +78 -28
  246. package/.next/standalone/.next/server/chunks/466.js +12 -0
  247. package/.next/standalone/.next/server/chunks/4868.js +206 -206
  248. package/.next/standalone/.next/server/chunks/4992.js +13 -0
  249. package/.next/standalone/.next/server/chunks/5120.js +963 -0
  250. package/.next/standalone/.next/server/chunks/5701.js +1 -1
  251. package/.next/standalone/.next/server/chunks/5900.js +1 -1
  252. package/.next/standalone/.next/server/chunks/5908.js +63 -42
  253. package/.next/standalone/.next/server/chunks/6142.js +10 -2
  254. package/.next/standalone/.next/server/chunks/6210.js +1 -0
  255. package/.next/standalone/.next/server/chunks/6213.js +1 -1
  256. package/.next/standalone/.next/server/chunks/6649.js +3 -3
  257. package/.next/standalone/.next/server/chunks/6703.js +3 -3
  258. package/.next/standalone/.next/server/chunks/7445.js +1 -0
  259. package/.next/standalone/.next/server/chunks/8067.js +12 -0
  260. package/.next/standalone/.next/server/chunks/8461.js +24 -17
  261. package/.next/standalone/.next/server/chunks/8558.js +1 -1
  262. package/.next/standalone/.next/server/chunks/8724.js +1 -1
  263. package/.next/standalone/.next/server/chunks/8849.js +91 -91
  264. package/.next/standalone/.next/server/chunks/9032.js +4 -3
  265. package/.next/standalone/.next/server/chunks/{2563.js → 9164.js} +33389 -31418
  266. package/.next/standalone/.next/server/chunks/9237.js +396 -396
  267. package/.next/standalone/.next/server/chunks/{9640.js → 9304.js} +1672 -575
  268. package/.next/standalone/.next/server/chunks/9406.js +1 -1
  269. package/.next/standalone/.next/server/chunks/9590.js +68 -18
  270. package/.next/standalone/.next/server/chunks/9824.js +98 -98
  271. package/.next/standalone/.next/server/chunks/9826.js +1 -0
  272. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  273. package/.next/standalone/.next/server/middleware.js +486 -415
  274. package/.next/standalone/.next/server/pages/404.html +2 -2
  275. package/.next/standalone/.next/server/pages/500.html +1 -1
  276. package/.next/standalone/.next/server/preview-props.json +3 -3
  277. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  278. package/.next/standalone/.next/static/chunks/{1395-a340fb0a345382a4.js → 1395-e4a99912b8f83044.js} +13 -1
  279. package/.next/standalone/.next/static/chunks/app/_global-error/{page-36cb8b428b38b26a.js → page-6fc5f8e744c81802.js} +1 -1
  280. package/.next/standalone/.next/static/chunks/app/api/v1/access/[identity]/{route-36cb8b428b38b26a.js → route-6fc5f8e744c81802.js} +1 -1
  281. package/.next/standalone/.next/static/chunks/app/api/v1/access/{route-36cb8b428b38b26a.js → route-6fc5f8e744c81802.js} +1 -1
  282. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/compact/{route-36cb8b428b38b26a.js → route-6fc5f8e744c81802.js} +1 -1
  283. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/display-filters/route-6fc5f8e744c81802.js +17 -0
  284. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/route-6fc5f8e744c81802.js +17 -0
  285. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/thread/route-6fc5f8e744c81802.js +17 -0
  286. package/.next/standalone/.next/static/chunks/app/api/v1/agents/route-6fc5f8e744c81802.js +17 -0
  287. package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/[hostname]/route-6fc5f8e744c81802.js +17 -0
  288. package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/route-6fc5f8e744c81802.js +17 -0
  289. package/.next/standalone/.next/static/chunks/app/api/v1/artifacts/lifecycle/route-6fc5f8e744c81802.js +17 -0
  290. package/.next/standalone/.next/static/chunks/app/api/v1/attachments/files/route-6fc5f8e744c81802.js +17 -0
  291. package/.next/standalone/.next/static/chunks/app/api/v1/attachments/images/route-6fc5f8e744c81802.js +17 -0
  292. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/chats/route-6fc5f8e744c81802.js +17 -0
  293. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/[remote_jid]/route-6fc5f8e744c81802.js +17 -0
  294. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/route-6fc5f8e744c81802.js +17 -0
  295. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/lookup/route-6fc5f8e744c81802.js +17 -0
  296. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/pair/route-6fc5f8e744c81802.js +17 -0
  297. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/route-6fc5f8e744c81802.js +17 -0
  298. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/[route_id]/route-6fc5f8e744c81802.js +17 -0
  299. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/route-6fc5f8e744c81802.js +17 -0
  300. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/status/route-6fc5f8e744c81802.js +17 -0
  301. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/kinds/route-6fc5f8e744c81802.js +17 -0
  302. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/route-6fc5f8e744c81802.js +17 -0
  303. package/.next/standalone/.next/static/chunks/app/api/v1/builtin-tools/route-6fc5f8e744c81802.js +17 -0
  304. package/.next/standalone/.next/static/chunks/app/api/v1/config/route-6fc5f8e744c81802.js +17 -0
  305. package/.next/standalone/.next/static/chunks/app/api/v1/credentials/[id]/route-6fc5f8e744c81802.js +17 -0
  306. package/.next/standalone/.next/static/chunks/app/api/v1/credentials/route-6fc5f8e744c81802.js +17 -0
  307. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/currency/route-6fc5f8e744c81802.js +17 -0
  308. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/metrics/route-6fc5f8e744c81802.js +17 -0
  309. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing/route-6fc5f8e744c81802.js +17 -0
  310. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing-task/route-6fc5f8e744c81802.js +17 -0
  311. package/.next/standalone/.next/static/chunks/app/api/v1/delegations/codex/[job_id]/route-6fc5f8e744c81802.js +17 -0
  312. package/.next/standalone/.next/static/chunks/app/api/v1/documents/search/route-6fc5f8e744c81802.js +17 -0
  313. package/.next/standalone/.next/static/chunks/app/api/v1/documents/settings/route-6fc5f8e744c81802.js +17 -0
  314. package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/reindex/route-6fc5f8e744c81802.js +17 -0
  315. package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/route-6fc5f8e744c81802.js +17 -0
  316. package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/route-6fc5f8e744c81802.js +17 -0
  317. package/.next/standalone/.next/static/chunks/app/api/v1/env/route-6fc5f8e744c81802.js +17 -0
  318. package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/allowlist/route-6fc5f8e744c81802.js +17 -0
  319. package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/route-6fc5f8e744c81802.js +17 -0
  320. package/.next/standalone/.next/static/chunks/app/api/v1/events/route-6fc5f8e744c81802.js +17 -0
  321. package/.next/standalone/.next/static/chunks/app/api/v1/events/test/route-6fc5f8e744c81802.js +17 -0
  322. package/.next/standalone/.next/static/chunks/app/api/v1/extension/agents/route-6fc5f8e744c81802.js +17 -0
  323. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/activate/route-6fc5f8e744c81802.js +17 -0
  324. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/foreground/route-6fc5f8e744c81802.js +17 -0
  325. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/history/route-6fc5f8e744c81802.js +17 -0
  326. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/poll/route-6fc5f8e744c81802.js +17 -0
  327. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/progress/route-6fc5f8e744c81802.js +17 -0
  328. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/result/route-6fc5f8e744c81802.js +17 -0
  329. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/retry/route-6fc5f8e744c81802.js +17 -0
  330. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/status/route-6fc5f8e744c81802.js +17 -0
  331. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/tabs/route-6fc5f8e744c81802.js +17 -0
  332. package/.next/standalone/.next/static/chunks/app/api/v1/extension/fill/route-6fc5f8e744c81802.js +17 -0
  333. package/.next/standalone/.next/static/chunks/app/api/v1/extension/refine/route-6fc5f8e744c81802.js +17 -0
  334. package/.next/standalone/.next/static/chunks/app/api/v1/extension/turn/route-6fc5f8e744c81802.js +17 -0
  335. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/route-6fc5f8e744c81802.js +17 -0
  336. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/config/route-6fc5f8e744c81802.js +17 -0
  337. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/route-6fc5f8e744c81802.js +17 -0
  338. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/secrets/route-6fc5f8e744c81802.js +17 -0
  339. package/.next/standalone/.next/static/chunks/app/api/v1/files/[name]/route-6fc5f8e744c81802.js +17 -0
  340. package/.next/standalone/.next/static/chunks/app/api/v1/fs/browse/route-6fc5f8e744c81802.js +17 -0
  341. package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/[id]/route-6fc5f8e744c81802.js +17 -0
  342. package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/default/route-6fc5f8e744c81802.js +17 -0
  343. package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/route-6fc5f8e744c81802.js +17 -0
  344. package/.next/standalone/.next/static/chunks/app/api/v1/health/probes/route-6fc5f8e744c81802.js +17 -0
  345. package/.next/standalone/.next/static/chunks/app/api/v1/health/route-6fc5f8e744c81802.js +17 -0
  346. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/route-6fc5f8e744c81802.js +17 -0
  347. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/test/route-6fc5f8e744c81802.js +17 -0
  348. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/callback/route-6fc5f8e744c81802.js +17 -0
  349. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/start/route-6fc5f8e744c81802.js +17 -0
  350. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/status/route-6fc5f8e744c81802.js +17 -0
  351. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/callback/route-6fc5f8e744c81802.js +17 -0
  352. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/start/route-6fc5f8e744c81802.js +17 -0
  353. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/status/route-6fc5f8e744c81802.js +17 -0
  354. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/route-6fc5f8e744c81802.js +17 -0
  355. package/.next/standalone/.next/static/chunks/app/api/v1/lifecycle/adoption/route-6fc5f8e744c81802.js +17 -0
  356. package/.next/standalone/.next/static/chunks/app/api/v1/local-file/route-6fc5f8e744c81802.js +17 -0
  357. package/.next/standalone/.next/static/chunks/app/api/v1/logs/route-6fc5f8e744c81802.js +17 -0
  358. package/.next/standalone/.next/static/chunks/app/api/v1/maps/embed/route-6fc5f8e744c81802.js +17 -0
  359. package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/[name]/route-6fc5f8e744c81802.js +17 -0
  360. package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/registry/route-6fc5f8e744c81802.js +17 -0
  361. package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/route-6fc5f8e744c81802.js +17 -0
  362. package/.next/standalone/.next/static/chunks/app/api/v1/memory/[namespace]/[key]/route-6fc5f8e744c81802.js +17 -0
  363. package/.next/standalone/.next/static/chunks/app/api/v1/memory/policy/route-6fc5f8e744c81802.js +17 -0
  364. package/.next/standalone/.next/static/chunks/app/api/v1/memory/route-6fc5f8e744c81802.js +17 -0
  365. package/.next/standalone/.next/static/chunks/app/api/v1/memory/search/route-6fc5f8e744c81802.js +17 -0
  366. package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/compact-threads/route-6fc5f8e744c81802.js +17 -0
  367. package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/route-6fc5f8e744c81802.js +17 -0
  368. package/.next/standalone/.next/static/chunks/app/api/v1/models/route-6fc5f8e744c81802.js +17 -0
  369. package/.next/standalone/.next/static/chunks/app/api/v1/packages/catalog/route-6fc5f8e744c81802.js +17 -0
  370. package/.next/standalone/.next/static/chunks/app/api/v1/packages/defaults/[id]/route-6fc5f8e744c81802.js +17 -0
  371. package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/[id]/route-6fc5f8e744c81802.js +17 -0
  372. package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/route-6fc5f8e744c81802.js +17 -0
  373. package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/enabled/route-6fc5f8e744c81802.js +17 -0
  374. package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/route-6fc5f8e744c81802.js +17 -0
  375. package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/route-6fc5f8e744c81802.js +17 -0
  376. package/.next/standalone/.next/static/chunks/app/api/v1/packages/reload/route-6fc5f8e744c81802.js +17 -0
  377. package/.next/standalone/.next/static/chunks/app/api/v1/packages/route-6fc5f8e744c81802.js +17 -0
  378. package/.next/standalone/.next/static/chunks/app/api/v1/page-capture/route-6fc5f8e744c81802.js +17 -0
  379. package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/approve/route-6fc5f8e744c81802.js +17 -0
  380. package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/deny/route-6fc5f8e744c81802.js +17 -0
  381. package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/route-6fc5f8e744c81802.js +17 -0
  382. package/.next/standalone/.next/static/chunks/app/api/v1/profile/location/route-6fc5f8e744c81802.js +17 -0
  383. package/.next/standalone/.next/static/chunks/app/api/v1/profile/route-6fc5f8e744c81802.js +17 -0
  384. package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/models/route-6fc5f8e744c81802.js +17 -0
  385. package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/probe/route-6fc5f8e744c81802.js +17 -0
  386. package/.next/standalone/.next/static/chunks/app/api/v1/providers/github-copilot/auth/route-6fc5f8e744c81802.js +17 -0
  387. package/.next/standalone/.next/static/chunks/app/api/v1/providers/route-6fc5f8e744c81802.js +17 -0
  388. package/.next/standalone/.next/static/chunks/app/api/v1/proxy-config/route-6fc5f8e744c81802.js +17 -0
  389. package/.next/standalone/.next/static/chunks/app/api/v1/redaction/init/route-6fc5f8e744c81802.js +17 -0
  390. package/.next/standalone/.next/static/chunks/app/api/v1/redaction/route-6fc5f8e744c81802.js +17 -0
  391. package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/route-6fc5f8e744c81802.js +17 -0
  392. package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/run/route-6fc5f8e744c81802.js +17 -0
  393. package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/route-6fc5f8e744c81802.js +17 -0
  394. package/.next/standalone/.next/static/chunks/app/api/v1/security/idle-timeout/route-6fc5f8e744c81802.js +17 -0
  395. package/.next/standalone/.next/static/chunks/app/api/v1/security/pin/route-6fc5f8e744c81802.js +17 -0
  396. package/.next/standalone/.next/static/chunks/app/api/v1/security/state/route-6fc5f8e744c81802.js +17 -0
  397. package/.next/standalone/.next/static/chunks/app/api/v1/security/unlock/route-6fc5f8e744c81802.js +17 -0
  398. package/.next/standalone/.next/static/chunks/app/api/v1/security/verify-pin/route-6fc5f8e744c81802.js +17 -0
  399. package/.next/standalone/.next/static/chunks/app/api/v1/setup/test-key/route-6fc5f8e744c81802.js +17 -0
  400. package/.next/standalone/.next/static/chunks/app/api/v1/skills/[id]/route-6fc5f8e744c81802.js +17 -0
  401. package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/[id]/route-6fc5f8e744c81802.js +17 -0
  402. package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/route-6fc5f8e744c81802.js +17 -0
  403. package/.next/standalone/.next/static/chunks/app/api/v1/skills/route-6fc5f8e744c81802.js +17 -0
  404. package/.next/standalone/.next/static/chunks/app/api/v1/system/abort/route-6fc5f8e744c81802.js +17 -0
  405. package/.next/standalone/.next/static/chunks/app/api/v1/system/restart/route-6fc5f8e744c81802.js +17 -0
  406. package/.next/standalone/.next/static/chunks/app/api/v1/tailscale/route-6fc5f8e744c81802.js +17 -0
  407. package/.next/standalone/.next/static/chunks/app/api/v1/tasks/[agent_id]/route-6fc5f8e744c81802.js +17 -0
  408. package/.next/standalone/.next/static/chunks/app/api/v1/tasks/route-6fc5f8e744c81802.js +17 -0
  409. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/activity/route-6fc5f8e744c81802.js +17 -0
  410. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/context-pin/route-6fc5f8e744c81802.js +17 -0
  411. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/route-6fc5f8e744c81802.js +17 -0
  412. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/run/route-6fc5f8e744c81802.js +17 -0
  413. package/.next/standalone/.next/static/chunks/app/api/v1/threads/route-6fc5f8e744c81802.js +17 -0
  414. package/.next/standalone/.next/static/chunks/app/api/v1/tools/route-6fc5f8e744c81802.js +17 -0
  415. package/.next/standalone/.next/static/chunks/app/api/v1/update/apply/route-6fc5f8e744c81802.js +17 -0
  416. package/.next/standalone/.next/static/chunks/app/api/v1/update/route-6fc5f8e744c81802.js +17 -0
  417. package/.next/standalone/.next/static/chunks/app/api/v1/voice/transcribe/route-6fc5f8e744c81802.js +17 -0
  418. package/.next/standalone/.next/static/chunks/app/api/v1/voice/tts/route-6fc5f8e744c81802.js +17 -0
  419. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/route-6fc5f8e744c81802.js +17 -0
  420. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/run/route-6fc5f8e744c81802.js +17 -0
  421. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/reaction-scripts/route-6fc5f8e744c81802.js +17 -0
  422. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/route-6fc5f8e744c81802.js +17 -0
  423. package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-6fc5f8e744c81802.js +17 -0
  424. package/.next/standalone/.next/static/chunks/app/{page-7017f07f8a7a083c.js → page-04748847c6ff866f.js} +1013 -585
  425. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-6fc5f8e744c81802.js +17 -0
  426. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-6fc5f8e744c81802.js +17 -0
  427. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-6fc5f8e744c81802.js +17 -0
  428. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6fc5f8e744c81802.js +17 -0
  429. package/.next/standalone/.next/static/css/{d80058f0b9b41c09.css → 2669e8744cc8c212.css} +2 -2
  430. package/.next/standalone/docs/adoption/changesets.json +358 -0
  431. package/.next/standalone/lib/skills/builtins/memory-organization/SKILL.md +16 -0
  432. package/.next/standalone/package.json +3 -3
  433. package/CHANGELOG.md +44 -0
  434. package/api/client.ts +9 -0
  435. package/api/types.ts +29 -0
  436. package/app/api/v1/lifecycle/adoption/route.ts +14 -2
  437. package/app/api/v1/models/[name]/compact-threads/route.ts +14 -11
  438. package/app/api/v1/threads/[thread_id]/activity/route.ts +19 -0
  439. package/app/api/v1/threads/[thread_id]/context-pin/route.test.ts +1 -0
  440. package/app/api/v1/threads/[thread_id]/context-pin/route.ts +2 -1
  441. package/app/api/v1/threads/[thread_id]/route.ts +5 -1
  442. package/app/api/v1/threads/[thread_id]/run/route.ts +0 -1
  443. package/components/chat/ChatView.tsx +52 -11
  444. package/components/chat/ContextBoundary.test.tsx +68 -1
  445. package/components/chat/ContextBoundary.tsx +92 -13
  446. package/components/chat/MessageBubble.tsx +12 -0
  447. package/components/chat/MessageList.test.tsx +31 -0
  448. package/components/chat/MessageList.tsx +49 -28
  449. package/components/chat/ToolList.test.tsx +92 -16
  450. package/components/chat/ToolList.tsx +59 -4
  451. package/components/chat/chat-helpers.test.tsx +24 -1
  452. package/components/chat/chat-helpers.ts +47 -4
  453. package/components/chat/useThreadActivity.test.tsx +113 -0
  454. package/components/chat/useThreadActivity.ts +94 -0
  455. package/components/chat/useThreadData.ts +16 -16
  456. package/components/chat/workflow-step-retry.ts +25 -0
  457. package/components/integrations/NetworkSection.tsx +2 -2
  458. package/components/ui/BootScreen.tsx +17 -0
  459. package/components/ui/WorkflowChecklist.tsx +71 -33
  460. package/hooks/useSSE.ts +28 -3
  461. package/lib/agents/citation-checker.test.ts +40 -2
  462. package/lib/agents/citation-checker.ts +56 -11
  463. package/lib/agents/compaction-pipeline.test.ts +202 -0
  464. package/lib/agents/compaction-pipeline.ts +483 -0
  465. package/lib/agents/context-boundary.ts +5 -6
  466. package/lib/agents/conversation-summary.ts +37 -21
  467. package/lib/agents/instruction-edits.test.ts +120 -0
  468. package/lib/agents/instruction-edits.ts +65 -42
  469. package/lib/agents/prepare/history-window.test.ts +18 -0
  470. package/lib/agents/prepare/history-window.ts +11 -2
  471. package/lib/agents/prepare/request.ts +4 -2
  472. package/lib/agents/prepare/system-prompt.test.ts +49 -0
  473. package/lib/agents/prepare/system-prompt.ts +16 -5
  474. package/lib/agents/prompt-registry.test.ts +5 -140
  475. package/lib/agents/prompt-registry.ts +45 -1
  476. package/lib/agents/prompt-variants.ts +146 -0
  477. package/lib/agents/proposals.test.ts +76 -0
  478. package/lib/agents/proposals.ts +13 -5
  479. package/lib/agents/run-registry.test.ts +22 -0
  480. package/lib/agents/run-registry.ts +29 -0
  481. package/lib/agents/run-thread.auto-boundary.test.ts +125 -5
  482. package/lib/agents/run-thread.retry.test.ts +67 -1
  483. package/lib/agents/run-thread.ts +110 -10
  484. package/lib/agents/sqlite-checkpoint-saver.test.ts +91 -0
  485. package/lib/agents/thread-activity.test.ts +31 -0
  486. package/lib/agents/thread-activity.ts +27 -0
  487. package/lib/agents/thread-compaction-state.test.ts +82 -0
  488. package/lib/agents/thread-compaction-state.ts +121 -0
  489. package/lib/agents/thread-compaction.test.ts +83 -4
  490. package/lib/agents/thread-compaction.ts +34 -11
  491. package/lib/agents/warm-summary-background.test.ts +219 -5
  492. package/lib/agents/warm-summary-background.ts +346 -143
  493. package/lib/agents/warm-topics.test.ts +191 -0
  494. package/lib/agents/warm-topics.ts +317 -0
  495. package/lib/agents/workflow-step-retry.test.ts +96 -0
  496. package/lib/agents/workflow-step-retry.ts +216 -0
  497. package/lib/api/browser-control.ts +0 -3
  498. package/lib/bridges/dispatcher.ts +1 -0
  499. package/lib/bridges/message-role.test.ts +81 -0
  500. package/lib/bridges/message-role.ts +23 -10
  501. package/lib/bridges/types.ts +6 -0
  502. package/lib/bridges/whatsapp-link.test.ts +32 -0
  503. package/lib/bridges/whatsapp-link.ts +21 -0
  504. package/lib/bridges/whatsapp.inbound.test.ts +239 -0
  505. package/lib/bridges/whatsapp.sender.test.ts +80 -1
  506. package/lib/bridges/whatsapp.ts +76 -38
  507. package/lib/db/migrations.ts +5 -0
  508. package/lib/env/config.ts +2 -0
  509. package/lib/env/schema.ts +12 -0
  510. package/lib/lifecycle/changeset-build.test.ts +93 -0
  511. package/lib/lifecycle/changeset-build.ts +210 -0
  512. package/lib/lifecycle/changesets.test.ts +101 -0
  513. package/lib/lifecycle/changesets.ts +166 -0
  514. package/lib/lifecycle/surface-collect.test.ts +88 -0
  515. package/lib/lifecycle/surface-collect.ts +64 -0
  516. package/lib/lifecycle/surface-snapshot.test.ts +104 -0
  517. package/lib/lifecycle/surface-snapshot.ts +210 -0
  518. package/lib/memory/record.ts +0 -2
  519. package/lib/pricing/snapshot.test.ts +70 -0
  520. package/lib/pricing/snapshot.ts +10 -2
  521. package/lib/providers/external.ts +0 -2
  522. package/lib/proxy/dispatcher.test.ts +119 -1
  523. package/lib/proxy/dispatcher.ts +22 -9
  524. package/lib/skills/builtins/memory-organization/SKILL.md +16 -0
  525. package/lib/stores/agent-configs.ts +10 -5
  526. package/lib/stores/bridges.test.ts +81 -0
  527. package/lib/stores/bridges.ts +9 -8
  528. package/lib/stores/proxy-config.test.ts +120 -0
  529. package/lib/stores/proxy-config.ts +22 -4
  530. package/lib/stores/threads.test.ts +9 -0
  531. package/lib/stores/threads.ts +33 -19
  532. package/lib/stores/version-adoption.test.ts +96 -0
  533. package/lib/stores/version-adoption.ts +239 -26
  534. package/lib/stores/workflow-progress.ts +3 -0
  535. package/lib/tools/communications/calendar.test.ts +43 -2
  536. package/lib/tools/communications/calendar.ts +2 -0
  537. package/lib/tools/communications/gmail.test.ts +51 -1
  538. package/lib/tools/communications/gmail.ts +44 -2
  539. package/lib/tools/communications/ms-todo.ts +0 -7
  540. package/lib/tools/communications/outlook-calendar.ts +2 -0
  541. package/lib/tools/communications/outlook.test.ts +33 -2
  542. package/lib/tools/communications/outlook.ts +2 -0
  543. package/lib/tools/filesystem/edit-match.test.ts +133 -0
  544. package/lib/tools/filesystem/edit-match.ts +7 -2
  545. package/lib/tools/general/memory.ts +1 -1
  546. package/lib/tools/general/workflow-progress.ts +2 -0
  547. package/lib/tools/runtime/catalog.ts +1 -25
  548. package/lib/tools/support/result-refs.test.ts +131 -0
  549. package/lib/tools/support/result-refs.ts +41 -9
  550. package/lib/triggers/registry.ts +0 -4
  551. package/lib/utils/source-link.test.ts +51 -0
  552. package/lib/utils/source-link.ts +45 -0
  553. package/package.json +3 -3
  554. package/scripts/install-to-system.ps1 +39 -11
  555. package/scripts/install-to-system.sh +37 -3
  556. package/.next/standalone/.next/server/chunks/3979.js +0 -581
  557. package/.next/standalone/.next/server/chunks/5936.js +0 -594
  558. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/display-filters/route-36cb8b428b38b26a.js +0 -17
  559. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/route-36cb8b428b38b26a.js +0 -17
  560. package/.next/standalone/.next/static/chunks/app/api/v1/agents/[id]/thread/route-36cb8b428b38b26a.js +0 -17
  561. package/.next/standalone/.next/static/chunks/app/api/v1/agents/route-36cb8b428b38b26a.js +0 -17
  562. package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/[hostname]/route-36cb8b428b38b26a.js +0 -17
  563. package/.next/standalone/.next/static/chunks/app/api/v1/allowed-sites/route-36cb8b428b38b26a.js +0 -17
  564. package/.next/standalone/.next/static/chunks/app/api/v1/artifacts/lifecycle/route-36cb8b428b38b26a.js +0 -17
  565. package/.next/standalone/.next/static/chunks/app/api/v1/attachments/files/route-36cb8b428b38b26a.js +0 -17
  566. package/.next/standalone/.next/static/chunks/app/api/v1/attachments/images/route-36cb8b428b38b26a.js +0 -17
  567. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/chats/route-36cb8b428b38b26a.js +0 -17
  568. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/[remote_jid]/route-36cb8b428b38b26a.js +0 -17
  569. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/ignores/route-36cb8b428b38b26a.js +0 -17
  570. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/lookup/route-36cb8b428b38b26a.js +0 -17
  571. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/pair/route-36cb8b428b38b26a.js +0 -17
  572. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/route-36cb8b428b38b26a.js +0 -17
  573. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/[route_id]/route-36cb8b428b38b26a.js +0 -17
  574. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/routes/route-36cb8b428b38b26a.js +0 -17
  575. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/[id]/status/route-36cb8b428b38b26a.js +0 -17
  576. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/kinds/route-36cb8b428b38b26a.js +0 -17
  577. package/.next/standalone/.next/static/chunks/app/api/v1/bridges/route-36cb8b428b38b26a.js +0 -17
  578. package/.next/standalone/.next/static/chunks/app/api/v1/builtin-tools/route-36cb8b428b38b26a.js +0 -17
  579. package/.next/standalone/.next/static/chunks/app/api/v1/config/route-36cb8b428b38b26a.js +0 -17
  580. package/.next/standalone/.next/static/chunks/app/api/v1/credentials/[id]/route-36cb8b428b38b26a.js +0 -17
  581. package/.next/standalone/.next/static/chunks/app/api/v1/credentials/route-36cb8b428b38b26a.js +0 -17
  582. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/currency/route-36cb8b428b38b26a.js +0 -17
  583. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/metrics/route-36cb8b428b38b26a.js +0 -17
  584. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing/route-36cb8b428b38b26a.js +0 -17
  585. package/.next/standalone/.next/static/chunks/app/api/v1/dashboard/pricing-task/route-36cb8b428b38b26a.js +0 -17
  586. package/.next/standalone/.next/static/chunks/app/api/v1/delegations/codex/[job_id]/route-36cb8b428b38b26a.js +0 -17
  587. package/.next/standalone/.next/static/chunks/app/api/v1/documents/search/route-36cb8b428b38b26a.js +0 -17
  588. package/.next/standalone/.next/static/chunks/app/api/v1/documents/settings/route-36cb8b428b38b26a.js +0 -17
  589. package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/reindex/route-36cb8b428b38b26a.js +0 -17
  590. package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/[id]/route-36cb8b428b38b26a.js +0 -17
  591. package/.next/standalone/.next/static/chunks/app/api/v1/documents/sources/route-36cb8b428b38b26a.js +0 -17
  592. package/.next/standalone/.next/static/chunks/app/api/v1/env/route-36cb8b428b38b26a.js +0 -17
  593. package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/allowlist/route-36cb8b428b38b26a.js +0 -17
  594. package/.next/standalone/.next/static/chunks/app/api/v1/env-sync/route-36cb8b428b38b26a.js +0 -17
  595. package/.next/standalone/.next/static/chunks/app/api/v1/events/route-36cb8b428b38b26a.js +0 -17
  596. package/.next/standalone/.next/static/chunks/app/api/v1/events/test/route-36cb8b428b38b26a.js +0 -17
  597. package/.next/standalone/.next/static/chunks/app/api/v1/extension/agents/route-36cb8b428b38b26a.js +0 -17
  598. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/activate/route-36cb8b428b38b26a.js +0 -17
  599. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/foreground/route-36cb8b428b38b26a.js +0 -17
  600. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/history/route-36cb8b428b38b26a.js +0 -17
  601. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/poll/route-36cb8b428b38b26a.js +0 -17
  602. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/progress/route-36cb8b428b38b26a.js +0 -17
  603. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/result/route-36cb8b428b38b26a.js +0 -17
  604. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/retry/route-36cb8b428b38b26a.js +0 -17
  605. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/status/route-36cb8b428b38b26a.js +0 -17
  606. package/.next/standalone/.next/static/chunks/app/api/v1/extension/browser/tabs/route-36cb8b428b38b26a.js +0 -17
  607. package/.next/standalone/.next/static/chunks/app/api/v1/extension/fill/route-36cb8b428b38b26a.js +0 -17
  608. package/.next/standalone/.next/static/chunks/app/api/v1/extension/refine/route-36cb8b428b38b26a.js +0 -17
  609. package/.next/standalone/.next/static/chunks/app/api/v1/extension/turn/route-36cb8b428b38b26a.js +0 -17
  610. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/route-36cb8b428b38b26a.js +0 -17
  611. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/config/route-36cb8b428b38b26a.js +0 -17
  612. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/route-36cb8b428b38b26a.js +0 -17
  613. package/.next/standalone/.next/static/chunks/app/api/v1/extensions/tools/[name]/secrets/route-36cb8b428b38b26a.js +0 -17
  614. package/.next/standalone/.next/static/chunks/app/api/v1/files/[name]/route-36cb8b428b38b26a.js +0 -17
  615. package/.next/standalone/.next/static/chunks/app/api/v1/fs/browse/route-36cb8b428b38b26a.js +0 -17
  616. package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/[id]/route-36cb8b428b38b26a.js +0 -17
  617. package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/default/route-36cb8b428b38b26a.js +0 -17
  618. package/.next/standalone/.next/static/chunks/app/api/v1/harnesses/route-36cb8b428b38b26a.js +0 -17
  619. package/.next/standalone/.next/static/chunks/app/api/v1/health/probes/route-36cb8b428b38b26a.js +0 -17
  620. package/.next/standalone/.next/static/chunks/app/api/v1/health/route-36cb8b428b38b26a.js +0 -17
  621. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/route-36cb8b428b38b26a.js +0 -17
  622. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/[name]/test/route-36cb8b428b38b26a.js +0 -17
  623. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/callback/route-36cb8b428b38b26a.js +0 -17
  624. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/start/route-36cb8b428b38b26a.js +0 -17
  625. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/gmail/oauth/status/route-36cb8b428b38b26a.js +0 -17
  626. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/callback/route-36cb8b428b38b26a.js +0 -17
  627. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/start/route-36cb8b428b38b26a.js +0 -17
  628. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/outlook/oauth/status/route-36cb8b428b38b26a.js +0 -17
  629. package/.next/standalone/.next/static/chunks/app/api/v1/integrations/route-36cb8b428b38b26a.js +0 -17
  630. package/.next/standalone/.next/static/chunks/app/api/v1/lifecycle/adoption/route-36cb8b428b38b26a.js +0 -17
  631. package/.next/standalone/.next/static/chunks/app/api/v1/local-file/route-36cb8b428b38b26a.js +0 -17
  632. package/.next/standalone/.next/static/chunks/app/api/v1/logs/route-36cb8b428b38b26a.js +0 -17
  633. package/.next/standalone/.next/static/chunks/app/api/v1/maps/embed/route-36cb8b428b38b26a.js +0 -17
  634. package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/[name]/route-36cb8b428b38b26a.js +0 -17
  635. package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/registry/route-36cb8b428b38b26a.js +0 -17
  636. package/.next/standalone/.next/static/chunks/app/api/v1/mcp-servers/route-36cb8b428b38b26a.js +0 -17
  637. package/.next/standalone/.next/static/chunks/app/api/v1/memory/[namespace]/[key]/route-36cb8b428b38b26a.js +0 -17
  638. package/.next/standalone/.next/static/chunks/app/api/v1/memory/policy/route-36cb8b428b38b26a.js +0 -17
  639. package/.next/standalone/.next/static/chunks/app/api/v1/memory/route-36cb8b428b38b26a.js +0 -17
  640. package/.next/standalone/.next/static/chunks/app/api/v1/memory/search/route-36cb8b428b38b26a.js +0 -17
  641. package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/compact-threads/route-36cb8b428b38b26a.js +0 -17
  642. package/.next/standalone/.next/static/chunks/app/api/v1/models/[name]/route-36cb8b428b38b26a.js +0 -17
  643. package/.next/standalone/.next/static/chunks/app/api/v1/models/route-36cb8b428b38b26a.js +0 -17
  644. package/.next/standalone/.next/static/chunks/app/api/v1/packages/catalog/route-36cb8b428b38b26a.js +0 -17
  645. package/.next/standalone/.next/static/chunks/app/api/v1/packages/defaults/[id]/route-36cb8b428b38b26a.js +0 -17
  646. package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/[id]/route-36cb8b428b38b26a.js +0 -17
  647. package/.next/standalone/.next/static/chunks/app/api/v1/packages/install/route-36cb8b428b38b26a.js +0 -17
  648. package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/enabled/route-36cb8b428b38b26a.js +0 -17
  649. package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/[name]/route-36cb8b428b38b26a.js +0 -17
  650. package/.next/standalone/.next/static/chunks/app/api/v1/packages/manifests/route-36cb8b428b38b26a.js +0 -17
  651. package/.next/standalone/.next/static/chunks/app/api/v1/packages/reload/route-36cb8b428b38b26a.js +0 -17
  652. package/.next/standalone/.next/static/chunks/app/api/v1/packages/route-36cb8b428b38b26a.js +0 -17
  653. package/.next/standalone/.next/static/chunks/app/api/v1/page-capture/route-36cb8b428b38b26a.js +0 -17
  654. package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/approve/route-36cb8b428b38b26a.js +0 -17
  655. package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/[id]/deny/route-36cb8b428b38b26a.js +0 -17
  656. package/.next/standalone/.next/static/chunks/app/api/v1/pending-actions/route-36cb8b428b38b26a.js +0 -17
  657. package/.next/standalone/.next/static/chunks/app/api/v1/profile/location/route-36cb8b428b38b26a.js +0 -17
  658. package/.next/standalone/.next/static/chunks/app/api/v1/profile/route-36cb8b428b38b26a.js +0 -17
  659. package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/models/route-36cb8b428b38b26a.js +0 -17
  660. package/.next/standalone/.next/static/chunks/app/api/v1/providers/[provider]/probe/route-36cb8b428b38b26a.js +0 -17
  661. package/.next/standalone/.next/static/chunks/app/api/v1/providers/github-copilot/auth/route-36cb8b428b38b26a.js +0 -17
  662. package/.next/standalone/.next/static/chunks/app/api/v1/providers/route-36cb8b428b38b26a.js +0 -17
  663. package/.next/standalone/.next/static/chunks/app/api/v1/proxy-config/route-36cb8b428b38b26a.js +0 -17
  664. package/.next/standalone/.next/static/chunks/app/api/v1/redaction/init/route-36cb8b428b38b26a.js +0 -17
  665. package/.next/standalone/.next/static/chunks/app/api/v1/redaction/route-36cb8b428b38b26a.js +0 -17
  666. package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/route-36cb8b428b38b26a.js +0 -17
  667. package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/[id]/run/route-36cb8b428b38b26a.js +0 -17
  668. package/.next/standalone/.next/static/chunks/app/api/v1/scheduled-tasks/route-36cb8b428b38b26a.js +0 -17
  669. package/.next/standalone/.next/static/chunks/app/api/v1/security/idle-timeout/route-36cb8b428b38b26a.js +0 -17
  670. package/.next/standalone/.next/static/chunks/app/api/v1/security/pin/route-36cb8b428b38b26a.js +0 -17
  671. package/.next/standalone/.next/static/chunks/app/api/v1/security/state/route-36cb8b428b38b26a.js +0 -17
  672. package/.next/standalone/.next/static/chunks/app/api/v1/security/unlock/route-36cb8b428b38b26a.js +0 -17
  673. package/.next/standalone/.next/static/chunks/app/api/v1/security/verify-pin/route-36cb8b428b38b26a.js +0 -17
  674. package/.next/standalone/.next/static/chunks/app/api/v1/setup/test-key/route-36cb8b428b38b26a.js +0 -17
  675. package/.next/standalone/.next/static/chunks/app/api/v1/skills/[id]/route-36cb8b428b38b26a.js +0 -17
  676. package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/[id]/route-36cb8b428b38b26a.js +0 -17
  677. package/.next/standalone/.next/static/chunks/app/api/v1/skills/repos/route-36cb8b428b38b26a.js +0 -17
  678. package/.next/standalone/.next/static/chunks/app/api/v1/skills/route-36cb8b428b38b26a.js +0 -17
  679. package/.next/standalone/.next/static/chunks/app/api/v1/system/abort/route-36cb8b428b38b26a.js +0 -17
  680. package/.next/standalone/.next/static/chunks/app/api/v1/system/restart/route-36cb8b428b38b26a.js +0 -17
  681. package/.next/standalone/.next/static/chunks/app/api/v1/tailscale/route-36cb8b428b38b26a.js +0 -17
  682. package/.next/standalone/.next/static/chunks/app/api/v1/tasks/[agent_id]/route-36cb8b428b38b26a.js +0 -17
  683. package/.next/standalone/.next/static/chunks/app/api/v1/tasks/route-36cb8b428b38b26a.js +0 -17
  684. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/context-pin/route-36cb8b428b38b26a.js +0 -17
  685. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/route-36cb8b428b38b26a.js +0 -17
  686. package/.next/standalone/.next/static/chunks/app/api/v1/threads/[thread_id]/run/route-36cb8b428b38b26a.js +0 -17
  687. package/.next/standalone/.next/static/chunks/app/api/v1/threads/route-36cb8b428b38b26a.js +0 -17
  688. package/.next/standalone/.next/static/chunks/app/api/v1/tools/route-36cb8b428b38b26a.js +0 -17
  689. package/.next/standalone/.next/static/chunks/app/api/v1/update/apply/route-36cb8b428b38b26a.js +0 -17
  690. package/.next/standalone/.next/static/chunks/app/api/v1/update/route-36cb8b428b38b26a.js +0 -17
  691. package/.next/standalone/.next/static/chunks/app/api/v1/voice/transcribe/route-36cb8b428b38b26a.js +0 -17
  692. package/.next/standalone/.next/static/chunks/app/api/v1/voice/tts/route-36cb8b428b38b26a.js +0 -17
  693. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/route-36cb8b428b38b26a.js +0 -17
  694. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/[id]/run/route-36cb8b428b38b26a.js +0 -17
  695. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/reaction-scripts/route-36cb8b428b38b26a.js +0 -17
  696. package/.next/standalone/.next/static/chunks/app/api/v1/watchers/route-36cb8b428b38b26a.js +0 -17
  697. package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-36cb8b428b38b26a.js +0 -17
  698. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-36cb8b428b38b26a.js +0 -17
  699. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-36cb8b428b38b26a.js +0 -17
  700. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-36cb8b428b38b26a.js +0 -17
  701. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-36cb8b428b38b26a.js +0 -17
  702. /package/.next/standalone/.next/static/{NUrC9xax1sp1Q70nlFqS6 → hwujW4hR1b-r3k5WdMxZO}/_buildManifest.js +0 -0
  703. /package/.next/standalone/.next/static/{NUrC9xax1sp1Q70nlFqS6 → hwujW4hR1b-r3k5WdMxZO}/_ssgManifest.js +0 -0
@@ -694,7 +694,7 @@ class SigninClient extends client/* Client */.K {
694
694
  }
695
695
 
696
696
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js + 2 modules
697
- var client_command_builder = __webpack_require__(74789);
697
+ var client_command_builder = __webpack_require__(97170);
698
698
  ;// ./node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commandBuilder.js
699
699
 
700
700
 
@@ -78,7 +78,7 @@ function buildNativeClass(nativeCrc32) {
78
78
  }
79
79
 
80
80
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/transport/hasOwn.js
81
- var hasOwn = __webpack_require__(75073);
81
+ var hasOwn = __webpack_require__(97454);
82
82
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/serde/util-hex-encoding/hex-encoding.js
83
83
  var hex_encoding = __webpack_require__(38107);
84
84
  ;// ./node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/Int64.js
@@ -202,58 +202,79 @@ function containsText(source, needle, ignoreCase) {
202
202
  if (!ignoreCase) return source.includes(needle);
203
203
  return source.toLowerCase().includes(needle.toLowerCase());
204
204
  }
205
- function dedupeLines(source, opts) {
206
- const lines = source.split(/\r?\n/);
207
- const keyed = lines.map((line)=>{
208
- const normalized = opts.trim ? line.trim() : line;
209
- return opts.ignoreCase ? normalized.toLowerCase() : normalized;
210
- });
211
- const keep = new Set();
212
- const visit = opts.keep === "first" ? [
213
- ...keyed.keys()
214
- ] : [
215
- ...keyed.keys()
205
+ const FENCE_RE = /^\s{0,3}(`{3,}|~{3,})/;
206
+ const HORIZONTAL_RULE_RE = /^\s{0,3}([-*_])(?:\s*\1){2,}\s*$/;
207
+ /**
208
+ * Drop duplicate segments from `parts`, which alternates content (even
209
+ * indexes) and the original separator that follows it (odd indexes).
210
+ * Separators are preserved verbatim, so only removed segments change the
211
+ * text. `keyOf` returns null for a segment that must always be kept.
212
+ */ function dedupeSegments(parts, keyOf, keep) {
213
+ const contentIdx = parts.map((_, i)=>i).filter((i)=>i % 2 === 0);
214
+ const visit = keep === "first" ? contentIdx : [
215
+ ...contentIdx
216
216
  ].reverse();
217
217
  const seen = new Set();
218
+ const dropped = new Set();
218
219
  for (const idx of visit){
219
- const key = keyed[idx];
220
- if (opts.skipBlank && key.length === 0) {
221
- keep.add(idx);
222
- continue;
223
- }
224
- if (seen.has(key)) continue;
225
- seen.add(key);
226
- keep.add(idx);
220
+ const key = keyOf(idx);
221
+ if (key === null) continue;
222
+ if (seen.has(key)) dropped.add(idx);
223
+ else seen.add(key);
224
+ }
225
+ if (dropped.size === 0) return {
226
+ text: parts.join(""),
227
+ removed: 0
228
+ };
229
+ let text = "";
230
+ let emitted = false;
231
+ for (const idx of contentIdx){
232
+ if (dropped.has(idx)) continue;
233
+ if (emitted && idx > 0) text += parts[idx - 1];
234
+ text += parts[idx];
235
+ emitted = true;
227
236
  }
228
- const next = lines.filter((_, idx)=>keep.has(idx));
229
237
  return {
230
- text: next.join("\n"),
231
- removed: lines.length - next.length
238
+ text,
239
+ removed: dropped.size
232
240
  };
233
241
  }
242
+ function dedupeLines(source, opts) {
243
+ const parts = source.split(/(\r?\n)/);
244
+ // Fence markers, fenced code and horizontal rules repeat by design; a
245
+ // closing ``` is always a "duplicate" of the opening one.
246
+ const protectedIdx = new Set();
247
+ let fence = null;
248
+ for(let i = 0; i < parts.length; i += 2){
249
+ const marker = FENCE_RE.exec(parts[i])?.[1];
250
+ if (fence !== null) {
251
+ protectedIdx.add(i);
252
+ if (marker && marker[0] === fence[0] && marker.length >= fence.length && /^\s*[`~]+\s*$/.test(parts[i])) fence = null;
253
+ } else if (marker) {
254
+ protectedIdx.add(i);
255
+ fence = marker;
256
+ } else if (HORIZONTAL_RULE_RE.test(parts[i])) {
257
+ protectedIdx.add(i);
258
+ }
259
+ }
260
+ return dedupeSegments(parts, (i)=>{
261
+ if (protectedIdx.has(i)) return null;
262
+ const normalized = opts.trim ? parts[i].trim() : parts[i];
263
+ if (opts.skipBlank && normalized.length === 0) return null;
264
+ return opts.ignoreCase ? normalized.toLowerCase() : normalized;
265
+ }, opts.keep);
266
+ }
234
267
  function dedupeParagraphs(source, opts) {
235
- const paragraphs = source.split(/\n\s*\n/).map((p)=>p.trim()).filter((p)=>p.length > 0);
236
- const keys = paragraphs.map((p)=>{
237
- const base = opts.trim ? p.trim() : p;
268
+ const tail = /\s*$/.exec(source)?.[0] ?? "";
269
+ const parts = source.slice(0, source.length - tail.length).split(/(\r?\n(?:[ \t]*\r?\n)+)/);
270
+ const out = dedupeSegments(parts, (i)=>{
271
+ if (parts[i].trim().length === 0) return null;
272
+ const base = opts.trim ? parts[i].trim() : parts[i];
238
273
  return opts.ignoreCase ? base.toLowerCase() : base;
239
- });
240
- const keep = new Set();
241
- const visit = opts.keep === "first" ? [
242
- ...keys.keys()
243
- ] : [
244
- ...keys.keys()
245
- ].reverse();
246
- const seen = new Set();
247
- for (const idx of visit){
248
- const key = keys[idx];
249
- if (seen.has(key)) continue;
250
- seen.add(key);
251
- keep.add(idx);
252
- }
253
- const next = paragraphs.filter((_, idx)=>keep.has(idx));
274
+ }, opts.keep);
254
275
  return {
255
- text: next.join("\n\n"),
256
- removed: paragraphs.length - next.length
276
+ text: out.text + tail,
277
+ removed: out.removed
257
278
  };
258
279
  }
259
280
 
@@ -468,6 +468,7 @@ const PRICE_LINE_RE = new RegExp([
468
468
  String.raw`\$\s*\d+(?:\.\d+)?\s*(?:/|per)\s*(?:image|minute|request)`
469
469
  ].join("|"), "gi");
470
470
  const GOOGLE_RESULT_RE = /href="\/url\?q=([^"&]+)[^"]*"/gi;
471
+ const GOOGLE_OWN_HOST_RE = /^(?:www|accounts|support|maps|policies|webcache)?\.?google\.[a-z.]+$/i;
471
472
  function toCanonicalProvider(id) {
472
473
  const lower = id.toLowerCase();
473
474
  if (lower.includes("google") || lower.includes("gemini")) return "google";
@@ -499,7 +500,8 @@ async function refreshPricingSnapshot(opts) {
499
500
  const existing = await readPricingSnapshot();
500
501
  if (!force && existing) {
501
502
  const ageDays = (Date.now() - Date.parse(existing.generated_at)) / (24 * 60 * 60 * 1000);
502
- if (Number.isFinite(ageDays) && ageDays < ttlDays) {
503
+ // A future generated_at (clock skew, copied snapshot) must not pin the cache as fresh.
504
+ if (Number.isFinite(ageDays) && ageDays >= 0 && ageDays < ttlDays) {
503
505
  return {
504
506
  refreshed: false,
505
507
  reason: "fresh",
@@ -636,6 +638,8 @@ function parseGoogleResultLinks(html) {
636
638
  const out = [];
637
639
  const seen = new Set();
638
640
  let m;
641
+ // Shared /g regex: an early break leaves lastIndex mid-string for the next page.
642
+ GOOGLE_RESULT_RE.lastIndex = 0;
639
643
  while((m = GOOGLE_RESULT_RE.exec(html)) !== null){
640
644
  const raw = m[1] ?? "";
641
645
  let url = "";
@@ -645,7 +649,11 @@ function parseGoogleResultLinks(html) {
645
649
  continue;
646
650
  }
647
651
  if (!/^https?:\/\//i.test(url)) continue;
648
- if (/\/google\./i.test(url)) continue;
652
+ try {
653
+ if (GOOGLE_OWN_HOST_RE.test(new URL(url).hostname)) continue;
654
+ } catch {
655
+ continue;
656
+ }
649
657
  if (seen.has(url)) continue;
650
658
  seen.add(url);
651
659
  out.push(url);
@@ -509,6 +509,7 @@ function getConfig() {
509
509
  streamParseTripwire: parsePositiveInt(env.JARELA_STREAM_PARSE_TRIPWIRE, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.streamParseTripwire),
510
510
  recallBudgetMs: parseNonNegativeInt(env.JARELA_RECALL_BUDGET_MS, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.recallBudgetMs),
511
511
  warmSummaryBudgetMs: parseNonNegativeInt(env.JARELA_WARM_SUMMARY_BUDGET_MS, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.warmSummaryBudgetMs),
512
+ compactionTimeoutMs: parsePositiveInt(env.JARELA_COMPACTION_TIMEOUT_MS, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.compactionTimeoutMs),
512
513
  maxThreadMessages: parsePositiveInt(env.JARELA_MAX_THREAD_MESSAGES, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.maxThreadMessages),
513
514
  maxSessionArchives: parsePositiveInt(env.JARELA_MAX_SESSION_ARCHIVES, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.maxSessionArchives),
514
515
  // tools
@@ -952,7 +952,7 @@ class CognitoIdentityClient extends client/* Client */.K {
952
952
  }
953
953
 
954
954
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js + 2 modules
955
- var client_command_builder = __webpack_require__(74789);
955
+ var client_command_builder = __webpack_require__(97170);
956
956
  ;// ./node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commandBuilder.js
957
957
 
958
958
 
@@ -871,7 +871,7 @@ class AwsXmlParser {
871
871
  }
872
872
 
873
873
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/transport/hasOwn.js
874
- var hasOwn = __webpack_require__(75073);
874
+ var hasOwn = __webpack_require__(97454);
875
875
  ;// ./node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js
876
876
 
877
877
  const getValueFromTextNode = (obj) => {
@@ -1937,7 +1937,7 @@ var AssumeRoleWithWebIdentity$ = [9, n0, _ARWWI,
1937
1937
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1938
1938
  /* harmony export */ M: () => (/* binding */ RpcProtocol)
1939
1939
  /* harmony export */ });
1940
- /* harmony import */ var _smithy_core_transport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75073);
1940
+ /* harmony import */ var _smithy_core_transport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97454);
1941
1941
  /* harmony import */ var _smithy_core_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55282);
1942
1942
  /* harmony import */ var _smithy_core_transport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51810);
1943
1943
  /* harmony import */ var _HttpProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91497);
@@ -2165,7 +2165,7 @@ var NumericValue = __webpack_require__(3999);
2165
2165
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.js
2166
2166
  var toUtf8 = __webpack_require__(63332);
2167
2167
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js
2168
- var SerdeContext = __webpack_require__(71966);
2168
+ var SerdeContext = __webpack_require__(49585);
2169
2169
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js
2170
2170
  var determineTimestampFormat = __webpack_require__(67055);
2171
2171
  ;// ./node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js
@@ -237,7 +237,7 @@ function fromByteArray (uint8) {
237
237
  /* harmony export */ });
238
238
  /* harmony import */ var _virtual_rolldown_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27217);
239
239
  /* harmony import */ var _fast_json_patch_src_core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34298);
240
- /* harmony import */ var _fast_json_patch_src_duplex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8213);
240
+ /* harmony import */ var _fast_json_patch_src_duplex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30594);
241
241
  /* harmony import */ var _fast_json_patch_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97038);
242
242
 
243
243
 
@@ -1681,7 +1681,7 @@ var StandardSchemaOutputParser = class extends _base_js__WEBPACK_IMPORTED_MODULE
1681
1681
  /* harmony export */ hU: () => (/* binding */ JsonOutputParser)
1682
1682
  /* harmony export */ });
1683
1683
  /* harmony import */ var _utils_json_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(40803);
1684
- /* harmony import */ var _utils_fast_json_patch_src_duplex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8213);
1684
+ /* harmony import */ var _utils_fast_json_patch_src_duplex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30594);
1685
1685
  /* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27408);
1686
1686
  /* harmony import */ var _utils_json_patch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8864);
1687
1687
 
@@ -4815,7 +4815,7 @@ var standard_schema = __webpack_require__(25751);
4815
4815
  // EXTERNAL MODULE: ./node_modules/@langchain/core/dist/output_parsers/structured.js
4816
4816
  var structured = __webpack_require__(72813);
4817
4817
  // EXTERNAL MODULE: ./node_modules/@langchain/core/dist/utils/fast-json-patch/src/duplex.js
4818
- var duplex = __webpack_require__(8213);
4818
+ var duplex = __webpack_require__(30594);
4819
4819
  // EXTERNAL MODULE: ./node_modules/@langchain/core/dist/utils/json_patch.js
4820
4820
  var json_patch = __webpack_require__(8864);
4821
4821
  ;// ./node_modules/@langchain/core/dist/utils/sax-js/sax.js
@@ -295,6 +295,7 @@ function getConfig() {
295
295
  streamParseTripwire: parsePositiveInt(env.JARELA_STREAM_PARSE_TRIPWIRE, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.streamParseTripwire),
296
296
  recallBudgetMs: parseNonNegativeInt(env.JARELA_RECALL_BUDGET_MS, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.recallBudgetMs),
297
297
  warmSummaryBudgetMs: parseNonNegativeInt(env.JARELA_WARM_SUMMARY_BUDGET_MS, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.warmSummaryBudgetMs),
298
+ compactionTimeoutMs: parsePositiveInt(env.JARELA_COMPACTION_TIMEOUT_MS, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.compactionTimeoutMs),
298
299
  maxThreadMessages: parsePositiveInt(env.JARELA_MAX_THREAD_MESSAGES, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.maxThreadMessages),
299
300
  maxSessionArchives: parsePositiveInt(env.JARELA_MAX_SESSION_ARCHIVES, _schema__WEBPACK_IMPORTED_MODULE_2__/* .ENV_DEFAULTS */ .F$.maxSessionArchives),
300
301
  // tools
@@ -45,6 +45,7 @@ const ENV_DEFAULTS = {
45
45
  streamParseTripwire: 6,
46
46
  recallBudgetMs: 1500,
47
47
  warmSummaryBudgetMs: 5000,
48
+ compactionTimeoutMs: 10 * 60000,
48
49
  maxThreadMessages: 1000,
49
50
  maxSessionArchives: 50,
50
51
  // tools
@@ -250,6 +251,17 @@ const ENV_SCHEMA = [
250
251
  agentWritable: false,
251
252
  min: 60000
252
253
  },
254
+ {
255
+ name: "JARELA_COMPACTION_TIMEOUT_MS",
256
+ type: "int",
257
+ default: ENV_DEFAULTS.compactionTimeoutMs,
258
+ description: "Deadline for one warm-context compaction of a thread; a late result is discarded and the thread is released.",
259
+ category: "agent",
260
+ tier: "B",
261
+ requiresRestart: false,
262
+ agentWritable: false,
263
+ min: 30000
264
+ },
253
265
  {
254
266
  name: "JARELA_RUN_REGISTRY_TTL_MS",
255
267
  type: "int",
@@ -15,12 +15,12 @@ exports.modules = {
15
15
  /* harmony export */ S0: () => (/* binding */ getRecentMessagesWindow),
16
16
  /* harmony export */ T1: () => (/* binding */ setThreadContextPin),
17
17
  /* harmony export */ TX: () => (/* binding */ getMessagesByAutomationCategory),
18
+ /* harmony export */ Tb: () => (/* binding */ countForegroundThreadMessages),
18
19
  /* harmony export */ VL: () => (/* binding */ getMessages),
19
20
  /* harmony export */ Xi: () => (/* binding */ appendMessageDraft),
20
21
  /* harmony export */ Zb: () => (/* binding */ mergeMessageMetadata),
21
22
  /* harmony export */ e8: () => (/* binding */ updateMessageContent),
22
23
  /* harmony export */ fG: () => (/* binding */ getThread),
23
- /* harmony export */ fW: () => (/* binding */ countThreadMessagesFromSeq),
24
24
  /* harmony export */ k3: () => (/* binding */ getRecentlyUsedToolNames),
25
25
  /* harmony export */ m9: () => (/* binding */ isValidThreadContextCursor),
26
26
  /* harmony export */ mI: () => (/* binding */ touchThread),
@@ -33,7 +33,7 @@ exports.modules = {
33
33
  /* harmony export */ x5: () => (/* binding */ capToolEventPayload),
34
34
  /* harmony export */ xH: () => (/* binding */ getOrCreateAgentThread)
35
35
  /* harmony export */ });
36
- /* unused harmony exports FOREGROUND_EXCLUDED_CATEGORIES, listThreads, listThreadsByAgent, createThread, deleteThread, getMessagesAfter, commitThreadChannelSummary, setThreadWarmSummary */
36
+ /* unused harmony exports FOREGROUND_EXCLUDED_CATEGORIES, listThreads, listThreadsByAgent, createThread, deleteThread, getMessagesAfter, listThreadChannelSummaries, commitThreadChannelSummary, setThreadWarmSummary */
37
37
  /* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77598);
38
38
  /* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_crypto__WEBPACK_IMPORTED_MODULE_0__);
39
39
  /* harmony import */ var _lib_db__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39504);
@@ -137,8 +137,10 @@ function getThread(thread_id) {
137
137
  function getThreadMessageBySeq(thread_id, seq) {
138
138
  return (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare(MSG_COLS_SQL + " WHERE thread_id=? AND rowid=?").get(thread_id, seq) ?? null;
139
139
  }
140
- function countThreadMessagesFromSeq(thread_id, seq) {
141
- const row = (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare("SELECT COUNT(*) AS n FROM messages WHERE thread_id=? AND rowid>=?").get(thread_id, seq);
140
+ // Rows that size compaction can prune: automation-channel rows are kept
141
+ // (see pruneThreadMessages), so they must not count toward its trigger.
142
+ function countForegroundThreadMessages(thread_id, fromSeq = 0) {
143
+ const row = (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare("SELECT COUNT(*) AS n FROM messages WHERE thread_id=? AND rowid>=? AND " + foregroundCategoryGuardSql()).get(thread_id, fromSeq, ...FOREGROUND_EXCLUDED_CATEGORIES);
142
144
  return row?.n ?? 0;
143
145
  }
144
146
  function isValidThreadContextCursor(thread_id, seq) {
@@ -549,17 +551,21 @@ function getMessagesByAutomationCategory(threadId, category) {
549
551
  // costs at most one duplicate LLM call, not corruption — unlike the shared
550
552
  // hot/warm boundary move, there's no cross-field invariant to protect here.
551
553
  function getThreadChannelSummary(threadId, channel) {
552
- return (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare("SELECT thread_id, channel, summary, summary_before, summary_before_seq, computed_at FROM thread_channel_summaries WHERE thread_id=? AND channel=?").get(threadId, channel) ?? null;
554
+ return (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare("SELECT thread_id, channel, summary, summary_before, summary_before_seq, computed_at, topics FROM thread_channel_summaries WHERE thread_id=? AND channel=?").get(threadId, channel) ?? null;
555
+ }
556
+ function listThreadChannelSummaries(threadId) {
557
+ return getDb().prepare("SELECT thread_id, channel, summary, summary_before, summary_before_seq, computed_at, topics FROM thread_channel_summaries WHERE thread_id=?").all(threadId);
553
558
  }
554
559
  function commitThreadChannelSummary(threadId, channel, input) {
555
560
  if (input.summaryBefore !== null && input.summaryBeforeSeq == null) {
556
561
  throw new Error("summaryBeforeSeq is required for a boundary summary");
557
562
  }
558
- getDb().prepare(`INSERT INTO thread_channel_summaries (thread_id, channel, summary, summary_before, summary_before_seq, computed_at)
559
- VALUES (?, ?, ?, ?, ?, ?)
563
+ getDb().prepare(`INSERT INTO thread_channel_summaries (thread_id, channel, summary, summary_before, summary_before_seq, computed_at, topics)
564
+ VALUES (?, ?, ?, ?, ?, ?, ?)
560
565
  ON CONFLICT(thread_id, channel) DO UPDATE SET
561
566
  summary=excluded.summary, summary_before=excluded.summary_before,
562
- summary_before_seq=excluded.summary_before_seq, computed_at=excluded.computed_at`).run(threadId, channel, input.summary, input.summaryBefore, input.summaryBeforeSeq ?? null, now());
567
+ summary_before_seq=excluded.summary_before_seq, computed_at=excluded.computed_at,
568
+ topics=excluded.topics`).run(threadId, channel, input.summary, input.summaryBefore, input.summaryBeforeSeq ?? null, now(), input.topics ?? null);
563
569
  }
564
570
  function touchThread(thread_id, firstMsg) {
565
571
  const t = now();
@@ -574,11 +580,11 @@ function setThreadContextPin(thread_id, hot_since, hot_since_seq) {
574
580
  }
575
581
  (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare("UPDATE threads SET hot_since=?, hot_since_seq=? WHERE thread_id=?").run(hot_since, hot_since === null ? null : hot_since_seq, thread_id);
576
582
  }
577
- // Called by moveThreadContextBoundary whenever the user explicitly moves the
578
- // boundary (drag, or manual /compact) — never by the auto-detector's own
579
- // commit path, which calls setThreadContextPin directly. `untilMessageCount`
580
- // is a one-time write; the read side (lib/agents/run-thread.ts) just compares
581
- // against it, no per-turn write needed.
583
+ // Armed by moveThreadContextBoundary whenever the user explicitly moves the
584
+ // boundary (drag, or manual /compact), and by the auto-detector's hot-turn
585
+ // cooldown when a compaction pass ends without a commit (a commit writes the
586
+ // lock in the same transaction). `untilMessageCount` is a one-time write; the
587
+ // read side (lib/agents/run-thread.ts) just compares against it.
582
588
  function setAutoBoundaryLock(thread_id, untilMessageCount) {
583
589
  (0,_lib_db__WEBPACK_IMPORTED_MODULE_1__/* .getDb */ .L)().prepare("UPDATE threads SET auto_boundary_locked_until_msg_count=? WHERE thread_id=?").run(Math.max(0, untilMessageCount), thread_id);
584
590
  }
@@ -601,13 +607,14 @@ function commitThreadWarmContext(thread_id, input) {
601
607
  return null;
602
608
  }
603
609
  db.prepare("UPDATE threads SET hot_since=?, hot_since_seq=?, warm_summary=?, warm_summary_before=?, warm_summary_before_seq=?, warm_summary_computed_at=?, warm_summary_source_messages=?, warm_summary_source_chars=?, warm_summary_topics=?, auto_boundary_locked_until_msg_count=? WHERE thread_id=?").run(input.hotSince, hotSinceSeq, input.summary, input.hotSince, hotSinceSeq, now(), input.sourceMessages, input.sourceChars, input.topics ?? null, input.autoBoundaryLockedUntilMessageCount ?? current.auto_boundary_locked_until_msg_count ?? 0, thread_id);
604
- const upsertChannel = db.prepare(`INSERT INTO thread_channel_summaries (thread_id, channel, summary, summary_before, summary_before_seq, computed_at)
605
- VALUES (?, ?, ?, ?, ?, ?)
610
+ const upsertChannel = db.prepare(`INSERT INTO thread_channel_summaries (thread_id, channel, summary, summary_before, summary_before_seq, computed_at, topics)
611
+ VALUES (?, ?, ?, ?, ?, ?, ?)
606
612
  ON CONFLICT(thread_id, channel) DO UPDATE SET
607
613
  summary=excluded.summary, summary_before=excluded.summary_before,
608
- summary_before_seq=excluded.summary_before_seq, computed_at=excluded.computed_at`);
614
+ summary_before_seq=excluded.summary_before_seq, computed_at=excluded.computed_at,
615
+ topics=excluded.topics`);
609
616
  for (const channelSummary of input.channelSummaries ?? []){
610
- upsertChannel.run(thread_id, channelSummary.channel, channelSummary.summary, input.hotSince, hotSinceSeq, now());
617
+ upsertChannel.run(thread_id, channelSummary.channel, channelSummary.summary, input.hotSince, hotSinceSeq, now(), channelSummary.topics ?? null);
611
618
  }
612
619
  db.exec("COMMIT");
613
620
  return getThread(thread_id);
@@ -26,7 +26,7 @@ function setCredentialFeature(credentials, feature, value) {
26
26
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
27
27
  /* harmony export */ M: () => (/* binding */ RpcProtocol)
28
28
  /* harmony export */ });
29
- /* harmony import */ var _smithy_core_transport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75073);
29
+ /* harmony import */ var _smithy_core_transport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97454);
30
30
  /* harmony import */ var _smithy_core_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55282);
31
31
  /* harmony import */ var _smithy_core_transport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51810);
32
32
  /* harmony import */ var _HttpProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91497);
@@ -14,7 +14,7 @@ __webpack_require__.d(__webpack_exports__, {
14
14
  });
15
15
 
16
16
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js + 2 modules
17
- var client_command_builder = __webpack_require__(74789);
17
+ var client_command_builder = __webpack_require__(97170);
18
18
  // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/endpoints/index.js + 6 modules
19
19
  var endpoints = __webpack_require__(38243);
20
20
  ;// ./node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js
@@ -5041,96 +5041,6 @@ function getAbortSignalError(signal) {
5041
5041
 
5042
5042
  /***/ }),
5043
5043
 
5044
- /***/ 8213:
5045
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
5046
-
5047
- "use strict";
5048
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5049
- /* harmony export */ U: () => (/* binding */ compare)
5050
- /* harmony export */ });
5051
- /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43358);
5052
- /* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34298);
5053
-
5054
-
5055
- //#region src/utils/fast-json-patch/src/duplex.ts
5056
- /*!
5057
- * https://github.com/Starcounter-Jack/JSON-Patch
5058
- * (c) 2013-2021 Joachim Wester
5059
- * MIT license
5060
- */
5061
- function _generate(mirror, obj, patches, path, invertible) {
5062
- if (obj === mirror) return;
5063
- if (typeof obj.toJSON === "function") obj = obj.toJSON();
5064
- var newKeys = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._objectKeys */ .bT)(obj);
5065
- var oldKeys = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._objectKeys */ .bT)(mirror);
5066
- var deleted = false;
5067
- for (var t = oldKeys.length - 1; t >= 0; t--) {
5068
- var key = oldKeys[t];
5069
- var oldVal = mirror[key];
5070
- if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .hasOwnProperty */ .mQ)(obj, key) && !(obj[key] === void 0 && oldVal !== void 0 && Array.isArray(obj) === false)) {
5071
- var newVal = obj[key];
5072
- if (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) _generate(oldVal, newVal, patches, path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key), invertible);
5073
- else if (oldVal !== newVal) {
5074
- if (invertible) patches.push({
5075
- op: "test",
5076
- path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
5077
- value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(oldVal)
5078
- });
5079
- patches.push({
5080
- op: "replace",
5081
- path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
5082
- value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(newVal)
5083
- });
5084
- }
5085
- } else if (Array.isArray(mirror) === Array.isArray(obj)) {
5086
- if (invertible) patches.push({
5087
- op: "test",
5088
- path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
5089
- value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(oldVal)
5090
- });
5091
- patches.push({
5092
- op: "remove",
5093
- path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key)
5094
- });
5095
- deleted = true;
5096
- } else {
5097
- if (invertible) patches.push({
5098
- op: "test",
5099
- path,
5100
- value: mirror
5101
- });
5102
- patches.push({
5103
- op: "replace",
5104
- path,
5105
- value: obj
5106
- });
5107
- }
5108
- }
5109
- if (!deleted && newKeys.length == oldKeys.length) return;
5110
- for (var t = 0; t < newKeys.length; t++) {
5111
- var key = newKeys[t];
5112
- if (!(0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .hasOwnProperty */ .mQ)(mirror, key) && obj[key] !== void 0) patches.push({
5113
- op: "add",
5114
- path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
5115
- value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(obj[key])
5116
- });
5117
- }
5118
- }
5119
- /**
5120
- * Create an array of patches from the differences in two objects
5121
- */
5122
- function compare(tree1, tree2, invertible = false) {
5123
- var patches = [];
5124
- _generate(tree1, tree2, patches, "", invertible);
5125
- return patches;
5126
- }
5127
- //#endregion
5128
-
5129
-
5130
- //# sourceMappingURL=duplex.js.map
5131
-
5132
- /***/ }),
5133
-
5134
5044
  /***/ 8879:
5135
5045
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
5136
5046
 
@@ -18912,6 +18822,96 @@ function collapseToolCallChunks(chunks) {
18912
18822
 
18913
18823
  /***/ }),
18914
18824
 
18825
+ /***/ 30594:
18826
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
18827
+
18828
+ "use strict";
18829
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
18830
+ /* harmony export */ U: () => (/* binding */ compare)
18831
+ /* harmony export */ });
18832
+ /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43358);
18833
+ /* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34298);
18834
+
18835
+
18836
+ //#region src/utils/fast-json-patch/src/duplex.ts
18837
+ /*!
18838
+ * https://github.com/Starcounter-Jack/JSON-Patch
18839
+ * (c) 2013-2021 Joachim Wester
18840
+ * MIT license
18841
+ */
18842
+ function _generate(mirror, obj, patches, path, invertible) {
18843
+ if (obj === mirror) return;
18844
+ if (typeof obj.toJSON === "function") obj = obj.toJSON();
18845
+ var newKeys = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._objectKeys */ .bT)(obj);
18846
+ var oldKeys = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._objectKeys */ .bT)(mirror);
18847
+ var deleted = false;
18848
+ for (var t = oldKeys.length - 1; t >= 0; t--) {
18849
+ var key = oldKeys[t];
18850
+ var oldVal = mirror[key];
18851
+ if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .hasOwnProperty */ .mQ)(obj, key) && !(obj[key] === void 0 && oldVal !== void 0 && Array.isArray(obj) === false)) {
18852
+ var newVal = obj[key];
18853
+ if (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) _generate(oldVal, newVal, patches, path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key), invertible);
18854
+ else if (oldVal !== newVal) {
18855
+ if (invertible) patches.push({
18856
+ op: "test",
18857
+ path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
18858
+ value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(oldVal)
18859
+ });
18860
+ patches.push({
18861
+ op: "replace",
18862
+ path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
18863
+ value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(newVal)
18864
+ });
18865
+ }
18866
+ } else if (Array.isArray(mirror) === Array.isArray(obj)) {
18867
+ if (invertible) patches.push({
18868
+ op: "test",
18869
+ path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
18870
+ value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(oldVal)
18871
+ });
18872
+ patches.push({
18873
+ op: "remove",
18874
+ path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key)
18875
+ });
18876
+ deleted = true;
18877
+ } else {
18878
+ if (invertible) patches.push({
18879
+ op: "test",
18880
+ path,
18881
+ value: mirror
18882
+ });
18883
+ patches.push({
18884
+ op: "replace",
18885
+ path,
18886
+ value: obj
18887
+ });
18888
+ }
18889
+ }
18890
+ if (!deleted && newKeys.length == oldKeys.length) return;
18891
+ for (var t = 0; t < newKeys.length; t++) {
18892
+ var key = newKeys[t];
18893
+ if (!(0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .hasOwnProperty */ .mQ)(mirror, key) && obj[key] !== void 0) patches.push({
18894
+ op: "add",
18895
+ path: path + "/" + (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* .escapePathComponent */ .YX)(key),
18896
+ value: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__/* ._deepClone */ .LH)(obj[key])
18897
+ });
18898
+ }
18899
+ }
18900
+ /**
18901
+ * Create an array of patches from the differences in two objects
18902
+ */
18903
+ function compare(tree1, tree2, invertible = false) {
18904
+ var patches = [];
18905
+ _generate(tree1, tree2, patches, "", invertible);
18906
+ return patches;
18907
+ }
18908
+ //#endregion
18909
+
18910
+
18911
+ //# sourceMappingURL=duplex.js.map
18912
+
18913
+ /***/ }),
18914
+
18915
18915
  /***/ 30898:
18916
18916
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
18917
18917
 
@@ -93134,7 +93134,7 @@ class SubjectTokenProviderError extends OpenAIError {
93134
93134
  "use strict";
93135
93135
  /* harmony import */ var _src_helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43358);
93136
93136
  /* harmony import */ var _src_core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34298);
93137
- /* harmony import */ var _src_duplex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8213);
93137
+ /* harmony import */ var _src_duplex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30594);
93138
93138
 
93139
93139
 
93140
93140