@withbuddi/buddi 0.1.0-pre.43 → 0.1.0-pre.45

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 (695) hide show
  1. package/examples/agents/agent-father/agent.md +12 -5
  2. package/examples/agents/concierge/agent.md +11 -3
  3. package/extension/icons/128.png +0 -0
  4. package/extension/icons/16.png +0 -0
  5. package/extension/icons/32.png +0 -0
  6. package/extension/icons/48.png +0 -0
  7. package/extension/manifest.json +7 -3
  8. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  9. package/node_modules/@buddi/cli/dist/access-cmd.d.ts +2 -1
  10. package/node_modules/@buddi/cli/dist/access-cmd.d.ts.map +1 -1
  11. package/node_modules/@buddi/cli/dist/access-cmd.js +40 -7
  12. package/node_modules/@buddi/cli/dist/access-cmd.js.map +1 -1
  13. package/node_modules/@buddi/cli/dist/args.d.ts +2 -1
  14. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  15. package/node_modules/@buddi/cli/dist/args.js +7 -3
  16. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  17. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  18. package/node_modules/@buddi/cli/dist/commands.js +3 -2
  19. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  20. package/node_modules/@buddi/cli/dist/main.js +1 -1
  21. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  22. package/node_modules/@buddi/cli/dist/mcp/server.js +1 -1
  23. package/node_modules/@buddi/cli/dist/mcp/server.js.map +1 -1
  24. package/node_modules/@buddi/cli/dist/mcp/tools.d.ts.map +1 -1
  25. package/node_modules/@buddi/cli/dist/mcp/tools.js +60 -0
  26. package/node_modules/@buddi/cli/dist/mcp/tools.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  28. package/node_modules/@buddi/core/dist/lock.d.ts +15 -1
  29. package/node_modules/@buddi/core/dist/lock.d.ts.map +1 -1
  30. package/node_modules/@buddi/core/dist/lock.js +15 -1
  31. package/node_modules/@buddi/core/dist/lock.js.map +1 -1
  32. package/node_modules/@buddi/core/dist/pages.d.ts +75 -0
  33. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  34. package/node_modules/@buddi/core/dist/pages.js +14 -0
  35. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  36. package/node_modules/@buddi/core/dist/plugin/index.d.ts +2 -2
  37. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  38. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  39. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  40. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  41. package/node_modules/@buddi/core/dist/provider-accounts.d.ts +32 -0
  42. package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
  43. package/node_modules/@buddi/core/dist/provider-accounts.js +22 -0
  44. package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
  45. package/node_modules/@buddi/core/dist/tools.d.ts +6 -1
  46. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  47. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  48. package/node_modules/@buddi/core/migrations/077_lock_background_portrait.sql +5 -0
  49. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  50. package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts +31 -0
  51. package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts.map +1 -0
  52. package/node_modules/@buddi/gateway/dist/agents/agent-intro.js +116 -0
  53. package/node_modules/@buddi/gateway/dist/agents/agent-intro.js.map +1 -0
  54. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts +10 -0
  55. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts.map +1 -1
  56. package/node_modules/@buddi/gateway/dist/agents/delegation.js +18 -1
  57. package/node_modules/@buddi/gateway/dist/agents/delegation.js.map +1 -1
  58. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts +21 -8
  59. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  60. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js +201 -36
  61. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +14 -1
  63. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/agents/platform.js +44 -11
  65. package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
  66. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  67. package/node_modules/@buddi/gateway/dist/bootstrap.js +2 -0
  68. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  69. package/node_modules/@buddi/gateway/dist/edition-origin.d.ts +57 -0
  70. package/node_modules/@buddi/gateway/dist/edition-origin.d.ts.map +1 -0
  71. package/node_modules/@buddi/gateway/dist/edition-origin.js +156 -0
  72. package/node_modules/@buddi/gateway/dist/edition-origin.js.map +1 -0
  73. package/node_modules/@buddi/gateway/dist/evals/golden.d.ts +5 -0
  74. package/node_modules/@buddi/gateway/dist/evals/golden.d.ts.map +1 -1
  75. package/node_modules/@buddi/gateway/dist/evals/golden.js +48 -0
  76. package/node_modules/@buddi/gateway/dist/evals/golden.js.map +1 -1
  77. package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts +8 -2
  78. package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts.map +1 -1
  79. package/node_modules/@buddi/gateway/dist/mcp/requests.js +74 -1
  80. package/node_modules/@buddi/gateway/dist/mcp/requests.js.map +1 -1
  81. package/node_modules/@buddi/gateway/dist/owner-profile-edit.d.ts +160 -0
  82. package/node_modules/@buddi/gateway/dist/owner-profile-edit.d.ts.map +1 -0
  83. package/node_modules/@buddi/gateway/dist/owner-profile-edit.js +296 -0
  84. package/node_modules/@buddi/gateway/dist/owner-profile-edit.js.map +1 -0
  85. package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts.map +1 -1
  86. package/node_modules/@buddi/gateway/dist/provider-accounts.js +2 -1
  87. package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
  88. package/node_modules/@buddi/gateway/dist/system-context.d.ts +9 -0
  89. package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
  90. package/node_modules/@buddi/gateway/dist/system-context.js +28 -2
  91. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  92. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +6 -0
  93. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
  94. package/node_modules/@buddi/gateway/dist/telegram/approvals.js +10 -2
  95. package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
  96. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  97. package/node_modules/@buddi/gateway/dist/telegram/main.js +10 -3
  98. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  99. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +9 -0
  100. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
  101. package/node_modules/@buddi/gateway/dist/telegram/outbound.js +43 -0
  102. package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
  103. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +2 -0
  104. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  105. package/node_modules/@buddi/gateway/dist/telegram/surface.js +2 -1
  106. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  107. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts +32 -0
  108. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts.map +1 -1
  109. package/node_modules/@buddi/gateway/dist/tips/engine.js +69 -0
  110. package/node_modules/@buddi/gateway/dist/tips/engine.js.map +1 -1
  111. package/node_modules/@buddi/gateway/dist/tips/route.d.ts +1 -3
  112. package/node_modules/@buddi/gateway/dist/tips/route.d.ts.map +1 -1
  113. package/node_modules/@buddi/gateway/dist/tips/route.js +54 -30
  114. package/node_modules/@buddi/gateway/dist/tips/route.js.map +1 -1
  115. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.d.ts +63 -0
  116. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.d.ts.map +1 -0
  117. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.js +87 -0
  118. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.js.map +1 -0
  119. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.d.ts +39 -4
  120. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.d.ts.map +1 -1
  121. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.js +99 -11
  122. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.js.map +1 -1
  123. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.js +1 -1
  124. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.js.map +1 -1
  125. package/node_modules/@buddi/gateway/dist/web/access/index.d.ts +1 -0
  126. package/node_modules/@buddi/gateway/dist/web/access/index.d.ts.map +1 -1
  127. package/node_modules/@buddi/gateway/dist/web/access/index.js +1 -0
  128. package/node_modules/@buddi/gateway/dist/web/access/index.js.map +1 -1
  129. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts +10 -1
  130. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts.map +1 -1
  131. package/node_modules/@buddi/gateway/dist/web/agent-offers.js +14 -1
  132. package/node_modules/@buddi/gateway/dist/web/agent-offers.js.map +1 -1
  133. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  134. package/node_modules/@buddi/gateway/dist/web/api-routes.js +37 -8
  135. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  136. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts +16 -0
  137. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts.map +1 -0
  138. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +51 -0
  139. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -0
  140. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +6 -0
  141. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  142. package/node_modules/@buddi/gateway/dist/web/chat.js +4 -0
  143. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  144. package/node_modules/@buddi/gateway/dist/web/live.d.ts +7 -0
  145. package/node_modules/@buddi/gateway/dist/web/live.d.ts.map +1 -1
  146. package/node_modules/@buddi/gateway/dist/web/live.js +12 -0
  147. package/node_modules/@buddi/gateway/dist/web/live.js.map +1 -1
  148. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.d.ts +9 -0
  149. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.d.ts.map +1 -0
  150. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.js +60 -0
  151. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.js.map +1 -0
  152. package/node_modules/@buddi/gateway/dist/web/lock.d.ts +13 -1
  153. package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
  154. package/node_modules/@buddi/gateway/dist/web/lock.js +84 -23
  155. package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
  156. package/node_modules/@buddi/gateway/dist/web/places.d.ts +5 -0
  157. package/node_modules/@buddi/gateway/dist/web/places.d.ts.map +1 -1
  158. package/node_modules/@buddi/gateway/dist/web/places.js +11 -4
  159. package/node_modules/@buddi/gateway/dist/web/places.js.map +1 -1
  160. package/node_modules/@buddi/gateway/dist/web/server.d.ts +3 -0
  161. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  162. package/node_modules/@buddi/gateway/dist/web/server.js +63 -50
  163. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  164. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  165. package/node_modules/@buddi/install/dist/cloudflared.d.ts +121 -0
  166. package/node_modules/@buddi/install/dist/cloudflared.d.ts.map +1 -0
  167. package/node_modules/@buddi/install/dist/cloudflared.js +451 -0
  168. package/node_modules/@buddi/install/dist/cloudflared.js.map +1 -0
  169. package/node_modules/@buddi/install/dist/index.d.ts +1 -0
  170. package/node_modules/@buddi/install/dist/index.d.ts.map +1 -1
  171. package/node_modules/@buddi/install/dist/index.js +1 -0
  172. package/node_modules/@buddi/install/dist/index.js.map +1 -1
  173. package/node_modules/@buddi/install/dist/supervisor.d.ts +6 -1
  174. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  175. package/node_modules/@buddi/install/dist/supervisor.js +51 -5
  176. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  177. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  178. package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
  179. package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
  180. package/node_modules/@buddi/runtime/dist/grounding.d.ts +54 -0
  181. package/node_modules/@buddi/runtime/dist/grounding.d.ts.map +1 -0
  182. package/node_modules/@buddi/runtime/dist/grounding.js +158 -0
  183. package/node_modules/@buddi/runtime/dist/grounding.js.map +1 -0
  184. package/node_modules/@buddi/runtime/dist/index.d.ts +1 -0
  185. package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
  186. package/node_modules/@buddi/runtime/dist/index.js +1 -0
  187. package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
  188. package/node_modules/@buddi/runtime/dist/loop.d.ts +13 -0
  189. package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
  190. package/node_modules/@buddi/runtime/dist/loop.js +98 -3
  191. package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
  192. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  193. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  194. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  195. package/node_modules/@buddi/tool-email/dist/agent.d.ts +6 -1
  196. package/node_modules/@buddi/tool-email/dist/agent.d.ts.map +1 -1
  197. package/node_modules/@buddi/tool-email/dist/agent.js +6 -1
  198. package/node_modules/@buddi/tool-email/dist/agent.js.map +1 -1
  199. package/node_modules/@buddi/tool-email/dist/html.d.ts +16 -0
  200. package/node_modules/@buddi/tool-email/dist/html.d.ts.map +1 -0
  201. package/node_modules/@buddi/tool-email/dist/html.js +273 -0
  202. package/node_modules/@buddi/tool-email/dist/html.js.map +1 -0
  203. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts +8 -0
  204. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts.map +1 -1
  205. package/node_modules/@buddi/tool-email/dist/imap/fake.js +15 -0
  206. package/node_modules/@buddi/tool-email/dist/imap/fake.js.map +1 -1
  207. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts +7 -0
  208. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
  209. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +79 -17
  210. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
  211. package/node_modules/@buddi/tool-email/dist/index.d.ts +5 -1
  212. package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
  213. package/node_modules/@buddi/tool-email/dist/index.js +11 -3
  214. package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
  215. package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
  216. package/node_modules/@buddi/tool-email/dist/mail.js +7 -0
  217. package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
  218. package/node_modules/@buddi/tool-email/dist/pages/descriptors.d.ts.map +1 -1
  219. package/node_modules/@buddi/tool-email/dist/pages/descriptors.js +208 -176
  220. package/node_modules/@buddi/tool-email/dist/pages/descriptors.js.map +1 -1
  221. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts +3 -1
  222. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
  223. package/node_modules/@buddi/tool-email/dist/pages/index.js +5 -2
  224. package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
  225. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +17 -3
  226. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
  227. package/node_modules/@buddi/tool-email/dist/pages/queries.js +283 -62
  228. package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
  229. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.d.ts +25 -0
  230. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.d.ts.map +1 -0
  231. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.js +33 -0
  232. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.js.map +1 -0
  233. package/node_modules/@buddi/tool-email/dist/ports.d.ts +25 -0
  234. package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
  235. package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
  236. package/node_modules/@buddi/tool-email/dist/retention.d.ts.map +1 -1
  237. package/node_modules/@buddi/tool-email/dist/retention.js +1 -0
  238. package/node_modules/@buddi/tool-email/dist/retention.js.map +1 -1
  239. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts +9 -1
  240. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
  241. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +5 -2
  242. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
  243. package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts +69 -0
  244. package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts.map +1 -0
  245. package/node_modules/@buddi/tool-email/dist/text-cleanup.js +96 -0
  246. package/node_modules/@buddi/tool-email/dist/text-cleanup.js.map +1 -0
  247. package/node_modules/@buddi/tool-email/dist/text.d.ts +29 -0
  248. package/node_modules/@buddi/tool-email/dist/text.d.ts.map +1 -0
  249. package/node_modules/@buddi/tool-email/dist/text.js +153 -0
  250. package/node_modules/@buddi/tool-email/dist/text.js.map +1 -0
  251. package/node_modules/@buddi/tool-email/dist/worker.d.ts +64 -0
  252. package/node_modules/@buddi/tool-email/dist/worker.d.ts.map +1 -0
  253. package/node_modules/@buddi/tool-email/dist/worker.js +123 -0
  254. package/node_modules/@buddi/tool-email/dist/worker.js.map +1 -0
  255. package/node_modules/@buddi/tool-email/migrations/028_reading.sql +23 -0
  256. package/node_modules/@buddi/tool-email/package.json +1 -0
  257. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  258. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  259. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  260. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  261. package/node_modules/entities/LICENSE +11 -0
  262. package/node_modules/entities/decode.d.ts +1 -0
  263. package/node_modules/entities/decode.js +3 -0
  264. package/node_modules/entities/dist/commonjs/decode-codepoint.d.ts +19 -0
  265. package/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map +1 -0
  266. package/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  267. package/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
  268. package/node_modules/entities/dist/commonjs/decode.d.ts +209 -0
  269. package/node_modules/entities/dist/commonjs/decode.d.ts.map +1 -0
  270. package/node_modules/entities/dist/commonjs/decode.js +511 -0
  271. package/node_modules/entities/dist/commonjs/decode.js.map +1 -0
  272. package/node_modules/entities/dist/commonjs/encode.d.ts +22 -0
  273. package/node_modules/entities/dist/commonjs/encode.d.ts.map +1 -0
  274. package/node_modules/entities/dist/commonjs/encode.js +73 -0
  275. package/node_modules/entities/dist/commonjs/encode.js.map +1 -0
  276. package/node_modules/entities/dist/commonjs/escape.d.ts +43 -0
  277. package/node_modules/entities/dist/commonjs/escape.d.ts.map +1 -0
  278. package/node_modules/entities/dist/commonjs/escape.js +121 -0
  279. package/node_modules/entities/dist/commonjs/escape.js.map +1 -0
  280. package/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts +2 -0
  281. package/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map +1 -0
  282. package/node_modules/entities/dist/commonjs/generated/decode-data-html.js +10 -0
  283. package/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
  284. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts +2 -0
  285. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map +1 -0
  286. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +10 -0
  287. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
  288. package/node_modules/entities/dist/commonjs/generated/encode-html.d.ts +8 -0
  289. package/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map +1 -0
  290. package/node_modules/entities/dist/commonjs/generated/encode-html.js +13 -0
  291. package/node_modules/entities/dist/commonjs/generated/encode-html.js.map +1 -0
  292. package/node_modules/entities/dist/commonjs/index.d.ts +96 -0
  293. package/node_modules/entities/dist/commonjs/index.d.ts.map +1 -0
  294. package/node_modules/entities/dist/commonjs/index.js +131 -0
  295. package/node_modules/entities/dist/commonjs/index.js.map +1 -0
  296. package/node_modules/entities/dist/commonjs/package.json +3 -0
  297. package/node_modules/entities/dist/esm/decode-codepoint.d.ts +19 -0
  298. package/node_modules/entities/dist/esm/decode-codepoint.d.ts.map +1 -0
  299. package/node_modules/entities/dist/esm/decode-codepoint.js +72 -0
  300. package/node_modules/entities/dist/esm/decode-codepoint.js.map +1 -0
  301. package/node_modules/entities/dist/esm/decode.d.ts +209 -0
  302. package/node_modules/entities/dist/esm/decode.d.ts.map +1 -0
  303. package/node_modules/entities/dist/esm/decode.js +497 -0
  304. package/node_modules/entities/dist/esm/decode.js.map +1 -0
  305. package/node_modules/entities/dist/esm/encode.d.ts +22 -0
  306. package/node_modules/entities/dist/esm/encode.d.ts.map +1 -0
  307. package/node_modules/entities/dist/esm/encode.js +69 -0
  308. package/node_modules/entities/dist/esm/encode.js.map +1 -0
  309. package/node_modules/entities/dist/esm/escape.d.ts +43 -0
  310. package/node_modules/entities/dist/esm/escape.d.ts.map +1 -0
  311. package/node_modules/entities/dist/esm/escape.js +117 -0
  312. package/node_modules/entities/dist/esm/escape.js.map +1 -0
  313. package/node_modules/entities/dist/esm/generated/decode-data-html.d.ts +2 -0
  314. package/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map +1 -0
  315. package/node_modules/entities/dist/esm/generated/decode-data-html.js +7 -0
  316. package/node_modules/entities/dist/esm/generated/decode-data-html.js.map +1 -0
  317. package/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts +2 -0
  318. package/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map +1 -0
  319. package/node_modules/entities/dist/esm/generated/decode-data-xml.js +7 -0
  320. package/node_modules/entities/dist/esm/generated/decode-data-xml.js.map +1 -0
  321. package/node_modules/entities/dist/esm/generated/encode-html.d.ts +8 -0
  322. package/node_modules/entities/dist/esm/generated/encode-html.d.ts.map +1 -0
  323. package/node_modules/entities/dist/esm/generated/encode-html.js +10 -0
  324. package/node_modules/entities/dist/esm/generated/encode-html.js.map +1 -0
  325. package/node_modules/entities/dist/esm/index.d.ts +96 -0
  326. package/node_modules/entities/dist/esm/index.d.ts.map +1 -0
  327. package/node_modules/entities/dist/esm/index.js +107 -0
  328. package/node_modules/entities/dist/esm/index.js.map +1 -0
  329. package/node_modules/entities/dist/esm/package.json +3 -0
  330. package/node_modules/entities/escape.d.ts +1 -0
  331. package/node_modules/entities/escape.js +3 -0
  332. package/node_modules/entities/package.json +118 -0
  333. package/node_modules/entities/readme.md +122 -0
  334. package/node_modules/entities/src/decode-codepoint.ts +81 -0
  335. package/node_modules/entities/src/decode.spec.ts +320 -0
  336. package/node_modules/entities/src/decode.ts +620 -0
  337. package/node_modules/entities/src/encode.spec.ts +78 -0
  338. package/node_modules/entities/src/encode.ts +77 -0
  339. package/node_modules/entities/src/escape.spec.ts +14 -0
  340. package/node_modules/entities/src/escape.ts +148 -0
  341. package/node_modules/entities/src/generated/.eslintrc.json +10 -0
  342. package/node_modules/entities/src/generated/decode-data-html.ts +8 -0
  343. package/node_modules/entities/src/generated/decode-data-xml.ts +8 -0
  344. package/node_modules/entities/src/generated/encode-html.ts +17 -0
  345. package/node_modules/entities/src/index.spec.ts +125 -0
  346. package/node_modules/entities/src/index.ts +188 -0
  347. package/node_modules/marked/bin/main.js +1 -1
  348. package/node_modules/marked/lib/marked.d.ts +7 -0
  349. package/node_modules/marked/lib/marked.esm.js +14 -14
  350. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  351. package/node_modules/marked/lib/marked.umd.js +19 -19
  352. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  353. package/node_modules/marked/man/marked.1 +1 -1
  354. package/node_modules/marked/package.json +1 -1
  355. package/node_modules/parse5/LICENSE +19 -0
  356. package/node_modules/parse5/README.md +38 -0
  357. package/node_modules/parse5/dist/cjs/common/doctype.d.ts +4 -0
  358. package/node_modules/parse5/dist/cjs/common/doctype.js +118 -0
  359. package/node_modules/parse5/dist/cjs/common/error-codes.d.ts +67 -0
  360. package/node_modules/parse5/dist/cjs/common/error-codes.js +66 -0
  361. package/node_modules/parse5/dist/cjs/common/foreign-content.d.ts +9 -0
  362. package/node_modules/parse5/dist/cjs/common/foreign-content.js +237 -0
  363. package/node_modules/parse5/dist/cjs/common/html.d.ts +289 -0
  364. package/node_modules/parse5/dist/cjs/common/html.js +528 -0
  365. package/node_modules/parse5/dist/cjs/common/token.d.ts +84 -0
  366. package/node_modules/parse5/dist/cjs/common/token.js +24 -0
  367. package/node_modules/parse5/dist/cjs/common/unicode.d.ts +42 -0
  368. package/node_modules/parse5/dist/cjs/common/unicode.js +70 -0
  369. package/node_modules/parse5/dist/cjs/index.d.ts +71 -0
  370. package/node_modules/parse5/dist/cjs/index.js +54 -0
  371. package/node_modules/parse5/dist/cjs/package.json +1 -0
  372. package/node_modules/parse5/dist/cjs/parser/formatting-element-list.d.ts +36 -0
  373. package/node_modules/parse5/dist/cjs/parser/formatting-element-list.js +114 -0
  374. package/node_modules/parse5/dist/cjs/parser/index.d.ts +221 -0
  375. package/node_modules/parse5/dist/cjs/parser/index.js +3240 -0
  376. package/node_modules/parse5/dist/cjs/parser/open-element-stack.d.ts +53 -0
  377. package/node_modules/parse5/dist/cjs/parser/open-element-stack.js +328 -0
  378. package/node_modules/parse5/dist/cjs/serializer/index.d.ts +60 -0
  379. package/node_modules/parse5/dist/cjs/serializer/index.js +172 -0
  380. package/node_modules/parse5/dist/cjs/tokenizer/index.d.ts +247 -0
  381. package/node_modules/parse5/dist/cjs/tokenizer/index.js +2714 -0
  382. package/node_modules/parse5/dist/cjs/tokenizer/preprocessor.d.ts +36 -0
  383. package/node_modules/parse5/dist/cjs/tokenizer/preprocessor.js +200 -0
  384. package/node_modules/parse5/dist/cjs/tree-adapters/default.d.ts +84 -0
  385. package/node_modules/parse5/dist/cjs/tree-adapters/default.js +176 -0
  386. package/node_modules/parse5/dist/cjs/tree-adapters/interface.d.ts +255 -0
  387. package/node_modules/parse5/dist/cjs/tree-adapters/interface.js +2 -0
  388. package/node_modules/parse5/dist/common/doctype.d.ts +4 -0
  389. package/node_modules/parse5/dist/common/doctype.js +114 -0
  390. package/node_modules/parse5/dist/common/error-codes.d.ts +67 -0
  391. package/node_modules/parse5/dist/common/error-codes.js +63 -0
  392. package/node_modules/parse5/dist/common/foreign-content.d.ts +9 -0
  393. package/node_modules/parse5/dist/common/foreign-content.js +228 -0
  394. package/node_modules/parse5/dist/common/html.d.ts +289 -0
  395. package/node_modules/parse5/dist/common/html.js +523 -0
  396. package/node_modules/parse5/dist/common/token.d.ts +84 -0
  397. package/node_modules/parse5/dist/common/token.js +20 -0
  398. package/node_modules/parse5/dist/common/unicode.d.ts +42 -0
  399. package/node_modules/parse5/dist/common/unicode.js +62 -0
  400. package/node_modules/parse5/dist/index.d.ts +71 -0
  401. package/node_modules/parse5/dist/index.js +42 -0
  402. package/node_modules/parse5/dist/parser/formatting-element-list.d.ts +36 -0
  403. package/node_modules/parse5/dist/parser/formatting-element-list.js +110 -0
  404. package/node_modules/parse5/dist/parser/index.d.ts +221 -0
  405. package/node_modules/parse5/dist/parser/index.js +3245 -0
  406. package/node_modules/parse5/dist/parser/open-element-stack.d.ts +53 -0
  407. package/node_modules/parse5/dist/parser/open-element-stack.js +324 -0
  408. package/node_modules/parse5/dist/serializer/index.d.ts +60 -0
  409. package/node_modules/parse5/dist/serializer/index.js +168 -0
  410. package/node_modules/parse5/dist/tokenizer/index.d.ts +247 -0
  411. package/node_modules/parse5/dist/tokenizer/index.js +2710 -0
  412. package/node_modules/parse5/dist/tokenizer/preprocessor.d.ts +36 -0
  413. package/node_modules/parse5/dist/tokenizer/preprocessor.js +196 -0
  414. package/node_modules/parse5/dist/tree-adapters/default.d.ts +84 -0
  415. package/node_modules/parse5/dist/tree-adapters/default.js +173 -0
  416. package/node_modules/parse5/dist/tree-adapters/interface.d.ts +255 -0
  417. package/node_modules/parse5/dist/tree-adapters/interface.js +1 -0
  418. package/node_modules/parse5/package.json +50 -0
  419. package/package.json +2 -2
  420. package/packages/cli/dist/.tsbuildinfo +1 -1
  421. package/packages/cli/dist/access-cmd.d.ts +2 -1
  422. package/packages/cli/dist/access-cmd.d.ts.map +1 -1
  423. package/packages/cli/dist/access-cmd.js +40 -7
  424. package/packages/cli/dist/access-cmd.js.map +1 -1
  425. package/packages/cli/dist/args.d.ts +2 -1
  426. package/packages/cli/dist/args.d.ts.map +1 -1
  427. package/packages/cli/dist/args.js +7 -3
  428. package/packages/cli/dist/args.js.map +1 -1
  429. package/packages/cli/dist/commands.d.ts.map +1 -1
  430. package/packages/cli/dist/commands.js +3 -2
  431. package/packages/cli/dist/commands.js.map +1 -1
  432. package/packages/cli/dist/main.js +1 -1
  433. package/packages/cli/dist/main.js.map +1 -1
  434. package/packages/cli/dist/mcp/server.js +1 -1
  435. package/packages/cli/dist/mcp/server.js.map +1 -1
  436. package/packages/cli/dist/mcp/tools.d.ts.map +1 -1
  437. package/packages/cli/dist/mcp/tools.js +60 -0
  438. package/packages/cli/dist/mcp/tools.js.map +1 -1
  439. package/packages/core/dist/.tsbuildinfo +1 -1
  440. package/packages/core/dist/lock.d.ts +15 -1
  441. package/packages/core/dist/lock.d.ts.map +1 -1
  442. package/packages/core/dist/lock.js +15 -1
  443. package/packages/core/dist/lock.js.map +1 -1
  444. package/packages/core/dist/pages.d.ts +75 -0
  445. package/packages/core/dist/pages.d.ts.map +1 -1
  446. package/packages/core/dist/pages.js +14 -0
  447. package/packages/core/dist/pages.js.map +1 -1
  448. package/packages/core/dist/plugin/index.d.ts +2 -2
  449. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  450. package/packages/core/dist/plugin/index.js.map +1 -1
  451. package/packages/core/dist/plugin/version.d.ts +1 -1
  452. package/packages/core/dist/plugin/version.js +1 -1
  453. package/packages/core/dist/provider-accounts.d.ts +32 -0
  454. package/packages/core/dist/provider-accounts.d.ts.map +1 -1
  455. package/packages/core/dist/provider-accounts.js +22 -0
  456. package/packages/core/dist/provider-accounts.js.map +1 -1
  457. package/packages/core/dist/tools.d.ts +6 -1
  458. package/packages/core/dist/tools.d.ts.map +1 -1
  459. package/packages/core/dist/tools.js.map +1 -1
  460. package/packages/core/migrations/077_lock_background_portrait.sql +5 -0
  461. package/packages/gateway/dist/.tsbuildinfo +1 -1
  462. package/packages/gateway/dist/agents/agent-intro.d.ts +31 -0
  463. package/packages/gateway/dist/agents/agent-intro.d.ts.map +1 -0
  464. package/packages/gateway/dist/agents/agent-intro.js +116 -0
  465. package/packages/gateway/dist/agents/agent-intro.js.map +1 -0
  466. package/packages/gateway/dist/agents/delegation.d.ts +10 -0
  467. package/packages/gateway/dist/agents/delegation.d.ts.map +1 -1
  468. package/packages/gateway/dist/agents/delegation.js +18 -1
  469. package/packages/gateway/dist/agents/delegation.js.map +1 -1
  470. package/packages/gateway/dist/agents/owner-tools.d.ts +21 -8
  471. package/packages/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  472. package/packages/gateway/dist/agents/owner-tools.js +201 -36
  473. package/packages/gateway/dist/agents/owner-tools.js.map +1 -1
  474. package/packages/gateway/dist/agents/platform.d.ts +14 -1
  475. package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
  476. package/packages/gateway/dist/agents/platform.js +44 -11
  477. package/packages/gateway/dist/agents/platform.js.map +1 -1
  478. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  479. package/packages/gateway/dist/bootstrap.js +2 -0
  480. package/packages/gateway/dist/bootstrap.js.map +1 -1
  481. package/packages/gateway/dist/edition-origin.d.ts +57 -0
  482. package/packages/gateway/dist/edition-origin.d.ts.map +1 -0
  483. package/packages/gateway/dist/edition-origin.js +156 -0
  484. package/packages/gateway/dist/edition-origin.js.map +1 -0
  485. package/packages/gateway/dist/evals/golden.d.ts +5 -0
  486. package/packages/gateway/dist/evals/golden.d.ts.map +1 -1
  487. package/packages/gateway/dist/evals/golden.js +48 -0
  488. package/packages/gateway/dist/evals/golden.js.map +1 -1
  489. package/packages/gateway/dist/mcp/requests.d.ts +8 -2
  490. package/packages/gateway/dist/mcp/requests.d.ts.map +1 -1
  491. package/packages/gateway/dist/mcp/requests.js +74 -1
  492. package/packages/gateway/dist/mcp/requests.js.map +1 -1
  493. package/packages/gateway/dist/owner-profile-edit.d.ts +160 -0
  494. package/packages/gateway/dist/owner-profile-edit.d.ts.map +1 -0
  495. package/packages/gateway/dist/owner-profile-edit.js +296 -0
  496. package/packages/gateway/dist/owner-profile-edit.js.map +1 -0
  497. package/packages/gateway/dist/provider-accounts.d.ts.map +1 -1
  498. package/packages/gateway/dist/provider-accounts.js +2 -1
  499. package/packages/gateway/dist/provider-accounts.js.map +1 -1
  500. package/packages/gateway/dist/system-context.d.ts +9 -0
  501. package/packages/gateway/dist/system-context.d.ts.map +1 -1
  502. package/packages/gateway/dist/system-context.js +28 -2
  503. package/packages/gateway/dist/system-context.js.map +1 -1
  504. package/packages/gateway/dist/telegram/approvals.d.ts +6 -0
  505. package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
  506. package/packages/gateway/dist/telegram/approvals.js +10 -2
  507. package/packages/gateway/dist/telegram/approvals.js.map +1 -1
  508. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  509. package/packages/gateway/dist/telegram/main.js +10 -3
  510. package/packages/gateway/dist/telegram/main.js.map +1 -1
  511. package/packages/gateway/dist/telegram/outbound.d.ts +9 -0
  512. package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
  513. package/packages/gateway/dist/telegram/outbound.js +43 -0
  514. package/packages/gateway/dist/telegram/outbound.js.map +1 -1
  515. package/packages/gateway/dist/telegram/surface.d.ts +2 -0
  516. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  517. package/packages/gateway/dist/telegram/surface.js +2 -1
  518. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  519. package/packages/gateway/dist/tips/engine.d.ts +32 -0
  520. package/packages/gateway/dist/tips/engine.d.ts.map +1 -1
  521. package/packages/gateway/dist/tips/engine.js +69 -0
  522. package/packages/gateway/dist/tips/engine.js.map +1 -1
  523. package/packages/gateway/dist/tips/route.d.ts +1 -3
  524. package/packages/gateway/dist/tips/route.d.ts.map +1 -1
  525. package/packages/gateway/dist/tips/route.js +54 -30
  526. package/packages/gateway/dist/tips/route.js.map +1 -1
  527. package/packages/gateway/dist/web/access/cloudflare-connector.d.ts +63 -0
  528. package/packages/gateway/dist/web/access/cloudflare-connector.d.ts.map +1 -0
  529. package/packages/gateway/dist/web/access/cloudflare-connector.js +87 -0
  530. package/packages/gateway/dist/web/access/cloudflare-connector.js.map +1 -0
  531. package/packages/gateway/dist/web/access/cloudflare-setup.d.ts +39 -4
  532. package/packages/gateway/dist/web/access/cloudflare-setup.d.ts.map +1 -1
  533. package/packages/gateway/dist/web/access/cloudflare-setup.js +99 -11
  534. package/packages/gateway/dist/web/access/cloudflare-setup.js.map +1 -1
  535. package/packages/gateway/dist/web/access/cloudflare-token.js +1 -1
  536. package/packages/gateway/dist/web/access/cloudflare-token.js.map +1 -1
  537. package/packages/gateway/dist/web/access/index.d.ts +1 -0
  538. package/packages/gateway/dist/web/access/index.d.ts.map +1 -1
  539. package/packages/gateway/dist/web/access/index.js +1 -0
  540. package/packages/gateway/dist/web/access/index.js.map +1 -1
  541. package/packages/gateway/dist/web/agent-offers.d.ts +10 -1
  542. package/packages/gateway/dist/web/agent-offers.d.ts.map +1 -1
  543. package/packages/gateway/dist/web/agent-offers.js +14 -1
  544. package/packages/gateway/dist/web/agent-offers.js.map +1 -1
  545. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  546. package/packages/gateway/dist/web/api-routes.js +37 -8
  547. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  548. package/packages/gateway/dist/web/approval-ask.d.ts +16 -0
  549. package/packages/gateway/dist/web/approval-ask.d.ts.map +1 -0
  550. package/packages/gateway/dist/web/approval-ask.js +51 -0
  551. package/packages/gateway/dist/web/approval-ask.js.map +1 -0
  552. package/packages/gateway/dist/web/chat.d.ts +6 -0
  553. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  554. package/packages/gateway/dist/web/chat.js +4 -0
  555. package/packages/gateway/dist/web/chat.js.map +1 -1
  556. package/packages/gateway/dist/web/live.d.ts +7 -0
  557. package/packages/gateway/dist/web/live.d.ts.map +1 -1
  558. package/packages/gateway/dist/web/live.js +12 -0
  559. package/packages/gateway/dist/web/live.js.map +1 -1
  560. package/packages/gateway/dist/web/lock-backgrounds.d.ts +9 -0
  561. package/packages/gateway/dist/web/lock-backgrounds.d.ts.map +1 -0
  562. package/packages/gateway/dist/web/lock-backgrounds.js +60 -0
  563. package/packages/gateway/dist/web/lock-backgrounds.js.map +1 -0
  564. package/packages/gateway/dist/web/lock.d.ts +13 -1
  565. package/packages/gateway/dist/web/lock.d.ts.map +1 -1
  566. package/packages/gateway/dist/web/lock.js +84 -23
  567. package/packages/gateway/dist/web/lock.js.map +1 -1
  568. package/packages/gateway/dist/web/places.d.ts +5 -0
  569. package/packages/gateway/dist/web/places.d.ts.map +1 -1
  570. package/packages/gateway/dist/web/places.js +11 -4
  571. package/packages/gateway/dist/web/places.js.map +1 -1
  572. package/packages/gateway/dist/web/server.d.ts +3 -0
  573. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  574. package/packages/gateway/dist/web/server.js +63 -50
  575. package/packages/gateway/dist/web/server.js.map +1 -1
  576. package/packages/install/dist/.tsbuildinfo +1 -1
  577. package/packages/install/dist/cloudflared.d.ts +121 -0
  578. package/packages/install/dist/cloudflared.d.ts.map +1 -0
  579. package/packages/install/dist/cloudflared.js +451 -0
  580. package/packages/install/dist/cloudflared.js.map +1 -0
  581. package/packages/install/dist/index.d.ts +1 -0
  582. package/packages/install/dist/index.d.ts.map +1 -1
  583. package/packages/install/dist/index.js +1 -0
  584. package/packages/install/dist/index.js.map +1 -1
  585. package/packages/install/dist/supervisor.d.ts +6 -1
  586. package/packages/install/dist/supervisor.d.ts.map +1 -1
  587. package/packages/install/dist/supervisor.js +51 -5
  588. package/packages/install/dist/supervisor.js.map +1 -1
  589. package/packages/runtime/dist/.tsbuildinfo +1 -1
  590. package/packages/runtime/dist/codex-direct.d.ts +1 -1
  591. package/packages/runtime/dist/codex-direct.js +1 -1
  592. package/packages/runtime/dist/grounding.d.ts +54 -0
  593. package/packages/runtime/dist/grounding.d.ts.map +1 -0
  594. package/packages/runtime/dist/grounding.js +158 -0
  595. package/packages/runtime/dist/grounding.js.map +1 -0
  596. package/packages/runtime/dist/index.d.ts +1 -0
  597. package/packages/runtime/dist/index.d.ts.map +1 -1
  598. package/packages/runtime/dist/index.js +1 -0
  599. package/packages/runtime/dist/index.js.map +1 -1
  600. package/packages/runtime/dist/loop.d.ts +13 -0
  601. package/packages/runtime/dist/loop.d.ts.map +1 -1
  602. package/packages/runtime/dist/loop.js +98 -3
  603. package/packages/runtime/dist/loop.js.map +1 -1
  604. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  605. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  606. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  607. package/packages/tools/email/dist/agent.d.ts +6 -1
  608. package/packages/tools/email/dist/agent.d.ts.map +1 -1
  609. package/packages/tools/email/dist/agent.js +6 -1
  610. package/packages/tools/email/dist/agent.js.map +1 -1
  611. package/packages/tools/email/dist/html.d.ts +16 -0
  612. package/packages/tools/email/dist/html.d.ts.map +1 -0
  613. package/packages/tools/email/dist/html.js +273 -0
  614. package/packages/tools/email/dist/html.js.map +1 -0
  615. package/packages/tools/email/dist/imap/fake.d.ts +8 -0
  616. package/packages/tools/email/dist/imap/fake.d.ts.map +1 -1
  617. package/packages/tools/email/dist/imap/fake.js +15 -0
  618. package/packages/tools/email/dist/imap/fake.js.map +1 -1
  619. package/packages/tools/email/dist/imap/imapflow-client.d.ts +7 -0
  620. package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
  621. package/packages/tools/email/dist/imap/imapflow-client.js +79 -17
  622. package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
  623. package/packages/tools/email/dist/index.d.ts +5 -1
  624. package/packages/tools/email/dist/index.d.ts.map +1 -1
  625. package/packages/tools/email/dist/index.js +11 -3
  626. package/packages/tools/email/dist/index.js.map +1 -1
  627. package/packages/tools/email/dist/mail.d.ts.map +1 -1
  628. package/packages/tools/email/dist/mail.js +7 -0
  629. package/packages/tools/email/dist/mail.js.map +1 -1
  630. package/packages/tools/email/dist/pages/descriptors.d.ts.map +1 -1
  631. package/packages/tools/email/dist/pages/descriptors.js +208 -176
  632. package/packages/tools/email/dist/pages/descriptors.js.map +1 -1
  633. package/packages/tools/email/dist/pages/index.d.ts +3 -1
  634. package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
  635. package/packages/tools/email/dist/pages/index.js +5 -2
  636. package/packages/tools/email/dist/pages/index.js.map +1 -1
  637. package/packages/tools/email/dist/pages/queries.d.ts +17 -3
  638. package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
  639. package/packages/tools/email/dist/pages/queries.js +283 -62
  640. package/packages/tools/email/dist/pages/queries.js.map +1 -1
  641. package/packages/tools/email/dist/pages/thread-tools.d.ts +25 -0
  642. package/packages/tools/email/dist/pages/thread-tools.d.ts.map +1 -0
  643. package/packages/tools/email/dist/pages/thread-tools.js +33 -0
  644. package/packages/tools/email/dist/pages/thread-tools.js.map +1 -0
  645. package/packages/tools/email/dist/ports.d.ts +25 -0
  646. package/packages/tools/email/dist/ports.d.ts.map +1 -1
  647. package/packages/tools/email/dist/ports.js.map +1 -1
  648. package/packages/tools/email/dist/retention.d.ts.map +1 -1
  649. package/packages/tools/email/dist/retention.js +1 -0
  650. package/packages/tools/email/dist/retention.js.map +1 -1
  651. package/packages/tools/email/dist/sources/inbox-poll.d.ts +9 -1
  652. package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
  653. package/packages/tools/email/dist/sources/inbox-poll.js +5 -2
  654. package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
  655. package/packages/tools/email/dist/text-cleanup.d.ts +69 -0
  656. package/packages/tools/email/dist/text-cleanup.d.ts.map +1 -0
  657. package/packages/tools/email/dist/text-cleanup.js +96 -0
  658. package/packages/tools/email/dist/text-cleanup.js.map +1 -0
  659. package/packages/tools/email/dist/text.d.ts +29 -0
  660. package/packages/tools/email/dist/text.d.ts.map +1 -0
  661. package/packages/tools/email/dist/text.js +153 -0
  662. package/packages/tools/email/dist/text.js.map +1 -0
  663. package/packages/tools/email/dist/worker.d.ts +64 -0
  664. package/packages/tools/email/dist/worker.d.ts.map +1 -0
  665. package/packages/tools/email/dist/worker.js +123 -0
  666. package/packages/tools/email/dist/worker.js.map +1 -0
  667. package/packages/tools/email/migrations/028_reading.sql +23 -0
  668. package/packages/tools/email/package.json +1 -0
  669. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  670. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  671. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  672. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  673. package/packages/web/dist/apple-touch-icon.png +0 -0
  674. package/packages/web/dist/assets/index-CPFSREcP.css +1 -0
  675. package/packages/web/dist/assets/index-DYUn1V0x.js +150 -0
  676. package/packages/web/dist/assets/{lottie_light-CHWAvOde.js → lottie_light-DxWeiVDC.js} +1 -1
  677. package/packages/web/dist/backgrounds/golden-streak-portrait.jpg +0 -0
  678. package/packages/web/dist/backgrounds/golden-streak-thumb.jpg +0 -0
  679. package/packages/web/dist/backgrounds/manifest.json +18 -0
  680. package/packages/web/dist/backgrounds/peoria-autumn-waterfront-thumb.jpg +0 -0
  681. package/packages/web/dist/backgrounds/peoria-autumn-waterfront.jpg +0 -0
  682. package/packages/web/dist/build.json +1 -1
  683. package/packages/web/dist/favicon-16.png +0 -0
  684. package/packages/web/dist/favicon-32.png +0 -0
  685. package/packages/web/dist/favicon.ico +0 -0
  686. package/packages/web/dist/icon-192.png +0 -0
  687. package/packages/web/dist/icon-512.png +0 -0
  688. package/packages/web/dist/index.html +6 -3
  689. package/packages/web/dist/manifest.webmanifest +1 -1
  690. package/packages/web/dist/maskable-512.png +0 -0
  691. package/packages/web/dist/precache.json +7 -5
  692. package/packages/web/dist/assets/index-BB52n8Fa.js +0 -146
  693. package/packages/web/dist/assets/index-CY4cPN4I.css +0 -1
  694. package/packages/web/dist/favicon.png +0 -0
  695. package/packages/web/dist/icon-maskable-512.png +0 -0
