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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/extension/manifest.json +2 -2
  2. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  3. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  4. package/node_modules/@buddi/core/dist/tools.d.ts +6 -1
  5. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  6. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  7. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  8. package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts +31 -0
  9. package/node_modules/@buddi/gateway/dist/agents/agent-intro.d.ts.map +1 -0
  10. package/node_modules/@buddi/gateway/dist/agents/agent-intro.js +116 -0
  11. package/node_modules/@buddi/gateway/dist/agents/agent-intro.js.map +1 -0
  12. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts +10 -0
  13. package/node_modules/@buddi/gateway/dist/agents/delegation.d.ts.map +1 -1
  14. package/node_modules/@buddi/gateway/dist/agents/delegation.js +18 -1
  15. package/node_modules/@buddi/gateway/dist/agents/delegation.js.map +1 -1
  16. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +14 -1
  17. package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
  18. package/node_modules/@buddi/gateway/dist/agents/platform.js +44 -11
  19. package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
  20. package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
  21. package/node_modules/@buddi/gateway/dist/bootstrap.js +2 -0
  22. package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
  23. package/node_modules/@buddi/gateway/dist/edition-origin.d.ts +57 -0
  24. package/node_modules/@buddi/gateway/dist/edition-origin.d.ts.map +1 -0
  25. package/node_modules/@buddi/gateway/dist/edition-origin.js +156 -0
  26. package/node_modules/@buddi/gateway/dist/edition-origin.js.map +1 -0
  27. package/node_modules/@buddi/gateway/dist/system-context.d.ts +9 -0
  28. package/node_modules/@buddi/gateway/dist/system-context.d.ts.map +1 -1
  29. package/node_modules/@buddi/gateway/dist/system-context.js +28 -2
  30. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  31. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +6 -0
  32. package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts.map +1 -1
  33. package/node_modules/@buddi/gateway/dist/telegram/approvals.js +10 -2
  34. package/node_modules/@buddi/gateway/dist/telegram/approvals.js.map +1 -1
  35. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  36. package/node_modules/@buddi/gateway/dist/telegram/main.js +10 -3
  37. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  38. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +9 -0
  39. package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
  40. package/node_modules/@buddi/gateway/dist/telegram/outbound.js +43 -0
  41. package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
  42. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +2 -0
  43. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  44. package/node_modules/@buddi/gateway/dist/telegram/surface.js +2 -1
  45. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  46. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts +32 -0
  47. package/node_modules/@buddi/gateway/dist/tips/engine.d.ts.map +1 -1
  48. package/node_modules/@buddi/gateway/dist/tips/engine.js +69 -0
  49. package/node_modules/@buddi/gateway/dist/tips/engine.js.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/tips/route.d.ts +1 -3
  51. package/node_modules/@buddi/gateway/dist/tips/route.d.ts.map +1 -1
  52. package/node_modules/@buddi/gateway/dist/tips/route.js +54 -30
  53. package/node_modules/@buddi/gateway/dist/tips/route.js.map +1 -1
  54. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts +10 -1
  55. package/node_modules/@buddi/gateway/dist/web/agent-offers.d.ts.map +1 -1
  56. package/node_modules/@buddi/gateway/dist/web/agent-offers.js +14 -1
  57. package/node_modules/@buddi/gateway/dist/web/agent-offers.js.map +1 -1
  58. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  59. package/node_modules/@buddi/gateway/dist/web/api-routes.js +19 -6
  60. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  61. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts +16 -0
  62. package/node_modules/@buddi/gateway/dist/web/approval-ask.d.ts.map +1 -0
  63. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +51 -0
  64. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -0
  65. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +6 -0
  66. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  67. package/node_modules/@buddi/gateway/dist/web/chat.js +4 -0
  68. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  69. package/node_modules/@buddi/gateway/dist/web/live.d.ts +7 -0
  70. package/node_modules/@buddi/gateway/dist/web/live.d.ts.map +1 -1
  71. package/node_modules/@buddi/gateway/dist/web/live.js +12 -0
  72. package/node_modules/@buddi/gateway/dist/web/live.js.map +1 -1
  73. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  74. package/node_modules/@buddi/gateway/dist/web/server.js +30 -5
  75. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  76. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  77. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  78. package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
  79. package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
  80. package/node_modules/@buddi/runtime/dist/grounding.d.ts +54 -0
  81. package/node_modules/@buddi/runtime/dist/grounding.d.ts.map +1 -0
  82. package/node_modules/@buddi/runtime/dist/grounding.js +158 -0
  83. package/node_modules/@buddi/runtime/dist/grounding.js.map +1 -0
  84. package/node_modules/@buddi/runtime/dist/index.d.ts +1 -0
  85. package/node_modules/@buddi/runtime/dist/index.d.ts.map +1 -1
  86. package/node_modules/@buddi/runtime/dist/index.js +1 -0
  87. package/node_modules/@buddi/runtime/dist/index.js.map +1 -1
  88. package/node_modules/@buddi/runtime/dist/loop.d.ts +13 -0
  89. package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
  90. package/node_modules/@buddi/runtime/dist/loop.js +98 -3
  91. package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
  92. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  93. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  94. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  95. package/node_modules/@buddi/tool-email/dist/agent.d.ts +6 -1
  96. package/node_modules/@buddi/tool-email/dist/agent.d.ts.map +1 -1
  97. package/node_modules/@buddi/tool-email/dist/agent.js +6 -1
  98. package/node_modules/@buddi/tool-email/dist/agent.js.map +1 -1
  99. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts +8 -0
  100. package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts.map +1 -1
  101. package/node_modules/@buddi/tool-email/dist/imap/fake.js +15 -0
  102. package/node_modules/@buddi/tool-email/dist/imap/fake.js.map +1 -1
  103. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
  104. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +26 -17
  105. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
  106. package/node_modules/@buddi/tool-email/dist/index.d.ts +5 -1
  107. package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
  108. package/node_modules/@buddi/tool-email/dist/index.js +11 -3
  109. package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
  110. package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
  111. package/node_modules/@buddi/tool-email/dist/mail.js +4 -1
  112. package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
  113. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts +2 -1
  114. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
  115. package/node_modules/@buddi/tool-email/dist/pages/index.js +2 -2
  116. package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
  117. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +3 -2
  118. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
  119. package/node_modules/@buddi/tool-email/dist/pages/queries.js +19 -7
  120. package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
  121. package/node_modules/@buddi/tool-email/dist/ports.d.ts +15 -0
  122. package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
  123. package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
  124. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts +9 -1
  125. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
  126. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +1 -0
  127. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
  128. package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts +69 -0
  129. package/node_modules/@buddi/tool-email/dist/text-cleanup.d.ts.map +1 -0
  130. package/node_modules/@buddi/tool-email/dist/text-cleanup.js +96 -0
  131. package/node_modules/@buddi/tool-email/dist/text-cleanup.js.map +1 -0
  132. package/node_modules/@buddi/tool-email/dist/text.d.ts +29 -0
  133. package/node_modules/@buddi/tool-email/dist/text.d.ts.map +1 -0
  134. package/node_modules/@buddi/tool-email/dist/text.js +153 -0
  135. package/node_modules/@buddi/tool-email/dist/text.js.map +1 -0
  136. package/node_modules/@buddi/tool-email/dist/worker.d.ts +64 -0
  137. package/node_modules/@buddi/tool-email/dist/worker.d.ts.map +1 -0
  138. package/node_modules/@buddi/tool-email/dist/worker.js +123 -0
  139. package/node_modules/@buddi/tool-email/dist/worker.js.map +1 -0
  140. package/node_modules/@buddi/tool-email/migrations/028_reading.sql +5 -2
  141. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  142. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  143. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  144. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  145. package/node_modules/marked/bin/main.js +1 -1
  146. package/node_modules/marked/lib/marked.d.ts +7 -0
  147. package/node_modules/marked/lib/marked.esm.js +14 -14
  148. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  149. package/node_modules/marked/lib/marked.umd.js +19 -19
  150. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  151. package/node_modules/marked/man/marked.1 +1 -1
  152. package/node_modules/marked/package.json +1 -1
  153. package/package.json +2 -2
  154. package/packages/cli/dist/.tsbuildinfo +1 -1
  155. package/packages/core/dist/.tsbuildinfo +1 -1
  156. package/packages/core/dist/tools.d.ts +6 -1
  157. package/packages/core/dist/tools.d.ts.map +1 -1
  158. package/packages/core/dist/tools.js.map +1 -1
  159. package/packages/gateway/dist/.tsbuildinfo +1 -1
  160. package/packages/gateway/dist/agents/agent-intro.d.ts +31 -0
  161. package/packages/gateway/dist/agents/agent-intro.d.ts.map +1 -0
  162. package/packages/gateway/dist/agents/agent-intro.js +116 -0
  163. package/packages/gateway/dist/agents/agent-intro.js.map +1 -0
  164. package/packages/gateway/dist/agents/delegation.d.ts +10 -0
  165. package/packages/gateway/dist/agents/delegation.d.ts.map +1 -1
  166. package/packages/gateway/dist/agents/delegation.js +18 -1
  167. package/packages/gateway/dist/agents/delegation.js.map +1 -1
  168. package/packages/gateway/dist/agents/platform.d.ts +14 -1
  169. package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
  170. package/packages/gateway/dist/agents/platform.js +44 -11
  171. package/packages/gateway/dist/agents/platform.js.map +1 -1
  172. package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
  173. package/packages/gateway/dist/bootstrap.js +2 -0
  174. package/packages/gateway/dist/bootstrap.js.map +1 -1
  175. package/packages/gateway/dist/edition-origin.d.ts +57 -0
  176. package/packages/gateway/dist/edition-origin.d.ts.map +1 -0
  177. package/packages/gateway/dist/edition-origin.js +156 -0
  178. package/packages/gateway/dist/edition-origin.js.map +1 -0
  179. package/packages/gateway/dist/system-context.d.ts +9 -0
  180. package/packages/gateway/dist/system-context.d.ts.map +1 -1
  181. package/packages/gateway/dist/system-context.js +28 -2
  182. package/packages/gateway/dist/system-context.js.map +1 -1
  183. package/packages/gateway/dist/telegram/approvals.d.ts +6 -0
  184. package/packages/gateway/dist/telegram/approvals.d.ts.map +1 -1
  185. package/packages/gateway/dist/telegram/approvals.js +10 -2
  186. package/packages/gateway/dist/telegram/approvals.js.map +1 -1
  187. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  188. package/packages/gateway/dist/telegram/main.js +10 -3
  189. package/packages/gateway/dist/telegram/main.js.map +1 -1
  190. package/packages/gateway/dist/telegram/outbound.d.ts +9 -0
  191. package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
  192. package/packages/gateway/dist/telegram/outbound.js +43 -0
  193. package/packages/gateway/dist/telegram/outbound.js.map +1 -1
  194. package/packages/gateway/dist/telegram/surface.d.ts +2 -0
  195. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  196. package/packages/gateway/dist/telegram/surface.js +2 -1
  197. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  198. package/packages/gateway/dist/tips/engine.d.ts +32 -0
  199. package/packages/gateway/dist/tips/engine.d.ts.map +1 -1
  200. package/packages/gateway/dist/tips/engine.js +69 -0
  201. package/packages/gateway/dist/tips/engine.js.map +1 -1
  202. package/packages/gateway/dist/tips/route.d.ts +1 -3
  203. package/packages/gateway/dist/tips/route.d.ts.map +1 -1
  204. package/packages/gateway/dist/tips/route.js +54 -30
  205. package/packages/gateway/dist/tips/route.js.map +1 -1
  206. package/packages/gateway/dist/web/agent-offers.d.ts +10 -1
  207. package/packages/gateway/dist/web/agent-offers.d.ts.map +1 -1
  208. package/packages/gateway/dist/web/agent-offers.js +14 -1
  209. package/packages/gateway/dist/web/agent-offers.js.map +1 -1
  210. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  211. package/packages/gateway/dist/web/api-routes.js +19 -6
  212. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  213. package/packages/gateway/dist/web/approval-ask.d.ts +16 -0
  214. package/packages/gateway/dist/web/approval-ask.d.ts.map +1 -0
  215. package/packages/gateway/dist/web/approval-ask.js +51 -0
  216. package/packages/gateway/dist/web/approval-ask.js.map +1 -0
  217. package/packages/gateway/dist/web/chat.d.ts +6 -0
  218. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  219. package/packages/gateway/dist/web/chat.js +4 -0
  220. package/packages/gateway/dist/web/chat.js.map +1 -1
  221. package/packages/gateway/dist/web/live.d.ts +7 -0
  222. package/packages/gateway/dist/web/live.d.ts.map +1 -1
  223. package/packages/gateway/dist/web/live.js +12 -0
  224. package/packages/gateway/dist/web/live.js.map +1 -1
  225. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  226. package/packages/gateway/dist/web/server.js +30 -5
  227. package/packages/gateway/dist/web/server.js.map +1 -1
  228. package/packages/install/dist/.tsbuildinfo +1 -1
  229. package/packages/runtime/dist/.tsbuildinfo +1 -1
  230. package/packages/runtime/dist/codex-direct.d.ts +1 -1
  231. package/packages/runtime/dist/codex-direct.js +1 -1
  232. package/packages/runtime/dist/grounding.d.ts +54 -0
  233. package/packages/runtime/dist/grounding.d.ts.map +1 -0
  234. package/packages/runtime/dist/grounding.js +158 -0
  235. package/packages/runtime/dist/grounding.js.map +1 -0
  236. package/packages/runtime/dist/index.d.ts +1 -0
  237. package/packages/runtime/dist/index.d.ts.map +1 -1
  238. package/packages/runtime/dist/index.js +1 -0
  239. package/packages/runtime/dist/index.js.map +1 -1
  240. package/packages/runtime/dist/loop.d.ts +13 -0
  241. package/packages/runtime/dist/loop.d.ts.map +1 -1
  242. package/packages/runtime/dist/loop.js +98 -3
  243. package/packages/runtime/dist/loop.js.map +1 -1
  244. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  245. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  246. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  247. package/packages/tools/email/dist/agent.d.ts +6 -1
  248. package/packages/tools/email/dist/agent.d.ts.map +1 -1
  249. package/packages/tools/email/dist/agent.js +6 -1
  250. package/packages/tools/email/dist/agent.js.map +1 -1
  251. package/packages/tools/email/dist/imap/fake.d.ts +8 -0
  252. package/packages/tools/email/dist/imap/fake.d.ts.map +1 -1
  253. package/packages/tools/email/dist/imap/fake.js +15 -0
  254. package/packages/tools/email/dist/imap/fake.js.map +1 -1
  255. package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
  256. package/packages/tools/email/dist/imap/imapflow-client.js +26 -17
  257. package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
  258. package/packages/tools/email/dist/index.d.ts +5 -1
  259. package/packages/tools/email/dist/index.d.ts.map +1 -1
  260. package/packages/tools/email/dist/index.js +11 -3
  261. package/packages/tools/email/dist/index.js.map +1 -1
  262. package/packages/tools/email/dist/mail.d.ts.map +1 -1
  263. package/packages/tools/email/dist/mail.js +4 -1
  264. package/packages/tools/email/dist/mail.js.map +1 -1
  265. package/packages/tools/email/dist/pages/index.d.ts +2 -1
  266. package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
  267. package/packages/tools/email/dist/pages/index.js +2 -2
  268. package/packages/tools/email/dist/pages/index.js.map +1 -1
  269. package/packages/tools/email/dist/pages/queries.d.ts +3 -2
  270. package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
  271. package/packages/tools/email/dist/pages/queries.js +19 -7
  272. package/packages/tools/email/dist/pages/queries.js.map +1 -1
  273. package/packages/tools/email/dist/ports.d.ts +15 -0
  274. package/packages/tools/email/dist/ports.d.ts.map +1 -1
  275. package/packages/tools/email/dist/ports.js.map +1 -1
  276. package/packages/tools/email/dist/sources/inbox-poll.d.ts +9 -1
  277. package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
  278. package/packages/tools/email/dist/sources/inbox-poll.js +1 -0
  279. package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
  280. package/packages/tools/email/dist/text-cleanup.d.ts +69 -0
  281. package/packages/tools/email/dist/text-cleanup.d.ts.map +1 -0
  282. package/packages/tools/email/dist/text-cleanup.js +96 -0
  283. package/packages/tools/email/dist/text-cleanup.js.map +1 -0
  284. package/packages/tools/email/dist/text.d.ts +29 -0
  285. package/packages/tools/email/dist/text.d.ts.map +1 -0
  286. package/packages/tools/email/dist/text.js +153 -0
  287. package/packages/tools/email/dist/text.js.map +1 -0
  288. package/packages/tools/email/dist/worker.d.ts +64 -0
  289. package/packages/tools/email/dist/worker.d.ts.map +1 -0
  290. package/packages/tools/email/dist/worker.js +123 -0
  291. package/packages/tools/email/dist/worker.js.map +1 -0
  292. package/packages/tools/email/migrations/028_reading.sql +5 -2
  293. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  294. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  295. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  296. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  297. package/packages/web/dist/assets/index-CPFSREcP.css +1 -0
  298. package/packages/web/dist/assets/index-DYUn1V0x.js +150 -0
  299. package/packages/web/dist/assets/{lottie_light-DnYl9yaP.js → lottie_light-DxWeiVDC.js} +1 -1
  300. package/packages/web/dist/build.json +1 -1
  301. package/packages/web/dist/index.html +2 -2
  302. package/packages/web/dist/precache.json +4 -4
  303. package/packages/web/dist/assets/index-C1sRt7zd.js +0 -149
  304. package/packages/web/dist/assets/index-CdZpSJ4_.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA6B,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,cAAc,eAAe,CAAC;AAC3C,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAOD,mEAAmE;AACnE,wBAAsB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjG,OAAO,CAAC,SAAS,CAAC,CA6DpB"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"AAoBA,OAAO,EAA6B,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAOD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACjH,OAAO,CAAC,SAAS,CAAC,CAuFpB"}
