@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
@@ -67,6 +67,50 @@ function clearWorkspace(config) {
67
67
  }
68
68
 
69
69
 
70
+ /***/ }),
71
+
72
+ /***/ 12262:
73
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
74
+
75
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
76
+ /* harmony export */ N: () => (/* binding */ httpsUrlOrNull),
77
+ /* harmony export */ w: () => (/* binding */ citeAs)
78
+ /* harmony export */ });
79
+ /**
80
+ * Source-link fields for tool results, so an agent can link a reply back to
81
+ * the email, calendar event, or chat it came from without building URLs.
82
+ *
83
+ * `cite_as` is a ready-made markdown link the system prompt tells agents to
84
+ * paste verbatim. Building it in code keeps the label and URL well-formed:
85
+ * a stray `]` in a subject or `)` in a URL would otherwise break the link.
86
+ */ const MAX_LABEL_CHARS = 80;
87
+ /** Returns `url` when it is an absolute https URL, otherwise null. */ function httpsUrlOrNull(url) {
88
+ if (!url) return null;
89
+ try {
90
+ const parsed = new URL(url);
91
+ return parsed.protocol === "https:" ? parsed.href : null;
92
+ } catch {
93
+ return null;
94
+ }
95
+ }
96
+ function markdownLabel(label, fallback) {
97
+ const flat = (label ?? "").replace(/\s+/g, " ").trim();
98
+ const capped = flat.length > MAX_LABEL_CHARS ? `${flat.slice(0, MAX_LABEL_CHARS - 1).trimEnd()}…` : flat;
99
+ return (capped || fallback).replace(/[\\[\]]/g, (c)=>`\\${c}`);
100
+ }
101
+ function markdownDestination(url) {
102
+ return url.replace(/[()\s<>]/g, (c)=>`%${c.charCodeAt(0).toString(16).toUpperCase().padStart(2, "0")}`);
103
+ }
104
+ /**
105
+ * Pre-built markdown link for `cite_as`, or null when there is no usable URL.
106
+ * Only https URLs qualify: the chat renderer drops other schemes.
107
+ */ function citeAs(label, url, fallbackLabel = "source") {
108
+ const safe = httpsUrlOrNull(url);
109
+ if (!safe) return null;
110
+ return `[${markdownLabel(label, fallbackLabel)}](${markdownDestination(safe)})`;
111
+ }
112
+
113
+
70
114
  /***/ }),
71
115
 
72
116
  /***/ 13257:
@@ -382,14 +426,15 @@ function getClaudeCodeConfig() {
382
426
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
383
427
  /* harmony export */ Wz: () => (/* binding */ _resolveGmailAuth)
384
428
  /* harmony export */ });
385
- /* unused harmony exports buildRawMessage, gmailSearchTool, gmailGetMessageTool, gmailListLabelsTool, gmailModifyMessageTool, gmailCreateDraftTool, gmailSendEmailTool, gmailTrashMessageTool */
429
+ /* unused harmony exports gmailWebLink, buildRawMessage, gmailSearchTool, gmailGetMessageTool, gmailListLabelsTool, gmailModifyMessageTool, gmailCreateDraftTool, gmailSendEmailTool, gmailTrashMessageTool */
386
430
  /* harmony import */ var _langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71890);
387
- /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(97377);
431
+ /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(97377);
388
432
  /* harmony import */ var _lib_utils_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77041);
389
- /* harmony import */ var _lib_utils_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46723);
433
+ /* harmony import */ var _lib_utils_text__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(46723);
390
434
  /* harmony import */ var _packages_langchain_package__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42604);
391
435
  /* harmony import */ var _lib_integrations_gmail_oauth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(87246);
392
436
  /* harmony import */ var _lib_utils_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22032);
