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.
@@ -8,10 +8,10 @@
8
8
  *
9
9
  * Usage:
10
10
  * node node_modules/moflo/bin/semantic-search.mjs "your search query"
11
- * npx moflo-search "your search query"
12
- * npx moflo-search "query" --limit 10
13
- * npx moflo-search "query" --namespace guidance
14
- * npx moflo-search "query" --threshold 0.3
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 moflo-search "your query" [--limit N] [--namespace X] [--threshold N]');
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 moflo-embeddings --force');
265
+ console.error('[semantic-search] Results may be poor. Run: npx flo-embeddings --force');
266
266
  }
267
267
  }
268
268
 
@@ -6,9 +6,9 @@
6
6
  * adds a CLAUDE.md section so subagents automatically follow the protocol.
7
7
  *
8
8
  * Usage:
9
- * npx moflo-setup # First-time setup
10
- * npx moflo-setup --update # Refresh bootstrap file after moflo upgrade
11
- * npx moflo-setup --check # Check if setup is current
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 moflo-search "[query]" --namespace guidance # Semantic search
72
- npx moflo-embeddings # Rebuild embeddings
73
- npx moflo-index # Re-index guidance docs
74
- npx moflo-codemap --force # Regenerate code-map
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(`[moflo-setup] ${msg}`);
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 moflo-setup. Do not edit — changes will be overwritten. -->
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.1",
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: 'moflo config show', description: 'Show merged config as JSON' },
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: 'moflo config generate', description: 'Auto-detect and write moflo.yaml' },
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 moflo gate check-before-scan
12
- * npx moflo gate check-before-read
13
- * npx moflo gate check-before-agent
14
- * npx moflo gate record-task-created
15
- * npx moflo gate record-memory-searched
16
- * npx moflo gate check-bash-memory
17
- * npx moflo gate prompt-reminder
18
- * npx moflo gate session-reset
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 moflo gate check-before-scan
12
- * npx moflo gate check-before-read
13
- * npx moflo gate check-before-agent
14
- * npx moflo gate record-task-created
15
- * npx moflo gate record-memory-searched
16
- * npx moflo gate check-bash-memory
17
- * npx moflo gate prompt-reminder
18
- * npx moflo gate session-reset
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: 'moflo gate check-before-scan', description: 'Check memory-first before Glob/Grep' },
27
- { command: 'moflo gate check-before-agent', description: 'Check TaskCreate before Agent tool' },
28
- { command: 'moflo gate prompt-reminder', description: 'Reset per-prompt state, show context bracket' },
29
- { command: 'moflo gate session-reset', description: 'Reset all workflow state' },
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: moflo gate <command>');
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
- * moflo orc run <feature.yaml> Execute a feature
10
- * moflo orc run <feature.yaml> --dry-run Show execution plan
11
- * moflo orc status <feature-id> Check progress
12
- * moflo orc reset <feature-id> Reset for re-run
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
- * moflo orc run <feature.yaml> Execute a feature
10
- * moflo orc run <feature.yaml> --dry-run Show execution plan
11
- * moflo orc status <feature-id> Check progress
12
- * moflo orc reset <feature-id> Reset for re-run
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: 'moflo orc run feature.yaml', description: 'Execute a feature definition' },
575
- { command: 'moflo orc run feature.yaml --dry-run', description: 'Show execution plan without running' },
576
- { command: 'moflo orc run feature.yaml --verbose', description: 'Execute with Claude output streaming' },
577
- { command: 'moflo orc status my-feature', description: 'Check progress of a feature' },
578
- { command: 'moflo orc reset my-feature', description: 'Reset feature state for re-run' },
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: moflo orc <command> [args] [flags]');
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: moflo orc run <feature.yaml> [--dry-run] [--verbose]');
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: moflo orc status <feature-id>');
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: moflo orc reset <feature-id>');
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);