vibes-diy 14.3.78 → 14.3.80

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.
@@ -2,243 +2,119 @@ 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: "vibes-diy.cli.user-settings";
6
- apiUrl: string;
7
- setDefaultHandle?: string | undefined;
8
- }, {
9
- type: "vibes.diy.res-ensure-user-settings";
10
- userId: string;
11
- settings: ({
12
- type: "sharing";
13
- grants: {
14
- grant: "allow" | "deny";
15
- appSlug: string;
16
- ownerHandle: string;
17
- dbName: string;
18
- }[];
19
- } | {
20
- type: "modelDefaults";
21
- codegen?: {
22
- model?: {
23
- id: string;
24
- name: string;
25
- description: string;
26
- featured?: boolean | undefined;
27
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
28
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
29
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
30
- imageInput?: boolean | undefined;
31
- } | undefined;
32
- apiKey?: string | undefined;
33
- } | undefined;
34
- agent?: {
35
- model?: {
36
- id: string;
37
- name: string;
38
- description: string;
39
- featured?: boolean | undefined;
40
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
41
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
42
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
43
- imageInput?: boolean | undefined;
44
- } | undefined;
45
- apiKey?: string | undefined;
46
- } | undefined;
47
- subagent?: {
48
- model?: {
49
- id: string;
50
- name: string;
51
- description: string;
52
- featured?: boolean | undefined;
53
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
54
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
55
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
56
- imageInput?: boolean | undefined;
57
- } | undefined;
58
- apiKey?: string | undefined;
59
- } | undefined;
60
- runtime?: {
61
- model?: {
62
- id: string;
63
- name: string;
64
- description: string;
65
- featured?: boolean | undefined;
66
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
67
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
68
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
69
- imageInput?: boolean | undefined;
70
- } | undefined;
71
- apiKey?: string | undefined;
72
- } | undefined;
73
- img?: {
74
- model?: {
75
- id: string;
76
- name: string;
77
- description: string;
78
- featured?: boolean | undefined;
79
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
80
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
81
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
82
- imageInput?: boolean | undefined;
83
- } | undefined;
84
- apiKey?: string | undefined;
85
- } | undefined;
86
- chat?: {
87
- model?: {
88
- id: string;
89
- name: string;
90
- description: string;
91
- featured?: boolean | undefined;
92
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
93
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
94
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
95
- imageInput?: boolean | undefined;
96
- } | undefined;
97
- apiKey?: string | undefined;
98
- } | undefined;
99
- app?: {
100
- model?: {
101
- id: string;
102
- name: string;
103
- description: string;
104
- featured?: boolean | undefined;
105
- preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
106
- fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
107
- supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
108
- imageInput?: boolean | undefined;
109
- } | undefined;
110
- apiKey?: string | undefined;
111
- } | undefined;
112
- } | {
113
- type: "defaultHandle";
114
- ownerHandle: string;
115
- } | {
116
- type: "profile";
117
- avatarCid?: string | undefined;
118
- displayName?: string | undefined;
119
- codeMode?: boolean | undefined;
120
- } | {
121
- type: "notifications";
122
- buildComplete?: boolean | undefined;
123
- buildFailed?: boolean | undefined;
124
- vibePublished?: boolean | undefined;
125
- commentPosted?: boolean | undefined;
126
- requestApproved?: boolean | undefined;
127
- requestRevoked?: boolean | undefined;
128
- vibeRemixed?: boolean | undefined;
129
- dmReceived?: boolean | undefined;
130
- memberJoined?: boolean | undefined;
131
- accessRequested?: boolean | undefined;
132
- emailDigest?: boolean | undefined;
133
- retentionEmail?: boolean | undefined;
134
- followRequest?: boolean | undefined;
135
- followerAdded?: boolean | undefined;
136
- followApproved?: boolean | undefined;
137
- appMessage?: boolean | undefined;
138
- connectionExpiring?: boolean | undefined;
139
- assetBlocked?: boolean | undefined;
140
- assetCheckFailed?: boolean | undefined;
141
- emailInstant?: boolean | undefined;
142
- mutes?: {
143
- vibes?: string[] | undefined;
144
- handles?: string[] | undefined;
145
- } | undefined;
146
- vibeTypes?: {
147
- vibe: string;
148
- buildComplete?: boolean | undefined;
149
- buildFailed?: boolean | undefined;
150
- vibePublished?: boolean | undefined;
151
- commentPosted?: boolean | undefined;
152
- requestApproved?: boolean | undefined;
153
- requestRevoked?: boolean | undefined;
154
- vibeRemixed?: boolean | undefined;
155
- memberJoined?: boolean | undefined;
156
- accessRequested?: boolean | undefined;
157
- appMessage?: boolean | undefined;
158
- assetBlocked?: boolean | undefined;
159
- assetCheckFailed?: boolean | undefined;
160
- }[] | undefined;
161
- } | {
162
- type: "egressStatus";
163
- status: "blessed" | "blocked";
164
- updatedAt: string;
165
- setBy?: string | undefined;
166
- } | {
167
- type: "contactEmail";
168
- email: string;
169
- updatedAt: string;
170
- verified?: boolean | undefined;
171
- } | {
172
- type: "geoCountry";
173
- country: string;
174
- updatedAt: string;
175
- } | {
176
- type: "retentionDrip";
177
- sent: {
178
- [x: string]: string;
179
- };
180
- updatedAt: string;
181
- } | {
182
- type: "onboarding";
183
- completedAt: string;
184
- } | {
185
- type: "kyc";
186
- cardAt?: string | undefined;
187
- } | {
188
- type: "metaClickId";
189
- fbc: string;
190
- clickedAt: number;
191
- updatedAt: string;
192
- } | {
193
- type: "lastVisit";
194
- day: string;
195
- } | {
196
- type: "goldDripPosted";
197
- postedAt: string;
198
- ownerHandle: string;
199
- appSlug: string;
200
- } | {
201
- type: "defaultHandle";
202
- ownerHandle: string;
203
- })[];
204
- updated: string;
205
- created: string;
206
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
207
- type: "vibes-diy.cli.skills";
5
+ type: "use-vibes.cli.themes";
208
6
  }, {
209
- type: "vibes-diy.cli.res-skills-list";
210
- skills: {
7
+ type: "use-vibes.cli.res-themes-list";
8
+ themes: {
9
+ slug: string;
211
10
  name: string;
212
- description: string;
213
11
  }[];
214
12
  } | {
215
- type: "vibes-diy.cli.res-skill-content";
216
- name: string;
13
+ type: "use-vibes.cli.res-theme-content";
14
+ slug: string;
217
15
  content: string;
218
16
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
219
- type: "vibes-diy.cli.claim-handle";
17
+ type: "vibes-diy.cli.generate";
18
+ prompt: string;
19
+ appSlug: string;
20
+ ownerHandle: string;
21
+ instantJoin?: boolean | undefined;
22
+ noAccessFn?: boolean | undefined;
23
+ privateMode?: boolean | undefined;
24
+ verbose: boolean;
220
25
  apiUrl: string;
221
- ownerHandle?: string | undefined;
26
+ focusPath?: string | undefined;
27
+ model?: string | undefined;
28
+ builderModel?: string | undefined;
29
+ apiKey?: string | undefined;
30
+ variety?: string | undefined;
31
+ record?: string | undefined;
32
+ style?: string | undefined;
222
33
  }, {
223
- type: "vibes-diy.cli.res-claim-handle";
224
- op: "claim" | "suggest";
225
- ownerHandle?: string | undefined;
226
- defaultHandleSet?: boolean | undefined;
227
- suggestions: string[];
228
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
229
- type: "vibes-diy.cli.db.get";
230
- apiUrl: string;
231
34
  appSlug: string;
232
35
  ownerHandle: string;
233
- dbName: string;
234
- docId: string;
235
- admin: boolean;
236
- actingHandle: string;
237
- }, {
238
- type: "vibes-diy.cli.db.get-res";
239
- doc: {
240
- [x: string]: unknown;
241
- };
36
+ mode: "dev" | "production";
37
+ fsId: string;
38
+ type: "vibes.diy.res-ensure-app-slug";
39
+ env: Record<string, string>;
40
+ fileSystem: {
41
+ fileName: string;
42
+ mimeType: string;
43
+ assetId: string;
44
+ assetURI: string;
45
+ transform?: {
46
+ type: "jsx-to-js";
47
+ transformedAssetId: string;
48
+ } | {
49
+ type: "imports";
50
+ importMapAssetId: string;
51
+ } | {
52
+ type: "import-map";
53
+ fromAssetIds: string[];
54
+ } | {
55
+ type: "transformed";
56
+ action: "jsx-to-js";
57
+ transformedAssetId: string;
58
+ } | {
59
+ type: "tailwind-css";
60
+ } | undefined;
61
+ entryPoint?: boolean | undefined;
62
+ size: number;
63
+ kind?: "asset" | undefined;
64
+ uploadId?: string | undefined;
65
+ }[];
66
+ } | {
67
+ type: "vibes.diy.res-error";
68
+ error: {
69
+ message: string;
70
+ code: "require-login";
71
+ };
72
+ } | {
73
+ type: "vibes.diy.res-error";
74
+ error: {
75
+ message: string;
76
+ code: "user-slug-invalid";
77
+ };
78
+ } | {
79
+ type: "vibes.diy.res-error";
80
+ error: {
81
+ message: string;
82
+ code: "app-slug-invalid";
83
+ };
84
+ } | {
85
+ type: "vibes.diy.res-error";
86
+ error: {
87
+ message: string;
88
+ code: "from-not-owned";
89
+ };
90
+ } | {
91
+ type: "vibes.diy.res-error";
92
+ error: {
93
+ message: string;
94
+ code: "from-carry-failed";
95
+ };
96
+ } | {
97
+ type: "vibes.diy.res-error";
98
+ error: {
99
+ message: string;
100
+ code: "handle-required";
101
+ };
102
+ } | {
103
+ type: "vibes.diy.res-error";
104
+ error: {
105
+ message: string;
106
+ code: "max-app-slugs-reached";
107
+ };
108
+ } | {
109
+ type: "vibes-diy.cli.res-generate";
110
+ appSlug: string;
111
+ ownerHandle: string;
112
+ url: string;
113
+ directory: string;
114
+ release?: "not-visible" | "published" | "version-locked" | undefined;
115
+ turns?: number | undefined;
116
+ publish?: "kept-private-no-access-fn" | "private" | "published" | undefined;
117
+ posture?: "gated" | "open" | "private" | undefined;
242
118
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
243
119
  type: "vibes-diy.cli.db.subscribe";
244
120
  apiUrl: string;
@@ -349,25 +225,25 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
349
225
  type: "vibes.diy.res-error";
350
226
  error: {
351
227
  message: string;
352
- code: "max-app-slugs-reached";
228
+ code: "from-not-owned";
353
229
  };
354
230
  } | {
355
231
  type: "vibes.diy.res-error";
356
232
  error: {
357
233
  message: string;
358
- code: "handle-required";
234
+ code: "from-carry-failed";
359
235
  };
360
236
  } | {
361
237
  type: "vibes.diy.res-error";
362
238
  error: {
363
239
  message: string;
364
- code: "from-not-owned";
240
+ code: "handle-required";
365
241
  };
366
242
  } | {
367
243
  type: "vibes.diy.res-error";
368
244
  error: {
369
245
  message: string;
370
- code: "from-carry-failed";
246
+ code: "max-app-slugs-reached";
371
247
  };
372
248
  } | {
373
249
  type: "vibes-diy.cli.res-edit";
@@ -486,86 +362,288 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
486
362
  results: {
487
363
  ownerHandle: string;
488
364
  appSlug: string;
489
- fsId: string;
490
- enqueued: boolean;
491
- error?: string | undefined;
492
- }[];
493
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
494
- type: "vibes-diy.cli.app-look";
495
- op: "get" | "set";
496
- appSlug: string;
497
- ownerHandle: string;
498
- apiUrl: string;
499
- theme: string;
500
- variety: string;
501
- relayout: boolean;
502
- }, {
503
- type: "vibes-diy.cli.res-app-look";
504
- op: "get" | "set";
505
- ownerHandle: string;
506
- appSlug: string;
507
- url: string;
508
- theme: string;
509
- style: string;
510
- variety?: {
511
- archetype: string;
512
- flourishes: string[];
513
- } | undefined;
514
- provenance: "changed" | "drawn" | "none" | "pinned";
515
- varietyChangedAt?: string | undefined;
516
- wroteTheme: boolean;
517
- wroteVariety: boolean;
518
- clearedVariety: boolean;
519
- relayout: boolean;
520
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
521
- type: "vibes-diy.cli.app-anon-write";
522
- appSlug: string;
523
- ownerHandle: string;
524
- apiUrl: string;
525
- set: "" | "off" | "on";
526
- }, {
527
- type: "vibes-diy.cli.res-app-anon-write";
528
- ownerHandle: string;
529
- appSlug: string;
530
- wrote: boolean;
531
- posture: string;
532
- anonWrite: "explicit" | "legacy" | "off";
533
- wildcardWrite: string[];
534
- restrictedDbs: {
535
- dbName: string;
536
- provenance: "platform-default" | "your-pin";
537
- write: string[];
538
- }[];
539
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
540
- type: "vibes-diy.cli.developer";
541
- apiUrl: string;
542
- appSlug: string;
543
- ownerHandle: string;
544
- op: "add" | "ls" | "rm";
545
- devHandle?: string | undefined;
546
- }, {
547
- type: "vibes-diy.cli.developer-res";
548
- op: "add" | "ls" | "rm";
549
- ownerHandle: string;
550
- appSlug: string;
551
- items: {
552
- devHandle: string;
553
- devUserId?: string | undefined;
554
- state: "active" | "revoked";
555
- updated: string;
556
- created?: string | undefined;
557
- }[];
365
+ fsId: string;
366
+ enqueued: boolean;
367
+ error?: string | undefined;
368
+ }[];
369
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
370
+ type: "vibes-diy.cli.app-look";
371
+ op: "get" | "set";
372
+ appSlug: string;
373
+ ownerHandle: string;
374
+ apiUrl: string;
375
+ theme: string;
376
+ variety: string;
377
+ relayout: boolean;
378
+ }, {
379
+ type: "vibes-diy.cli.res-app-look";
380
+ op: "get" | "set";
381
+ ownerHandle: string;
382
+ appSlug: string;
383
+ url: string;
384
+ theme: string;
385
+ style: string;
386
+ variety?: {
387
+ archetype: string;
388
+ flourishes: string[];
389
+ } | undefined;
390
+ provenance: "changed" | "drawn" | "none" | "pinned";
391
+ varietyChangedAt?: string | undefined;
392
+ wroteTheme: boolean;
393
+ wroteVariety: boolean;
394
+ clearedVariety: boolean;
395
+ relayout: boolean;
396
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
397
+ type: "vibes-diy.cli.app-anon-write";
398
+ appSlug: string;
399
+ ownerHandle: string;
400
+ apiUrl: string;
401
+ set: "" | "off" | "on";
402
+ }, {
403
+ type: "vibes-diy.cli.res-app-anon-write";
404
+ ownerHandle: string;
405
+ appSlug: string;
406
+ wrote: boolean;
407
+ posture: string;
408
+ anonWrite: "explicit" | "legacy" | "off";
409
+ wildcardWrite: string[];
410
+ restrictedDbs: {
411
+ dbName: string;
412
+ provenance: "platform-default" | "your-pin";
413
+ write: string[];
414
+ }[];
415
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
416
+ type: "vibes-diy.cli.developer";
417
+ apiUrl: string;
418
+ appSlug: string;
419
+ ownerHandle: string;
420
+ op: "add" | "ls" | "rm";
421
+ devHandle?: string | undefined;
422
+ }, {
423
+ type: "vibes-diy.cli.developer-res";
424
+ op: "add" | "ls" | "rm";
425
+ ownerHandle: string;
426
+ appSlug: string;
427
+ items: {
428
+ devHandle: string;
429
+ devUserId?: string | undefined;
430
+ state: "active" | "revoked";
431
+ updated: string;
432
+ created?: string | undefined;
433
+ }[];
434
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
435
+ type: "vibes-diy.cli.user-settings";
436
+ apiUrl: string;
437
+ setDefaultHandle?: string | undefined;
438
+ }, {
439
+ type: "vibes.diy.res-ensure-user-settings";
440
+ userId: string;
441
+ settings: ({
442
+ type: "sharing";
443
+ grants: {
444
+ grant: "allow" | "deny";
445
+ appSlug: string;
446
+ ownerHandle: string;
447
+ dbName: string;
448
+ }[];
449
+ } | {
450
+ type: "modelDefaults";
451
+ codegen?: {
452
+ model?: {
453
+ id: string;
454
+ name: string;
455
+ description: string;
456
+ featured?: boolean | undefined;
457
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
458
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
459
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
460
+ imageInput?: boolean | undefined;
461
+ } | undefined;
462
+ apiKey?: string | undefined;
463
+ } | undefined;
464
+ agent?: {
465
+ model?: {
466
+ id: string;
467
+ name: string;
468
+ description: string;
469
+ featured?: boolean | undefined;
470
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
471
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
472
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
473
+ imageInput?: boolean | undefined;
474
+ } | undefined;
475
+ apiKey?: string | undefined;
476
+ } | undefined;
477
+ subagent?: {
478
+ model?: {
479
+ id: string;
480
+ name: string;
481
+ description: string;
482
+ featured?: boolean | undefined;
483
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
484
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
485
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
486
+ imageInput?: boolean | undefined;
487
+ } | undefined;
488
+ apiKey?: string | undefined;
489
+ } | undefined;
490
+ runtime?: {
491
+ model?: {
492
+ id: string;
493
+ name: string;
494
+ description: string;
495
+ featured?: boolean | undefined;
496
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
497
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
498
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
499
+ imageInput?: boolean | undefined;
500
+ } | undefined;
501
+ apiKey?: string | undefined;
502
+ } | undefined;
503
+ img?: {
504
+ model?: {
505
+ id: string;
506
+ name: string;
507
+ description: string;
508
+ featured?: boolean | undefined;
509
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
510
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
511
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
512
+ imageInput?: boolean | undefined;
513
+ } | undefined;
514
+ apiKey?: string | undefined;
515
+ } | undefined;
516
+ chat?: {
517
+ model?: {
518
+ id: string;
519
+ name: string;
520
+ description: string;
521
+ featured?: boolean | undefined;
522
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
523
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
524
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
525
+ imageInput?: boolean | undefined;
526
+ } | undefined;
527
+ apiKey?: string | undefined;
528
+ } | undefined;
529
+ app?: {
530
+ model?: {
531
+ id: string;
532
+ name: string;
533
+ description: string;
534
+ featured?: boolean | undefined;
535
+ preSelected?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
536
+ fallbackFor?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
537
+ supports?: ("agent" | "app" | "chat" | "codegen" | "img" | "img-edit" | "runtime" | "subagent")[] | undefined;
538
+ imageInput?: boolean | undefined;
539
+ } | undefined;
540
+ apiKey?: string | undefined;
541
+ } | undefined;
542
+ } | {
543
+ type: "defaultHandle";
544
+ ownerHandle: string;
545
+ } | {
546
+ type: "profile";
547
+ avatarCid?: string | undefined;
548
+ displayName?: string | undefined;
549
+ codeMode?: boolean | undefined;
550
+ } | {
551
+ type: "notifications";
552
+ buildComplete?: boolean | undefined;
553
+ buildFailed?: boolean | undefined;
554
+ vibePublished?: boolean | undefined;
555
+ commentPosted?: boolean | undefined;
556
+ requestApproved?: boolean | undefined;
557
+ requestRevoked?: boolean | undefined;
558
+ vibeRemixed?: boolean | undefined;
559
+ dmReceived?: boolean | undefined;
560
+ memberJoined?: boolean | undefined;
561
+ accessRequested?: boolean | undefined;
562
+ emailDigest?: boolean | undefined;
563
+ retentionEmail?: boolean | undefined;
564
+ followRequest?: boolean | undefined;
565
+ followerAdded?: boolean | undefined;
566
+ followApproved?: boolean | undefined;
567
+ appMessage?: boolean | undefined;
568
+ connectionExpiring?: boolean | undefined;
569
+ assetBlocked?: boolean | undefined;
570
+ assetCheckFailed?: boolean | undefined;
571
+ emailInstant?: boolean | undefined;
572
+ mutes?: {
573
+ vibes?: string[] | undefined;
574
+ handles?: string[] | undefined;
575
+ } | undefined;
576
+ vibeTypes?: {
577
+ vibe: string;
578
+ buildComplete?: boolean | undefined;
579
+ buildFailed?: boolean | undefined;
580
+ vibePublished?: boolean | undefined;
581
+ commentPosted?: boolean | undefined;
582
+ requestApproved?: boolean | undefined;
583
+ requestRevoked?: boolean | undefined;
584
+ vibeRemixed?: boolean | undefined;
585
+ memberJoined?: boolean | undefined;
586
+ accessRequested?: boolean | undefined;
587
+ appMessage?: boolean | undefined;
588
+ assetBlocked?: boolean | undefined;
589
+ assetCheckFailed?: boolean | undefined;
590
+ }[] | undefined;
591
+ } | {
592
+ type: "egressStatus";
593
+ status: "blessed" | "blocked";
594
+ updatedAt: string;
595
+ setBy?: string | undefined;
596
+ } | {
597
+ type: "contactEmail";
598
+ email: string;
599
+ updatedAt: string;
600
+ verified?: boolean | undefined;
601
+ } | {
602
+ type: "geoCountry";
603
+ country: string;
604
+ updatedAt: string;
605
+ } | {
606
+ type: "retentionDrip";
607
+ sent: {
608
+ [x: string]: string;
609
+ };
610
+ updatedAt: string;
611
+ } | {
612
+ type: "onboarding";
613
+ completedAt: string;
614
+ } | {
615
+ type: "kyc";
616
+ cardAt?: string | undefined;
617
+ } | {
618
+ type: "metaClickId";
619
+ fbc: string;
620
+ clickedAt: number;
621
+ updatedAt: string;
622
+ } | {
623
+ type: "lastVisit";
624
+ day: string;
625
+ } | {
626
+ type: "goldDripPosted";
627
+ postedAt: string;
628
+ ownerHandle: string;
629
+ appSlug: string;
630
+ } | {
631
+ type: "defaultHandle";
632
+ ownerHandle: string;
633
+ })[];
634
+ updated: string;
635
+ created: string;
558
636
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
559
- type: "use-vibes.cli.themes";
637
+ type: "vibes-diy.cli.skills";
560
638
  }, {
561
- type: "use-vibes.cli.res-themes-list";
562
- themes: {
563
- slug: string;
639
+ type: "vibes-diy.cli.res-skills-list";
640
+ skills: {
564
641
  name: string;
642
+ description: string;
565
643
  }[];
566
644
  } | {
567
- type: "use-vibes.cli.res-theme-content";
568
- slug: string;
645
+ type: "vibes-diy.cli.res-skill-content";
646
+ name: string;
569
647
  content: string;
570
648
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
571
649
  type: "vibes-diy.cli.variety";
@@ -657,25 +735,25 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
657
735
  type: "vibes.diy.res-error";
658
736
  error: {
659
737
  message: string;
660
- code: "max-app-slugs-reached";
738
+ code: "from-not-owned";
661
739
  };
662
740
  } | {
663
741
  type: "vibes.diy.res-error";
664
742
  error: {
665
743
  message: string;
666
- code: "handle-required";
744
+ code: "from-carry-failed";
667
745
  };
668
746
  } | {
669
747
  type: "vibes.diy.res-error";
670
748
  error: {
671
749
  message: string;
672
- code: "from-not-owned";
750
+ code: "handle-required";
673
751
  };
674
752
  } | {
675
753
  type: "vibes.diy.res-error";
676
754
  error: {
677
755
  message: string;
678
- code: "from-carry-failed";
756
+ code: "max-app-slugs-reached";
679
757
  };
680
758
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
681
759
  type: "vibes-diy.cli.remix";
@@ -694,6 +772,16 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
694
772
  carried?: string[] | undefined;
695
773
  skippedPresent?: string[] | undefined;
696
774
  chatId?: string | undefined;
775
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
776
+ type: "vibes-diy.cli.claim-handle";
777
+ apiUrl: string;
778
+ ownerHandle?: string | undefined;
779
+ }, {
780
+ type: "vibes-diy.cli.res-claim-handle";
781
+ op: "claim" | "suggest";
782
+ ownerHandle?: string | undefined;
783
+ defaultHandleSet?: boolean | undefined;
784
+ suggestions: string[];
697
785
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
698
786
  type: "vibes-diy.cli.put-asset";
699
787
  file: string;
@@ -709,108 +797,6 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
709
797
  size: number;
710
798
  uploadId: string;
711
799
  verified?: boolean | undefined;
712
- }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
713
- type: "vibes-diy.cli.generate";
714
- prompt: string;
715
- appSlug: string;
716
- ownerHandle: string;
717
- instantJoin?: boolean | undefined;
718
- noAccessFn?: boolean | undefined;
719
- privateMode?: boolean | undefined;
720
- verbose: boolean;
721
- apiUrl: string;
722
- focusPath?: string | undefined;
723
- model?: string | undefined;
724
- builderModel?: string | undefined;
725
- apiKey?: string | undefined;
726
- variety?: string | undefined;
727
- record?: string | undefined;
728
- style?: string | undefined;
729
- }, {
730
- type: "vibes-diy.cli.res-generate";
731
- appSlug: string;
732
- ownerHandle: string;
733
- url: string;
734
- directory: string;
735
- release?: "not-visible" | "published" | "version-locked" | undefined;
736
- turns?: number | undefined;
737
- publish?: "kept-private-no-access-fn" | "private" | "published" | undefined;
738
- posture?: "gated" | "open" | "private" | undefined;
739
- } | {
740
- appSlug: string;
741
- ownerHandle: string;
742
- mode: "dev" | "production";
743
- fsId: string;
744
- type: "vibes.diy.res-ensure-app-slug";
745
- env: Record<string, string>;
746
- fileSystem: {
747
- fileName: string;
748
- mimeType: string;
749
- assetId: string;
750
- assetURI: string;
751
- transform?: {
752
- type: "jsx-to-js";
753
- transformedAssetId: string;
754
- } | {
755
- type: "imports";
756
- importMapAssetId: string;
757
- } | {
758
- type: "import-map";
759
- fromAssetIds: string[];
760
- } | {
761
- type: "transformed";
762
- action: "jsx-to-js";
763
- transformedAssetId: string;
764
- } | {
765
- type: "tailwind-css";
766
- } | undefined;
767
- entryPoint?: boolean | undefined;
768
- size: number;
769
- kind?: "asset" | undefined;
770
- uploadId?: string | undefined;
771
- }[];
772
- } | {
773
- type: "vibes.diy.res-error";
774
- error: {
775
- message: string;
776
- code: "require-login";
777
- };
778
- } | {
779
- type: "vibes.diy.res-error";
780
- error: {
781
- message: string;
782
- code: "user-slug-invalid";
783
- };
784
- } | {
785
- type: "vibes.diy.res-error";
786
- error: {
787
- message: string;
788
- code: "app-slug-invalid";
789
- };
790
- } | {
791
- type: "vibes.diy.res-error";
792
- error: {
793
- message: string;
794
- code: "max-app-slugs-reached";
795
- };
796
- } | {
797
- type: "vibes.diy.res-error";
798
- error: {
799
- message: string;
800
- code: "handle-required";
801
- };
802
- } | {
803
- type: "vibes.diy.res-error";
804
- error: {
805
- message: string;
806
- code: "from-not-owned";
807
- };
808
- } | {
809
- type: "vibes.diy.res-error";
810
- error: {
811
- message: string;
812
- code: "from-carry-failed";
813
- };
814
800
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
815
801
  type: "vibes-diy.cli.app-chats";
816
802
  appSlug: string;
@@ -1003,6 +989,20 @@ export declare function cliEventoHandlers(): (import("@adviser/cement").EventoHa
1003
989
  }, {
1004
990
  type: "vibes-diy.cli.db.list-res";
1005
991
  dbNames: string[];
992
+ }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
993
+ type: "vibes-diy.cli.db.get";
994
+ apiUrl: string;
995
+ appSlug: string;
996
+ ownerHandle: string;
997
+ dbName: string;
998
+ docId: string;
999
+ admin: boolean;
1000
+ actingHandle: string;
1001
+ }, {
1002
+ type: "vibes-diy.cli.db.get-res";
1003
+ doc: {
1004
+ [x: string]: unknown;
1005
+ };
1006
1006
  }> | import("@adviser/cement").EventoHandler<WrapCmdTSMsg<unknown>, {
1007
1007
  type: "vibes-diy.cli.db.put";
1008
1008
  apiUrl: string;
@@ -1,11 +1,11 @@
1
1
  import { command, flag, positional, option, string } from "cmd-ts";
2
- import { readFileSync } from "node:fs";
3
2
  import { type } from "arktype";
4
3
  import { Result, Option, exception2Result } from "@adviser/cement";
5
4
  import { FireflyApiAdapter } from "@vibes.diy/api-impl";
6
5
  import { isResPutDoc } from "@vibes.diy/api-types";
7
6
  import { cmdTsDefaultArgs } from "../../cli-ctx.js";
8
7
  import { sendMsg } from "../../cmd-evento.js";
8
+ import { readStdinText } from "../../read-stdin.js";
9
9
  import { dbCommonArgs, openVibeDbApi, resolveDbVibeArgs, resolveDocId } from "./shared.js";
10
10
  export const ReqDbPut = type({
11
11
  type: "'vibes-diy.cli.db.put'",
@@ -39,7 +39,13 @@ export const dbPutEvento = {
39
39
  },
40
40
  handle: async (ctx) => {
41
41
  const ectx = ctx.ctx.getOrThrow("cliCtx");
42
- const rawJson = ctx.validated.docJson === "-" ? readFileSync(0, "utf8") : ctx.validated.docJson;
42
+ let rawJson = ctx.validated.docJson;
43
+ if (rawJson === "-") {
44
+ const rStdin = await readStdinText();
45
+ if (rStdin.isErr())
46
+ return Result.Err(`Reading stdin: ${rStdin.Err().message}`);
47
+ rawJson = rStdin.Ok();
48
+ }
43
49
  const rParsed = await exception2Result(() => JSON.parse(rawJson));
44
50
  if (rParsed.isErr())
45
51
  return Result.Err(`Invalid JSON: ${rParsed.Err()}`);
@@ -1 +1 @@
1
- {"version":3,"file":"put-cmd.js","sourceRoot":"","sources":["../../../../jsr/cli/cmds/db/put-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"put-cmd.js","sourceRoot":"","sources":["../../../../jsr/cli/cmds/db/put-cmd.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { command, optional, positional, string, subcommands } from "cmd-ts";
2
2
  import { type } from "arktype";
3
- import { readFileSync } from "node:fs";
4
3
  import { Result, Option } from "@adviser/cement";
5
4
  import { cmdTsDefaultArgs } from "../../cli-ctx.js";
6
5
  import { sendMsg } from "../../cmd-evento.js";
7
6
  import { dbCommonArgs, resolveDbVibeArgs } from "../db/shared.js";
7
+ import { resolveSecretValue } from "../../read-stdin.js";
8
8
  const SecretMetaT = type({ key: "string", "last4?": "string", updatedAt: "number", "setBy?": "string" });
9
9
  export const ReqSecrets = type({
10
10
  type: "'vibes-diy.cli.secrets'",
@@ -50,10 +50,17 @@ export const secretsEvento = {
50
50
  if (!ectx.vibesDiyApiFactory) {
51
51
  return Result.Err("Not logged in. Run 'vibes-diy login' first.");
52
52
  }
53
- const req = ctx.validated;
53
+ let req = ctx.validated;
54
54
  if ((req.op === "set" || req.op === "rm") && !req.key) {
55
55
  return Result.Err(`secrets ${req.op} requires a KEY`);
56
56
  }
57
+ if (req.op === "set") {
58
+ const rValue = await resolveSecretValue(req.value, req.key ?? "");
59
+ if (rValue.isErr()) {
60
+ return Result.Err(`secrets set ${req.key}: ${rValue.Err().message}`);
61
+ }
62
+ req = { ...req, value: rValue.Ok() };
63
+ }
57
64
  const rRes = await ectx.vibesDiyApiFactory(req.apiUrl).ensureAppSettings(secretsApiRequest(req));
58
65
  if (rRes.isErr()) {
59
66
  return Result.Err(rRes.Err());
@@ -73,11 +80,6 @@ function secretsVibeArgs() {
73
80
  const { vibe, appSlug, ownerHandle, ownerHandleDeprecated } = dbCommonArgs();
74
81
  return { vibe, appSlug, ownerHandle, ownerHandleDeprecated };
75
82
  }
76
- function resolveSecretValue(valueArg) {
77
- if (valueArg !== undefined)
78
- return valueArg;
79
- return readFileSync(0, "utf8").replace(/\r?\n$/, "");
80
- }
81
83
  export function secretsSubcommands(ctx) {
82
84
  return subcommands({
83
85
  name: "secrets",
@@ -105,7 +107,7 @@ export function secretsSubcommands(ctx) {
105
107
  ...resolved,
106
108
  op: "set",
107
109
  key: args.key,
108
- value: resolveSecretValue(args.value),
110
+ value: args.value,
109
111
  };
110
112
  }),
111
113
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"secrets-cmd.js","sourceRoot":"","sources":["../../../../jsr/cli/cmds/secrets/secrets-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets-cmd.js","sourceRoot":"","sources":["../../../../jsr/cli/cmds/secrets/secrets-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Result } from "@adviser/cement";
2
+ export interface StdinLike extends NodeJS.ReadableStream {
3
+ readonly isTTY?: boolean;
4
+ }
5
+ export declare function readStdinText(stdin?: NodeJS.ReadableStream): Promise<Result<string>>;
6
+ export declare function promptHidden(prompt: string, stdin?: NodeJS.ReadableStream, out?: NodeJS.WritableStream): Promise<Result<string>>;
7
+ export declare function resolveSecretValue(valueArg: string | undefined, key: string, stdin?: StdinLike, out?: NodeJS.WritableStream): Promise<Result<string>>;
@@ -0,0 +1,36 @@
1
+ import { createInterface } from "node:readline";
2
+ import { Writable } from "node:stream";
3
+ import { Result, exception2Result } from "@adviser/cement";
4
+ export function readStdinText(stdin = process.stdin) {
5
+ return exception2Result(async () => {
6
+ const chunks = [];
7
+ for await (const chunk of stdin) {
8
+ chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
9
+ }
10
+ return Buffer.concat(chunks).toString("utf8");
11
+ });
12
+ }
13
+ export async function promptHidden(prompt, stdin = process.stdin, out = process.stderr) {
14
+ out.write(prompt);
15
+ const sink = new Writable({ write: (_c, _e, cb) => cb() });
16
+ const rl = createInterface({ input: stdin, output: sink, terminal: true });
17
+ const res = await new Promise((resolve) => {
18
+ rl.once("line", (line) => resolve(Result.Ok(line)));
19
+ rl.once("close", () => resolve(Result.Err("no value entered")));
20
+ rl.once("SIGINT", () => resolve(Result.Err("cancelled")));
21
+ });
22
+ rl.close();
23
+ out.write("\n");
24
+ return res;
25
+ }
26
+ export async function resolveSecretValue(valueArg, key, stdin = process.stdin, out = process.stderr) {
27
+ if (valueArg !== undefined)
28
+ return Result.Ok(valueArg);
29
+ if (stdin.isTTY)
30
+ return promptHidden(`Value for ${key}: `, stdin, out);
31
+ const rText = await readStdinText(stdin);
32
+ if (rText.isErr())
33
+ return Result.Err(rText);
34
+ return Result.Ok(rText.Ok().replace(/\r?\n$/, ""));
35
+ }
36
+ //# sourceMappingURL=read-stdin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-stdin.js","sourceRoot":"","sources":["../../jsr/cli/read-stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAa3D,MAAM,UAAU,aAAa,CAAC,KAAK,GAA0B,OAAO,CAAC,KAAK;IACxE,OAAO,gBAAgB,CAAC,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAgB,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,KAAK,GAA0B,OAAO,CAAC,KAAK,EAC5C,GAAG,GAA0B,OAAO,CAAC,MAAM;IAE3C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAGlB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;QACxD,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAChE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,OAAO,GAAG,CAAC;AACb,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAA4B,EAC5B,GAAW,EACX,KAAK,GAAc,OAAO,CAAC,KAAK,EAChC,GAAG,GAA0B,OAAO,CAAC,MAAM;IAE3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,96 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { spawn } from "node:child_process";
3
+ import { readdirSync, readFileSync, statSync } from "node:fs";
4
+ import { dirname, join } from "node:path";
5
+ import { PassThrough } from "node:stream";
6
+ import { fileURLToPath, pathToFileURL } from "node:url";
7
+ import { readStdinText, resolveSecretValue } from "./read-stdin.js";
8
+ const here = dirname(fileURLToPath(import.meta.url));
9
+ function runWithLateStdin(body, input) {
10
+ const child = spawn(process.execPath, ["--import", "tsx", "--input-type=module", "-e", body], {
11
+ cwd: join(here, ".."),
12
+ stdio: ["pipe", "pipe", "pipe"],
13
+ });
14
+ let stdout = "";
15
+ let stderr = "";
16
+ child.stdout.on("data", (d) => (stdout += d.toString()));
17
+ child.stderr.on("data", (d) => (stderr += d.toString()));
18
+ setTimeout(() => child.stdin.end(input), 500);
19
+ return new Promise((resolve) => child.on("close", (code) => resolve({ code, stdout, stderr })));
20
+ }
21
+ describe("reading CLI values from stdin", () => {
22
+ it("pipe: reads to EOF and drops one trailing newline", async () => {
23
+ const stdin = new PassThrough();
24
+ stdin.end("ghp_abc\n");
25
+ expect((await resolveSecretValue(undefined, "GITHUB_TOKEN", stdin)).Ok()).toBe("ghp_abc");
26
+ });
27
+ it("arg wins and stdin is never read", async () => {
28
+ const stdin = new PassThrough();
29
+ expect((await resolveSecretValue("tok", "K", stdin)).Ok()).toBe("tok");
30
+ });
31
+ it("terminal: prompts for one line and never echoes the secret", async () => {
32
+ const stdin = Object.assign(new PassThrough(), { isTTY: true });
33
+ const out = new PassThrough();
34
+ let shown = "";
35
+ out.on("data", (d) => (shown += d.toString()));
36
+ const value = resolveSecretValue(undefined, "GITHUB_TOKEN", stdin, out);
37
+ stdin.write("ghp_secret\r");
38
+ expect((await value).Ok()).toBe("ghp_secret");
39
+ expect(shown).toContain("Value for GITHUB_TOKEN");
40
+ expect(shown).not.toContain("ghp_secret");
41
+ });
42
+ it("terminal: Ctrl-D before Enter is an Err, not an empty secret", async () => {
43
+ const stdin = Object.assign(new PassThrough(), { isTTY: true });
44
+ const value = resolveSecretValue(undefined, "K", stdin, new PassThrough());
45
+ stdin.write("\x04");
46
+ expect((await value).isErr()).toBe(true);
47
+ });
48
+ it("terminal: Ctrl-C is an Err, so the command exits nonzero", async () => {
49
+ const stdin = Object.assign(new PassThrough(), { isTTY: true });
50
+ const value = resolveSecretValue(undefined, "K", stdin, new PassThrough());
51
+ stdin.write("\x03");
52
+ const res = await value;
53
+ expect(res.isErr()).toBe(true);
54
+ expect(res.Err().message).toContain("cancelled");
55
+ });
56
+ it("non-blocking stdin with no bytes ready yet waits instead of throwing EAGAIN", { timeout: 30_000 }, async () => {
57
+ const mod = pathToFileURL(join(here, "read-stdin.ts")).href;
58
+ const res = await runWithLateStdin(`void process.stdin;
59
+ const { resolveSecretValue } = await import(${JSON.stringify(mod)});
60
+ process.stdout.write(JSON.stringify((await resolveSecretValue(undefined, "K")).Ok()));`, "late-value\n");
61
+ expect(res.stderr).not.toContain("EAGAIN");
62
+ expect(res.code).toBe(0);
63
+ expect(JSON.parse(res.stdout)).toBe("late-value");
64
+ });
65
+ it("control: a sync read of the same stdin does throw EAGAIN (proves the harness reproduces the bug)", { timeout: 30_000 }, async () => {
66
+ const res = await runWithLateStdin(`void process.stdin;
67
+ const { readFileSync } = await import("node:fs");
68
+ try { readFileSync(0, "utf8"); console.log("read"); } catch (e) { console.log(e.code); }`, "late-value\n");
69
+ expect(res.stdout.trim()).toBe("EAGAIN");
70
+ });
71
+ it("readStdinText concatenates chunks", async () => {
72
+ const stdin = new PassThrough();
73
+ stdin.write('{"a":');
74
+ stdin.end("1}");
75
+ expect((await readStdinText(stdin)).Ok()).toBe('{"a":1}');
76
+ });
77
+ it("no CLI source reads fd 0 synchronously", () => {
78
+ const offenders = [];
79
+ const walk = (dir) => {
80
+ for (const name of readdirSync(dir)) {
81
+ const p = join(dir, name);
82
+ if (name === "node_modules")
83
+ continue;
84
+ if (statSync(p).isDirectory())
85
+ walk(p);
86
+ else if (/\.m?ts$/.test(name) && !name.endsWith(".test.ts")) {
87
+ if (/readFileSync\(\s*(0|["']\/dev\/stdin["']|process\.stdin\.fd)\b/.test(readFileSync(p, "utf8")))
88
+ offenders.push(p);
89
+ }
90
+ }
91
+ };
92
+ walk(here);
93
+ expect(offenders).toEqual([]);
94
+ });
95
+ });
96
+ //# sourceMappingURL=read-stdin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-stdin.test.js","sourceRoot":"","sources":["../../jsr/cli/read-stdin.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAMrD,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QAC5F,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACrB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjE,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,MAAM,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,CAAC,MAAM,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACxE,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;QAC3E,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;QAC3E,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;QAChH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC;qDAC+C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;8FACsB,EACxF,cAAc,CACf,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CACA,kGAAkG,EAClG,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC;;gGAEwF,EACxF,cAAc,CACf,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1B,IAAI,IAAI,KAAK,cAAc;oBAAE,SAAS;gBACtC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;qBAClC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5D,IAAI,gEAAgE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,CAAC;QACX,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibes-diy",
3
- "version": "14.3.78",
3
+ "version": "14.3.80",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "description": "Command-line tool for vibes.diy — generate, edit, pull, push, and publish AI-built apps",
@@ -30,13 +30,13 @@
30
30
  "dependencies": {
31
31
  "@adviser/cement": "~0.5.34",
32
32
  "@modelcontextprotocol/sdk": "~1.31.0",
33
- "@vibes.diy/api-impl": "14.3.78",
34
- "@vibes.diy/api-types": "14.3.78",
35
- "@vibes.diy/call-ai-v2": "14.3.78",
36
- "@vibes.diy/cmd-harness": "14.3.78",
37
- "@vibes.diy/cmd-tools": "14.3.78",
38
- "@vibes.diy/identity": "14.3.78",
39
- "@vibes.diy/prompts": "14.3.78",
33
+ "@vibes.diy/api-impl": "14.3.80",
34
+ "@vibes.diy/api-types": "14.3.80",
35
+ "@vibes.diy/call-ai-v2": "14.3.80",
36
+ "@vibes.diy/cmd-harness": "14.3.80",
37
+ "@vibes.diy/cmd-tools": "14.3.80",
38
+ "@vibes.diy/identity": "14.3.80",
39
+ "@vibes.diy/prompts": "14.3.80",
40
40
  "arktype": "~2.2.6",
41
41
  "charwise": "~3.0.1",
42
42
  "cmd-ts": "~0.15.0",