437
+ /* harmony import */ var _lib_utils_source_link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(12262);
393
438
  /**
394
439
  * Native Gmail tools — direct REST API calls to gmail.googleapis.com, no MCP.
395
440
  *
@@ -417,6 +462,7 @@ function getClaudeCodeConfig() {
417
462
 
418
463
 
419
464
 
465
+
420
466
  // Exposed for the integrations test endpoint.
421
467
  function _resolveGmailAuth() {
422
468
  return (0,_lib_integrations_gmail_oauth__WEBPACK_IMPORTED_MODULE_2__/* .resolveGoogleAuth */ .wq)();
@@ -441,6 +487,31 @@ function resolveGmailAuthForTool() {
441
487
  };
442
488
  }
443
489
  }
490
+ // ── Source links ────────────────────────────────────────────────────────────
491
+ // Gmail's web URL scheme is undocumented. `#all/<threadId>` opens the
492
+ // conversation from All Mail whatever its labels, and `/u/<email>/` selects
493
+ // the signed-in account (`/u/0/` is whichever account signed in first).
494
+ const GMAIL_API_ID = /^[0-9a-f]{8,32}$/i;
495
+ function gmailWebLink(threadId, account) {
496
+ if (!threadId || !GMAIL_API_ID.test(threadId)) return null;
497
+ const slot = account ? encodeURIComponent(account) : "0";
498
+ return `https://mail.google.com/mail/u/${slot}/#all/${threadId}`;
499
+ }
500
+ const accountEmailCache = new Map();
501
+ // getProfile works with every Gmail scope; a failure only drops the account
502
+ // from the link, so it is not retried within the process.
503
+ function gmailAccountEmail(auth) {
504
+ const key = auth.refresh_token.slice(0, 20);
505
+ let pending = accountEmailCache.get(key);
506
+ if (!pending) {
507
+ pending = gmailFetch(auth, "/profile").then((p)=>{
508
+ const email = p.emailAddress;
509
+ return typeof email === "string" && email.includes("@") ? email : null;
510
+ }).catch(()=>null);
511
+ accountEmailCache.set(key, pending);
512
+ }
513
+ return pending;
514
+ }
444
515
  // ── Decoders / helpers ──────────────────────────────────────────────────────
445
516
  // Gmail uses base64url (no padding, +/ → -_). Node's Buffer handles it directly.
446
517
  function decodeBase64Url(s) {
@@ -513,6 +584,7 @@ const gmailSearchTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/*
513
584
  messages: []
514
585
  });
515
586
  }
587
+ const account = await gmailAccountEmail(auth);
516
588
  // Parallel metadata fetch; the API recommends batching but for ≤100 ids
517
589
  // parallel single calls are simpler and well within quota.
518
590
  const details = await Promise.all(ids.map(async (id)=>{
@@ -521,15 +593,19 @@ const gmailSearchTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/*
521
593
  id,
522
594
  error: m.error
523
595
  };
596
+ const subject = header(m.payload?.headers, "Subject");
597
+ const webLink = gmailWebLink(m.threadId, account);
524
598
  return {
525
599
  id: m.id,
526
600
  thread_id: m.threadId,
527
601
  from: header(m.payload?.headers, "From"),
528
602
  to: header(m.payload?.headers, "To"),
529
- subject: header(m.payload?.headers, "Subject"),
603
+ subject,
530
604
  date: header(m.payload?.headers, "Date"),
531
605
  snippet: m.snippet ?? null,
532
- labels: m.labelIds ?? []
606
+ labels: m.labelIds ?? [],
607
+ web_link: webLink,
608
+ cite_as: (0,_lib_utils_source_link__WEBPACK_IMPORTED_MODULE_5__/* .citeAs */ .w)(subject, webLink, "Gmail message")
533
609
  };
534
610
  }));
