@withbuddi/buddi 0.1.0-pre.51 → 0.1.0-pre.53

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 (503) hide show
  1. package/extension/background.js +1604 -847
  2. package/extension/manifest.json +3 -3
  3. package/extension/popup.css +91 -3
  4. package/extension/popup.html +49 -32
  5. package/extension/popup.js +215 -123
  6. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  7. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  8. package/node_modules/@buddi/core/dist/plugin/index.d.ts +1 -1
  9. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  10. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  11. package/node_modules/@buddi/core/dist/questions/store.d.ts +3 -1
  12. package/node_modules/@buddi/core/dist/questions/store.d.ts.map +1 -1
  13. package/node_modules/@buddi/core/dist/questions/store.js +3 -3
  14. package/node_modules/@buddi/core/dist/questions/store.js.map +1 -1
  15. package/node_modules/@buddi/core/dist/questions/types.d.ts +46 -1
  16. package/node_modules/@buddi/core/dist/questions/types.d.ts.map +1 -1
  17. package/node_modules/@buddi/core/dist/questions/types.js +2 -1
  18. package/node_modules/@buddi/core/dist/questions/types.js.map +1 -1
  19. package/node_modules/@buddi/core/dist/secrets/approval.d.ts +54 -0
  20. package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
  21. package/node_modules/@buddi/core/dist/secrets/approval.js +58 -1
  22. package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
  23. package/node_modules/@buddi/core/dist/secrets/settings.d.ts +178 -0
  24. package/node_modules/@buddi/core/dist/secrets/settings.d.ts.map +1 -1
  25. package/node_modules/@buddi/core/dist/secrets/settings.js +63 -6
  26. package/node_modules/@buddi/core/dist/secrets/settings.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/secrets/store.d.ts +31 -0
  28. package/node_modules/@buddi/core/dist/secrets/store.d.ts.map +1 -1
  29. package/node_modules/@buddi/core/dist/secrets/store.js +75 -0
  30. package/node_modules/@buddi/core/dist/secrets/store.js.map +1 -1
  31. package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
  32. package/node_modules/@buddi/core/dist/secrets/use.js +68 -3
  33. package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
  34. package/node_modules/@buddi/core/dist/tools.d.ts +22 -0
  35. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  36. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  37. package/node_modules/@buddi/core/migrations/080_secret_requests.sql +14 -0
  38. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  39. package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
  40. package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
  41. package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
  42. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
  43. package/node_modules/@buddi/gateway/dist/missions/execute.js +3 -1
  44. package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
  45. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +15 -3
  46. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
  47. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +34 -7
  48. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js.map +1 -1
  49. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js +8 -2
  51. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js.map +1 -1
  52. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts +3 -1
  53. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  54. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js.map +1 -1
  55. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts +173 -0
  56. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
  57. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js +332 -0
  58. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js.map +1 -0
  59. package/node_modules/@buddi/gateway/dist/system-context.js +1 -1
  60. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  61. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/telegram/main.js +14 -3
  63. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  65. package/node_modules/@buddi/gateway/dist/telegram/surface.js +4 -1
  66. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  67. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  68. package/node_modules/@buddi/gateway/dist/web/api-routes.js +9 -1
  69. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  70. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +2 -2
  71. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
  72. package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts +13 -0
  73. package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts.map +1 -0
  74. package/node_modules/@buddi/gateway/dist/web/browser-capture.js +24 -0
  75. package/node_modules/@buddi/gateway/dist/web/browser-capture.js.map +1 -0
  76. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +26 -0
  77. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  78. package/node_modules/@buddi/gateway/dist/web/chat.js +87 -2
  79. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  80. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +30 -0
  81. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  82. package/node_modules/@buddi/gateway/dist/web/extension.js +86 -6
  83. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  84. package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
  85. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  86. package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts +26 -2
  87. package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts.map +1 -1
  88. package/node_modules/@buddi/gateway/dist/web/remote-hand.js +89 -28
  89. package/node_modules/@buddi/gateway/dist/web/remote-hand.js.map +1 -1
  90. package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts +54 -0
  91. package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts.map +1 -0
  92. package/node_modules/@buddi/gateway/dist/web/secret-request.js +264 -0
  93. package/node_modules/@buddi/gateway/dist/web/secret-request.js.map +1 -0
  94. package/node_modules/@buddi/gateway/dist/web/secrets.d.ts +1 -0
  95. package/node_modules/@buddi/gateway/dist/web/secrets.d.ts.map +1 -1
  96. package/node_modules/@buddi/gateway/dist/web/secrets.js +1 -1
  97. package/node_modules/@buddi/gateway/dist/web/secrets.js.map +1 -1
  98. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  99. package/node_modules/@buddi/gateway/dist/web/server.js +72 -3
  100. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  101. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  102. package/node_modules/@buddi/install/dist/app-layout.d.ts +24 -0
  103. package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
  104. package/node_modules/@buddi/install/dist/app-layout.js +64 -2
  105. package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
  106. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  107. package/node_modules/@buddi/install/dist/launcher.js +89 -10
  108. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  109. package/node_modules/@buddi/install/dist/linux-install.d.ts +41 -0
  110. package/node_modules/@buddi/install/dist/linux-install.d.ts.map +1 -0
  111. package/node_modules/@buddi/install/dist/linux-install.js +86 -0
  112. package/node_modules/@buddi/install/dist/linux-install.js.map +1 -0
  113. package/node_modules/@buddi/install/dist/runtime-info.d.ts +23 -0
  114. package/node_modules/@buddi/install/dist/runtime-info.d.ts.map +1 -0
  115. package/node_modules/@buddi/install/dist/runtime-info.js +69 -0
  116. package/node_modules/@buddi/install/dist/runtime-info.js.map +1 -0
  117. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  118. package/node_modules/@buddi/install/dist/supervisor.js +8 -6
  119. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  120. package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -0
  121. package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
  122. package/node_modules/@buddi/install/dist/uninstall.js +50 -1
  123. package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
  124. package/node_modules/@buddi/install/dist/upgrade.d.ts +4 -1
  125. package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
  126. package/node_modules/@buddi/install/dist/upgrade.js +77 -51
  127. package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
  128. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  129. package/node_modules/@buddi/runtime/dist/anthropic.d.ts +7 -0
  130. package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
  131. package/node_modules/@buddi/runtime/dist/anthropic.js +19 -1
  132. package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
  133. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  134. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  135. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +16 -1
  136. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  137. package/node_modules/@buddi/tool-browser/dist/controller.js +59 -5
  138. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  139. package/node_modules/@buddi/tool-browser/dist/driver.d.ts +12 -0
  140. package/node_modules/@buddi/tool-browser/dist/driver.d.ts.map +1 -1
  141. package/node_modules/@buddi/tool-browser/dist/driver.js +41 -2
  142. package/node_modules/@buddi/tool-browser/dist/driver.js.map +1 -1
  143. package/node_modules/@buddi/tool-browser/dist/extension.d.ts +49 -9
  144. package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
  145. package/node_modules/@buddi/tool-browser/dist/extension.js +145 -21
  146. package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
  147. package/node_modules/@buddi/tool-browser/dist/index.d.ts +10 -6
  148. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  149. package/node_modules/@buddi/tool-browser/dist/index.js +22 -8
  150. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  151. package/node_modules/@buddi/tool-browser/dist/routes.d.ts +10 -1
  152. package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
  153. package/node_modules/@buddi/tool-browser/dist/routes.js +24 -0
  154. package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
  155. package/node_modules/@buddi/tool-browser/dist/service.d.ts +48 -1
  156. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  157. package/node_modules/@buddi/tool-browser/dist/service.js +114 -11
  158. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  159. package/node_modules/@buddi/tool-browser/dist/types.d.ts +54 -3
  160. package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
  161. package/node_modules/@buddi/tool-browser/dist/types.js +17 -1
  162. package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
  163. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  164. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  165. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  166. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  167. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  168. package/node_modules/@hono/node-server/package.json +2 -2
  169. package/node_modules/@types/node/README.md +1 -1
  170. package/node_modules/@types/node/package.json +2 -2
  171. package/node_modules/@types/node/util.d.ts +6 -3
  172. package/node_modules/content-disposition/README.md +105 -35
  173. package/node_modules/content-disposition/dist/index.d.ts +72 -0
  174. package/node_modules/content-disposition/dist/index.js +388 -0
  175. package/node_modules/content-disposition/dist/index.js.map +1 -0
  176. package/node_modules/content-disposition/package.json +31 -19
  177. package/node_modules/docx/dist/index.cjs +182 -80
  178. package/node_modules/docx/dist/index.d.cts +63 -6
  179. package/node_modules/docx/dist/index.d.ts +63 -6
  180. package/node_modules/docx/dist/index.iife.js +182 -80
  181. package/node_modules/docx/dist/index.mjs +182 -80
  182. package/node_modules/docx/dist/index.umd.cjs +182 -80
  183. package/node_modules/docx/dist/layout.cjs +1 -6
  184. package/node_modules/docx/dist/layout.iife.js +1 -6
  185. package/node_modules/docx/dist/layout.mjs +1 -6
  186. package/node_modules/docx/dist/layout.umd.cjs +1 -6
  187. package/node_modules/docx/package.json +4 -3
  188. package/node_modules/express/Readme.md +15 -9
  189. package/node_modules/express/lib/application.js +2 -2
  190. package/node_modules/express/lib/request.js +32 -19
  191. package/node_modules/express/lib/response.js +27 -30
  192. package/node_modules/express/node_modules/content-type/LICENSE +22 -0
  193. package/node_modules/express/node_modules/content-type/README.md +71 -0
  194. package/node_modules/express/node_modules/content-type/dist/index.d.ts +46 -0
  195. package/node_modules/express/node_modules/content-type/dist/index.js +176 -0
  196. package/node_modules/express/node_modules/content-type/dist/index.js.map +1 -0
  197. package/node_modules/express/node_modules/content-type/package.json +52 -0
  198. package/node_modules/express/package.json +10 -10
  199. package/node_modules/imapflow/CHANGELOG.md +48 -0
  200. package/node_modules/imapflow/dist/cjs/commands/append.d.ts +1 -1
  201. package/node_modules/imapflow/dist/cjs/commands/append.js +15 -4
  202. package/node_modules/imapflow/dist/cjs/commands/compress.js +2 -2
  203. package/node_modules/imapflow/dist/cjs/commands/id.js +5 -3
  204. package/node_modules/imapflow/dist/cjs/commands/idle.js +9 -9
  205. package/node_modules/imapflow/dist/cjs/commands/list.js +2 -2
  206. package/node_modules/imapflow/dist/cjs/commands/namespace.js +18 -14
  207. package/node_modules/imapflow/dist/cjs/commands/quota.js +2 -3
  208. package/node_modules/imapflow/dist/cjs/commands/select.d.ts +3 -14
  209. package/node_modules/imapflow/dist/cjs/commands/select.js +1 -4
  210. package/node_modules/imapflow/dist/cjs/commands/status.js +2 -4
  211. package/node_modules/imapflow/dist/cjs/connection-deadline.d.ts +1 -1
  212. package/node_modules/imapflow/dist/cjs/connection-deadline.js +2 -4
  213. package/node_modules/imapflow/dist/cjs/download.js +66 -35
  214. package/node_modules/imapflow/dist/cjs/errors.d.ts +15 -0
  215. package/node_modules/imapflow/dist/cjs/errors.js +22 -0
  216. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.d.ts +4 -4
  217. package/node_modules/imapflow/dist/cjs/handler/imap-compiler.js +18 -18
  218. package/node_modules/imapflow/dist/cjs/handler/imap-parser.js +28 -3
  219. package/node_modules/imapflow/dist/cjs/handler/imap-stream.js +9 -8
  220. package/node_modules/imapflow/dist/cjs/handler/limits.d.ts +1 -1
  221. package/node_modules/imapflow/dist/cjs/handler/limits.js +5 -7
  222. package/node_modules/imapflow/dist/cjs/handler/parser-instance.js +23 -38
  223. package/node_modules/imapflow/dist/cjs/handler/token-parser.d.ts +12 -0
  224. package/node_modules/imapflow/dist/cjs/handler/token-parser.js +44 -104
  225. package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +4 -3
  226. package/node_modules/imapflow/dist/cjs/imap-flow.js +128 -78
  227. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  228. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  229. package/node_modules/imapflow/dist/cjs/proxy-connection.js +2 -5
  230. package/node_modules/imapflow/dist/cjs/search-compiler.js +2 -3
  231. package/node_modules/imapflow/dist/cjs/tools.d.ts +24 -3
  232. package/node_modules/imapflow/dist/cjs/tools.js +59 -18
  233. package/node_modules/imapflow/dist/cjs/types.d.ts +20 -1
  234. package/node_modules/imapflow/dist/esm/commands/append.d.ts +1 -1
  235. package/node_modules/imapflow/dist/esm/commands/append.js +15 -4
  236. package/node_modules/imapflow/dist/esm/commands/compress.js +2 -2
  237. package/node_modules/imapflow/dist/esm/commands/id.js +6 -4
  238. package/node_modules/imapflow/dist/esm/commands/idle.js +9 -9
  239. package/node_modules/imapflow/dist/esm/commands/list.js +3 -3
  240. package/node_modules/imapflow/dist/esm/commands/namespace.js +19 -15
  241. package/node_modules/imapflow/dist/esm/commands/quota.js +3 -4
  242. package/node_modules/imapflow/dist/esm/commands/select.d.ts +3 -14
  243. package/node_modules/imapflow/dist/esm/commands/select.js +1 -4
  244. package/node_modules/imapflow/dist/esm/commands/status.js +2 -4
  245. package/node_modules/imapflow/dist/esm/connection-deadline.d.ts +1 -1
  246. package/node_modules/imapflow/dist/esm/connection-deadline.js +2 -4
  247. package/node_modules/imapflow/dist/esm/download.js +66 -35
  248. package/node_modules/imapflow/dist/esm/errors.d.ts +15 -0
  249. package/node_modules/imapflow/dist/esm/errors.js +21 -0
  250. package/node_modules/imapflow/dist/esm/handler/imap-compiler.d.ts +4 -4
  251. package/node_modules/imapflow/dist/esm/handler/imap-compiler.js +18 -18
  252. package/node_modules/imapflow/dist/esm/handler/imap-parser.js +28 -3
  253. package/node_modules/imapflow/dist/esm/handler/imap-stream.js +9 -8
  254. package/node_modules/imapflow/dist/esm/handler/limits.d.ts +1 -1
  255. package/node_modules/imapflow/dist/esm/handler/limits.js +5 -7
  256. package/node_modules/imapflow/dist/esm/handler/parser-instance.js +23 -38
  257. package/node_modules/imapflow/dist/esm/handler/token-parser.d.ts +12 -0
  258. package/node_modules/imapflow/dist/esm/handler/token-parser.js +44 -104
  259. package/node_modules/imapflow/dist/esm/imap-flow.d.ts +4 -3
  260. package/node_modules/imapflow/dist/esm/imap-flow.js +130 -80
  261. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  262. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  263. package/node_modules/imapflow/dist/esm/proxy-connection.js +2 -5
  264. package/node_modules/imapflow/dist/esm/search-compiler.js +2 -3
  265. package/node_modules/imapflow/dist/esm/tools.d.ts +24 -3
  266. package/node_modules/imapflow/dist/esm/tools.js +58 -19
  267. package/node_modules/imapflow/dist/esm/types.d.ts +20 -1
  268. package/node_modules/imapflow/package.json +6 -3
  269. package/node_modules/playwright/README.md +4 -4
  270. package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +1 -1
  271. package/node_modules/playwright/lib/cli/testActions.js +8 -5
  272. package/node_modules/playwright/lib/common/index.js +37 -23
  273. package/node_modules/playwright/lib/common/index.js.txt +8 -9
  274. package/node_modules/playwright/lib/index.js +16 -4
  275. package/node_modules/playwright/lib/matchers/expect.js +13 -7
  276. package/node_modules/playwright/lib/matchers/expect.js.txt +4 -4
  277. package/node_modules/playwright/lib/program.js +2 -1
  278. package/node_modules/playwright/lib/runner/index.js +438 -244
  279. package/node_modules/playwright/lib/runner/index.js.txt +12 -11
  280. package/node_modules/playwright/lib/transform/babelBundle.js +2612 -2396
  281. package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +15 -15
  282. package/node_modules/playwright/lib/transform/babelBundle.js.txt +14 -11
  283. package/node_modules/playwright/lib/transform/esmLoader.js +17 -5
  284. package/node_modules/playwright/lib/transform/esmLoader.js.txt +3 -3
  285. package/node_modules/playwright/lib/worker/workerProcessEntry.js +17 -18
  286. package/node_modules/playwright/package.json +2 -7
  287. package/node_modules/playwright/types/test.d.ts +156 -39
  288. package/node_modules/playwright-core/browsers.json +9 -9
  289. package/node_modules/playwright-core/cli.js +1 -0
  290. package/node_modules/playwright-core/lib/bootstrap.js +61 -0
  291. package/node_modules/playwright-core/lib/coreBundle.js +6393 -4170
  292. package/node_modules/playwright-core/lib/server/electron/loader.js +4 -0
  293. package/node_modules/playwright-core/lib/tools/cli-client/cli.js +2 -1
  294. package/node_modules/playwright-core/lib/tools/cli-client/help.json +99 -12
  295. package/node_modules/playwright-core/lib/tools/cli-client/output.js +17 -16
  296. package/node_modules/playwright-core/lib/tools/cli-client/program.js +8 -4
  297. package/node_modules/playwright-core/lib/tools/cli-client/session.js +2 -0
  298. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +71 -3
  299. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
  300. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +4 -0
  301. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +2 -0
  302. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +1 -1
  303. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +76 -3
  304. package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +1 -1
  305. package/node_modules/playwright-core/lib/utilsBundle.js +948 -227
  306. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +6 -6
  307. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +1 -1
  308. package/node_modules/playwright-core/lib/vite/recorder/assets/{codeMirrorModule-CVQWJZAA.js → codeMirrorModule-DK72OMRi.js} +1 -1
  309. package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  310. package/node_modules/playwright-core/lib/vite/recorder/index.html +1 -1
  311. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{codeMirrorModule-BbkfBe3n.js → codeMirrorModule-BEB2e8M3.js} +1 -1
  312. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  313. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{xtermModule-DywYcAf8.js → xtermModule-B794rD2Z.js} +1 -1
  314. package/node_modules/playwright-core/lib/vite/traceViewer/{defaultSettingsView.Bqk9acqE.css → defaultSettingsView.C8BeHuxd.css} +1 -1
  315. package/node_modules/playwright-core/lib/vite/traceViewer/{index.B4cLoZK3.js → index.7-c5LSTW.js} +1 -1
  316. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +3 -3
  317. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -3
  318. package/node_modules/playwright-core/lib/vite/traceViewer/{uiMode.CU5KtEkS.js → uiMode.CYwC_gH1.js} +4 -4
  319. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +3 -3
  320. package/node_modules/playwright-core/package.json +1 -1
  321. package/node_modules/playwright-core/types/protocol.d.ts +468 -337
  322. package/node_modules/playwright-core/types/types.d.ts +572 -37
  323. package/node_modules/process-warning/.github/workflows/ci.yml +1 -1
  324. package/node_modules/process-warning/.github/workflows/lock-threads.yml +1 -1
  325. package/node_modules/process-warning/.github/workflows/release.yml +24 -0
  326. package/node_modules/process-warning/README.md +46 -46
  327. package/node_modules/process-warning/package.json +1 -1
  328. package/package.json +2 -2
  329. package/packages/cli/dist/.tsbuildinfo +1 -1
  330. package/packages/core/dist/.tsbuildinfo +1 -1
  331. package/packages/core/dist/plugin/index.d.ts +1 -1
  332. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  333. package/packages/core/dist/plugin/index.js.map +1 -1
  334. package/packages/core/dist/questions/store.d.ts +3 -1
  335. package/packages/core/dist/questions/store.d.ts.map +1 -1
  336. package/packages/core/dist/questions/store.js +3 -3
  337. package/packages/core/dist/questions/store.js.map +1 -1
  338. package/packages/core/dist/questions/types.d.ts +46 -1
  339. package/packages/core/dist/questions/types.d.ts.map +1 -1
  340. package/packages/core/dist/questions/types.js +2 -1
  341. package/packages/core/dist/questions/types.js.map +1 -1
  342. package/packages/core/dist/secrets/approval.d.ts +54 -0
  343. package/packages/core/dist/secrets/approval.d.ts.map +1 -1
  344. package/packages/core/dist/secrets/approval.js +58 -1
  345. package/packages/core/dist/secrets/approval.js.map +1 -1
  346. package/packages/core/dist/secrets/settings.d.ts +178 -0
  347. package/packages/core/dist/secrets/settings.d.ts.map +1 -1
  348. package/packages/core/dist/secrets/settings.js +63 -6
  349. package/packages/core/dist/secrets/settings.js.map +1 -1
  350. package/packages/core/dist/secrets/store.d.ts +31 -0
  351. package/packages/core/dist/secrets/store.d.ts.map +1 -1
  352. package/packages/core/dist/secrets/store.js +75 -0
  353. package/packages/core/dist/secrets/store.js.map +1 -1
  354. package/packages/core/dist/secrets/use.d.ts.map +1 -1
  355. package/packages/core/dist/secrets/use.js +68 -3
  356. package/packages/core/dist/secrets/use.js.map +1 -1
  357. package/packages/core/dist/tools.d.ts +22 -0
  358. package/packages/core/dist/tools.d.ts.map +1 -1
  359. package/packages/core/dist/tools.js.map +1 -1
  360. package/packages/core/migrations/080_secret_requests.sql +14 -0
  361. package/packages/gateway/dist/.tsbuildinfo +1 -1
  362. package/packages/gateway/dist/chat/session.d.ts.map +1 -1
  363. package/packages/gateway/dist/chat/session.js +2 -1
  364. package/packages/gateway/dist/chat/session.js.map +1 -1
  365. package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
  366. package/packages/gateway/dist/missions/execute.js +3 -1
  367. package/packages/gateway/dist/missions/execute.js.map +1 -1
  368. package/packages/gateway/dist/surfaces/browser-cards.d.ts +15 -3
  369. package/packages/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
  370. package/packages/gateway/dist/surfaces/browser-cards.js +34 -7
  371. package/packages/gateway/dist/surfaces/browser-cards.js.map +1 -1
  372. package/packages/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
  373. package/packages/gateway/dist/surfaces/offered-actions.js +8 -2
  374. package/packages/gateway/dist/surfaces/offered-actions.js.map +1 -1
  375. package/packages/gateway/dist/surfaces/pending-question.d.ts +3 -1
  376. package/packages/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  377. package/packages/gateway/dist/surfaces/pending-question.js.map +1 -1
  378. package/packages/gateway/dist/surfaces/secret-request.d.ts +173 -0
  379. package/packages/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
  380. package/packages/gateway/dist/surfaces/secret-request.js +332 -0
  381. package/packages/gateway/dist/surfaces/secret-request.js.map +1 -0
  382. package/packages/gateway/dist/system-context.js +1 -1
  383. package/packages/gateway/dist/system-context.js.map +1 -1
  384. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  385. package/packages/gateway/dist/telegram/main.js +14 -3
  386. package/packages/gateway/dist/telegram/main.js.map +1 -1
  387. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  388. package/packages/gateway/dist/telegram/surface.js +4 -1
  389. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  390. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  391. package/packages/gateway/dist/web/api-routes.js +9 -1
  392. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  393. package/packages/gateway/dist/web/approval-ask.js +2 -2
  394. package/packages/gateway/dist/web/approval-ask.js.map +1 -1
  395. package/packages/gateway/dist/web/browser-capture.d.ts +13 -0
  396. package/packages/gateway/dist/web/browser-capture.d.ts.map +1 -0
  397. package/packages/gateway/dist/web/browser-capture.js +24 -0
  398. package/packages/gateway/dist/web/browser-capture.js.map +1 -0
  399. package/packages/gateway/dist/web/chat.d.ts +26 -0
  400. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  401. package/packages/gateway/dist/web/chat.js +87 -2
  402. package/packages/gateway/dist/web/chat.js.map +1 -1
  403. package/packages/gateway/dist/web/extension.d.ts +30 -0
  404. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  405. package/packages/gateway/dist/web/extension.js +86 -6
  406. package/packages/gateway/dist/web/extension.js.map +1 -1
  407. package/packages/gateway/dist/web/onboarding.js +1 -1
  408. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  409. package/packages/gateway/dist/web/remote-hand.d.ts +26 -2
  410. package/packages/gateway/dist/web/remote-hand.d.ts.map +1 -1
  411. package/packages/gateway/dist/web/remote-hand.js +89 -28
  412. package/packages/gateway/dist/web/remote-hand.js.map +1 -1
  413. package/packages/gateway/dist/web/secret-request.d.ts +54 -0
  414. package/packages/gateway/dist/web/secret-request.d.ts.map +1 -0
  415. package/packages/gateway/dist/web/secret-request.js +264 -0
  416. package/packages/gateway/dist/web/secret-request.js.map +1 -0
  417. package/packages/gateway/dist/web/secrets.d.ts +1 -0
  418. package/packages/gateway/dist/web/secrets.d.ts.map +1 -1
  419. package/packages/gateway/dist/web/secrets.js +1 -1
  420. package/packages/gateway/dist/web/secrets.js.map +1 -1
  421. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  422. package/packages/gateway/dist/web/server.js +72 -3
  423. package/packages/gateway/dist/web/server.js.map +1 -1
  424. package/packages/install/dist/.tsbuildinfo +1 -1
  425. package/packages/install/dist/app-layout.d.ts +24 -0
  426. package/packages/install/dist/app-layout.d.ts.map +1 -1
  427. package/packages/install/dist/app-layout.js +64 -2
  428. package/packages/install/dist/app-layout.js.map +1 -1
  429. package/packages/install/dist/launcher.d.ts.map +1 -1
  430. package/packages/install/dist/launcher.js +89 -10
  431. package/packages/install/dist/launcher.js.map +1 -1
  432. package/packages/install/dist/linux-install.d.ts +41 -0
  433. package/packages/install/dist/linux-install.d.ts.map +1 -0
  434. package/packages/install/dist/linux-install.js +86 -0
  435. package/packages/install/dist/linux-install.js.map +1 -0
  436. package/packages/install/dist/runtime-info.d.ts +23 -0
  437. package/packages/install/dist/runtime-info.d.ts.map +1 -0
  438. package/packages/install/dist/runtime-info.js +69 -0
  439. package/packages/install/dist/runtime-info.js.map +1 -0
  440. package/packages/install/dist/supervisor.d.ts.map +1 -1
  441. package/packages/install/dist/supervisor.js +8 -6
  442. package/packages/install/dist/supervisor.js.map +1 -1
  443. package/packages/install/dist/uninstall.d.ts +20 -0
  444. package/packages/install/dist/uninstall.d.ts.map +1 -1
  445. package/packages/install/dist/uninstall.js +50 -1
  446. package/packages/install/dist/uninstall.js.map +1 -1
  447. package/packages/install/dist/upgrade.d.ts +4 -1
  448. package/packages/install/dist/upgrade.d.ts.map +1 -1
  449. package/packages/install/dist/upgrade.js +77 -51
  450. package/packages/install/dist/upgrade.js.map +1 -1
  451. package/packages/runtime/dist/.tsbuildinfo +1 -1
  452. package/packages/runtime/dist/anthropic.d.ts +7 -0
  453. package/packages/runtime/dist/anthropic.d.ts.map +1 -1
  454. package/packages/runtime/dist/anthropic.js +19 -1
  455. package/packages/runtime/dist/anthropic.js.map +1 -1
  456. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  457. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  458. package/packages/tools/browser/dist/controller.d.ts +16 -1
  459. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  460. package/packages/tools/browser/dist/controller.js +59 -5
  461. package/packages/tools/browser/dist/controller.js.map +1 -1
  462. package/packages/tools/browser/dist/driver.d.ts +12 -0
  463. package/packages/tools/browser/dist/driver.d.ts.map +1 -1
  464. package/packages/tools/browser/dist/driver.js +41 -2
  465. package/packages/tools/browser/dist/driver.js.map +1 -1
  466. package/packages/tools/browser/dist/extension.d.ts +49 -9
  467. package/packages/tools/browser/dist/extension.d.ts.map +1 -1
  468. package/packages/tools/browser/dist/extension.js +145 -21
  469. package/packages/tools/browser/dist/extension.js.map +1 -1
  470. package/packages/tools/browser/dist/index.d.ts +10 -6
  471. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  472. package/packages/tools/browser/dist/index.js +22 -8
  473. package/packages/tools/browser/dist/index.js.map +1 -1
  474. package/packages/tools/browser/dist/routes.d.ts +10 -1
  475. package/packages/tools/browser/dist/routes.d.ts.map +1 -1
  476. package/packages/tools/browser/dist/routes.js +24 -0
  477. package/packages/tools/browser/dist/routes.js.map +1 -1
  478. package/packages/tools/browser/dist/service.d.ts +48 -1
  479. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  480. package/packages/tools/browser/dist/service.js +114 -11
  481. package/packages/tools/browser/dist/service.js.map +1 -1
  482. package/packages/tools/browser/dist/types.d.ts +54 -3
  483. package/packages/tools/browser/dist/types.d.ts.map +1 -1
  484. package/packages/tools/browser/dist/types.js +17 -1
  485. package/packages/tools/browser/dist/types.js.map +1 -1
  486. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  487. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  488. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  489. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  490. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  491. package/packages/web/dist/assets/index-DgpPl0TR.js +155 -0
  492. package/packages/web/dist/assets/index-rMRjibNI.css +1 -0
  493. package/packages/web/dist/assets/{lottie_light-D7CS-IeP.js → lottie_light-twPed1FM.js} +1 -1
  494. package/packages/web/dist/build.json +1 -1
  495. package/packages/web/dist/index.html +2 -2
  496. package/packages/web/dist/precache.json +4 -4
  497. package/node_modules/content-disposition/index.js +0 -536
  498. package/node_modules/playwright/jsx-runtime.js +0 -42
  499. package/node_modules/playwright/jsx-runtime.mjs +0 -21
  500. package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +0 -129
  501. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +0 -182
  502. package/packages/web/dist/assets/index-BibqUZwt.js +0 -155
  503. package/packages/web/dist/assets/index-DBVZzTau.css +0 -1
