@withbuddi/buddi 0.1.0-pre.24 → 0.1.0-pre.26

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 (716) hide show
  1. package/README.md +62 -47
  2. package/examples/agents/agent-father/agent.md +1 -0
  3. package/extension/background.js +24 -1
  4. package/extension/blob.png +0 -0
  5. package/extension/fonts/dm-mono-latin-400-normal.woff2 +0 -0
  6. package/extension/fonts/dm-mono-latin-500-normal.woff2 +0 -0
  7. package/extension/fonts/dm-sans-latin-ext-standard-normal.woff2 +0 -0
  8. package/extension/fonts/dm-sans-latin-standard-normal.woff2 +0 -0
  9. package/extension/icons/128.png +0 -0
  10. package/extension/icons/16.png +0 -0
  11. package/extension/icons/32.png +0 -0
  12. package/extension/icons/48.png +0 -0
  13. package/extension/manifest.json +4 -3
  14. package/extension/popup.css +199 -81
  15. package/extension/popup.html +39 -17
  16. package/extension/popup.js +133 -37
  17. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  18. package/node_modules/@buddi/cli/dist/args.d.ts +59 -0
  19. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  20. package/node_modules/@buddi/cli/dist/args.js +141 -0
  21. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  22. package/node_modules/@buddi/cli/dist/commands.d.ts +2 -0
  23. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  24. package/node_modules/@buddi/cli/dist/commands.js +71 -1
  25. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  26. package/node_modules/@buddi/cli/dist/connections-cmd.d.ts +93 -0
  27. package/node_modules/@buddi/cli/dist/connections-cmd.d.ts.map +1 -0
  28. package/node_modules/@buddi/cli/dist/connections-cmd.js +657 -0
  29. package/node_modules/@buddi/cli/dist/connections-cmd.js.map +1 -0
  30. package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
  31. package/node_modules/@buddi/cli/dist/doctor-probes.js +82 -17
  32. package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
  33. package/node_modules/@buddi/cli/dist/doctor.d.ts +9 -9
  34. package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
  35. package/node_modules/@buddi/cli/dist/doctor.js +20 -17
  36. package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
  37. package/node_modules/@buddi/cli/dist/init-plan.d.ts +1 -2
  38. package/node_modules/@buddi/cli/dist/init-plan.d.ts.map +1 -1
  39. package/node_modules/@buddi/cli/dist/init-plan.js +2 -6
  40. package/node_modules/@buddi/cli/dist/init-plan.js.map +1 -1
  41. package/node_modules/@buddi/cli/dist/init.d.ts.map +1 -1
  42. package/node_modules/@buddi/cli/dist/init.js +5 -29
  43. package/node_modules/@buddi/cli/dist/init.js.map +1 -1
  44. package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
  45. package/node_modules/@buddi/cli/dist/main.js +10 -1
  46. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  47. package/node_modules/@buddi/cli/dist/mcp/gateway-client.d.ts +5 -0
  48. package/node_modules/@buddi/cli/dist/mcp/gateway-client.d.ts.map +1 -1
  49. package/node_modules/@buddi/cli/dist/mcp/gateway-client.js +15 -4
  50. package/node_modules/@buddi/cli/dist/mcp/gateway-client.js.map +1 -1
  51. package/node_modules/@buddi/cli/dist/service/index.d.ts +4 -2
  52. package/node_modules/@buddi/cli/dist/service/index.d.ts.map +1 -1
  53. package/node_modules/@buddi/cli/dist/service/index.js +5 -7
  54. package/node_modules/@buddi/cli/dist/service/index.js.map +1 -1
  55. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  56. package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
  57. package/node_modules/@buddi/core/dist/agents/catalog.js +11 -2
  58. package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
  59. package/node_modules/@buddi/core/dist/agents/provider-from-env.d.ts +7 -6
  60. package/node_modules/@buddi/core/dist/agents/provider-from-env.d.ts.map +1 -1
  61. package/node_modules/@buddi/core/dist/agents/provider-from-env.js +9 -12
  62. package/node_modules/@buddi/core/dist/agents/provider-from-env.js.map +1 -1
  63. package/node_modules/@buddi/core/dist/agents/skills.d.ts +4 -4
  64. package/node_modules/@buddi/core/dist/backup/load.d.ts.map +1 -1
  65. package/node_modules/@buddi/core/dist/backup/load.js +37 -0
  66. package/node_modules/@buddi/core/dist/backup/load.js.map +1 -1
  67. package/node_modules/@buddi/core/dist/backup/restore.js +2 -2
  68. package/node_modules/@buddi/core/dist/backup/restore.js.map +1 -1
  69. package/node_modules/@buddi/core/dist/connection-config.d.ts +96 -0
  70. package/node_modules/@buddi/core/dist/connection-config.d.ts.map +1 -0
  71. package/node_modules/@buddi/core/dist/connection-config.js +308 -0
  72. package/node_modules/@buddi/core/dist/connection-config.js.map +1 -0
  73. package/node_modules/@buddi/core/dist/failures/owner-message.d.ts.map +1 -1
  74. package/node_modules/@buddi/core/dist/failures/owner-message.js +37 -10
  75. package/node_modules/@buddi/core/dist/failures/owner-message.js.map +1 -1
  76. package/node_modules/@buddi/core/dist/notifications/agent.d.ts +54 -0
  77. package/node_modules/@buddi/core/dist/notifications/agent.d.ts.map +1 -0
  78. package/node_modules/@buddi/core/dist/notifications/agent.js +134 -0
  79. package/node_modules/@buddi/core/dist/notifications/agent.js.map +1 -0
  80. package/node_modules/@buddi/core/dist/notifications/index.d.ts +1 -0
  81. package/node_modules/@buddi/core/dist/notifications/index.d.ts.map +1 -1
  82. package/node_modules/@buddi/core/dist/notifications/index.js +1 -0
  83. package/node_modules/@buddi/core/dist/notifications/index.js.map +1 -1
  84. package/node_modules/@buddi/core/dist/notifications/notify.d.ts +4 -0
  85. package/node_modules/@buddi/core/dist/notifications/notify.d.ts.map +1 -1
  86. package/node_modules/@buddi/core/dist/notifications/notify.js +19 -7
  87. package/node_modules/@buddi/core/dist/notifications/notify.js.map +1 -1
  88. package/node_modules/@buddi/core/dist/notifications/store.d.ts +8 -1
  89. package/node_modules/@buddi/core/dist/notifications/store.d.ts.map +1 -1
  90. package/node_modules/@buddi/core/dist/notifications/store.js +55 -6
  91. package/node_modules/@buddi/core/dist/notifications/store.js.map +1 -1
  92. package/node_modules/@buddi/core/dist/notifications/types.d.ts +26 -2
  93. package/node_modules/@buddi/core/dist/notifications/types.d.ts.map +1 -1
  94. package/node_modules/@buddi/core/dist/notifications/types.js +1 -1
  95. package/node_modules/@buddi/core/dist/notifications/types.js.map +1 -1
  96. package/node_modules/@buddi/core/dist/onboarding/store.d.ts.map +1 -1
  97. package/node_modules/@buddi/core/dist/onboarding/store.js +17 -1
  98. package/node_modules/@buddi/core/dist/onboarding/store.js.map +1 -1
  99. package/node_modules/@buddi/core/dist/onboarding/types.d.ts +14 -0
  100. package/node_modules/@buddi/core/dist/onboarding/types.d.ts.map +1 -1
  101. package/node_modules/@buddi/core/dist/provider-accounts.d.ts +21 -1
  102. package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
  103. package/node_modules/@buddi/core/dist/provider-accounts.js +31 -1
  104. package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
  105. package/node_modules/@buddi/core/dist/provider.d.ts +4 -3
  106. package/node_modules/@buddi/core/dist/provider.d.ts.map +1 -1
  107. package/node_modules/@buddi/core/dist/provider.js +7 -4
  108. package/node_modules/@buddi/core/dist/provider.js.map +1 -1
  109. package/node_modules/@buddi/core/dist/testing/accounts.d.ts +12 -0
  110. package/node_modules/@buddi/core/dist/testing/accounts.d.ts.map +1 -0
  111. package/node_modules/@buddi/core/dist/testing/accounts.js +7 -0
  112. package/node_modules/@buddi/core/dist/testing/accounts.js.map +1 -0
  113. package/node_modules/@buddi/core/dist/testing/index.d.ts +1 -0
  114. package/node_modules/@buddi/core/dist/testing/index.d.ts.map +1 -1
  115. package/node_modules/@buddi/core/dist/testing/index.js +1 -0
  116. package/node_modules/@buddi/core/dist/testing/index.js.map +1 -1
  117. package/node_modules/@buddi/core/dist/vault/resolve.d.ts.map +1 -1
  118. package/node_modules/@buddi/core/dist/vault/resolve.js +0 -3
  119. package/node_modules/@buddi/core/dist/vault/resolve.js.map +1 -1
  120. package/node_modules/@buddi/core/migrations/053_drop_legacy_anthropic_env.sql +31 -0
  121. package/node_modules/@buddi/core/migrations/054_agent_messages.sql +15 -0
  122. package/node_modules/@buddi/core/package.json +4 -0
  123. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  124. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts +34 -1
  125. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  126. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js +87 -4
  127. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js.map +1 -1
  128. package/node_modules/@buddi/gateway/dist/agents-cli.js +1 -1
  129. package/node_modules/@buddi/gateway/dist/agents-cli.js.map +1 -1
  130. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts +1 -3
  131. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  132. package/node_modules/@buddi/gateway/dist/bootstrap.js +16 -11
  133. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  134. package/node_modules/@buddi/gateway/dist/cli.js +1 -1
  135. package/node_modules/@buddi/gateway/dist/mlxh.d.ts +44 -0
  136. package/node_modules/@buddi/gateway/dist/mlxh.d.ts.map +1 -0
  137. package/node_modules/@buddi/gateway/dist/mlxh.js +98 -0
  138. package/node_modules/@buddi/gateway/dist/mlxh.js.map +1 -0
  139. package/node_modules/@buddi/gateway/dist/owner-secrets.d.ts +98 -9
  140. package/node_modules/@buddi/gateway/dist/owner-secrets.d.ts.map +1 -1
  141. package/node_modules/@buddi/gateway/dist/owner-secrets.js +237 -15
  142. package/node_modules/@buddi/gateway/dist/owner-secrets.js.map +1 -1
  143. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +4 -0
  144. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
  145. package/node_modules/@buddi/gateway/dist/plugins/stage.js +3 -0
  146. package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
  147. package/node_modules/@buddi/gateway/dist/plugins/update.d.ts +8 -0
  148. package/node_modules/@buddi/gateway/dist/plugins/update.d.ts.map +1 -1
  149. package/node_modules/@buddi/gateway/dist/plugins/update.js +8 -2
  150. package/node_modules/@buddi/gateway/dist/plugins/update.js.map +1 -1
  151. package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts +6 -13
  152. package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts.map +1 -1
  153. package/node_modules/@buddi/gateway/dist/provider-accounts.js +76 -16
  154. package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
  155. package/node_modules/@buddi/gateway/dist/providers.d.ts +3 -3
  156. package/node_modules/@buddi/gateway/dist/providers.d.ts.map +1 -1
  157. package/node_modules/@buddi/gateway/dist/providers.js +7 -7
  158. package/node_modules/@buddi/gateway/dist/providers.js.map +1 -1
  159. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  160. package/node_modules/@buddi/gateway/dist/serve.js +26 -8
  161. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  162. package/node_modules/@buddi/gateway/dist/surfaces/context-budget.d.ts +1 -1
  163. package/node_modules/@buddi/gateway/dist/surfaces/context-budget.d.ts.map +1 -1
  164. package/node_modules/@buddi/gateway/dist/surfaces/context-budget.js +46 -3
  165. package/node_modules/@buddi/gateway/dist/surfaces/context-budget.js.map +1 -1
  166. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  167. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js +2 -1
  168. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js.map +1 -1
  169. package/node_modules/@buddi/gateway/dist/system-context.d.ts +2 -0
  170. package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
  171. package/node_modules/@buddi/gateway/dist/system-context.js +5 -1
  172. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  173. package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts +7 -0
  174. package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts.map +1 -1
  175. package/node_modules/@buddi/gateway/dist/telegram/channel.js +14 -2
  176. package/node_modules/@buddi/gateway/dist/telegram/channel.js.map +1 -1
  177. package/node_modules/@buddi/gateway/dist/web/agents.d.ts.map +1 -1
  178. package/node_modules/@buddi/gateway/dist/web/agents.js +5 -1
  179. package/node_modules/@buddi/gateway/dist/web/agents.js.map +1 -1
  180. package/node_modules/@buddi/gateway/dist/web/connections.d.ts +18 -5
  181. package/node_modules/@buddi/gateway/dist/web/connections.d.ts.map +1 -1
  182. package/node_modules/@buddi/gateway/dist/web/connections.js +118 -8
  183. package/node_modules/@buddi/gateway/dist/web/connections.js.map +1 -1
  184. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +6 -0
  185. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  186. package/node_modules/@buddi/gateway/dist/web/extension.js +5 -1
  187. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  188. package/node_modules/@buddi/gateway/dist/web/market.d.ts +18 -0
  189. package/node_modules/@buddi/gateway/dist/web/market.d.ts.map +1 -1
  190. package/node_modules/@buddi/gateway/dist/web/market.js +20 -14
  191. package/node_modules/@buddi/gateway/dist/web/market.js.map +1 -1
  192. package/node_modules/@buddi/gateway/dist/web/notifications.d.ts +6 -0
  193. package/node_modules/@buddi/gateway/dist/web/notifications.d.ts.map +1 -1
  194. package/node_modules/@buddi/gateway/dist/web/notifications.js +14 -1
  195. package/node_modules/@buddi/gateway/dist/web/notifications.js.map +1 -1
  196. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +21 -7
  197. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
  198. package/node_modules/@buddi/gateway/dist/web/onboarding.js +64 -11
  199. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  200. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts +5 -0
  201. package/node_modules/@buddi/gateway/dist/web/plugins.d.ts.map +1 -1
  202. package/node_modules/@buddi/gateway/dist/web/plugins.js +11 -1
  203. package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
  204. package/node_modules/@buddi/gateway/dist/web/recovery.d.ts +10 -0
  205. package/node_modules/@buddi/gateway/dist/web/recovery.d.ts.map +1 -1
  206. package/node_modules/@buddi/gateway/dist/web/recovery.js +114 -34
  207. package/node_modules/@buddi/gateway/dist/web/recovery.js.map +1 -1
  208. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  209. package/node_modules/@buddi/gateway/dist/web/server.js +84 -8
  210. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  211. package/node_modules/@buddi/gateway/dist/web/sessions.d.ts +8 -0
  212. package/node_modules/@buddi/gateway/dist/web/sessions.d.ts.map +1 -1
  213. package/node_modules/@buddi/gateway/dist/web/sessions.js +24 -1
  214. package/node_modules/@buddi/gateway/dist/web/sessions.js.map +1 -1
  215. package/node_modules/@buddi/gateway/dist/web/static.d.ts +8 -0
  216. package/node_modules/@buddi/gateway/dist/web/static.d.ts.map +1 -1
  217. package/node_modules/@buddi/gateway/dist/web/static.js +21 -1
  218. package/node_modules/@buddi/gateway/dist/web/static.js.map +1 -1
  219. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts +91 -0
  220. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts.map +1 -0
  221. package/node_modules/@buddi/gateway/dist/web/take-on.js +287 -0
  222. package/node_modules/@buddi/gateway/dist/web/take-on.js.map +1 -0
  223. package/node_modules/@buddi/gateway/src/agents/starter/keeper/agent.md +2 -2
  224. package/node_modules/@buddi/gateway/src/agents/starter/planner/agent.md +1 -1
  225. package/node_modules/@buddi/gateway/src/agents/starter/scout/agent.md +1 -1
  226. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  227. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  228. package/node_modules/@buddi/runtime/dist/anthropic.d.ts +7 -0
  229. package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
  230. package/node_modules/@buddi/runtime/dist/anthropic.js +29 -3
  231. package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
  232. package/node_modules/@buddi/runtime/dist/delegate.js +1 -1
  233. package/node_modules/@buddi/runtime/dist/delegate.js.map +1 -1
  234. package/node_modules/@buddi/runtime/dist/provider-models.d.ts +2 -0
  235. package/node_modules/@buddi/runtime/dist/provider-models.d.ts.map +1 -1
  236. package/node_modules/@buddi/runtime/dist/provider-models.js +22 -0
  237. package/node_modules/@buddi/runtime/dist/provider-models.js.map +1 -1
  238. package/node_modules/@buddi/runtime/dist/search.js +2 -2
  239. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  240. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  241. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  242. package/node_modules/@buddi/tool-email/dist/config.d.ts +13 -9
  243. package/node_modules/@buddi/tool-email/dist/config.d.ts.map +1 -1
  244. package/node_modules/@buddi/tool-email/dist/config.js +33 -40
  245. package/node_modules/@buddi/tool-email/dist/config.js.map +1 -1
  246. package/node_modules/@buddi/tool-email/dist/index.d.ts +1 -1
  247. package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
  248. package/node_modules/@buddi/tool-email/dist/index.js +1 -1
  249. package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
  250. package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts +1 -2
  251. package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts.map +1 -1
  252. package/node_modules/@buddi/tool-email/dist/pages/accounts.js +42 -18
  253. package/node_modules/@buddi/tool-email/dist/pages/accounts.js.map +1 -1
  254. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
  255. package/node_modules/@buddi/tool-email/dist/pages/queries.js +7 -5
  256. package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
  257. package/node_modules/@buddi/tool-email/dist/ports.d.ts +5 -1
  258. package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
  259. package/node_modules/@buddi/tool-email/dist/tools/shared.js +1 -1
  260. package/node_modules/@buddi/tool-email/dist/tools/shared.js.map +1 -1
  261. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  262. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  263. package/node_modules/@buddi/tool-mcp/dist/catalog.d.ts +32 -2
  264. package/node_modules/@buddi/tool-mcp/dist/catalog.d.ts.map +1 -1
  265. package/node_modules/@buddi/tool-mcp/dist/catalog.js +41 -7
  266. package/node_modules/@buddi/tool-mcp/dist/catalog.js.map +1 -1
  267. package/node_modules/@buddi/tool-mcp/dist/device.d.ts +53 -0
  268. package/node_modules/@buddi/tool-mcp/dist/device.d.ts.map +1 -0
  269. package/node_modules/@buddi/tool-mcp/dist/device.js +100 -0
  270. package/node_modules/@buddi/tool-mcp/dist/device.js.map +1 -0
  271. package/node_modules/@buddi/tool-mcp/dist/fetch.d.ts +10 -1
  272. package/node_modules/@buddi/tool-mcp/dist/fetch.d.ts.map +1 -1
  273. package/node_modules/@buddi/tool-mcp/dist/fetch.js +7 -1
  274. package/node_modules/@buddi/tool-mcp/dist/fetch.js.map +1 -1
  275. package/node_modules/@buddi/tool-mcp/dist/index.d.ts +5 -3
  276. package/node_modules/@buddi/tool-mcp/dist/index.d.ts.map +1 -1
  277. package/node_modules/@buddi/tool-mcp/dist/index.js +7 -4
  278. package/node_modules/@buddi/tool-mcp/dist/index.js.map +1 -1
  279. package/node_modules/@buddi/tool-mcp/dist/ports.d.ts +31 -0
  280. package/node_modules/@buddi/tool-mcp/dist/ports.d.ts.map +1 -1
  281. package/node_modules/@buddi/tool-mcp/dist/preview.d.ts +16 -0
  282. package/node_modules/@buddi/tool-mcp/dist/preview.d.ts.map +1 -0
  283. package/node_modules/@buddi/tool-mcp/dist/preview.js +52 -0
  284. package/node_modules/@buddi/tool-mcp/dist/preview.js.map +1 -0
  285. package/node_modules/@buddi/tool-mcp/dist/program.d.ts +73 -0
  286. package/node_modules/@buddi/tool-mcp/dist/program.d.ts.map +1 -0
  287. package/node_modules/@buddi/tool-mcp/dist/program.js +306 -0
  288. package/node_modules/@buddi/tool-mcp/dist/program.js.map +1 -0
  289. package/node_modules/@buddi/tool-mcp/dist/service.d.ts +131 -22
  290. package/node_modules/@buddi/tool-mcp/dist/service.d.ts.map +1 -1
  291. package/node_modules/@buddi/tool-mcp/dist/service.js +717 -29
  292. package/node_modules/@buddi/tool-mcp/dist/service.js.map +1 -1
  293. package/node_modules/@buddi/tool-mcp/dist/session.d.ts +13 -1
  294. package/node_modules/@buddi/tool-mcp/dist/session.d.ts.map +1 -1
  295. package/node_modules/@buddi/tool-mcp/dist/session.js +27 -4
  296. package/node_modules/@buddi/tool-mcp/dist/session.js.map +1 -1
  297. package/node_modules/@buddi/tool-mcp/dist/store.d.ts +39 -1
  298. package/node_modules/@buddi/tool-mcp/dist/store.d.ts.map +1 -1
  299. package/node_modules/@buddi/tool-mcp/dist/store.js +24 -0
  300. package/node_modules/@buddi/tool-mcp/dist/store.js.map +1 -1
  301. package/node_modules/@buddi/tool-mcp/dist/testing/fake.d.ts +6 -0
  302. package/node_modules/@buddi/tool-mcp/dist/testing/fake.d.ts.map +1 -1
  303. package/node_modules/@buddi/tool-mcp/dist/testing/fake.js +26 -0
  304. package/node_modules/@buddi/tool-mcp/dist/testing/fake.js.map +1 -1
  305. package/node_modules/@buddi/tool-mcp/migrations/003_token_auth.sql +14 -0
  306. package/node_modules/@buddi/tool-mcp/migrations/004_programs.sql +26 -0
  307. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  308. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  309. package/node_modules/@buddi/tool-web/dist/providers/index.d.ts +1 -2
  310. package/node_modules/@buddi/tool-web/dist/providers/index.d.ts.map +1 -1
  311. package/node_modules/@buddi/tool-web/dist/providers/index.js +1 -2
  312. package/node_modules/@buddi/tool-web/dist/providers/index.js.map +1 -1
  313. package/node_modules/hono/dist/cjs/jsx/utils.js +1 -1
  314. package/node_modules/hono/dist/cjs/middleware/combine/index.js +3 -1
  315. package/node_modules/hono/dist/cjs/middleware/etag/index.js +2 -2
  316. package/node_modules/hono/dist/jsx/utils.js +1 -1
  317. package/node_modules/hono/dist/middleware/combine/index.js +3 -1
  318. package/node_modules/hono/dist/middleware/etag/index.js +2 -2
  319. package/node_modules/hono/dist/middleware/language/language.js +1 -1
  320. package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +2 -1
  321. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +2 -1
  322. package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +2 -1
  323. package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +2 -1
  324. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +2 -1
  325. package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +2 -1
  326. package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +2 -1
  327. package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +2 -1
  328. package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +2 -1
  329. package/node_modules/hono/dist/types/client/types.d.ts +2 -1
  330. package/node_modules/hono/dist/types/context.d.ts +2 -1
  331. package/node_modules/hono/dist/types/helper/cookie/index.d.ts +2 -1
  332. package/node_modules/hono/dist/types/helper/css/common.d.ts +2 -1
  333. package/node_modules/hono/dist/types/helper/css/index.d.ts +2 -1
  334. package/node_modules/hono/dist/types/helper/dev/index.d.ts +2 -1
  335. package/node_modules/hono/dist/types/helper/factory/index.d.ts +2 -1
  336. package/node_modules/hono/dist/types/helper/proxy/index.d.ts +2 -1
  337. package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +2 -1
  338. package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +2 -1
  339. package/node_modules/hono/dist/types/helper/testing/index.d.ts +2 -1
  340. package/node_modules/hono/dist/types/hono-base.d.ts +2 -1
  341. package/node_modules/hono/dist/types/http-exception.d.ts +2 -1
  342. package/node_modules/hono/dist/types/jsx/base.d.ts +4 -3
  343. package/node_modules/hono/dist/types/jsx/context.d.ts +2 -1
  344. package/node_modules/hono/dist/types/jsx/dom/client.d.ts +2 -1
  345. package/node_modules/hono/dist/types/jsx/dom/css.d.ts +2 -1
  346. package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +2 -1
  347. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +2 -1
  348. package/node_modules/hono/dist/types/jsx/dom/render.d.ts +2 -1
  349. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +2 -1
  350. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +2 -1
  351. package/node_modules/hono/dist/types/jsx/index.d.ts +2 -1
  352. package/node_modules/hono/dist/types/jsx/types.d.ts +2 -1
  353. package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +2 -1
  354. package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +2 -1
  355. package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +2 -1
  356. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +2 -1
  357. package/node_modules/hono/dist/types/middleware/compress/index.d.ts +2 -1
  358. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +2 -1
  359. package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +2 -1
  360. package/node_modules/hono/dist/types/middleware/etag/index.d.ts +2 -1
  361. package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +2 -1
  362. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -1
  363. package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +2 -1
  364. package/node_modules/hono/dist/types/middleware/language/index.d.ts +2 -1
  365. package/node_modules/hono/dist/types/middleware/logger/index.d.ts +2 -1
  366. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +2 -1
  367. package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +2 -1
  368. package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +2 -1
  369. package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +2 -1
  370. package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +2 -1
  371. package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +2 -1
  372. package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -1
  373. package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +2 -1
  374. package/node_modules/hono/dist/types/middleware/timing/index.d.ts +2 -1
  375. package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +2 -1
  376. package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +2 -1
  377. package/node_modules/hono/dist/types/request.d.ts +2 -1
  378. package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +2 -1
  379. package/node_modules/hono/dist/types/types.d.ts +2 -1
  380. package/node_modules/hono/dist/types/utils/body.d.ts +2 -1
  381. package/node_modules/hono/dist/types/utils/buffer.d.ts +2 -1
  382. package/node_modules/hono/dist/types/utils/cookie.d.ts +2 -1
  383. package/node_modules/hono/dist/types/utils/crypto.d.ts +2 -1
  384. package/node_modules/hono/dist/types/utils/filepath.d.ts +2 -1
  385. package/node_modules/hono/dist/types/utils/html.d.ts +2 -1
  386. package/node_modules/hono/dist/types/utils/mime.d.ts +2 -1
  387. package/node_modules/hono/dist/types/utils/types.d.ts +2 -1
  388. package/node_modules/hono/dist/types/utils/url.d.ts +2 -1
  389. package/node_modules/hono/dist/types/validator/utils.d.ts +2 -1
  390. package/node_modules/hono/dist/types/validator/validator.d.ts +2 -1
  391. package/node_modules/hono/package.json +2 -2
  392. package/node_modules/pg/lib/client.js +18 -0
  393. package/node_modules/pg/lib/connection.js +8 -1
  394. package/node_modules/pg/lib/crypto/cert-signatures.js +1 -1
  395. package/node_modules/pg/lib/native/client.js +11 -3
  396. package/node_modules/pg/lib/native/query.js +3 -1
  397. package/node_modules/pg/lib/query.js +5 -1
  398. package/node_modules/pg/lib/utils.js +19 -1
  399. package/node_modules/pg/package.json +5 -5
  400. package/node_modules/pg-connection-string/index.js +1 -1
  401. package/node_modules/pg-connection-string/package.json +2 -3
  402. package/node_modules/pg-protocol/dist/buffer-writer.d.ts +5 -1
  403. package/node_modules/pg-protocol/dist/buffer-writer.js +10 -1
  404. package/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -1
  405. package/node_modules/pg-protocol/dist/serializer.js +20 -18
  406. package/node_modules/pg-protocol/dist/serializer.js.map +1 -1
  407. package/node_modules/pg-protocol/package.json +2 -2
  408. package/node_modules/pg-protocol/src/buffer-writer.ts +12 -2
  409. package/node_modules/pg-protocol/src/serializer.ts +26 -20
  410. package/package.json +2 -2
  411. package/packages/cli/dist/.tsbuildinfo +1 -1
  412. package/packages/cli/dist/args.d.ts +59 -0
  413. package/packages/cli/dist/args.d.ts.map +1 -1
  414. package/packages/cli/dist/args.js +141 -0
  415. package/packages/cli/dist/args.js.map +1 -1
  416. package/packages/cli/dist/commands.d.ts +2 -0
  417. package/packages/cli/dist/commands.d.ts.map +1 -1
  418. package/packages/cli/dist/commands.js +71 -1
  419. package/packages/cli/dist/commands.js.map +1 -1
  420. package/packages/cli/dist/connections-cmd.d.ts +93 -0
  421. package/packages/cli/dist/connections-cmd.d.ts.map +1 -0
  422. package/packages/cli/dist/connections-cmd.js +657 -0
  423. package/packages/cli/dist/connections-cmd.js.map +1 -0
  424. package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
  425. package/packages/cli/dist/doctor-probes.js +82 -17
  426. package/packages/cli/dist/doctor-probes.js.map +1 -1
  427. package/packages/cli/dist/doctor.d.ts +9 -9
  428. package/packages/cli/dist/doctor.d.ts.map +1 -1
  429. package/packages/cli/dist/doctor.js +20 -17
  430. package/packages/cli/dist/doctor.js.map +1 -1
  431. package/packages/cli/dist/init-plan.d.ts +1 -2
  432. package/packages/cli/dist/init-plan.d.ts.map +1 -1
  433. package/packages/cli/dist/init-plan.js +2 -6
  434. package/packages/cli/dist/init-plan.js.map +1 -1
  435. package/packages/cli/dist/init.d.ts.map +1 -1
  436. package/packages/cli/dist/init.js +5 -29
  437. package/packages/cli/dist/init.js.map +1 -1
  438. package/packages/cli/dist/main.d.ts.map +1 -1
  439. package/packages/cli/dist/main.js +10 -1
  440. package/packages/cli/dist/main.js.map +1 -1
  441. package/packages/cli/dist/mcp/gateway-client.d.ts +5 -0
  442. package/packages/cli/dist/mcp/gateway-client.d.ts.map +1 -1
  443. package/packages/cli/dist/mcp/gateway-client.js +15 -4
  444. package/packages/cli/dist/mcp/gateway-client.js.map +1 -1
  445. package/packages/cli/dist/service/index.d.ts +4 -2
  446. package/packages/cli/dist/service/index.d.ts.map +1 -1
  447. package/packages/cli/dist/service/index.js +5 -7
  448. package/packages/cli/dist/service/index.js.map +1 -1
  449. package/packages/core/dist/.tsbuildinfo +1 -1
  450. package/packages/core/dist/agents/catalog.d.ts.map +1 -1
  451. package/packages/core/dist/agents/catalog.js +11 -2
  452. package/packages/core/dist/agents/catalog.js.map +1 -1
  453. package/packages/core/dist/agents/provider-from-env.d.ts +7 -6
  454. package/packages/core/dist/agents/provider-from-env.d.ts.map +1 -1
  455. package/packages/core/dist/agents/provider-from-env.js +9 -12
  456. package/packages/core/dist/agents/provider-from-env.js.map +1 -1
  457. package/packages/core/dist/agents/skills.d.ts +4 -4
  458. package/packages/core/dist/backup/load.d.ts.map +1 -1
  459. package/packages/core/dist/backup/load.js +37 -0
  460. package/packages/core/dist/backup/load.js.map +1 -1
  461. package/packages/core/dist/backup/restore.js +2 -2
  462. package/packages/core/dist/backup/restore.js.map +1 -1
  463. package/packages/core/dist/connection-config.d.ts +96 -0
  464. package/packages/core/dist/connection-config.d.ts.map +1 -0
  465. package/packages/core/dist/connection-config.js +308 -0
  466. package/packages/core/dist/connection-config.js.map +1 -0
  467. package/packages/core/dist/failures/owner-message.d.ts.map +1 -1
  468. package/packages/core/dist/failures/owner-message.js +37 -10
  469. package/packages/core/dist/failures/owner-message.js.map +1 -1
  470. package/packages/core/dist/notifications/agent.d.ts +54 -0
  471. package/packages/core/dist/notifications/agent.d.ts.map +1 -0
  472. package/packages/core/dist/notifications/agent.js +134 -0
  473. package/packages/core/dist/notifications/agent.js.map +1 -0
  474. package/packages/core/dist/notifications/index.d.ts +1 -0
  475. package/packages/core/dist/notifications/index.d.ts.map +1 -1
  476. package/packages/core/dist/notifications/index.js +1 -0
  477. package/packages/core/dist/notifications/index.js.map +1 -1
  478. package/packages/core/dist/notifications/notify.d.ts +4 -0
  479. package/packages/core/dist/notifications/notify.d.ts.map +1 -1
  480. package/packages/core/dist/notifications/notify.js +19 -7
  481. package/packages/core/dist/notifications/notify.js.map +1 -1
  482. package/packages/core/dist/notifications/store.d.ts +8 -1
  483. package/packages/core/dist/notifications/store.d.ts.map +1 -1
  484. package/packages/core/dist/notifications/store.js +55 -6
  485. package/packages/core/dist/notifications/store.js.map +1 -1
  486. package/packages/core/dist/notifications/types.d.ts +26 -2
  487. package/packages/core/dist/notifications/types.d.ts.map +1 -1
  488. package/packages/core/dist/notifications/types.js +1 -1
  489. package/packages/core/dist/notifications/types.js.map +1 -1
  490. package/packages/core/dist/onboarding/store.d.ts.map +1 -1
  491. package/packages/core/dist/onboarding/store.js +17 -1
  492. package/packages/core/dist/onboarding/store.js.map +1 -1
  493. package/packages/core/dist/onboarding/types.d.ts +14 -0
  494. package/packages/core/dist/onboarding/types.d.ts.map +1 -1
  495. package/packages/core/dist/provider-accounts.d.ts +21 -1
  496. package/packages/core/dist/provider-accounts.d.ts.map +1 -1
  497. package/packages/core/dist/provider-accounts.js +31 -1
  498. package/packages/core/dist/provider-accounts.js.map +1 -1
  499. package/packages/core/dist/provider.d.ts +4 -3
  500. package/packages/core/dist/provider.d.ts.map +1 -1
  501. package/packages/core/dist/provider.js +7 -4
  502. package/packages/core/dist/provider.js.map +1 -1
  503. package/packages/core/dist/testing/accounts.d.ts +12 -0
  504. package/packages/core/dist/testing/accounts.d.ts.map +1 -0
  505. package/packages/core/dist/testing/accounts.js +7 -0
  506. package/packages/core/dist/testing/accounts.js.map +1 -0
  507. package/packages/core/dist/testing/index.d.ts +1 -0
  508. package/packages/core/dist/testing/index.d.ts.map +1 -1
  509. package/packages/core/dist/testing/index.js +1 -0
  510. package/packages/core/dist/testing/index.js.map +1 -1
  511. package/packages/core/dist/vault/resolve.d.ts.map +1 -1
  512. package/packages/core/dist/vault/resolve.js +0 -3
  513. package/packages/core/dist/vault/resolve.js.map +1 -1
  514. package/packages/core/migrations/053_drop_legacy_anthropic_env.sql +31 -0
  515. package/packages/core/migrations/054_agent_messages.sql +15 -0
  516. package/packages/core/package.json +4 -0
  517. package/packages/gateway/dist/.tsbuildinfo +1 -1
  518. package/packages/gateway/dist/agents/owner-tools.d.ts +34 -1
  519. package/packages/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  520. package/packages/gateway/dist/agents/owner-tools.js +87 -4
  521. package/packages/gateway/dist/agents/owner-tools.js.map +1 -1
  522. package/packages/gateway/dist/agents-cli.js +1 -1
  523. package/packages/gateway/dist/agents-cli.js.map +1 -1
  524. package/packages/gateway/dist/bootstrap.d.ts +1 -3
  525. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  526. package/packages/gateway/dist/bootstrap.js +16 -11
  527. package/packages/gateway/dist/bootstrap.js.map +1 -1
  528. package/packages/gateway/dist/cli.js +1 -1
  529. package/packages/gateway/dist/mlxh.d.ts +44 -0
  530. package/packages/gateway/dist/mlxh.d.ts.map +1 -0
  531. package/packages/gateway/dist/mlxh.js +98 -0
  532. package/packages/gateway/dist/mlxh.js.map +1 -0
  533. package/packages/gateway/dist/owner-secrets.d.ts +98 -9
  534. package/packages/gateway/dist/owner-secrets.d.ts.map +1 -1
  535. package/packages/gateway/dist/owner-secrets.js +237 -15
  536. package/packages/gateway/dist/owner-secrets.js.map +1 -1
  537. package/packages/gateway/dist/plugins/stage.d.ts +4 -0
  538. package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
  539. package/packages/gateway/dist/plugins/stage.js +3 -0
  540. package/packages/gateway/dist/plugins/stage.js.map +1 -1
  541. package/packages/gateway/dist/plugins/update.d.ts +8 -0
  542. package/packages/gateway/dist/plugins/update.d.ts.map +1 -1
  543. package/packages/gateway/dist/plugins/update.js +8 -2
  544. package/packages/gateway/dist/plugins/update.js.map +1 -1
  545. package/packages/gateway/dist/provider-accounts.d.ts +6 -13
  546. package/packages/gateway/dist/provider-accounts.d.ts.map +1 -1
  547. package/packages/gateway/dist/provider-accounts.js +76 -16
  548. package/packages/gateway/dist/provider-accounts.js.map +1 -1
  549. package/packages/gateway/dist/providers.d.ts +3 -3
  550. package/packages/gateway/dist/providers.d.ts.map +1 -1
  551. package/packages/gateway/dist/providers.js +7 -7
  552. package/packages/gateway/dist/providers.js.map +1 -1
  553. package/packages/gateway/dist/serve.d.ts.map +1 -1
  554. package/packages/gateway/dist/serve.js +26 -8
  555. package/packages/gateway/dist/serve.js.map +1 -1
  556. package/packages/gateway/dist/surfaces/context-budget.d.ts +1 -1
  557. package/packages/gateway/dist/surfaces/context-budget.d.ts.map +1 -1
  558. package/packages/gateway/dist/surfaces/context-budget.js +46 -3
  559. package/packages/gateway/dist/surfaces/context-budget.js.map +1 -1
  560. package/packages/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  561. package/packages/gateway/dist/surfaces/pending-question.js +2 -1
  562. package/packages/gateway/dist/surfaces/pending-question.js.map +1 -1
  563. package/packages/gateway/dist/system-context.d.ts +2 -0
  564. package/packages/gateway/dist/system-context.d.ts.map +1 -1
  565. package/packages/gateway/dist/system-context.js +5 -1
  566. package/packages/gateway/dist/system-context.js.map +1 -1
  567. package/packages/gateway/dist/telegram/channel.d.ts +7 -0
  568. package/packages/gateway/dist/telegram/channel.d.ts.map +1 -1
  569. package/packages/gateway/dist/telegram/channel.js +14 -2
  570. package/packages/gateway/dist/telegram/channel.js.map +1 -1
  571. package/packages/gateway/dist/web/agents.d.ts.map +1 -1
  572. package/packages/gateway/dist/web/agents.js +5 -1
  573. package/packages/gateway/dist/web/agents.js.map +1 -1
  574. package/packages/gateway/dist/web/connections.d.ts +18 -5
  575. package/packages/gateway/dist/web/connections.d.ts.map +1 -1
  576. package/packages/gateway/dist/web/connections.js +118 -8
  577. package/packages/gateway/dist/web/connections.js.map +1 -1
  578. package/packages/gateway/dist/web/extension.d.ts +6 -0
  579. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  580. package/packages/gateway/dist/web/extension.js +5 -1
  581. package/packages/gateway/dist/web/extension.js.map +1 -1
  582. package/packages/gateway/dist/web/market.d.ts +18 -0
  583. package/packages/gateway/dist/web/market.d.ts.map +1 -1
  584. package/packages/gateway/dist/web/market.js +20 -14
  585. package/packages/gateway/dist/web/market.js.map +1 -1
  586. package/packages/gateway/dist/web/notifications.d.ts +6 -0
  587. package/packages/gateway/dist/web/notifications.d.ts.map +1 -1
  588. package/packages/gateway/dist/web/notifications.js +14 -1
  589. package/packages/gateway/dist/web/notifications.js.map +1 -1
  590. package/packages/gateway/dist/web/onboarding.d.ts +21 -7
  591. package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
  592. package/packages/gateway/dist/web/onboarding.js +64 -11
  593. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  594. package/packages/gateway/dist/web/plugins.d.ts +5 -0
  595. package/packages/gateway/dist/web/plugins.d.ts.map +1 -1
  596. package/packages/gateway/dist/web/plugins.js +11 -1
  597. package/packages/gateway/dist/web/plugins.js.map +1 -1
  598. package/packages/gateway/dist/web/recovery.d.ts +10 -0
  599. package/packages/gateway/dist/web/recovery.d.ts.map +1 -1
  600. package/packages/gateway/dist/web/recovery.js +114 -34
  601. package/packages/gateway/dist/web/recovery.js.map +1 -1
  602. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  603. package/packages/gateway/dist/web/server.js +84 -8
  604. package/packages/gateway/dist/web/server.js.map +1 -1
  605. package/packages/gateway/dist/web/sessions.d.ts +8 -0
  606. package/packages/gateway/dist/web/sessions.d.ts.map +1 -1
  607. package/packages/gateway/dist/web/sessions.js +24 -1
  608. package/packages/gateway/dist/web/sessions.js.map +1 -1
  609. package/packages/gateway/dist/web/static.d.ts +8 -0
  610. package/packages/gateway/dist/web/static.d.ts.map +1 -1
  611. package/packages/gateway/dist/web/static.js +21 -1
  612. package/packages/gateway/dist/web/static.js.map +1 -1
  613. package/packages/gateway/dist/web/take-on.d.ts +91 -0
  614. package/packages/gateway/dist/web/take-on.d.ts.map +1 -0
  615. package/packages/gateway/dist/web/take-on.js +287 -0
  616. package/packages/gateway/dist/web/take-on.js.map +1 -0
  617. package/packages/gateway/src/agents/starter/keeper/agent.md +2 -2
  618. package/packages/gateway/src/agents/starter/planner/agent.md +1 -1
  619. package/packages/gateway/src/agents/starter/scout/agent.md +1 -1
  620. package/packages/install/dist/.tsbuildinfo +1 -1
  621. package/packages/runtime/dist/.tsbuildinfo +1 -1
  622. package/packages/runtime/dist/anthropic.d.ts +7 -0
  623. package/packages/runtime/dist/anthropic.d.ts.map +1 -1
  624. package/packages/runtime/dist/anthropic.js +29 -3
  625. package/packages/runtime/dist/anthropic.js.map +1 -1
  626. package/packages/runtime/dist/delegate.js +1 -1
  627. package/packages/runtime/dist/delegate.js.map +1 -1
  628. package/packages/runtime/dist/provider-models.d.ts +2 -0
  629. package/packages/runtime/dist/provider-models.d.ts.map +1 -1
  630. package/packages/runtime/dist/provider-models.js +22 -0
  631. package/packages/runtime/dist/provider-models.js.map +1 -1
  632. package/packages/runtime/dist/search.js +2 -2
  633. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  634. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  635. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  636. package/packages/tools/email/dist/config.d.ts +13 -9
  637. package/packages/tools/email/dist/config.d.ts.map +1 -1
  638. package/packages/tools/email/dist/config.js +33 -40
  639. package/packages/tools/email/dist/config.js.map +1 -1
  640. package/packages/tools/email/dist/index.d.ts +1 -1
  641. package/packages/tools/email/dist/index.d.ts.map +1 -1
  642. package/packages/tools/email/dist/index.js +1 -1
  643. package/packages/tools/email/dist/index.js.map +1 -1
  644. package/packages/tools/email/dist/pages/accounts.d.ts +1 -2
  645. package/packages/tools/email/dist/pages/accounts.d.ts.map +1 -1
  646. package/packages/tools/email/dist/pages/accounts.js +42 -18
  647. package/packages/tools/email/dist/pages/accounts.js.map +1 -1
  648. package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
  649. package/packages/tools/email/dist/pages/queries.js +7 -5
  650. package/packages/tools/email/dist/pages/queries.js.map +1 -1
  651. package/packages/tools/email/dist/ports.d.ts +5 -1
  652. package/packages/tools/email/dist/ports.d.ts.map +1 -1
  653. package/packages/tools/email/dist/tools/shared.js +1 -1
  654. package/packages/tools/email/dist/tools/shared.js.map +1 -1
  655. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  656. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  657. package/packages/tools/mcp/dist/catalog.d.ts +32 -2
  658. package/packages/tools/mcp/dist/catalog.d.ts.map +1 -1
  659. package/packages/tools/mcp/dist/catalog.js +41 -7
  660. package/packages/tools/mcp/dist/catalog.js.map +1 -1
  661. package/packages/tools/mcp/dist/device.d.ts +53 -0
  662. package/packages/tools/mcp/dist/device.d.ts.map +1 -0
  663. package/packages/tools/mcp/dist/device.js +100 -0
  664. package/packages/tools/mcp/dist/device.js.map +1 -0
  665. package/packages/tools/mcp/dist/fetch.d.ts +10 -1
  666. package/packages/tools/mcp/dist/fetch.d.ts.map +1 -1
  667. package/packages/tools/mcp/dist/fetch.js +7 -1
  668. package/packages/tools/mcp/dist/fetch.js.map +1 -1
  669. package/packages/tools/mcp/dist/index.d.ts +5 -3
  670. package/packages/tools/mcp/dist/index.d.ts.map +1 -1
  671. package/packages/tools/mcp/dist/index.js +7 -4
  672. package/packages/tools/mcp/dist/index.js.map +1 -1
  673. package/packages/tools/mcp/dist/ports.d.ts +31 -0
  674. package/packages/tools/mcp/dist/ports.d.ts.map +1 -1
  675. package/packages/tools/mcp/dist/preview.d.ts +16 -0
  676. package/packages/tools/mcp/dist/preview.d.ts.map +1 -0
  677. package/packages/tools/mcp/dist/preview.js +52 -0
  678. package/packages/tools/mcp/dist/preview.js.map +1 -0
  679. package/packages/tools/mcp/dist/program.d.ts +73 -0
  680. package/packages/tools/mcp/dist/program.d.ts.map +1 -0
  681. package/packages/tools/mcp/dist/program.js +306 -0
  682. package/packages/tools/mcp/dist/program.js.map +1 -0
  683. package/packages/tools/mcp/dist/service.d.ts +131 -22
  684. package/packages/tools/mcp/dist/service.d.ts.map +1 -1
  685. package/packages/tools/mcp/dist/service.js +717 -29
  686. package/packages/tools/mcp/dist/service.js.map +1 -1
  687. package/packages/tools/mcp/dist/session.d.ts +13 -1
  688. package/packages/tools/mcp/dist/session.d.ts.map +1 -1
  689. package/packages/tools/mcp/dist/session.js +27 -4
  690. package/packages/tools/mcp/dist/session.js.map +1 -1
  691. package/packages/tools/mcp/dist/store.d.ts +39 -1
  692. package/packages/tools/mcp/dist/store.d.ts.map +1 -1
  693. package/packages/tools/mcp/dist/store.js +24 -0
  694. package/packages/tools/mcp/dist/store.js.map +1 -1
  695. package/packages/tools/mcp/dist/testing/fake.d.ts +6 -0
  696. package/packages/tools/mcp/dist/testing/fake.d.ts.map +1 -1
  697. package/packages/tools/mcp/dist/testing/fake.js +26 -0
  698. package/packages/tools/mcp/dist/testing/fake.js.map +1 -1
  699. package/packages/tools/mcp/migrations/003_token_auth.sql +14 -0
  700. package/packages/tools/mcp/migrations/004_programs.sql +26 -0
  701. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  702. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  703. package/packages/tools/web/dist/providers/index.d.ts +1 -2
  704. package/packages/tools/web/dist/providers/index.d.ts.map +1 -1
  705. package/packages/tools/web/dist/providers/index.js +1 -2
  706. package/packages/tools/web/dist/providers/index.js.map +1 -1
  707. package/packages/web/dist/assets/index-BxbiKNMS.css +1 -0
  708. package/packages/web/dist/assets/index-Rrze3bGo.js +130 -0
  709. package/packages/web/dist/assets/{lottie_light-D7STH9tF.js → lottie_light-7wQnGwdw.js} +1 -1
  710. package/packages/web/dist/build.json +1 -1
  711. package/packages/web/dist/index.html +2 -2
  712. package/packages/web/dist/manifest.webmanifest +24 -5
  713. package/packages/web/dist/precache.json +4 -4
  714. package/packages/web/dist/sw.js +5 -3
  715. package/packages/web/dist/assets/index-C-NAQ_MT.css +0 -1
  716. package/packages/web/dist/assets/index-DzFS39N3.js +0 -125