535
611
  return JSON.stringify({
@@ -541,9 +617,9 @@ const gmailSearchTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/*
541
617
  }, {
542
618
  name: "gmail_search",
543
619
  description: "Search the user's Gmail with Gmail query syntax. Returns message metadata (from, to, subject, " + "date, snippet, labels) plus Gmail's resultSizeEstimate and next page token so '1 result' " + "doesn't get mistaken for '1 unread email'. Examples: 'is:unread newer_than:1d', " + "'from:notifications@github.com', 'subject:invoice has:attachment', 'in:inbox -category:promotions'. " + "Use this before calling gmail_get_message — the snippet is often enough.",
544
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({
545
- query: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().describe("Gmail query string"),
546
- max_results: zod__WEBPACK_IMPORTED_MODULE_5__/* .number */ .aig().int().optional().describe("Max messages (default 25, max 100)")
620
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({
621
+ query: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().describe("Gmail query string"),
622
+ max_results: zod__WEBPACK_IMPORTED_MODULE_6__/* .number */ .aig().int().optional().describe("Max messages (default 25, max 100)")
547
623
  })
548
624
  });
549
625
  const gmailGetMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ id })=>{
@@ -552,15 +628,19 @@ const gmailGetMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0_
552
628
  const m = await gmailFetch(auth, `/messages/${encodeURIComponent(id)}?format=full`);
553
629
  if (m.error) return JSON.stringify(m);
554
630
  const body = extractBody(m.payload);
555
- const { text: capped, truncated } = (0,_lib_utils_text__WEBPACK_IMPORTED_MODULE_6__/* .truncateBytes */ .Q)(body, MAX_BODY_BYTES);
631
+ const { text: capped, truncated } = (0,_lib_utils_text__WEBPACK_IMPORTED_MODULE_7__/* .truncateBytes */ .Q)(body, MAX_BODY_BYTES);
632
+ const subject = header(m.payload?.headers, "Subject");
633
+ const webLink = gmailWebLink(m.threadId, await gmailAccountEmail(auth));
556
634
  return JSON.stringify({
557
635
  id: m.id,
558
636
  thread_id: m.threadId,
637
+ web_link: webLink,
638
+ cite_as: (0,_lib_utils_source_link__WEBPACK_IMPORTED_MODULE_5__/* .citeAs */ .w)(subject, webLink, "Gmail message"),
559
639
  labels: m.labelIds ?? [],
560
640
  from: header(m.payload?.headers, "From"),
561
641
  to: header(m.payload?.headers, "To"),
562
642
  cc: header(m.payload?.headers, "Cc"),
563
- subject: header(m.payload?.headers, "Subject"),
643
+ subject,
564
644
  date: header(m.payload?.headers, "Date"),
565
645
  message_id: header(m.payload?.headers, "Message-Id") ?? header(m.payload?.headers, "Message-ID"),
566
646
  snippet: m.snippet ?? null,
@@ -570,8 +650,8 @@ const gmailGetMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0_
570
650
  }, {
571
651
  name: "gmail_get_message",
572
652
  description: "Fetch one Gmail message by id, including full headers and the decoded text body (text/plain " + "preferred, HTML stripped if only HTML is available). Body capped at 30KB with `truncated:true` " + "when cut off.",
573
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({
574
- id: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().describe("Gmail message id (from gmail_search results)")
653
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({
654
+ id: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().describe("Gmail message id (from gmail_search results)")
575
655
  })
576
656
  });
577
657
  const gmailListLabelsTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ()=>{
@@ -589,7 +669,7 @@ const gmailListLabelsTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0_
589
669
  }, {
590
670
  name: "gmail_list_labels",
591
671
  description: "List all Gmail labels (system + user). System label ids are uppercase (INBOX, UNREAD, " + "STARRED, IMPORTANT, SPAM, TRASH, SENT, DRAFT, CATEGORY_*). User labels have lowercase " + "alphanumeric ids like 'Label_42'. Use the id values with gmail_modify_message.",
592
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({})
672
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({})
593
673
  });
594
674
  const gmailModifyMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ id, add_labels, remove_labels })=>{
595
675
  const auth = resolveGmailAuthForTool();
@@ -615,10 +695,10 @@ const gmailModifyMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE
615
695
  }, {
616
696
  name: "gmail_modify_message",
617
697
  description: "Add or remove labels on a Gmail message. Common patterns: " + "archive = remove_labels=['INBOX']; mark read = remove_labels=['UNREAD']; " + "star = add_labels=['STARRED']; mark important = add_labels=['IMPORTANT']. " + "Use gmail_list_labels first if you don't know a user label id.",
618
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({
619
- id: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().describe("Gmail message id"),
620
- add_labels: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).optional().describe("Label ids to add"),
621
- remove_labels: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).optional().describe("Label ids to remove")
698
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({
699
+ id: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().describe("Gmail message id"),
700
+ add_labels: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).optional().describe("Label ids to add"),
701
+ remove_labels: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).optional().describe("Label ids to remove")
622
702
  })
