moflo 4.8.12 → 4.8.14

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 (140) hide show
  1. package/.claude/settings.json +1 -1
  2. package/.claude/workflow-state.json +3 -3
  3. package/package.json +2 -4
  4. package/src/@claude-flow/cli/dist/src/commands/hooks.js +3 -3
  5. package/src/@claude-flow/cli/dist/src/init/claudemd-generator.js +47 -46
  6. package/src/@claude-flow/cli/dist/src/services/workflow-gate.js +96 -68
  7. package/src/@claude-flow/cli/package.json +1 -1
  8. package/.claude/agents/MIGRATION_SUMMARY.md +0 -222
  9. package/.claude/agents/analysis/code-review/analyze-code-quality.md +0 -179
  10. package/.claude/agents/development/backend/dev-backend-api.md +0 -142
  11. package/.claude/agents/flow-nexus/app-store.md +0 -88
  12. package/.claude/agents/flow-nexus/authentication.md +0 -69
  13. package/.claude/agents/flow-nexus/challenges.md +0 -81
  14. package/.claude/agents/flow-nexus/neural-network.md +0 -88
  15. package/.claude/agents/flow-nexus/payments.md +0 -83
  16. package/.claude/agents/flow-nexus/sandbox.md +0 -76
  17. package/.claude/agents/flow-nexus/swarm.md +0 -76
  18. package/.claude/agents/flow-nexus/user-tools.md +0 -96
  19. package/.claude/agents/flow-nexus/workflow.md +0 -84
  20. package/.claude/agents/payments/agentic-payments.md +0 -126
  21. package/.claude/agents/sona/sona-learning-optimizer.md +0 -74
  22. package/.claude/agents/sublinear/consensus-coordinator.md +0 -338
  23. package/.claude/agents/sublinear/matrix-optimizer.md +0 -185
  24. package/.claude/agents/sublinear/pagerank-analyzer.md +0 -299
  25. package/.claude/agents/sublinear/performance-optimizer.md +0 -368
  26. package/.claude/agents/sublinear/trading-predictor.md +0 -246
  27. package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -244
  28. package/.claude/agents/testing/validation/production-validator.md +0 -395
  29. package/.claude/agents/v3/database-specialist.yaml +0 -21
  30. package/.claude/agents/v3/index.yaml +0 -17
  31. package/.claude/agents/v3/project-coordinator.yaml +0 -15
  32. package/.claude/agents/v3/python-specialist.yaml +0 -21
  33. package/.claude/agents/v3/test-architect.yaml +0 -20
  34. package/.claude/agents/v3/typescript-specialist.yaml +0 -21
  35. package/.claude/agents/v3/v3-integration-architect.md +0 -346
  36. package/.claude/agents/v3/v3-memory-specialist.md +0 -318
  37. package/.claude/agents/v3/v3-performance-engineer.md +0 -397
  38. package/.claude/agents/v3/v3-queen-coordinator.md +0 -98
  39. package/.claude/agents/v3/v3-security-architect.md +0 -174
  40. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  41. package/.claude/commands/analysis/README.md +0 -9
  42. package/.claude/commands/analysis/bottleneck-detect.md +0 -162
  43. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  44. package/.claude/commands/analysis/performance-report.md +0 -25
  45. package/.claude/commands/analysis/token-efficiency.md +0 -45
  46. package/.claude/commands/analysis/token-usage.md +0 -25
  47. package/.claude/commands/automation/README.md +0 -9
  48. package/.claude/commands/automation/auto-agent.md +0 -122
  49. package/.claude/commands/automation/self-healing.md +0 -106
  50. package/.claude/commands/automation/session-memory.md +0 -90
  51. package/.claude/commands/automation/smart-agents.md +0 -73
  52. package/.claude/commands/automation/smart-spawn.md +0 -25
  53. package/.claude/commands/automation/workflow-select.md +0 -25
  54. package/.claude/commands/coordination/README.md +0 -9
  55. package/.claude/commands/coordination/agent-spawn.md +0 -25
  56. package/.claude/commands/coordination/init.md +0 -44
  57. package/.claude/commands/coordination/orchestrate.md +0 -43
  58. package/.claude/commands/coordination/spawn.md +0 -45
  59. package/.claude/commands/coordination/swarm-init.md +0 -85
  60. package/.claude/commands/coordination/task-orchestrate.md +0 -25
  61. package/.claude/commands/flow-nexus/app-store.md +0 -124
  62. package/.claude/commands/flow-nexus/challenges.md +0 -120
  63. package/.claude/commands/flow-nexus/login-registration.md +0 -65
  64. package/.claude/commands/flow-nexus/neural-network.md +0 -134
  65. package/.claude/commands/flow-nexus/payments.md +0 -116
  66. package/.claude/commands/flow-nexus/sandbox.md +0 -83
  67. package/.claude/commands/flow-nexus/swarm.md +0 -87
  68. package/.claude/commands/flow-nexus/user-tools.md +0 -152
  69. package/.claude/commands/flow-nexus/workflow.md +0 -115
  70. package/.claude/commands/monitoring/README.md +0 -9
  71. package/.claude/commands/monitoring/agent-metrics.md +0 -25
  72. package/.claude/commands/monitoring/agents.md +0 -44
  73. package/.claude/commands/monitoring/real-time-view.md +0 -25
  74. package/.claude/commands/monitoring/status.md +0 -46
  75. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  76. package/.claude/commands/optimization/README.md +0 -9
  77. package/.claude/commands/optimization/auto-topology.md +0 -62
  78. package/.claude/commands/optimization/cache-manage.md +0 -25
  79. package/.claude/commands/optimization/parallel-execute.md +0 -25
  80. package/.claude/commands/optimization/parallel-execution.md +0 -50
  81. package/.claude/commands/optimization/topology-optimize.md +0 -25
  82. package/.claude/commands/pair/README.md +0 -261
  83. package/.claude/commands/pair/commands.md +0 -546
  84. package/.claude/commands/pair/config.md +0 -510
  85. package/.claude/commands/pair/examples.md +0 -512
  86. package/.claude/commands/pair/modes.md +0 -348
  87. package/.claude/commands/pair/session.md +0 -407
  88. package/.claude/commands/pair/start.md +0 -209
  89. package/.claude/commands/stream-chain/pipeline.md +0 -121
  90. package/.claude/commands/stream-chain/run.md +0 -70
  91. package/.claude/commands/training/README.md +0 -9
  92. package/.claude/commands/training/model-update.md +0 -25
  93. package/.claude/commands/training/neural-patterns.md +0 -74
  94. package/.claude/commands/training/neural-train.md +0 -25
  95. package/.claude/commands/training/pattern-learn.md +0 -25
  96. package/.claude/commands/training/specialization.md +0 -63
  97. package/.claude/commands/truth/start.md +0 -143
  98. package/.claude/commands/verify/check.md +0 -50
  99. package/.claude/commands/verify/start.md +0 -128
  100. package/.claude/helpers/gate-hook.mjs +0 -50
  101. package/.claude/helpers/gate.cjs +0 -138
  102. package/.claude/helpers/hook-handler.cjs +0 -83
  103. package/.claude/helpers/prompt-hook.mjs +0 -72
  104. package/.claude/scripts/build-embeddings.mjs +0 -549
  105. package/.claude/scripts/generate-code-map.mjs +0 -697
  106. package/.claude/scripts/hooks.mjs +0 -656
  107. package/.claude/scripts/index-guidance.mjs +0 -893
  108. package/.claude/scripts/index-tests.mjs +0 -710
  109. package/.claude/scripts/semantic-search.mjs +0 -473
  110. package/.claude/scripts/session-start-launcher.mjs +0 -226
  111. package/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
  112. package/.claude/skills/dual-mode/README.md +0 -71
  113. package/.claude/skills/dual-mode/dual-collect.md +0 -103
  114. package/.claude/skills/dual-mode/dual-coordinate.md +0 -85
  115. package/.claude/skills/dual-mode/dual-spawn.md +0 -81
  116. package/.claude/skills/flow-nexus-neural/SKILL.md +0 -738
  117. package/.claude/skills/flow-nexus-platform/SKILL.md +0 -1157
  118. package/.claude/skills/flow-nexus-swarm/SKILL.md +0 -610
  119. package/.claude/skills/pair-programming/SKILL.md +0 -1202
  120. package/.claude/skills/stream-chain/SKILL.md +0 -563
  121. package/.claude/skills/v3-cli-modernization/SKILL.md +0 -872
  122. package/.claude/skills/v3-core-implementation/SKILL.md +0 -797
  123. package/.claude/skills/v3-ddd-architecture/SKILL.md +0 -442
  124. package/.claude/skills/v3-integration-deep/SKILL.md +0 -241
  125. package/.claude/skills/v3-mcp-optimization/SKILL.md +0 -777
  126. package/.claude/skills/v3-memory-unification/SKILL.md +0 -174
  127. package/.claude/skills/v3-performance-optimization/SKILL.md +0 -390
  128. package/.claude/skills/v3-security-overhaul/SKILL.md +0 -82
  129. package/.claude/skills/v3-swarm-coordination/SKILL.md +0 -340
  130. package/.claude-plugin/README.md +0 -720
  131. package/.claude-plugin/docs/INSTALLATION.md +0 -261
  132. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +0 -361
  133. package/.claude-plugin/docs/QUICKSTART.md +0 -361
  134. package/.claude-plugin/docs/STRUCTURE.md +0 -128
  135. package/.claude-plugin/hooks/hooks.json +0 -74
  136. package/.claude-plugin/marketplace.json +0 -96
  137. package/.claude-plugin/plugin.json +0 -71
  138. package/.claude-plugin/scripts/install.sh +0 -234
  139. package/.claude-plugin/scripts/uninstall.sh +0 -36
  140. package/.claude-plugin/scripts/verify.sh +0 -108