@@ -0,0 +1,98 @@
1
+ /**
2
+ * mlxh, the local MLX model server, from the gateway's side: is it running
3
+ * here, what does it serve, and how long a prompt will it take.
4
+ *
5
+ * Asked from the gateway, never from the page, for the reason Ollama is: the
6
+ * dashboard reaches no host but its own, and the answer is about the machine
7
+ * buddi runs on. Two read-only calls, `GET /mlxh/info` and `GET /v1/models`;
8
+ * nothing here ever sends mlxh a prompt.
9
+ */
10
+ import { MLXH_BASE_URL, MLXH_DEFAULT_MAX_PROMPT_TOKENS } from '@buddi/core';
11
+ import { createHttpTransport } from '@buddi/runtime';
12
+ /** How long the probe waits: mlxh's own callers of /mlxh/info give up after about 2 s. */
13
+ export const MLXH_TIMEOUT_MS = 2_000;
14
+ /** One connection per probe, nothing pooled. */
15
+ const mlxhTransport = createHttpTransport({ idleTimeoutMs: MLXH_TIMEOUT_MS });
16
+ /** Where mlxh answers: the `MLXH_BASE_URL` override, else its default address. */
17
+ export function mlxhBaseUrl(env = {}) {
18
+ const raw = env.MLXH_BASE_URL?.trim();
19
+ return (raw || MLXH_BASE_URL).replace(/\/+$/, '');
20
+ }
21
+ const record = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
22
+ const count = (value) => typeof value === 'number' && Number.isInteger(value) && value >= 0 ? value : undefined;
23
+ const cleanId = (value) => typeof value === 'string' && value.trim() !== '' && value.length <= 150 && !/[\x00-\x1f\x7f]/.test(value) ? value : undefined;
24
+ /**
25
+ * Ask mlxh whether it is running, what it has installed, and what it loaded.
26
+ * Never throws: nothing answering, a refusal, or two seconds gone are all
27
+ * `running: false`.
28
+ */
29
+ export async function probeMlxh(opts = {}) {
30
+ const transport = opts.transport ?? mlxhTransport;
31
+ const baseUrl = (opts.baseUrl ?? MLXH_BASE_URL).replace(/\/+$/, '');
32
+ const origin = baseUrl.replace(/\/v1$/, '');
33
+ const signal = AbortSignal.timeout(opts.timeoutMs ?? MLXH_TIMEOUT_MS);
34
+ const ask = async (url) => {
35
+ try {
36
+ const res = await transport(url, { method: 'GET', headers: { Accept: 'application/json' }, signal, maxBytes: 1024 * 1024 });
37
+ if (!res.ok)
38
+ return undefined;
39
+ return record(await res.json());
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
44
+ };
45
+ const [info, list] = await Promise.all([ask(`${origin}/mlxh/info`), ask(`${baseUrl}/models`)]);
46
+ if (!info && !list)
47
+ return { running: false, baseUrl, manager: false, models: [] };
48
+ const workers = new Map();
49
+ for (const w of Array.isArray(info?.workers) ? info.workers : []) {
50
+ const row = record(w);
51
+ const id = cleanId(row?.model);
52
+ if (row && id && row.state !== 'exited')
53
+ workers.set(id, row);
54
+ }
55
+ const ids = [];
56
+ for (const m of Array.isArray(list?.data) ? list.data : []) {
57
+ const id = cleanId(record(m)?.id);
58
+ if (id && !ids.includes(id))
59
+ ids.push(id);
60
+ }
61
+ // The manager lists its models by name too; a pinned server names its one.
62
+ for (const name of Array.isArray(info?.models) ? info.models : []) {
63
+ const id = cleanId(name);
64
+ if (id && !ids.includes(id))
65
+ ids.push(id);
66
+ }
67
+ const pinned = cleanId(info?.model);
68
+ if (pinned && !ids.includes(pinned))
69
+ ids.push(pinned);
70
+ const manager = info?.manager === true || info?.model_kind === 'manager';
71
+ const models = ids.slice(0, 200).map((id) => {
72
+ const worker = workers.get(id);
73
+ const kindRaw = worker?.model_kind ?? (!manager && id === pinned ? info?.model_kind : undefined);
74
+ const kind = kindRaw === 'language' || kindRaw === 'image' ? kindRaw : undefined;
75
+ return { id, loaded: !!worker || (!manager && id === pinned), ...(kind ? { kind } : {}) };
76
+ });
77
+ const settings = record(info?.settings);
78
+ const maxPromptTokens = count(settings?.max_prompt_tokens) ?? count(info?.max_prompt_tokens);
79
+ const idle = info?.worker_idle_timeout_s;
80
+ const version = typeof info?.version === 'string' && info.version.length <= 40 ? info.version : undefined;
81
+ return {
82
+ running: true, baseUrl, manager, models,
83
+ ...(maxPromptTokens !== undefined ? { maxPromptTokens } : {}),
84
+ ...(typeof idle === 'number' && Number.isFinite(idle) && idle >= 0 ? { workerIdleTimeoutS: idle } : {}),
85
+ ...(version ? { version } : {}),
86
+ };
87
+ }
88
+ /**
89
+ * The window buddi gives an mlxh model: the server's `max_prompt_tokens` when
90
+ * it reported one, else mlxh's default. Null when the server turned the limit
91
+ * off, so buddi's own table for the model decides.
92
+ */
93
+ export function mlxhWindow(probe) {
94
+ if (probe.maxPromptTokens === 0)
95
+ return null;
96
+ return probe.maxPromptTokens ?? MLXH_DEFAULT_MAX_PROMPT_TOKENS;
97
+ }
98
+ //# sourceMappingURL=mlxh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mlxh.js","sourceRoot":"","sources":["../src/mlxh.ts"],"names":[],"mappings":"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"}
@@ -2,20 +2,23 @@
2
2
  * Owner secrets at the composition root (docs/owner-secrets.md §7,
3
3
  * docs/plugin-host-api.md §4.2, §6).
4
4
  *
5
- * Two jobs at start, both once:
5
+ * Three jobs at start, all once:
6
6
  *
7
+ * - **Adopt the mailbox `.env` used to name** (`GMAIL_USER`, its password
8
+ * `GMAIL_APP_PASSWORD`) as a Settings → Email account — `adoptEnvMailbox`.
9
+ * After that buddi reads no mailbox from the environment.
7
10
  * - **Adopt what the email plugin kept.** Each mailbox's password lived in
8
- * the vault under the account row's `secret_name` (`EMAIL_<address>_<hash>`,
9
- * or `GMAIL_APP_PASSWORD` for the account `.env` names) and was copied into
10
- * `process.env` for the plugin to read. Each becomes an owner secret of the
11
- * same name, bound to `email.account` with the account's id as its target,
12
- * pre-approved. Idempotent; an old entry is deleted only after the new one
13
- * reads back.
11
+ * the vault under the account row's `secret_name` (`EMAIL_<address>_<hash>`)
12
+ * and was copied into `process.env` for the plugin to read. Each becomes an
13
+ * owner secret of the same name, bound to `email.account` with the
14
+ * account's id as its target, pre-approved. Idempotent; an old entry is
15
+ * deleted only after the new one reads back.
14
16
  * - **Clear what nothing reads any more** from `process.env`: the mailbox
