claude-flow-novice 2.14.4 → 2.14.6

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.
Files changed (37) hide show
  1. package/.claude/commands/seo/SEO_TASK_MODE.md +892 -0
  2. package/.claude/commands/seo/seo-blog.md +428 -0
  3. package/.claude/commands/seo/seo-landing.md +91 -0
  4. package/.claude/commands/seo/seo-product.md +104 -0
  5. package/claude-assets/agents/cfn-dev-team/coordinators/epic-creator.md +120 -0
  6. package/claude-assets/agents/cfn-dev-team/test-agent.md +0 -0
  7. package/claude-assets/agents/cfn-seo-team/AGENT_CREATION_REPORT.md +481 -0
  8. package/claude-assets/agents/cfn-seo-team/DELEGATION_MATRIX.md +371 -0
  9. package/claude-assets/agents/cfn-seo-team/HUMANIZER_PROMPTS.md +536 -0
  10. package/claude-assets/agents/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +642 -0
  11. package/claude-assets/agents/cfn-seo-team/cfn-seo-coordinator.md +414 -0
  12. package/claude-assets/agents/cfn-seo-team/competitive-seo-analyst.md +423 -0
  13. package/claude-assets/agents/cfn-seo-team/content-atomization-specialist.md +580 -0
  14. package/claude-assets/agents/cfn-seo-team/content-seo-strategist.md +245 -0
  15. package/claude-assets/agents/cfn-seo-team/eeat-content-auditor.md +389 -0
  16. package/claude-assets/agents/cfn-seo-team/geo-optimization-expert.md +269 -0
  17. package/claude-assets/agents/cfn-seo-team/link-building-specialist.md +291 -0
  18. package/claude-assets/agents/cfn-seo-team/local-seo-optimizer.md +333 -0
  19. package/claude-assets/agents/cfn-seo-team/programmatic-seo-engineer.md +244 -0
  20. package/claude-assets/agents/cfn-seo-team/schema-markup-engineer.md +430 -0
  21. package/claude-assets/agents/cfn-seo-team/seo-analytics-specialist.md +376 -0
  22. package/claude-assets/agents/cfn-seo-team/seo-validators/accessibility-validator.md +565 -0
  23. package/claude-assets/agents/cfn-seo-team/seo-validators/audience-validator.md +484 -0
  24. package/claude-assets/agents/cfn-seo-team/seo-validators/branding-validator.md +452 -0
  25. package/claude-assets/agents/cfn-seo-team/seo-validators/humanizer-validator.md +333 -0
  26. package/claude-assets/agents/cfn-seo-team/technical-seo-specialist.md +228 -0
  27. package/claude-assets/commands/seo/SEO_TASK_MODE.md +892 -0
  28. package/claude-assets/commands/seo/seo-blog.md +428 -0
  29. package/claude-assets/commands/seo/seo-landing.md +91 -0
  30. package/claude-assets/commands/seo/seo-product.md +104 -0
  31. package/claude-assets/skills/seo-orchestration/SKILL.md +292 -0
  32. package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh +566 -0
  33. package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh.backup +755 -0
  34. package/claude-assets/skills/seo-orchestration/validate-consensus.sh +270 -0
  35. package/dist/cli/config-manager.js.map +1 -1
  36. package/package.json +1 -1
  37. package/scripts/init-project.js +10 -0
