vibes-diy 2.2.3 → 2.2.5

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
@@ -1,3 +1,6 @@
1
+ [![Join our
2
+ Discord](https://discord-badge.selem.workers.dev/i/tzMUkwFK.svg)](https://discord.gg/tzMUkwFK)
3
+
1
4
  # ✨ Build Mini Apps with AI Magic
2
5
 
3
6
  Turn your **ideas** into **interactive apps** instantly. [Try it now](https://vibes.diy/) or [fork on GitHub](https://github.com/VibesDIY/vibes.diy) to customize with your own AI account.
@@ -3,11 +3,12 @@ import { mkdir, writeFile } from "fs/promises";
3
3
  import { join } from "path";
4
4
  import { Result, Option, exception2Result, BuildURI, loadAsset, } from "@adviser/cement";
5
5
  import { type } from "arktype";
6
- import { resEnsureAppSlug, isSectionEvent } from "@vibes.diy/api-types";
6
+ import { isSectionEvent } from "@vibes.diy/api-types";
7
7
  import { cmdTsDefaultArgs } from "../cli-ctx.js";
8
8
  import { sendMsg, sendProgress } from "../cmd-evento.js";
9
9
  import { resolveUserSlug } from "../resolve-user-slug.js";
10
10
  import { resolveSectionStream } from "./resolve-section-stream.js";
11
+ import { pushFromDir } from "./push-from-dir.js";
11
12
  export const ResGenerate = type({
12
13
  type: "'use-vibes.cli.res-generate'",
13
14
  appSlug: "string",
@@ -98,85 +99,44 @@ export const generateEvento = {
98
99
  if (resolved.errors.length > 0 && !args.verbose) {
99
100
  await sendProgress(ctx, "warn", `Resolved with ${resolved.errors.length} apply error(s); rerun with --verbose for detail.`);
100
101
  }
101
- const files = Object.entries(resolved.files).map(([path, content]) => {
102
- const filename = path.startsWith("/") ? path : `/${path}`;
103
- return {
104
- type: "code-block",
105
- lang: extLang(filename),
106
- content,
107
- filename,
108
- };
109
- });
110
- const fileContents = Object.entries(resolved.files).map(([path, content]) => ({
111
- filename: path.startsWith("/") ? path.slice(1) : path,
112
- content,
113
- }));
114
102
  const pushAppSlug = chat.appSlug;
115
103
  const pushUserSlug = chat.userSlug;
116
- const rResult = await api.ensureAppSlug({
117
- mode: "production",
118
- appSlug: pushAppSlug,
119
- userSlug: pushUserSlug,
120
- fileSystem: files,
121
- });
122
- if (rResult.isErr()) {
123
- const pushErr = rResult.Err();
124
- return Result.Err(`Push failed: ${typeof pushErr === "object" ? JSON.stringify(pushErr) : String(pushErr)}`);
125
- }
126
- const result = resEnsureAppSlug(rResult.Ok());
127
- if (result instanceof type.errors) {
128
- return Result.Err(`type mismatch: ${result.summary}`);
129
- }
130
104
  const dir = join(process.cwd(), pushAppSlug);
131
105
  const rDir = await exception2Result(() => mkdir(dir, { recursive: true }));
132
106
  if (rDir.isErr()) {
133
107
  return Result.Err(`Failed to create directory: ${rDir.Err().message}`);
134
108
  }
135
- for (const file of fileContents) {
136
- await writeFile(join(dir, file.filename), file.content, "utf-8");
109
+ for (const [path, content] of Object.entries(resolved.files)) {
110
+ const filename = path.startsWith("/") ? path.slice(1) : path;
111
+ await writeFile(join(dir, filename), content, "utf-8");
137
112
  }
138
113
  const vibeUrl = BuildURI.from(args.apiUrl)
139
114
  .pathname(`/vibe/${pushUserSlug}/${pushAppSlug}`)
140
115
  .cleanParams("@stable-entry@", ".stable-entry.")
141
116
  .toString();
142
117
  await writeFile(join(dir, "README.md"), await generateReadme(pushAppSlug, args.prompt, vibeUrl), "utf-8");
143
- if (args.instantJoin && pushUserSlug) {
144
- const rSettings = await api.ensureAppSettings({
145
- appSlug: pushAppSlug,
146
- userSlug: pushUserSlug,
147
- request: { enable: true, autoAcceptRole: "viewer" },
148
- });
149
- if (rSettings.isErr()) {
150
- const settErr = rSettings.Err();
151
- await sendProgress(ctx, "warn", `Warning: failed to update app settings: ${typeof settErr === "object" ? JSON.stringify(settErr) : String(settErr)}`);
152
- }
153
- else {
154
- await sendProgress(ctx, "info", "Requests enabled (instant-join)");
155
- }
156
- }
157
- const publicUrl = BuildURI.from(args.apiUrl)
158
- .pathname(`/vibe/${pushUserSlug}/${pushAppSlug}`)
159
- .cleanParams("@stable-entry@", ".stable-entry.")
160
- .toString();
118
+ const rPush = await pushFromDir({
119
+ dir,
120
+ mode: "production",
121
+ appSlug: pushAppSlug,
122
+ userSlug: pushUserSlug,
123
+ instantJoin: args.instantJoin,
124
+ apiUrl: args.apiUrl,
125
+ api,
126
+ ctx,
127
+ });
128
+ if (rPush.isErr())
129
+ return Result.Err(rPush.Err());
161
130
  await sendProgress(ctx, "info", `Created: ${dir}`);
162
- await sendProgress(ctx, "info", `URL: ${publicUrl}`);
163
131
  return sendMsg(ctx, {
164
132
  type: "use-vibes.cli.res-generate",
165
133
  appSlug: pushAppSlug,
166
134
  userSlug: pushUserSlug,
167
- url: publicUrl,
135
+ url: rPush.Ok().publicUrl,
168
136
  directory: dir,
169
137
  });
170
138
  },
171
139
  };
172
- function extLang(filename) {
173
- const ext = filename.match(/\.([^.]+)$/)?.[1]?.toLowerCase();
174
- if (ext === undefined)
175
- return "jsx";
176
- if (ext === "js")
177
- return "jsx";
178
- return ext;
179
- }
180
140
  async function generateReadme(appSlug, prompt, vibeUrl) {
181
141
  const rTemplate = await loadAsset("./readme-template.md", {
182
142
  basePath: () => import.meta.url,
@@ -1 +1 @@
1
- {"version":3,"file":"generate-cmd.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/generate-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-cmd.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/generate-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { VibeFile } from "@vibes.diy/api-types";
2
+ export interface LintResult {
3
+ errors: string[];
4
+ warnings: string[];
5
+ }
6
+ export declare function lintVibeFiles(files: VibeFile[]): LintResult;
@@ -0,0 +1,17 @@
1
+ const APP_FILE_RE = /^\/?App\.(jsx|tsx|js|ts)$/;
2
+ const DEFAULT_EXPORT_RE = /export\s+default\s+/;
3
+ export function lintVibeFiles(files) {
4
+ const errors = [];
5
+ const warnings = [];
6
+ const codeFiles = files.filter((f) => f.type === "code-block");
7
+ const appFile = codeFiles.find((f) => APP_FILE_RE.test(f.filename));
8
+ if (!appFile) {
9
+ errors.push("Missing App.jsx (or App.tsx) — the runtime expects an App entry file.");
10
+ return { errors, warnings };
11
+ }
12
+ if (!DEFAULT_EXPORT_RE.test(appFile.content)) {
13
+ errors.push(`${appFile.filename} has no \`export default\` — the runtime imports the default export and will fail with "does not provide an export named 'default'".`);
14
+ }
15
+ return { errors, warnings };
16
+ }
17
+ //# sourceMappingURL=lint-vibe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint-vibe.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/lint-vibe.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CACT,GAAG,OAAO,CAAC,QAAQ,sIAAsI,CAC1J,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,38 +1,11 @@
1
1
  import { command, flag, option, string } from "cmd-ts";
2
- import { readdir, readFile } from "fs/promises";
3
- import { basename, extname, join } from "path";
4
- import { Result, Option, exception2Result, BuildURI, } from "@adviser/cement";
2
+ import { basename } from "path";
3
+ import { Result, Option } from "@adviser/cement";
5
4
  import { type } from "arktype";
6
- import { resEnsureAppSlug, isResEnsureAppSlugOk } from "@vibes.diy/api-types";
7
5
  import { cmdTsDefaultArgs } from "../cli-ctx.js";
8
- import { sendMsg, sendProgress } from "../cmd-evento.js";
6
+ import { sendMsg } from "../cmd-evento.js";
9
7
  import { resolveUserSlug } from "../resolve-user-slug.js";
10
- const CODE_EXTENSIONS = new Set(["jsx", "js", "ts", "tsx"]);
11
- const ALLOWED_EXTENSIONS = new Set([...CODE_EXTENSIONS, "css", "html", "json", "md", "txt", "svg"]);
12
- async function readProjectFiles(dir) {
13
- const entries = await readdir(dir, { withFileTypes: true });
14
- const files = [];
15
- for (const entry of entries) {
16
- if (entry.isDirectory())
17
- continue;
18
- if (entry.name.startsWith("."))
19
- continue;
20
- const lang = extname(entry.name).toLowerCase().slice(1);
21
- if (ALLOWED_EXTENSIONS.has(lang) === false)
22
- continue;
23
- const content = await readFile(join(dir, entry.name), "utf-8");
24
- const filename = `/${entry.name}`;
25
- switch (true) {
26
- case CODE_EXTENSIONS.has(lang):
27
- files.push({ type: "code-block", lang, content, filename });
28
- break;
29
- default:
30
- files.push({ type: "str-asset-block", content, filename });
31
- break;
32
- }
33
- }
34
- return files;
35
- }
8
+ import { pushFromDir } from "./push-from-dir.js";
36
9
  export const ReqPush = type({
37
10
  type: "'use-vibes.cli.push'",
38
11
  mode: "string",
@@ -62,55 +35,19 @@ export const pushEvento = {
62
35
  const mode = args.mode === "dev" ? "dev" : "production";
63
36
  const appSlug = args.appSlug === "" ? basename(process.cwd()) : args.appSlug;
64
37
  const userSlug = await resolveUserSlug(api, args.userSlug === "" ? undefined : args.userSlug);
65
- const rFiles = await exception2Result(() => readProjectFiles(process.cwd()));
66
- if (rFiles.isErr()) {
67
- return Result.Err(`Failed to read files: ${rFiles.Err().message}`);
68
- }
69
- const files = rFiles.Ok();
70
- if (files.length === 0) {
71
- return Result.Err("No files found in current directory. Expected at least App.jsx.");
72
- }
73
- if (!files.some((f) => f.type === "code-block")) {
74
- return Result.Err("No code files (.jsx, .js, .ts, .tsx) found in current directory. Expected at least App.jsx.");
75
- }
76
- const rResult = await api.ensureAppSlug({
38
+ const rPush = await pushFromDir({
39
+ dir: process.cwd(),
77
40
  mode,
78
41
  appSlug,
79
42
  userSlug,
80
- fileSystem: files,
43
+ instantJoin: args.instantJoin,
44
+ apiUrl: args.apiUrl,
45
+ api,
46
+ ctx,
81
47
  });
82
- if (rResult.isErr()) {
83
- const pushErr = rResult.Err();
84
- return Result.Err(`Push failed: ${typeof pushErr === "object" ? JSON.stringify(pushErr) : String(pushErr)}`);
85
- }
86
- const result = resEnsureAppSlug(rResult.Ok());
87
- if (result instanceof type.errors) {
88
- return Result.Err(`type mismatch: ${result.summary}`);
89
- }
90
- if (userSlug) {
91
- const rSettings = await api.ensureAppSettings({
92
- appSlug,
93
- userSlug,
94
- request: { enable: true, autoAcceptRole: args.instantJoin ? "viewer" : undefined },
95
- });
96
- if (rSettings.isErr()) {
97
- const settErr = rSettings.Err();
98
- await sendProgress(ctx, "warn", `Warning: failed to update app settings: ${typeof settErr === "object" ? JSON.stringify(settErr) : String(settErr)}`);
99
- }
100
- else {
101
- const instantJoin = rSettings.Ok().settings.entry.enableRequest?.autoAcceptRole;
102
- await sendProgress(ctx, "info", `Requests enabled${instantJoin ? " (instant-join)" : ""}`);
103
- }
104
- }
105
- if (isResEnsureAppSlugOk(result)) {
106
- const publicUrl = BuildURI.from(args.apiUrl)
107
- .pathname(`/vibe/${result.userSlug}/${result.appSlug}`)
108
- .cleanParams("@stable-entry@", ".stable-entry.")
109
- .toString();
110
- await sendProgress(ctx, "info", `Deployed: ${result.userSlug}/${result.appSlug}`);
111
- await sendProgress(ctx, "info", `URL: ${publicUrl}`);
112
- }
113
- return sendMsg(ctx, result);
48
+ if (rPush.isErr())
49
+ return Result.Err(rPush.Err());
50
+ return sendMsg(ctx, rPush.Ok().result);
114
51
  },
115
52
  };
116
53
  export function pushCmd(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"push-cmd.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/push-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push-cmd.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/push-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { Result, HandleTriggerCtx } from "@adviser/cement";
2
+ import { ResEnsureAppSlug } from "@vibes.diy/api-types";
3
+ import type { VibeFile } from "@vibes.diy/api-types";
4
+ import { WrapCmdTSMsg } from "../cmd-evento.js";
5
+ export declare function readProjectFiles(dir: string): Promise<VibeFile[]>;
6
+ export interface PushFromDirOptions {
7
+ dir: string;
8
+ mode: "production" | "dev";
9
+ appSlug: string;
10
+ userSlug: string | undefined;
11
+ instantJoin: boolean;
12
+ apiUrl: string;
13
+ api: {
14
+ ensureAppSlug: (req: {
15
+ mode: "production" | "dev";
16
+ appSlug: string;
17
+ userSlug: string | undefined;
18
+ fileSystem: VibeFile[];
19
+ }) => Promise<Result<unknown>>;
20
+ ensureAppSettings: (req: {
21
+ appSlug: string;
22
+ userSlug: string;
23
+ request: {
24
+ enable: boolean;
25
+ autoAcceptRole?: "viewer";
26
+ };
27
+ }) => Promise<Result<{
28
+ settings: {
29
+ entry: {
30
+ enableRequest?: {
31
+ autoAcceptRole?: string;
32
+ };
33
+ };
34
+ };
35
+ }>>;
36
+ };
37
+ ctx: HandleTriggerCtx<WrapCmdTSMsg<unknown>, unknown, unknown>;
38
+ }
39
+ export interface PushFromDirOk {
40
+ result: ResEnsureAppSlug;
41
+ publicUrl: string;
42
+ }
43
+ export declare function pushFromDir(opts: PushFromDirOptions): Promise<Result<PushFromDirOk>>;
@@ -0,0 +1,90 @@
1
+ import { readdir, readFile } from "fs/promises";
2
+ import { extname, join } from "path";
3
+ import { Result, exception2Result, BuildURI } from "@adviser/cement";
4
+ import { type } from "arktype";
5
+ import { resEnsureAppSlug, isResEnsureAppSlugOk } from "@vibes.diy/api-types";
6
+ import { sendProgress } from "../cmd-evento.js";
7
+ import { lintVibeFiles } from "./lint-vibe.js";
8
+ const CODE_EXTENSIONS = new Set(["jsx", "js", "ts", "tsx"]);
9
+ const ALLOWED_EXTENSIONS = new Set([...CODE_EXTENSIONS, "css", "html", "json", "md", "txt", "svg"]);
10
+ export async function readProjectFiles(dir) {
11
+ const entries = await readdir(dir, { withFileTypes: true });
12
+ const files = [];
13
+ for (const entry of entries) {
14
+ if (entry.isDirectory())
15
+ continue;
16
+ if (entry.name.startsWith("."))
17
+ continue;
18
+ const lang = extname(entry.name).toLowerCase().slice(1);
19
+ if (ALLOWED_EXTENSIONS.has(lang) === false)
20
+ continue;
21
+ const content = await readFile(join(dir, entry.name), "utf-8");
22
+ const filename = `/${entry.name}`;
23
+ if (CODE_EXTENSIONS.has(lang)) {
24
+ files.push({ type: "code-block", lang, content, filename });
25
+ }
26
+ else {
27
+ files.push({ type: "str-asset-block", content, filename });
28
+ }
29
+ }
30
+ return files;
31
+ }
32
+ export async function pushFromDir(opts) {
33
+ const rFiles = await exception2Result(() => readProjectFiles(opts.dir));
34
+ if (rFiles.isErr()) {
35
+ return Result.Err(`Failed to read files: ${rFiles.Err().message}`);
36
+ }
37
+ const files = rFiles.Ok();
38
+ if (files.length === 0) {
39
+ return Result.Err("No files found in current directory. Expected at least App.jsx.");
40
+ }
41
+ if (!files.some((f) => f.type === "code-block")) {
42
+ return Result.Err("No code files (.jsx, .js, .ts, .tsx) found in current directory. Expected at least App.jsx.");
43
+ }
44
+ const lint = lintVibeFiles(files);
45
+ for (const w of lint.warnings)
46
+ await sendProgress(opts.ctx, "warn", w);
47
+ if (lint.errors.length > 0) {
48
+ return Result.Err(`Lint failed:\n - ${lint.errors.join("\n - ")}`);
49
+ }
50
+ const rResult = await opts.api.ensureAppSlug({
51
+ mode: opts.mode,
52
+ appSlug: opts.appSlug,
53
+ userSlug: opts.userSlug,
54
+ fileSystem: files,
55
+ });
56
+ if (rResult.isErr()) {
57
+ const pushErr = rResult.Err();
58
+ return Result.Err(`Push failed: ${typeof pushErr === "object" ? JSON.stringify(pushErr) : String(pushErr)}`);
59
+ }
60
+ const result = resEnsureAppSlug(rResult.Ok());
61
+ if (result instanceof type.errors) {
62
+ return Result.Err(`type mismatch: ${result.summary}`);
63
+ }
64
+ if (opts.userSlug) {
65
+ const rSettings = await opts.api.ensureAppSettings({
66
+ appSlug: opts.appSlug,
67
+ userSlug: opts.userSlug,
68
+ request: { enable: true, autoAcceptRole: opts.instantJoin ? "viewer" : undefined },
69
+ });
70
+ if (rSettings.isErr()) {
71
+ const settErr = rSettings.Err();
72
+ await sendProgress(opts.ctx, "warn", `Warning: failed to update app settings: ${typeof settErr === "object" ? JSON.stringify(settErr) : String(settErr)}`);
73
+ }
74
+ else {
75
+ const instantJoin = rSettings.Ok().settings.entry.enableRequest?.autoAcceptRole;
76
+ await sendProgress(opts.ctx, "info", `Requests enabled${instantJoin ? " (instant-join)" : ""}`);
77
+ }
78
+ }
79
+ let publicUrl = "";
80
+ if (isResEnsureAppSlugOk(result)) {
81
+ publicUrl = BuildURI.from(opts.apiUrl)
82
+ .pathname(`/vibe/${result.userSlug}/${result.appSlug}`)
83
+ .cleanParams("@stable-entry@", ".stable-entry.")
84
+ .toString();
85
+ await sendProgress(opts.ctx, "info", `Deployed: ${result.userSlug}/${result.appSlug}`);
86
+ await sendProgress(opts.ctx, "info", `URL: ${publicUrl}`);
87
+ }
88
+ return Result.Ok({ result, publicUrl });
89
+ }
90
+ //# sourceMappingURL=push-from-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-from-dir.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/push-from-dir.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibes-diy",
3
- "version": "2.2.3",
3
+ "version": "2.2.5",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "description": "Transform any DOM element into an AI-powered micro-app",
@@ -39,10 +39,10 @@
39
39
  "@fireproof/core-types-protocols-cloud": "~0.24.19",
40
40
  "@fireproof/core-types-protocols-dashboard": "~0.24.19",
41
41
  "@fireproof/use-fireproof": "~0.24.19",
42
- "@vibes.diy/api-impl": "^2.2.3",
43
- "@vibes.diy/api-types": "^2.2.3",
44
- "@vibes.diy/call-ai-v2": "^2.2.3",
45
- "@vibes.diy/prompts": "^2.2.3",
42
+ "@vibes.diy/api-impl": "^2.2.5",
43
+ "@vibes.diy/api-types": "^2.2.5",
44
+ "@vibes.diy/call-ai-v2": "^2.2.5",
45
+ "@vibes.diy/prompts": "^2.2.5",
46
46
  "arktype": "~2.2.0",
47
47
  "cmd-ts": "~0.15.0",
48
48
  "tsx": "~4.21.0",