@curdx/flow 2.0.16 → 2.0.17
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/cli/install-companions.js +6 -6
- package/cli/install-curdx-plugin.js +6 -6
- package/cli/lib/process.js +11 -0
- package/cli/uninstall.js +5 -3
- package/cli/upgrade.js +3 -3
- package/cli/utils.js +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Claude Code Discipline Layer — spec-driven workflow + goal-backward verification + Karpathy 4 principles enforced via gates. Stops Claude from faking \"done\" on non-trivial features.",
|
|
9
|
-
"version": "2.0.
|
|
9
|
+
"version": "2.0.17"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "curdx-flow",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.17",
|
|
4
4
|
"description": "Claude Code Discipline Layer — spec-driven workflow + goal-backward verification + Karpathy 4 principles enforced via gates. Stops Claude from faking \"done\" on non-trivial features.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "wdx",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { color, ensureClaudeMemRuntimes, listPlugins, log, multiselectClack, note, run, text, writeConfig } from "./utils.js";
|
|
1
|
+
import { color, ensureClaudeMemRuntimes, listPlugins, log, multiselectClack, note, resultLastLine, run, text, writeConfig } from "./utils.js";
|
|
2
2
|
import { BUNDLED_MCPS, RECOMMENDED_PLUGINS, REQUIRED_PLUGINS } from "./registry.js";
|
|
3
3
|
import { readUserMcpConfig } from "./utils.js";
|
|
4
4
|
import {
|
|
@@ -37,7 +37,7 @@ export async function installRequiredPlugins({ yes, language, config }) {
|
|
|
37
37
|
}
|
|
38
38
|
} else {
|
|
39
39
|
console.log(
|
|
40
|
-
` ${color.red("✗")} ${plugin.name} install failed: ${ir
|
|
40
|
+
` ${color.red("✗")} ${plugin.name} install failed: ${resultLastLine(ir)}`
|
|
41
41
|
);
|
|
42
42
|
console.log(
|
|
43
43
|
color.dim(
|
|
@@ -76,7 +76,7 @@ export async function registerBundledMcps() {
|
|
|
76
76
|
log.info(` ${mcp.name.padEnd(22)} ${color.dim("already exists — skipped")}`);
|
|
77
77
|
} else {
|
|
78
78
|
log.warn(
|
|
79
|
-
` ${mcp.name.padEnd(22)} registration failed: ${r
|
|
79
|
+
` ${mcp.name.padEnd(22)} registration failed: ${resultLastLine(r)}`
|
|
80
80
|
);
|
|
81
81
|
log.info(
|
|
82
82
|
` Run manually: claude mcp add --scope user ${mcp.name} -- ${mcp.command} ${mcp.args.join(" ")}`
|
|
@@ -165,7 +165,7 @@ export async function installRecommendedPlugins({ all, yes, language }) {
|
|
|
165
165
|
}
|
|
166
166
|
} else {
|
|
167
167
|
console.log(
|
|
168
|
-
` ${color.red("✗")} ${rec.name} install failed: ${ir
|
|
168
|
+
` ${color.red("✗")} ${rec.name} install failed: ${resultLastLine(ir)}`
|
|
169
169
|
);
|
|
170
170
|
console.log(
|
|
171
171
|
color.dim(
|
|
@@ -246,8 +246,8 @@ async function promptPluginConfig(plugin, language, config) {
|
|
|
246
246
|
} else {
|
|
247
247
|
log.warn(
|
|
248
248
|
language === "zh"
|
|
249
|
-
? ` Context7 MCP 配置失败: ${r
|
|
250
|
-
: ` Context7 MCP configuration failed: ${r
|
|
249
|
+
? ` Context7 MCP 配置失败: ${resultLastLine(r)}`
|
|
250
|
+
: ` Context7 MCP configuration failed: ${resultLastLine(r)}`
|
|
251
251
|
);
|
|
252
252
|
log.info(
|
|
253
253
|
color.dim(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { color, log, run } from "./utils.js";
|
|
1
|
+
import { color, log, resultOutput, run } from "./utils.js";
|
|
2
2
|
import {
|
|
3
3
|
pluginInstallArgs,
|
|
4
4
|
pluginMarketplaceAddArgs,
|
|
@@ -24,7 +24,7 @@ export async function addCurdxMarketplace({ marketplaceSource, marketplaceLabel,
|
|
|
24
24
|
{ silent: true }
|
|
25
25
|
);
|
|
26
26
|
if (addRes.code !== 0 && !addRes.stderr.includes("already")) {
|
|
27
|
-
log.warn(`marketplace add output: ${
|
|
27
|
+
log.warn(`marketplace add output: ${resultOutput(addRes)}`);
|
|
28
28
|
} else {
|
|
29
29
|
log.ok(
|
|
30
30
|
`curdx-flow-marketplace added ${color.dim(useOffline ? "(offline, no GitHub fetch)" : "(from GitHub)")}`
|
|
@@ -59,7 +59,7 @@ export async function installCurdxFlowPlugin({ prevCurdxFlow, shippedVersion })
|
|
|
59
59
|
{ silent: true }
|
|
60
60
|
);
|
|
61
61
|
if (r.code !== 0) {
|
|
62
|
-
log.err(`Install failed: ${
|
|
62
|
+
log.err(`Install failed: ${resultOutput(r)}`);
|
|
63
63
|
process.exit(1);
|
|
64
64
|
}
|
|
65
65
|
log.ok(`curdx-flow re-registered at v${shippedVersion}`);
|
|
@@ -76,7 +76,7 @@ export async function installCurdxFlowPlugin({ prevCurdxFlow, shippedVersion })
|
|
|
76
76
|
{ silent: true }
|
|
77
77
|
);
|
|
78
78
|
if (r.code !== 0) {
|
|
79
|
-
log.err(`Install failed: ${
|
|
79
|
+
log.err(`Install failed: ${resultOutput(r)}`);
|
|
80
80
|
process.exit(1);
|
|
81
81
|
}
|
|
82
82
|
log.ok(`curdx-flow upgraded to v${shippedVersion}`);
|
|
@@ -93,7 +93,7 @@ export async function installCurdxFlowPlugin({ prevCurdxFlow, shippedVersion })
|
|
|
93
93
|
{ silent: true }
|
|
94
94
|
);
|
|
95
95
|
if (r.code !== 0) {
|
|
96
|
-
log.err(`Install failed: ${
|
|
96
|
+
log.err(`Install failed: ${resultOutput(r)}`);
|
|
97
97
|
process.exit(1);
|
|
98
98
|
}
|
|
99
99
|
log.ok("curdx-flow re-registered");
|
|
@@ -107,7 +107,7 @@ export async function installCurdxFlowPlugin({ prevCurdxFlow, shippedVersion })
|
|
|
107
107
|
{ silent: true }
|
|
108
108
|
);
|
|
109
109
|
if (r.code !== 0) {
|
|
110
|
-
log.err(`Install failed: ${
|
|
110
|
+
log.err(`Install failed: ${resultOutput(r)}`);
|
|
111
111
|
process.exit(1);
|
|
112
112
|
}
|
|
113
113
|
if (shippedVersion) {
|
package/cli/lib/process.js
CHANGED
|
@@ -42,3 +42,14 @@ export function has(cmd) {
|
|
|
42
42
|
const res = runSync("which", [cmd]);
|
|
43
43
|
return res.code === 0 && res.stdout.trim().length > 0;
|
|
44
44
|
}
|
|
45
|
+
|
|
46
|
+
export function resultOutput(result) {
|
|
47
|
+
return (result?.stderr || "").trim() || (result?.stdout || "").trim();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function resultLastLine(result) {
|
|
51
|
+
const output = resultOutput(result);
|
|
52
|
+
if (!output) return "";
|
|
53
|
+
const lines = output.split(/\r?\n/).filter(Boolean);
|
|
54
|
+
return lines.at(-1) || "";
|
|
55
|
+
}
|
package/cli/uninstall.js
CHANGED
|
@@ -10,6 +10,8 @@ import {
|
|
|
10
10
|
color,
|
|
11
11
|
log,
|
|
12
12
|
run,
|
|
13
|
+
resultLastLine,
|
|
14
|
+
resultOutput,
|
|
13
15
|
confirm,
|
|
14
16
|
multiSelect,
|
|
15
17
|
claudeVersion,
|
|
@@ -92,7 +94,7 @@ export async function uninstall(args = []) {
|
|
|
92
94
|
if (r.code === 0) {
|
|
93
95
|
log.ok("curdx-flow uninstalled");
|
|
94
96
|
} else {
|
|
95
|
-
log.err(`Uninstall failed: ${
|
|
97
|
+
log.err(`Uninstall failed: ${resultOutput(r)}`);
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
|
|
@@ -142,7 +144,7 @@ export async function uninstall(args = []) {
|
|
|
142
144
|
console.log(` ${color.green("✓")} ${rec.name} uninstalled`);
|
|
143
145
|
} else {
|
|
144
146
|
console.log(
|
|
145
|
-
` ${color.red("✗")} ${rec.name} uninstall failed: ${r
|
|
147
|
+
` ${color.red("✗")} ${rec.name} uninstall failed: ${resultLastLine(r)}`
|
|
146
148
|
);
|
|
147
149
|
}
|
|
148
150
|
}
|
|
@@ -239,7 +241,7 @@ export async function uninstall(args = []) {
|
|
|
239
241
|
if (r.code === 0) {
|
|
240
242
|
log.ok(`Removed marketplace ${marketplaceId}`);
|
|
241
243
|
} else if (!r.stderr.includes("not found")) {
|
|
242
|
-
log.warn(`Failed to remove marketplace ${marketplaceId}: ${r
|
|
244
|
+
log.warn(`Failed to remove marketplace ${marketplaceId}: ${resultLastLine(r)}`);
|
|
243
245
|
}
|
|
244
246
|
}
|
|
245
247
|
|
package/cli/upgrade.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* upgrade command — update curdx-flow + recommended plugins to latest.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { color, log, run, listPlugins, claudeVersion } from "./utils.js";
|
|
5
|
+
import { color, log, run, listPlugins, claudeVersion, resultLastLine } from "./utils.js";
|
|
6
6
|
import {
|
|
7
7
|
PLUGINS_TO_UPDATE,
|
|
8
8
|
MARKETPLACES_TO_REFRESH,
|
|
@@ -33,7 +33,7 @@ export async function upgrade(args = []) {
|
|
|
33
33
|
} else {
|
|
34
34
|
// Not a fatal — might not be added
|
|
35
35
|
if (!r.stderr.includes("not found")) {
|
|
36
|
-
log.warn(` ${mp}: ${r
|
|
36
|
+
log.warn(` ${mp}: ${resultLastLine(r)}`);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -65,7 +65,7 @@ export async function upgrade(args = []) {
|
|
|
65
65
|
log.info(` ${pluginName.padEnd(22)} already up to date`);
|
|
66
66
|
}
|
|
67
67
|
} else {
|
|
68
|
-
log.warn(` ${pluginName.padEnd(22)} ${r
|
|
68
|
+
log.warn(` ${pluginName.padEnd(22)} ${resultLastLine(r)}`);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
package/cli/utils.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
export { VERSION } from "./lib/version.js";
|
|
9
9
|
export { color, log } from "./lib/logging.js";
|
|
10
|
-
export { has, run, runSync } from "./lib/process.js";
|
|
10
|
+
export { has, resultLastLine, resultOutput, run, runSync } from "./lib/process.js";
|
|
11
11
|
export {
|
|
12
12
|
confirm,
|
|
13
13
|
intro,
|