@@ -1,54 +1,41 @@
1
1
  /**
2
2
  * The tips' routes (docs/dashboard.md, Home):
3
3
  *
4
- * GET /api/tips { tips: [...rows], enabled } every rule and where it stands (the Tips list)
5
- * GET /api/tips/current { tip | null, enabled } today's tip, if any
4
+ * GET /api/tips { tips: [...rows] } every rule and where it stands
5
+ * GET /api/tips/current { tip | null } today's tip, if any
6
+ * GET /api/tips/queue { tips: [...], dismissed } the bulb's stack: today's tip first, then every other
7
+ * one that holds and is not dismissed, ready ones before those in their cooldown;
8
+ * `dismissed` counts the dismissed ones that hold
9
+ * (`?peek=1`: today's and the ready ones only, nothing marked shown: for the bulb's dot)
10
+ * GET /api/tips/dismissed { tips: [...] } the dismissed ones the queue counts, for "Bring back"
6
11
  * POST /api/tips/:id/dismiss "Not this again": never again
7
12
  * POST /api/tips/:id/later ×: not before its cooldown has passed
8
13
  * POST /api/tips/:id/restore "Bring back": forget a dismissal
9
14
  * POST /api/tips/seen-page { page } the dashboard opened a page (once a day each)
10
- * GET /api/tips/settings { enabled }
11
- * PUT /api/tips/settings { enabled } Settings → Notifications → Tips on Home
12
15
  *
13
- * State lives in `core.web_settings`: `tips.state` (the engine's), `tips.enabled`
14
- * (absent is on) and `tips.pages`.
16
+ * State lives in `core.web_settings`: `tips.state` (the engine's) and
17
+ * `tips.pages`. A `tips.enabled` left from the old "Tips on Home" switch is
18
+ * ignored: tips sit behind the bulb, which is the owner's choice to look.
15
19
  */