@@ -73,7 +73,7 @@ import { connectionsOf } from '@buddi/tool-mcp';
73
73
  import { CONNECTIONS_CALLBACK_PATH, connectionsRoute } from './connections.js';
74
74
  import { browserHost } from '../browser-host.js';
75
75
  import { hostService } from '@buddi/tool-host';
76
- import { listToolPermissions, revokeToolPermission, getArtifact, readArtifactBytes, artifactBytesExist, discardUnreferencedUpload, listLibrary, getLibraryEntry, decodeCursor, filterKey, textPreviewable, readArtifactPrefix, FILE_FAMILIES, LIBRARY_PAGE_MAX, getOwnerProfile, saveOwnerProfile, isKnownTimezone, listGroups, getGroup, createGroup, updateGroup, archiveGroup, deleteGroup, restoreGroup, clearGroupHistory, groupHistorySize, GROUP_UNDO_MS, GroupRefusal, createGroupConversation, listGroupConversations, latestGroupConversation, openGroupRequest, conversationGroup } from '@buddi/core';
76
+ import { listToolPermissions, revokeToolPermission, getArtifact, readArtifactBytes, artifactBytesExist, discardUnreferencedUpload, listLibrary, getLibraryEntry, decodeCursor, filterKey, textPreviewable, readArtifactPrefix, FILE_FAMILIES, LIBRARY_PAGE_MAX, getOwnerProfile, saveOwnerProfile, listGroups, getGroup, createGroup, updateGroup, archiveGroup, deleteGroup, restoreGroup, clearGroupHistory, groupHistorySize, GROUP_UNDO_MS, GroupRefusal, createGroupConversation, listGroupConversations, latestGroupConversation, openGroupRequest, conversationGroup } from '@buddi/core';
77
77
  import { EXPORT_MIME, MAX_EXPORT_SOURCE_BYTES, exportFormats, exportName } from '../export/document.js';
