@withbuddi/buddi 0.1.0-pre.35 → 0.1.0-pre.37

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 (832) hide show
  1. package/examples/agents/concierge/agent.md +5 -0
  2. package/examples/skills/letterhead/SKILL.md +21 -0
  3. package/examples/skills/letterhead/assets/letterhead.md +16 -0
  4. package/examples/skills/letterhead/assets/logo.svg +6 -0
  5. package/extension/manifest.json +2 -2
  6. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  7. package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
  8. package/node_modules/@buddi/cli/dist/doctor-probes.js +44 -3
  9. package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
  10. package/node_modules/@buddi/cli/dist/doctor.d.ts +37 -0
  11. package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
  12. package/node_modules/@buddi/cli/dist/doctor.js +37 -0
  13. package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
  14. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  15. package/node_modules/@buddi/core/dist/actions/approvals.d.ts +7 -0
  16. package/node_modules/@buddi/core/dist/actions/approvals.d.ts.map +1 -1
  17. package/node_modules/@buddi/core/dist/actions/approvals.js +11 -1
  18. package/node_modules/@buddi/core/dist/actions/approvals.js.map +1 -1
  19. package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
  20. package/node_modules/@buddi/core/dist/agents/catalog.js +2 -2
  21. package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
  22. package/node_modules/@buddi/core/dist/agents/skills.d.ts +60 -1
  23. package/node_modules/@buddi/core/dist/agents/skills.d.ts.map +1 -1
  24. package/node_modules/@buddi/core/dist/agents/skills.js +157 -17
  25. package/node_modules/@buddi/core/dist/agents/skills.js.map +1 -1
  26. package/node_modules/@buddi/core/dist/day-month.d.ts +52 -0
  27. package/node_modules/@buddi/core/dist/day-month.d.ts.map +1 -0
  28. package/node_modules/@buddi/core/dist/day-month.js +101 -0
  29. package/node_modules/@buddi/core/dist/day-month.js.map +1 -0
  30. package/node_modules/@buddi/core/dist/host/build.d.ts +25 -2
  31. package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
  32. package/node_modules/@buddi/core/dist/host/build.js +169 -8
  33. package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
  34. package/node_modules/@buddi/core/dist/host/http.d.ts +97 -0
  35. package/node_modules/@buddi/core/dist/host/http.d.ts.map +1 -1
  36. package/node_modules/@buddi/core/dist/host/http.js +321 -26
  37. package/node_modules/@buddi/core/dist/host/http.js.map +1 -1
  38. package/node_modules/@buddi/core/dist/host/types.d.ts +114 -4
  39. package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
  40. package/node_modules/@buddi/core/dist/index.d.ts +3 -0
  41. package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
  42. package/node_modules/@buddi/core/dist/index.js +3 -0
  43. package/node_modules/@buddi/core/dist/index.js.map +1 -1
  44. package/node_modules/@buddi/core/dist/notifications/notify.d.ts.map +1 -1
  45. package/node_modules/@buddi/core/dist/notifications/notify.js +10 -6
  46. package/node_modules/@buddi/core/dist/notifications/notify.js.map +1 -1
  47. package/node_modules/@buddi/core/dist/notifications/store.d.ts.map +1 -1
  48. package/node_modules/@buddi/core/dist/notifications/store.js +2 -1
  49. package/node_modules/@buddi/core/dist/notifications/store.js.map +1 -1
  50. package/node_modules/@buddi/core/dist/notifications/types.d.ts +8 -0
  51. package/node_modules/@buddi/core/dist/notifications/types.d.ts.map +1 -1
  52. package/node_modules/@buddi/core/dist/notifications/types.js.map +1 -1
  53. package/node_modules/@buddi/core/dist/onboarding/store.d.ts.map +1 -1
  54. package/node_modules/@buddi/core/dist/onboarding/store.js +28 -5
  55. package/node_modules/@buddi/core/dist/onboarding/store.js.map +1 -1
  56. package/node_modules/@buddi/core/dist/onboarding/types.d.ts +10 -0
  57. package/node_modules/@buddi/core/dist/onboarding/types.d.ts.map +1 -1
  58. package/node_modules/@buddi/core/dist/onboarding/types.js.map +1 -1
  59. package/node_modules/@buddi/core/dist/pages.d.ts +449 -20
  60. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  61. package/node_modules/@buddi/core/dist/pages.js +223 -8
  62. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  63. package/node_modules/@buddi/core/dist/plugin/assets.d.ts +52 -0
  64. package/node_modules/@buddi/core/dist/plugin/assets.d.ts.map +1 -0
  65. package/node_modules/@buddi/core/dist/plugin/assets.js +59 -0
  66. package/node_modules/@buddi/core/dist/plugin/assets.js.map +1 -0
  67. package/node_modules/@buddi/core/dist/plugin/index.d.ts +10 -4
  68. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  69. package/node_modules/@buddi/core/dist/plugin/index.js +4 -1
  70. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  71. package/node_modules/@buddi/core/dist/plugin/requires.d.ts +3 -1
  72. package/node_modules/@buddi/core/dist/plugin/requires.d.ts.map +1 -1
  73. package/node_modules/@buddi/core/dist/plugin/requires.js +5 -3
  74. package/node_modules/@buddi/core/dist/plugin/requires.js.map +1 -1
  75. package/node_modules/@buddi/core/dist/plugin/sign-in.d.ts +78 -0
  76. package/node_modules/@buddi/core/dist/plugin/sign-in.d.ts.map +1 -0
  77. package/node_modules/@buddi/core/dist/plugin/sign-in.js +54 -0
  78. package/node_modules/@buddi/core/dist/plugin/sign-in.js.map +1 -0
  79. package/node_modules/@buddi/core/dist/plugin/uses.d.ts +1 -1
  80. package/node_modules/@buddi/core/dist/plugin/uses.d.ts.map +1 -1
  81. package/node_modules/@buddi/core/dist/plugin/uses.js +2 -0
  82. package/node_modules/@buddi/core/dist/plugin/uses.js.map +1 -1
  83. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  84. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  85. package/node_modules/@buddi/core/dist/plugin-assets.d.ts +21 -0
  86. package/node_modules/@buddi/core/dist/plugin-assets.d.ts.map +1 -0
  87. package/node_modules/@buddi/core/dist/plugin-assets.js +140 -0
  88. package/node_modules/@buddi/core/dist/plugin-assets.js.map +1 -0
  89. package/node_modules/@buddi/core/dist/provider-accounts.d.ts +7 -0
  90. package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
  91. package/node_modules/@buddi/core/dist/provider-accounts.js +15 -0
  92. package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
  93. package/node_modules/@buddi/core/dist/questions/types.d.ts +1 -1
  94. package/node_modules/@buddi/core/dist/questions/types.js +1 -1
  95. package/node_modules/@buddi/core/dist/queue/jobs.d.ts +57 -2
  96. package/node_modules/@buddi/core/dist/queue/jobs.d.ts.map +1 -1
  97. package/node_modules/@buddi/core/dist/queue/jobs.js +114 -0
  98. package/node_modules/@buddi/core/dist/queue/jobs.js.map +1 -1
  99. package/node_modules/@buddi/core/dist/queue/worker.d.ts +24 -2
  100. package/node_modules/@buddi/core/dist/queue/worker.d.ts.map +1 -1
  101. package/node_modules/@buddi/core/dist/queue/worker.js +66 -11
  102. package/node_modules/@buddi/core/dist/queue/worker.js.map +1 -1
  103. package/node_modules/@buddi/core/dist/registry.d.ts +17 -0
  104. package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
  105. package/node_modules/@buddi/core/dist/registry.js +48 -4
  106. package/node_modules/@buddi/core/dist/registry.js.map +1 -1
  107. package/node_modules/@buddi/core/dist/scheduler/missions.d.ts +14 -0
  108. package/node_modules/@buddi/core/dist/scheduler/missions.d.ts.map +1 -1
  109. package/node_modules/@buddi/core/dist/scheduler/missions.js +17 -4
  110. package/node_modules/@buddi/core/dist/scheduler/missions.js.map +1 -1
  111. package/node_modules/@buddi/core/dist/scheduler/types.d.ts +13 -0
  112. package/node_modules/@buddi/core/dist/scheduler/types.d.ts.map +1 -1
  113. package/node_modules/@buddi/core/dist/scheduler/types.js +14 -0
  114. package/node_modules/@buddi/core/dist/scheduler/types.js.map +1 -1
  115. package/node_modules/@buddi/core/dist/secrets/scrub.d.ts.map +1 -1
  116. package/node_modules/@buddi/core/dist/secrets/scrub.js +15 -0
  117. package/node_modules/@buddi/core/dist/secrets/scrub.js.map +1 -1
  118. package/node_modules/@buddi/core/dist/surfaces.d.ts +10 -0
  119. package/node_modules/@buddi/core/dist/surfaces.d.ts.map +1 -1
  120. package/node_modules/@buddi/core/dist/surfaces.js +11 -0
  121. package/node_modules/@buddi/core/dist/surfaces.js.map +1 -1
  122. package/node_modules/@buddi/core/dist/tools.d.ts +72 -1
  123. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  124. package/node_modules/@buddi/core/dist/tools.js +38 -0
  125. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  126. package/node_modules/@buddi/core/dist/views.d.ts +29 -12
  127. package/node_modules/@buddi/core/dist/views.d.ts.map +1 -1
  128. package/node_modules/@buddi/core/dist/views.js +1 -0
  129. package/node_modules/@buddi/core/dist/views.js.map +1 -1
  130. package/node_modules/@buddi/core/dist/widget-settings.d.ts +2 -1
  131. package/node_modules/@buddi/core/dist/widget-settings.d.ts.map +1 -1
  132. package/node_modules/@buddi/core/dist/widget-settings.js +8 -2
  133. package/node_modules/@buddi/core/dist/widget-settings.js.map +1 -1
  134. package/node_modules/@buddi/core/dist/widgets.d.ts +46 -3
  135. package/node_modules/@buddi/core/dist/widgets.d.ts.map +1 -1
  136. package/node_modules/@buddi/core/dist/widgets.js +68 -5
  137. package/node_modules/@buddi/core/dist/widgets.js.map +1 -1
  138. package/node_modules/@buddi/core/migrations/073_mission_report.sql +15 -0
  139. package/node_modules/@buddi/core/migrations/074_owner_identity.sql +14 -0
  140. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  141. package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
  142. package/node_modules/@buddi/gateway/dist/agents/catalog.js +3 -3
  143. package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
  144. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts +76 -0
  145. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
  146. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js +29 -5
  147. package/node_modules/@buddi/gateway/dist/agents/catalogue-package.js.map +1 -1
  148. package/node_modules/@buddi/gateway/dist/agents/owner-text.d.ts +19 -0
  149. package/node_modules/@buddi/gateway/dist/agents/owner-text.d.ts.map +1 -0
  150. package/node_modules/@buddi/gateway/dist/agents/owner-text.js +44 -0
  151. package/node_modules/@buddi/gateway/dist/agents/owner-text.js.map +1 -0
  152. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  153. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js +36 -2
  154. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js.map +1 -1
  155. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts +68 -3
  156. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
  157. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js +264 -32
  158. package/node_modules/@buddi/gateway/dist/agents/platform-catalogue.js.map +1 -1
  159. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +11 -4
  160. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
  161. package/node_modules/@buddi/gateway/dist/agents/platform.js +15 -0
  162. package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
  163. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  164. package/node_modules/@buddi/gateway/dist/bootstrap.js +7 -1
  165. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  166. package/node_modules/@buddi/gateway/dist/evals/golden.d.ts +33 -1
  167. package/node_modules/@buddi/gateway/dist/evals/golden.d.ts.map +1 -1
  168. package/node_modules/@buddi/gateway/dist/evals/golden.js +168 -3
  169. package/node_modules/@buddi/gateway/dist/evals/golden.js.map +1 -1
  170. package/node_modules/@buddi/gateway/dist/index.d.ts +2 -1
  171. package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
  172. package/node_modules/@buddi/gateway/dist/index.js +2 -1
  173. package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
  174. package/node_modules/@buddi/gateway/dist/missions/agent-run.d.ts.map +1 -1
  175. package/node_modules/@buddi/gateway/dist/missions/agent-run.js +2 -0
  176. package/node_modules/@buddi/gateway/dist/missions/agent-run.js.map +1 -1
  177. package/node_modules/@buddi/gateway/dist/missions/dates.d.ts +98 -0
  178. package/node_modules/@buddi/gateway/dist/missions/dates.d.ts.map +1 -0
  179. package/node_modules/@buddi/gateway/dist/missions/dates.js +252 -0
  180. package/node_modules/@buddi/gateway/dist/missions/dates.js.map +1 -0
  181. package/node_modules/@buddi/gateway/dist/missions/defaults.d.ts.map +1 -1
  182. package/node_modules/@buddi/gateway/dist/missions/defaults.js +2 -0
  183. package/node_modules/@buddi/gateway/dist/missions/defaults.js.map +1 -1
  184. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +25 -1
  185. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
  186. package/node_modules/@buddi/gateway/dist/missions/execute.js +80 -8
  187. package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
  188. package/node_modules/@buddi/gateway/dist/missions/report.d.ts +25 -2
  189. package/node_modules/@buddi/gateway/dist/missions/report.d.ts.map +1 -1
  190. package/node_modules/@buddi/gateway/dist/missions/report.js +71 -11
  191. package/node_modules/@buddi/gateway/dist/missions/report.js.map +1 -1
  192. package/node_modules/@buddi/gateway/dist/ollama-local.d.ts +90 -0
  193. package/node_modules/@buddi/gateway/dist/ollama-local.d.ts.map +1 -0
  194. package/node_modules/@buddi/gateway/dist/ollama-local.js +201 -0
  195. package/node_modules/@buddi/gateway/dist/ollama-local.js.map +1 -0
  196. package/node_modules/@buddi/gateway/dist/owner-notify.d.ts.map +1 -1
  197. package/node_modules/@buddi/gateway/dist/owner-notify.js +7 -3
  198. package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -1
  199. package/node_modules/@buddi/gateway/dist/plugins/asset-image-worker.d.ts +2 -0
  200. package/node_modules/@buddi/gateway/dist/plugins/asset-image-worker.d.ts.map +1 -0
  201. package/node_modules/@buddi/gateway/dist/plugins/asset-image-worker.js +18 -0
  202. package/node_modules/@buddi/gateway/dist/plugins/asset-image-worker.js.map +1 -0
  203. package/node_modules/@buddi/gateway/dist/plugins/asset-image.d.ts +31 -0
  204. package/node_modules/@buddi/gateway/dist/plugins/asset-image.d.ts.map +1 -0
  205. package/node_modules/@buddi/gateway/dist/plugins/asset-image.js +332 -0
  206. package/node_modules/@buddi/gateway/dist/plugins/asset-image.js.map +1 -0
  207. package/node_modules/@buddi/gateway/dist/plugins/load.d.ts.map +1 -1
  208. package/node_modules/@buddi/gateway/dist/plugins/load.js +14 -1
  209. package/node_modules/@buddi/gateway/dist/plugins/load.js.map +1 -1
  210. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +6 -0
  211. package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
  212. package/node_modules/@buddi/gateway/dist/plugins/stage.js +5 -0
  213. package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
  214. package/node_modules/@buddi/gateway/dist/plugins/uninstall.d.ts.map +1 -1
  215. package/node_modules/@buddi/gateway/dist/plugins/uninstall.js +8 -0
  216. package/node_modules/@buddi/gateway/dist/plugins/uninstall.js.map +1 -1
  217. package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +8 -0
  218. package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
  219. package/node_modules/@buddi/gateway/dist/plugins-cli.js +22 -1
  220. package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
  221. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  222. package/node_modules/@buddi/gateway/dist/serve.js +50 -5
  223. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  224. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js +2 -2
  225. package/node_modules/@buddi/gateway/dist/system-context.d.ts +21 -1
  226. package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
  227. package/node_modules/@buddi/gateway/dist/system-context.js +76 -2
  228. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  229. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
  230. package/node_modules/@buddi/gateway/dist/telegram/approvals.js +4 -2
  231. package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
  232. package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts +12 -0
  233. package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts.map +1 -1
  234. package/node_modules/@buddi/gateway/dist/telegram/channel.js +49 -2
  235. package/node_modules/@buddi/gateway/dist/telegram/channel.js.map +1 -1
  236. package/node_modules/@buddi/gateway/dist/telegram/html.d.ts +34 -0
  237. package/node_modules/@buddi/gateway/dist/telegram/html.d.ts.map +1 -0
  238. package/node_modules/@buddi/gateway/dist/telegram/html.js +263 -0
  239. package/node_modules/@buddi/gateway/dist/telegram/html.js.map +1 -0
  240. package/node_modules/@buddi/gateway/dist/telegram/notify.d.ts +6 -0
  241. package/node_modules/@buddi/gateway/dist/telegram/notify.d.ts.map +1 -1
  242. package/node_modules/@buddi/gateway/dist/telegram/notify.js +25 -3
  243. package/node_modules/@buddi/gateway/dist/telegram/notify.js.map +1 -1
  244. package/node_modules/@buddi/gateway/dist/tips/facts.d.ts +2 -0
  245. package/node_modules/@buddi/gateway/dist/tips/facts.d.ts.map +1 -1
  246. package/node_modules/@buddi/gateway/dist/tips/facts.js +4 -1
  247. package/node_modules/@buddi/gateway/dist/tips/facts.js.map +1 -1
  248. package/node_modules/@buddi/gateway/dist/tips/rules.d.ts.map +1 -1
  249. package/node_modules/@buddi/gateway/dist/tips/rules.js +10 -0
  250. package/node_modules/@buddi/gateway/dist/tips/rules.js.map +1 -1
  251. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  252. package/node_modules/@buddi/gateway/dist/web/api-routes.js +80 -11
  253. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  254. package/node_modules/@buddi/gateway/dist/web/api-scan.d.ts +1 -1
  255. package/node_modules/@buddi/gateway/dist/web/api-scan.d.ts.map +1 -1
  256. package/node_modules/@buddi/gateway/dist/web/api-scan.js +1 -0
  257. package/node_modules/@buddi/gateway/dist/web/api-scan.js.map +1 -1
  258. package/node_modules/@buddi/gateway/dist/web/catalogue.d.ts.map +1 -1
  259. package/node_modules/@buddi/gateway/dist/web/catalogue.js +7 -4
  260. package/node_modules/@buddi/gateway/dist/web/catalogue.js.map +1 -1
  261. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  262. package/node_modules/@buddi/gateway/dist/web/chat.js +9 -0
  263. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  264. package/node_modules/@buddi/gateway/dist/web/composer.d.ts +45 -0
  265. package/node_modules/@buddi/gateway/dist/web/composer.d.ts.map +1 -0
  266. package/node_modules/@buddi/gateway/dist/web/composer.js +85 -0
  267. package/node_modules/@buddi/gateway/dist/web/composer.js.map +1 -0
  268. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +12 -0
  269. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  270. package/node_modules/@buddi/gateway/dist/web/extension.js +11 -1
  271. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  272. package/node_modules/@buddi/gateway/dist/web/lock.d.ts +6 -0
  273. package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
  274. package/node_modules/@buddi/gateway/dist/web/lock.js +33 -2
  275. package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
  276. package/node_modules/@buddi/gateway/dist/web/market.d.ts +20 -1
  277. package/node_modules/@buddi/gateway/dist/web/market.d.ts.map +1 -1
  278. package/node_modules/@buddi/gateway/dist/web/market.js +41 -1
  279. package/node_modules/@buddi/gateway/dist/web/market.js.map +1 -1
  280. package/node_modules/@buddi/gateway/dist/web/people.d.ts +44 -0
  281. package/node_modules/@buddi/gateway/dist/web/people.d.ts.map +1 -0
  282. package/node_modules/@buddi/gateway/dist/web/people.js +114 -0
  283. package/node_modules/@buddi/gateway/dist/web/people.js.map +1 -0
  284. package/node_modules/@buddi/gateway/dist/web/server.d.ts +4 -0
  285. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  286. package/node_modules/@buddi/gateway/dist/web/server.js +171 -13
  287. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  288. package/node_modules/@buddi/gateway/dist/web/skill-bundles.d.ts +101 -0
  289. package/node_modules/@buddi/gateway/dist/web/skill-bundles.d.ts.map +1 -0
  290. package/node_modules/@buddi/gateway/dist/web/skill-bundles.js +439 -0
  291. package/node_modules/@buddi/gateway/dist/web/skill-bundles.js.map +1 -0
  292. package/node_modules/@buddi/gateway/dist/web/skills.d.ts +57 -1
  293. package/node_modules/@buddi/gateway/dist/web/skills.d.ts.map +1 -1
  294. package/node_modules/@buddi/gateway/dist/web/skills.js +171 -9
  295. package/node_modules/@buddi/gateway/dist/web/skills.js.map +1 -1
  296. package/node_modules/@buddi/gateway/dist/web/widgets.js +2 -2
  297. package/node_modules/@buddi/gateway/dist/web/widgets.js.map +1 -1
  298. package/node_modules/@buddi/gateway/dist/web/zip-read.d.ts +31 -0
  299. package/node_modules/@buddi/gateway/dist/web/zip-read.d.ts.map +1 -0
  300. package/node_modules/@buddi/gateway/dist/web/zip-read.js +125 -0
  301. package/node_modules/@buddi/gateway/dist/web/zip-read.js.map +1 -0
  302. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  303. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  304. package/node_modules/@buddi/runtime/dist/index.d.ts +1 -0
  305. package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
  306. package/node_modules/@buddi/runtime/dist/index.js +1 -0
  307. package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
  308. package/node_modules/@buddi/runtime/dist/loop.js +11 -1
  309. package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
  310. package/node_modules/@buddi/runtime/dist/plugin-sign-in.d.ts +12 -0
  311. package/node_modules/@buddi/runtime/dist/plugin-sign-in.d.ts.map +1 -0
  312. package/node_modules/@buddi/runtime/dist/plugin-sign-in.js +397 -0
  313. package/node_modules/@buddi/runtime/dist/plugin-sign-in.js.map +1 -0
  314. package/node_modules/@buddi/runtime/dist/transport.d.ts +1 -1
  315. package/node_modules/@buddi/runtime/dist/transport.d.ts.map +1 -1
  316. package/node_modules/@buddi/runtime/dist/transport.js +6 -0
  317. package/node_modules/@buddi/runtime/dist/transport.js.map +1 -1
  318. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  319. package/node_modules/@buddi/tool-artifacts/dist/tools/write.d.ts.map +1 -1
  320. package/node_modules/@buddi/tool-artifacts/dist/tools/write.js +1 -0
  321. package/node_modules/@buddi/tool-artifacts/dist/tools/write.js.map +1 -1
  322. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  323. package/node_modules/@buddi/tool-browser/dist/computer.d.ts +13 -0
  324. package/node_modules/@buddi/tool-browser/dist/computer.d.ts.map +1 -1
  325. package/node_modules/@buddi/tool-browser/dist/computer.js +22 -2
  326. package/node_modules/@buddi/tool-browser/dist/computer.js.map +1 -1
  327. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +4 -0
  328. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  329. package/node_modules/@buddi/tool-browser/dist/controller.js +8 -3
  330. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  331. package/node_modules/@buddi/tool-browser/dist/index.d.ts +1 -1
  332. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  333. package/node_modules/@buddi/tool-browser/dist/index.js +1 -1
  334. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  335. package/node_modules/@buddi/tool-browser/dist/native/buddi-computer +0 -0
  336. package/node_modules/@buddi/tool-browser/dist/service.d.ts +5 -0
  337. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  338. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  339. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  340. package/node_modules/@buddi/tool-email/dist/widgets.d.ts.map +1 -1
  341. package/node_modules/@buddi/tool-email/dist/widgets.js +2 -1
  342. package/node_modules/@buddi/tool-email/dist/widgets.js.map +1 -1
  343. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  344. package/node_modules/@buddi/tool-host/dist/index.d.ts +2 -1
  345. package/node_modules/@buddi/tool-host/dist/index.d.ts.map +1 -1
  346. package/node_modules/@buddi/tool-host/dist/index.js +3 -2
  347. package/node_modules/@buddi/tool-host/dist/index.js.map +1 -1
  348. package/node_modules/@buddi/tool-host/dist/process.d.ts +4 -0
  349. package/node_modules/@buddi/tool-host/dist/process.d.ts.map +1 -1
  350. package/node_modules/@buddi/tool-host/dist/process.js +4 -2
  351. package/node_modules/@buddi/tool-host/dist/process.js.map +1 -1
  352. package/node_modules/@buddi/tool-host/dist/service.d.ts +66 -17
  353. package/node_modules/@buddi/tool-host/dist/service.d.ts.map +1 -1
  354. package/node_modules/@buddi/tool-host/dist/service.js +172 -9
  355. package/node_modules/@buddi/tool-host/dist/service.js.map +1 -1
  356. package/node_modules/@buddi/tool-host/dist/skill-run.d.ts +55 -0
  357. package/node_modules/@buddi/tool-host/dist/skill-run.d.ts.map +1 -0
  358. package/node_modules/@buddi/tool-host/dist/skill-run.js +132 -0
  359. package/node_modules/@buddi/tool-host/dist/skill-run.js.map +1 -0
  360. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  361. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  362. package/node_modules/@buddi/tool-memory/dist/index.d.ts +1 -0
  363. package/node_modules/@buddi/tool-memory/dist/index.d.ts.map +1 -1
  364. package/node_modules/@buddi/tool-memory/dist/index.js +7 -2
  365. package/node_modules/@buddi/tool-memory/dist/index.js.map +1 -1
  366. package/node_modules/@buddi/tool-memory/dist/people.d.ts +218 -0
  367. package/node_modules/@buddi/tool-memory/dist/people.d.ts.map +1 -0
  368. package/node_modules/@buddi/tool-memory/dist/people.js +582 -0
  369. package/node_modules/@buddi/tool-memory/dist/people.js.map +1 -0
  370. package/node_modules/@buddi/tool-memory/dist/preamble.d.ts +4 -1
  371. package/node_modules/@buddi/tool-memory/dist/preamble.d.ts.map +1 -1
  372. package/node_modules/@buddi/tool-memory/dist/preamble.js +25 -7
  373. package/node_modules/@buddi/tool-memory/dist/preamble.js.map +1 -1
  374. package/node_modules/@buddi/tool-memory/migrations/002_people.sql +40 -0
  375. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  376. package/node_modules/imapflow/CHANGELOG.md +8 -0
  377. package/node_modules/imapflow/dist/cjs/commands/append.js +27 -3
  378. package/node_modules/imapflow/dist/cjs/commands/store.js +31 -6
  379. package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +1 -1
  380. package/node_modules/imapflow/dist/cjs/imap-flow.js +1 -1
  381. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  382. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  383. package/node_modules/imapflow/dist/esm/commands/append.js +27 -3
  384. package/node_modules/imapflow/dist/esm/commands/store.js +31 -6
  385. package/node_modules/imapflow/dist/esm/imap-flow.d.ts +1 -1
  386. package/node_modules/imapflow/dist/esm/imap-flow.js +1 -1
  387. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  388. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  389. package/node_modules/imapflow/package.json +4 -4
  390. package/node_modules/pino/CONTRIBUTING.md +5 -1
  391. package/node_modules/pino/LICENSE +1 -1
  392. package/node_modules/pino/README.md +1 -1
  393. package/node_modules/pino/SECURITY.md +18 -2
  394. package/node_modules/pino/browser.js +68 -8
  395. package/node_modules/pino/docs/api.md +75 -4
  396. package/node_modules/pino/docs/asynchronous.md +18 -3
  397. package/node_modules/pino/docs/browser.md +63 -0
  398. package/node_modules/pino/docs/child-loggers.md +22 -1
  399. package/node_modules/pino/docs/ecosystem.md +1 -0
  400. package/node_modules/pino/docs/help.md +11 -3
  401. package/node_modules/pino/docs/lts.md +29 -0
  402. package/node_modules/pino/docs/pretty.md +3 -0
  403. package/node_modules/pino/docs/redaction.md +3 -8
  404. package/node_modules/pino/docs/transports.md +71 -0
  405. package/node_modules/pino/docs/web.md +11 -14
  406. package/node_modules/pino/eslint.config.js +15 -7
  407. package/node_modules/pino/lib/caller.js +10 -0
  408. package/node_modules/pino/lib/meta.js +1 -1
  409. package/node_modules/pino/lib/multistream.js +15 -7
  410. package/node_modules/pino/lib/redaction.js +8 -3
  411. package/node_modules/pino/lib/symbols.js +3 -1
  412. package/node_modules/pino/lib/tools.js +2 -2
  413. package/node_modules/pino/lib/transport.js +14 -1
  414. package/node_modules/pino/lib/worker.js +4 -1
  415. package/node_modules/pino/package.json +14 -22
  416. package/node_modules/pino/pino.d.ts +709 -736
  417. package/node_modules/pino/pino.js +27 -2
  418. package/node_modules/pino/test/basic.test.js +66 -0
  419. package/node_modules/pino/test/browser-bindings.test.js +114 -0
  420. package/node_modules/pino/test/browser-redaction.test.js +264 -0
  421. package/node_modules/pino/test/browser-set-bindings.test.js +99 -0
  422. package/node_modules/pino/test/caller.test.js +20 -0
  423. package/node_modules/pino/test/escaping.test.js +17 -0
  424. package/node_modules/pino/test/fixtures/caller-loop.js +6 -0
  425. package/node_modules/pino/test/fixtures/ts/transpile.cjs +3 -3
  426. package/node_modules/pino/test/helper.js +6 -2
  427. package/node_modules/pino/test/multistream.test.js +64 -0
  428. package/node_modules/pino/test/redact.test.js +30 -0
  429. package/node_modules/pino/test/smoke.js +59 -0
  430. package/node_modules/pino/test/transport/core.test.js +85 -0
  431. package/node_modules/pino/test/transport/sync-false.test.js +12 -0
  432. package/node_modules/pino/test/transport/uses-pino-config.test.js +4 -4
  433. package/node_modules/pino/test/types/pino-import.tst.cts +30 -0
  434. package/node_modules/pino/test/types/pino-import.tst.js +73 -0
  435. package/node_modules/pino/test/types/pino-multistream.tst.ts +49 -0
  436. package/node_modules/pino/test/types/pino-top-export.tst.ts +32 -0
  437. package/node_modules/pino/test/types/{pino-transport.test-d.ts → pino-transport.tst.ts} +85 -70
  438. package/node_modules/pino/test/types/pino-type-only.tst.ts +77 -0
  439. package/node_modules/pino/test/types/pino.ts +14 -7
  440. package/node_modules/pino/test/types/{pino.test-d.ts → pino.tst.ts} +135 -137
  441. package/node_modules/pino/test/types/tsconfig.json +10 -0
  442. package/node_modules/pino/tsconfig.json +6 -6
  443. package/node_modules/real-require/README.md +6 -6
  444. package/node_modules/real-require/package.json +10 -21
  445. package/node_modules/real-require/src/index.js +2 -2
  446. package/package.json +2 -2
  447. package/packages/cli/dist/.tsbuildinfo +1 -1
  448. package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
  449. package/packages/cli/dist/doctor-probes.js +44 -3
  450. package/packages/cli/dist/doctor-probes.js.map +1 -1
  451. package/packages/cli/dist/doctor.d.ts +37 -0
  452. package/packages/cli/dist/doctor.d.ts.map +1 -1
  453. package/packages/cli/dist/doctor.js +37 -0
  454. package/packages/cli/dist/doctor.js.map +1 -1
  455. package/packages/core/dist/.tsbuildinfo +1 -1
  456. package/packages/core/dist/actions/approvals.d.ts +7 -0
  457. package/packages/core/dist/actions/approvals.d.ts.map +1 -1
  458. package/packages/core/dist/actions/approvals.js +11 -1
  459. package/packages/core/dist/actions/approvals.js.map +1 -1
  460. package/packages/core/dist/agents/catalog.d.ts.map +1 -1
  461. package/packages/core/dist/agents/catalog.js +2 -2
  462. package/packages/core/dist/agents/catalog.js.map +1 -1
  463. package/packages/core/dist/agents/skills.d.ts +60 -1
  464. package/packages/core/dist/agents/skills.d.ts.map +1 -1
  465. package/packages/core/dist/agents/skills.js +157 -17
  466. package/packages/core/dist/agents/skills.js.map +1 -1
  467. package/packages/core/dist/day-month.d.ts +52 -0
  468. package/packages/core/dist/day-month.d.ts.map +1 -0
  469. package/packages/core/dist/day-month.js +101 -0
  470. package/packages/core/dist/day-month.js.map +1 -0
  471. package/packages/core/dist/host/build.d.ts +25 -2
  472. package/packages/core/dist/host/build.d.ts.map +1 -1
  473. package/packages/core/dist/host/build.js +169 -8
  474. package/packages/core/dist/host/build.js.map +1 -1
  475. package/packages/core/dist/host/http.d.ts +97 -0
  476. package/packages/core/dist/host/http.d.ts.map +1 -1
  477. package/packages/core/dist/host/http.js +321 -26
  478. package/packages/core/dist/host/http.js.map +1 -1
  479. package/packages/core/dist/host/types.d.ts +114 -4
  480. package/packages/core/dist/host/types.d.ts.map +1 -1
  481. package/packages/core/dist/index.d.ts +3 -0
  482. package/packages/core/dist/index.d.ts.map +1 -1
  483. package/packages/core/dist/index.js +3 -0
  484. package/packages/core/dist/index.js.map +1 -1
  485. package/packages/core/dist/notifications/notify.d.ts.map +1 -1
  486. package/packages/core/dist/notifications/notify.js +10 -6
  487. package/packages/core/dist/notifications/notify.js.map +1 -1
  488. package/packages/core/dist/notifications/store.d.ts.map +1 -1
  489. package/packages/core/dist/notifications/store.js +2 -1
  490. package/packages/core/dist/notifications/store.js.map +1 -1
  491. package/packages/core/dist/notifications/types.d.ts +8 -0
  492. package/packages/core/dist/notifications/types.d.ts.map +1 -1
  493. package/packages/core/dist/notifications/types.js.map +1 -1
  494. package/packages/core/dist/onboarding/store.d.ts.map +1 -1
  495. package/packages/core/dist/onboarding/store.js +28 -5
  496. package/packages/core/dist/onboarding/store.js.map +1 -1
  497. package/packages/core/dist/onboarding/types.d.ts +10 -0
  498. package/packages/core/dist/onboarding/types.d.ts.map +1 -1
  499. package/packages/core/dist/onboarding/types.js.map +1 -1
  500. package/packages/core/dist/pages.d.ts +449 -20
  501. package/packages/core/dist/pages.d.ts.map +1 -1
  502. package/packages/core/dist/pages.js +223 -8
  503. package/packages/core/dist/pages.js.map +1 -1
  504. package/packages/core/dist/plugin/assets.d.ts +52 -0
  505. package/packages/core/dist/plugin/assets.d.ts.map +1 -0
  506. package/packages/core/dist/plugin/assets.js +59 -0
  507. package/packages/core/dist/plugin/assets.js.map +1 -0
  508. package/packages/core/dist/plugin/index.d.ts +10 -4
  509. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  510. package/packages/core/dist/plugin/index.js +4 -1
  511. package/packages/core/dist/plugin/index.js.map +1 -1
  512. package/packages/core/dist/plugin/requires.d.ts +3 -1
  513. package/packages/core/dist/plugin/requires.d.ts.map +1 -1
  514. package/packages/core/dist/plugin/requires.js +5 -3
  515. package/packages/core/dist/plugin/requires.js.map +1 -1
  516. package/packages/core/dist/plugin/sign-in.d.ts +78 -0
  517. package/packages/core/dist/plugin/sign-in.d.ts.map +1 -0
  518. package/packages/core/dist/plugin/sign-in.js +54 -0
  519. package/packages/core/dist/plugin/sign-in.js.map +1 -0
  520. package/packages/core/dist/plugin/uses.d.ts +1 -1
  521. package/packages/core/dist/plugin/uses.d.ts.map +1 -1
  522. package/packages/core/dist/plugin/uses.js +2 -0
  523. package/packages/core/dist/plugin/uses.js.map +1 -1
  524. package/packages/core/dist/plugin/version.d.ts +1 -1
  525. package/packages/core/dist/plugin/version.js +1 -1
  526. package/packages/core/dist/plugin-assets.d.ts +21 -0
  527. package/packages/core/dist/plugin-assets.d.ts.map +1 -0
  528. package/packages/core/dist/plugin-assets.js +140 -0
  529. package/packages/core/dist/plugin-assets.js.map +1 -0
  530. package/packages/core/dist/provider-accounts.d.ts +7 -0
  531. package/packages/core/dist/provider-accounts.d.ts.map +1 -1
  532. package/packages/core/dist/provider-accounts.js +15 -0
  533. package/packages/core/dist/provider-accounts.js.map +1 -1
  534. package/packages/core/dist/questions/types.d.ts +1 -1
  535. package/packages/core/dist/questions/types.js +1 -1
  536. package/packages/core/dist/queue/jobs.d.ts +57 -2
  537. package/packages/core/dist/queue/jobs.d.ts.map +1 -1
  538. package/packages/core/dist/queue/jobs.js +114 -0
  539. package/packages/core/dist/queue/jobs.js.map +1 -1
  540. package/packages/core/dist/queue/worker.d.ts +24 -2
  541. package/packages/core/dist/queue/worker.d.ts.map +1 -1
  542. package/packages/core/dist/queue/worker.js +66 -11
  543. package/packages/core/dist/queue/worker.js.map +1 -1
  544. package/packages/core/dist/registry.d.ts +17 -0
  545. package/packages/core/dist/registry.d.ts.map +1 -1
  546. package/packages/core/dist/registry.js +48 -4
  547. package/packages/core/dist/registry.js.map +1 -1
  548. package/packages/core/dist/scheduler/missions.d.ts +14 -0
  549. package/packages/core/dist/scheduler/missions.d.ts.map +1 -1
  550. package/packages/core/dist/scheduler/missions.js +17 -4
  551. package/packages/core/dist/scheduler/missions.js.map +1 -1
  552. package/packages/core/dist/scheduler/types.d.ts +13 -0
  553. package/packages/core/dist/scheduler/types.d.ts.map +1 -1
  554. package/packages/core/dist/scheduler/types.js +14 -0
  555. package/packages/core/dist/scheduler/types.js.map +1 -1
  556. package/packages/core/dist/secrets/scrub.d.ts.map +1 -1
  557. package/packages/core/dist/secrets/scrub.js +15 -0
  558. package/packages/core/dist/secrets/scrub.js.map +1 -1
  559. package/packages/core/dist/surfaces.d.ts +10 -0
  560. package/packages/core/dist/surfaces.d.ts.map +1 -1
  561. package/packages/core/dist/surfaces.js +11 -0
  562. package/packages/core/dist/surfaces.js.map +1 -1
  563. package/packages/core/dist/tools.d.ts +72 -1
  564. package/packages/core/dist/tools.d.ts.map +1 -1
  565. package/packages/core/dist/tools.js +38 -0
  566. package/packages/core/dist/tools.js.map +1 -1
  567. package/packages/core/dist/views.d.ts +29 -12
  568. package/packages/core/dist/views.d.ts.map +1 -1
  569. package/packages/core/dist/views.js +1 -0
  570. package/packages/core/dist/views.js.map +1 -1
  571. package/packages/core/dist/widget-settings.d.ts +2 -1
  572. package/packages/core/dist/widget-settings.d.ts.map +1 -1
  573. package/packages/core/dist/widget-settings.js +8 -2
  574. package/packages/core/dist/widget-settings.js.map +1 -1
  575. package/packages/core/dist/widgets.d.ts +46 -3
  576. package/packages/core/dist/widgets.d.ts.map +1 -1
  577. package/packages/core/dist/widgets.js +68 -5
  578. package/packages/core/dist/widgets.js.map +1 -1
  579. package/packages/core/migrations/073_mission_report.sql +15 -0
  580. package/packages/core/migrations/074_owner_identity.sql +14 -0
  581. package/packages/gateway/dist/.tsbuildinfo +1 -1
  582. package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
  583. package/packages/gateway/dist/agents/catalog.js +3 -3
  584. package/packages/gateway/dist/agents/catalog.js.map +1 -1
  585. package/packages/gateway/dist/agents/catalogue-package.d.ts +76 -0
  586. package/packages/gateway/dist/agents/catalogue-package.d.ts.map +1 -1
  587. package/packages/gateway/dist/agents/catalogue-package.js +29 -5
  588. package/packages/gateway/dist/agents/catalogue-package.js.map +1 -1
  589. package/packages/gateway/dist/agents/owner-text.d.ts +19 -0
  590. package/packages/gateway/dist/agents/owner-text.d.ts.map +1 -0
  591. package/packages/gateway/dist/agents/owner-text.js +44 -0
  592. package/packages/gateway/dist/agents/owner-text.js.map +1 -0
  593. package/packages/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  594. package/packages/gateway/dist/agents/owner-tools.js +36 -2
  595. package/packages/gateway/dist/agents/owner-tools.js.map +1 -1
  596. package/packages/gateway/dist/agents/platform-catalogue.d.ts +68 -3
  597. package/packages/gateway/dist/agents/platform-catalogue.d.ts.map +1 -1
  598. package/packages/gateway/dist/agents/platform-catalogue.js +264 -32
  599. package/packages/gateway/dist/agents/platform-catalogue.js.map +1 -1
  600. package/packages/gateway/dist/agents/platform.d.ts +11 -4
  601. package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
  602. package/packages/gateway/dist/agents/platform.js +15 -0
  603. package/packages/gateway/dist/agents/platform.js.map +1 -1
  604. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  605. package/packages/gateway/dist/bootstrap.js +7 -1
  606. package/packages/gateway/dist/bootstrap.js.map +1 -1
  607. package/packages/gateway/dist/evals/golden.d.ts +33 -1
  608. package/packages/gateway/dist/evals/golden.d.ts.map +1 -1
  609. package/packages/gateway/dist/evals/golden.js +168 -3
  610. package/packages/gateway/dist/evals/golden.js.map +1 -1
  611. package/packages/gateway/dist/index.d.ts +2 -1
  612. package/packages/gateway/dist/index.d.ts.map +1 -1
  613. package/packages/gateway/dist/index.js +2 -1
  614. package/packages/gateway/dist/index.js.map +1 -1
  615. package/packages/gateway/dist/missions/agent-run.d.ts.map +1 -1
  616. package/packages/gateway/dist/missions/agent-run.js +2 -0
  617. package/packages/gateway/dist/missions/agent-run.js.map +1 -1
  618. package/packages/gateway/dist/missions/dates.d.ts +98 -0
  619. package/packages/gateway/dist/missions/dates.d.ts.map +1 -0
  620. package/packages/gateway/dist/missions/dates.js +252 -0
  621. package/packages/gateway/dist/missions/dates.js.map +1 -0
  622. package/packages/gateway/dist/missions/defaults.d.ts.map +1 -1
  623. package/packages/gateway/dist/missions/defaults.js +2 -0
  624. package/packages/gateway/dist/missions/defaults.js.map +1 -1
  625. package/packages/gateway/dist/missions/execute.d.ts +25 -1
  626. package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
  627. package/packages/gateway/dist/missions/execute.js +80 -8
  628. package/packages/gateway/dist/missions/execute.js.map +1 -1
  629. package/packages/gateway/dist/missions/report.d.ts +25 -2
  630. package/packages/gateway/dist/missions/report.d.ts.map +1 -1
  631. package/packages/gateway/dist/missions/report.js +71 -11
  632. package/packages/gateway/dist/missions/report.js.map +1 -1
  633. package/packages/gateway/dist/ollama-local.d.ts +90 -0
  634. package/packages/gateway/dist/ollama-local.d.ts.map +1 -0
  635. package/packages/gateway/dist/ollama-local.js +201 -0
  636. package/packages/gateway/dist/ollama-local.js.map +1 -0
  637. package/packages/gateway/dist/owner-notify.d.ts.map +1 -1
  638. package/packages/gateway/dist/owner-notify.js +7 -3
  639. package/packages/gateway/dist/owner-notify.js.map +1 -1
  640. package/packages/gateway/dist/plugins/asset-image-worker.d.ts +2 -0
  641. package/packages/gateway/dist/plugins/asset-image-worker.d.ts.map +1 -0
  642. package/packages/gateway/dist/plugins/asset-image-worker.js +18 -0
  643. package/packages/gateway/dist/plugins/asset-image-worker.js.map +1 -0
  644. package/packages/gateway/dist/plugins/asset-image.d.ts +31 -0
  645. package/packages/gateway/dist/plugins/asset-image.d.ts.map +1 -0
  646. package/packages/gateway/dist/plugins/asset-image.js +332 -0
  647. package/packages/gateway/dist/plugins/asset-image.js.map +1 -0
  648. package/packages/gateway/dist/plugins/load.d.ts.map +1 -1
  649. package/packages/gateway/dist/plugins/load.js +14 -1
  650. package/packages/gateway/dist/plugins/load.js.map +1 -1
  651. package/packages/gateway/dist/plugins/stage.d.ts +6 -0
  652. package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
  653. package/packages/gateway/dist/plugins/stage.js +5 -0
  654. package/packages/gateway/dist/plugins/stage.js.map +1 -1
  655. package/packages/gateway/dist/plugins/uninstall.d.ts.map +1 -1
  656. package/packages/gateway/dist/plugins/uninstall.js +8 -0
  657. package/packages/gateway/dist/plugins/uninstall.js.map +1 -1
  658. package/packages/gateway/dist/plugins-cli.d.ts +8 -0
  659. package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
  660. package/packages/gateway/dist/plugins-cli.js +22 -1
  661. package/packages/gateway/dist/plugins-cli.js.map +1 -1
  662. package/packages/gateway/dist/serve.d.ts.map +1 -1
  663. package/packages/gateway/dist/serve.js +50 -5
  664. package/packages/gateway/dist/serve.js.map +1 -1
  665. package/packages/gateway/dist/surfaces/pending-question.js +2 -2
  666. package/packages/gateway/dist/system-context.d.ts +21 -1
  667. package/packages/gateway/dist/system-context.d.ts.map +1 -1
  668. package/packages/gateway/dist/system-context.js +76 -2
  669. package/packages/gateway/dist/system-context.js.map +1 -1
  670. package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
  671. package/packages/gateway/dist/telegram/approvals.js +4 -2
  672. package/packages/gateway/dist/telegram/approvals.js.map +1 -1
  673. package/packages/gateway/dist/telegram/channel.d.ts +12 -0
  674. package/packages/gateway/dist/telegram/channel.d.ts.map +1 -1
  675. package/packages/gateway/dist/telegram/channel.js +49 -2
  676. package/packages/gateway/dist/telegram/channel.js.map +1 -1
  677. package/packages/gateway/dist/telegram/html.d.ts +34 -0
  678. package/packages/gateway/dist/telegram/html.d.ts.map +1 -0
  679. package/packages/gateway/dist/telegram/html.js +263 -0
  680. package/packages/gateway/dist/telegram/html.js.map +1 -0
  681. package/packages/gateway/dist/telegram/notify.d.ts +6 -0
  682. package/packages/gateway/dist/telegram/notify.d.ts.map +1 -1
  683. package/packages/gateway/dist/telegram/notify.js +25 -3
  684. package/packages/gateway/dist/telegram/notify.js.map +1 -1
  685. package/packages/gateway/dist/tips/facts.d.ts +2 -0
  686. package/packages/gateway/dist/tips/facts.d.ts.map +1 -1
  687. package/packages/gateway/dist/tips/facts.js +4 -1
  688. package/packages/gateway/dist/tips/facts.js.map +1 -1
  689. package/packages/gateway/dist/tips/rules.d.ts.map +1 -1
  690. package/packages/gateway/dist/tips/rules.js +10 -0
  691. package/packages/gateway/dist/tips/rules.js.map +1 -1
  692. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  693. package/packages/gateway/dist/web/api-routes.js +80 -11
  694. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  695. package/packages/gateway/dist/web/api-scan.d.ts +1 -1
  696. package/packages/gateway/dist/web/api-scan.d.ts.map +1 -1
  697. package/packages/gateway/dist/web/api-scan.js +1 -0
  698. package/packages/gateway/dist/web/api-scan.js.map +1 -1
  699. package/packages/gateway/dist/web/catalogue.d.ts.map +1 -1
  700. package/packages/gateway/dist/web/catalogue.js +7 -4
  701. package/packages/gateway/dist/web/catalogue.js.map +1 -1
  702. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  703. package/packages/gateway/dist/web/chat.js +9 -0
  704. package/packages/gateway/dist/web/chat.js.map +1 -1
  705. package/packages/gateway/dist/web/composer.d.ts +45 -0
  706. package/packages/gateway/dist/web/composer.d.ts.map +1 -0
  707. package/packages/gateway/dist/web/composer.js +85 -0
  708. package/packages/gateway/dist/web/composer.js.map +1 -0
  709. package/packages/gateway/dist/web/extension.d.ts +12 -0
  710. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  711. package/packages/gateway/dist/web/extension.js +11 -1
  712. package/packages/gateway/dist/web/extension.js.map +1 -1
  713. package/packages/gateway/dist/web/lock.d.ts +6 -0
  714. package/packages/gateway/dist/web/lock.d.ts.map +1 -1
  715. package/packages/gateway/dist/web/lock.js +33 -2
  716. package/packages/gateway/dist/web/lock.js.map +1 -1
  717. package/packages/gateway/dist/web/market.d.ts +20 -1
  718. package/packages/gateway/dist/web/market.d.ts.map +1 -1
  719. package/packages/gateway/dist/web/market.js +41 -1
  720. package/packages/gateway/dist/web/market.js.map +1 -1
  721. package/packages/gateway/dist/web/people.d.ts +44 -0
  722. package/packages/gateway/dist/web/people.d.ts.map +1 -0
  723. package/packages/gateway/dist/web/people.js +114 -0
  724. package/packages/gateway/dist/web/people.js.map +1 -0
  725. package/packages/gateway/dist/web/server.d.ts +4 -0
  726. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  727. package/packages/gateway/dist/web/server.js +171 -13
  728. package/packages/gateway/dist/web/server.js.map +1 -1
  729. package/packages/gateway/dist/web/skill-bundles.d.ts +101 -0
  730. package/packages/gateway/dist/web/skill-bundles.d.ts.map +1 -0
  731. package/packages/gateway/dist/web/skill-bundles.js +439 -0
  732. package/packages/gateway/dist/web/skill-bundles.js.map +1 -0
  733. package/packages/gateway/dist/web/skills.d.ts +57 -1
  734. package/packages/gateway/dist/web/skills.d.ts.map +1 -1
  735. package/packages/gateway/dist/web/skills.js +171 -9
  736. package/packages/gateway/dist/web/skills.js.map +1 -1
  737. package/packages/gateway/dist/web/widgets.js +2 -2
  738. package/packages/gateway/dist/web/widgets.js.map +1 -1
  739. package/packages/gateway/dist/web/zip-read.d.ts +31 -0
  740. package/packages/gateway/dist/web/zip-read.d.ts.map +1 -0
  741. package/packages/gateway/dist/web/zip-read.js +125 -0
  742. package/packages/gateway/dist/web/zip-read.js.map +1 -0
  743. package/packages/install/dist/.tsbuildinfo +1 -1
  744. package/packages/runtime/dist/.tsbuildinfo +1 -1
  745. package/packages/runtime/dist/index.d.ts +1 -0
  746. package/packages/runtime/dist/index.d.ts.map +1 -1
  747. package/packages/runtime/dist/index.js +1 -0
  748. package/packages/runtime/dist/index.js.map +1 -1
  749. package/packages/runtime/dist/loop.js +11 -1
  750. package/packages/runtime/dist/loop.js.map +1 -1
  751. package/packages/runtime/dist/plugin-sign-in.d.ts +12 -0
  752. package/packages/runtime/dist/plugin-sign-in.d.ts.map +1 -0
  753. package/packages/runtime/dist/plugin-sign-in.js +397 -0
  754. package/packages/runtime/dist/plugin-sign-in.js.map +1 -0
  755. package/packages/runtime/dist/transport.d.ts +1 -1
  756. package/packages/runtime/dist/transport.d.ts.map +1 -1
  757. package/packages/runtime/dist/transport.js +6 -0
  758. package/packages/runtime/dist/transport.js.map +1 -1
  759. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  760. package/packages/tools/artifacts/dist/tools/write.d.ts.map +1 -1
  761. package/packages/tools/artifacts/dist/tools/write.js +1 -0
  762. package/packages/tools/artifacts/dist/tools/write.js.map +1 -1
  763. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  764. package/packages/tools/browser/dist/computer.d.ts +13 -0
  765. package/packages/tools/browser/dist/computer.d.ts.map +1 -1
  766. package/packages/tools/browser/dist/computer.js +22 -2
  767. package/packages/tools/browser/dist/computer.js.map +1 -1
  768. package/packages/tools/browser/dist/controller.d.ts +4 -0
  769. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  770. package/packages/tools/browser/dist/controller.js +8 -3
  771. package/packages/tools/browser/dist/controller.js.map +1 -1
  772. package/packages/tools/browser/dist/index.d.ts +1 -1
  773. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  774. package/packages/tools/browser/dist/index.js +1 -1
  775. package/packages/tools/browser/dist/index.js.map +1 -1
  776. package/packages/tools/browser/dist/native/buddi-computer +0 -0
  777. package/packages/tools/browser/dist/service.d.ts +5 -0
  778. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  779. package/packages/tools/browser/dist/service.js.map +1 -1
  780. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  781. package/packages/tools/email/dist/widgets.d.ts.map +1 -1
  782. package/packages/tools/email/dist/widgets.js +2 -1
  783. package/packages/tools/email/dist/widgets.js.map +1 -1
  784. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  785. package/packages/tools/host/dist/index.d.ts +2 -1
  786. package/packages/tools/host/dist/index.d.ts.map +1 -1
  787. package/packages/tools/host/dist/index.js +3 -2
  788. package/packages/tools/host/dist/index.js.map +1 -1
  789. package/packages/tools/host/dist/process.d.ts +4 -0
  790. package/packages/tools/host/dist/process.d.ts.map +1 -1
  791. package/packages/tools/host/dist/process.js +4 -2
  792. package/packages/tools/host/dist/process.js.map +1 -1
  793. package/packages/tools/host/dist/service.d.ts +66 -17
  794. package/packages/tools/host/dist/service.d.ts.map +1 -1
  795. package/packages/tools/host/dist/service.js +172 -9
  796. package/packages/tools/host/dist/service.js.map +1 -1
  797. package/packages/tools/host/dist/skill-run.d.ts +55 -0
  798. package/packages/tools/host/dist/skill-run.d.ts.map +1 -0
  799. package/packages/tools/host/dist/skill-run.js +132 -0
  800. package/packages/tools/host/dist/skill-run.js.map +1 -0
  801. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  802. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  803. package/packages/tools/memory/dist/index.d.ts +1 -0
  804. package/packages/tools/memory/dist/index.d.ts.map +1 -1
  805. package/packages/tools/memory/dist/index.js +7 -2
  806. package/packages/tools/memory/dist/index.js.map +1 -1
  807. package/packages/tools/memory/dist/people.d.ts +218 -0
  808. package/packages/tools/memory/dist/people.d.ts.map +1 -0
  809. package/packages/tools/memory/dist/people.js +582 -0
  810. package/packages/tools/memory/dist/people.js.map +1 -0
  811. package/packages/tools/memory/dist/preamble.d.ts +4 -1
  812. package/packages/tools/memory/dist/preamble.d.ts.map +1 -1
  813. package/packages/tools/memory/dist/preamble.js +25 -7
  814. package/packages/tools/memory/dist/preamble.js.map +1 -1
  815. package/packages/tools/memory/migrations/002_people.sql +40 -0
  816. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  817. package/packages/web/dist/assets/index-CN1AXMI1.css +1 -0
  818. package/packages/web/dist/assets/index-CQRE9LJX.js +145 -0
  819. package/packages/web/dist/assets/{lottie_light-DYHnHRWL.js → lottie_light-CKJ88Yuk.js} +1 -1
  820. package/packages/web/dist/build.json +1 -1
  821. package/packages/web/dist/index.html +2 -2
  822. package/packages/web/dist/precache.json +4 -4
  823. package/node_modules/pino/test/types/pino-import.test-d.cts +0 -30
  824. package/node_modules/pino/test/types/pino-multistream.test-d.ts +0 -28
  825. package/node_modules/pino/test/types/pino-top-export.test-d.ts +0 -34
  826. package/node_modules/pino/test/types/pino-type-only.test-d.ts +0 -75
  827. package/node_modules/thread-stream/node_modules/real-require/LICENSE.md +0 -21
  828. package/node_modules/thread-stream/node_modules/real-require/README.md +0 -51
  829. package/node_modules/thread-stream/node_modules/real-require/package.json +0 -38
  830. package/node_modules/thread-stream/node_modules/real-require/src/index.js +0 -14
  831. package/packages/web/dist/assets/index-ZauRFo4G.js +0 -134
  832. package/packages/web/dist/assets/index-viBWQfeT.css +0 -1
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Settings → Memory → People, and Home's birthday card (docs/memory.md,
3
+ * "People"; docs/dashboard.md, Home).
4
+ *
5
+ * GET /api/memory/people → { people: PersonRow[], today }
6
+ * POST /api/memory/people { id?, name, relationship?, addressAs?, birthday?, anniversary?, notes?, reminders? } → { person, people }
7
+ * POST /api/memory/people/:id/forget → { person, people }
8
+ * POST /api/memory/people/:id/restore → { person, people }
9
+ * GET /api/owner/birthday → BirthdayGlance
10
+ *
11
+ * The owner writes People directly: no proposal, because the owner is the one
12
+ * who decides. Every save brings the date missions in step at once
13
+ * (`syncDateMissions`), so "Remind me of their dates" is the mission's own
14
+ * switch, created off and turned on here.
15
+ */
16
+ import { daysUntil, localDateString, ownerTimezone, setMissionEnabled, turning } from '@buddi/core';
17
+ import { PersonRefusal, forgetPerson, listPeople, restorePerson, upsertPerson } from '@buddi/tool-memory';
18
+ import { birthdayGlance, personMissionId, syncDateMissions } from '../missions/dates.js';
19
+ export async function peopleRows(deps) {
20
+ const today = localDateString(deps.now(), ownerTimezone());
21
+ let people = [];
22
+ try {
23
+ people = await listPeople(deps.pool);
24
+ }
25
+ catch (err) {
26
+ if (err?.code !== '42P01')
27
+ throw err;
28
+ }
29
+ const { rows: missions } = await deps.pool.query(`select id, enabled from core.missions where id like 'person-dates:%'`);
30
+ const enabled = new Map(missions.map((m) => [String(m.id), Boolean(m.enabled)]));
31
+ return {
32
+ today,
33
+ people: people.map((p) => {
34
+ const dates = ['birthday', 'anniversary']
35
+ .filter((what) => p[what] !== null)
36
+ .map((what) => ({ what, date: p[what], inDays: daysUntil(p[what], today) }))
37
+ .sort((a, b) => a.inDays - b.inDays);
38
+ const soonest = dates[0];
39
+ return {
40
+ ...p,
41
+ next: soonest ? { what: soonest.what, inDays: soonest.inDays, turning: turning(soonest.date, today) } : null,
42
+ reminders: dates.length === 0 ? null : (enabled.get(personMissionId(p.id)) ?? false),
43
+ };
44
+ }),
45
+ };
46
+ }
47
+ const dateOf = (value) => {
48
+ if (value === undefined)
49
+ return undefined;
50
+ if (value === null)
51
+ return null;
52
+ if (typeof value !== 'object')
53
+ return null;
54
+ const v = value;
55
+ return { day: Number(v.day), month: Number(v.month), year: v.year === undefined || v.year === null || v.year === '' ? null : Number(v.year) };
56
+ };
57
+ const textOf = (value) => value === undefined ? undefined : value === null ? null : typeof value === 'string' ? value : String(value);
58
+ export async function peopleRoute(deps, method, path, body) {
59
+ if (method === 'GET' && path === '/api/owner/birthday') {
60
+ return { status: 200, body: await birthdayGlance(deps.pool, deps.now()) };
61
+ }
62
+ if (method === 'GET' && path === '/api/memory/people') {
63
+ return { status: 200, body: await peopleRows(deps) };
64
+ }
65
+ if (method !== 'POST')
66
+ return undefined;
67
+ const sync = async () => {
68
+ try {
69
+ await syncDateMissions({ pool: deps.pool, catalog: deps.catalog, now: deps.now, log: deps.log });
70
+ }
71
+ catch (err) {
72
+ deps.log(`dates: ${err instanceof Error ? err.message : String(err)}`);
73
+ }
74
+ };
75
+ if (path === '/api/memory/people') {
76
+ const id = typeof body.id === 'string' && body.id !== '' ? body.id : undefined;
77
+ try {
78
+ const { person } = await upsertPerson(deps.pool, {
79
+ ...(id ? { id } : {}),
80
+ ...(body.name !== undefined ? { name: String(body.name) } : {}),
81
+ ...(textOf(body.relationship) !== undefined ? { relationship: textOf(body.relationship) } : {}),
82
+ ...(textOf(body.addressAs) !== undefined ? { addressAs: textOf(body.addressAs) } : {}),
83
+ ...(textOf(body.notes) !== undefined ? { notes: textOf(body.notes) } : {}),
84
+ ...(dateOf(body.birthday) !== undefined ? { birthday: dateOf(body.birthday) } : {}),
85
+ ...(dateOf(body.anniversary) !== undefined ? { anniversary: dateOf(body.anniversary) } : {}),
86
+ }, { by: 'owner', now: deps.now() });
87
+ await sync();
88
+ // The switch on the sheet is the mission's own: it exists once a date does.
89
+ if (typeof body.reminders === 'boolean' && (person.birthday || person.anniversary)) {
90
+ await setMissionEnabled(deps.pool, personMissionId(person.id), body.reminders);
91
+ }
92
+ const rows = await peopleRows(deps);
93
+ return { status: 200, body: { person: rows.people.find((p) => p.id === person.id) ?? person, people: rows.people } };
94
+ }
95
+ catch (err) {
96
+ if (err instanceof PersonRefusal)
97
+ return { status: 400, body: { error: err.message } };
98
+ if (err?.code === '23505')
99
+ return { status: 409, body: { error: 'Someone with that name is already in People.' } };
100
+ throw err;
101
+ }
102
+ }
103
+ const one = /^\/api\/memory\/people\/([0-9a-f-]{36})\/(forget|restore)$/.exec(path);
104
+ if (one) {
105
+ const person = one[2] === 'forget' ? await forgetPerson(deps.pool, one[1], deps.now()) : await restorePerson(deps.pool, one[1]);
106
+ if (!person)
107
+ return { status: 404, body: { error: one[2] === 'forget' ? 'That person is not in People.' : 'That person cannot come back: someone with the same name is in People now.' } };
108
+ await sync();
109
+ const rows = await peopleRows(deps);
110
+ return { status: 200, body: { person, people: rows.people } };
111
+ }
112
+ return undefined;
113
+ }
114
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/web/people.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type ProviderSettings } from '../providers.js';
2
2
  import { type ProviderAccounts } from '../provider-accounts.js';
