@withbuddi/buddi 0.1.0-pre.39 → 0.1.0-pre.41

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 (241) hide show
  1. package/extension/manifest.json +2 -2
  2. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  3. package/node_modules/@buddi/cli/dist/args.d.ts +2 -0
  4. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  5. package/node_modules/@buddi/cli/dist/args.js +11 -2
  6. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  7. package/node_modules/@buddi/cli/dist/backup/index.d.ts +3 -1
  8. package/node_modules/@buddi/cli/dist/backup/index.d.ts.map +1 -1
  9. package/node_modules/@buddi/cli/dist/backup/index.js +16 -1
  10. package/node_modules/@buddi/cli/dist/backup/index.js.map +1 -1
  11. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  12. package/node_modules/@buddi/cli/dist/commands.js +5 -3
  13. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  14. package/node_modules/@buddi/cli/dist/main.d.ts +4 -1
  15. package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
  16. package/node_modules/@buddi/cli/dist/main.js +41 -3
  17. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  18. package/node_modules/@buddi/cli/dist/mode.d.ts +41 -0
  19. package/node_modules/@buddi/cli/dist/mode.d.ts.map +1 -0
  20. package/node_modules/@buddi/cli/dist/mode.js +103 -0
  21. package/node_modules/@buddi/cli/dist/mode.js.map +1 -0
  22. package/node_modules/@buddi/cli/dist/paths.d.ts +13 -1
  23. package/node_modules/@buddi/cli/dist/paths.d.ts.map +1 -1
  24. package/node_modules/@buddi/cli/dist/paths.js +23 -2
  25. package/node_modules/@buddi/cli/dist/paths.js.map +1 -1
  26. package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts +12 -2
  27. package/node_modules/@buddi/cli/dist/uninstall-cmd.d.ts.map +1 -1
  28. package/node_modules/@buddi/cli/dist/uninstall-cmd.js +63 -12
  29. package/node_modules/@buddi/cli/dist/uninstall-cmd.js.map +1 -1
  30. package/node_modules/@buddi/cli/dist/vault-cmd.d.ts +3 -0
  31. package/node_modules/@buddi/cli/dist/vault-cmd.d.ts.map +1 -1
  32. package/node_modules/@buddi/cli/dist/vault-cmd.js +26 -5
  33. package/node_modules/@buddi/cli/dist/vault-cmd.js.map +1 -1
  34. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  35. package/node_modules/@buddi/core/dist/uninstall.d.ts +18 -0
  36. package/node_modules/@buddi/core/dist/uninstall.d.ts.map +1 -1
  37. package/node_modules/@buddi/core/dist/uninstall.js +47 -0
  38. package/node_modules/@buddi/core/dist/uninstall.js.map +1 -1
  39. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  40. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts +2 -0
  41. package/node_modules/@buddi/gateway/dist/codex-accounts.d.ts.map +1 -1
  42. package/node_modules/@buddi/gateway/dist/codex-accounts.js +4 -4
  43. package/node_modules/@buddi/gateway/dist/codex-accounts.js.map +1 -1
  44. package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
  45. package/node_modules/@buddi/gateway/dist/serve.js +31 -0
  46. package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
  47. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  48. package/node_modules/@buddi/gateway/dist/web/api-routes.js +20 -2
  49. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts +11 -0
  51. package/node_modules/@buddi/gateway/dist/web/cli-tool.d.ts.map +1 -0
  52. package/node_modules/@buddi/gateway/dist/web/cli-tool.js +27 -0
  53. package/node_modules/@buddi/gateway/dist/web/cli-tool.js.map +1 -0
  54. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +14 -0
  55. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  56. package/node_modules/@buddi/gateway/dist/web/extension.js +22 -1
  57. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  58. package/node_modules/@buddi/gateway/dist/web/lock.d.ts +12 -0
  59. package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
  60. package/node_modules/@buddi/gateway/dist/web/lock.js +13 -0
  61. package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +41 -6
  63. package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/web/onboarding.js +91 -15
  65. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  66. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts +64 -0
  67. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
  68. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js +112 -0
  69. package/node_modules/@buddi/gateway/dist/web/passphrase-notice.js.map +1 -0
  70. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  71. package/node_modules/@buddi/gateway/dist/web/server.js +78 -9
  72. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  73. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts +28 -3
  74. package/node_modules/@buddi/gateway/dist/web/take-on.d.ts.map +1 -1
  75. package/node_modules/@buddi/gateway/dist/web/take-on.js +48 -3
  76. package/node_modules/@buddi/gateway/dist/web/take-on.js.map +1 -1
  77. package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts +36 -0
  78. package/node_modules/@buddi/gateway/dist/web/uninstall.d.ts.map +1 -0
  79. package/node_modules/@buddi/gateway/dist/web/uninstall.js +116 -0
  80. package/node_modules/@buddi/gateway/dist/web/uninstall.js.map +1 -0
  81. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  82. package/node_modules/@buddi/install/dist/app-layout.d.ts +4 -0
  83. package/node_modules/@buddi/install/dist/app-layout.d.ts.map +1 -1
  84. package/node_modules/@buddi/install/dist/app-layout.js +6 -0
  85. package/node_modules/@buddi/install/dist/app-layout.js.map +1 -1
  86. package/node_modules/@buddi/install/dist/cli-shim.d.ts +76 -0
  87. package/node_modules/@buddi/install/dist/cli-shim.d.ts.map +1 -0
  88. package/node_modules/@buddi/install/dist/cli-shim.js +215 -0
  89. package/node_modules/@buddi/install/dist/cli-shim.js.map +1 -0
  90. package/node_modules/@buddi/install/dist/environment.d.ts +90 -1
  91. package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
  92. package/node_modules/@buddi/install/dist/environment.js +216 -3
  93. package/node_modules/@buddi/install/dist/environment.js.map +1 -1
  94. package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
  95. package/node_modules/@buddi/install/dist/launcher.js +140 -5
  96. package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
  97. package/node_modules/@buddi/install/dist/product-uninstall.d.ts +86 -0
  98. package/node_modules/@buddi/install/dist/product-uninstall.d.ts.map +1 -0
  99. package/node_modules/@buddi/install/dist/product-uninstall.js +150 -0
  100. package/node_modules/@buddi/install/dist/product-uninstall.js.map +1 -0
  101. package/node_modules/@buddi/install/dist/supervisor.d.ts +16 -1
  102. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  103. package/node_modules/@buddi/install/dist/supervisor.js +191 -10
  104. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  105. package/node_modules/@buddi/install/dist/uninstall.d.ts +20 -1
  106. package/node_modules/@buddi/install/dist/uninstall.d.ts.map +1 -1
  107. package/node_modules/@buddi/install/dist/uninstall.js +84 -13
  108. package/node_modules/@buddi/install/dist/uninstall.js.map +1 -1
  109. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  110. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts +6 -0
  111. package/node_modules/@buddi/runtime/dist/codex-oauth.d.ts.map +1 -1
  112. package/node_modules/@buddi/runtime/dist/codex-oauth.js +15 -0
  113. package/node_modules/@buddi/runtime/dist/codex-oauth.js.map +1 -1
  114. package/node_modules/@buddi/runtime/dist/openai.d.ts +9 -2
  115. package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
  116. package/node_modules/@buddi/runtime/dist/openai.js +117 -16
  117. package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
  118. package/package.json +2 -2
  119. package/packages/cli/dist/.tsbuildinfo +1 -1
  120. package/packages/cli/dist/args.d.ts +2 -0
  121. package/packages/cli/dist/args.d.ts.map +1 -1
  122. package/packages/cli/dist/args.js +11 -2
  123. package/packages/cli/dist/args.js.map +1 -1
  124. package/packages/cli/dist/backup/index.d.ts +3 -1
  125. package/packages/cli/dist/backup/index.d.ts.map +1 -1
  126. package/packages/cli/dist/backup/index.js +16 -1
  127. package/packages/cli/dist/backup/index.js.map +1 -1
  128. package/packages/cli/dist/commands.d.ts.map +1 -1
  129. package/packages/cli/dist/commands.js +5 -3
  130. package/packages/cli/dist/commands.js.map +1 -1
  131. package/packages/cli/dist/main.d.ts +4 -1
  132. package/packages/cli/dist/main.d.ts.map +1 -1
  133. package/packages/cli/dist/main.js +41 -3
  134. package/packages/cli/dist/main.js.map +1 -1
  135. package/packages/cli/dist/mode.d.ts +41 -0
  136. package/packages/cli/dist/mode.d.ts.map +1 -0
  137. package/packages/cli/dist/mode.js +103 -0
  138. package/packages/cli/dist/mode.js.map +1 -0
  139. package/packages/cli/dist/paths.d.ts +13 -1
  140. package/packages/cli/dist/paths.d.ts.map +1 -1
  141. package/packages/cli/dist/paths.js +23 -2
  142. package/packages/cli/dist/paths.js.map +1 -1
  143. package/packages/cli/dist/uninstall-cmd.d.ts +12 -2
  144. package/packages/cli/dist/uninstall-cmd.d.ts.map +1 -1
  145. package/packages/cli/dist/uninstall-cmd.js +63 -12
  146. package/packages/cli/dist/uninstall-cmd.js.map +1 -1
  147. package/packages/cli/dist/vault-cmd.d.ts +3 -0
  148. package/packages/cli/dist/vault-cmd.d.ts.map +1 -1
  149. package/packages/cli/dist/vault-cmd.js +26 -5
  150. package/packages/cli/dist/vault-cmd.js.map +1 -1
  151. package/packages/core/dist/.tsbuildinfo +1 -1
  152. package/packages/core/dist/uninstall.d.ts +18 -0
  153. package/packages/core/dist/uninstall.d.ts.map +1 -1
  154. package/packages/core/dist/uninstall.js +47 -0
  155. package/packages/core/dist/uninstall.js.map +1 -1
  156. package/packages/gateway/dist/.tsbuildinfo +1 -1
  157. package/packages/gateway/dist/codex-accounts.d.ts +2 -0
  158. package/packages/gateway/dist/codex-accounts.d.ts.map +1 -1
  159. package/packages/gateway/dist/codex-accounts.js +4 -4
  160. package/packages/gateway/dist/codex-accounts.js.map +1 -1
  161. package/packages/gateway/dist/serve.d.ts.map +1 -1
  162. package/packages/gateway/dist/serve.js +31 -0
  163. package/packages/gateway/dist/serve.js.map +1 -1
  164. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  165. package/packages/gateway/dist/web/api-routes.js +20 -2
  166. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  167. package/packages/gateway/dist/web/cli-tool.d.ts +11 -0
  168. package/packages/gateway/dist/web/cli-tool.d.ts.map +1 -0
  169. package/packages/gateway/dist/web/cli-tool.js +27 -0
  170. package/packages/gateway/dist/web/cli-tool.js.map +1 -0
  171. package/packages/gateway/dist/web/extension.d.ts +14 -0
  172. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  173. package/packages/gateway/dist/web/extension.js +22 -1
  174. package/packages/gateway/dist/web/extension.js.map +1 -1
  175. package/packages/gateway/dist/web/lock.d.ts +12 -0
  176. package/packages/gateway/dist/web/lock.d.ts.map +1 -1
  177. package/packages/gateway/dist/web/lock.js +13 -0
  178. package/packages/gateway/dist/web/lock.js.map +1 -1
  179. package/packages/gateway/dist/web/onboarding.d.ts +41 -6
  180. package/packages/gateway/dist/web/onboarding.d.ts.map +1 -1
  181. package/packages/gateway/dist/web/onboarding.js +91 -15
  182. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  183. package/packages/gateway/dist/web/passphrase-notice.d.ts +64 -0
  184. package/packages/gateway/dist/web/passphrase-notice.d.ts.map +1 -0
  185. package/packages/gateway/dist/web/passphrase-notice.js +112 -0
  186. package/packages/gateway/dist/web/passphrase-notice.js.map +1 -0
  187. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  188. package/packages/gateway/dist/web/server.js +78 -9
  189. package/packages/gateway/dist/web/server.js.map +1 -1
  190. package/packages/gateway/dist/web/take-on.d.ts +28 -3
  191. package/packages/gateway/dist/web/take-on.d.ts.map +1 -1
  192. package/packages/gateway/dist/web/take-on.js +48 -3
  193. package/packages/gateway/dist/web/take-on.js.map +1 -1
  194. package/packages/gateway/dist/web/uninstall.d.ts +36 -0
  195. package/packages/gateway/dist/web/uninstall.d.ts.map +1 -0
  196. package/packages/gateway/dist/web/uninstall.js +116 -0
  197. package/packages/gateway/dist/web/uninstall.js.map +1 -0
  198. package/packages/install/dist/.tsbuildinfo +1 -1
  199. package/packages/install/dist/app-layout.d.ts +4 -0
  200. package/packages/install/dist/app-layout.d.ts.map +1 -1
  201. package/packages/install/dist/app-layout.js +6 -0
  202. package/packages/install/dist/app-layout.js.map +1 -1
  203. package/packages/install/dist/cli-shim.d.ts +76 -0
  204. package/packages/install/dist/cli-shim.d.ts.map +1 -0
  205. package/packages/install/dist/cli-shim.js +215 -0
  206. package/packages/install/dist/cli-shim.js.map +1 -0
  207. package/packages/install/dist/environment.d.ts +90 -1
  208. package/packages/install/dist/environment.d.ts.map +1 -1
  209. package/packages/install/dist/environment.js +216 -3
  210. package/packages/install/dist/environment.js.map +1 -1
  211. package/packages/install/dist/launcher.d.ts.map +1 -1
  212. package/packages/install/dist/launcher.js +140 -5
  213. package/packages/install/dist/launcher.js.map +1 -1
  214. package/packages/install/dist/product-uninstall.d.ts +86 -0
  215. package/packages/install/dist/product-uninstall.d.ts.map +1 -0
  216. package/packages/install/dist/product-uninstall.js +150 -0
  217. package/packages/install/dist/product-uninstall.js.map +1 -0
  218. package/packages/install/dist/supervisor.d.ts +16 -1
  219. package/packages/install/dist/supervisor.d.ts.map +1 -1
  220. package/packages/install/dist/supervisor.js +191 -10
  221. package/packages/install/dist/supervisor.js.map +1 -1
  222. package/packages/install/dist/uninstall.d.ts +20 -1
  223. package/packages/install/dist/uninstall.d.ts.map +1 -1
  224. package/packages/install/dist/uninstall.js +84 -13
  225. package/packages/install/dist/uninstall.js.map +1 -1
  226. package/packages/runtime/dist/.tsbuildinfo +1 -1
  227. package/packages/runtime/dist/codex-oauth.d.ts +6 -0
  228. package/packages/runtime/dist/codex-oauth.d.ts.map +1 -1
  229. package/packages/runtime/dist/codex-oauth.js +15 -0
  230. package/packages/runtime/dist/codex-oauth.js.map +1 -1
  231. package/packages/runtime/dist/openai.d.ts +9 -2
  232. package/packages/runtime/dist/openai.d.ts.map +1 -1
  233. package/packages/runtime/dist/openai.js +117 -16
  234. package/packages/runtime/dist/openai.js.map +1 -1
  235. package/packages/web/dist/assets/index-BkxHX_8g.js +146 -0
  236. package/packages/web/dist/assets/{index-DYfeUW-0.css → index-D2rOodlH.css} +1 -1
  237. package/packages/web/dist/assets/{lottie_light-BFAMYgLA.js → lottie_light-D-P1tn3V.js} +1 -1
  238. package/packages/web/dist/build.json +1 -1
  239. package/packages/web/dist/index.html +2 -2
  240. package/packages/web/dist/precache.json +4 -4
  241. package/packages/web/dist/assets/index-vpc904_b.js +0 -146
