@axiomatic-labs/claudeflow 2.13.107 → 2.13.109
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 +44 -4
- package/package.json +1 -1
package/lib/install.js
CHANGED
|
@@ -207,6 +207,33 @@ async function run() {
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
+
// Copy variant-switch CLI (claudeflow-mode.js + helpers used by the
|
|
211
|
+
// /claudeflow-mode slash command to rotate .claude/ between boost and
|
|
212
|
+
// normal variants).
|
|
213
|
+
const srcCli = path.join(srcClaudeflow, 'cli');
|
|
214
|
+
const dstCli = path.join(cwd, '.claudeflow', 'cli');
|
|
215
|
+
if (fs.existsSync(srcCli)) {
|
|
216
|
+
copyDirSync(srcCli, dstCli);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Copy variants (boost + normal). The /claudeflow-mode command rotates
|
|
220
|
+
// the active .claude/ between these. Each variant is a complete
|
|
221
|
+
// .claude/-shaped tree (skills, hooks, agents, commands, settings).
|
|
222
|
+
const srcVariants = path.join(srcClaudeflow, 'variants');
|
|
223
|
+
const dstVariants = path.join(cwd, '.claudeflow', 'variants');
|
|
224
|
+
if (fs.existsSync(srcVariants)) {
|
|
225
|
+
copyDirSync(srcVariants, dstVariants);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Copy active-mode marker only when the project doesn't have one yet.
|
|
229
|
+
// Preserves the user's current mode (boost | normal) across updates —
|
|
230
|
+
// overwriting would silently rotate them back to the shipped default.
|
|
231
|
+
const srcActiveMode = path.join(srcClaudeflow, 'active-mode');
|
|
232
|
+
const dstActiveMode = path.join(cwd, '.claudeflow', 'active-mode');
|
|
233
|
+
if (fs.existsSync(srcActiveMode) && !fs.existsSync(dstActiveMode)) {
|
|
234
|
+
fs.copyFileSync(srcActiveMode, dstActiveMode);
|
|
235
|
+
}
|
|
236
|
+
|
|
210
237
|
// Write version file
|
|
211
238
|
writeLocalVersion(version);
|
|
212
239
|
nextManagedPaths.add(normalizeRelativePath(path.join('.claudeflow', 'version')));
|
|
@@ -941,11 +968,18 @@ function collectManagedPathsFromRelease(extractRoot) {
|
|
|
941
968
|
// Claude Code native dirs: hooks stay in .claude/
|
|
942
969
|
addFilesFromDir(managed, extractRoot, path.join(srcClaude, 'hooks'));
|
|
943
970
|
|
|
944
|
-
// Claudeflow dirs: runtime, templates, docs in .claudeflow/
|
|
945
|
-
['runtime', 'templates', 'docs'].forEach((folder) => {
|
|
971
|
+
// Claudeflow dirs: runtime, templates, docs, cli, variants in .claudeflow/
|
|
972
|
+
['runtime', 'templates', 'docs', 'cli', 'variants'].forEach((folder) => {
|
|
946
973
|
addFilesFromDir(managed, extractRoot, path.join(srcClaudeflow, folder));
|
|
947
974
|
});
|
|
948
975
|
|
|
976
|
+
// Root-level marker file for the active variant (boost | normal).
|
|
977
|
+
// Required so `/claudeflow-mode` can report the current mode after install.
|
|
978
|
+
const activeModePath = path.join(srcClaudeflow, 'active-mode');
|
|
979
|
+
if (fs.existsSync(activeModePath)) {
|
|
980
|
+
managed.add('.claudeflow/active-mode');
|
|
981
|
+
}
|
|
982
|
+
|
|
949
983
|
const skillsDir = path.join(srcClaude, 'skills');
|
|
950
984
|
if (fs.existsSync(skillsDir)) {
|
|
951
985
|
const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
@@ -998,11 +1032,17 @@ function collectLegacyManagedPathsFromDisk(projectRoot) {
|
|
|
998
1032
|
// Claude Code native: hooks stay in .claude/
|
|
999
1033
|
addFilesFromDir(managed, projectRoot, path.join(claudeDir, 'hooks'));
|
|
1000
1034
|
|
|
1001
|
-
// Claudeflow dirs: runtime, templates, docs in .claudeflow/
|
|
1002
|
-
['runtime', 'templates', 'docs'].forEach((folder) => {
|
|
1035
|
+
// Claudeflow dirs: runtime, templates, docs, cli, variants in .claudeflow/
|
|
1036
|
+
['runtime', 'templates', 'docs', 'cli', 'variants'].forEach((folder) => {
|
|
1003
1037
|
addFilesFromDir(managed, projectRoot, path.join(claudeflowDir, folder));
|
|
1004
1038
|
});
|
|
1005
1039
|
|
|
1040
|
+
// Root-level marker file for the active variant.
|
|
1041
|
+
const activeModePath = path.join(claudeflowDir, 'active-mode');
|
|
1042
|
+
if (fs.existsSync(activeModePath)) {
|
|
1043
|
+
managed.add('.claudeflow/active-mode');
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1006
1046
|
const skillsDir = path.join(claudeDir, 'skills');
|
|
1007
1047
|
if (fs.existsSync(skillsDir)) {
|
|
1008
1048
|
const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axiomatic-labs/claudeflow",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.109",
|
|
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"
|