15
17
  * passwords. What else can go, and what cannot yet, is said on
16
18
  * `mailboxSecretNames`.
17
19
  */
18
20
  import { type AdoptOutcome, type SecretDestination, type Vault } from '@buddi/core';
21
+ import type { SecretsPort } from '@buddi/tool-mcp';
19
22
  import type { Pool } from 'pg';
20
23
  /**
21
24
  * The provider accounts' destination (docs/owner-secrets.md §3, §7):
@@ -46,6 +49,73 @@ export declare function ownerSecretVault(vault: Vault, pool: Pick<Pool, 'query'>
46
49
  * the removal rather than leaving a live credential behind.
47
50
  */
48
51
  export declare function deleteAccountSecret(pool: Pick<Pool, 'query'>, vault: Vault | undefined, secretRef: string | undefined): Promise<void>;
52
+ /** The two `.env` lines that used to name a mailbox. Read once, by `adoptEnvMailbox`, and never again. */
53
+ export declare const LEGACY_USER_VAR = "GMAIL_USER";
54
+ export declare const LEGACY_PASSWORD_VAR = "GMAIL_APP_PASSWORD";
55
+ /**
56
+ * The `email.settings` key that records the adoption ran to an end. With it
57
+ * there, `.env` is not read for a mailbox again — not even to re-create one
58
+ * the owner later removed in Settings while the old lines were still there.
59
+ */
60
+ export declare const ENV_MAILBOX_ADOPTED_KEY = "env_mailbox_adopted";
61
+ export type EnvMailboxAdoption =
62
+ /** Adopted, or found nothing to adopt, on an earlier start: `.env` is not read. */
63
+ {
64
+ outcome: 'done';
65
+ }
66
+ /** `GMAIL_USER` is not set: nothing to adopt, and nothing will be. */
67
+ | {
68
+ outcome: 'none';
69
+ }
70
+ /** Adopted on this start: the account exists and its password moved. */
71
+ | {
72
+ outcome: 'adopted';
73
+ address: string;
74
+ accountId: string;
75
+ }
76
+ /** A Settings → Email account of that address already exists; nothing touched. */
77
+ | {
78
+ outcome: 'exists';
79
+ address: string;
80
+ }
81
+ /** No readable password (or no vault to keep one in): nothing created. */
82
+ | {
83
+ outcome: 'no-password';
84
+ address: string;
85
+ reason: string;
86
+ };
87
+ /**
88
+ * Adopt the mailbox `.env` names as a Settings → Email account, once, at start
89
+ * (the pattern of `adoptProviderAccountSecrets`).
90
+ *
91
+ * Buddi used to seed an account from `GMAIL_USER` on every boot, its password
92
+ * named `GMAIL_APP_PASSWORD` (in `.env`, in the vault, or — since owner
93
+ * secrets — an owner secret of that name bound to the account). Now only
94
+ * accounts added in Settings exist, so this turns that mailbox into one:
95
+ *
96
+ * - The password is looked for where it may be: an owner secret already under
97
+ * the account's own name (a start that stopped half way), the owner secret
98
+ * `GMAIL_APP_PASSWORD`, the raw vault entry of that name, then `.env`.
99
+ * None readable: nothing is created, and the caller says to add it in
100
+ * Settings → Email.
101
+ * - **Continuity.** Everything the mailbox has — folders and their UID
102
+ * cursors, messages, threads, triage, drafts, rules — is keyed by the
103
+ * account row's id, and the old seed's row is converted in place
104
+ * (`writeGmailAccount`), so the id does not change and nothing is re-read,
105
+ * re-triaged or dropped. There is nothing to re-key.
106
+ * - The password moves to where a page-added account keeps it: the owner
107
+ * secret `secretNameFor(address)`, bound to `email.account` with the row's
108
+ * id, pre-approved. An owner secret `GMAIL_APP_PASSWORD` is *renamed* (same
109
+ * id, same vault entry, its history kept); otherwise the value is written
110
+ * under the new name and read back before the row changes hands, and the
111
+ * raw vault entry goes last. `.env` is the owner's file and is not touched.
112
+ *
113
+ * Once: a run that adopts, finds the address already added in Settings, or
114
+ * finds no `GMAIL_USER` at all records that in `email.settings`
115
+ * (`ENV_MAILBOX_ADOPTED_KEY`), and every later start answers `done` without
116
+ * reading `.env`. Only a missing password leaves it to try again next start.
117
+ */
118
+ export declare function adoptEnvMailbox(pool: Pool, vault: Vault | undefined, env: NodeJS.ProcessEnv): Promise<EnvMailboxAdoption>;
49
119
  export interface MailboxAdoption {
50
120
  /** Account address → what happened to its password. Never a value. */
51
121
  outcomes: Record<string, AdoptOutcome | 'failed'>;
@@ -53,7 +123,7 @@ export interface MailboxAdoption {
53
123
  problems: string[];
54
124
  }
55
125
  /** Move every mailbox password into an owner secret bound to its login. */
56
- export declare function adoptMailboxSecrets(pool: Pool, vault: Vault | undefined, env: NodeJS.ProcessEnv): Promise<MailboxAdoption>;
126
+ export declare function adoptMailboxSecrets(pool: Pool, vault: Vault | undefined): Promise<MailboxAdoption>;
57
127
  /**
58
128
  * What the gateway removes from `process.env` once it has started, and why the
59
129
  * rest stays for now (host API §6; the whole list is step 4's).
@@ -67,7 +137,7 @@ export declare function adoptMailboxSecrets(pool: Pool, vault: Vault | undefined
67
137
  * - `BUDDI_VAULT_KEY`: every `createVault({ env: process.env })` made per
68
138
  * request — provider settings and accounts, Telegram setup, the web token,
69
139
  * recovery, backups. The file vault reads the key on each open.
70
- * - `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, `OPENAI_API_KEY`: provider
140
+ * - `OPENAI_API_KEY`: provider
71
141
  * resolution per agent (`providerFor`) and model-account reloads.
72
142
  * - `TELEGRAM_BOT_TOKEN`: every `notifyOwner`, and Telegram started from the
73
143
  * dashboard.
@@ -94,4 +164,23 @@ export interface ProviderAccountAdoption {
94
164
  * own keys are not bindable (§6) and their rows carry `legacyEnv`.
95
165
  */
96
166
  export declare function adoptProviderAccountSecrets(pool: Pool, vault: Vault | undefined): Promise<ProviderAccountAdoption>;
167
+ /**
168
+ * A connection's pasted token (docs/connections.md, "Connect"), as an owner
169
+ * secret bound to core's `http.header` destination for that connection's host
170
+ * and header, pre-approved: the owner pasted it on that connection's own
171
+ * screen. A read is one recorded use through `useOwnerSecret`, answered only
172
+ * for the bound host and header — the same core-internal delivery the `http`
173
+ * area uses — so Settings → Secrets lists it, its last use and its binding.
174
+ */
175
+ /**
176
+ * A program's secret variable (docs/connections.md, "A program on this
177
+ * computer"): `mcp.env`, under the connections plugin's own name. The target
178
+ * is the connection and the variable's name; the value goes into the
179
+ * program's environment when it starts, and nowhere else. Core never calls
180
+ * `deliver`: the connections service asks through `useOwnerSecret` with its
181
+ * own delivery, like `http.header`.
182
+ */
183
+ export declare const MCP_ENV_KIND = "mcp.env";
184
+ export declare function registerMcpEnvDestination(): void;
185
+ export declare function connectionSecrets(pool: Pool, vault: Vault | undefined): SecretsPort | undefined;
97
186
  //# sourceMappingURL=owner-secrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"owner-secrets.d.ts","sourceRoot":"","sources":["../src/owner-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,KAAK,EACX,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAK/B;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;AAC/C,yFAAyF;AACzF,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAC/B,iBAAiB,CAiBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAsB/E;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EACzB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC;IAClD,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,2EAA2E;AAC3E,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC,CAyB1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI1G;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAS/F;AAED,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC9D,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,GAAG,SAAS,GACvB,OAAO,CAAC,uBAAuB,CAAC,CA6BlC"}
1
+ {"version":3,"file":"owner-secrets.d.ts","sourceRoot":"","sources":["../src/owner-secrets.ts"],"names":[],"mappings":"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"}
@@ -2,21 +2,23 @@
2
2
  * Owner secrets at the composition root (docs/owner-secrets.md §7,
3
3
  * docs/plugin-host-api.md §4.2, §6).
4
4
  *
5
- * Two jobs at start, both once:
5
+ * Three jobs at start, all once:
6
6
  *
7
+ * - **Adopt the mailbox `.env` used to name** (`GMAIL_USER`, its password
8
+ * `GMAIL_APP_PASSWORD`) as a Settings → Email account — `adoptEnvMailbox`.
9
+ * After that buddi reads no mailbox from the environment.
7
10
  * - **Adopt what the email plugin kept.** Each mailbox's password lived in
8
- * the vault under the account row's `secret_name` (`EMAIL_<address>_<hash>`,
9
- * or `GMAIL_APP_PASSWORD` for the account `.env` names) and was copied into
10
- * `process.env` for the plugin to read. Each becomes an owner secret of the
11
- * same name, bound to `email.account` with the account's id as its target,
12
- * pre-approved. Idempotent; an old entry is deleted only after the new one
13
- * reads back.
11
+ * the vault under the account row's `secret_name` (`EMAIL_<address>_<hash>`)
12
+ * and was copied into `process.env` for the plugin to read. Each becomes an
13
+ * owner secret of the same name, bound to `email.account` with the
14
+ * account's id as its target, pre-approved. Idempotent; an old entry is
15
+ * deleted only after the new one reads back.
14
16
  * - **Clear what nothing reads any more** from `process.env`: the mailbox