16
- import { dayIn, dismissTip, laterTip, listTips, pickTip, restoreTip, viewOf } from './engine.js';
20
+ import { dayIn, dismissTip, laterTip, listDismissed, listTips, pickQueue, pickTip, restoreTip, viewOf } from './engine.js';
17
21
  import { PAGE_NAME, recordPageSeen } from './facts.js';
18
22
  import { TIPS } from './rules.js';
19
23
  export const TIPS_STATE_KEY = 'tips.state';
20
- export const TIPS_ENABLED_KEY = 'tips.enabled';
21
24
  async function readState(store) {
22
25
  const value = await store.read(TIPS_STATE_KEY).catch(() => null);
23
26
  return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
24
27
  }
25
- /** Whether tips are on. Anything but an explicit `false` is on. */
26
- export async function tipsEnabled(store) {
27
- const value = await store.read(TIPS_ENABLED_KEY).catch(() => null);
28
- return value !== false;
29
- }
30
28
  export async function tipsRoute(deps, request) {
31
29
  const { method, path } = request;
32
30
  const body = request.body ?? {};
33
31
  const rules = deps.rules ?? TIPS;
34
32
  const today = dayIn(deps.now(), deps.timezone);
35
- if (path === '/api/tips/settings') {
36
- if (method === 'PUT') {
37
- if (typeof body.enabled !== 'boolean')
38
- return { status: 400, body: { error: '`enabled` must be true or false.' } };
39
- await deps.store.write(TIPS_ENABLED_KEY, body.enabled);
40
- }
41
- else if (method !== 'GET') {
42
- return { status: 405, body: { error: 'GET or PUT.' } };
43
- }
44
- return { status: 200, body: { enabled: await tipsEnabled(deps.store) } };
45
- }
46
33
  if (path === '/api/tips') {
47
34
  if (method !== 'GET')
48
35
  return { status: 405, body: { error: 'GET only.' } };
49
- // Reads only: listing never marks a tip shown. It reads while tips are off too.
36
+ // Reads only: listing never marks a tip shown.
50
37
  const tips = listTips(rules, await deps.facts(), await readState(deps.store), today);
51
- return { status: 200, body: { tips, enabled: await tipsEnabled(deps.store) } };
38
+ return { status: 200, body: { tips } };
52
39
  }
53
40
  if (path === '/api/tips/current') {
54
41
  if (method !== 'GET')
@@ -59,16 +46,53 @@ export async function tipsRoute(deps, request) {
59
46
  if (preview !== null) {
60
47
  const rule = rules.find((r) => r.id === preview);
61
48
  return rule
62
- ? { status: 200, body: { tip: viewOf(rule, await deps.facts()), enabled: true, preview: true } }
49
+ ? { status: 200, body: { tip: viewOf(rule, await deps.facts()), preview: true } }
63
50
  : { status: 404, body: { error: `No tip called "${preview}". Known: ${rules.map((r) => r.id).join(', ')}.` } };
64
51
  }
65
- if (!(await tipsEnabled(deps.store)))
66
- return { status: 200, body: { tip: null, enabled: false } };
67
52
  const previous = await readState(deps.store);
68
53
  const { tip, state } = pickTip(rules, await deps.facts(), previous, today);
69
54
  if (JSON.stringify(state) !== JSON.stringify(previous))
70
55
  await deps.store.write(TIPS_STATE_KEY, state);
71
- return { status: 200, body: { tip, enabled: true } };
56
+ return { status: 200, body: { tip } };
57
+ }
58
+ if (path === '/api/tips/queue') {
59
+ if (method !== 'GET')
60
+ return { status: 405, body: { error: 'GET only.' } };
61
+ // `?preview=a,b,c` stacks those rules' cards as they would look, touching no state.
62
+ const preview = request.preview ?? null;
63
+ if (preview !== null) {
64
+ const ids = preview.split(',').map((id) => id.trim()).filter(Boolean);
65
+ const unknown = ids.filter((id) => !rules.some((r) => r.id === id));
66
+ if (ids.length === 0 || unknown.length) {
67
+ return { status: 404, body: { error: `No tip called "${unknown[0] ?? preview}". Known: ${rules.map((r) => r.id).join(', ')}.` } };
68
+ }
69
+ const f = await deps.facts();
70
+ return { status: 200, body: { tips: ids.map((id) => viewOf(rules.find((r) => r.id === id), f)), preview: true } };
71
+ }
72
+ const previous = await readState(deps.store);
73
+ const { tips, state, dismissed } = pickQueue(rules, await deps.facts(), previous, today, { open: !request.peek });
74
+ // A peek keeps the holds counting but marks nothing shown: the owner has
75
+ // not opened the stack, so no tip's cooldown starts.
76
+ const front = tips[0]?.id;
77
+ if (request.peek && front && state[front]?.shownAt !== previous[front]?.shownAt) {
78
+ const before = previous[front]?.shownAt;
79
+ if (before)
80
+ state[front] = { ...state[front], shownAt: before };
81
+ else {
82
+ const { shownAt: _s, ...rest } = state[front];
83
+ state[front] = rest;
84
+ }
85
+ }
86
+ if (JSON.stringify(state) !== JSON.stringify(previous))
87
+ await deps.store.write(TIPS_STATE_KEY, state);
88
+ return { status: 200, body: { tips, dismissed } };
89
+ }
90
+ if (path === '/api/tips/dismissed') {
91
+ if (method !== 'GET')
92
+ return { status: 405, body: { error: 'GET only.' } };
93
+ // Reads only: the state is what the queue left it as.
94
+ const tips = listDismissed(rules, await deps.facts(), await readState(deps.store), today);
95
+ return { status: 200, body: { tips } };
72
96
  }
73
97
  if (path === '/api/tips/seen-page') {
74
98
  if (method !== 'POST')
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/tips/route.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,8 @@
6
6
  * something the owner already set up — the mail plugin polls every mailbox and
7
7
  * hands each new message to `mail-triage`, which nothing creates. Those carry
8
8
  * an `offer`, and Home shows it while nobody has that id, the plugin says it is
9
- * wanted, and the owner has not dismissed it.
9
+ * wanted, and the owner has not dismissed it. A mail agent is not offered
10
+ * while any agent on the team carries the `mail` role.
10
11
  *
11
12
  * Accepting is not here. It is `POST /api/plugins/<plugin>/agents/<id>/accept`
12
13
  * (`acceptAgentRoute`), the gated `platform.accept_plugin_agent` the Plugins
@@ -35,6 +36,12 @@ export interface AgentOffersDeps extends PagesDeps {
35
36
  };
36
37
  /** The ids the roster holds right now. */
37
38
  agentIds: () => readonly string[];
39
+ /**
40
+ * The roles the roster's agents carry right now. An offer is not made when
41
+ * somebody on the team already carries the `mail` role it would fill: mail
42
+ * is read, and the owner would read the card as a bug. Absent counts as none.
43
+ */
44
+ agentRoles?: () => readonly string[];
38
45
  /**
39
46
  * Is first run not under way? While it runs, Home’s offers stay
40
47
  * quiet: chapter 4's mailbox sheet brings Mail Triage in itself. Absent
@@ -42,6 +49,8 @@ export interface AgentOffersDeps extends PagesDeps {
42
49
  */
43
50
  firstRunDone?: () => Promise<boolean>;
44
51
  }
52
+ /** The role whose offer is not made while an agent already carries it. */
53
+ export declare const MAIL_ROLE = "mail";
45
54
  /**
46
55
  * The offers to draw: proposed with an `offer`, nobody has that id, not
47
56
  * dismissed, and — when the plugin names a query — wanted now.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-offers.d.ts","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1D,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAa/C,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAAE,IAAI,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC3E,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAsCD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAoBlG;AAED,uFAAuF;AACvF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAO5C;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ5F;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgCpG"}
1
+ {"version":3,"file":"agent-offers.d.ts","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1D,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAa/C,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAAE,IAAI,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC3E,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,0EAA0E;AAC1E,eAAO,MAAM,SAAS,SAAS,CAAC;AA4ChC;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAqBlG;AAED,uFAAuF;AACvF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAO5C;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ5F;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCpG"}
@@ -6,7 +6,8 @@
6
6
  * something the owner already set up — the mail plugin polls every mailbox and
7
7
  * hands each new message to `mail-triage`, which nothing creates. Those carry
8
8
  * an `offer`, and Home shows it while nobody has that id, the plugin says it is
9
- * wanted, and the owner has not dismissed it.
9
+ * wanted, and the owner has not dismissed it. A mail agent is not offered
10
+ * while any agent on the team carries the `mail` role.
10
11
  *
11
12
  * Accepting is not here. It is `POST /api/plugins/<plugin>/agents/<id>/accept`
12
13
  * (`acceptAgentRoute`), the gated `platform.accept_plugin_agent` the Plugins
@@ -18,6 +19,14 @@ import { pluginAgentProposals } from '../agents/platform.js';
18
19
  import { runPageQuery } from './pages.js';
19
20
  /** The `core.web_settings` key the owner's dismissals are kept under. */
20
21
  export const AGENT_OFFERS_KEY = 'agent-offers';
22
+ /** The role whose offer is not made while an agent already carries it. */
23
+ export const MAIL_ROLE = 'mail';
24
+ /** Whether the team already has an agent in the `mail` role this offered agent would fill. */
25
+ function roleTaken(deps, roles) {
26
+ if (!roles?.includes(MAIL_ROLE) || !deps.agentRoles)
27
+ return false;
28
+ return deps.agentRoles().includes(MAIL_ROLE);
29
+ }
21
30
  function keyOf(plugin, agent) {
22
31
  return `${plugin}/${agent}`;
23
32
  }
@@ -69,6 +78,8 @@ export async function readAgentOffers(deps) {
69
78
  continue;
70
79
  if (present.has(agent.id) || dismissed.has(keyOf(plugin, agent.id)))
71
80
  continue;
81
+ if (roleTaken(deps, agent.roles))
82
+ continue;
72
83
  if (!(await wanted(deps, plugin, offer.query)))
73
84
  continue;
74
85
  offers.push({
@@ -130,6 +141,8 @@ export async function raiseAgentOffers(deps, plugin) {
130
141
  continue;
131
142
  if (deps.agentIds().includes(agent.id))
132
143
  continue;
144
+ if (roleTaken(deps, agent.roles))
145
+ continue;
133
146
  const pending = await listPendingActions(deps.pool, { now: deps.now() }).catch(() => []);
134
147
  if (pending.some((action) => isPendingAccept(action, plugin, agent.id)))
135
148
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-offers.js","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-offers.js","sourceRoot":"","sources":["../../src/web/agent-offers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/web/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,gDAAgD;AAChD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qGAAqG;AACrG,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvD,6CAA6C;AAC7C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAC;AAK7C,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EA84BzC,CAAC;AAYF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CASpF;AAMD,wBAAgB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAI9C;AAkDD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,SAAS,QAAQ,EAAe,EAAE,KAAK,GAAE,MAAkB,GAAG,MAAM,CAuC9G;AAED,oFAAoF;AACpF,eAAO,MAAM,SAAS,q/NAoJrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsUtD,CAAC"}
1
+ {"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/web/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,gDAAgD;AAChD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,qGAAqG;AACrG,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,cAAc,CAAC;AAEvD,6CAA6C;AAC7C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAC;AAK7C,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAy5BzC,CAAC;AAYF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CASpF;AAMD,wBAAgB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAI9C;AAkDD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,SAAS,QAAQ,EAAe,EAAE,KAAK,GAAE,MAAkB,GAAG,MAAM,CAuC9G;AAED,oFAAoF;AACpF,eAAO,MAAM,SAAS,q/NAoJrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwUtD,CAAC"}
@@ -229,14 +229,18 @@ export const API_ROUTES = [
229
229
  summary: "Home's whole first read: plugin blocks and glances, and counts of approvals, jobs, missions, reminders, watchers.",
230
230
  answer: '{ now, timezone, paused, home: HomeBlock[], glances, approvals: { pending, oldestPendingAt }, jobs: Record<state, number>, missions, reminders, sentinels, mail, running, needsYou: { approvals, questions, urgent, failed, proposals, asks, agentsToSetUp, signIns, recovery, total } }',
231
231
  },
232
- { method: 'GET', path: '/api/tips', area: 'home', summary: 'Every tip and its state.', answer: '{ tips: Tip[], enabled: boolean }' },
232
+ { method: 'GET', path: '/api/tips', area: 'home', summary: 'Every tip and its state.', answer: '{ tips: Tip[] }' },
233
233
  {
234
234
  method: 'GET', path: '/api/tips/current', area: 'home', summary: "Today's tip on Home, if any (picking one is remembered).",
235
- query: 'preview?: tip id // show one as it would look, touching nothing', answer: '{ tip: Tip|null, enabled: boolean }',
235
+ query: 'preview?: tip id // show one as it would look, touching nothing', answer: '{ tip: Tip|null }',
236
236
  errors: '404 no tip by the preview id',
237
237
  },
238
- { method: 'GET', path: '/api/tips/settings', area: 'home', summary: 'Whether tips are on.', answer: '{ enabled: boolean }' },
239
- { method: 'PUT', path: '/api/tips/settings', area: 'home', summary: 'Turn tips on or off.', body: '{ enabled: boolean }', answer: '{ enabled: boolean }' },
238
+ {
239
+ method: 'GET', path: '/api/tips/queue', area: 'home', summary: "The stack the lightbulb on Home opens: today's tip first, then every other one that holds and is not dismissed, ready ones before those in their cooldown (picking the first is remembered).",
240
+ query: "preview?: tip ids, comma-separated // stack those as they would look, touching nothing; peek?: '1' // today's and the ready ones only, marking nothing shown", answer: '{ tips: Tip[], dismissed: number }',
241
+ errors: '404 no tip by a preview id',
242
+ },
243
+ { method: 'GET', path: '/api/tips/dismissed', area: 'home', summary: 'The dismissed tips the queue counts, for the empty stack\'s "Bring back" list.', answer: '{ tips: Tip[] }' },
240
244
  { method: 'POST', path: '/api/tips/seen-page', area: 'home', summary: 'Record that a page was opened (tips about it stop).', body: '{ page: string }', answer: '{ ok: true }' },
241
245
  { method: 'POST', path: '/api/tips/:id/dismiss', area: 'home', summary: 'Never show this tip again.', answer: '{ ok: true }', errors: '404 no such tip' },
242
246
  { method: 'POST', path: '/api/tips/:id/later', area: 'home', summary: 'Show this tip another day.', answer: '{ ok: true }', errors: '404 no such tip' },
@@ -383,6 +387,13 @@ export const API_ROUTES = [
383
387
  },
384
388
  { method: 'POST', path: '/api/agents/default', area: 'agents', summary: 'Make an agent the default (where a chat that names nobody lands).', body: '{ agentId: string }', errors: '400; 404' },
385
389
  { method: 'GET', path: '/api/agents/:id/profile', area: 'agents', summary: "One agent whole: its grant with every tool's tier, engine, skills, delegates.", errors: '404 no such agent' },
390
+ {
391
+ method: 'GET', path: '/api/agents/:id/intro', area: 'agents',
392
+ summary: "A new agent's first-open strip in its chat: whether it is still due, whom the agent may ask and who may ask it.",
393
+ answer: "{ show: false } | { show: true, id, handle, asks: 'everyone' | IntroAgent[], askedBy: IntroAgent[] } // IntroAgent: { id, handle, name, frontDesk? }",
394
+ errors: '404',
395
+ },
396
+ { method: 'POST', path: '/api/agents/:id/intro/dismiss', area: 'agents', summary: "Close a new agent's first-open strip for good.", answer: '{ ok: true }', errors: '404' },
386
397
  { method: 'GET', path: '/api/agents/:id/skills', area: 'agents', summary: 'Every skill the agent loads; learned ones with their versions.', errors: '404' },
387
398
  {
388
399
  method: 'POST', path: '/api/agents/:id/skills/:skill/remove', area: 'agents', summary: 'Remove a learned skill (its versions are kept).',
@@ -1339,8 +1350,8 @@ export const API_SINCE = {
1339
1350
  'GET /api/overview': '0.1.0-pre.15',
1340
1351
  'GET /api/tips': '0.1.0-pre.22',
1341
1352
  'GET /api/tips/current': '0.1.0-pre.22',
1342
- 'GET /api/tips/settings': '0.1.0-pre.22',
1343
- 'PUT /api/tips/settings': '0.1.0-pre.22',
1353
+ 'GET /api/tips/queue': '0.1.0-pre.45',
1354
+ 'GET /api/tips/dismissed': '0.1.0-pre.45',
1344
1355
  'POST /api/tips/seen-page': '0.1.0-pre.22',
1345
1356
  'POST /api/tips/:id/dismiss': '0.1.0-pre.22',
1346
1357
  'POST /api/tips/:id/later': '0.1.0-pre.22',
@@ -1378,6 +1389,8 @@ export const API_SINCE = {
1378
1389
  'GET /api/agents': '0.1.0-pre.15',
1379
1390
  'POST /api/agents/default': '0.1.0-pre.15',
1380
1391
  'GET /api/agents/:id/profile': '0.1.0-pre.15',
1392
+ 'GET /api/agents/:id/intro': '0.1.0-pre.45',
1393
+ 'POST /api/agents/:id/intro/dismiss': '0.1.0-pre.45',
1381
1394
  'GET /api/agents/:id/skills': '0.1.0-pre.15',
1382
1395
  'POST /api/agents/:id/skills/:skill/remove': '0.1.0-pre.15',
1383
1396
  'GET /api/agents/:id/tools': '0.1.0-pre.15',