@@ -1,14 +1,14 @@
1
1
  import { type Queryable } from '@buddi/core';
2
2
  import type { LiveRegistry } from '../plugins/live.js';
3
3
  import type { StagePhase } from '../plugins/index.js';
4
- import { type MarketDeps, type MarketEntry } from './market.js';
4
+ import { type MarketDeps, type MarketEntry, type MarketIndex } from './market.js';
5
5
  import { type PluginsEngine } from './plugins.js';
6
6
  /** The six outcomes, in the order the chapter draws them. */
7
7
  export declare const TAKE_ON_TILES: readonly ["days", "mail", "money", "voice", "code", "pictures"];
8
8
  export type TakeOnTile = (typeof TAKE_ON_TILES)[number];
9
9
  /**
10
- * The plugins each outcome brings, by their buddi names. Mail and code bring
11
- * none: Mail Triage and the developer tools are built in.
10
+ * The plugins each outcome brings, by their buddi names. Mail brings none:
11
+ * Mail Triage is the built-in email plugin's agent.
12
12
  */
13
13
  export declare const TILE_PLUGINS: Readonly<Record<TakeOnTile, readonly string[]>>;
14
14
  /**
@@ -21,6 +21,31 @@ export declare const TILE_TEAMMATES: Readonly<Partial<Record<TakeOnTile, {
21
21
  name: string;
22
22
  plugin: string;
23
23
  }>>>;
24
+ /**
25
+ * The plugins known to be on npm and listed today, for when withbuddi.com
26
+ * cannot be asked. Developer is not one: it is held back from npm, so a tile
27
+ * that needs it is never offered on a guess.
28
+ */
29
+ export declare const KNOWN_PUBLISHED: readonly string[];
30
+ /** How long the chapter waits for withbuddi.com before offering the known set. */
31
+ export declare const OFFERS_TIMEOUT_MS = 3000;
32
+ /**
33
+ * The tiles chapter 3 may offer: each one whose plugins are all listed, by
34
+ * name or by their `@withbuddi/plugin-<name>` package. Without a list (the
35
+ * market unreachable, nothing kept), the plugins known published today stand
36
+ * in. A tile that brings no plugin (My mail) is always offered.
37
+ */
38
+ export declare function offeredTiles(index: MarketIndex | undefined): TakeOnTile[];
39
+ /**
40
+ * The tiles to offer, read from the market index Browse keeps (an hour's
41
+ * copy in memory and on disk). `cachedOnly` never reaches withbuddi.com; a
42
+ * fetch is given `OFFERS_TIMEOUT_MS` before the known set answers instead, so
43
+ * an offline first run is never held up by the list.
44
+ */
45
+ export declare function readTakeOnOffers(deps: Pick<MarketDeps, 'env' | 'log' | 'fetch' | 'now'>, opts?: {
46
+ cachedOnly?: boolean;
47
+ timeoutMs?: number;
48
+ }): Promise<TakeOnTile[]>;
24
49
  export type TakeOnState = 'fetching' | 'reading' | 'installing' | 'ready' | 'failed';