78
78
  import { ExportRefused, runExport } from '../export/convert.js';
79
79
  import { createVault } from '@buddi/core';
@@ -100,6 +100,7 @@ import { arrivalOf } from './access/arrival.js';
100
100
  import { CloudflareApiError, createCloudflareApi, CLOUDFLARE_PERMISSION_LINES, CLOUDFLARE_TOKEN_URL } from './access/cloudflare-api.js';
101
101
  import { CLOUDFLARE_SETUP_KEY, checkSetupInput, claimSetupOperation, freshProgress, setupBusySentence, setupOperation, removeCloudflareSetup, runCloudflareSetup, } from './access/cloudflare-setup.js';
102
102
  import { ownerSecretTokenStore } from './access/cloudflare-token.js';
103
+ import { connectorTokenStore, supervisorConnector } from './access/cloudflare-connector.js';
103
104
  import { createAccessRegistry } from './access/registry.js';
104
105
  import { createIngress } from './access/ingress.js';
105
106
  import { clientKey } from './client-key.js';
@@ -118,14 +119,16 @@ import { createCatalogueService } from './catalogue-source.js';
118
119
  import { catalogueBindingOf } from '../agents/platform.js';
119
120
  import { pluginFoldersRoute } from './folders.js';
120
121
  import { tipsRoute } from '../tips/route.js';