3
+ import { type OllamaMachine, type OllamaPulls } from '../ollama-local.js';
3
4
  import { type TelegramControl } from './telegram.js';
4
5
  import { type Server } from 'node:http';
5
6
  import type { AgentCatalog, JobControl, CoreToolContext, ToolRegistry } from '@buddi/core';
@@ -24,6 +25,9 @@ export interface WebServerDeps {
24
25
  * (plugins/requires.ts). Made here when absent.
25
26
  */
26
27
  requirements?: Requirements;
28
+ /** The first run's Ollama pull and machine facts, for a test; made here when absent (ollama-local.ts). */
29
+ ollamaPulls?: OllamaPulls;
30
+ ollamaMachine?: () => OllamaMachine;
27
31
  /** The place finder's road, for a test; Open-Meteo through core's guard otherwise. */
28
32
  placesHttp?: HttpArea;
29
33
  /** Host controller; test instances can inject a fake. Reads never enable it. */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAuEA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKtF,OAAO,EAAiD,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgBzH,OAAO,EAQL,KAAK,eAAe,EAErB,MAAM,eAAe,CAAC;AAYvB,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAEjG,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAY,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EAAwL,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtO,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AA2BzE,OAAO,EAKL,OAAO,EAKP,KAAK,WAAW,EACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAuC,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAcL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAsC3E,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAcvB,OAAO,EAcL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAoBtB,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI/E,OAAO,EAAyD,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6CnG,qFAAqF;AACrF,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,0GAA0G;IAC1G,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,aAAa,CAAC;IACpC,sFAAsF;IACtF,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,eAAe,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACjE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3C;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;IAC/F;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC7E,GAAG,SAAS,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qDAAqD;IACrD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;GAMG;AACH,oHAAoH;AACpH,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAwE/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE7D;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEnE;AAED,yDAAyD;AACzD,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAy4GxD;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,SAAS,CAAC,CA+DpB"}
@@ -46,9 +46,10 @@ import { agentMuteRoute, focusRoute, listNotificationsRoute, markSeenRoute, noti
46
46
  import { catalogSkillLookup, discardProposalFromWeb, keepAllProposalsFromWeb, keepProposalFromWeb, readProposals, registryChangeLookup } from './proposals.js';
47
47
  import { latestDigest, readDigestSchedule, setDigestSchedule } from '../agents/learning-digest.js';
48
48
  import { readAgentSkills, removeLearnedSkillFromWeb } from '../agents/learned-skills.js';
49
- import { createSkillRoute, deleteSkillRoute, editSkillRoute, grantSkillRoute, listSkillsRoute, skillDetailRoute, skillDownload, trustSkillRoute, } from './skills.js';
49
+ import { createSkillRoute, deleteSkillRoute, editSkillRoute, grantSkillRoute, listSkillsRoute, skillDetailRoute, skillDownload, skillFileRoute, skillImage, stagedFileRoute, stagedImage, acceptBundleRoute, trustSkillRoute, } from './skills.js';
50
+ import { discardStaged, incomingDirFor, receiveBundleUpload, stageBundle, uploadLabel } from './skill-bundles.js';
50
51
  import { bindMcpRequests, requestThroughMcp } from '../mcp/requests.js';
51
- import { randomUUID, createHmac } from 'node:crypto';
52
+ import { randomUUID, createHmac, createHash } from 'node:crypto';
52
53
  import { StringDecoder } from 'node:string_decoder';
53
54
  import { continueBrowserTask } from '../surfaces/browser-continuation.js';
54
55
  import { carryOverDeps } from '../surfaces/carry-over.js';
@@ -59,14 +60,15 @@ import { listBrowserProfiles, listInstalledApps } from './apps.js';
59
60
  import { agentSearchPath, EXAMPLES_AGENTS_DIR } from '../agents/catalog.js';
60
61
  import { setDelegatesFromWeb } from './write.js';
61
62
  import { mlxhBaseUrl, probeMlxh } from '../mlxh.js';
62
- import { OnboardingRefusal, WEB_ONBOARDING_STEPS, WEB_ONBOARDING_SURFACE, claimOpeningTurn, createFirstAgent, probeOllama, readOnboarding, rebindBrain, updateFirstAgent, withFirstRunFacts, readFirstAgentPersona } from './onboarding.js';
63
+ import { PullRefusal, createOllamaPulls, ollamaMachine } from '../ollama-local.js';
64
+ import { OnboardingRefusal, WEB_ONBOARDING_STEPS, WEB_ONBOARDING_SURFACE, claimOpeningTurn, createFirstAgent, OLLAMA_BASE_URL, probeOllama, readOnboarding, rebindBrain, updateFirstAgent, withFirstRunFacts, readFirstAgentPersona } from './onboarding.js';
63
65
  import { TakeOnRefusal, readTakeOn, startTakeOn } from './take-on.js';
64
66
  import { TelegramWebError, saveTelegramToken, telegramBot, telegramDevices, telegramPairing, telegramStatus, unpairTelegramDevice, } from './telegram.js';
65
67
  import { PAGE_ROUTE, sendPageFile, actOnPage, actRateLimited, listPageDescriptors, runPageQuery, } from './pages.js';
66
68
  import { listSecrets, secretUses, secretsAct } from './secrets.js';
67
69
  import { sayRoute, transcribeRoute } from './speech.js';
68
70
  import { createServer } from 'node:http';
69
- import { getAction, idleRolloverMs, inRecovery, listMissions, listPendingActions, isJobState, parseAgentFile, setSentinelEnabled, snoozeFinding, snoozeFindings, unmuteFindings } from '@buddi/core';
71
+ import { asksEachTime, getAction, idleRolloverMs, inRecovery, listMissions, listPendingActions, isJobState, parseAgentFile, setSentinelEnabled, snoozeFinding, snoozeFindings, unmuteFindings } from '@buddi/core';
70
72
  import { actOnAlerts, askPrompt, findingsForAsk, muteAlert } from './alerts.js';
71
73
  import { connectionsOf } from '@buddi/tool-mcp';
72
74
  import { CONNECTIONS_CALLBACK_PATH, connectionsRoute } from './connections.js';
@@ -75,7 +77,7 @@ import { hostService } from '@buddi/tool-host';
75
77
  import { listToolPermissions, revokeToolPermission, getArtifact, readArtifactBytes, artifactBytesExist, discardUnreferencedUpload, listLibrary, getLibraryEntry, decodeCursor, filterKey, textPreviewable, readArtifactPrefix, FILE_FAMILIES, LIBRARY_PAGE_MAX, getOwnerProfile, saveOwnerProfile, isKnownTimezone, listGroups, getGroup, createGroup, updateGroup, archiveGroup, deleteGroup, restoreGroup, clearGroupHistory, groupHistorySize, GROUP_UNDO_MS, GroupRefusal, createGroupConversation, listGroupConversations, latestGroupConversation, openGroupRequest, conversationGroup } from '@buddi/core';
76
78
  import { EXPORT_MIME, MAX_EXPORT_SOURCE_BYTES, exportFormats, exportName } from '../export/document.js';
77
79
  import { ExportRefused, runExport } from '../export/convert.js';
78
- import { beginOnboarding, completeOnboarding, markStepDone, setOnboardingDetails, skipOnboarding, readWebSetting, writeWebSetting } from '@buddi/core';
80
+ import { beginOnboarding, completeOnboarding, markStepDone, setOnboardingDetails, skipOnboarding, readWebSetting, writeWebSetting, isAssetKey, readPluginAsset } from '@buddi/core';
79
81
  import { listMemory, setPreference, forgetPreference, updateNote, forgetNote } from '@buddi/tool-memory';
80
82
  import { purgeGroups, stopGroupWork } from './group-lifecycle.js';
81
83
  import { engineChangeFromBody, readAgentEngines, readDefaultAgent, readEngineOptions, setAgentEngineFromWeb, setDefaultAgentFromWeb, } from './agents.js';
@@ -112,7 +114,9 @@ import { tipsRoute } from '../tips/route.js';
112
114
  import { createWidgets, widgetsRoute } from './widgets.js';
113
115
  import { createRequirements } from '../plugins/requires.js';
114
116
  import { placesList, placesRoute } from './places.js';
115
- import { OWNER_DATE_FORMATS, OWNER_TIME_FORMATS } from '@buddi/core';
117
+ import { peopleRoute } from './people.js';
118
+ import { syncDateMissions } from '../missions/dates.js';
119
+ import { OWNER_DATE_FORMATS, OWNER_TIME_FORMATS, validDayMonth } from '@buddi/core';
116
120
  import { readFacts, webSettingsStore } from '../tips/facts.js';
117
121
  import { dismissAgentOffer, isPendingAccept, raiseAgentOffers, readAgentOffers } from './agent-offers.js';
118
122
  import { currentVersion, upgradeJobRoute, upgradeRoute, versionCheckRoute, versionRoute, } from './version.js';
@@ -125,6 +129,8 @@ import { ensureWebToken, verifyTicket } from './token.js';
125
129
  import { MAX_UPLOAD_BYTES, readUpload } from './upload.js';
126
130
  import { LOCKED_BODY, LockUnavailable, allowedWhileLocked, clientOf, createLock } from './lock.js';
127
131
  import { matchApiRoute, TOKEN_REFUSALS } from './api-routes.js';
132
+ import { QUIET_UNAVAILABLE_TEXT, pluginCommands } from './composer.js';
133
+ import { createEngagementHooks } from '../missions/engagement.js';
128
134
  import { apiTokensRoute, bearerOf, verifyApiToken } from './api-tokens.js';
129
135
  import { LockImageRefusal, MAX_LOCK_IMAGE_BYTES, normaliseLockImage } from './lock-image.js';
130
136
  import { cancelJobFromWeb, cancelReminderFromWeb, decideApprovalFromWeb, retryJobFromWeb, retryJobsFromWeb, dismissJobsFromWeb, undismissJobsFromWeb, setMissionEnabledFromWeb, keepMissionFromWeb, answerStillUsefulFromWeb, setPausedFromWeb, setScheduleFromWeb, dismissOfferFromWeb, dismissOffersFromWeb, takeOfferFromWeb, } from './write.js';
@@ -312,6 +318,9 @@ export function createWebApp(deps) {
312
318
  // Plugin readiness and requirements: serve's, or this server's own.
313
319
  const requirements = deps.requirements ??
314
320
  createRequirements({ registry: deps.registry, ctx: deps.ctx, env: deps.env ?? process.env, pool: deps.pool, now: deps.now, log });
321
+ // Ollama on this computer: the first run's pull of a small model, one at a time.
322
+ const ollamaPulls = deps.ollamaPulls ?? createOllamaPulls({ baseUrl: OLLAMA_BASE_URL });
323
+ const machine = deps.ollamaMachine ?? (() => ollamaMachine());
315
324
  // Home's widgets: one cache per server (web/widgets.ts).
316
325
  const widgets = createWidgets({ pool: deps.pool, registry: deps.registry, ctx: deps.ctx, now: deps.now });
317
326
  /*
@@ -430,7 +439,8 @@ export function createWebApp(deps) {
430
439
  */
431
440
  void chat?.recoverPendingInput().catch((err) => log(`web chat: recovering queued input failed: ${err instanceof Error ? err.message : String(err)}`));
432
441
  const streams = new StreamBudget();
433
- const permissionScopes = (tool) => deps.registry.lookup(tool)?.reusableApproval
442
+ // A bundle script's run asks every time: its card offers no standing permission (`asksEachTime`).
443
+ const permissionScopes = (tool, envelope) => deps.registry.lookup(tool)?.reusableApproval && !asksEachTime(envelope)
434
444
  ? { permissionScopes: ['conversation', 'always'] } : {};
435
445
  writeDeps.resumeInteractive = (action, outcome) => chat?.resumeHost(action, outcome);
436
446
  /*
@@ -1158,6 +1168,20 @@ export function createWebApp(deps) {
1158
1168
  return sendEmpty(res, 204);
1159
1169
  return sendJson(res, answer.status, answer.body);
1160
1170
  }
1171
+ // `/quiet` typed into the composer: the verb Telegram and the terminal answer, in their words (missions/engagement.ts).
1172
+ if (path === '/api/quiet' && method === 'POST') {
1173
+ let body;
1174
+ try {
1175
+ body = await readJsonBody(req);
1176
+ }
1177
+ catch {
1178
+ return sendJson(res, 400, { error: 'request body must be JSON' });
1179
+ }
1180
+ const raw = body?.arg;
1181
+ const arg = typeof raw === 'string' ? raw.trim().slice(0, 40) : '';
1182
+ const text = await createEngagementHooks({ pool: deps.pool, now: deps.now, timezone: deps.timezone, unavailableText: QUIET_UNAVAILABLE_TEXT }).quiet(arg);
1183
+ return sendJson(res, 200, { text });
1184
+ }
1161
1185
  // Home's widgets: the gallery, the owner's layout, each placed one's body (web/widgets.ts).
1162
1186
  if (path === '/api/widgets' || path.startsWith('/api/widgets/')) {
1163
1187
  let body = {};
@@ -1493,8 +1517,8 @@ export function createWebApp(deps) {
1493
1517
  }
1494
1518
  case '/api/approvals': {
1495
1519
  const approvals = await readApprovals(deps.pool, now, boundedLimit(q.get('limit'), 50));
1496
- return sendJson(res, 200, { pending: approvals.pending.map(a => ({ ...a, ...permissionScopes(a.tool) })),
1497
- recent: approvals.recent.map(a => ({ ...a, ...permissionScopes(a.tool) })) });
1520
+ return sendJson(res, 200, { pending: approvals.pending.map(a => ({ ...a, ...permissionScopes(a.tool, a.envelope) })),
1521
+ recent: approvals.recent.map(a => ({ ...a, ...permissionScopes(a.tool, a.envelope) })) });
1498
1522
  }
1499
1523
  case '/api/offers':
1500
1524
  // The roster goes in so the read can lapse an offer whose agent is
@@ -1524,7 +1548,8 @@ export function createWebApp(deps) {
1524
1548
  case '/api/sentinels':
1525
1549
  return sendJson(res, 200, await readSentinels(deps.pool, deps.registry, deps.now()));
1526
1550
  case '/api/chat/agents':
1527
- return sendJson(res, 200, readChatAgents(deps.catalog, await avatarVersions(deps.pool)));
1551
+ // With the commands the plugins add to the composer's `/` menu (web/composer.ts).
1552
+ return sendJson(res, 200, { ...readChatAgents(deps.catalog, await avatarVersions(deps.pool)), commands: pluginCommands(deps.registry) });
1528
1553
  // Which agents are waiting on the owner. One small query, and the only
1529
1554
  // definition of "waiting" in the installation — see attention.ts.
1530
1555
  case '/api/chat/attention':
@@ -1681,8 +1706,12 @@ export function createWebApp(deps) {
1681
1706
  const persona = readFirstAgentPersona(onboardingDeps());
1682
1707
  return persona ? sendJson(res, 200, persona) : sendJson(res, 404, { error: 'There is no assistant of your own yet.' });
1683
1708
  }
1709
+ // With what the machine says: installed or not, how to install it, the
1710
+ // model the first run would fetch here, and a fetch already going.
1684
1711
  case '/api/onboarding/ollama':
1685
- return sendJson(res, 200, await probeOllama());
1712
+ return sendJson(res, 200, { ...(await probeOllama()), machine: machine(), pull: ollamaPulls.read() });
1713
+ case '/api/onboarding/ollama/pull':
1714
+ return sendJson(res, 200, { pull: ollamaPulls.read() });
1686
1715
  // Is mlxh running here? The same question, asked the same way, of port 1060.
1687
1716
  case '/api/onboarding/mlxh':
1688
1717
  return sendJson(res, 200, await probeMlxh({ baseUrl: mlxhBaseUrl(deps.env ?? process.env) }));
@@ -1700,6 +1729,12 @@ export function createWebApp(deps) {
1700
1729
  const profile = await getOwnerProfile(deps.pool);
1701
1730
  return sendJson(res, 200, { ...profile, places: await placesList(deps.pool), detectedTimezone: Intl.DateTimeFormat().resolvedOptions().timeZone, zones: knownTimezones() });
1702
1731
  }
1732
+ // Settings → Memory → People, and Home's birthday card (web/people.ts).
1733
+ case '/api/memory/people':
1734
+ case '/api/owner/birthday': {
1735
+ const answered = await peopleRoute({ pool: deps.pool, catalog: deps.catalog, now: deps.now, log }, 'GET', path, {});
1736
+ return sendJson(res, answered.status, answered.body);
1737
+ }
1703
1738
  case '/api/memory': {
1704
1739
  try {
1705
1740
  // `?agent=` narrows it to what that agent sees: the agent sheet's tab.
@@ -1768,6 +1803,38 @@ export function createWebApp(deps) {
1768
1803
  * skills, its delegates. A read and only ever a read — a change to any of
1769
1804
  * it goes through the maker agent, where it becomes an approval.
1770
1805
  */
1806
+ /*
1807
+ * A plugin's asset (host API 1.27): a PNG core drew itself from what the
1808
+ * plugin fetched, at 64 or 128 px. Only behind a session, like every
1809
+ * other read here; never a file the plugin wrote byte for byte. Kept a
1810
+ * day by the browser — a logo changes once a month — and revalidated
1811
+ * by its bytes.
1812
+ */
1813
+ const asset = /^\/api\/plugin-assets\/([a-z][a-z0-9_-]{0,63})\/([^/]+)$/.exec(path);
1814
+ if (asset) {
1815
+ const key = decodeURIComponent(asset[2]);
1816
+ const size = url.searchParams.get('size') === '64' ? 64 : 128;
1817
+ const png = isAssetKey(key) ? await readPluginAsset(asset[1], key, size, deps.env ?? process.env).catch(() => null) : null;
1818
+ if (!png)
1819
+ return sendEmpty(res, 404);
1820
+ const etag = `"${createHash('sha256').update(png).digest('hex').slice(0, 32)}"`;
1821
+ res.setHeader('Content-Type', 'image/png');
1822
+ res.setHeader('ETag', etag);
1823
+ res.setHeader('Cache-Control', 'private, max-age=86400');
1824
+ res.setHeader('X-Content-Type-Options', 'nosniff');
1825
+ res.setHeader('Cross-Origin-Resource-Policy', 'same-origin');
1826
+ res.setHeader('Content-Security-Policy', "default-src 'none'; sandbox");
1827
+ const presented = first(req.headers['if-none-match']);
1828
+ if (presented !== undefined && presented.split(',').some((tag) => tag.trim() === etag)) {
1829
+ res.statusCode = 304;
1830
+ res.end();
1831
+ return;
1832
+ }
1833
+ res.setHeader('Content-Length', String(png.length));
1834
+ res.statusCode = 200;
1835
+ res.end(method === 'HEAD' ? undefined : png);
1836
+ return;
1837
+ }
1771
1838
  const avatar = /^\/api\/agents\/([^/]+)\/avatar$/.exec(path);
1772
1839
  if (avatar) {
1773
1840
  const agent = deps.catalog.get(decodeURIComponent(avatar[1]));
@@ -1827,6 +1894,30 @@ export function createWebApp(deps) {
1827
1894
  // The Skills page: every skill, grouped, who holds each; one whole; one as its file.
1828
1895
  if (path === '/api/skills')
1829
1896
  return reply(res, listSkillsRoute(skillsDeps()));
1897
+ /*
1898
+ * A bundle's files, for the viewer: one file's text (or its size when
1899
+ * it is not text), and a picture's bytes for an <img>. The same for an
1900
+ * upload still waiting in the preview. A picture is served with a CSP
1901
+ * that runs nothing, so an SVG opened on its own cannot script the page.
1902
+ */
1903
+ const bundleRead = /^\/api\/skills\/(bundles\/)?([^/]+)\/(file|image)$/.exec(path);
1904
+ if (bundleRead) {
1905
+ const id = decodeURIComponent(bundleRead[2]);
1906
+ const rel = url.searchParams.get('path') ?? '';
1907
+ if (bundleRead[3] === 'file') {
1908
+ return reply(res, bundleRead[1] ? stagedFileRoute(skillsDeps(), id, rel) : skillFileRoute(skillsDeps(), id, rel));
1909
+ }
1910
+ const picture = bundleRead[1] ? stagedImage(skillsDeps(), id, rel) : skillImage(skillsDeps(), id, rel);
1911
+ if (!picture)
1912
+ return sendJson(res, 404, { error: `There is no picture "${rel}" in this bundle.` });
1913
+ res.statusCode = 200;
1914
+ res.setHeader('Content-Type', picture.type);
1915
+ res.setHeader('Content-Security-Policy', "default-src 'none'; style-src 'unsafe-inline'; sandbox");
1916
+ res.setHeader('X-Content-Type-Options', 'nosniff');
1917
+ res.setHeader('Cache-Control', 'no-store');
1918
+ res.end(method === 'HEAD' ? undefined : picture.bytes);
1919
+ return;
1920
+ }
1830
1921
  const skillRead = /^\/api\/skills\/([^/]+)(\/download)?$/.exec(path);
1831
1922
  if (skillRead) {
1832
1923
  const id = decodeURIComponent(skillRead[1]);
@@ -1835,6 +1926,14 @@ export function createWebApp(deps) {
1835
1926
  const file = skillDownload(skillsDeps(), id);
1836
1927
  if (!file)
1837
1928
  return sendJson(res, 404, { error: `There is no skill "${id}".` });
1929
+ if ('zip' in file) {
1930
+ res.statusCode = 200;
1931
+ res.setHeader('Content-Type', 'application/zip');
1932
+ res.setHeader('Content-Disposition', `attachment; filename="${file.filename}"`);
1933
+ res.setHeader('Cache-Control', 'no-store');
1934
+ res.end(method === 'HEAD' ? undefined : Buffer.from(file.zip));
1935
+ return;
1936
+ }
1838
1937
  res.statusCode = 200;
1839
1938
  res.setHeader('Content-Type', 'text/markdown; charset=utf-8');
1840
1939
  res.setHeader('Content-Disposition', `attachment; filename="${file.filename}"`);
@@ -1882,7 +1981,7 @@ export function createWebApp(deps) {
1882
1981
  const action = await getAction(deps.pool, decodeURIComponent(approval[1]));
1883
1982
  if (!action)
1884
1983
  return sendJson(res, 404, { error: 'no such action' });
1885
- return sendJson(res, 200, { action: { ...toApprovalView(action), ...permissionScopes(action.tool) } });
1984
+ return sendJson(res, 200, { action: { ...toApprovalView(action), ...permissionScopes(action.tool, action.envelope) } });
1886
1985
  }
1887
1986
  /* ---------------- chat ---------------- */
1888
1987
  const groupConversations = /^\/api\/groups\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/conversations$/i.exec(path);
@@ -2046,6 +2145,9 @@ export function createWebApp(deps) {
2046
2145
  return sendJson(res, forgotten.status, forgotten.body);
2047
2146
  }
2048
2147
  // Delete a skill: the agents that asked for it stop, the file goes to the trash.
2148
+ const stagedGone = /^\/api\/skills\/bundles\/([^/]+)$/.exec(path);
2149
+ if (stagedGone)
2150
+ return reply(res, discardStaged(incomingDirFor(skillsDeps().skillsDir), decodeURIComponent(stagedGone[1])));
2049
2151
  const skillGone = /^\/api\/skills\/([^/]+)$/.exec(path);
2050
2152
  if (skillGone)
2051
2153
  return reply(res, await deleteSkillRoute(skillsDeps(), decodeURIComponent(skillGone[1])));
@@ -2337,6 +2439,20 @@ export function createWebApp(deps) {
2337
2439
  * staged exactly like a `.tgz` path they could have typed, and the upload
2338
2440
  * is deleted once staging has copied it.
2339
2441
  */
2442
+ /*
2443
+ * A skill bundle (.zip), handed over raw like a plugin tarball: streamed
2444
+ * to a temporary file under a cap, checked, unpacked into staging, and
2445
+ * answered with what is inside. Nothing in it runs, and nothing is kept
2446
+ * until the owner accepts it (`POST /api/skills/bundles/:staged`).
2447
+ */
2448
+ if (path === '/api/skills/bundles') {
2449
+ const incoming = incomingDirFor(skillsDeps().skillsDir);
2450
+ const filename = uploadLabel(first(req.headers['x-filename']));
2451
+ const received = await receiveBundleUpload(incoming, req, filename);
2452
+ if ('status' in received)
2453
+ return reply(res, received);
2454
+ return reply(res, stageBundle(incoming, received.path, filename, deps.now()));
2455
+ }
2340
2456
  if (path === '/api/plugins/upload') {
2341
2457
  const received = await receivePluginUpload(pluginDeps(), req, first(req.headers['x-filename']));
2342
2458
  if ('status' in received)
@@ -2982,6 +3098,20 @@ export function createWebApp(deps) {
2982
3098
  * Chapter 3: what buddi takes on. Records the tiles and starts the By-buddi
2983
3099
  * installs in the background; answers at once with a job per plugin.
2984
3100
  */
3101
+ /*
3102
+ * Fetch a model into the local Ollama, for the first run's "on this
3103
+ * computer". Answers at once; GET the same path for the progress.
3104
+ */
3105
+ if (path === '/api/onboarding/ollama/pull') {
3106
+ try {
3107
+ return sendJson(res, 202, { pull: ollamaPulls.start(typeof body.model === 'string' ? body.model : '') });
3108
+ }
3109
+ catch (error) {
3110
+ if (error instanceof PullRefusal)
3111
+ return sendJson(res, error.status, { error: error.message });
3112
+ throw error;
3113
+ }
3114
+ }
2985
3115
  if (path === '/api/onboarding/take-on') {
2986
3116
  try {
2987
3117
  return sendJson(res, 202, await startTakeOn(takeOnDeps(), body.tiles));
@@ -3161,7 +3291,7 @@ export function createWebApp(deps) {
3161
3291
  */
3162
3292
  if (path === '/api/owner') {
3163
3293
  const patch = {};
3164
- for (const key of ['preferredName', 'timezone', 'language', 'about']) {
3294
+ for (const key of ['preferredName', 'timezone', 'language', 'about', 'fullName', 'pronouns']) {
3165
3295
  const given = body[key];
3166
3296
  if (given === undefined)
3167
3297
  continue;
@@ -3186,8 +3316,27 @@ export function createWebApp(deps) {
3186
3316
  return sendJson(res, 400, { error: 'The name is too long (80 characters at most).' });
3187
3317
  if (patch.about && patch.about.length > 1000)
3188
3318
  return sendJson(res, 400, { error: 'Keep the line about you under 1,000 characters.' });
3319
+ if (patch.fullName && patch.fullName.length > 120)
3320
+ return sendJson(res, 400, { error: 'The full name is too long (120 characters at most).' });
3321
+ if (patch.pronouns && patch.pronouns.length > 40)
3322
+ return sendJson(res, 400, { error: 'Keep the pronouns under 40 characters.' });
3323
+ // The birthday: day and month (the year optional), or null to clear it.
3324
+ if (body.birthday !== undefined) {
3325
+ if (body.birthday === null)
3326
+ patch.birthday = null;
3327
+ else {
3328
+ const birthday = validDayMonth(body.birthday);
3329
+ if (!birthday)
3330
+ return sendJson(res, 400, { error: 'The birthday needs a real day and month; the year is optional.' });
3331
+ patch.birthday = birthday;
3332
+ }
3333
+ }
3189
3334
  // The zone applies at once; schedules kept in the old one move with it.
3190
3335
  const { profile, zoneChange } = await saveOwnerProfile(deps.pool, patch, deps.env ?? process.env);
3336
+ // The birthday greeting follows the new day at once (missions/dates.ts).
3337
+ if (patch.birthday !== undefined) {
3338
+ await syncDateMissions({ pool: deps.pool, catalog: deps.catalog, now: deps.now, log }).catch((err) => log(`dates: ${err instanceof Error ? err.message : String(err)}`));
3339
+ }
3191
3340
  if (zoneChange)
3192
3341
  log(`owner: timezone ${zoneChange.from} → ${zoneChange.to}${zoneChange.missions.length > 0 ? `; moved ${zoneChange.missions.join(', ')}` : ''}`);
3193
3342
  return sendJson(res, 200, { ...profile, places: await placesList(deps.pool), detectedTimezone: Intl.DateTimeFormat().resolvedOptions().timeZone, zones: knownTimezones() });
@@ -3201,6 +3350,12 @@ export function createWebApp(deps) {
3201
3350
  return sendJson(res, answered.status, answered.body);
3202
3351
  }
3203
3352
  }
3353
+ /* People, the owner's side: add, change, forget, bring back (web/people.ts). */
3354
+ if (path.startsWith('/api/memory/people')) {
3355
+ const answered = await peopleRoute({ pool: deps.pool, catalog: deps.catalog, now: deps.now, log }, 'POST', path, body);
3356
+ if (answered)
3357
+ return sendJson(res, answered.status, answered.body);
3358
+ }
3204
3359
  /* Memory, the owner's side: correct a preference, retire one, edit or forget a note. */
3205
3360
  if (path === '/api/memory/preferences') {
3206
3361
  const key = typeof body.key === 'string' ? body.key.trim() : '';
@@ -3392,6 +3547,9 @@ export function createWebApp(deps) {
3392
3547
  /* The Skills page's writes (skills.ts): each checked by reloading the catalog. */
3393
3548
  if (path === '/api/skills')
3394
3549
  return reply(res, createSkillRoute(skillsDeps(), body));
3550
+ const bundleAccept = /^\/api\/skills\/bundles\/([^/]+)$/.exec(path);
3551
+ if (bundleAccept)
3552
+ return reply(res, acceptBundleRoute(skillsDeps(), decodeURIComponent(bundleAccept[1]), body));
3395
3553
  const skillWrite = /^\/api\/skills\/([^/]+)\/(text|grants|trust)$/.exec(path);
3396
3554
  if (skillWrite) {
3397
3555
  const id = decodeURIComponent(skillWrite[1]);