vibes-diy 5.3.0 → 5.3.1
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.
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
1
|
+
import { describe, it, expect, afterEach } from "vitest";
|
|
2
|
+
import { readFileSync, writeFileSync, mkdtempSync, chmodSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
3
4
|
import { dirname, join } from "node:path";
|
|
4
5
|
import { fileURLToPath } from "node:url";
|
|
5
6
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
6
7
|
const REFERENCE_MD = join(here, "..", "..", "landing-pages", "src", "docs", "cli", "reference.md");
|
|
8
|
+
const PLUGIN_REFERENCE_MD = join(here, "..", "..", "claude-plugin", "vibes-diy", "skills", "vibes", "references", "command-reference.md");
|
|
7
9
|
async function loadDump() {
|
|
8
10
|
return import(join(here, "..", "scripts", "dump-cli-docs.mjs"));
|
|
9
11
|
}
|
|
12
|
+
function rootSection(markdown) {
|
|
13
|
+
const marker = "## `vibes-diy`\n\n```text\n";
|
|
14
|
+
const start = markdown.indexOf(marker);
|
|
15
|
+
if (start === -1)
|
|
16
|
+
throw new Error(`root section marker missing`);
|
|
17
|
+
const rest = markdown.slice(start + marker.length);
|
|
18
|
+
return rest.slice(0, rest.indexOf("\n```")).trim();
|
|
19
|
+
}
|
|
10
20
|
describe("published CLI reference freshness", () => {
|
|
11
21
|
it("committed root section matches the live root --help", async () => {
|
|
12
22
|
const { cliHelp } = await loadDump();
|
|
@@ -29,4 +39,30 @@ describe("published CLI reference freshness", () => {
|
|
|
29
39
|
}
|
|
30
40
|
}, 120000);
|
|
31
41
|
});
|
|
42
|
+
describe("plugin command-reference freshness", () => {
|
|
43
|
+
it("plugin command-reference.md is fresh", async () => {
|
|
44
|
+
const { buildPluginMarkdown } = await loadDump();
|
|
45
|
+
const committed = readFileSync(PLUGIN_REFERENCE_MD, "utf8");
|
|
46
|
+
const generated = buildPluginMarkdown();
|
|
47
|
+
expect(rootSection(committed), `plugin command reference is stale — regenerate with: pnpm --dir vibes-diy run docs:cli`).toBe(rootSection(generated));
|
|
48
|
+
}, 120000);
|
|
49
|
+
});
|
|
50
|
+
describe("CLI_DOCS_BIN generation source override", () => {
|
|
51
|
+
afterEach(() => {
|
|
52
|
+
delete process.env.CLI_DOCS_BIN;
|
|
53
|
+
});
|
|
54
|
+
it("generates from the designated binary, not the workspace CLI", async () => {
|
|
55
|
+
const { cliHelp, buildPluginMarkdown } = await loadDump();
|
|
56
|
+
const dir = mkdtempSync(join(tmpdir(), "vibes-docs-bin-"));
|
|
57
|
+
const stub = join(dir, "fake-vibes-diy");
|
|
58
|
+
writeFileSync(stub, `#!/usr/bin/env bash\necho "FAKE-PUBLISHED-CLI-HELP $*"\n`);
|
|
59
|
+
chmodSync(stub, 0o755);
|
|
60
|
+
process.env.CLI_DOCS_BIN = stub;
|
|
61
|
+
expect(cliHelp([])).toContain("FAKE-PUBLISHED-CLI-HELP --help");
|
|
62
|
+
const md = buildPluginMarkdown();
|
|
63
|
+
expect(md).toContain("FAKE-PUBLISHED-CLI-HELP");
|
|
64
|
+
delete process.env.CLI_DOCS_BIN;
|
|
65
|
+
expect(cliHelp([])).not.toContain("FAKE-PUBLISHED-CLI-HELP");
|
|
66
|
+
}, 120000);
|
|
67
|
+
});
|
|
32
68
|
//# sourceMappingURL=cli-docs-freshness.test.js.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"cli-docs-freshness.test.js","sourceRoot":"","sources":["../../jsr/cli/cli-docs-freshness.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibes-diy",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.1",
|
|
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.29.0",
|
|
33
|
-
"@vibes.diy/api-impl": "^5.3.
|
|
34
|
-
"@vibes.diy/api-types": "^5.3.
|
|
35
|
-
"@vibes.diy/call-ai-v2": "^5.3.
|
|
36
|
-
"@vibes.diy/cmd-harness": "^5.3.
|
|
37
|
-
"@vibes.diy/cmd-tools": "^5.3.
|
|
38
|
-
"@vibes.diy/identity": "^5.3.
|
|
39
|
-
"@vibes.diy/prompts": "^5.3.
|
|
33
|
+
"@vibes.diy/api-impl": "^5.3.1",
|
|
34
|
+
"@vibes.diy/api-types": "^5.3.1",
|
|
35
|
+
"@vibes.diy/call-ai-v2": "^5.3.1",
|
|
36
|
+
"@vibes.diy/cmd-harness": "^5.3.1",
|
|
37
|
+
"@vibes.diy/cmd-tools": "^5.3.1",
|
|
38
|
+
"@vibes.diy/identity": "^5.3.1",
|
|
39
|
+
"@vibes.diy/prompts": "^5.3.1",
|
|
40
40
|
"arktype": "~2.2.3",
|
|
41
41
|
"charwise": "~3.0.1",
|
|
42
42
|
"cmd-ts": "~0.15.0",
|
|
@@ -8,11 +8,13 @@ const here = dirname(fileURLToPath(import.meta.url));
|
|
|
8
8
|
const PKG_DIR = join(here, "..");
|
|
9
9
|
const RUN_JS = join(PKG_DIR, "cli", "run.js");
|
|
10
10
|
const OUT = join(PKG_DIR, "..", "landing-pages", "src", "docs", "cli", "reference.md");
|
|
11
|
+
const PLUGIN_OUT = join(PKG_DIR, "..", "claude-plugin", "vibes-diy", "skills", "vibes", "references", "command-reference.md");
|
|
11
12
|
const CLEAN_CWD = join(mkdtempSync(join(tmpdir(), "vibes-")), "cli-docs-cwd");
|
|
12
13
|
mkdirSync(CLEAN_CWD, { recursive: true });
|
|
13
14
|
const CWD_DEFAULT_NEEDLE = "[default: cli-docs-cwd]";
|
|
14
15
|
const CWD_DEFAULT_DOC = "[default: <current directory name>]";
|
|
15
16
|
export function cliHelp(args) {
|
|
17
|
+
const docsBin = process.env.CLI_DOCS_BIN;
|
|
16
18
|
const env = {
|
|
17
19
|
...process.env,
|
|
18
20
|
NO_COLOR: "1",
|
|
@@ -23,12 +25,19 @@ export function cliHelp(args) {
|
|
|
23
25
|
if (key.startsWith("VIBES_"))
|
|
24
26
|
delete env[key];
|
|
25
27
|
}
|
|
26
|
-
const res =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
const res = docsBin
|
|
29
|
+
? spawnSync(docsBin, [...args, "--help"], {
|
|
30
|
+
encoding: "utf8",
|
|
31
|
+
timeout: 120000,
|
|
32
|
+
cwd: CLEAN_CWD,
|
|
33
|
+
env,
|
|
34
|
+
})
|
|
35
|
+
: spawnSync(process.execPath, [RUN_JS, ...args, "--help"], {
|
|
36
|
+
encoding: "utf8",
|
|
37
|
+
timeout: 120000,
|
|
38
|
+
cwd: CLEAN_CWD,
|
|
39
|
+
env,
|
|
40
|
+
});
|
|
32
41
|
const out = `${res.stdout ?? ""}${res.stderr ?? ""}`
|
|
33
42
|
.split("\n")
|
|
34
43
|
.filter((line) => !/^\(node:\d+\)/.test(line) && !line.startsWith("(Use `node --trace"))
|
|
@@ -67,7 +76,7 @@ function stripQuickstartFooter(helpText) {
|
|
|
67
76
|
const at = helpText.indexOf("\n## CLI Quickstart");
|
|
68
77
|
return at === -1 ? helpText : helpText.slice(0, at).trim();
|
|
69
78
|
}
|
|
70
|
-
|
|
79
|
+
function buildSections() {
|
|
71
80
|
const rootHelp = cliHelp([]);
|
|
72
81
|
const commands = parseSubcommands(rootHelp);
|
|
73
82
|
const sections = [];
|
|
@@ -78,6 +87,10 @@ export function buildMarkdown() {
|
|
|
78
87
|
sections.push(`### \`vibes-diy ${cmd} ${sub}\`\n\n${fence(stripQuickstartFooter(cliHelp([cmd, sub])))}`);
|
|
79
88
|
}
|
|
80
89
|
}
|
|
90
|
+
return { rootHelp, sections };
|
|
91
|
+
}
|
|
92
|
+
export function buildMarkdown() {
|
|
93
|
+
const { rootHelp, sections } = buildSections();
|
|
81
94
|
return `---
|
|
82
95
|
title: "CLI command reference"
|
|
83
96
|
description: "Every vibes-diy command, subcommand, and flag — generated from the CLI's own help output, so it can't diverge from what npx vibes-diy actually does."
|
|
@@ -105,6 +118,25 @@ and when), read the [CLI handbook](/docs/cli) first.
|
|
|
105
118
|
|
|
106
119
|
${fence(rootHelp)}
|
|
107
120
|
|
|
121
|
+
${sections.join("\n\n")}
|
|
122
|
+
`;
|
|
123
|
+
}
|
|
124
|
+
export function buildPluginMarkdown() {
|
|
125
|
+
const { rootHelp, sections } = buildSections();
|
|
126
|
+
return `# vibes-diy command reference
|
|
127
|
+
|
|
128
|
+
<!-- GENERATED FILE — do not edit by hand. Regenerate with:
|
|
129
|
+
pnpm --dir vibes-diy run docs:cli
|
|
130
|
+
Source: the CLI's own --help output. -->
|
|
131
|
+
|
|
132
|
+
Every command, subcommand, and flag below is generated from the CLI's own
|
|
133
|
+
\`--help\` output, so it cannot diverge from what the installed CLI does.
|
|
134
|
+
When this file and the live \`vibes-diy --help\` disagree, trust the live CLI.
|
|
135
|
+
|
|
136
|
+
## \`vibes-diy\`
|
|
137
|
+
|
|
138
|
+
${fence(rootHelp)}
|
|
139
|
+
|
|
108
140
|
${sections.join("\n\n")}
|
|
109
141
|
`;
|
|
110
142
|
}
|
|
@@ -113,5 +145,9 @@ if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
|
113
145
|
mkdirSync(dirname(OUT), { recursive: true });
|
|
114
146
|
writeFileSync(OUT, md);
|
|
115
147
|
console.log(`wrote ${OUT} (${md.length} bytes)`);
|
|
148
|
+
const pluginMd = buildPluginMarkdown();
|
|
149
|
+
mkdirSync(dirname(PLUGIN_OUT), { recursive: true });
|
|
150
|
+
writeFileSync(PLUGIN_OUT, pluginMd);
|
|
151
|
+
console.log(`wrote ${PLUGIN_OUT} (${pluginMd.length} bytes)`);
|
|
116
152
|
}
|
|
117
153
|
//# sourceMappingURL=dump-cli-docs.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dump-cli-docs.mjs","sourceRoot":"","sources":["../../jsr/scripts/dump-cli-docs.mjs"],"names":[],"mappings":";AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dump-cli-docs.mjs","sourceRoot":"","sources":["../../jsr/scripts/dump-cli-docs.mjs"],"names":[],"mappings":"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"}
|