122
+ import { approvalAsk } from './approval-ask.js';
121
123
  import { createWidgets, widgetsRoute } from './widgets.js';
122
124
  import { createRequirements } from '../plugins/requires.js';
123
125
  import { placesList, placesRoute } from './places.js';
124
126
  import { peopleRoute } from './people.js';
125
127
  import { syncDateMissions } from '../missions/dates.js';
126
128
  import { resumeParkedForPage } from '../missions/parked.js';
127
- import { OWNER_DATE_FORMATS, OWNER_TIME_FORMATS, validDayMonth } from '@buddi/core';
129
+ import { checkProfilePatch } from '../owner-profile-edit.js';
128
130
  import { readFacts, webSettingsStore } from '../tips/facts.js';
131
+ import { dismissAgentIntro, readAgentIntro } from '../agents/agent-intro.js';
129
132
  import { dismissAgentOffer, isPendingAccept, raiseAgentOffers, readAgentOffers } from './agent-offers.js';
130
133
  import { currentVersion, lockVersion, upgradeJobRoute, upgradeRoute, versionCheckRoute, versionRoute, } from './version.js';
131
134
  import { leaveRecoveryMode, readRecoveryView } from './recovery.js';
@@ -144,6 +147,7 @@ import { QUIET_UNAVAILABLE_TEXT, pluginCommands } from './composer.js';
144
147
  import { createEngagementHooks } from '../missions/engagement.js';