@@ -1,138 +0,0 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
- var fs = require('fs');
4
- var path = require('path');
5
-
6
- var PROJECT_DIR = (process.env.CLAUDE_PROJECT_DIR || process.cwd()).replace(/^\/([a-z])\//i, '$1:/');
7
- var STATE_FILE = path.join(PROJECT_DIR, '.claude', 'workflow-state.json');
8
-
9
- function readState() {
10
- try {
11
- if (fs.existsSync(STATE_FILE)) return JSON.parse(fs.readFileSync(STATE_FILE, 'utf-8'));
12
- } catch (e) { /* reset on corruption */ }
13
- return { tasksCreated: false, taskCount: 0, memorySearched: false, memoryRequired: true, interactionCount: 0, sessionStart: null, lastBlockedAt: null };
14
- }
15
-
16
- function writeState(s) {
17
- try {
18
- var dir = path.dirname(STATE_FILE);
19
- if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
20
- fs.writeFileSync(STATE_FILE, JSON.stringify(s, null, 2));
21
- } catch (e) { /* non-fatal */ }
22
- }
23
-
24
- // Load moflo.yaml gate config (defaults: all enabled)
25
- function loadGateConfig() {
26
- var defaults = { memory_first: true, task_create_first: true, context_tracking: true };
27
- try {
28
- var yamlPath = path.join(PROJECT_DIR, 'moflo.yaml');
29
- if (fs.existsSync(yamlPath)) {
30
- var content = fs.readFileSync(yamlPath, 'utf-8');
31
- if (/memory_first:\s*false/i.test(content)) defaults.memory_first = false;
32
- if (/task_create_first:\s*false/i.test(content)) defaults.task_create_first = false;
33
- if (/context_tracking:\s*false/i.test(content)) defaults.context_tracking = false;
34
- }
35
- } catch (e) { /* use defaults */ }
36
- return defaults;
37
- }
38
-
39
- var config = loadGateConfig();
40
- var command = process.argv[2];
41
-
42
- var EXEMPT = ['.claude/', '.claude\\', 'CLAUDE.md', 'MEMORY.md', 'workflow-state', 'node_modules'];
43
- var DANGEROUS = ['rm -rf /', 'format c:', 'del /s /q c:\\', ':(){:|:&};:', 'mkfs.', '> /dev/sda'];
44
- var DIRECTIVE_RE = /^(yes|no|yeah|yep|nope|sure|ok|okay|correct|right|exactly|perfect)\b/i;
45
- var TASK_RE = /\b(fix|bug|error|implement|add|create|build|write|refactor|debug|test|feature|issue|security|optimi)\b/i;
46
-
47
- switch (command) {
48
- case 'check-before-agent': {
49
- var s = readState();
50
- // Hard gate: memory must be searched
51
- if (config.memory_first && s.memoryRequired && !s.memorySearched) {
52
- process.stderr.write('BLOCKED: Search memory (mcp__moflo__memory_search) before spawning agents.\n');
53
- process.exit(2);
54
- }
55
- // Soft gate: TaskCreate recommended but not blocking
56
- // (TaskCreate PostToolUse doesn't fire in Claude Code, so we can't track it reliably)
57
- if (config.task_create_first && !s.tasksCreated) {
58
- process.stdout.write('REMINDER: Use TaskCreate before spawning agents. Task tool is blocked until then.\n');
59
- }
60
- break;
61
- }
62
- case 'check-before-scan': {
63
- if (!config.memory_first) break;
64
- var s = readState();
65
- if (s.memorySearched || !s.memoryRequired) break;
66
- var target = (process.env.TOOL_INPUT_pattern || '') + ' ' + (process.env.TOOL_INPUT_path || '');
67
- if (EXEMPT.some(function(p) { return target.indexOf(p) >= 0; })) break;
68
- process.stderr.write('BLOCKED: Search memory before exploring files. Use mcp__moflo__memory_search.\n');
69
- process.exit(2);
70
- }
71
- case 'check-before-read': {
72
- if (!config.memory_first) break;
73
- var s = readState();
74
- if (s.memorySearched || !s.memoryRequired) break;
75
- var fp = process.env.TOOL_INPUT_file_path || '';
76
- if (fp.indexOf('.claude/guidance/') < 0 && fp.indexOf('.claude\\guidance\\') < 0) break;
77
- process.stderr.write('BLOCKED: Search memory before reading guidance files. Use mcp__moflo__memory_search.\n');
78
- process.exit(2);
79
- }
80
- case 'record-task-created': {
81
- var s = readState();
82
- s.tasksCreated = true;
83
- s.taskCount = (s.taskCount || 0) + 1;
84
- writeState(s);
85
- break;
86
- }
87
- case 'record-memory-searched': {
88
- var s = readState();
89
- s.memorySearched = true;
90
- writeState(s);
91
- break;
92
- }
93
- case 'check-bash-memory': {
94
- var cmd = process.env.TOOL_INPUT_command || '';
95
- if (/semantic-search|memory search|memory retrieve|memory-search/.test(cmd)) {
96
- var s = readState();
97
- s.memorySearched = true;
98
- writeState(s);
99
- }
100
- break;
101
- }
102
- case 'check-dangerous-command': {
103
- var cmd = (process.env.TOOL_INPUT_command || '').toLowerCase();
104
- for (var i = 0; i < DANGEROUS.length; i++) {
105
- if (cmd.indexOf(DANGEROUS[i]) >= 0) {
106
- console.log('[BLOCKED] Dangerous command: ' + DANGEROUS[i]);
107
- process.exit(2);
108
- }
109
- }
110
- break;
111
- }
112
- case 'prompt-reminder': {
113
- var s = readState();
114
- s.memorySearched = false;
115
- var prompt = process.env.CLAUDE_USER_PROMPT || '';
116
- s.memoryRequired = prompt.length >= 4 && !DIRECTIVE_RE.test(prompt) && (TASK_RE.test(prompt) || prompt.length > 80);
117
- s.interactionCount = (s.interactionCount || 0) + 1;
118
- writeState(s);
119
- if (!s.tasksCreated) console.log('REMINDER: Use TaskCreate before spawning agents. Task tool is blocked until then.');
120
- if (config.context_tracking) {
121
- var ic = s.interactionCount;
122
- if (ic > 30) console.log('Context: CRITICAL. Commit, store learnings, suggest new session.');
123
- else if (ic > 20) console.log('Context: DEPLETED. Checkpoint progress. Recommend /compact or fresh session.');
124
- else if (ic > 10) console.log('Context: MODERATE. Re-state goal before architectural decisions. Use agents for >300 LOC.');
125
- }
126
- break;
127
- }
128
- case 'compact-guidance': {
129
- console.log('Pre-Compact: Check CLAUDE.md for rules. Use memory search to recover context after compact.');
130
- break;
131
- }
132
- case 'session-reset': {
133
- writeState({ tasksCreated: false, taskCount: 0, memorySearched: false, memoryRequired: true, interactionCount: 0, sessionStart: new Date().toISOString(), lastBlockedAt: null });
134
- break;
135
- }
136
- default:
137
- break;
138
- }
@@ -1,83 +0,0 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
- var fs = require('fs');
4
- var path = require('path');
5
-
6
- var PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd();
7
- var METRICS_FILE = path.join(PROJECT_DIR, '.claude-flow', 'metrics', 'learning.json');
8
- var command = process.argv[2];
9
-
10
- // Read stdin (Claude Code sends hook data as JSON)
11
- function readStdin() {
12
- if (process.stdin.isTTY) return Promise.resolve('');
13
- return new Promise(function(resolve) {
14
- var data = '';
15
- var timer = setTimeout(function() {
16
- process.stdin.removeAllListeners();
17
- process.stdin.pause();
18
- resolve(data);
19
- }, 500);
20
- process.stdin.setEncoding('utf8');
21
- process.stdin.on('data', function(chunk) { data += chunk; });
22
- process.stdin.on('end', function() { clearTimeout(timer); resolve(data); });
23
- process.stdin.on('error', function() { clearTimeout(timer); resolve(data); });
24
- process.stdin.resume();
25
- });
26
- }
27
-
28
- function bumpMetric(key) {
29
- try {
30
- var metrics = {};
31
- if (fs.existsSync(METRICS_FILE)) metrics = JSON.parse(fs.readFileSync(METRICS_FILE, 'utf-8'));
32
- metrics[key] = (metrics[key] || 0) + 1;
33
- metrics.lastUpdated = new Date().toISOString();
34
- var dir = path.dirname(METRICS_FILE);
35
- if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
36
- fs.writeFileSync(METRICS_FILE, JSON.stringify(metrics, null, 2));
37
- } catch (e) { /* non-fatal */ }
38
- }
39
-
40
- readStdin().then(function(stdinData) {
41
- var hookInput = {};
42
- if (stdinData && stdinData.trim()) {
43
- try { hookInput = JSON.parse(stdinData); } catch (e) { /* ignore */ }
44
- }
45
-
46
- switch (command) {
47
- case 'route': {
48
- var prompt = hookInput.prompt || hookInput.command || process.env.PROMPT || '';
49
- if (prompt) console.log('[INFO] Routing: ' + prompt.substring(0, 80));
50
- else console.log('[INFO] Ready');
51
- break;
52
- }
53
- case 'pre-edit':
54
- case 'post-edit':
55
- bumpMetric('edits');
56
- console.log('[OK] Edit recorded');
57
- break;
58
- case 'pre-task':
59
- bumpMetric('tasks');
60
- console.log('[OK] Task started');
61
- break;
62
- case 'post-task':
63
- bumpMetric('tasksCompleted');
64
- console.log('[OK] Task completed');
65
- break;
66
- case 'session-end': {
67
- // Kill tracked background processes via shared sync helper
68
- try {
69
- var cleanup = require('./lib/registry-cleanup.cjs');
70
- var killed = cleanup.killTrackedSync(PROJECT_DIR);
71
- if (killed > 0) console.log('[CLEANUP] Killed ' + killed + ' background process(es)');
72
- } catch (e) { /* non-fatal: cleanup module not available */ }
73
- console.log('[OK] Session ended');
74
- break;
75
- }
76
- case 'notification':
77
- // Silent — just acknowledge
78
- break;
79
- default:
80
- if (command) console.log('[OK] Hook: ' + command);
81
- break;
82
- }
83
- });
@@ -1,72 +0,0 @@
1
- #!/usr/bin/env node
2
- import { execSync } from 'child_process';
3
- import { resolve } from 'path';
4
-
5
- // Read stdin JSON from Claude Code
6
- var stdinData = '';
7
- try {
8
- stdinData = await new Promise(function(res) {
9
- var data = '';
10
- var timeout = setTimeout(function() { res(data); }, 500);
11
- process.stdin.setEncoding('utf-8');
12
- process.stdin.on('data', function(chunk) { data += chunk; });
13
- process.stdin.on('end', function() { clearTimeout(timeout); res(data); });
14
- process.stdin.on('error', function() { clearTimeout(timeout); res(''); });
15
- if (process.stdin.isTTY) { clearTimeout(timeout); res(''); }
16
- });
17
- } catch (e) { /* no stdin */ }
18
-
19
- var hookContext = {};
20
- try { if (stdinData.trim()) hookContext = JSON.parse(stdinData); } catch (e) {}
21
-
22
- var userPrompt = hookContext.user_prompt || hookContext.prompt || '';
23
- var env = Object.assign({}, process.env, { CLAUDE_USER_PROMPT: userPrompt });
24
-
25
- // Run prompt-reminder via gate.cjs
26
- var projectDir = (env.CLAUDE_PROJECT_DIR || process.cwd()).replace(/^\/([a-z])\//i, '$1:/');
27
- var gateScript = resolve(projectDir, '.claude/helpers/gate.cjs');
28
- var output = '';
29
- try {
30
- output = execSync('node "' + gateScript + '" prompt-reminder', {
31
- env: env, encoding: 'utf-8', timeout: 3000, stdio: ['pipe', 'pipe', 'pipe']
32
- });
33
- } catch (err) { output = (err && err.stdout) || ''; }
34
-
35
- // Classify prompt for namespace hint
36
- var lower = userPrompt.toLowerCase();
37
-
38
- var KNOWLEDGE_ONLY = /\b(knowledge|remember|recall)\b|we (decid|agree|chose|said)/;
39
- var EXPLICIT_NS = [
40
- { pattern: /\b(pattern|convention|best practice|style|coding rule)\b/, ns: 'patterns', label: 'code patterns and conventions' },
41
- { pattern: /\b(code.?map|file structure|project structure|directory)\b/, ns: 'code-map', label: 'codebase navigation' },
42
- ];
43
- var PATTERN_HINTS = [/\b(template|example|similar to|how do we|how should)\b/];
44
- var DOMAIN_HINTS = [
45
- /\b(guidance|guide|docs|documentation|rules|how-to)\b/,
46
- /\b(architecture|design|domain|tenant|migrat|schema|deploy)/,
47
- /\b(rule|requirement|constraint|compliance)\b/,
48
- ];
49
- var NAV_PATTERNS = [
50
- /\b(find|where|which file|look up|locate|endpoint|route|url|path)\b/,
51
- /\b(class|function|method|component|service|entity|module)\b/,
52
- ];
53
-
54
- var nsHint = '';
55
- if (KNOWLEDGE_ONLY.test(lower)) {
56
- nsHint = 'Memory namespace hint: use "knowledge" for user-directed project decisions.';
57
- } else {
58
- var found = EXPLICIT_NS.find(function(e) { return e.pattern.test(lower); });
59
- if (found) {
60
- nsHint = 'Memory namespace hint: use "' + found.ns + '" for ' + found.label + '.';
61
- } else if (DOMAIN_HINTS.some(function(p) { return p.test(lower); })) {
62
- nsHint = 'Memory namespace hint: search "guidance" and "knowledge" for domain rules and project decisions.';
63
- } else if (PATTERN_HINTS.some(function(p) { return p.test(lower); })) {
64
- nsHint = 'Memory namespace hint: use "patterns" for code patterns and conventions.';
65
- } else if (NAV_PATTERNS.some(function(p) { return p.test(lower); })) {
66
- nsHint = 'Memory namespace hint: use "code-map" for codebase navigation.';
67
- }
68
- }
69
-
70
- var parts = [output.trim(), nsHint].filter(Boolean);
71
- if (parts.length) process.stdout.write(parts.join('\n') + '\n');
72
- process.exit(0);