vibes-diy 5.0.1 → 5.3.0

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.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # ✨ Vibes DIY — make apps with your friends, run the front counter
5
5
 
6
- Software is getting weird again. Describe what you want and get a real, live app — fun, done, and alive. [Try it now](https://vibes.diy/) or [fork on GitHub](https://github.com/VibesDIY/vibes.diy).
6
+ Software is getting weird again. Describe what you want and get a real, live app — fun, done, and alive. [Try it now](https://vibes.diy/).
7
7
 
8
8
  Make apps with your friends — or run the front counter. So easy even AI can do it. Describe your app in plain words, it builds instantly, and you keep changing it just by talking to it. Share the link and your friends — or your customers — join right away. No setup, no "wait, let me send you the invite."
9
9
 
@@ -27,17 +27,17 @@ Private by default — or open to the world. You choose. Keep an app to the peop
27
27
 
28
28
  ## Open source
29
29
 
30
- The whole platform is open source under Apache 2.0. Read the code, open an issue, send a PR.
30
+ The `vibes-diy` CLI, the `use-vibes` SDK, and the system prompts behind the generator are open source under Apache 2.0 — published on npm, with their public home at [VibesDIY/use-vibes](https://github.com/VibesDIY/use-vibes). Read the code, open an issue, send a PR.
31
31
 
32
32
  ## Quick Start
33
33
 
34
34
  1. [Try the demo](https://vibes.diy/) — no setup required.
35
- 2. Or hack on the code: clone the repo, `pnpm install`, and `pnpm build` the build, lint, and test suite work from a fresh clone with no secrets. The full web app runs locally too: `pnpm dev:setup` generates the needed dev environment (no team secrets required); the [Contributing Guide](CONTRIBUTING.md#running-the-web-app-locally) walks the whole path.
35
+ 2. Or build from the terminal: `npx vibes-diy login`, then `npx vibes-diy generate "a scoreboard for our pickup basketball games"`. The [CLI handbook](https://good.vibes.diy/docs/cli) covers the rest.
36
36
 
37
37
  ## Community
38
38
 
39
39
  We are committed to providing a welcoming and inclusive environment for all contributors. Please review our [Code of Conduct](CODE_OF_CONDUCT.md) before participating.
40
40
 
41
- Interested in contributing? Check out our [Contributing Guide](CONTRIBUTING.md) to get started.
41
+ Bug reports and feature requests are welcome at [VibesDIY/use-vibes](https://github.com/VibesDIY/use-vibes/issues).
42
42
 
43
43
  Find us on [Discord](https://discord.gg/vnpWycj4Ta), [Substack](https://vibesdiy.substack.com/), [YouTube](https://www.youtube.com/@VibesDIY), and [Bluesky](https://bsky.app/profile/vibes.diy).
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { readFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ const here = dirname(fileURLToPath(import.meta.url));
6
+ const REFERENCE_MD = join(here, "..", "..", "landing-pages", "src", "docs", "cli", "reference.md");
7
+ async function loadDump() {
8
+ return import(join(here, "..", "scripts", "dump-cli-docs.mjs"));
9
+ }
10
+ describe("published CLI reference freshness", () => {
11
+ it("committed root section matches the live root --help", async () => {
12
+ const { cliHelp } = await loadDump();
13
+ const liveRoot = cliHelp([]);
14
+ const committed = readFileSync(REFERENCE_MD, "utf8");
15
+ const marker = "## `vibes-diy`\n\n```text\n";
16
+ const start = committed.indexOf(marker);
17
+ expect(start, `root section marker missing in ${REFERENCE_MD}`).toBeGreaterThan(-1);
18
+ const rest = committed.slice(start + marker.length);
19
+ const committedRoot = rest.slice(0, rest.indexOf("\n```"));
20
+ expect(committedRoot.trim(), "CLI reference is stale — regenerate with: pnpm --dir vibes-diy run docs:cli").toBe(liveRoot.trim());
21
+ }, 120000);
22
+ it("every live command has a section in the committed reference", async () => {
23
+ const { cliHelp, parseSubcommands } = await loadDump();
24
+ const commands = parseSubcommands(cliHelp([]));
25
+ expect(commands.length).toBeGreaterThan(10);
26
+ const committed = readFileSync(REFERENCE_MD, "utf8");
27
+ for (const cmd of commands) {
28
+ expect(committed, `missing section for '${cmd}' — regenerate with: pnpm --dir vibes-diy run docs:cli`).toContain(`## \`vibes-diy ${cmd}\``);
29
+ }
30
+ }, 120000);
31
+ });
32
+ //# sourceMappingURL=cli-docs-freshness.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-docs-freshness.test.js","sourceRoot":"","sources":["../../jsr/cli/cli-docs-freshness.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASzC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAEnG,KAAK,UAAU,QAAQ;IACrB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAW,OAAO,CAAC,EAAE,CAAC,CAAC;QAErC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,EAAE,kCAAkC,YAAY,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,6EAA6E,CAAC,CAAC,IAAI,CAC9G,QAAQ,CAAC,IAAI,EAAE,CAChB,CAAC;IACJ,CAAC,EAAE,MAAM,CAAC,CAAC;IAEX,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAa,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,SAAS,EAAE,wBAAwB,GAAG,wDAAwD,CAAC,CAAC,SAAS,CAC9G,kBAAkB,GAAG,IAAI,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC,CAAC,CAAC"}
@@ -2,101 +2,110 @@ import { isCmdProgress, sendMsg, sendProgress, type CmdProgress, type CmdTSMsg,
2
2
  export type { CmdTSMsg, WrapCmdTSMsg, CmdProgress };
3
3
  export { isCmdProgress, sendMsg, sendProgress };
4
4
  export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
5
- type: "core-cli.device-id-register";
6
- commonName: string;
7
- organization: string;
8
- locality: string;
9
- state: string;
10
- country: string;
11
- caUrl: string;
12
- port: string;
13
- timeout: string;
14
- forceRenew: boolean;
15
- }, {
16
- type: "core-cli.res-device-id-register";
17
- output: string;
18
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
19
- type: "use-vibes.cli.themes";
5
+ type: "vibes-diy.cli.system";
20
6
  }, {
21
- type: "use-vibes.cli.res-themes-list";
22
- themes: {
23
- slug: string;
24
- name: string;
25
- }[];
26
- } | {
27
- type: "use-vibes.cli.res-theme-content";
28
- slug: string;
29
- content: string;
7
+ type: "vibes-diy.cli.res-system";
8
+ systemPrompt: string;
30
9
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
31
- type: "vibes-diy.cli.put-asset";
32
- file: string;
10
+ type: "vibes-diy.cli.generate";
11
+ prompt: string;
33
12
  appSlug: string;
34
13
  ownerHandle: string;
14
+ instantJoin?: boolean | undefined;
15
+ verbose: boolean;
35
16
  apiUrl: string;
36
- mimeType: string;
37
- verifyFetch: boolean;
17
+ dryRun: boolean;
18
+ transcript: boolean;
19
+ focusPath?: string | undefined;
20
+ model?: string | undefined;
38
21
  }, {
39
- type: "vibes-diy.cli.res-put-asset";
40
- cid: string;
41
- getURL: string;
42
- size: number;
43
- uploadId: string;
44
- verified?: boolean | undefined;
45
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
46
- type: "vibes-diy.cli.db.get";
47
- apiUrl: string;
48
22
  appSlug: string;
49
23
  ownerHandle: string;
50
- dbName: string;
51
- docId: string;
52
- }, {
53
- type: "vibes-diy.cli.db.get-res";
54
- doc: {
55
- [x: string]: unknown;
24
+ mode: "dev" | "production";
25
+ fsId: string;
26
+ type: "vibes.diy.res-ensure-app-slug";
27
+ env: Record<string, string>;
28
+ fileSystem: {
29
+ fileName: string;
30
+ mimeType: string;
31
+ assetId: string;
32
+ assetURI: string;
33
+ transform?: {
34
+ type: "jsx-to-js";
35
+ transformedAssetId: string;
36
+ } | {
37
+ type: "imports";
38
+ importMapAssetId: string;
39
+ } | {
40
+ type: "import-map";
41
+ fromAssetIds: string[];
42
+ } | {
43
+ type: "transformed";
44
+ action: "jsx-to-js";
45
+ transformedAssetId: string;
46
+ } | undefined;
47
+ entryPoint?: boolean | undefined;
48
+ size: number;
49
+ }[];
50
+ } | {
51
+ type: "vibes.diy.res-error";
52
+ error: {
53
+ message: string;
54
+ code: "require-login";
55
+ };
56
+ } | {
57
+ type: "vibes.diy.res-error";
58
+ error: {
59
+ message: string;
60
+ code: "user-slug-invalid";
61
+ };
62
+ } | {
63
+ type: "vibes.diy.res-error";
64
+ error: {
65
+ message: string;
66
+ code: "app-slug-invalid";
56
67
  };
68
+ } | {
69
+ type: "vibes.diy.res-error";
70
+ error: {
71
+ message: string;
72
+ code: "max-app-slugs-reached";
73
+ };
74
+ } | {
75
+ type: "vibes-diy.cli.res-generate";
76
+ appSlug: string;
77
+ ownerHandle: string;
78
+ url: string;
79
+ directory: string;
80
+ dryRun?: boolean | undefined;
57
81
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
58
- type: "vibes-diy.cli.db.subscribe";
82
+ type: "vibes-diy.cli.db.put";
59
83
  apiUrl: string;
60
84
  appSlug: string;
61
85
  ownerHandle: string;
62
86
  dbName: string;
63
- }, never> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
64
- type: "vibes-diy.cli.app-chats";
65
- appSlug: string;
66
- ownerHandle: string;
67
- chatId?: string | undefined;
68
- apiUrl: string;
87
+ docJson: string;
88
+ docId: string;
89
+ admin: boolean;
69
90
  }, {
70
- type: "vibes-diy.cli.res-app-chats-list";
71
- items: {
72
- chatId: string;
73
- appSlug: string;
74
- ownerHandle: string;
75
- created: string;
76
- userHandle?: string | undefined;
77
- }[];
78
- } | {
79
- type: "vibes-diy.cli.res-app-chats-detail";
80
- chatId: string;
81
- ownerHandle?: string | undefined;
82
- appSlug?: string | undefined;
83
- output: string;
91
+ type: "vibes-diy.cli.db.put-res";
92
+ id: string;
93
+ ok: true;
84
94
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
85
- type: "vibes-diy.cli.pull";
95
+ type: "vibes-diy.cli.versions";
86
96
  appSlug: string;
87
97
  ownerHandle: string;
88
- dir: string;
89
98
  apiUrl: string;
90
- fsId?: string | undefined;
91
- published: boolean;
92
99
  }, {
93
- type: "vibes-diy.cli.res-pull";
100
+ type: "vibes-diy.cli.res-versions";
94
101
  appSlug: string;
95
102
  ownerHandle: string;
96
- directory: string;
97
- files: {
98
- name: string;
99
- size: number;
103
+ items: {
104
+ fsId: string;
105
+ mode: "dev" | "production";
106
+ releaseSeq: number;
107
+ created: string;
108
+ published: boolean;
100
109
  }[];
101
110
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
102
111
  type: "vibes-diy.cli.user-settings";
@@ -199,6 +208,9 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
199
208
  dmReceived?: boolean | undefined;
200
209
  memberJoined?: boolean | undefined;
201
210
  emailDigest?: boolean | undefined;
211
+ followRequest?: boolean | undefined;
212
+ followerAdded?: boolean | undefined;
213
+ followApproved?: boolean | undefined;
202
214
  } | {
203
215
  type: "egressStatus";
204
216
  status: "blessed" | "blocked";
@@ -227,10 +239,17 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
227
239
  name: string;
228
240
  content: string;
229
241
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
230
- type: "vibes-diy.cli.system";
242
+ type: "use-vibes.cli.themes";
231
243
  }, {
232
- type: "vibes-diy.cli.res-system";
233
- systemPrompt: string;
244
+ type: "use-vibes.cli.res-themes-list";
245
+ themes: {
246
+ slug: string;
247
+ name: string;
248
+ }[];
249
+ } | {
250
+ type: "use-vibes.cli.res-theme-content";
251
+ slug: string;
252
+ content: string;
234
253
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
235
254
  type: "vibes-diy.cli.push";
236
255
  mode: string;
@@ -295,76 +314,41 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
295
314
  code: "max-app-slugs-reached";
296
315
  };
297
316
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
298
- type: "vibes-diy.cli.generate";
299
- prompt: string;
317
+ type: "vibes-diy.cli.put-asset";
318
+ file: string;
300
319
  appSlug: string;
301
320
  ownerHandle: string;
302
- instantJoin?: boolean | undefined;
303
- verbose: boolean;
304
321
  apiUrl: string;
305
- dryRun: boolean;
306
- transcript: boolean;
307
- focusPath?: string | undefined;
308
- model?: string | undefined;
322
+ mimeType: string;
323
+ verifyFetch: boolean;
309
324
  }, {
325
+ type: "vibes-diy.cli.res-put-asset";
326
+ cid: string;
327
+ getURL: string;
328
+ size: number;
329
+ uploadId: string;
330
+ verified?: boolean | undefined;
331
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
332
+ type: "vibes-diy.cli.app-chats";
310
333
  appSlug: string;
311
334
  ownerHandle: string;
312
- mode: "dev" | "production";
313
- fsId: string;
314
- type: "vibes.diy.res-ensure-app-slug";
315
- env: Record<string, string>;
316
- fileSystem: {
317
- fileName: string;
318
- mimeType: string;
319
- assetId: string;
320
- assetURI: string;
321
- transform?: {
322
- type: "jsx-to-js";
323
- transformedAssetId: string;
324
- } | {
325
- type: "imports";
326
- importMapAssetId: string;
327
- } | {
328
- type: "import-map";
329
- fromAssetIds: string[];
330
- } | {
331
- type: "transformed";
332
- action: "jsx-to-js";
333
- transformedAssetId: string;
334
- } | undefined;
335
- entryPoint?: boolean | undefined;
336
- size: number;
335
+ chatId?: string | undefined;
336
+ apiUrl: string;
337
+ }, {
338
+ type: "vibes-diy.cli.res-app-chats-list";
339
+ items: {
340
+ chatId: string;
341
+ appSlug: string;
342
+ ownerHandle: string;
343
+ created: string;
344
+ userHandle?: string | undefined;
337
345
  }[];
338
346
  } | {
339
- type: "vibes.diy.res-error";
340
- error: {
341
- message: string;
342
- code: "require-login";
343
- };
344
- } | {
345
- type: "vibes.diy.res-error";
346
- error: {
347
- message: string;
348
- code: "user-slug-invalid";
349
- };
350
- } | {
351
- type: "vibes.diy.res-error";
352
- error: {
353
- message: string;
354
- code: "app-slug-invalid";
355
- };
356
- } | {
357
- type: "vibes.diy.res-error";
358
- error: {
359
- message: string;
360
- code: "max-app-slugs-reached";
361
- };
362
- } | {
363
- type: "vibes-diy.cli.res-generate";
364
- appSlug: string;
365
- ownerHandle: string;
366
- url: string;
367
- directory: string;
347
+ type: "vibes-diy.cli.res-app-chats-detail";
348
+ chatId: string;
349
+ ownerHandle?: string | undefined;
350
+ appSlug?: string | undefined;
351
+ output: string;
368
352
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
369
353
  type: "vibes-diy.cli.codegen-log";
370
354
  appSlug: string;
@@ -488,20 +472,21 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
488
472
  unpublishedAt?: string | undefined;
489
473
  }[];
490
474
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
491
- type: "vibes-diy.cli.versions";
475
+ type: "vibes-diy.cli.pull";
492
476
  appSlug: string;
493
477
  ownerHandle: string;
478
+ dir: string;
494
479
  apiUrl: string;
480
+ fsId?: string | undefined;
481
+ published: boolean;
495
482
  }, {
496
- type: "vibes-diy.cli.res-versions";
483
+ type: "vibes-diy.cli.res-pull";
497
484
  appSlug: string;
498
485
  ownerHandle: string;
499
- items: {
500
- fsId: string;
501
- mode: "dev" | "production";
502
- releaseSeq: number;
503
- created: string;
504
- published: boolean;
486
+ directory: string;
487
+ files: {
488
+ name: string;
489
+ size: number;
505
490
  }[];
506
491
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
507
492
  type: "vibes-diy.cli.set-unpublish";
@@ -545,6 +530,39 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
545
530
  updatedAt: number;
546
531
  setBy?: string | undefined;
547
532
  }[];
533
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
534
+ type: "vibes-diy.cli.developer";
535
+ apiUrl: string;
536
+ appSlug: string;
537
+ ownerHandle: string;
538
+ op: "add" | "ls" | "rm";
539
+ devHandle?: string | undefined;
540
+ }, {
541
+ type: "vibes-diy.cli.developer-res";
542
+ op: "add" | "ls" | "rm";
543
+ ownerHandle: string;
544
+ appSlug: string;
545
+ items: {
546
+ devHandle: string;
547
+ devUserId?: string | undefined;
548
+ state: "active" | "revoked";
549
+ updated: string;
550
+ created?: string | undefined;
551
+ }[];
552
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
553
+ type: "core-cli.device-id-register";
554
+ commonName: string;
555
+ organization: string;
556
+ locality: string;
557
+ state: string;
558
+ country: string;
559
+ caUrl: string;
560
+ port: string;
561
+ timeout: string;
562
+ forceRenew: boolean;
563
+ }, {
564
+ type: "core-cli.res-device-id-register";
565
+ output: string;
548
566
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
549
567
  type: "vibes-diy.cli.db.list";
550
568
  apiUrl: string;
@@ -554,18 +572,17 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
554
572
  type: "vibes-diy.cli.db.list-res";
555
573
  dbNames: string[];
556
574
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
557
- type: "vibes-diy.cli.db.put";
575
+ type: "vibes-diy.cli.db.get";
558
576
  apiUrl: string;
559
577
  appSlug: string;
560
578
  ownerHandle: string;
561
579
  dbName: string;
562
- docJson: string;
563
580
  docId: string;
564
- admin: boolean;
565
581
  }, {
566
- type: "vibes-diy.cli.db.put-res";
567
- id: string;
568
- ok: true;
582
+ type: "vibes-diy.cli.db.get-res";
583
+ doc: {
584
+ [x: string]: unknown;
585
+ };
569
586
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
570
587
  type: "vibes-diy.cli.db.del";
571
588
  apiUrl: string;
@@ -595,5 +612,11 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
595
612
  docs: {
596
613
  [x: string]: unknown;
597
614
  }[];
598
- }>)[];
615
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
616
+ type: "vibes-diy.cli.db.subscribe";
617
+ apiUrl: string;
618
+ appSlug: string;
619
+ ownerHandle: string;
620
+ dbName: string;
621
+ }, never>)[];
599
622
  export declare function cmdTsEvento(): import("@adviser/cement").Evento;
package/cli/cmd-evento.js CHANGED
@@ -14,6 +14,7 @@ import { pullEvento } from "./cmds/pull-cmd.js";
14
14
  import { versionsEvento } from "./cmds/versions-cmd.js";
15
15
  import { setUnpublishEvento, publishEvento } from "./cmds/unpublish-cmd.js";
16
16
  import { secretsEvento } from "./cmds/secrets/secrets-cmd.js";
17
+ import { developerEvento } from "./cmds/developer/developer-cmd.js";
17
18
  import { deviceIdRegisterEvento } from "@vibes.diy/identity/node";
18
19
  import { isCmdProgress, makeCmdTsEvento, sendMsg, sendProgress, } from "./cli-kit.js";
19
20
  export { isCmdProgress, sendMsg, sendProgress };
@@ -35,6 +36,7 @@ export function cliEventoHandlers() {
35
36
  setUnpublishEvento,
36
37
  publishEvento,
37
38
  secretsEvento,
39
+ developerEvento,
38
40
  deviceIdRegisterEvento,
39
41
  dbListEvento,
40
42
  dbGetEvento,
@@ -1 +1 @@
1
- {"version":3,"file":"cmd-evento.js","sourceRoot":"","sources":["../../jsr/cli/cmd-evento.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3H,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,aAAa,EACb,eAAe,EACf,OAAO,EACP,YAAY,GAIb,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAOhD,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,kBAAkB;QAClB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,cAAc;QACd,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,UAAU;QACV,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,sBAAsB;QACtB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAW;QACX,aAAa;QACb,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"cmd-evento.js","sourceRoot":"","sources":["../../jsr/cli/cmd-evento.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3H,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,aAAa,EACb,eAAe,EACf,OAAO,EACP,YAAY,GAIb,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAOhD,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,kBAAkB;QAClB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,cAAc;QACd,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,UAAU;QACV,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,eAAe;QACf,sBAAsB;QACtB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAW;QACX,aAAa;QACb,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC9C,CAAC"}
@@ -28,6 +28,7 @@ export function dbCommonArgs() {
28
28
  }),
29
29
  ownerHandleDeprecated: option({
30
30
  long: "user-slug",
31
+ description: "[deprecated] use --handle or --vibe instead",
31
32
  type: string,
32
33
  defaultValue: () => "",
33
34
  defaultValueIsSerializable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../jsr/cli/cmds/db/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../jsr/cli/cmds/db/shared.ts"],"names":[],"mappings":"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"}