@axiomatic-labs/claudeflow 2.49.27 → 2.49.28
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/lib/install.js +15 -4
- package/package.json +1 -1
package/lib/install.js
CHANGED
|
@@ -395,8 +395,8 @@ function pathHash(p) {
|
|
|
395
395
|
return h.digest('hex');
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
function syncManagedGlobalDir(srcDir, dstDir, backupRoot, filter) {
|
|
399
|
-
const out = { synced: 0, changed: 0, backups: 0, failed: 0 };
|
|
398
|
+
function syncManagedGlobalDir(srcDir, dstDir, backupRoot, filter, label) {
|
|
399
|
+
const out = { synced: 0, changed: 0, backups: 0, failed: 0, failures: [] };
|
|
400
400
|
if (!fs.existsSync(srcDir)) return out;
|
|
401
401
|
fs.mkdirSync(dstDir, { recursive: true });
|
|
402
402
|
for (const e of fs.readdirSync(srcDir, { withFileTypes: true })) {
|
|
@@ -413,8 +413,9 @@ function syncManagedGlobalDir(srcDir, dstDir, backupRoot, filter) {
|
|
|
413
413
|
const r = replaceManagedPath(s, d, backupRoot, dstDir);
|
|
414
414
|
if (r.movedAside) out.backups++;
|
|
415
415
|
out.changed++;
|
|
416
|
-
} catch {
|
|
416
|
+
} catch (err) {
|
|
417
417
|
out.failed++;
|
|
418
|
+
out.failures.push(`${label}:${e.name}:${err && err.code ? err.code : 'ERROR'}`);
|
|
418
419
|
}
|
|
419
420
|
}
|
|
420
421
|
return out;
|
|
@@ -428,12 +429,14 @@ function syncGlobalClaudeArtifacts(src, homeDir = os.homedir()) {
|
|
|
428
429
|
path.join(homeDir, '.claude', 'skills'),
|
|
429
430
|
backupRoot,
|
|
430
431
|
e => e.isDirectory() && e.name.startsWith('claudeflow-'),
|
|
432
|
+
'global-skills',
|
|
431
433
|
);
|
|
432
434
|
const agentStats = syncManagedGlobalDir(
|
|
433
435
|
path.join(src, '.claude', 'agents'),
|
|
434
436
|
path.join(homeDir, '.claude', 'agents'),
|
|
435
437
|
backupRoot,
|
|
436
438
|
e => e.isFile() && e.name.startsWith('claudeflow-') && e.name.endsWith('.md'),
|
|
439
|
+
'global-agents',
|
|
437
440
|
);
|
|
438
441
|
return {
|
|
439
442
|
skills: skillStats.synced,
|
|
@@ -441,6 +444,7 @@ function syncGlobalClaudeArtifacts(src, homeDir = os.homedir()) {
|
|
|
441
444
|
changed: skillStats.changed + agentStats.changed,
|
|
442
445
|
backups: skillStats.backups + agentStats.backups,
|
|
443
446
|
failed: skillStats.failed + agentStats.failed,
|
|
447
|
+
failures: [...skillStats.failures, ...agentStats.failures],
|
|
444
448
|
};
|
|
445
449
|
}
|
|
446
450
|
|
|
@@ -830,7 +834,10 @@ function installFromPayload(src, cwd, options = {}) {
|
|
|
830
834
|
out.globalAgents = r.agents;
|
|
831
835
|
out.globalChanged = r.changed;
|
|
832
836
|
out.globalBackups = r.backups;
|
|
833
|
-
if (r.failed)
|
|
837
|
+
if (r.failed) {
|
|
838
|
+
out.failed.push(`global-claude-artifacts:${r.failed}`);
|
|
839
|
+
for (const f of r.failures || []) out.failed.push(f);
|
|
840
|
+
}
|
|
834
841
|
});
|
|
835
842
|
|
|
836
843
|
// 4d) Codex skills — replace shipped claudeflow-* skills in .agents; preserve user skills.
|
|
@@ -1037,6 +1044,10 @@ async function run() {
|
|
|
1037
1044
|
ui.warn(' Permission repair: one or more managed claudeflow paths are not writable by your user.');
|
|
1038
1045
|
ui.warn(' From the project root, run once:');
|
|
1039
1046
|
ui.warn(' sudo chown -R "$(whoami):$(id -gn)" .claudeflow scripts/claudeflow .claude/skills/claudeflow-* .claude/agents/claudeflow-* .agents/skills/claudeflow-* .codex/agents/claudeflow-* plugins/codexflow');
|
|
1047
|
+
if (summary.failed.some(f => /^global-(skills|agents):.*:(EACCES|EPERM)$/.test(f))) {
|
|
1048
|
+
ui.warn(' For personal Claude Code cache repair, also run once:');
|
|
1049
|
+
ui.warn(' sudo chown -R "$(whoami):$(id -gn)" ~/.claude/skills/claudeflow-* ~/.claude/agents/claudeflow-*');
|
|
1050
|
+
}
|
|
1040
1051
|
ui.warn(' Then re-run: npx @axiomatic-labs/claudeflow@latest install');
|
|
1041
1052
|
}
|
|
1042
1053
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axiomatic-labs/claudeflow",
|
|
3
|
-
"version": "2.49.
|
|
3
|
+
"version": "2.49.28",
|
|
4
4
|
"description": "Claudeflow — AI-powered development toolkit for Claude Code and Codex. Skills, agents, hooks, and quality gates that ship production apps.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"claudeflow": "./bin/cli.js"
|