25
50
  /** One plugin of chapter 3, as the page draws it. */
26
51
  export interface TakeOnProgress {
@@ -1 +1 @@
1
- {"version":3,"file":"take-on.d.ts","sourceRoot":"","sources":["../../src/web/take-on.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"take-on.d.ts","sourceRoot":"","sources":["../../src/web/take-on.ts"],"names":[],"mappings":"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"}
@@ -5,15 +5,15 @@ import * as engine from '../plugins/index.js';
5
5
  /** The six outcomes, in the order the chapter draws them. */
6
6
  export const TAKE_ON_TILES = ['days', 'mail', 'money', 'voice', 'code', 'pictures'];
7
7
  /**
8
- * The plugins each outcome brings, by their buddi names. Mail and code bring
9
- * none: Mail Triage and the developer tools are built in.
8
+ * The plugins each outcome brings, by their buddi names. Mail brings none:
9
+ * Mail Triage is the built-in email plugin's agent.
10
10
  */
11
11
  export const TILE_PLUGINS = {
12
12
  days: ['weather', 'calendar'],
13
13
  mail: [],
14
14
  money: ['finance'],
15
15
  voice: ['speech'],
16
- code: [],
16
+ code: ['developer'],
17
17
  pictures: ['image'],
18
18
  };
19
19
  /**
@@ -31,7 +31,52 @@ const TITLES = {
31
31
  finance: 'Finance',
32
32
  speech: 'Speech',
33
33
  image: 'Image',
34
+ developer: 'Developer',
34
35
  };
36
+ /**
37
+ * The plugins known to be on npm and listed today, for when withbuddi.com
38
+ * cannot be asked. Developer is not one: it is held back from npm, so a tile
39
+ * that needs it is never offered on a guess.
40
+ */
41
+ export const KNOWN_PUBLISHED = ['weather', 'calendar', 'finance', 'speech', 'image'];
42
+ /** How long the chapter waits for withbuddi.com before offering the known set. */
43
+ export const OFFERS_TIMEOUT_MS = 3_000;
44
+ /**
45
+ * The tiles chapter 3 may offer: each one whose plugins are all listed, by
46
+ * name or by their `@withbuddi/plugin-<name>` package. Without a list (the
47
+ * market unreachable, nothing kept), the plugins known published today stand
48
+ * in. A tile that brings no plugin (My mail) is always offered.
49
+ */
50
+ export function offeredTiles(index) {
51
+ const listed = (plugin) => index === undefined
52
+ ? KNOWN_PUBLISHED.includes(plugin)
53
+ : index.plugins.some((entry) => entry.name === plugin || entry.npm === `@withbuddi/plugin-${plugin}`);
54
+ return TAKE_ON_TILES.filter((tile) => TILE_PLUGINS[tile].every(listed));
55
+ }
56
+ /**
57
+ * The tiles to offer, read from the market index Browse keeps (an hour's
58
+ * copy in memory and on disk). `cachedOnly` never reaches withbuddi.com; a
59
+ * fetch is given `OFFERS_TIMEOUT_MS` before the known set answers instead, so
60
+ * an offline first run is never held up by the list.
61
+ */
62
+ export async function readTakeOnOffers(deps, opts = {}) {
63
+ let timer;
64
+ const timeout = new Promise((resolve) => {
65
+ timer = setTimeout(() => resolve(undefined), opts.timeoutMs ?? OFFERS_TIMEOUT_MS);
66
+ timer.unref?.();
67
+ });
68
+ try {
69
+ const loaded = await Promise.race([
70
+ loadMarketIndex(deps, opts.cachedOnly === true ? { cachedOnly: true } : {}).catch(() => undefined),
71
+ timeout,
72
+ ]);
73
+ return offeredTiles(loaded && !('unavailable' in loaded) ? loaded.index : undefined);
74
+ }
75
+ finally {
76
+ if (timer)
77
+ clearTimeout(timer);
78
+ }
79
+ }
35
80
  export class TakeOnRefusal extends Error {
36
81
  status;
37
82
  constructor(status, message) {
@@ -1 +1 @@
1
- {"version":3,"file":"take-on.js","sourceRoot":"","sources":["../../src/web/take-on.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"take-on.js","sourceRoot":"","sources":["../../src/web/take-on.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type RouteReply } from './backups.js';
2
+ export declare const CHECKOUT_UNINSTALL = "A source checkout removes buddi with buddi uninstall in a terminal.";
3
+ /** How long a plan's token is good for: long enough to read it and take a backup. */
4
+ export declare const UNINSTALL_TOKEN_MS: number;
5
+ export interface UninstallDeps {
6
+ env: NodeJS.ProcessEnv;
7
+ now?: () => Date;
8
+ }
9
+ /** One token at a time: a fresh plan replaces the last one. */
10
+ export interface TokenStore {
11
+ mint(now: number): string;
12
+ check(given: unknown, now: number): boolean;
13
+ spend(): void;
14
+ }
15
+ export declare function createTokenStore(ttl?: number): TokenStore;
16
+ /** What goes, and the token that lets the next two calls through. */
17
+ export declare function uninstallPlanRoute(deps: UninstallDeps, tokens: TokenStore): Promise<RouteReply>;
18
+ /** The last backup, moved out with its passphrase file: a job to follow. */
19
+ export declare function uninstallBackupRoute(deps: UninstallDeps, tokens: TokenStore, body: Record<string, unknown>): Promise<RouteReply>;
20
+ /** Where that job is; its report carries the words (only here, never on the backups job route). */
21
+ export declare function uninstallJobRoute(deps: UninstallDeps, id: string): Promise<RouteReply>;
22
+ /**
23
+ * The removal, once the owner said they wrote the words down. The token is
24
+ * spent only when the supervisor accepted (202): a 409 (no backup yet, a
25
+ * restore running) or a 503 leaves it good for the owner's next try.
26
+ */
27
+ export declare function uninstallRoute(deps: UninstallDeps, tokens: TokenStore, body: Record<string, unknown>): Promise<RouteReply>;
28
+ /**
29
+ * A supervisor job as a generic job route (`/api/backups/jobs/:id`,
30
+ * `/api/upgrade/jobs/:id`) sees it. Both forward the same jobs map, so an
31
+ * uninstall's job is not theirs (404: only the local, token-guarded
32
+ * `/api/system/uninstall/jobs/:id` shows it), and no report's `passphrase`
33
+ * ever leaves through them.
34
+ */
35
+ export declare function withoutPassphrase(reply: RouteReply): RouteReply;
36
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/web/uninstall.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGjE,eAAO,MAAM,kBAAkB,wEAAwE,CAAC;AAGxG,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAqB,GAAG,UAAU,CAcrE;AAaD,qEAAqE;AACrE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAMrG;AAED,4EAA4E;AAC5E,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAKtI;AAED,mGAAmG;AACnG,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQ5F;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAShI;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAM/D"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Settings → System's "Remove buddi from this Mac", as the dashboard asks for it.
3
+ *
4
+ * The supervisor does the work (packages/install/src/product-uninstall.ts):
5
+ * this module forwards, and adds the two guards a page needs on top of the
6
+ * session, Origin and CSRF gate every write already has:
7
+ *
8
+ * - **this computer only**: a session signed in from the tailnet or a public
9
+ * hostname is refused (server.ts checks `session.via === 'local'`);
10
+ * - **a confirmation token**: `GET /api/system/uninstall` mints one with the
11
+ * plan, and the backup and the removal must bring it back. A stray POST, a
12
+ * replayed one or one from a tab that never showed the plan removes nothing.
13
+ *
14
+ * A checkout has no supervisor and nothing here to offer: it uninstalls with
15
+ * `buddi uninstall` in a terminal.
16
+ */
17
+ import { randomBytes, timingSafeEqual } from 'node:crypto';
18
+ import { supervisorSocket } from './backups.js';
19
+ import { supervisorCall } from './service.js';
20
+ export const CHECKOUT_UNINSTALL = 'A source checkout removes buddi with buddi uninstall in a terminal.';
21
+ const NO_SUPERVISOR = 'The supervisor is not answering on its control socket. Run buddi in a terminal.';
22
+ /** How long a plan's token is good for: long enough to read it and take a backup. */
23
+ export const UNINSTALL_TOKEN_MS = 30 * 60_000;
24
+ export function createTokenStore(ttl = UNINSTALL_TOKEN_MS) {
25
+ let current;
26
+ return {
27
+ mint(now) {
28
+ current = { value: randomBytes(24).toString('base64url'), until: now + ttl };
29
+ return current.value;
30
+ },
31
+ check(given, now) {
32
+ if (!current || typeof given !== 'string' || now > current.until)
33
+ return false;
34
+ const a = Buffer.from(given), b = Buffer.from(current.value);
35
+ return a.length === b.length && timingSafeEqual(a, b);
36
+ },
37
+ spend() { current = undefined; },
38
+ };
39
+ }
40
+ async function forward(socket, route, method, body) {
41
+ try {
42
+ const reply = await supervisorCall(socket, route, method, body, 30_000);
43
+ return { status: reply.status, body: reply.body };
44
+ }
45
+ catch {
46
+ return { status: 503, body: { error: NO_SUPERVISOR } };
47
+ }
48
+ }
49
+ const REFUSED = { status: 403, body: { error: 'That confirmation has expired. Open Remove buddi again.' } };
50
+ /** What goes, and the token that lets the next two calls through. */
51
+ export async function uninstallPlanRoute(deps, tokens) {
52
+ const socket = supervisorSocket(deps.env);
53
+ if (!socket)
54
+ return { status: 200, body: { available: false, reason: CHECKOUT_UNINSTALL } };
55
+ const plan = await forward(socket, '/uninstall', 'GET');
56
+ if (plan.status !== 200)
57
+ return plan;
58
+ return { status: 200, body: { available: true, ...plan.body, token: tokens.mint((deps.now ?? (() => new Date()))().getTime()) } };
59
+ }
60
+ /** The last backup, moved out with its passphrase file: a job to follow. */
61
+ export async function uninstallBackupRoute(deps, tokens, body) {
62
+ const socket = supervisorSocket(deps.env);
63
+ if (!socket)
64
+ return { status: 409, body: { error: CHECKOUT_UNINSTALL } };
65
+ if (!tokens.check(body.token, (deps.now ?? (() => new Date()))().getTime()))
66
+ return REFUSED;
67
+ return forward(socket, '/uninstall/backup', 'POST', {});
68
+ }
69
+ /** Where that job is; its report carries the words (only here, never on the backups job route). */
70
+ export async function uninstallJobRoute(deps, id) {
71
+ const socket = supervisorSocket(deps.env);
72
+ if (!socket)
73
+ return { status: 409, body: { error: CHECKOUT_UNINSTALL } };
74
+ const reply = await forward(socket, `/jobs/${encodeURIComponent(id)}`, 'GET');
75
+ if (reply.status !== 200 || reply.body?.kind !== 'uninstall-backup') {
76
+ return reply.status === 200 ? { status: 404, body: { error: 'no such job' } } : reply;
77
+ }
78
+ return reply;
79
+ }
80
+ /**
81
+ * The removal, once the owner said they wrote the words down. The token is
82
+ * spent only when the supervisor accepted (202): a 409 (no backup yet, a
83
+ * restore running) or a 503 leaves it good for the owner's next try.
84
+ */
85
+ export async function uninstallRoute(deps, tokens, body) {
86
+ const socket = supervisorSocket(deps.env);
87
+ if (!socket)
88
+ return { status: 409, body: { error: CHECKOUT_UNINSTALL } };
89
+ if (!tokens.check(body.token, (deps.now ?? (() => new Date()))().getTime()))
90
+ return REFUSED;
91
+ if (body.wroteItDown !== true)
92
+ return { status: 400, body: { error: 'Tick "I wrote it down" first: the passphrase is the only thing that opens your backups.' } };
93
+ if (body.keepData !== undefined && typeof body.keepData !== 'boolean')
94
+ return { status: 400, body: { error: '"keepData" must be true or false.' } };
95
+ const answer = await forward(socket, '/uninstall', 'POST', { keepData: body.keepData === true });
96
+ if (answer.status === 202)
97
+ tokens.spend();
98
+ return answer;
99
+ }
100
+ /**
101
+ * A supervisor job as a generic job route (`/api/backups/jobs/:id`,
102
+ * `/api/upgrade/jobs/:id`) sees it. Both forward the same jobs map, so an
103
+ * uninstall's job is not theirs (404: only the local, token-guarded
104
+ * `/api/system/uninstall/jobs/:id` shows it), and no report's `passphrase`
105
+ * ever leaves through them.
106
+ */
107
+ export function withoutPassphrase(reply) {
108
+ const body = reply.body;
109
+ if (reply.status === 200 && body?.kind === 'uninstall-backup')
110
+ return { status: 404, body: { error: 'no such job' } };
111
+ if (reply.status !== 200 || !body?.report || body.report.passphrase === undefined)
112
+ return reply;
113
+ const { passphrase: _gone, ...report } = body.report;
114
+ return { status: 200, body: { ...body, report } };
115
+ }
116
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/web/uninstall.ts"],"names":[],"mappings":"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"}