15
17
  * passwords. What else can go, and what cannot yet, is said on
16
18
  * `mailboxSecretNames`.
17
19
  */
18
- import { adoptVaultEntry, deleteOwnerSecret, findSecret, ownerSecretVaultName, } from '@buddi/core';
19
- import { ACCOUNT_KIND, GMAIL_SECRET_NAME, listAccounts } from '@buddi/tool-email';
20
+ import { adoptVaultEntry, deleteOwnerSecret, findSecret, ownerSecretVaultName, putOwnerSecret, registerSecretDestination, renameOwnerSecret, VAULT_PLACEHOLDER, useOwnerSecret, } from '@buddi/core';
21
+ import { ACCOUNT_KIND, listAccounts, secretNameFor, writeGmailAccount } from '@buddi/tool-email';
20
22
  /** The shape of a page-added mailbox's old vault name (`secretNameFor`). Not `EMAIL_BACKFILL`. */
21
23
  const MAILBOX_SECRET_RE = /^EMAIL_[A-Z0-9_]+_[0-9a-f]{8}$/;
22
24
  /**
@@ -103,8 +105,132 @@ export async function deleteAccountSecret(pool, vault, secretRef) {
103
105
  throw new Error(`the credential of "${secretRef}" could not be removed from the vault`);
104
106
  }
105
107
  }
108
+ /** The two `.env` lines that used to name a mailbox. Read once, by `adoptEnvMailbox`, and never again. */
109
+ export const LEGACY_USER_VAR = 'GMAIL_USER';
110
+ export const LEGACY_PASSWORD_VAR = 'GMAIL_APP_PASSWORD';
111
+ /**
112
+ * The `email.settings` key that records the adoption ran to an end. With it
113
+ * there, `.env` is not read for a mailbox again — not even to re-create one
114
+ * the owner later removed in Settings while the old lines were still there.
115
+ */
116
+ export const ENV_MAILBOX_ADOPTED_KEY = 'env_mailbox_adopted';
117
+ /** A value that is really there: not empty, not the `"<vault>"` marker `import-env` leaves. */
118
+ function realValue(raw) {
119
+ if (typeof raw !== 'string')
120
+ return null;
121
+ const trimmed = raw.trim();
122
+ const unquoted = trimmed.replace(/^(["'])(.*)\1$/, '$2');
123
+ if (trimmed === '' || unquoted === VAULT_PLACEHOLDER)
124
+ return null;
125
+ return trimmed;
126
+ }
127
+ /**
128
+ * Adopt the mailbox `.env` names as a Settings → Email account, once, at start
129
+ * (the pattern of `adoptProviderAccountSecrets`).
130
+ *
131
+ * Buddi used to seed an account from `GMAIL_USER` on every boot, its password
132
+ * named `GMAIL_APP_PASSWORD` (in `.env`, in the vault, or — since owner
133
+ * secrets — an owner secret of that name bound to the account). Now only
134
+ * accounts added in Settings exist, so this turns that mailbox into one:
135
+ *
136
+ * - The password is looked for where it may be: an owner secret already under
137
+ * the account's own name (a start that stopped half way), the owner secret
138
+ * `GMAIL_APP_PASSWORD`, the raw vault entry of that name, then `.env`.
139
+ * None readable: nothing is created, and the caller says to add it in
140
+ * Settings → Email.
141
+ * - **Continuity.** Everything the mailbox has — folders and their UID
142
+ * cursors, messages, threads, triage, drafts, rules — is keyed by the
143
+ * account row's id, and the old seed's row is converted in place
144
+ * (`writeGmailAccount`), so the id does not change and nothing is re-read,
145
+ * re-triaged or dropped. There is nothing to re-key.
146
+ * - The password moves to where a page-added account keeps it: the owner
147
+ * secret `secretNameFor(address)`, bound to `email.account` with the row's
148
+ * id, pre-approved. An owner secret `GMAIL_APP_PASSWORD` is *renamed* (same
149
+ * id, same vault entry, its history kept); otherwise the value is written
150
+ * under the new name and read back before the row changes hands, and the
151
+ * raw vault entry goes last. `.env` is the owner's file and is not touched.
152
+ *
153
+ * Once: a run that adopts, finds the address already added in Settings, or
154
+ * finds no `GMAIL_USER` at all records that in `email.settings`
155
+ * (`ENV_MAILBOX_ADOPTED_KEY`), and every later start answers `done` without
156
+ * reading `.env`. Only a missing password leaves it to try again next start.
157
+ */
158
+ export async function adoptEnvMailbox(pool, vault, env) {
159
+ let marked;
160
+ try {
161
+ ({ rows: marked } = await pool.query(`select 1 from email.settings where key = $1`, [ENV_MAILBOX_ADOPTED_KEY]));
162
+ }
163
+ catch (err) {
164
+ // No email schema: the mail plugin is not installed here, so there is no
165
+ // mailbox to adopt into.
166
+ if (err.code === '42P01' || err.code === '3F000')
167
+ return { outcome: 'none' };
168
+ throw err;
169
+ }
170
+ if (marked.length > 0)
171
+ return { outcome: 'done' };
172
+ const finished = async (result) => {
173
+ const address = 'address' in result ? result.address : null;
174
+ await pool.query(`insert into email.settings (key, value, updated_at) values ($1, $2::jsonb, now())
175
+ on conflict (key) do nothing`, [ENV_MAILBOX_ADOPTED_KEY, JSON.stringify({ outcome: result.outcome, address })]);
176
+ return result;
177
+ };
178
+ const address = env[LEGACY_USER_VAR]?.trim().toLowerCase();
179
+ if (!address)
180
+ return finished({ outcome: 'none' });
181
+ const { rows } = await pool.query(`select id::text as id, added_via from email.accounts where address = $1`, [address]);
182
+ const row = rows[0];
183
+ if (row !== undefined && row.added_via !== 'env')
184
+ return finished({ outcome: 'exists', address });
185
+ const name = secretNameFor(address);
186
+ if (vault === undefined) {
187
+ return { outcome: 'no-password', address, reason: 'this installation has no vault to keep its password in' };
188
+ }
189
+ const ownerValue = async (secretName) => {
190
+ const secret = await findSecret(pool, secretName);
191
+ if (secret === null)
192
+ return null;
193
+ const value = realValue(await vault.get(ownerSecretVaultName(secret.id)).catch(() => null));
194
+ return value === null ? null : { id: secret.id, value };
195
+ };
196
+ const resumed = await ownerValue(name);
197
+ const legacyOwner = resumed === null ? await ownerValue(LEGACY_PASSWORD_VAR) : null;
198
+ const rawVault = resumed === null && legacyOwner === null
199
+ ? realValue(await vault.get(LEGACY_PASSWORD_VAR).catch(() => null))
200
+ : null;
201
+ const value = resumed?.value ?? legacyOwner?.value ?? rawVault ?? realValue(env[LEGACY_PASSWORD_VAR]);
202
+ if (value === null) {
203
+ return { outcome: 'no-password', address, reason: `${LEGACY_PASSWORD_VAR} is not readable` };
204
+ }
205
+ // The row first when there is none, because the binding names its id; a
206
+ // password that cannot be kept takes a new row back out.
207
+ const inserted = row === undefined;
208
+ const accountId = row?.id ?? (await writeGmailAccount(pool, address)).id;
209
+ try {
210
+ if (legacyOwner !== null)
211
+ await renameOwnerSecret(pool, LEGACY_PASSWORD_VAR, name);
212
+ const kept = await putOwnerSecret(pool, vault, {
213
+ name,
214
+ value,
215
+ bindings: [{ kind: ACCOUNT_KIND, target: accountId, rule: 'pre-approved' }],
216
+ });
217
+ if ((await vault.get(ownerSecretVaultName(kept.id))) !== value) {
218
+ throw new Error(`the owner secret "${name}" did not read back`);
219
+ }
220
+ }
221
+ catch (err) {
222
+ if (inserted)
223
+ await pool.query(`delete from email.accounts where id = $1::uuid`, [accountId]).catch(() => { });
224
+ throw err;
225
+ }
226
+ // The row changes hands only now, with its password already where it looks.
227
+ await writeGmailAccount(pool, address);
228
+ if (rawVault !== null)
229
+ await vault.delete(LEGACY_PASSWORD_VAR).catch(() => false);
230
+ return finished({ outcome: 'adopted', address, accountId });
231
+ }
106
232
  /** Move every mailbox password into an owner secret bound to its login. */
107
- export async function adoptMailboxSecrets(pool, vault, env) {
233
+ export async function adoptMailboxSecrets(pool, vault) {
108
234
  const result = { outcomes: {}, problems: [] };
109
235
  if (vault === undefined) {
110
236
  result.problems.push('this installation has no vault, so mailbox passwords cannot become owner secrets');
@@ -113,14 +239,15 @@ export async function adoptMailboxSecrets(pool, vault, env) {
113
239
  for (const account of await listAccounts(pool, { enabledOnly: false })) {
114
240
  if (account.authMode !== 'app-password')
115
241
  continue;
242
+ // A row the old `.env` seed left and `adoptEnvMailbox` could not adopt:
243
+ // its password is not readable, and the page is where it comes back.
244
+ if (account.addedVia === 'env')
245
+ continue;
116
246
  try {
117
247
  result.outcomes[account.address] = await adoptVaultEntry(pool, vault, {
118
248
  from: account.secretName,
119
249
  name: account.secretName,
120
250
  bindings: [{ kind: ACCOUNT_KIND, target: account.id, rule: 'pre-approved' }],
121
- // The account `.env` names may still have its password there, the
122
- // day-1 path. Adopted the same way; `.env` is the owner's file.
123
- fallback: account.secretName === GMAIL_SECRET_NAME ? env[GMAIL_SECRET_NAME] : undefined,
124
251
  });
125
252
  }
126
253
  catch (err) {
@@ -143,7 +270,7 @@ export async function adoptMailboxSecrets(pool, vault, env) {
143
270
  * - `BUDDI_VAULT_KEY`: every `createVault({ env: process.env })` made per
144
271
  * request — provider settings and accounts, Telegram setup, the web token,
145
272
  * recovery, backups. The file vault reads the key on each open.
146
- * - `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, `OPENAI_API_KEY`: provider
273
+ * - `OPENAI_API_KEY`: provider
147
274
  * resolution per agent (`providerFor`) and model-account reloads.
148
275
  * - `TELEGRAM_BOT_TOKEN`: every `notifyOwner`, and Telegram started from the
149
276
  * dashboard.
@@ -151,7 +278,8 @@ export async function adoptMailboxSecrets(pool, vault, env) {
151
278
  * - `BUDDI_DB_PASSWORD`: assembled into `DATABASE_URL`, cleared with it.
152
279
  */
153
280
  export function mailboxSecretNames(env, accountSecretNames) {
154
- const names = new Set([GMAIL_SECRET_NAME, ...accountSecretNames]);
281
+ // `GMAIL_APP_PASSWORD` too: nothing reads it after `adoptEnvMailbox`.
282
+ const names = new Set([LEGACY_PASSWORD_VAR, ...accountSecretNames]);
155
283
  for (const name of Object.keys(env))
156
284
  if (MAILBOX_SECRET_RE.test(name))
157
285
  names.add(name);
@@ -205,4 +333,98 @@ export async function adoptProviderAccountSecrets(pool, vault) {
205
333
  }
206
334
  return result;
207
335
  }
336
+ /**
337
+ * A connection's pasted token (docs/connections.md, "Connect"), as an owner
338
+ * secret bound to core's `http.header` destination for that connection's host
339
+ * and header, pre-approved: the owner pasted it on that connection's own
340
+ * screen. A read is one recorded use through `useOwnerSecret`, answered only
341
+ * for the bound host and header — the same core-internal delivery the `http`
342
+ * area uses — so Settings → Secrets lists it, its last use and its binding.
343
+ */
344
+ /**
345
+ * A program's secret variable (docs/connections.md, "A program on this
346
+ * computer"): `mcp.env`, under the connections plugin's own name. The target
347
+ * is the connection and the variable's name; the value goes into the
348
+ * program's environment when it starts, and nowhere else. Core never calls
349
+ * `deliver`: the connections service asks through `useOwnerSecret` with its
350
+ * own delivery, like `http.header`.
351
+ */
352
+ export const MCP_ENV_KIND = 'mcp.env';
353
+ function asEnvTarget(target) {
354
+ if (typeof target !== 'object' || target === null)
355
+ return undefined;
356
+ const { connection, variable } = target;
357
+ return typeof connection === 'string' && typeof variable === 'string' ? { connection, variable } : undefined;
358
+ }
359
+ export function registerMcpEnvDestination() {
360
+ registerSecretDestination('mcp', {
361
+ kind: MCP_ENV_KIND,
362
+ maxRule: 'pre-approved',
363
+ checkTarget(target, bound) {
364
+ const asked = asEnvTarget(target);
365
+ const kept = asEnvTarget(bound);
366
+ return asked !== undefined && kept !== undefined && asked.connection === kept.connection && asked.variable === kept.variable;
367
+ },
368
+ describe(target) {
369
+ const asked = asEnvTarget(target);
370
+ return asked === undefined ? 'a connected program\'s environment' : `the ${asked.variable} variable of a program on this computer`;
371
+ },
372
+ deliver() {
373
+ throw new Error('mcp.env delivers through the connections service itself, never through a destination');
374
+ },
375
+ });
376
+ }
377
+ export function connectionSecrets(pool, vault) {
378
+ if (vault === undefined)
379
+ return undefined;
380
+ const host = { version: '0.0', plugin: 'http' };
381
+ const mcpHost = { version: '0.0', plugin: 'mcp' };
382
+ registerMcpEnvDestination();
383
+ return {
384
+ async putEnv(name, value, target) {
385
+ await putOwnerSecret(pool, vault, {
386
+ name,
387
+ value,
388
+ bindings: [{ kind: MCP_ENV_KIND, target: { connection: target.connection, variable: target.variable }, rule: 'pre-approved' }],
389
+ });
390
+ },
391
+ async envValue(name, target) {
392
+ let value;
393
+ const result = await useOwnerSecret({ pool, vault, plugin: 'mcp', buddi: mcpHost, now: () => new Date(), deliverInto: (delivered) => { value = delivered; } }, { name, kind: MCP_ENV_KIND, target: { connection: target.connection, variable: target.variable } });
394
+ if ('done' in result && value !== undefined)
395
+ return value;
396
+ if ('pending' in result)
397
+ throw new Error(`"${name}" waits for the owner's approval.`);
398
+ throw new Error('refused' in result ? result.refused : `"${name}" was not delivered.`);
399
+ },
400
+ async put(name, value, target) {
401
+ await putOwnerSecret(pool, vault, {
402
+ name,
403
+ value,
404
+ bindings: [{ kind: 'http.header', target: { host: target.host.toLowerCase(), header: target.header }, rule: 'pre-approved' }],
405
+ });
406
+ },
407
+ async value(name, target) {
408
+ let value;
409
+ const result = await useOwnerSecret({
410
+ pool,
411
+ vault,
412
+ plugin: 'http',
413
+ buddi: host,
414
+ now: () => new Date(),
415
+ deliverInto: (delivered) => {
416
+ value = delivered;
417
+ },
418
+ }, { name, kind: 'http.header', target: { host: target.host.toLowerCase(), header: target.header } });
419
+ if ('done' in result && value !== undefined)
420
+ return value;
421
+ if ('pending' in result)
422
+ throw new Error(`"${name}" waits for the owner's approval.`);
423
+ throw new Error('refused' in result ? result.refused : `"${name}" was not delivered.`);
424
+ },
425
+ async remove(name) {
426
+ await deleteOwnerSecret(pool, vault, name);
427
+ },
428
+ };
429
+ }
208
430
  //# sourceMappingURL=owner-secrets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"owner-secrets.js","sourceRoot":"","sources":["../src/owner-secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owner-secrets.js","sourceRoot":"","sources":["../src/owner-secrets.ts"],"names":[],"mappings":"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"}
@@ -101,6 +101,8 @@ export interface StagedPlugin {
101
101
  name: string;
102
102
  version: string;
103
103
  };
104
+ /** Where that record came from, when this update takes the new version from somewhere else. */
105
+ previousSource?: PluginSource;
104
106
  /**
105
107
  * The name the file had on the owner's machine, when this stage came from an
106
108
  * upload rather than from a path they typed.
@@ -137,6 +139,8 @@ export interface StageOptions {
137
139
  };
138
140
  /** Set by `updatePlugin`: the areas the installed version declared. */
139
141
  previousUses?: PluginUse[];
142
+ /** Set by `updatePlugin`: where the installed version came from. */
143
+ previousSource?: PluginSource;
140
144
  now?: () => Date;
141
145
  /** Skip the dependency install. Only the fixtures that have none use it. */
142
146
  skipDependencies?: boolean;