623
703
  });
624
704
  const gmailCreateDraftTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ to, cc, bcc, subject, body, content_type, in_reply_to_id })=>{
@@ -673,17 +753,17 @@ const gmailCreateDraftTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0
673
753
  }, {
674
754
  name: "gmail_create_draft",
675
755
  description: "Create a Gmail draft. Prefer drafts unless the user explicitly asks to send immediately. " + "`content_type` defaults to 'text'; pass 'html' if `body` contains HTML markup. " + "When replying to an existing message, pass `in_reply_to_id` (the parent " + "message id from gmail_search/gmail_get_message) — the tool will set Message-Id/References/" + "threadId so the draft appears inside the right Gmail thread.",
676
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({
677
- to: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).describe("Recipient email addresses"),
678
- cc: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).optional(),
679
- bcc: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).optional(),
680
- subject: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP(),
681
- body: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().max(DRAFT_BODY_MAX_CHARS).describe("Email body (max 100,000 characters)"),
682
- content_type: zod__WEBPACK_IMPORTED_MODULE_5__/* ["enum"] */ .k5n([
756
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({
757
+ to: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).describe("Recipient email addresses"),
758
+ cc: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).optional(),
759
+ bcc: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).optional(),
760
+ subject: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP(),
761
+ body: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().max(DRAFT_BODY_MAX_CHARS).describe("Email body (max 100,000 characters)"),
762
+ content_type: zod__WEBPACK_IMPORTED_MODULE_6__/* ["enum"] */ .k5n([
683
763
  "text",
684
764
  "html"
685
765
  ]).optional().describe("Body content type (default 'text')"),
686
- in_reply_to_id: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().optional().describe("Gmail message id to reply to (for threading)")
766
+ in_reply_to_id: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().optional().describe("Gmail message id to reply to (for threading)")
687
767
  })
688
768
  });
689
769
  const gmailSendEmailTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ to, cc, bcc, subject, body, content_type, in_reply_to_id })=>{
@@ -733,17 +813,17 @@ const gmailSendEmailTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__
733
813
  }, {
734
814
  name: "gmail_send_email",
735
815
  description: "Send a Gmail email immediately. Only use when the user explicitly asks to send now; " + "otherwise create a draft with gmail_create_draft. Supports text or HTML bodies via `content_type`. " + "When replying, pass `in_reply_to_id` so Gmail threads the sent message correctly.",
736
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({
737
- to: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).min(1).describe("Recipient email addresses"),
738
- cc: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).optional(),
739
- bcc: zod__WEBPACK_IMPORTED_MODULE_5__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP()).optional(),
740
- subject: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP(),
741
- body: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().max(SEND_BODY_MAX_CHARS).describe("Email body (max 100,000 characters)"),
742
- content_type: zod__WEBPACK_IMPORTED_MODULE_5__/* ["enum"] */ .k5n([
816
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({
817
+ to: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).min(1).describe("Recipient email addresses"),
818
+ cc: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).optional(),
819
+ bcc: zod__WEBPACK_IMPORTED_MODULE_6__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP()).optional(),
820
+ subject: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP(),
821
+ body: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().max(SEND_BODY_MAX_CHARS).describe("Email body (max 100,000 characters)"),
822
+ content_type: zod__WEBPACK_IMPORTED_MODULE_6__/* ["enum"] */ .k5n([
743
823
  "text",
744
824
  "html"
745
825
  ]).optional().describe("Body content type (default 'text')"),
746
- in_reply_to_id: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().optional().describe("Gmail message id to reply to (for threading)")
826
+ in_reply_to_id: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().optional().describe("Gmail message id to reply to (for threading)")
747
827
  })
