moflo 4.3.1 → 4.5.0
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/.claude/guidance/agent-bootstrap.md +2 -2
- package/.claude/guidance/guidance-memory-strategy.md +262 -0
- package/.claude/guidance/memory-strategy.md +204 -0
- package/.claude/guidance/moflo.md +594 -0
- package/.claude/guidance/task-swarm-integration.md +348 -0
- package/.claude/helpers/hook-handler.cjs +83 -1
- package/.claude/helpers/metrics-db.mjs +492 -488
- package/.claude/helpers/statusline.cjs +85 -16
- package/.claude/settings.json +10 -25
- package/.claude/settings.local.json +14 -0
- package/README.md +279 -181
- package/bin/build-embeddings.mjs +2 -2
- package/bin/generate-code-map.mjs +1 -1
- package/bin/index-guidance.mjs +85 -15
- package/bin/semantic-search.mjs +6 -6
- package/bin/setup-project.mjs +9 -9
- package/package.json +8 -7
- package/src/@claude-flow/cli/dist/src/commands/config.js +2 -2
- package/src/@claude-flow/cli/dist/src/commands/gate.d.ts +8 -8
- package/src/@claude-flow/cli/dist/src/commands/gate.js +13 -13
- package/src/@claude-flow/cli/dist/src/commands/orc.d.ts +4 -4
- package/src/@claude-flow/cli/dist/src/commands/orc.js +13 -13
- package/src/@claude-flow/cli/dist/src/init/moflo-init.js +180 -179
- package/src/@claude-flow/memory/package.json +44 -42
package/bin/semantic-search.mjs
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Usage:
|
|
10
10
|
* node node_modules/moflo/bin/semantic-search.mjs "your search query"
|
|
11
|
-
* npx
|
|
12
|
-
* npx
|
|
13
|
-
* npx
|
|
14
|
-
* npx
|
|
11
|
+
* npx flo-search "your search query"
|
|
12
|
+
* npx flo-search "query" --limit 10
|
|
13
|
+
* npx flo-search "query" --namespace guidance
|
|
14
|
+
* npx flo-search "query" --threshold 0.3
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { existsSync, readFileSync } from 'fs';
|
|
@@ -45,7 +45,7 @@ const json = args.includes('--json');
|
|
|
45
45
|
const debug = args.includes('--debug');
|
|
46
46
|
|
|
47
47
|
if (!query) {
|
|
48
|
-
console.error('Usage: npx
|
|
48
|
+
console.error('Usage: npx flo-search "your query" [--limit N] [--namespace X] [--threshold N]');
|
|
49
49
|
process.exit(1);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -262,7 +262,7 @@ async function generateQueryEmbedding(queryText, db) {
|
|
|
262
262
|
// Neural failed — warn about model mismatch
|
|
263
263
|
if (!json) {
|
|
264
264
|
console.error('[semantic-search] WARNING: Stored embeddings use neural model but Transformers.js unavailable.');
|
|
265
|
-
console.error('[semantic-search] Results may be poor. Run: npx
|
|
265
|
+
console.error('[semantic-search] Results may be poor. Run: npx flo-embeddings --force');
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
package/bin/setup-project.mjs
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* adds a CLAUDE.md section so subagents automatically follow the protocol.
|
|
7
7
|
*
|
|
8
8
|
* Usage:
|
|
9
|
-
* npx
|
|
10
|
-
* npx
|
|
11
|
-
* npx
|
|
9
|
+
* npx flo-setup # First-time setup
|
|
10
|
+
* npx flo-setup --update # Refresh bootstrap file after moflo upgrade
|
|
11
|
+
* npx flo-setup --check # Check if setup is current
|
|
12
12
|
*
|
|
13
13
|
* What it does:
|
|
14
14
|
* 1. Copies .claude/guidance/agent-bootstrap.md → project's .claude/guidance/moflo-bootstrap.md
|
|
@@ -68,10 +68,10 @@ Load via ToolSearch first: \`+claude-flow memory\`
|
|
|
68
68
|
|
|
69
69
|
### Fallback: CLI Scripts
|
|
70
70
|
\`\`\`bash
|
|
71
|
-
npx
|
|
72
|
-
npx
|
|
73
|
-
npx
|
|
74
|
-
npx
|
|
71
|
+
npx flo-search "[query]" --namespace guidance # Semantic search
|
|
72
|
+
npx flo-embeddings # Rebuild embeddings
|
|
73
|
+
npx flo-index # Re-index guidance docs
|
|
74
|
+
npx flo-codemap --force # Regenerate code-map
|
|
75
75
|
\`\`\`
|
|
76
76
|
|
|
77
77
|
### Where Content Goes
|
|
@@ -93,7 +93,7 @@ If \`.claude/guidance/agent-bootstrap.md\` also exists, read it next for project
|
|
|
93
93
|
${MARKER_END}`;
|
|
94
94
|
|
|
95
95
|
function log(msg) {
|
|
96
|
-
console.log(`[
|
|
96
|
+
console.log(`[flo-setup] ${msg}`);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
function findProjectRoot() {
|
|
@@ -135,7 +135,7 @@ function copyBootstrap(projectRoot) {
|
|
|
135
135
|
|
|
136
136
|
// Read source content and prepend auto-generated notice
|
|
137
137
|
const content = readFileSync(source, 'utf-8');
|
|
138
|
-
const header = `<!-- AUTO-GENERATED by
|
|
138
|
+
const header = `<!-- AUTO-GENERATED by flo-setup. Do not edit — changes will be overwritten. -->
|
|
139
139
|
<!-- Source: node_modules/moflo/.claude/guidance/agent-bootstrap.md -->
|
|
140
140
|
<!-- To customize, create .claude/guidance/agent-bootstrap.md for project-specific rules. -->
|
|
141
141
|
|
package/package.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "moflo",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"description": "MoFlo — AI agent orchestration for Claude Code. Forked from ruflo/claude-flow with patches applied to source, plus feature-level orchestration.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
+
"flo": "bin/cli.js",
|
|
9
|
+
"flo-setup": "bin/setup-project.mjs",
|
|
10
|
+
"flo-codemap": "bin/generate-code-map.mjs",
|
|
11
|
+
"flo-search": "bin/semantic-search.mjs",
|
|
12
|
+
"flo-embeddings": "bin/build-embeddings.mjs",
|
|
13
|
+
"flo-index": "bin/index-guidance.mjs",
|
|
14
|
+
"flo-learn": ".claude/helpers/learning-service.mjs",
|
|
8
15
|
"moflo": "bin/cli.js",
|
|
9
|
-
"moflo-setup": "bin/setup-project.mjs",
|
|
10
|
-
"moflo-codemap": "bin/generate-code-map.mjs",
|
|
11
|
-
"moflo-search": "bin/semantic-search.mjs",
|
|
12
|
-
"moflo-embeddings": "bin/build-embeddings.mjs",
|
|
13
|
-
"moflo-index": "bin/index-guidance.mjs",
|
|
14
|
-
"moflo-learn": ".claude/helpers/learning-service.mjs",
|
|
15
16
|
"claude-flow": "bin/cli.js"
|
|
16
17
|
},
|
|
17
18
|
"homepage": "https://github.com/eric-cielo/moflo#readme",
|
|
@@ -380,7 +380,7 @@ const showCommand = {
|
|
|
380
380
|
{ name: 'format', short: 'f', description: 'Output format (json or yaml)', type: 'string', default: 'json' },
|
|
381
381
|
],
|
|
382
382
|
examples: [
|
|
383
|
-
{ command: '
|
|
383
|
+
{ command: 'flo config show', description: 'Show merged config as JSON' },
|
|
384
384
|
],
|
|
385
385
|
action: async (ctx) => {
|
|
386
386
|
const { loadMofloConfig } = await import('../config/moflo-config.js');
|
|
@@ -395,7 +395,7 @@ const generateCommand = {
|
|
|
395
395
|
description: 'Generate moflo.yaml config file',
|
|
396
396
|
options: [],
|
|
397
397
|
examples: [
|
|
398
|
-
{ command: '
|
|
398
|
+
{ command: 'flo config generate', description: 'Auto-detect and write moflo.yaml' },
|
|
399
399
|
],
|
|
400
400
|
action: async (_ctx) => {
|
|
401
401
|
const { writeMofloConfig } = await import('../config/moflo-config.js');
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
* - Context bracket tracking (FRESH/MODERATE/DEPLETED/CRITICAL)
|
|
9
9
|
*
|
|
10
10
|
* Usage from hooks:
|
|
11
|
-
* npx
|
|
12
|
-
* npx
|
|
13
|
-
* npx
|
|
14
|
-
* npx
|
|
15
|
-
* npx
|
|
16
|
-
* npx
|
|
17
|
-
* npx
|
|
18
|
-
* npx
|
|
11
|
+
* npx flo gate check-before-scan
|
|
12
|
+
* npx flo gate check-before-read
|
|
13
|
+
* npx flo gate check-before-agent
|
|
14
|
+
* npx flo gate record-task-created
|
|
15
|
+
* npx flo gate record-memory-searched
|
|
16
|
+
* npx flo gate check-bash-memory
|
|
17
|
+
* npx flo gate prompt-reminder
|
|
18
|
+
* npx flo gate session-reset
|
|
19
19
|
*/
|
|
20
20
|
import type { Command } from '../types.js';
|
|
21
21
|
declare const gateCommand: Command;
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
* - Context bracket tracking (FRESH/MODERATE/DEPLETED/CRITICAL)
|
|
9
9
|
*
|
|
10
10
|
* Usage from hooks:
|
|
11
|
-
* npx
|
|
12
|
-
* npx
|
|
13
|
-
* npx
|
|
14
|
-
* npx
|
|
15
|
-
* npx
|
|
16
|
-
* npx
|
|
17
|
-
* npx
|
|
18
|
-
* npx
|
|
11
|
+
* npx flo gate check-before-scan
|
|
12
|
+
* npx flo gate check-before-read
|
|
13
|
+
* npx flo gate check-before-agent
|
|
14
|
+
* npx flo gate record-task-created
|
|
15
|
+
* npx flo gate record-memory-searched
|
|
16
|
+
* npx flo gate check-bash-memory
|
|
17
|
+
* npx flo gate prompt-reminder
|
|
18
|
+
* npx flo gate session-reset
|
|
19
19
|
*/
|
|
20
20
|
import { processGateCommand } from '../services/workflow-gate.js';
|
|
21
21
|
const gateCommand = {
|
|
@@ -23,15 +23,15 @@ const gateCommand = {
|
|
|
23
23
|
description: 'Workflow gate enforcement for Claude Code hooks',
|
|
24
24
|
options: [],
|
|
25
25
|
examples: [
|
|
26
|
-
{ command: '
|
|
27
|
-
{ command: '
|
|
28
|
-
{ command: '
|
|
29
|
-
{ command: '
|
|
26
|
+
{ command: 'flo gate check-before-scan', description: 'Check memory-first before Glob/Grep' },
|
|
27
|
+
{ command: 'flo gate check-before-agent', description: 'Check TaskCreate before Agent tool' },
|
|
28
|
+
{ command: 'flo gate prompt-reminder', description: 'Reset per-prompt state, show context bracket' },
|
|
29
|
+
{ command: 'flo gate session-reset', description: 'Reset all workflow state' },
|
|
30
30
|
],
|
|
31
31
|
action: async (ctx) => {
|
|
32
32
|
const subcommand = ctx.args?.[0];
|
|
33
33
|
if (!subcommand) {
|
|
34
|
-
console.log('Usage:
|
|
34
|
+
console.log('Usage: flo gate <command>');
|
|
35
35
|
console.log('');
|
|
36
36
|
console.log('Commands:');
|
|
37
37
|
console.log(' check-before-scan Check memory searched before Glob/Grep');
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* sort, then executes each story sequentially by spawning `claude -p "/mf ..."`.
|
|
7
7
|
*
|
|
8
8
|
* Usage:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* flo orc run <feature.yaml> Execute a feature
|
|
10
|
+
* flo orc run <feature.yaml> --dry-run Show execution plan
|
|
11
|
+
* flo orc status <feature-id> Check progress
|
|
12
|
+
* flo orc reset <feature-id> Reset for re-run
|
|
13
13
|
*/
|
|
14
14
|
import type { Command } from '../types.js';
|
|
15
15
|
declare const orcCommand: Command;
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* sort, then executes each story sequentially by spawning `claude -p "/mf ..."`.
|
|
7
7
|
*
|
|
8
8
|
* Usage:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* flo orc run <feature.yaml> Execute a feature
|
|
10
|
+
* flo orc run <feature.yaml> --dry-run Show execution plan
|
|
11
|
+
* flo orc status <feature-id> Check progress
|
|
12
|
+
* flo orc reset <feature-id> Reset for re-run
|
|
13
13
|
*/
|
|
14
14
|
import { spawn, execSync } from 'child_process';
|
|
15
15
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
@@ -571,16 +571,16 @@ const orcCommand = {
|
|
|
571
571
|
description: 'Feature orchestrator — sequences GitHub issues through /mf workflows',
|
|
572
572
|
options: [],
|
|
573
573
|
examples: [
|
|
574
|
-
{ command: '
|
|
575
|
-
{ command: '
|
|
576
|
-
{ command: '
|
|
577
|
-
{ command: '
|
|
578
|
-
{ command: '
|
|
574
|
+
{ command: 'flo orc run feature.yaml', description: 'Execute a feature definition' },
|
|
575
|
+
{ command: 'flo orc run feature.yaml --dry-run', description: 'Show execution plan without running' },
|
|
576
|
+
{ command: 'flo orc run feature.yaml --verbose', description: 'Execute with Claude output streaming' },
|
|
577
|
+
{ command: 'flo orc status my-feature', description: 'Check progress of a feature' },
|
|
578
|
+
{ command: 'flo orc reset my-feature', description: 'Reset feature state for re-run' },
|
|
579
579
|
],
|
|
580
580
|
action: async (ctx) => {
|
|
581
581
|
const subcommand = ctx.args?.[0];
|
|
582
582
|
if (!subcommand) {
|
|
583
|
-
console.log('Usage:
|
|
583
|
+
console.log('Usage: flo orc <command> [args] [flags]');
|
|
584
584
|
console.log('');
|
|
585
585
|
console.log('Commands:');
|
|
586
586
|
console.log(' run <feature.yaml> Execute a feature definition');
|
|
@@ -596,7 +596,7 @@ const orcCommand = {
|
|
|
596
596
|
case 'run': {
|
|
597
597
|
const yamlPath = ctx.args[1];
|
|
598
598
|
if (!yamlPath) {
|
|
599
|
-
console.log('Usage:
|
|
599
|
+
console.log('Usage: flo orc run <feature.yaml> [--dry-run] [--verbose]');
|
|
600
600
|
return { success: false, message: 'Missing feature YAML path' };
|
|
601
601
|
}
|
|
602
602
|
const dryRun = ctx.flags['dry-run'] === true || ctx.flags['dryRun'] === true;
|
|
@@ -606,7 +606,7 @@ const orcCommand = {
|
|
|
606
606
|
case 'status': {
|
|
607
607
|
const featureId = ctx.args[1];
|
|
608
608
|
if (!featureId) {
|
|
609
|
-
console.log('Usage:
|
|
609
|
+
console.log('Usage: flo orc status <feature-id>');
|
|
610
610
|
return { success: false, message: 'Missing feature ID' };
|
|
611
611
|
}
|
|
612
612
|
return showStatus(featureId);
|
|
@@ -614,7 +614,7 @@ const orcCommand = {
|
|
|
614
614
|
case 'reset': {
|
|
615
615
|
const featureId = ctx.args[1];
|
|
616
616
|
if (!featureId) {
|
|
617
|
-
console.log('Usage:
|
|
617
|
+
console.log('Usage: flo orc reset <feature-id>');
|
|
618
618
|
return { success: false, message: 'Missing feature ID' };
|
|
619
619
|
}
|
|
620
620
|
return resetFeature(featureId);
|