@curdx/flow 2.3.6 → 2.3.7
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 +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +6 -0
- package/cli/README.md +2 -0
- package/cli/doctor-workflow.js +11 -0
- package/cli/lib/doctor-report.js +22 -0
- 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.3.
|
|
9
|
+
"version": "2.3.7"
|
|
10
10
|
},
|
|
11
11
|
"allowCrossMarketplaceDependenciesOn": [
|
|
12
12
|
"context7-marketplace"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"name": "curdx-flow",
|
|
17
17
|
"source": "./",
|
|
18
18
|
"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.",
|
|
19
|
-
"version": "2.3.
|
|
19
|
+
"version": "2.3.7",
|
|
20
20
|
"author": {
|
|
21
21
|
"name": "wdx",
|
|
22
22
|
"email": "bydongxin@gmail.com"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "curdx-flow",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.7",
|
|
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",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.3.7
|
|
4
|
+
|
|
5
|
+
- taught `doctor` to detect source/package-vs-installed plugin version drift so local plugin development and release validation no longer silently run against stale Claude plugin cache state
|
|
6
|
+
- exposed bundled plugin body version in the runtime report and machine-readable doctor payload for automation consumers
|
|
7
|
+
- documented the reinstall/restart recovery path when Claude is still loading an older CurDX-Flow build
|
|
8
|
+
|
|
3
9
|
## 2.3.6
|
|
4
10
|
|
|
5
11
|
- taught `doctor` to inspect file-based Claude Code managed settings and apply them at the correct highest-precedence layer for CurDX-Flow plugin options
|
package/cli/README.md
CHANGED
|
@@ -44,6 +44,8 @@ External diagnostics: claude CLI / curdx-flow / required MCPs / recommended plug
|
|
|
44
44
|
|
|
45
45
|
`--json` emits the full health result as machine-readable JSON for CI, wrappers, or external diagnostics. It includes `contractVersion`, `metadata.appliedFixes`, settings inspection scope metadata, the rendered report structure, and raw `doctorData`, including CurDX-Flow plugin option precedence, file-based managed settings, and runtime env projection.
|
|
46
46
|
|
|
47
|
+
`doctor` also compares the plugin body shipped with the current CLI/package against the `curdx-flow` version Claude actually has installed, so local development and release validation do not silently run against stale plugin cache state.
|
|
48
|
+
|
|
47
49
|
### Project initialization (not a CLI command)
|
|
48
50
|
|
|
49
51
|
Project initialization is a Claude Code slash command, not a CLI one. After `install`, open your project in Claude Code and run:
|
package/cli/doctor-workflow.js
CHANGED
|
@@ -163,9 +163,12 @@ export async function readBundledPluginRuntimeDefaults(packageRoot = PACKAGE_ROO
|
|
|
163
163
|
const pluginSettingsPath = path.join(packageRoot, "settings.json");
|
|
164
164
|
const pluginManifestPath = path.join(packageRoot, ".claude-plugin", "plugin.json");
|
|
165
165
|
const monitorsPath = path.join(packageRoot, "monitors", "monitors.json");
|
|
166
|
+
const packageJsonPath = path.join(packageRoot, "package.json");
|
|
166
167
|
|
|
167
168
|
const state = {
|
|
168
169
|
exists: false,
|
|
170
|
+
packageVersion: null,
|
|
171
|
+
pluginVersion: null,
|
|
169
172
|
defaultAgent: null,
|
|
170
173
|
subagentStatusLineCommand: null,
|
|
171
174
|
monitorCount: 0,
|
|
@@ -189,6 +192,13 @@ export async function readBundledPluginRuntimeDefaults(packageRoot = PACKAGE_ROO
|
|
|
189
192
|
pluginManifest = null;
|
|
190
193
|
}
|
|
191
194
|
|
|
195
|
+
try {
|
|
196
|
+
const pkg = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
|
|
197
|
+
state.packageVersion = typeof pkg?.version === "string" ? pkg.version : null;
|
|
198
|
+
} catch {
|
|
199
|
+
state.packageVersion = null;
|
|
200
|
+
}
|
|
201
|
+
|
|
192
202
|
try {
|
|
193
203
|
monitors = JSON.parse(await fs.readFile(monitorsPath, "utf-8"));
|
|
194
204
|
} catch {
|
|
@@ -200,6 +210,7 @@ export async function readBundledPluginRuntimeDefaults(packageRoot = PACKAGE_ROO
|
|
|
200
210
|
}
|
|
201
211
|
|
|
202
212
|
state.exists = true;
|
|
213
|
+
state.pluginVersion = typeof pluginManifest?.version === "string" ? pluginManifest.version : null;
|
|
203
214
|
state.defaultAgent = typeof pluginSettings?.agent === "string" ? pluginSettings.agent : null;
|
|
204
215
|
state.subagentStatusLineCommand =
|
|
205
216
|
typeof pluginSettings?.subagentStatusLine?.command === "string"
|
package/cli/lib/doctor-report.js
CHANGED
|
@@ -263,9 +263,23 @@ export function buildDoctorReport({
|
|
|
263
263
|
pushLine(lines, "ok", `Node ${nodeVersion}`);
|
|
264
264
|
|
|
265
265
|
const curdx = plugins.find((plugin) => plugin.name === "curdx-flow");
|
|
266
|
+
const bundledVersion =
|
|
267
|
+
bundledPluginRuntimeDefaults?.pluginVersion || bundledPluginRuntimeDefaults?.packageVersion || null;
|
|
266
268
|
if (curdx) {
|
|
267
269
|
if (curdx.status === "enabled") {
|
|
268
270
|
pushLine(lines, "ok", `curdx-flow v${curdx.version} (enabled)`);
|
|
271
|
+
if (bundledVersion && curdx.version && curdx.version !== bundledVersion) {
|
|
272
|
+
pushLine(
|
|
273
|
+
lines,
|
|
274
|
+
"warn",
|
|
275
|
+
`curdx-flow source/body v${bundledVersion} differs from installed v${curdx.version}`,
|
|
276
|
+
[
|
|
277
|
+
"you are not validating the same CurDX-Flow build that Claude currently loads",
|
|
278
|
+
"reinstall the plugin from the current source/package, then restart Claude Code",
|
|
279
|
+
"run: npx @curdx/flow install --all",
|
|
280
|
+
]
|
|
281
|
+
);
|
|
282
|
+
}
|
|
269
283
|
} else {
|
|
270
284
|
pushLine(
|
|
271
285
|
lines,
|
|
@@ -442,6 +456,14 @@ export function buildDoctorReport({
|
|
|
442
456
|
if (bundledPluginRuntimeDefaults?.exists) {
|
|
443
457
|
const bundledRuntimeSection = createSection("CurDX-Flow bundled runtime:");
|
|
444
458
|
|
|
459
|
+
if (bundledVersion) {
|
|
460
|
+
pushSectionLine(
|
|
461
|
+
bundledRuntimeSection,
|
|
462
|
+
"info",
|
|
463
|
+
`Bundled plugin body v${bundledVersion}`
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
|
|
445
467
|
if (bundledPluginRuntimeDefaults.defaultAgent) {
|
|
446
468
|
pushSectionLine(
|
|
447
469
|
bundledRuntimeSection,
|