748
828
  });
749
829
  const gmailTrashMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ id })=>{
@@ -761,8 +841,8 @@ const gmailTrashMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_
761
841
  }, {
762
842
  name: "gmail_trash_message",
763
843
  description: "Move a Gmail message to Trash (reversible for 30 days, not permanent delete). Only call this " + "when the user has explicitly asked to trash/delete a message — never on your own initiative " + "as part of a triage flow. Prefer gmail_modify_message remove_labels=['INBOX'] to archive.",
764
- schema: zod__WEBPACK_IMPORTED_MODULE_5__/* .object */ .Ikc({
765
- id: zod__WEBPACK_IMPORTED_MODULE_5__/* .string */ .YjP().describe("Gmail message id")
844
+ schema: zod__WEBPACK_IMPORTED_MODULE_6__/* .object */ .Ikc({
845
+ id: zod__WEBPACK_IMPORTED_MODULE_6__/* .string */ .YjP().describe("Gmail message id")
766
846
  })
767
847
  });
768
848
  (0,_packages_langchain_package__WEBPACK_IMPORTED_MODULE_1__/* .registerLangChainPackage */ .p)({
@@ -2542,9 +2622,10 @@ function registerOne(descriptor) {
2542
2622
  /* harmony export */ });
2543
2623
  /* unused harmony exports outlookSearchTool, outlookGetMessageTool, outlookListFoldersTool, outlookModifyMessageTool, outlookCreateDraftTool, outlookTrashMessageTool, outlookSendEmailTool */
2544
2624
  /* harmony import */ var _langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71890);
2545
- /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97377);
2546
- /* harmony import */ var _lib_utils_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(77041);
2547
- /* harmony import */ var _lib_utils_text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46723);
2625
+ /* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(97377);
2626
+ /* harmony import */ var _lib_utils_html__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77041);
2627
+ /* harmony import */ var _lib_utils_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46723);
2628
+ /* harmony import */ var _lib_utils_source_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12262);
2548
2629
  /* harmony import */ var _packages_langchain_package__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42604);
2549
2630
  /* harmony import */ var _lib_integrations_microsoft_oauth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(89080);
2550
2631
  /**
@@ -2564,6 +2645,7 @@ function registerOne(descriptor) {
2564
2645
 
2565
2646
 
2566
2647
 
2648
+
2567
2649
  // Exposed for the integrations test endpoint.
2568
2650
  function _resolveOutlookAuth() {
2569
2651
  return (0,_lib_integrations_microsoft_oauth__WEBPACK_IMPORTED_MODULE_2__/* .resolveMicrosoftAuth */ .jG)();
@@ -2589,7 +2671,8 @@ function summarizeMessage(m) {
2589
2671
  categories: m.categories ?? [],
2590
2672
  folder_id: m.parentFolderId ?? null,
2591
2673
  snippet: m.bodyPreview ?? null,
2592
- web_link: m.webLink ?? null
2674
+ web_link: m.webLink ?? null,
2675
+ cite_as: (0,_lib_utils_source_link__WEBPACK_IMPORTED_MODULE_3__/* .citeAs */ .w)(m.subject, m.webLink, "Outlook message")
2593
2676
  };
2594
2677
  }
2595
2678
  const BODY_CAP = 30000;