@@ -0,0 +1,270 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # SEO Consensus Validation Script
5
+ # Version: 1.0.0
6
+ #
7
+ # Validates SEO consensus scores against thresholds and quorum requirements.
8
+ # Used to determine if SEO optimizations meet quality standards.
9
+ ##############################################################################
10
+
11
+ set -euo pipefail
12
+
13
+ # Configuration
14
+ TASK_ID=""
15
+ AGENTS=""
16
+ THRESHOLD="0.80"
17
+ MIN_QUORUM="0.66"
18
+
19
+ # Script directory
20
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
21
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../" && pwd)"
22
+
23
+ # Logging
24
+ log() {
25
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] SEO-VALIDATE-CONSENSUS: $*" >&2
26
+ }
27
+
28
+ error() {
29
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] SEO-VALIDATE-CONSENSUS ERROR: $*" >&2
30
+ exit 1
31
+ }
32
+
33
+ # Display usage
34
+ usage() {
35
+ cat << EOF
36
+ SEO Consensus Validation
37
+
38
+ Usage: $0 [OPTIONS]
39
+
40
+ Required Options:
41
+ --task-id <id> Unique identifier for SEO task
42
+ --agents <agents> Comma-separated list of SEO agent IDs
43
+ --threshold <value> Minimum confidence threshold (0.0-1.0)
44
+ --min-quorum <value> Minimum quorum (n, n%, or 0.n format)
45
+
46
+ Optional Options:
47
+ --help Show this help message
48
+
49
+ Examples:
50
+ $0 --task-id seo-001 --agents seo-analyst,content-writer --threshold 0.75 --min-quorum 0.66
51
+
52
+ EOF
53
+ }
54
+
55
+ # Parse command line arguments
56
+ parse_args() {
57
+ while [[ $# -gt 0 ]]; do
58
+ case $1 in
59
+ --task-id)
60
+ TASK_ID="$2"
61
+ shift 2
62
+ ;;
63
+ --agents)
64
+ AGENTS="$2"
65
+ shift 2
66
+ ;;
67
+ --threshold)
68
+ THRESHOLD="$2"
69
+ shift 2
70
+ ;;
71
+ --min-quorum)
72
+ MIN_QUORUM="$2"
73
+ shift 2
74
+ ;;
75
+ --help)
76
+ usage
77
+ exit 0
78
+ ;;
79
+ *)
80
+ error "Unknown option: $1. Use --help for usage information."
81
+ ;;
82
+ esac
83
+ done
84
+ }
85
+
86
+ # Validate inputs
87
+ validate_inputs() {
88
+ [[ -z "$TASK_ID" ]] && error "Task ID is required"
89
+ [[ -z "$AGENTS" ]] && error "Agents list is required"
90
+ [[ -z "$THRESHOLD" ]] && error "Threshold is required"
91
+ [[ -z "$MIN_QUORUM" ]] && error "Min quorum is required"
92
+
93
+ # Validate threshold
94
+ if ! [[ "$THRESHOLD" =~ ^[0-9]*\.?[0-9]+$ ]]; then
95
+ error "Threshold must be a numeric value between 0.0 and 1.0"
96
+ fi
97
+
98
+ local threshold_float
99
+ threshold_float=$(echo "$THRESHOLD" | bc -l 2>/dev/null || echo "0")
100
+ if [[ $(echo "$threshold_float < 0 || $threshold_float > 1" | bc -l) -eq 1 ]]; then
101
+ error "Threshold must be between 0.0 and 1.0"
102
+ fi
103
+
104
+ # Check Redis connectivity
105
+ if ! command -v redis-cli &> /dev/null; then
106
+ error "redis-cli is required but not installed"
107
+ fi
108
+
109
+ if ! redis-cli ping &> /dev/null; then
110
+ error "Cannot connect to Redis server"
111
+ fi
112
+ }
113
+
114
+ # Calculate quorum requirement
115
+ calculate_quorum_requirement() {
116
+ local total_agents=$1
117
+ local min_quorum_spec="$2"
118
+
119
+ # Parse quorum specification
120
+ if [[ "$min_quorum_spec" =~ ^[0-9]+$ ]]; then
121
+ # Absolute number
122
+ echo "$min_quorum_spec"
123
+ elif [[ "$min_quorum_spec" =~ ^([0-9]+)%$ ]]; then
124
+ # Percentage
125
+ local percentage="${BASH_REMATCH[1]}"
126
+ local required
127
+ required=$(echo "scale=0; ($total_agents * $percentage) / 100" | bc -l)
128
+ echo "$required"
129
+ elif [[ "$min_quorum_spec" =~ ^0\.[0-9]+$ ]]; then
130
+ # Fraction
131
+ local required
132
+ required=$(echo "scale=0; $total_agents * $min_quorum_spec" | bc -l)
133
+ echo "$required"
134
+ else
135
+ error "Invalid quorum specification: $min_quorum_spec"
136
+ fi
137
+ }
138
+
139
+ # Collect agent confidence scores
140
+ collect_agent_scores() {
141
+ local agents_array
142
+ IFS=',' read -ra agents_array <<< "$AGENTS"
143
+
144
+ local scores=()
145
+ local completed_agents=()
146
+
147
+ log "Collecting confidence scores from agents"
148
+
149
+ for agent_id in "${agents_array[@]}"; do
150
+ agent_id=$(echo "$agent_id" | xargs) # trim whitespace
151
+
152
+ # Get confidence score from Redis
153
+ local confidence_key="swarm:${TASK_ID}:${agent_id}:confidence"
154
+ local confidence_score
155
+ confidence_score=$(redis-cli get "$confidence_key" 2>/dev/null || echo "")
156
+
157
+ if [[ -n "$confidence_score" ]] && [[ "$confidence_score" =~ ^[0-9]*\.?[0-9]+$ ]]; then
158
+ scores+=("$confidence_score")
159
+ completed_agents+=("$agent_id")
160
+ log "Agent $agent_id confidence: $confidence_score"
161
+ else
162
+ log "Warning: No confidence score found for agent $agent_id"
163
+ fi
164
+ done
165
+
166
+ # Store results in Redis for debugging
167
+ printf '%s\n' "${completed_agents[@]}" | redis-cli -x set "swarm:${TASK_ID}:validated-agents" > /dev/null 2>&1 || true
168
+ printf '%s\n' "${scores[@]}" | redis-cli -x set "swarm:${TASK_ID}:confidence-scores" > /dev/null 2>&1 || true
169
+
170
+ # Return scores array
171
+ printf '%s\n' "${scores[@]}"
172
+ }
173
+
174
+ # Validate consensus
175
+ validate_consensus() {
176
+ local scores=("$@")
177
+
178
+ if [[ ${#scores[@]} -eq 0 ]]; then
179
+ error "No confidence scores available for validation"
180
+ fi
181
+
182
+ # Calculate required quorum
183
+ local total_agents
184
+ total_agents=$(echo "$AGENTS" | tr ',' '\n' | wc -l)
185
+ local required_quorum
186
+ required_quorum=$(calculate_quorum_requirement "$total_agents" "$MIN_QUORUM")
187
+
188
+ log "Total agents: $total_agents, Required quorum: $required_quorum"
189
+ log "Available scores: ${#scores[@]}"
190
+
191
+ # Check quorum requirement
192
+ if [[ ${#scores[@]} -lt $required_quorum ]]; then
193
+ log "Consensus validation failed: Insufficient agent responses (${#scores[@]} < $required_quorum)"
194
+ return 1
195
+ fi
196
+
197
+ # Calculate average confidence
198
+ local sum=0.0
199
+ local count=0
200
+
201
+ for score in "${scores[@]}"; do
202
+ sum=$(echo "$sum + $score" | bc -l)
203
+ ((count++))
204
+ done
205
+
206
+ local average_confidence
207
+ average_confidence=$(echo "scale=3; $sum / $count" | bc -l)
208
+
209
+ log "Average confidence: $average_confidence, Threshold: $THRESHOLD"
210
+
211
+ # Compare against threshold
212
+ local comparison
213
+ comparison=$(echo "$average_confidence >= $THRESHOLD" | bc -l 2>/dev/null || echo "0")
214
+
215
+ # Store validation results
216
+ local validation_result
217
+ validation_result=$(cat << EOF
218
+ {
219
+ "task_id": "$TASK_ID",
220
+ "timestamp": "$(date -Iseconds)",
221
+ "total_agents": $total_agents,
222
+ "completed_agents": $count,
223
+ "required_quorum": $required_quorum,
224
+ "quorum_met": $([[ $count -ge $required_quorum ]] && echo "true" || echo "false"),
225
+ "confidence_scores": [$(IFS=','; echo "${scores[*]}")],
226
+ "average_confidence": $average_confidence,
227
+ "threshold": $THRESHOLD,
228
+ "threshold_met": $([[ $comparison -eq 1 ]] && echo "true" || echo "false"),
229
+ "consensus_validated": $([[ $comparison -eq 1 ]] && echo "true" || echo "false")
230
+ }
231
+ EOF
232
+ )
233
+
234
+ echo "$validation_result" | redis-cli -x set "swarm:${TASK_ID}:consensus-validation" > /dev/null
235
+ log "Validation result stored: $validation_result"
236
+
237
+ if [[ $comparison -eq 1 ]]; then
238
+ log "SEO consensus validation PASSED (average: $average_confidence >= threshold: $THRESHOLD)"
239
+ return 0
240
+ else
241
+ log "SEO consensus validation FAILED (average: $average_confidence < threshold: $THRESHOLD)"
242
+ return 1
243
+ fi
244
+ }
245
+
246
+ # Main function
247
+ main() {
248
+ parse_args "$@"
249
+ validate_inputs
250
+
251
+ log "Starting SEO consensus validation for task: $TASK_ID"
252
+
253
+ # Collect agent scores
254
+ local scores_array
255
+ readarray -t scores_array < <(collect_agent_scores)
256
+
257
+ # Validate consensus
258
+ if validate_consensus "${scores_array[@]}"; then
259
+ log "SEO consensus validation completed successfully"
260
+ exit 0
261
+ else
262
+ log "SEO consensus validation failed"
263
+ exit 1
264
+ fi
265
+ }
266
+
267
+ # Script entry point
268
+ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
269
+ main "$@"
270
+ fi
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/config-manager.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fs = require(\"fs/promises\");\nvar path = require(\"path\");\nvar ajv_1 = require(\"ajv\");\nvar get_1 = require(\"lodash/get\");\nvar ConfigManager = /** @class */ (function () {\n function ConfigManager() {\n this.configPath = path.join(process.env.HOME || \"\", \".claude-flow-config.json\");\n this.schemaPath = path.join(__dirname, \"../../.claude/skills/config-management/config.json\");\n this.ajv = new ajv_1.default();\n }\n ConfigManager.getInstance = function () {\n if (!ConfigManager.instance) {\n ConfigManager.instance = new ConfigManager();\n }\n return ConfigManager.instance;\n };\n ConfigManager.prototype.readConfig = function () {\n return __awaiter(this, void 0, void 0, function () {\n var configContent, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, fs.readFile(this.configPath, \"utf-8\")];\n case 1:\n configContent = _a.sent();\n return [2 /*return*/, JSON.parse(configContent)];\n case 2:\n error_1 = _a.sent();\n // If config doesn't exist, create from schema\n return [2 /*return*/, this.resetToDefaults()];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n ConfigManager.prototype.writeConfig = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n var schemaContent, schema, validate;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fs.readFile(this.schemaPath, \"utf-8\")];\n case 1:\n schemaContent = _a.sent();\n schema = JSON.parse(schemaContent);\n validate = this.ajv.compile(schema);\n if (!validate(config)) {\n throw new Error(\"Invalid configuration: \" + this.ajv.errorsText(validate.errors));\n }\n return [4 /*yield*/, fs.writeFile(this.configPath, JSON.stringify(config, null, 2), \"utf-8\")];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n ConfigManager.prototype.getValue = function (keyPath) {\n return __awaiter(this, void 0, void 0, function () {\n var config, value, customConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readConfig()];\n case 1:\n config = _a.sent();\n value = (0, get_1.default)(config, keyPath);\n if (!(value === undefined)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.readCustomConfig()];\n case 2:\n customConfig = _a.sent();\n return [2 /*return*/, (0, get_1.default)(customConfig, keyPath)];\n case 3: return [2 /*return*/, value];\n }\n });\n });\n };\n ConfigManager.prototype.readCustomConfig = function () {\n return __awaiter(this, void 0, void 0, function () {\n var customConfigPath, customConfigContent, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n customConfigPath = path.join(process.env.HOME || \"\", \".claude-flow-custom-config.json\");\n return [4 /*yield*/, fs.readFile(customConfigPath, \"utf-8\")];\n case 1:\n customConfigContent = _a.sent();\n return [2 /*return*/, JSON.parse(customConfigContent)];\n case 2:\n error_2 = _a.sent();\n // If custom config doesn't exist or can't be read, return empty object\n return [2 /*return*/, {}];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n ConfigManager.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readConfig()];\n case 1:\n config = _a.sent();\n // Type assertion to handle both full object and nested key\n if (typeof value === \"object\" && value !== null) {\n config[key] = value;\n }\n else {\n throw new Error(\"Invalid configuration value\");\n }\n return [4 /*yield*/, this.writeConfig(config)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n ConfigManager.prototype.getAll = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.readConfig()];\n });\n });\n };\n ConfigManager.prototype.resetToDefaults = function () {\n return __awaiter(this, void 0, void 0, function () {\n var schemaContent, schema, defaultConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fs.readFile(this.schemaPath, \"utf-8\")];\n case 1:\n schemaContent = _a.sent();\n schema = JSON.parse(schemaContent);\n defaultConfig = {\n redis: {\n host: schema.properties.redis.properties.host.default,\n port: schema.properties.redis.properties.port.default,\n },\n agent: {\n default_strategy: schema.properties.agent.properties.default_strategy.default,\n max_concurrent_agents: schema.properties.agent.properties.max_concurrent_agents.default,\n log_level: schema.properties.agent.properties.log_level.default,\n },\n security: {\n enabled: schema.properties.security.properties.enabled.default,\n max_retry_attempts: schema.properties.security.properties.max_retry_attempts.default,\n },\n };\n return [4 /*yield*/, this.writeConfig(defaultConfig)];\n case 2:\n _a.sent();\n return [2 /*return*/, defaultConfig];\n }\n });\n });\n };\n return ConfigManager;\n}());\nexports.default = ConfigManager;\n"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","Object","create","Iterator","prototype","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","defineProperty","exports","fs","require","path","ajv_1","get_1","ConfigManager","configPath","join","process","env","HOME","schemaPath","__dirname","ajv","default","getInstance","instance","readConfig","configContent","error_1","_a","readFile","JSON","parse","resetToDefaults","writeConfig","config","schemaContent","schema","validate","compile","Error","errorsText","errors","writeFile","stringify","getValue","keyPath","customConfig","undefined","readCustomConfig","customConfigPath","customConfigContent","error_2","set","key","getAll","defaultConfig","redis","host","properties","port","agent","default_strategy","max_concurrent_agents","log_level","security","enabled","max_retry_attempts"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/cli/config-manager.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport Ajv from \"ajv\";\nimport * as lodash from \"lodash\";\n\ninterface ConfigSchema {\n redis: {\n host: string;\n port: number;\n password?: string;\n };\n agent: {\n default_strategy: string;\n max_concurrent_agents: number;\n log_level: \"debug\" | \"info\" | \"warn\" | \"error\";\n };\n security: {\n enabled: boolean;\n max_retry_attempts: number;\n };\n}\n\nclass ConfigManager {\n private static _instance: ConfigManager | null = null;\n private configPath: string;\n private schemaPath: string;\n private ajv: Ajv;\n\n private constructor() {\n this.configPath = path.join(\n process.env.HOME || \"\",\n \".claude-flow-config.json\",\n );\n this.schemaPath = path.join(\n __dirname,\n \"../../.claude/skills/config-management/config.json\",\n );\n this.ajv = new Ajv();\n }\n\n public static getInstance(): ConfigManager {\n if (!ConfigManager._instance) {\n ConfigManager._instance = new ConfigManager();\n }\n return ConfigManager._instance;\n }\n\n private async readConfig(): Promise<ConfigSchema> {\n try {\n const configContent = await fs.readFile(this.configPath, \"utf-8\");\n return JSON.parse(configContent) as ConfigSchema;\n } catch (error) {\n // If config doesn't exist, create from schema\n return this.resetToDefaults();\n }\n }\n\n private async writeConfig(config: ConfigSchema): Promise<void> {\n const schemaContent = await fs.readFile(this.schemaPath, \"utf-8\");\n const schema = JSON.parse(schemaContent);\n\n const validate = this.ajv.compile(schema);\n if (!validate(config)) {\n throw new Error(\n \"Invalid configuration: \" + this.ajv.errorsText(validate.errors),\n );\n }\n\n await fs.writeFile(\n this.configPath,\n JSON.stringify(config, null, 2),\n \"utf-8\",\n );\n }\n\n public async getValue(keyPath: string): Promise<any> {\n const config = await this.readConfig();\n const value = lodash.get(config, keyPath);\n\n if (value === undefined) {\n // Check if it's a custom key path not in the schema\n const customConfig = await this.readCustomConfig();\n return lodash.get(customConfig, keyPath);\n }\n\n return value;\n }\n\n private async readCustomConfig(): Promise<Record<string, any>> {\n try {\n const customConfigPath = path.join(\n process.env.HOME || \"\",\n \".claude-flow-custom-config.json\",\n );\n const customConfigContent = await fs.readFile(customConfigPath, \"utf-8\");\n return JSON.parse(customConfigContent);\n } catch (error) {\n // If custom config doesn't exist or can't be read, return empty object\n return {};\n }\n }\n\n public async set(key: keyof ConfigSchema, value: ConfigSchema[keyof ConfigSchema]): Promise<void> {\n const config = await this.readConfig();\n\n // Type assertion to handle full object\n if (typeof value === \"object\" && value !== null) {\n config[key] = value;\n } else {\n throw new Error(\"Invalid configuration value\");\n }\n\n await this.writeConfig(config);\n }\n\n public async getAll(): Promise<ConfigSchema> {\n return this.readConfig();\n }\n\n public async resetToDefaults(): Promise<ConfigSchema> {\n const schemaContent = await fs.readFile(this.schemaPath, \"utf-8\");\n const schema = JSON.parse(schemaContent);\n\n // Extract default values from the schema\n const defaultConfig: ConfigSchema = {\n redis: {\n host: schema.properties.redis.properties.host.default,\n port: schema.properties.redis.properties.port.default,\n },\n agent: {\n default_strategy:\n schema.properties.agent.properties.default_strategy.default,\n max_concurrent_agents:\n schema.properties.agent.properties.max_concurrent_agents.default,\n log_level: schema.properties.agent.properties.log_level.default,\n },\n security: {\n enabled: schema.properties.security.properties.enabled.default,\n max_retry_attempts:\n schema.properties.security.properties.max_retry_attempts.default,\n },\n };\n\n await this.writeConfig(defaultConfig);\n return defaultConfig;\n }\n}\n\nexport default ConfigManager;"],"names":["fs","path","Ajv","lodash","ConfigManager","_instance","configPath","schemaPath","ajv","join","process","env","HOME","__dirname","getInstance","readConfig","configContent","readFile","JSON","parse","error","resetToDefaults","writeConfig","config","schemaContent","schema","validate","compile","Error","errorsText","errors","writeFile","stringify","getValue","keyPath","value","get","undefined","customConfig","readCustomConfig","customConfigPath","customConfigContent","set","key","getAll","defaultConfig","redis","host","properties","default","port","agent","default_strategy","max_concurrent_agents","log_level","security","enabled","max_retry_attempts"],"mappings":"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"} config = _a.sent();\n // Type assertion to handle both full object and nested key\n if (typeof value === \"object\" && value !== null) {\n config[key] = value;\n }\n else {\n throw new Error(\"Invalid configuration value\");\n }\n return [4 /*yield*/, this.writeConfig(config)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n ConfigManager.prototype.getAll = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.readConfig()];\n });\n });\n };\n ConfigManager.prototype.resetToDefaults = function () {\n return __awaiter(this, void 0, void 0, function () {\n var schemaContent, schema, defaultConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fs.readFile(this.schemaPath, \"utf-8\")];\n case 1:\n schemaContent = _a.sent();\n schema = JSON.parse(schemaContent);\n defaultConfig = {\n redis: {\n host: schema.properties.redis.properties.host.default,\n port: schema.properties.redis.properties.port.default,\n },\n agent: {\n default_strategy: schema.properties.agent.properties.default_strategy.default,\n max_concurrent_agents: schema.properties.agent.properties.max_concurrent_agents.default,\n log_level: schema.properties.agent.properties.log_level.default,\n },\n security: {\n enabled: schema.properties.security.properties.enabled.default,\n max_retry_attempts: schema.properties.security.properties.max_retry_attempts.default,\n },\n };\n return [4 /*yield*/, this.writeConfig(defaultConfig)];\n case 2:\n _a.sent();\n return [2 /*return*/, defaultConfig];\n }\n });\n });\n };\n return ConfigManager;\n}());\nexports.default = ConfigManager;\n"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","Object","create","Iterator","prototype","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","defineProperty","exports","fs","require","path","ajv_1","get_1","ConfigManager","configPath","join","process","env","HOME","schemaPath","__dirname","ajv","default","getInstance","instance","readConfig","configContent","error_1","_a","readFile","JSON","parse","resetToDefaults","writeConfig","config","schemaContent","schema","validate","compile","Error","errorsText","errors","writeFile","stringify","getValue","keyPath","customConfig","undefined","readCustomConfig","customConfigPath","customConfigContent","error_2","set","key","getAll","defaultConfig","redis","host","properties","port","agent","default_strategy","max_concurrent_agents","log_level","security","enabled","max_retry_attempts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow-novice",
3
- "version": "2.14.4",
3
+ "version": "2.14.6",
4
4
  "description": "AI agent orchestration framework with namespace-isolated skills, agents, and CFN Loop validation. Safe installation with ~0.01% collision risk.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -228,6 +228,13 @@ async function installLizard() {
228
228
  }
229
229
 
230
230
  async function initializeCfnProject() {
231
+ // Skip initialization if already initialized (prevents overwrite on every npx call)
232
+ const markerPath = '.claude/.cfn-initialized';
233
+ if (fs.existsSync(markerPath)) {
234
+ // Silently skip - already initialized
235
+ return;
236
+ }
237
+
231
238
  console.log(chalk.blue('\nšŸš€ Claude Flow Novice CFN Initialization\n'));
232
239
 
233
240
  try {
@@ -263,6 +270,9 @@ async function initializeCfnProject() {
263
270
  // Install lizard for complexity analysis
264
271
  await installLizard();
265
272
 
273
+ // Create marker file to prevent re-initialization
274
+ fs.writeFileSync('.claude/.cfn-initialized', new Date().toISOString());
275
+
266
276
  console.log(chalk.yellow('\nšŸ” Next Steps:'));
267
277
  console.log(' 1. Review CFN-CLAUDE.md in project root');
268
278
  console.log(' 2. Run your first CFN Loop: npx cfn-loop "Task description"');