@@ -13,6 +13,23 @@ export declare const SOURCE_REPOSITORY = "https://github.com/withbuddi/buddi";
13
13
  export declare const APP_BUNDLE = "This buddi runs from inside buddi.app, and the app updates it. Open buddi from the menu bar to update.";
14
14
  /** `<releases>` when this installation is buddi.app's, else undefined. */
15
15
  export declare function appLayout(env: NodeJS.ProcessEnv): string | undefined;
16
+ /**
17
+ * The Linux install (`scripts/install.sh`) uses this same layout without an
18
+ * app around it: `<data>/node/node` is the bundled Node (npm beside it),
19
+ * `<data>/releases/current` the release that runs, and a systemd user unit
20
+ * starts `current` again after an upgrade. Its unit and its `buddi` command
21
+ * set this variable next to `BUDDI_APP_LAYOUT`, so the words and the ways
22
+ * back are the installer's, not buddi.app's menu.
23
+ */
24
+ export declare const LINUX_INSTALL_VAR = "BUDDI_LINUX_INSTALL";
25
+ /** Is this the Linux install's layout (no app, systemd restarts `current`)? */
26
+ export declare function linuxInstall(env: NodeJS.ProcessEnv): boolean;
27
+ /** Is buddi.app the one running this installation (the layout, and not the Linux install's)? */
28
+ export declare function appRuns(env: NodeJS.ProcessEnv): boolean;
29
+ /** The line the Linux install is installed and upgraded with (the site serves scripts/install.sh). */
30
+ export declare const LINUX_INSTALL_LINE = "curl -fsSL https://withbuddi.com/install.sh | sh";
31
+ /** The command the Linux install's own launcher runs: `current`'s, so a unit written once follows every upgrade. */
32
+ export declare function currentLauncher(releases: string): string;
16
33
  /** Does this root sit inside a macOS app bundle? */
