@axiomatic-labs/claudeflow 2.12.93 → 2.12.94
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 +29 -12
- package/package.json +1 -1
package/lib/install.js
CHANGED
|
@@ -9,13 +9,13 @@ const ui = require('./ui.js');
|
|
|
9
9
|
// Template skills are shipped inside the ZIP. Copy every claudeflow-* skill
|
|
10
10
|
// from the release so template subskills stay in sync, while preserving any
|
|
11
11
|
// user-generated skills that are not part of the shipped asset.
|
|
12
|
-
const TEMPLATE_AGENTS = new Set(['claudeflow-explorer', 'claudeflow-planner', 'example-agent']);
|
|
13
12
|
const TEMPLATE_MANAGED_MANIFEST = path.join('.claudeflow', 'config', 'template-managed-manifest.json');
|
|
14
13
|
const CLAUDE_BACKUP_ROOT = '.claudeflow-backups';
|
|
15
14
|
const REQUIRED_TEMPLATE_RULES = ['claudeflow-implementation.md'];
|
|
16
15
|
const TEMPLATE_MANAGED_SETTINGS_KEYS = ['$schema', 'enabledMcpjsonServers', 'env', 'permissions', 'hooks'];
|
|
17
16
|
const SERENA_REPO = 'git+https://github.com/oraios/serena';
|
|
18
17
|
const TEMPLATE_SEEDED_SETTINGS_KEYS = new Set(['statusLine']);
|
|
18
|
+
const TEMPLATE_MANAGED_EXTRA_AGENTS = new Set(['example-agent']);
|
|
19
19
|
|
|
20
20
|
async function run() {
|
|
21
21
|
const current = readLocalVersion();
|
|
@@ -155,7 +155,7 @@ async function run() {
|
|
|
155
155
|
const agentFiles = fs.readdirSync(srcAgents);
|
|
156
156
|
for (const file of agentFiles) {
|
|
157
157
|
const name = file.replace(/\.md$/, '');
|
|
158
|
-
if (
|
|
158
|
+
if (isTemplateManagedAgent(name)) {
|
|
159
159
|
fs.copyFileSync(path.join(srcAgents, file), path.join(dstAgents, file));
|
|
160
160
|
}
|
|
161
161
|
}
|
|
@@ -670,11 +670,12 @@ function collectManagedPathsFromRelease(extractRoot) {
|
|
|
670
670
|
|
|
671
671
|
const agentsDir = path.join(srcClaude, 'agents');
|
|
672
672
|
if (fs.existsSync(agentsDir)) {
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
if (
|
|
676
|
-
|
|
677
|
-
|
|
673
|
+
const entries = fs.readdirSync(agentsDir, { withFileTypes: true });
|
|
674
|
+
for (const entry of entries) {
|
|
675
|
+
if (!entry.isFile() || !entry.name.endsWith('.md')) continue;
|
|
676
|
+
const agentName = entry.name.replace(/\.md$/, '');
|
|
677
|
+
if (!isTemplateManagedAgent(agentName)) continue;
|
|
678
|
+
managed.add(normalizeRelativePath(path.join('.claude', 'agents', entry.name)));
|
|
678
679
|
}
|
|
679
680
|
}
|
|
680
681
|
|
|
@@ -726,11 +727,12 @@ function collectLegacyManagedPathsFromDisk(projectRoot) {
|
|
|
726
727
|
|
|
727
728
|
const agentsDir = path.join(claudeDir, 'agents');
|
|
728
729
|
if (fs.existsSync(agentsDir)) {
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
if (
|
|
732
|
-
|
|
733
|
-
|
|
730
|
+
const entries = fs.readdirSync(agentsDir, { withFileTypes: true });
|
|
731
|
+
for (const entry of entries) {
|
|
732
|
+
if (!entry.isFile() || !entry.name.endsWith('.md')) continue;
|
|
733
|
+
const agentName = entry.name.replace(/\.md$/, '');
|
|
734
|
+
if (!isTemplateManagedAgent(agentName)) continue;
|
|
735
|
+
managed.add(normalizeRelativePath(path.join('.claude', 'agents', entry.name)));
|
|
734
736
|
}
|
|
735
737
|
}
|
|
736
738
|
|
|
@@ -835,6 +837,19 @@ function assertRequiredTemplateRules(rulesDir) {
|
|
|
835
837
|
}
|
|
836
838
|
}
|
|
837
839
|
|
|
840
|
+
function isTemplateManagedAgent(agentName) {
|
|
841
|
+
return TEMPLATE_MANAGED_EXTRA_AGENTS.has(agentName) || agentName.startsWith('claudeflow-');
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
function listTemplateManagedAgents(agentsDir) {
|
|
845
|
+
if (!fs.existsSync(agentsDir)) return [];
|
|
846
|
+
return fs.readdirSync(agentsDir)
|
|
847
|
+
.filter((entry) => entry.endsWith('.md'))
|
|
848
|
+
.map((entry) => entry.replace(/\.md$/, ''))
|
|
849
|
+
.filter((name) => isTemplateManagedAgent(name))
|
|
850
|
+
.sort();
|
|
851
|
+
}
|
|
852
|
+
|
|
838
853
|
// Recursively copy a directory, creating parents as needed
|
|
839
854
|
function copyDirSync(src, dst, skipNames) {
|
|
840
855
|
fs.mkdirSync(dst, { recursive: true });
|
|
@@ -853,5 +868,7 @@ function copyDirSync(src, dst, skipNames) {
|
|
|
853
868
|
|
|
854
869
|
module.exports = Object.assign(run, {
|
|
855
870
|
assertRequiredTemplateRules,
|
|
871
|
+
isTemplateManagedAgent,
|
|
872
|
+
listTemplateManagedAgents,
|
|
856
873
|
mergeClaudeSettings,
|
|
857
874
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axiomatic-labs/claudeflow",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.94",
|
|
4
4
|
"description": "Claudeflow — AI-powered development toolkit for Claude Code. Skills, agents, hooks, and quality gates that ship production apps.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"claudeflow": "./bin/cli.js"
|