145
148
  import { apiTokensRoute, bearerOf, verifyApiToken } from './api-tokens.js';
146
149
  import { LockImageRefusal, MAX_LOCK_IMAGE_BYTES, normaliseLockImage } from './lock-image.js';
150
+ import { lockPicturesFrom } from './lock-backgrounds.js';
147
151
  import { cancelJobFromWeb, cancelReminderFromWeb, decideApprovalFromWeb, retryJobFromWeb, retryJobsFromWeb, dismissJobsFromWeb, undismissJobsFromWeb, setMissionEnabledFromWeb, keepMissionFromWeb, answerStillUsefulFromWeb, setPausedFromWeb, setScheduleFromWeb, dismissOfferFromWeb, dismissOffersFromWeb, takeOfferFromWeb, } from './write.js';
148
152
  /** How long one account's connection test answers again instead of calling the provider. */
149
153
  const ACCOUNT_TEST_COOLDOWN_MS = 10_000;
@@ -368,6 +372,7 @@ export function createWebApp(deps) {
368
372
  now: deps.now(),
369
373
  agentOffers: async () => (await readAgentOffers({
370
374
  registry: deps.registry, ctx: deps.ctx, now: deps.now, log, pool: deps.pool, agentIds: () => deps.catalog.list().map((a) => a.id),
375
+ agentRoles: () => deps.catalog.list().flatMap((a) => a.roles ?? []),
371
376
  })).offers,
372
377
  signals: async () => {
373
378
  const service = deps.connections ?? connectionsOf(deps.registry.manifests());
@@ -378,6 +383,7 @@ export function createWebApp(deps) {
378
383
  /** Remove buddi from this Mac: the token its plan mints (web/uninstall.ts). */
379
384
  const uninstallTokens = createTokenStore();
380
385
  const lock = createLock({ pool: deps.pool, sessions, now: deps.now, get timezone() { return deps.timezone; }, widgets, needsYou, log,
386
+ pictures: () => lockPicturesFrom(assetsDir),
381
387
  // The status bar's answer, so the lock screen's version line never disagrees with it.
382
388
  version: async () => lockVersion(await versionRoute({ env: deps.env ?? process.env, log, assetsDir })) });
383
389
  const openStreams = new Map();
@@ -496,6 +502,11 @@ export function createWebApp(deps) {
496
502
  // A bundle script's run asks every time: its card offers no standing permission (`asksEachTime`).
497
503
  const permissionScopes = (tool, envelope) => deps.registry.lookup(tool)?.reusableApproval && !asksEachTime(envelope)
498
504
  ? { permissionScopes: ['conversation', 'always'] } : {};
505
+ /** What a card adds to an approval row: its scopes, and its heading in the owner's words (approval-ask.ts). */
506
+ const approvalExtras = (a) => ({
507
+ ...permissionScopes(a.tool, a.envelope),
508
+ ask: approvalAsk(a.tool, a.preview, deps.registry.list().find((t) => t.name === a.tool)?.description),
509
+ });
499
510
  writeDeps.resumeInteractive = (action, outcome) => chat?.resumeHost(action, outcome);
500
511
  /*
501
512
  * What an approved MCP write reaches: the functions the dashboard's own
@@ -532,6 +543,8 @@ export function createWebApp(deps) {
532
543
  updateNote: (input) => updateNote(deps.pool, input),
533
544
  forgetNote: (id) => forgetNote(deps.pool, { id, now: deps.now() }),
534
545
  },
546
+ // buddi.profile_update: Settings → Profile's save, places through the same geocoder.
547
+ profile: { env: deps.env ?? process.env, log, ...(deps.placesHttp ? { http: deps.placesHttp } : {}) },
535
548
  });
536
549
  // The binding is the credential: loopback is open, anything else keeps the
537
550
  // ticket-and-session gate. The override is a test seam, nothing more.
@@ -629,6 +642,8 @@ export function createWebApp(deps) {
629
642
  hand.revoke((lease) => forgotten.has(lease), 'Cloudflare access changed. Sign in again.');
630
643
  }
631
644
  await ingress.sync();
645
+ // Cloudflare Access on or off: the supervisor starts or stops its connector to match.
646
+ void connectorControl()?.sync().catch(() => undefined);
632
647
  };
633
648
  /*
634
649
  * "Set it up for me" (access/cloudflare-setup.ts): one run at a time, in
@@ -643,6 +658,22 @@ export function createWebApp(deps) {
643
658
  const row = await readWebSetting(deps.pool, CLOUDFLARE_SETUP_KEY);
644
659
  return row && typeof row === 'object' && typeof row.host === 'string' ? row : null;
645
660
  };
661
+ /** The supervisor's connector, when a supervisor runs this gateway (install's cloudflared.ts). */
662
+ const connectorControl = () => {
663
+ if (deps.cloudflare?.connector !== undefined)
664
+ return deps.cloudflare.connector ?? undefined;
665
+ const socket = (deps.env ?? process.env).BUDDI_SUPERVISOR_SOCKET?.trim();
666
+ if (!socket)
667
+ return undefined;
668
+ return supervisorConnector(socket, connectorTokenStore(deps.pool, createVault({ env: deps.env ?? process.env })));
669
+ };
670
+ // Once at startup: a supervisor whose own boot sync could not read the
671
+ // setting yet (the gateway runs the migrations) catches up now, not at the
672
+ // next settings save or the hourly tick. Only when Access is on: off, the
673
+ // supervisor's boot sync already stopped it and there is nothing to catch up.
674
+ void readCloudflareSetting()
675
+ .then((setting) => (setting.enabled ? connectorControl()?.sync() : undefined))
676
+ .catch(() => undefined);
646
677
  const setupDepsFor = (token, lease, signal) => ({
647
678
  api: createCloudflareApi({ token, transport: deps.cloudflare?.api?.transport, baseUrl: deps.cloudflare?.api?.baseUrl }),
648
679
  ingressPort: ingress.port() ?? (askedIngressPort() || null) ?? accessCtx.dashboardPort() + 2,
@@ -653,6 +684,7 @@ export function createWebApp(deps) {
653
684
  saveRecord: (record) => writeWebSetting(deps.pool, CLOUDFLARE_SETUP_KEY, record),
654
685
  test: (team) => jwks.refresh(team),
655
686
  ...(deps.cloudflare?.setup ?? {}),
687
+ connector: connectorControl(),
656
688
  signal,
657
689
  lease,
658
690
  });
@@ -1246,6 +1278,7 @@ export function createWebApp(deps) {
1246
1278
  ...pagesDeps(),
1247
1279
  pool: deps.pool,
1248
1280
  agentIds: () => deps.catalog.list().map((a) => a.id),
1281
+ agentRoles: () => deps.catalog.list().flatMap((a) => a.roles ?? []),
1249
1282
  // Only a first run under way holds the offers back: an older install
1250
1283
  // that never ran it keeps them.
1251
1284
  firstRunDone: async () => (await getOnboarding(deps.pool)).state !== 'in-progress',
@@ -1360,7 +1393,7 @@ export function createWebApp(deps) {
1360
1393
  env: deps.env ?? process.env,
1361
1394
  ...(deps.telegram ? { telegram: deps.telegram } : {}),
1362
1395
  });
1363
- // Tips on Home: one quiet card a day, the switch, the pages seen (tips/route.ts).
1396
+ // Tips: the stack the lightbulb on Home opens, and the pages seen (tips/route.ts).
1364
1397
  if (path === '/api/tips' || path.startsWith('/api/tips/')) {
1365
1398
  let body = {};
1366
1399
  if (method === 'POST' || method === 'PUT') {
@@ -1408,13 +1441,13 @@ export function createWebApp(deps) {
1408
1441
  return answer?.status === 200 && answer.body?.data?.wanted === true;
1409
1442
  },
1410
1443
  }),
1411
- }, { method, path, body, preview: url.searchParams.get('preview') });
1444
+ }, { method, path, body, preview: url.searchParams.get('preview'), peek: url.searchParams.get('peek') === '1' });
1412
1445
  return sendJson(res, answer.status, answer.body);
1413
1446
  }
