compound-workflow 1.6.11 → 1.6.13
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/package.json
CHANGED
package/scripts/install-cli.mjs
CHANGED
|
@@ -328,6 +328,11 @@ function ensureDirs(targetRoot, dryRun) {
|
|
|
328
328
|
}
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Writes .cursor-plugin/plugin.json and .claude-plugin/plugin.json at targetRoot.
|
|
333
|
+
* Paths (commands, agents, skills) in the written manifests are relative to project root
|
|
334
|
+
* (parent of .cursor-plugin / .claude-plugin) so Cursor/Claude resolve assets correctly.
|
|
335
|
+
*/
|
|
331
336
|
function writePluginManifests(targetRoot, dryRun, isSelfInstall) {
|
|
332
337
|
const pathsBase = isSelfInstall ? "./src/.agents" : "./node_modules/compound-workflow/src/.agents";
|
|
333
338
|
const pathOverrides = {
|
|
@@ -462,9 +467,6 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
462
467
|
}
|
|
463
468
|
})();
|
|
464
469
|
|
|
465
|
-
// For self-install (dev), use the package root with user scope.
|
|
466
|
-
// For consumer projects, use the project root with project scope so each
|
|
467
|
-
// project gets its own entry and installs don't overwrite each other.
|
|
468
470
|
const targetRootReal = realpathSafe(isSelfInstall ? PACKAGE_ROOT : targetRoot);
|
|
469
471
|
const pluginId = "compound-workflow@local";
|
|
470
472
|
const scope = isSelfInstall ? "user" : "project";
|
|
@@ -479,23 +481,16 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
479
481
|
}
|
|
480
482
|
const plugins = ensureObject(installed.plugins);
|
|
481
483
|
const existingEntries = Array.isArray(plugins[pluginId]) ? plugins[pluginId] : [];
|
|
482
|
-
|
|
483
|
-
// Remove legacy scope:"user" entries when switching to project-scope
|
|
484
484
|
const cleanedEntries = scope === "project"
|
|
485
485
|
? existingEntries.filter((e) => e.scope !== "user")
|
|
486
486
|
: existingEntries;
|
|
487
|
-
|
|
488
|
-
// Prune stale entries whose installPath no longer has a plugin manifest on disk
|
|
489
487
|
const pruned = cleanedEntries.filter((e) => {
|
|
490
488
|
const manifest = path.join(e.installPath || "", ".claude-plugin", "plugin.json");
|
|
491
489
|
return fs.existsSync(manifest);
|
|
492
490
|
});
|
|
493
|
-
|
|
494
|
-
// Find existing entry for this project (or user-scope entry for self-install)
|
|
495
491
|
const matchIndex = pruned.findIndex((e) =>
|
|
496
492
|
scope === "user" ? e.scope === "user" : e.scope === "project" && e.projectPath === targetRootReal
|
|
497
493
|
);
|
|
498
|
-
|
|
499
494
|
const existingEntry = matchIndex >= 0 ? pruned[matchIndex] : {};
|
|
500
495
|
const now = new Date().toISOString();
|
|
501
496
|
const newEntry = {
|
|
@@ -506,7 +501,6 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
506
501
|
installedAt: existingEntry.installedAt || now,
|
|
507
502
|
lastUpdated: now,
|
|
508
503
|
};
|
|
509
|
-
|
|
510
504
|
plugins[pluginId] = matchIndex >= 0
|
|
511
505
|
? pruned.map((e, i) => (i === matchIndex ? newEntry : e))
|
|
512
506
|
: [...pruned, newEntry];
|
|
@@ -520,7 +514,6 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
520
514
|
settings = {};
|
|
521
515
|
}
|
|
522
516
|
}
|
|
523
|
-
// User-level settings (backward compat)
|
|
524
517
|
settings.enabledPlugins = ensureObject(settings.enabledPlugins);
|
|
525
518
|
settings.enabledPlugins[pluginId] = true;
|
|
526
519
|
|
|
@@ -534,7 +527,6 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
534
527
|
fs.writeFileSync(installedPath, JSON.stringify(installed, null, 2) + "\n", "utf8");
|
|
535
528
|
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n", "utf8");
|
|
536
529
|
|
|
537
|
-
// Project-level settings required for scope:"project" to activate
|
|
538
530
|
if (!isSelfInstall) {
|
|
539
531
|
const projectSettingsPath = path.join(targetRoot, ".claude", "settings.json");
|
|
540
532
|
let projectSettings = {};
|
|
@@ -543,6 +535,9 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
543
535
|
}
|
|
544
536
|
projectSettings.enabledPlugins = ensureObject(projectSettings.enabledPlugins);
|
|
545
537
|
projectSettings.enabledPlugins[pluginId] = true;
|
|
538
|
+
if (projectSettings.extraKnownMarketplaces?.["compound-workflow"]) {
|
|
539
|
+
delete projectSettings.extraKnownMarketplaces["compound-workflow"];
|
|
540
|
+
}
|
|
546
541
|
fs.mkdirSync(path.join(targetRoot, ".claude"), { recursive: true });
|
|
547
542
|
fs.writeFileSync(projectSettingsPath, JSON.stringify(projectSettings, null, 2) + "\n", "utf8");
|
|
548
543
|
}
|
|
@@ -555,7 +550,6 @@ function applyCursorRegistration(targetRoot, dryRun, noRegisterCursor, forceRegi
|
|
|
555
550
|
console.log("[cursor] Cursor not detected; skipped Cursor plugin registration. Use --register-cursor to force.");
|
|
556
551
|
return;
|
|
557
552
|
}
|
|
558
|
-
|
|
559
553
|
const registrationPath = path.join(targetRoot, ".cursor-plugin", "registration.json");
|
|
560
554
|
if (!fs.existsSync(registrationPath)) return;
|
|
561
555
|
console.log("Registered compound-workflow with Cursor. Restart Cursor; enable 'Include third-party Plugins, Skills, and other configs' in Settings if needed.");
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "compound-workflow",
|
|
3
|
-
"owner": { "name": "Compound Workflow" },
|
|
4
|
-
"plugins": [
|
|
5
|
-
{
|
|
6
|
-
"name": "compound-workflow",
|
|
7
|
-
"source": ".",
|
|
8
|
-
"description": "Clarify → plan → execute → verify → capture workflow. Commands, skills, and agents for structured development."
|
|
9
|
-
}
|
|
10
|
-
]
|
|
11
|
-
}
|