@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
package/README.md CHANGED
@@ -1,24 +1,34 @@
1
- # buddi
1
+ <p align="center"><img src="https://raw.githubusercontent.com/withbuddi/buddi/main/docs/images/header.png" alt="buddi, with the Buddi Blob" width="800"></p>
2
2
 
3
- <img src="https://raw.githubusercontent.com/withbuddi/buddi/main/packages/web/public/mascot/core.png" alt="The Buddi Blob, buddi's mascot" width="160" align="right">
3
+ **A small AI team that lives on your computer.**
4
4
 
5
- [withbuddi.com](https://withbuddi.com) · [npm](https://www.npmjs.com/package/@withbuddi/buddi) · [docs](docs/README.md)
5
+ AI teammates that use tools, work on schedules, remember what matters, and
6
+ ask before doing anything consequential.
6
7
 
7
- buddi is a personal agent platform you run on your own machine. An agent is a
8
- markdown file: a front matter that names the tools it may call, and a body that
9
- is its persona. Agents get real access: your mail, your files, a browser of
10
- their own, commands on the machine. They reach you on a dashboard in your
11
- browser and on Telegram. They also work while you are away: scheduled
12
- missions, watchers that speak only when something is wrong, reminders they set
13
- themselves. Anything consequential waits for your approval, as a card you
14
- approve or reject.
8
+ [withbuddi.com](https://withbuddi.com) · [npm](https://www.npmjs.com/package/@withbuddi/buddi) · [docs](docs/README.md) · [plugins](https://withbuddi.com/plugins)
15
9
 
16
- Everything stays on your machine, in a private Postgres. The one thing that
17
- leaves is each agent's prompt, sent to the AI provider that agent's file names.
18
- So one line in one file decides which company sees that agent's conversations.
19
- Secrets live in a vault the agents can use but never see.
10
+ Give each teammate a job. Planner prepares your mornings. Mail Triage watches
11
+ your inbox. Ledger keeps an eye on your money. Add your own for anything
12
+ else.
20
13
 
21
- The first agent is called buddi. It wears the Buddi Blob.
14
+ They use tools, work with your files, browse the web in a browser of their
15
+ own, and keep working on schedules while you're away. **Anything
16
+ consequential stops for your approval**, as a card on the dashboard or on
17
+ your phone.
18
+
19
+ **Everything stays home.** Conversations, files and memory live in a private
20
+ database on your machine. When a teammate uses a remote AI, the context it
21
+ needs for that request goes to the provider and model you chose for that
22
+ teammate. The whole list of what leaves is short enough to print, and it is
23
+ [printed below](#where-your-data-lives-and-what-leaves-the-machine). Your
24
+ passwords live in a vault the team can use but never see.
25
+
26
+ Your first teammate is Buddi, the front desk, and the Buddi Blob is its face.
27
+ Rename it, rewrite its personality, or add others. Under the hood every
28
+ teammate is a markdown file, which the docs and the dashboard call an agent
29
+ where that is the accurate word.
30
+
31
+ <img src="https://raw.githubusercontent.com/withbuddi/buddi/main/docs/images/home.png" alt="The buddi dashboard: a greeting by name, an approval card, the team, what is coming up." width="100%">
22
32
 
23
33
  ---
24
34
 
@@ -91,24 +101,27 @@ The full install story, including what is not built yet, is
91
101
 
92
102
  ## The first ten minutes
93
103
 
94
- **The wizard.** buddi asks four things, one at a time, in a chat thread:
95
-
96
- 1. **Your name**, so the agents know what to call you.
97
- 2. **Your clock**, taken from the browser; confirm it or pick another. This is
98
- what every agent means by "today".
99
- 3. **A brain**: the AI your assistant thinks with. An API key from Anthropic
100
- or OpenAI; Ollama running on this computer; Ollama Cloud or another
101
- OpenAI-compatible service, with an address and a key; or Claude, with your
102
- Claude subscription, where this build enables it. buddi tests it with one
103
- small call before moving on.
104
- 4. **Your assistant**: a name (buddi by default), a face (the Buddi Blob, or
105
- another mascot or an emoji), and a persona you can keep or rewrite.
106
-
107
- Between the brain and the assistant, buddi checks the browser and fetches one
108
- if it has to. Then the assistant speaks first, in the same thread, and offers
109
- to reach you on your phone. Every answer keeps a "change" link, and a reload
110
- resumes where you were. [docs/onboarding.md](docs/onboarding.md) is the full
111
- script.
104
+ **The wizard.** Five short chapters, with a map on the left so you always
105
+ know where you are and can go back:
106
+
107
+ 1. **Hello**: your name and your clock, taken from the browser.
108
+ 2. **A brain**: the AI your team thinks with. Free to start with Ollama Cloud
109
+ in one tap; or your Claude or ChatGPT account; or an API key from
110
+ Anthropic, OpenAI or Google; or Ollama on this computer. buddi tests it
111
+ with one small call before moving on.
112
+ 3. **What buddi takes on**: your days (weather and calendars, with Planner's
113
+ morning brief), your mail, your money, voice, your code, pictures. Each
114
+ tile installs its plugin in the background, from withbuddi.com, while you
115
+ answer the rest; nothing runs before you have seen its card.
116
+ 4. **Reach me**: your phone through Telegram, a mailbox for Mail Triage, buddi
117
+ as an app and a browser of its own. All optional.
118
+ 5. **Your assistant**: a name, a colour for the Blob, and a persona you can
119
+ keep or rewrite.
120
+
121
+ Then your assistant speaks first, in the real chat, already knowing your
122
+ clock, the weather at home and who is on the team, and one card lists what is
123
+ still waiting. Every chapter keeps a "change" link, and a reload resumes where
124
+ you were. [docs/onboarding.md](docs/onboarding.md) is the full script.
112
125
 
113
126
  **The first chat.** A few things to try:
114
127
 
@@ -122,23 +135,24 @@ script.
122
135
  about what it shows.
123
136
  - "Every Friday at 6, send me a recap of the week." A mission, on a schedule.
124
137
 
125
- **A mailbox.** In Settings → Email, add an account with its address and an app
126
- password. buddi then proposes a Mail agent (@mail) that triages new mail in
127
- the background. Accept it with **Create @mail**; until you do, mail is fetched
128
- and threaded but nobody reads it. Sending always stops at an approval card
138
+ **A mailbox.** In Settings → Mail, or in chapter 4 of the wizard, add an
139
+ account with its address and an app password. buddi then offers Mail Triage,
140
+ the teammate who reads new mail in the background. Accept it with one click;
141
+ until you do, mail is fetched and threaded but nobody reads it. Sending always stops at an approval card
129
142
  that shows the full message. [docs/email.md](docs/email.md) has the rest.
130
143
 
131
- **More agents.** Agent Father (@father) makes and changes agents. Say what you
132
- want one to do; it interviews you, proposes the file and the tools it should
133
- have, and writes it once you approve.
144
+ **More teammates.** Home and the Agents page offer a starter team: Scout,
145
+ Planner and Keeper, one tap each. For anything else, Agent Father (@father)
146
+ interviews you, proposes the file and the tools it should have, and writes it
147
+ once you approve.
134
148
 
135
149
  ---
136
150
 
137
151
  ## How it works
138
152
 
139
- **Agents are files.** One folder per agent, with an `agent.md` in it. The
140
- front matter says which tools the agent may call; nothing else is callable,
141
- and no conversation can grant more. The body is the persona, in plain
153
+ **A teammate is a file.** One folder per agent, with an `agent.md` in it. The
154
+ front matter says which tools it may call; nothing else is callable, and no
155
+ conversation can grant more. The body is the persona, in plain
142
156
  markdown. The provider and model are a line in the same file, and the
143
157
  dashboard's Agents page edits them for you.
144
158
 
@@ -159,9 +173,10 @@ talking to. Today is {{today}}.
159
173
 
160
174
  **Tools and plugins.** The core has no tools; every capability is a plugin.
161
175
  Built in: `system`, `email`, `memory`, `artifacts`, `web`, `browser`, `host`,
162
- `reminder`, `schedule`, `goal`, `learning` and `canvas`. Installable from npm,
163
- on the Plugins page or with `buddi plugins install`: `finance`, `developer`
164
- and `image`. Installing a plugin shows everything it brings first: each tool
176
+ `reminder`, `schedule`, `goal`, `learning` and `canvas`. Installable from
177
+ [withbuddi.com/plugins](https://withbuddi.com/plugins), on the Plugins page's
178
+ Browse tab or with `buddi plugins install`: `weather`, `calendar`, `finance`,
179
+ `image`, `speech` and more. Installing a plugin shows everything it brings first: each tool
165
180
  and whether it runs without asking, the database schema it will own, what it
166
181
  runs on a timer, and the hosts it talks to. Nothing happens until you approve.
167
182
  [docs/plugins.md](docs/plugins.md) is the guide to writing one.
@@ -28,6 +28,7 @@ So your job is not to write files quickly. It is to work out what the owner actu
28
28
  ## The tool grant is the whole decision
29
29
  - Call platform.installed_tools before you propose a grant. Name only families and tools that are actually installed here; never invent one, and never guess a name that sounds right.
30
30
  - Propose the smallest grant that does the job, and say out loud why each family is there: "memory so it remembers what you tell it, reminders so it can put something on the clock — nothing else". If you cannot give a reason for a family, it does not belong in the grant.
31
+ - owner.notify lets an agent message the owner on their phone now, within limits the owner controls; it reaches only the owner, so it is a sensible grant for any agent that may need to say "this just happened".
31
32
  - Never propose finance or mail access to an agent that does not need it. Money and inbox tools read the owner's most sensitive data, and an agent that has them because it might be useful later is a standing risk with no benefit today. If the owner asks for them, ask what specifically the agent has to do with them — then grant the narrowest thing that does it, a single tool rather than the family where a single tool is enough.
32
33
  - Before the approval arrives, say in one sentence what the grant reaches, in your own plain words: "this lets it read every account balance and transaction you have recorded". The owner should already know what the approval says before it appears.
33
34
  - Widening an existing agent's grant is the same decision made again, and a bigger one. Treat "can you give @scout the finance tools" as a fresh interview, not an edit.
@@ -1266,6 +1266,7 @@ function handleExternal(message, context, respond) {
1266
1266
  var DEFAULT_GATEWAY = "http://127.0.0.1:4317";
1267
1267
  var GATEWAY_KEY = "gateway";
1268
1268
  var MAX_BACKOFF = 3e4;
1269
+ var KNOCK_MS = 3e3;
1269
1270
  var SILENCE = 7e4;
1270
1271
  function socketUrl(address) {
1271
1272
  const parsed = new URL(address);
@@ -1353,6 +1354,11 @@ async function connect() {
1353
1354
  protocol.closed(error instanceof Error ? error.message : String(error));
1354
1355
  return;
1355
1356
  }
1357
+ if (attempt > 0 && !await answering(url)) {
1358
+ protocol.closed("buddi did not answer at this address. Is it running?");
1359
+ schedule();
1360
+ return;
1361
+ }
1356
1362
  const opening = new WebSocket(url);
1357
1363
  socket = opening;
1358
1364
  opening.addEventListener("open", () => {
@@ -1380,10 +1386,27 @@ async function connect() {
1380
1386
  clearTimeout(silence);
1381
1387
  silence = void 0;
1382
1388
  }
1383
- protocol.closed("Not connected to buddi.");
1389
+ protocol.closed("buddi did not answer at this address. Is it running?");
1384
1390
  schedule();
1385
1391
  });
1386
1392
  }
1393
+ async function answering(socket2) {
1394
+ let http;
1395
+ try {
1396
+ http = new URL(socket2);
1397
+ http.protocol = http.protocol === "wss:" ? "https:" : "http:";
1398
+ http.pathname = "/api/version";
1399
+ http.search = "";
1400
+ } catch {
1401
+ return false;
1402
+ }
1403
+ try {
1404
+ await fetch(http.toString(), { method: "GET", cache: "no-store", signal: AbortSignal.timeout(KNOCK_MS) });
1405
+ return true;
1406
+ } catch {
1407
+ return false;
1408
+ }
1409
+ }
1387
1410
  function schedule() {
1388
1411
  if (timer) return;
1389
1412
  const wait = Math.min(MAX_BACKOFF, 1e3 * 2 ** Math.min(attempt, 5));
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "buddi",
4
- "version": "0.1.0",
5
- "description": "Lets your buddi work in this browser, in background tabs grouped under \"buddi\". It needs access to every site because the sites it opens are the ones you ask it for; it opens none on its own.",
4
+ "version": "0.1.0.26",
5
+ "description": "Lets your buddi work in background tabs of this browser. The sites it opens are the ones you ask it for; it opens none on its own.",
6
6
  "minimum_chrome_version": "116",
7
7
  "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4JT/OlKKPcZQ33euO9mSv7RrSIWNVanldhT2Uzc9YfzF/X0lg5NfXLc+G/UGFjB8v+uMCbpMhRBZ2SVwDHQH3buv3VEUzuOIDTPHgv99T5lq5imZrDxmIE+EL/fWrsjhcXaIB4e4fn0tJqw6ivJUGmYpG5XhWn65nlLniHfFBKMpZ/y7bVnvfzAgMQUa13qTAVxPTpMRtNl/flQq4Q/vWYm28H7W7OzygDV+/4X2azUrB8yPk67QsipbdDLxiX2GMxjXuKK6iD5CQiytoxTsAqUzB886HbOZsxJfQpRIjrUgBmGjLyaKuz617ZGJW9zS23LmnlL6mkX3+ggca1AQIDAQAB",
8
8
  "permissions": [
@@ -37,5 +37,6 @@
37
37
  "32": "icons/32.png",
38
38
  "48": "icons/48.png",
39
39
  "128": "icons/128.png"
40
- }
40
+ },
41
+ "version_name": "0.1.0-pre.26"
41
42
  }
@@ -3,86 +3,137 @@
3
3
  *
4
4
  * It cannot import the web bundle: this is a separate origin with no build step
5
5
  * in common, so the tokens below are copied from `packages/web/src/tokens.css`
6
- * and only the ones this 320px panel uses. Same rule as there, though: nothing
7
- * in this file writes a colour that is not a token, and the dark variant is the
8
- * same three-state cascade.
6
+ * (only the ones this 340px panel uses) and the controls follow `ui.css`.
7
+ * Nothing in this file writes a colour that is not a token, and the dark
8
+ * variant is the same cascade as the dashboard's.
9
+ *
10
+ * The fonts are the dashboard's too, shipped inside the extension: an extension
11
+ * page may load nothing remote.
9
12
  */
10
13
 
14
+ @font-face {
15
+ font-family: 'DM Sans Variable';
16
+ font-style: normal;
17
+ font-display: swap;
18
+ font-weight: 100 1000;
19
+ src: url('fonts/dm-sans-latin-standard-normal.woff2') format('woff2-variations');
20
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
21
+ }
22
+ @font-face {
23
+ font-family: 'DM Sans Variable';
24
+ font-style: normal;
25
+ font-display: swap;
26
+ font-weight: 100 1000;
27
+ src: url('fonts/dm-sans-latin-ext-standard-normal.woff2') format('woff2-variations');
28
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
29
+ }
30
+ @font-face {
31
+ font-family: 'DM Mono';
32
+ font-style: normal;
33
+ font-display: swap;
34
+ font-weight: 400;
35
+ src: url('fonts/dm-mono-latin-400-normal.woff2') format('woff2');
36
+ }
37
+ @font-face {
38
+ font-family: 'DM Mono';
39
+ font-style: normal;
40
+ font-display: swap;
41
+ font-weight: 500;
42
+ src: url('fonts/dm-mono-latin-500-normal.woff2') format('woff2');
43
+ }
44
+
11
45
  :root {
12
- --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
13
- --font-display: ui-rounded, 'SF Pro Rounded', -apple-system, BlinkMacSystemFont, 'Segoe UI Variable Display', 'Segoe UI', Roboto, sans-serif;
14
- --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
46
+ --font-sans: 'DM Sans Variable', 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
47
+ --font-mono: 'DM Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
15
48
 
16
- --text-2xs: 10px;
17
49
  --text-xs: 11px;
18
50
  --text-sm: 12px;
19
51
  --text-md: 13px;
20
52
  --text-base: 14px;
21
- --text-2xl: 22px;
53
+ --text-lg: 15px;
54
+ --text-xl: 18px;
55
+ --text-3xl: 30px;
22
56
 
57
+ --leading-tight: 1.3;
23
58
  --leading: 1.5;
24
59
  --weight-normal: 450;
25
60
  --weight-medium: 550;
26
61
  --weight-semibold: 650;
62
+ --weight-bold: 750;
63
+ --tracking-title: -0.01em;
27
64
 
65
+ --space-0: 2px;
28
66
  --space-1: 4px;
29
67
  --space-2: 8px;
30
68
  --space-3: 12px;
31
69
  --space-4: 16px;
70
+ --space-5: 20px;
32
71
 
33
72
  --control-h: 32px;
34
73
  --control-h-sm: 26px;
74
+ --popup-w: 340px;
75
+ --blob: 28px;
76
+ --pill-h: 20px;
77
+ --dot: 6px;
35
78
 
36
- --radius-sm: 4px;
37
79
  --radius: 7px;
80
+ --radius-lg: 12px;
38
81
  --radius-pill: 999px;
39
82
 
40
- --bg: #f7f6f4;
83
+ --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
84
+ --dur-fast: 120ms;
85
+ --dur-view: 150ms;
86
+
41
87
  --surface: #ffffff;
42
- --surface-sunken: #f1efec;
43
- --line: #e3e1dd;
88
+ --surface-sunken: #e6eef9;
89
+ --line: #dbe4f1;
90
+ --line-strong: #c3d0e3;
44
91
 
45
- --text: #1b1a18;
46
- --text-muted: #6b6862;
92
+ --text: #152642;
93
+ --text-muted: #5a6477;
94
+ --text-faint: #8b92a0;
47
95
 
48
- --accent: #3d5bd6;
49
- --accent-soft: #e8ecfb;
96
+ --accent: #2b6fe6;
97
+ --accent-hover: #245fc7;
98
+ --accent-soft: #e7f0fe;
50
99
  --accent-contrast: #ffffff;
51
100
 
52
101
  --good: #1f7a46;
53
102
  --good-soft: #e3f3e9;
54
103
  --warning: #8a5a00;
55
104
  --warning-soft: #fbf0d9;
56
- --critical: #a52a2a;
57
- --critical-soft: #fae7e5;
105
+ --critical: #c0352a;
106
+ --critical-soft: #ffe9e6;
58
107
 
59
- --focus-ring: #3d5bd6;
108
+ --focus-ring: #2b6fe6;
60
109
 
61
110
  color-scheme: light;
62
111
  }
63
112
 
64
113
  @media (prefers-color-scheme: dark) {
65
114
  :root:not([data-theme='light']) {
66
- --bg: #131416;
67
- --surface: #1b1d20;
68
- --surface-sunken: #101113;
69
- --line: #2f3238;
115
+ --surface: #131e31;
116
+ --surface-sunken: #0a1322;
117
+ --line: #22324c;
118
+ --line-strong: #37465f;
70
119
 
71
- --text: #e8e6e3;
72
- --text-muted: #9c988f;
120
+ --text: #ecf1f8;
121
+ --text-muted: #a3adbe;
122
+ --text-faint: #717c8f;
73
123
 
74
- --accent: #93a8f5;
75
- --accent-soft: #212a4a;
76
- --accent-contrast: #0e1013;
124
+ --accent: #7db3ff;
125
+ --accent-hover: #9ac4ff;
126
+ --accent-soft: #16294a;
127
+ --accent-contrast: #0b1426;
77
128
 
78
129
  --good: #5fc98a;
79
- --good-soft: #17301f;
80
- --warning: #e0ad4b;
130
+ --good-soft: #13301f;
131
+ --warning: #e8b454;
81
132
  --warning-soft: #33280f;
82
- --critical: #f0827c;
83
- --critical-soft: #3a1c1b;
133
+ --critical: #ff8e82;
134
+ --critical-soft: #3a1d1c;
84
135
 
85
- --focus-ring: #9cc0f4;
136
+ --focus-ring: #9ac4ff;
86
137
 
87
138
  color-scheme: dark;
88
139
  }
@@ -90,18 +141,25 @@
90
141
 
91
142
  * { box-sizing: border-box; }
92
143
 
144
+ /* `hidden` means hidden, whatever display a rule below gives the element. */
145
+ [hidden] { display: none !important; }
146
+
147
+ html, body { margin: 0; padding: 0; }
148
+
93
149
  body {
94
- width: 320px;
95
- margin: 0;
150
+ width: var(--popup-w);
96
151
  background: var(--surface);
97
152
  color: var(--text);
98
153
  font-family: var(--font-sans);
99
154
  font-size: var(--text-base);
100
155
  font-weight: var(--weight-normal);
101
156
  line-height: var(--leading);
157
+ -webkit-font-smoothing: antialiased;
102
158
  }
103
159
 
104
- /* ---- the head: the mark, the name, the one word of state ---- */
160
+ p { margin: 0; }
161
+
162
+ /* ---- the head: the Blob, the name, the one word of state ---- */
105
163
 
106
164
  .head {
107
165
  display: flex;
@@ -111,50 +169,57 @@ body {
111
169
  border-bottom: 1px solid var(--line);
112
170
  }
113
171
 
114
- .mark {
115
- display: inline-flex;
116
- align-items: center;
117
- justify-content: center;
118
- width: 24px;
119
- height: 24px;
120
- border-radius: var(--radius-sm);
121
- background: var(--accent);
122
- color: var(--accent-contrast);
123
- font-family: var(--font-display);
124
- font-size: var(--text-base);
125
- font-weight: var(--weight-semibold);
172
+ .blob { width: var(--blob); height: var(--blob); flex: none; user-select: none; }
173
+
174
+ .wordmark {
175
+ font-size: var(--text-xl);
176
+ font-weight: var(--weight-bold);
177
+ letter-spacing: var(--tracking-title);
126
178
  line-height: 1;
127
- user-select: none;
128
179
  }
129
180
 
130
- .head-name { font-family: var(--font-display); font-weight: var(--weight-semibold); }
131
-
132
- .state {
181
+ .pill {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ gap: var(--space-1);
185
+ height: var(--pill-h);
133
186
  margin-left: auto;
134
- padding: 2px var(--space-2);
187
+ padding: 0 var(--space-2);
188
+ border: 1px solid var(--line);
135
189
  border-radius: var(--radius-pill);
190
+ background: var(--surface);
191
+ color: var(--text-muted);
136
192
  font-size: var(--text-xs);
137
193
  font-weight: var(--weight-medium);
138
- background: var(--surface-sunken);
139
- color: var(--text-muted);
194
+ white-space: nowrap;
140
195
  }
141
- .state[data-tone='good'] { background: var(--good-soft); color: var(--good); }
142
- .state[data-tone='waiting'] { background: var(--warning-soft); color: var(--warning); }
143
- .state[data-tone='bad'] { background: var(--critical-soft); color: var(--critical); }
196
+ .pill::before { content: ''; width: var(--dot); height: var(--dot); border-radius: 50%; background: currentColor; }
197
+ .pill[data-tone='good'] { color: var(--good); background: var(--good-soft); border-color: transparent; }
198
+ .pill[data-tone='waiting'] { color: var(--warning); background: var(--warning-soft); border-color: transparent; }
199
+ .pill[data-tone='bad'] { color: var(--critical); background: var(--critical-soft); border-color: transparent; }
144
200
 
145
- /* ---- stacked sections, separated by a hairline and nothing else ---- */
201
+ /* ---- one view at a time, faded in ---- */
146
202
 
147
- .section {
203
+ .view {
148
204
  display: flex;
149
205
  flex-direction: column;
150
- gap: var(--space-2);
151
- padding: var(--space-3) var(--space-4);
152
- border-bottom: 1px solid var(--line);
206
+ gap: var(--space-3);
207
+ padding: var(--space-4);
208
+ animation: view-in var(--dur-view) var(--ease);
153
209
  }
154
- .section:last-of-type { border-bottom: 0; }
210
+
211
+ @keyframes view-in { from { opacity: 0; } to { opacity: 1; } }
212
+
213
+ @media (prefers-reduced-motion: reduce) {
214
+ .view { animation: none; }
215
+ .btn { transition: none; }
216
+ }
217
+
218
+ .field-group { display: flex; flex-direction: column; gap: var(--space-1); }
155
219
 
156
220
  .label { font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--text-muted); }
157
- .hint { margin: 0; font-size: var(--text-sm); color: var(--text-muted); }
221
+ .hint { font-size: var(--text-sm); color: var(--text-muted); }
222
+ .quiet { font-size: var(--text-md); color: var(--text-muted); }
158
223
 
159
224
  .field {
160
225
  height: var(--control-h);
@@ -167,34 +232,87 @@ body {
167
232
  font-size: var(--text-md);
168
233
  }
169
234
  .field:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
235
+ .field:disabled { color: var(--text-muted); }
236
+
237
+ .notice {
238
+ padding: var(--space-2) var(--space-3);
239
+ border-radius: var(--radius-lg);
240
+ font-size: var(--text-md);
241
+ }
242
+ .notice[data-tone='critical'] { background: var(--critical-soft); color: var(--critical); }
170
243
 
171
244
  /* The one that acts sits on the right. */
172
- .actions { display: flex; justify-content: flex-end; }
173
- .actions-left { justify-content: flex-start; }
245
+ .actions { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); }
246
+ .actions-split { justify-content: space-between; }
174
247
 
175
- .button {
176
- height: var(--control-h-sm);
248
+ .btn {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ height: var(--control-h);
177
253
  padding: 0 var(--space-3);
178
- border: 1px solid transparent;
254
+ border: 1px solid var(--line);
179
255
  border-radius: var(--radius);
180
- background: var(--accent);
181
- color: var(--accent-contrast);
256
+ background: var(--surface);
257
+ color: var(--text);
182
258
  font-family: inherit;
183
259
  font-size: var(--text-md);
184
260
  font-weight: var(--weight-medium);
261
+ line-height: 1;
262
+ white-space: nowrap;
263
+ cursor: pointer;
264
+ transition: background-color var(--dur-fast) ease, border-color var(--dur-fast) ease, transform var(--dur-fast) var(--ease);
265
+ }
266
+ .btn:hover:not(:disabled) { border-color: var(--line-strong); background: var(--surface-sunken); }
267
+ .btn:active:not(:disabled) { transform: translateY(1px); }
268
+ .btn:disabled { opacity: 0.45; cursor: default; }
269
+ .btn:focus-visible, .link:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
270
+ .btn[data-size='sm'] { height: var(--control-h-sm); padding: 0 var(--space-2); font-size: var(--text-sm); }
271
+ .btn[data-variant='accent'] { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); }
272
+ .btn[data-variant='accent']:hover:not(:disabled) { background: var(--accent-hover); border-color: var(--accent-hover); }
273
+
274
+ .link {
275
+ padding: 0;
276
+ border: 0;
277
+ background: none;
278
+ color: var(--text-muted);
279
+ font-family: inherit;
280
+ font-size: var(--text-sm);
185
281
  cursor: pointer;
282
+ text-underline-offset: 2px;
186
283
  }
187
- .button:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
188
- .button-quiet { background: transparent; border-color: var(--line); color: var(--text-muted); }
284
+ .link:hover { color: var(--text); text-decoration: underline; }
285
+
286
+ /* ---- the code: large, tabular, grouped in threes ---- */
189
287
 
190
- .code-row { display: flex; align-items: center; gap: var(--space-2); }
191
- .code-row .code { flex: 1; }
288
+ .code-tile {
289
+ display: flex;
290
+ align-items: center;
291
+ gap: var(--space-3);
292
+ padding: var(--space-3) var(--space-4);
293
+ border-radius: var(--radius-lg);
294
+ background: var(--surface-sunken);
295
+ }
192
296
 
193
297
  .code {
194
- margin: 0;
298
+ flex: 1;
195
299
  font-family: var(--font-mono);
196
- font-size: var(--text-2xl);
197
- font-weight: var(--weight-semibold);
198
- letter-spacing: 0.08em;
199
- color: var(--accent);
300
+ font-size: var(--text-3xl);
301
+ font-weight: 500;
302
+ font-variant-numeric: tabular-nums;
303
+ letter-spacing: 0.02em;
304
+ line-height: var(--leading-tight);
305
+ color: var(--text);
306
+ white-space: pre;
307
+ }
308
+
309
+ /* ---- connected ---- */
310
+
311
+ .facts { display: flex; flex-direction: column; gap: var(--space-0); }
312
+ .fact { font-size: var(--text-base); font-weight: var(--weight-medium); overflow-wrap: anywhere; }
313
+
314
+ .foot {
315
+ margin: 0 calc(var(--space-4) * -1) calc(var(--space-4) * -1);
316
+ padding: var(--space-2) var(--space-4);
317
+ border-top: 1px solid var(--line);
200
318
  }