@@ -2625,9 +2708,9 @@ const outlookSearchTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/
2625
2708
  }, {
2626
2709
  name: "outlook_search",
2627
2710
  description: "Search the user's Outlook mailbox using KQL (Microsoft's keyword query language). " + "Returns message metadata (from, to, subject, received, snippet, labels) plus @odata.count " + "and next_link when available. Examples: " + "'from:notifications@github.com', 'subject:invoice hasAttachment:true', " + "'isRead:false received>=2026-05-17'. **Use this before calling outlook_get_message** — " + "the snippet is often enough.",
2628
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({
2629
- query: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().describe("KQL query string"),
2630
- max_results: zod__WEBPACK_IMPORTED_MODULE_3__/* .number */ .aig().int().optional().describe("Max messages (default 25, max 100)")
2711
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({
2712
+ query: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().describe("KQL query string"),
2713
+ max_results: zod__WEBPACK_IMPORTED_MODULE_4__/* .number */ .aig().int().optional().describe("Max messages (default 25, max 100)")
2631
2714
  })
2632
2715
  });
2633
2716
  const outlookGetMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ id })=>{
@@ -2639,10 +2722,10 @@ const outlookGetMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_
2639
2722
  if (m.error) return JSON.stringify(m);
2640
2723
  const summary = summarizeMessage(m);
2641
2724
  const rawBody = m.body?.content ?? "";
2642
- const plain = m.body?.contentType === "html" ? (0,_lib_utils_html__WEBPACK_IMPORTED_MODULE_4__/* .stripHtml */ .Q)(rawBody, {
2725
+ const plain = m.body?.contentType === "html" ? (0,_lib_utils_html__WEBPACK_IMPORTED_MODULE_5__/* .stripHtml */ .Q)(rawBody, {
2643
2726
  preserveParagraphs: true
2644
2727
  }) : rawBody;
2645
- const { text: body, truncated } = (0,_lib_utils_text__WEBPACK_IMPORTED_MODULE_5__/* .truncateBytes */ .Q)(plain, BODY_CAP);
2728
+ const { text: body, truncated } = (0,_lib_utils_text__WEBPACK_IMPORTED_MODULE_6__/* .truncateBytes */ .Q)(plain, BODY_CAP);
2646
2729
  return JSON.stringify({
2647
2730
  ...summary,
2648
2731
  body,
@@ -2651,8 +2734,8 @@ const outlookGetMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_
2651
2734
  }, {
2652
2735
  name: "outlook_get_message",
2653
2736
  description: "Fetch one Outlook message by id, including full headers and the decoded text body " + "(HTML stripped to plain text when needed). Body capped at 30KB with `truncated:true` " + "when cut off.",
2654
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({
2655
- id: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().describe("Outlook message id (from outlook_search results)")
2737
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({
2738
+ id: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().describe("Outlook message id (from outlook_search results)")
2656
2739
  })
2657
2740
  });
2658
2741
  const outlookListFoldersTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ()=>{
@@ -2678,7 +2761,7 @@ const outlookListFoldersTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE
2678
2761
  }, {
2679
2762
  name: "outlook_list_folders",
2680
2763
  description: "List all Outlook mail folders. Use the `id` (or `well_known` name like 'inbox', " + "'drafts', 'sentitems', 'deleteditems', 'archive') with outlook_modify_message to move " + "a message between folders.",
2681
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({})
2764
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({})
2682
2765
  });
2683
2766
  const outlookModifyMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ id, mark_read, move_to_folder })=>{
2684
2767
  const auth = (0,_lib_integrations_microsoft_oauth__WEBPACK_IMPORTED_MODULE_2__/* .resolveMicrosoftAuth */ .jG)();
@@ -2721,10 +2804,10 @@ const outlookModifyMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODU
2721
2804
  }, {
2722
2805
  name: "outlook_modify_message",
2723
2806
  description: "Modify an Outlook message: mark read/unread and/or move to another folder. Use " + "`mark_read: true` to mark read, `mark_read: false` to mark unread. `move_to_folder` " + "accepts a folder id from outlook_list_folders or a well-known name (e.g. 'archive', " + "'deleteditems'). Note that moving returns a NEW message id because Graph clones the " + "item into the destination folder.",
2724
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({
2725
- id: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().describe("Outlook message id"),
2726
- mark_read: zod__WEBPACK_IMPORTED_MODULE_3__/* .boolean */ .zMY().optional().describe("Mark read (true) or unread (false)"),
2727
- move_to_folder: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().optional().describe("Destination folder id or well-known name")
2807
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({
2808
+ id: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().describe("Outlook message id"),
2809
+ mark_read: zod__WEBPACK_IMPORTED_MODULE_4__/* .boolean */ .zMY().optional().describe("Mark read (true) or unread (false)"),
2810
+ move_to_folder: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().optional().describe("Destination folder id or well-known name")
2728
2811
  })
2729
2812
  });
2730
2813
  const outlookCreateDraftTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ to, cc, subject, body, content_type })=>{
@@ -2763,12 +2846,12 @@ const outlookCreateDraftTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE
2763
2846
  }, {
2764
2847
  name: "outlook_create_draft",
2765
2848
  description: "Create an Outlook draft email (saved to the Drafts folder, NOT sent). The user opens " + "Outlook to review and click Send. `to` and `cc` are arrays of plain email addresses. " + "`content_type` defaults to 'text'; pass 'html' if `body` contains HTML markup.",
2766
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({
2767
- to: zod__WEBPACK_IMPORTED_MODULE_3__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().email()).min(1).describe("Primary recipient emails"),
2768
- cc: zod__WEBPACK_IMPORTED_MODULE_3__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().email()).optional().describe("CC recipient emails"),
2769
- subject: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().optional().describe("Subject line"),
2770
- body: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().max(DRAFT_BODY_MAX_CHARS).optional().describe("Email body (max 100,000 characters)"),
2771
- content_type: zod__WEBPACK_IMPORTED_MODULE_3__/* ["enum"] */ .k5n([
2849
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({
2850
+ to: zod__WEBPACK_IMPORTED_MODULE_4__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().email()).min(1).describe("Primary recipient emails"),
2851
+ cc: zod__WEBPACK_IMPORTED_MODULE_4__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().email()).optional().describe("CC recipient emails"),
2852
+ subject: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().optional().describe("Subject line"),
2853
+ body: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().max(DRAFT_BODY_MAX_CHARS).optional().describe("Email body (max 100,000 characters)"),
2854
+ content_type: zod__WEBPACK_IMPORTED_MODULE_4__/* ["enum"] */ .k5n([
2772
2855
  "text",
2773
2856
  "html"
2774
2857
  ]).optional().describe("Body content type (default 'text')")
@@ -2797,8 +2880,8 @@ const outlookTrashMessageTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODUL
2797
2880
  }, {
2798
2881
  name: "outlook_trash_message",
2799
2882
  description: "Move an Outlook message to Deleted Items (recoverable from the trash for 30 days). " + "Does NOT permanently delete. Returns the new message id assigned after the move.",
2800
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({
2801
- id: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().describe("Outlook message id to trash")
2883
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({
2884
+ id: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().describe("Outlook message id to trash")
2802
2885
  })
2803
2886
  });
2804
2887
  const outlookSendEmailTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0__/* .tool */ .z6)(async ({ to, cc, bcc, subject, body, content_type, save_to_sent_items })=>{
@@ -2846,17 +2929,17 @@ const outlookSendEmailTool = (0,_langchain_core_tools__WEBPACK_IMPORTED_MODULE_0
2846
2929
  }, {
2847
2930
  name: "outlook_send_email",
2848
2931
  description: "Send an Outlook email immediately via Microsoft Graph. Only use when the user explicitly asks " + "to send now; otherwise create a draft with outlook_create_draft. Supports text or HTML bodies " + "via `content_type`. If this returns a 403 scope error, ask the user to reconnect Outlook so " + "Mail.Send is granted.",
2849
- schema: zod__WEBPACK_IMPORTED_MODULE_3__/* .object */ .Ikc({
2850
- to: zod__WEBPACK_IMPORTED_MODULE_3__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().email()).min(1).describe("Primary recipient emails"),
2851
- cc: zod__WEBPACK_IMPORTED_MODULE_3__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().email()).optional().describe("CC recipient emails"),
2852
- bcc: zod__WEBPACK_IMPORTED_MODULE_3__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().email()).optional().describe("BCC recipient emails"),
2853
- subject: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().optional().describe("Subject line"),
2854
- body: zod__WEBPACK_IMPORTED_MODULE_3__/* .string */ .YjP().max(SEND_BODY_MAX_CHARS).optional().describe("Email body (max 100,000 characters)"),
2855
- content_type: zod__WEBPACK_IMPORTED_MODULE_3__/* ["enum"] */ .k5n([
2932
+ schema: zod__WEBPACK_IMPORTED_MODULE_4__/* .object */ .Ikc({
2933
+ to: zod__WEBPACK_IMPORTED_MODULE_4__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().email()).min(1).describe("Primary recipient emails"),
2934
+ cc: zod__WEBPACK_IMPORTED_MODULE_4__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().email()).optional().describe("CC recipient emails"),
2935
+ bcc: zod__WEBPACK_IMPORTED_MODULE_4__/* .array */ .YOg(zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().email()).optional().describe("BCC recipient emails"),
2936
+ subject: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().optional().describe("Subject line"),
2937
+ body: zod__WEBPACK_IMPORTED_MODULE_4__/* .string */ .YjP().max(SEND_BODY_MAX_CHARS).optional().describe("Email body (max 100,000 characters)"),
2938
+ content_type: zod__WEBPACK_IMPORTED_MODULE_4__/* ["enum"] */ .k5n([
2856
2939
  "text",
2857
2940
  "html"
2858
2941
  ]).optional().describe("Body content type (default 'text')"),
2859
- save_to_sent_items: zod__WEBPACK_IMPORTED_MODULE_3__/* .boolean */ .zMY().optional().describe("Whether Graph should save the message to Sent Items (default true)")
2942
+ save_to_sent_items: zod__WEBPACK_IMPORTED_MODULE_4__/* .boolean */ .zMY().optional().describe("Whether Graph should save the message to Sent Items (default true)")
2860
2943
  })
2861
2944
  });
2862
2945
  (0,_packages_langchain_package__WEBPACK_IMPORTED_MODULE_1__/* .registerLangChainPackage */ .p)({
@@ -595,7 +595,7 @@ async function dispatchSystemSignalWakeups() {
595
595
  active: new Set()
596
596
  }));
597
597
  const { getQueueDepth } = await __webpack_require__.e(/* import() */ 3944).then(__webpack_require__.bind(__webpack_require__, 3944));
598
- const { runAgentTurn } = await Promise.all(/* import() */[__webpack_require__.e(513), __webpack_require__.e(6299), __webpack_require__.e(563), __webpack_require__.e(8808), __webpack_require__.e(7547), __webpack_require__.e(2068), __webpack_require__.e(4377), __webpack_require__.e(1638), __webpack_require__.e(5585), __webpack_require__.e(3524), __webpack_require__.e(9640), __webpack_require__.e(3175), __webpack_require__.e(6142), __webpack_require__.e(540), __webpack_require__.e(4955), __webpack_require__.e(5908), __webpack_require__.e(5936), __webpack_require__.e(424)]).then(__webpack_require__.bind(__webpack_require__, 62032));
598
+ const { runAgentTurn } = await Promise.all(/* import() */[__webpack_require__.e(513), __webpack_require__.e(6299), __webpack_require__.e(563), __webpack_require__.e(8808), __webpack_require__.e(7547), __webpack_require__.e(2068), __webpack_require__.e(4377), __webpack_require__.e(1638), __webpack_require__.e(5585), __webpack_require__.e(9304), __webpack_require__.e(3524), __webpack_require__.e(3175), __webpack_require__.e(6142), __webpack_require__.e(540), __webpack_require__.e(4189), __webpack_require__.e(4955), __webpack_require__.e(5908), __webpack_require__.e(5120), __webpack_require__.e(1388)]).then(__webpack_require__.bind(__webpack_require__, 62032));
599
599
  for (const threadId of (0,_lib_stores_system_signals__WEBPACK_IMPORTED_MODULE_4__/* .dueSystemSignalThreads */ .Hl)()){
600
600
  if (state.active.size >= 2) break;
601
601
  if (state.active.has(threadId) || getQueueDepth(threadId) > 0) continue;