vibes-diy 2.2.3 → 2.2.4
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/cli/cmds/generate-cmd.js +18 -58
- package/cli/cmds/generate-cmd.js.map +1 -1
- package/cli/cmds/lint-vibe.d.ts +6 -0
- package/cli/cmds/lint-vibe.js +17 -0
- package/cli/cmds/lint-vibe.js.map +1 -0
- package/cli/cmds/push-cmd.js +13 -76
- package/cli/cmds/push-cmd.js.map +1 -1
- package/cli/cmds/push-from-dir.d.ts +43 -0
- package/cli/cmds/push-from-dir.js +90 -0
- package/cli/cmds/push-from-dir.js.map +1 -0
- package/package.json +5 -5
package/cli/cmds/generate-cmd.js
CHANGED
|
@@ -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 {
|
|
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
|
|
136
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAEL,MAAM,EAEN,MAAM,EAGN,gBAAgB,EAChB,QAAQ,EACR,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"generate-cmd.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/generate-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/cli/cmds/push-cmd.js
CHANGED
|
@@ -1,38 +1,11 @@
|
|
|
1
1
|
import { command, flag, option, string } from "cmd-ts";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
|
6
|
+
import { sendMsg } from "../cmd-evento.js";
|
|
9
7
|
import { resolveUserSlug } from "../resolve-user-slug.js";
|
|
10
|
-
|
|
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
|
|
66
|
-
|
|
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
|
-
|
|
43
|
+
instantJoin: args.instantJoin,
|
|
44
|
+
apiUrl: args.apiUrl,
|
|
45
|
+
api,
|
|
46
|
+
ctx,
|
|
81
47
|
});
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
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) {
|
package/cli/cmds/push-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-cmd.js","sourceRoot":"","sources":["../../../jsr/cli/cmds/push-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,
|
|
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
|
+
"version": "2.2.4",
|
|
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.
|
|
43
|
-
"@vibes.diy/api-types": "^2.2.
|
|
44
|
-
"@vibes.diy/call-ai-v2": "^2.2.
|
|
45
|
-
"@vibes.diy/prompts": "^2.2.
|
|
42
|
+
"@vibes.diy/api-impl": "^2.2.4",
|
|
43
|
+
"@vibes.diy/api-types": "^2.2.4",
|
|
44
|
+
"@vibes.diy/call-ai-v2": "^2.2.4",
|
|
45
|
+
"@vibes.diy/prompts": "^2.2.4",
|
|
46
46
|
"arktype": "~2.2.0",
|
|
47
47
|
"cmd-ts": "~0.15.0",
|
|
48
48
|
"tsx": "~4.21.0",
|