1414
1447
  // The lock screen: its state and data, Lock now, Unlock, the PIN, its settings and picture (web/lock.ts).
1415
1448
  if (path === '/api/lock' || path.startsWith('/api/lock/')) {
1416
1449
  let body = {};
1417
- const upload = method === 'POST' && path === '/api/lock/background';
1450
+ const upload = method === 'POST' && (path === '/api/lock/background' || path === '/api/lock/background/portrait');
1418
1451
  if ((method === 'POST' || method === 'PUT') && !upload) {
1419
1452
  try {
1420
1453
  body = await readJsonBody(req);
@@ -1823,8 +1856,8 @@ export function createWebApp(deps) {
1823
1856
  }
1824
1857
  case '/api/approvals': {
1825
1858
  const approvals = await readApprovals(deps.pool, now, boundedLimit(q.get('limit'), 50));
1826
- return sendJson(res, 200, { pending: approvals.pending.map(a => ({ ...a, ...permissionScopes(a.tool, a.envelope) })),
1827
- recent: approvals.recent.map(a => ({ ...a, ...permissionScopes(a.tool, a.envelope) })) });
1859
+ return sendJson(res, 200, { pending: approvals.pending.map(a => ({ ...a, ...approvalExtras(a) })),
1860
+ recent: approvals.recent.map(a => ({ ...a, ...approvalExtras(a) })) });
1828
1861
  }
1829
1862
  case '/api/offers':
1830
1863
  // The roster goes in so the read can lapse an offer whose agent is
@@ -2279,6 +2312,14 @@ export function createWebApp(deps) {
2279
2312
  res.end(method === 'HEAD' ? undefined : file.text);
2280
2313
  return;
2281
2314
  }
2315
+ // A new agent's chat: the once-only strip, both directions of delegation (agents/agent-intro.ts).
2316
+ const agentIntro = /^\/api\/agents\/([^/]+)\/intro$/.exec(path);
2317
+ if (agentIntro) {
2318
+ const view = await readAgentIntro(deps.pool, deps.catalog, decodeURIComponent(agentIntro[1]));
2319
+ if (!view)
2320
+ return sendJson(res, 404, { error: 'no such agent' });
2321
+ return sendJson(res, 200, view);
2322
+ }
2282
2323
  // The Skills tab: every skill the agent loads, learned ones with their versions.
2283
2324
  const agentSkills = /^\/api\/agents\/([^/]+)\/skills$/.exec(path);
2284
2325
  if (agentSkills) {
@@ -2318,7 +2359,7 @@ export function createWebApp(deps) {
2318
2359
  const action = await getAction(deps.pool, decodeURIComponent(approval[1]));
2319
2360
  if (!action)
2320
2361
  return sendJson(res, 404, { error: 'no such action' });
2321
- return sendJson(res, 200, { action: { ...toApprovalView(action), ...permissionScopes(action.tool, action.envelope) } });
2362
+ return sendJson(res, 200, { action: { ...toApprovalView(action), ...approvalExtras(action) } });
2322
2363
  }
2323
2364
  /* ---------------- chat ---------------- */
2324
2365
  const groupConversations = /^\/api\/groups\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/conversations$/i.exec(path);
@@ -2716,7 +2757,7 @@ export function createWebApp(deps) {
2716
2757
  // The token stays kept: the panel offers to forget it (…/setup/forget-token), and Set it up again reuses it.
2717
2758
  return sendJson(res, 200, await setupView());
2718
2759
  }
2719
- const input = { host: str(body.host), email: str(body.email), zone: str(body.zone) || undefined, adopt: body.adopt === true };
2760
+ const input = { host: str(body.host), email: str(body.email), zone: str(body.zone) || undefined, adopt: body.adopt === true, useSystemDaemon: body.useSystemDaemon === true };
2720
2761
  const invalid = checkSetupInput(input);
2721
2762
  if (invalid)
2722
2763
  return sendJson(res, 400, { error: invalid });
@@ -3853,47 +3894,11 @@ export function createWebApp(deps) {
3853
3894
  * the owner may write here directly; the same validation, the same row.
3854
3895
  */
3855
3896
  if (path === '/api/owner') {
3856
- const patch = {};
3857
- for (const key of ['preferredName', 'timezone', 'language', 'about', 'fullName', 'pronouns']) {
3858
- const given = body[key];
3859
- if (given === undefined)
3860
- continue;
3861
- if (given !== null && typeof given !== 'string')
3862
- return sendJson(res, 400, { error: `\`${key}\` must be a string or null` });
3863
- patch[key] = given;
3864
- }
3865
- // How times and dates read: a known word, or null for Auto.
3866
- if (body.timeFormat !== undefined) {
3867
- if (body.timeFormat !== null && !OWNER_TIME_FORMATS.includes(body.timeFormat))
3868
- return sendJson(res, 400, { error: '`timeFormat` is 12h, 24h or null (Auto).' });
3869
- patch.timeFormat = body.timeFormat;
3870
- }
3871
- if (body.dateFormat !== undefined) {
3872
- if (body.dateFormat !== null && !OWNER_DATE_FORMATS.includes(body.dateFormat))
3873
- return sendJson(res, 400, { error: '`dateFormat` is short, long, iso or null (Auto).' });
3874
- patch.dateFormat = body.dateFormat;
3875
- }
3876
- if (patch.timezone && !isKnownTimezone(patch.timezone))
3877
- return sendJson(res, 400, { error: `"${patch.timezone}" is not a timezone this host knows.` });
3878
- if (patch.preferredName && patch.preferredName.length > 80)
3879
- return sendJson(res, 400, { error: 'The name is too long (80 characters at most).' });
3880
- if (patch.about && patch.about.length > 1000)
3881
- return sendJson(res, 400, { error: 'Keep the line about you under 1,000 characters.' });
3882
- if (patch.fullName && patch.fullName.length > 120)
3883
- return sendJson(res, 400, { error: 'The full name is too long (120 characters at most).' });
3884
- if (patch.pronouns && patch.pronouns.length > 40)
3885
- return sendJson(res, 400, { error: 'Keep the pronouns under 40 characters.' });
3886
- // The birthday: day and month (the year optional), or null to clear it.
3887
- if (body.birthday !== undefined) {
3888
- if (body.birthday === null)
3889
- patch.birthday = null;
3890
- else {
3891
- const birthday = validDayMonth(body.birthday);
3892
- if (!birthday)
3893
- return sendJson(res, 400, { error: 'The birthday needs a real day and month; the year is optional.' });
3894
- patch.birthday = birthday;
3895
- }
3896
- }
3897
+ // The same checks as owner.set_profile and buddi.profile_update (owner-profile-edit.ts).
3898
+ const checked = checkProfilePatch(body);
3899
+ if (!checked.ok)
3900
+ return sendJson(res, 400, { error: checked.error });
3901
+ const patch = checked.patch;
3897
3902
  // The zone applies at once; schedules kept in the old one move with it.
3898
3903
  const { profile, zoneChange } = await saveOwnerProfile(deps.pool, patch, deps.env ?? process.env);
3899
3904
  // The birthday greeting follows the new day at once (missions/dates.ts).
@@ -4008,6 +4013,14 @@ export function createWebApp(deps) {
4008
4013
  return sendJson(res, 500, { error: err instanceof Error ? err.message : String(err) });
4009
4014
  }
4010
4015
  }
4016
+ const introDismissed = /^\/api\/agents\/([^/]+)\/intro\/dismiss$/.exec(path);
4017
+ if (introDismissed) {
4018
+ const id = decodeURIComponent(introDismissed[1]);
4019
+ if (!deps.catalog.get(id))
4020
+ return sendJson(res, 404, { error: 'no such agent' });
4021
+ await dismissAgentIntro(deps.pool, id);
4022
+ return sendJson(res, 200, { ok: true });
4023
+ }
4011
4024
  const delegatesRoute = /^\/api\/agents\/([^/]+)\/delegates$/.exec(path);
4012
4025
  if (delegatesRoute) {
4013
4026
  const search = agentSearchPath(deps.env ?? process.env);