17
34
  export declare function insideAppBundle(root: string): boolean;
18
35
  /** Does a supervisor with this install root run buddi.app's copy: the bundle's, or a release the app installed? */
@@ -115,6 +132,13 @@ export declare function placeRelease(target: string, version: string, staging: s
115
132
  root: string;
116
133
  kept: boolean;
117
134
  }>;
135
+ /** `<releases>/.lock`: a folder (mkdir is atomic) holding the owner's pid. scripts/install.sh takes the same one. */
136
+ export declare const RELEASES_LOCK = ".lock";
137
+ /**
138
+ * Take the releases lock, or say who holds it. A lock whose process is gone
139
+ * is stale and taken over. Resolves with what lets it go again.
140
+ */
141
+ export declare function takeReleasesLock(releases: string, pid?: number): Promise<() => Promise<void>>;
118
142
  /** Where `current` and `previous` point now. */
119
143
  export declare function releaseLinks(releases: string): Promise<{
120
144
  current?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"app-layout.d.ts","sourceRoot":"","sources":["../src/app-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-layout.d.ts","sourceRoot":"","sources":["../src/app-layout.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,29 @@ export function appLayout(env) {
67
67
  const dir = env[APP_LAYOUT_VAR]?.trim();
68
68
  return dir !== undefined && dir !== '' && path.isAbsolute(dir) ? path.resolve(dir) : undefined;
69
69
  }
70
+ /**
71
+ * The Linux install (`scripts/install.sh`) uses this same layout without an
72
+ * app around it: `<data>/node/node` is the bundled Node (npm beside it),
73
+ * `<data>/releases/current` the release that runs, and a systemd user unit
74
+ * starts `current` again after an upgrade. Its unit and its `buddi` command
75
+ * set this variable next to `BUDDI_APP_LAYOUT`, so the words and the ways
76
+ * back are the installer's, not buddi.app's menu.
77
+ */
78
+ export const LINUX_INSTALL_VAR = 'BUDDI_LINUX_INSTALL';
79
+ /** Is this the Linux install's layout (no app, systemd restarts `current`)? */
80
+ export function linuxInstall(env) {
81
+ return appLayout(env) !== undefined && (env[LINUX_INSTALL_VAR] ?? '').trim() === '1';
82
+ }
83
+ /** Is buddi.app the one running this installation (the layout, and not the Linux install's)? */
84
+ export function appRuns(env) {
85
+ return appLayout(env) !== undefined && !linuxInstall(env);
86
+ }
87
+ /** The line the Linux install is installed and upgraded with (the site serves scripts/install.sh). */
88
+ export const LINUX_INSTALL_LINE = 'curl -fsSL https://withbuddi.com/install.sh | sh';
89
+ /** The command the Linux install's own launcher runs: `current`'s, so a unit written once follows every upgrade. */
90
+ export function currentLauncher(releases) {
91
+ return path.join(releases, 'current', 'packages', 'install', 'dist', 'launcher.js');
92
+ }
70
93
  /** Does this root sit inside a macOS app bundle? */
71
94
  export function insideAppBundle(root) {
72
95
  return /\.app\/Contents\//.test(root.split(path.sep).join('/') + '/');
@@ -154,7 +177,7 @@ export async function stageRelease(opts) {
154
177
  };
155
178
  const meta = await fetchReleaseMeta(registry, version, opts.http, opts.auth);
156
179
  if (requireProvenance && meta.attestations === undefined) {
157
- throw new Error(`${PACKAGE_NAME}@${version} has no provenance attestation, and buddi.app installs only releases built by withbuddi/buddi's CI.`);
180
+ throw new Error(`${PACKAGE_NAME}@${version} has no provenance attestation, and buddi installs only releases built by withbuddi/buddi's CI.`);
158
181
  }
159
182
  await mkdir(opts.releases, { recursive: true, mode: 0o700 });
160
183
  // Resolved: npm given a prefix under a symlink (`/var` → `/private/var`, a
@@ -164,7 +187,7 @@ export async function stageRelease(opts) {
164
187
  const staging = path.join(releases, `.staging-${version}-${randomBytes(4).toString('hex')}`);
165
188
  await mkdir(staging, { recursive: true, mode: 0o700 });
166
189
  // npm's own kind of prefix manifest: no name, so it is nobody's project.
167
- await writeFile(path.join(staging, 'package.json'), JSON.stringify({ private: true, description: 'A buddi release installed by buddi.app.' }, null, 2) + '\n');
190
+ await writeFile(path.join(staging, 'package.json'), JSON.stringify({ private: true, description: 'A buddi release installed by buddi itself.' }, null, 2) + '\n');
168
191
  try {
169
192
  try {
170
193
  await opts.exec(binary, stageArgs(staging, version, registry), { timeout, maxBuffer });
@@ -268,6 +291,45 @@ export async function placeRelease(target, version, staging, log) {
268
291
  log?.(`upgrade: ${version} is in place in ${dir}.`);
269
292
  return { dir, root: releaseRoot(dir), kept: false };
270
293
  }
294
+ /* ------------------------------------------------------------------ *
295
+ * One release change at a time
296
+ * ------------------------------------------------------------------ */
297
+ /** `<releases>/.lock`: a folder (mkdir is atomic) holding the owner's pid. scripts/install.sh takes the same one. */
298
+ export const RELEASES_LOCK = '.lock';
299
+ function alive(pid) {
300
+ try {
301
+ process.kill(pid, 0);
302
+ return true;
303
+ }
304
+ catch (err) {
305
+ return err.code === 'EPERM';
306
+ }
307
+ }
308
+ /**
309
+ * Take the releases lock, or say who holds it. A lock whose process is gone
310
+ * is stale and taken over. Resolves with what lets it go again.
311
+ */
312
+ export async function takeReleasesLock(releases, pid = process.pid) {
313
+ await mkdir(releases, { recursive: true, mode: 0o700 });
314
+ const lock = path.join(releases, RELEASES_LOCK);
315
+ for (let attempt = 0; attempt < 2; attempt++) {
316
+ try {
317
+ await mkdir(lock, { mode: 0o700 });
318
+ await writeFile(path.join(lock, 'pid'), `${pid}\n`);
319
+ return async () => { await rm(lock, { recursive: true, force: true }).catch(() => { }); };
320
+ }
321
+ catch (err) {
322
+ if (err.code !== 'EEXIST')
323
+ throw err;
324
+ const holder = Number((await readFile(path.join(lock, 'pid'), 'utf8').catch(() => '')).trim());
325
+ if (Number.isInteger(holder) && holder > 0 && holder !== pid && alive(holder)) {
326
+ throw new Error(`another install or upgrade is changing ${releases} (pid ${holder}); try again when it has finished`);
327
+ }
328
+ await rm(lock, { recursive: true, force: true });
329
+ }
330
+ }
331
+ throw new Error(`could not take the lock in ${releases}`);
332
+ }
271
333
  /* ------------------------------------------------------------------ *
272
334
  * current, previous, and what is kept
273
335
  * ------------------------------------------------------------------ */
@@ -1 +1 @@
1
- {"version":3,"file":"app-layout.js","sourceRoot":"","sources":["../src/app-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-layout.js","sourceRoot":"","sources":["../src/app-layout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":";AA0BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AA+ExD,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAM5D"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":";AA4BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAyFxD,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAM5D"}
@@ -20,7 +20,9 @@ import { briefSupervisorEnv, supervise, supervisorSocket } from './supervisor.js
20
20
  import { keptPluginDataLine, readKeptPluginData } from './kept-data.js';
21
21
  import { readProfileZone, timezoneLine } from './doctor-timezone.js';
22
22
  import { installedVersion, readUpgradeState, upgradeDoctorLines, versionView } from './upgrade.js';
23
- import { APP_RUNNING_LINE, appLayout, insideAppBundle, runsAppCopy } from './app-layout.js';
23
+ import { APP_RUNNING_LINE, appLayout, insideAppBundle, linuxInstall, runsAppCopy } from './app-layout.js';
24
+ import { runtimeFacts, runtimeLines } from './runtime-info.js';
25
+ import { commandOwnedBy, desktopEntryPaths, linuxUnitSpec, ownDesktopEntries } from './linux-install.js';
24
26
  import { APP_BUNDLE_ID, SHIM_REFUSAL, SHIM_VAR, shimAction, shimDoctorLines, shimRefusesSupervise, shimsFor } from './cli-shim.js';
25
27
  const entry = fileURLToPath(import.meta.url);
26
28
  // <root>/packages/install/dist/launcher.js — the installation root is three up.
@@ -99,8 +101,17 @@ function isAppInstall(ctx) {
99
101
  function runsFromApp(status, ctx) {
100
102
  return runsAppCopy(status.installRoot, ctx.data);
101
103
  }
104
+ /**
105
+ * Is this the Linux install (scripts/install.sh)? Its `buddi` and its unit say
106
+ * so; a process they started with a trimmed environment (the uninstall the
107
+ * dashboard spawns) is told by the layout: on Linux there is no buddi.app, so
108
+ * a release under `<data>/releases` is the installer's.
109
+ */
110
+ function isLinuxInstall(ctx) {
111
+ return linuxInstall(process.env) || (process.platform === 'linux' && isAppInstall(ctx));
112
+ }
102
113
  function withApp(view, ctx) {
103
- return isAppInstall(ctx) ? { ...view, app: true } : view;
114
+ return isAppInstall(ctx) && !isLinuxInstall(ctx) ? { ...view, app: true } : view;
104
115
  }
105
116
  async function control(ctx, action = 'status') {
106
117
  return await ask(ctx, action === 'status' ? 'GET' : 'POST', `/${action}`);
@@ -233,6 +244,38 @@ async function startSupervisorBriefly(ctx, lockPid) {
233
244
  await new Promise(resolve => setTimeout(resolve, 500));
234
245
  }
235
246
  }
247
+ /**
248
+ * What the Linux install put where: `installer.json` (written by
249
+ * scripts/install.sh) names the command and whether it turned on lingering;
250
+ * the command is removed only while it still carries the installer's marker.
251
+ */
252
+ function linuxInstallParts(ctx, home) {
253
+ let recorded = {};
254
+ try {
255
+ recorded = JSON.parse(readFileSync(path.join(ctx.data, 'installer.json'), 'utf8'));
256
+ }
257
+ catch { /* an older install: the defaults */ }
258
+ const command = typeof recorded.command === 'string' && path.isAbsolute(recorded.command) ? recorded.command : path.join(home, '.local', 'bin', 'buddi');
259
+ // Ours only while it runs this data folder: another installation may have written the same bin folder since.
260
+ const owned = () => commandOwnedBy((() => { try {
261
+ return readFileSync(command, 'utf8');
262
+ }
263
+ catch {
264
+ return undefined;
265
+ } })(), ctx.data, realpathSync);
266
+ return {
267
+ runtime: path.join(ctx.data, 'node'),
268
+ releases: appLayout(process.env) ?? path.join(ctx.data, 'releases'),
269
+ ...(owned() ? { command, commandOwned: owned } : {}),
270
+ ...(recorded.linger === true ? { linger: true } : {}),
271
+ desktopEntries: ownDesktopEntries(desktopEntryPaths(process.env, home), ctx.data, file => { try {
272
+ return readFileSync(file, 'utf8');
273
+ }
274
+ catch {
275
+ return undefined;
276
+ } }),
277
+ };
278
+ }
236
279
  /**
237
280
  * `buddi uninstall`, in a packaged installation. The order and the refusals
238
281
  * are in `uninstall.ts`; this wires them to the real machine: the supervisor's
@@ -280,7 +323,9 @@ async function uninstall(ctx, rest) {
280
323
  const stored = await vault?.get('TELEGRAM_BOT_TOKEN').catch(() => null) ?? null;
281
324
  const token = stored ?? (ctx.env.TELEGRAM_BOT_TOKEN?.startsWith('<') ? undefined : ctx.env.TELEGRAM_BOT_TOKEN?.trim() || undefined);
282
325
  const app = dashboardAppOwnedBy(path.join(root, 'packages/cli/dist/main.js'), home);
326
+ const linuxParts = isLinuxInstall(ctx) ? linuxInstallParts(ctx, home) : undefined;
283
327
  return await uninstallPackaged(options, {
328
+ ...(linuxParts === undefined ? {} : { linuxInstall: linuxParts }),
284
329
  data: ctx.data, home, platform: process.platform, env: ctx.env, uid: process.getuid?.() ?? 501,
285
330
  exists: existsSync,
286
331
  remove: file => rm(file, { recursive: true, force: true }),
@@ -308,7 +353,7 @@ async function uninstall(ctx, rest) {
308
353
  },
309
354
  // Run by buddi.app itself (its uninstall route), the app is already on its way out: nothing to say about it.
310
355
  buddiApp: async () => {
311
- if (appLayout(process.env) !== undefined)
356
+ if (appLayout(process.env) !== undefined || isLinuxInstall(ctx))
312
357
  return undefined;
313
358
  const status = await control(ctx).catch(() => undefined);
314
359
  if (status !== undefined && runsFromApp(status, ctx))
@@ -624,11 +669,20 @@ async function launchService(ctx, temporary) {
624
669
  const unit = systemdUnitPath(ctx.data, ctx.env);
625
670
  const { buildSystemdUnit } = await import('@buddi/cli');
626
671
  await mkdir(path.dirname(unit), { recursive: true });
672
+ /*
673
+ * The Linux install runs `<data>/releases/current` with its bundled node,
674
+ * named through the link rather than resolved: an upgrade switches the
675
+ * link and systemd's restart runs the new release from the same unit.
676
+ */
677
+ const releases = isLinuxInstall(ctx) ? appLayout(process.env) ?? path.join(ctx.data, 'releases') : undefined;
678
+ const spec = releases === undefined
679
+ ? { nodePath: process.execPath, serveEntry: entry, environment: { BUDDI_DATA_DIR: ctx.data, [SERVICE_UNIT_VAR]: label, ...serviceEnvironment() }, path: [path.dirname(process.execPath), '/usr/local/bin', '/usr/bin', '/bin'].join(':') }
680
+ : linuxUnitSpec({ data: ctx.data, releases, label, exists: existsSync, extra: serviceEnvironment() });
627
681
  await writeFile(unit, buildSystemdUnit({
628
- label, nodePath: process.execPath, serveEntry: entry, args: ['supervise'],
629
- environment: { BUDDI_DATA_DIR: ctx.data, [SERVICE_UNIT_VAR]: label, ...serviceEnvironment() },
682
+ label, nodePath: spec.nodePath, serveEntry: spec.serveEntry, args: ['supervise'],
683
+ environment: spec.environment,
630
684
  workingDirectory: ctx.data,
631
- path: [path.dirname(process.execPath), '/usr/local/bin', '/usr/bin', '/bin'].join(':'),
685
+ path: spec.path,
632
686
  logFile: path.join(ctx.data, 'logs/supervisor.log'), errorFile: path.join(ctx.data, 'logs/supervisor.log'),
633
687
  }), { mode: 0o600 });
634
688
  try {
@@ -638,7 +692,10 @@ async function launchService(ctx, temporary) {
638
692
  const detail = error instanceof Error ? error.message : String(error);
639
693
  throw new Error(`systemd could not start the service (${detail.trim()}). The unit is at ${unit}. Run buddi --no-service to start it in the foreground instead.`);
640
694
  }
641
- console.log(`Background service: systemd user unit ${label} (survives logout only after: loginctl enable-linger ${ctx.env.USER ?? '$USER'})`);
695
+ // Lingering already on (the Linux installer turns it on when it may): nothing to add.
696
+ const lingering = await exec('loginctl', ['show-user', ctx.env.USER ?? os.userInfo().username, '-p', 'Linger', '--value'], { env: nativeEnvironment(ctx.env) })
697
+ .then(out => out.stdout.trim() === 'yes', () => false);
698
+ console.log(`Background service: systemd user unit ${label}${lingering ? '' : ` (survives logout only after: loginctl enable-linger ${ctx.env.USER ?? '$USER'})`}`);
642
699
  return;
643
700
  }
644
701
  if (!temporary && process.platform !== 'darwin')
@@ -771,7 +828,11 @@ async function run() {
771
828
  return entry;
772
829
  } })();
773
830
  console.log(`This buddi: ${invoked} (Node ${process.execPath})`);
774
- console.log(`From: ${insideAppBundle(root) ? `buddi.app (${root.slice(0, root.indexOf('.app/') + 4)})` : root.startsWith(path.join(ctx.data, 'releases') + path.sep) ? `an update buddi.app installed (${root})` : `npm (${root})`}`);
831
+ const linux = isLinuxInstall(ctx);
832
+ console.log(`From: ${insideAppBundle(root) ? `buddi.app (${root.slice(0, root.indexOf('.app/') + 4)})` : linux ? `the Linux install (${root})` : root.startsWith(path.join(ctx.data, 'releases') + path.sep) ? `an update buddi.app installed (${root})` : `npm (${root})`}`);
833
+ // Which Node and which npm: the bundled runtime, or the machine's (roadmap: no dependence on a host Node).
834
+ for (const line of runtimeLines(await runtimeFacts(), insideAppBundle(process.execPath) ? 'buddi.app' : linux ? 'the Linux install' : 'this installation'))
835
+ console.log(line);
775
836
  for (const line of shimDoctorLines({ home: os.homedir(), exists: existsSync, read: file => { try {
776
837
  return readFileSync(file, 'utf8');
777
838
  }
@@ -801,7 +862,7 @@ async function run() {
801
862
  * looking at a supervisor that is barely up. The file is the record.
802
863
  */
803
864
  const state = await readUpgradeState(ctx.data, await installedVersion(root));
804
- for (const line of upgradeDoctorLines(withApp(versionView(state), ctx), ctx.state?.phase))
865
+ for (const line of upgradeDoctorLines(withApp(versionView(state), ctx), ctx.state?.phase, { linux }))
805
866
  console.log(line);
806
867
  console.log(`Logs: ${path.join(ctx.data, 'logs')}`);
807
868
  return;
@@ -904,7 +965,7 @@ async function run() {
904
965
  throw new Error('buddi.app is not running buddi. Open buddi.app, then run buddi again.');
905
966
  if (!running) {
906
967
  if (!relaunched) {
907
- console.log('Starting Buddi. First run provisions a private Postgres cluster.');
968
+ console.log(firstRun ? 'Starting Buddi. First run provisions a private Postgres cluster.' : 'Starting buddi.');
908
969
  await launchService(ctx, args.includes('--no-service'));
909
970
  }
910
971
  const deadline = Date.now() + 120_000;
@@ -959,6 +1020,24 @@ async function run() {
959
1020
  console.log(gateway.browserLine(found));
960
1021
  if (!args.includes('--no-open') && process.platform === 'darwin')
961
1022
  await exec('open', [url], { env: nativeEnvironment(ctx.env) });
1023
+ /*
1024
+ * On a Linux desktop the link opens in the owner's browser, as `open` does
1025
+ * on a Mac: only from a graphical session (a terminal on the desktop has
1026
+ * DISPLAY or WAYLAND_DISPLAY; an SSH shell has neither, and a browser
1027
+ * popping up on a screen nobody is looking at helps no one).
1028
+ */
1029
+ if (!args.includes('--no-open') && process.platform === 'linux' && (process.env.DISPLAY || process.env.WAYLAND_DISPLAY)) {
1030
+ const opened = await new Promise(resolve => {
1031
+ // The OS context and the desktop session's own variables only: never the .env secrets or the vault key.
1032
+ const desktop = ['DISPLAY', 'WAYLAND_DISPLAY', 'XAUTHORITY', 'XDG_RUNTIME_DIR', 'DBUS_SESSION_BUS_ADDRESS', 'XDG_CURRENT_DESKTOP', 'XDG_SESSION_TYPE', 'XDG_SESSION_DESKTOP', 'DESKTOP_SESSION', 'XDG_DATA_DIRS', 'XDG_CONFIG_DIRS', 'XDG_DATA_HOME', 'XDG_CONFIG_HOME', 'BROWSER'];
1033
+ const env = { ...nativeEnvironment(process.env), ...Object.fromEntries(desktop.filter(key => typeof process.env[key] === 'string').map(key => [key, process.env[key]])) };
1034
+ const child = spawn('xdg-open', [url], { detached: true, stdio: 'ignore', env });
1035
+ child.once('error', () => resolve(false));
1036
+ child.once('spawn', () => { child.unref(); resolve(true); });
1037
+ });
1038
+ if (opened)
1039
+ console.log('Opened it in your browser.');
1040
+ }
962
1041
  return;
963
1042
  }
964
1043
  if (!wantsHelp && args[0] === 'backup' && (args[1] === 'restore' || args[1] === 'create')) {