moflo 4.10.23 → 4.10.24
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/dist/src/cli/commands/agent.js +14 -14
- package/dist/src/cli/commands/analyze.js +52 -52
- package/dist/src/cli/commands/benchmark.js +14 -14
- package/dist/src/cli/commands/claims.js +15 -15
- package/dist/src/cli/commands/completions.js +40 -40
- package/dist/src/cli/commands/config.js +8 -8
- package/dist/src/cli/commands/daemon.js +24 -24
- package/dist/src/cli/commands/deployment.js +15 -15
- package/dist/src/cli/commands/doctor-checks-config.js +6 -6
- package/dist/src/cli/commands/doctor.js +10 -10
- package/dist/src/cli/commands/embeddings.js +49 -49
- package/dist/src/cli/commands/guidance.js +22 -22
- package/dist/src/cli/commands/hive-mind.js +21 -21
- package/dist/src/cli/commands/hooks.js +95 -95
- package/dist/src/cli/commands/init.js +17 -17
- package/dist/src/cli/commands/issues.js +6 -6
- package/dist/src/cli/commands/mcp.js +10 -10
- package/dist/src/cli/commands/memory.js +56 -47
- package/dist/src/cli/commands/migrate.js +5 -5
- package/dist/src/cli/commands/neural.js +31 -31
- package/dist/src/cli/commands/performance.js +13 -13
- package/dist/src/cli/commands/plugins.js +26 -26
- package/dist/src/cli/commands/process.js +32 -32
- package/dist/src/cli/commands/progress.js +5 -5
- package/dist/src/cli/commands/providers.js +13 -13
- package/dist/src/cli/commands/route.js +26 -26
- package/dist/src/cli/commands/security.js +19 -19
- package/dist/src/cli/commands/session.js +13 -13
- package/dist/src/cli/commands/start.js +11 -11
- package/dist/src/cli/commands/status.js +8 -8
- package/dist/src/cli/commands/swarm.js +7 -7
- package/dist/src/cli/commands/task.js +9 -9
- package/dist/src/cli/commands/transfer-store.js +16 -16
- package/dist/src/cli/commands/update.js +2 -2
- package/dist/src/cli/hooks/statusline/index.js +3 -3
- package/dist/src/cli/init/executor.js +6 -6
- package/dist/src/cli/init/helpers-generator.js +4 -4
- package/dist/src/cli/mcp-tools/hooks-tools.js +1 -1
- package/dist/src/cli/memory/auto-memory-bridge.js +1 -1
- package/dist/src/cli/memory/memory-initializer.js +1 -1
- package/dist/src/cli/plugins/tests/demo-plugin-store.js +6 -6
- package/dist/src/cli/version.js +1 -1
- package/package.json +2 -2
|
@@ -115,8 +115,8 @@ const getCommand = {
|
|
|
115
115
|
}
|
|
116
116
|
],
|
|
117
117
|
examples: [
|
|
118
|
-
{ command: '
|
|
119
|
-
{ command: '
|
|
118
|
+
{ command: 'flo config get swarm.topology', description: 'Get swarm topology' },
|
|
119
|
+
{ command: 'flo config get -k memory.backend', description: 'Get memory backend' }
|
|
120
120
|
],
|
|
121
121
|
action: async (ctx) => {
|
|
122
122
|
const key = ctx.flags.key || ctx.args[0];
|
|
@@ -186,8 +186,8 @@ const setCommand = {
|
|
|
186
186
|
}
|
|
187
187
|
],
|
|
188
188
|
examples: [
|
|
189
|
-
{ command: '
|
|
190
|
-
{ command: '
|
|
189
|
+
{ command: 'flo config set swarm.maxAgents 20', description: 'Set max agents' },
|
|
190
|
+
{ command: 'flo config set -k memory.backend -v agentdb', description: 'Set memory backend' }
|
|
191
191
|
],
|
|
192
192
|
action: async (ctx) => {
|
|
193
193
|
const key = ctx.flags.key || ctx.args[0];
|
|
@@ -411,15 +411,15 @@ export const configCommand = {
|
|
|
411
411
|
subcommands: [initCommand, getCommand, setCommand, providersCommand, resetCommand, exportCommand, importCommand, showCommand, generateCommand],
|
|
412
412
|
options: [],
|
|
413
413
|
examples: [
|
|
414
|
-
{ command: '
|
|
415
|
-
{ command: '
|
|
416
|
-
{ command: '
|
|
414
|
+
{ command: 'flo config init --v3', description: 'Initialize V3 config' },
|
|
415
|
+
{ command: 'flo config get swarm.topology', description: 'Get config value' },
|
|
416
|
+
{ command: 'flo config set swarm.maxAgents 20', description: 'Set config value' }
|
|
417
417
|
],
|
|
418
418
|
action: async (ctx) => {
|
|
419
419
|
output.writeln();
|
|
420
420
|
output.writeln(output.bold('Configuration Management'));
|
|
421
421
|
output.writeln();
|
|
422
|
-
output.writeln('Usage:
|
|
422
|
+
output.writeln('Usage: flo config <subcommand> [options]');
|
|
423
423
|
output.writeln();
|
|
424
424
|
output.writeln('Subcommands:');
|
|
425
425
|
output.printList([
|
|
@@ -57,10 +57,10 @@ const startCommand = {
|
|
|
57
57
|
{ name: 'no-dashboard', type: 'boolean', description: 'Disable the dashboard HTTP server' },
|
|
58
58
|
],
|
|
59
59
|
examples: [
|
|
60
|
-
{ command: '
|
|
61
|
-
{ command: '
|
|
62
|
-
{ command: '
|
|
63
|
-
{ command: '
|
|
60
|
+
{ command: 'flo daemon start', description: 'Start daemon in background (default)' },
|
|
61
|
+
{ command: 'flo daemon start --foreground', description: 'Start in foreground (blocks terminal)' },
|
|
62
|
+
{ command: 'flo daemon start -w map,optimize', description: 'Start with specific workers' },
|
|
63
|
+
{ command: 'flo daemon start --headless --sandbox strict', description: 'Start with headless workers in strict sandbox' },
|
|
64
64
|
],
|
|
65
65
|
action: async (ctx) => {
|
|
66
66
|
const quiet = ctx.flags.quiet;
|
|
@@ -437,7 +437,7 @@ async function startBackgroundDaemon(projectRoot, quiet, maxCpuLoad, minFreeMemo
|
|
|
437
437
|
}
|
|
438
438
|
}
|
|
439
439
|
output.printInfo(`Logs: ${logFile}`);
|
|
440
|
-
output.printInfo(`Stop with:
|
|
440
|
+
output.printInfo(`Stop with: flo daemon stop`);
|
|
441
441
|
}
|
|
442
442
|
return { success: true };
|
|
443
443
|
}
|
|
@@ -449,7 +449,7 @@ const stopCommand = {
|
|
|
449
449
|
{ name: 'quiet', short: 'Q', type: 'boolean', description: 'Suppress output' },
|
|
450
450
|
],
|
|
451
451
|
examples: [
|
|
452
|
-
{ command: '
|
|
452
|
+
{ command: 'flo daemon stop', description: 'Stop the daemon' },
|
|
453
453
|
],
|
|
454
454
|
action: async (ctx) => {
|
|
455
455
|
const quiet = ctx.flags.quiet;
|
|
@@ -576,9 +576,9 @@ const statusCommand = {
|
|
|
576
576
|
{ name: 'show-modes', type: 'boolean', description: 'Show worker execution modes (local/headless) and sandbox settings' },
|
|
577
577
|
],
|
|
578
578
|
examples: [
|
|
579
|
-
{ command: '
|
|
580
|
-
{ command: '
|
|
581
|
-
{ command: '
|
|
579
|
+
{ command: 'flo daemon status', description: 'Show daemon status' },
|
|
580
|
+
{ command: 'flo daemon status -v', description: 'Show detailed status' },
|
|
581
|
+
{ command: 'flo daemon status --show-modes', description: 'Show worker execution modes' },
|
|
582
582
|
],
|
|
583
583
|
action: async (ctx) => {
|
|
584
584
|
const verbose = ctx.flags.verbose;
|
|
@@ -693,7 +693,7 @@ const statusCommand = {
|
|
|
693
693
|
`Autostart: ${autostartIcon} ${autostartInstalled ? 'registered' : 'not registered'}`,
|
|
694
694
|
`Scheduler: ${schedIcon} ${schedulerConfig.enabled ? 'enabled' : 'disabled'} (config)`,
|
|
695
695
|
'',
|
|
696
|
-
'Run "
|
|
696
|
+
'Run "flo daemon start" to start the daemon',
|
|
697
697
|
].join('\n'), 'MoFlo Daemon');
|
|
698
698
|
return { success: true };
|
|
699
699
|
}
|
|
@@ -708,8 +708,8 @@ const triggerCommand = {
|
|
|
708
708
|
{ name: 'headless', type: 'boolean', description: 'Run triggered worker in headless mode (E2B sandbox)' },
|
|
709
709
|
],
|
|
710
710
|
examples: [
|
|
711
|
-
{ command: '
|
|
712
|
-
{ command: '
|
|
711
|
+
{ command: 'flo daemon trigger -w map', description: 'Trigger the map worker' },
|
|
712
|
+
{ command: 'flo daemon trigger -w optimize --headless', description: 'Trigger optimize in headless sandbox' },
|
|
713
713
|
],
|
|
714
714
|
action: async (ctx) => {
|
|
715
715
|
const workerType = ctx.flags.worker;
|
|
@@ -752,8 +752,8 @@ const enableCommand = {
|
|
|
752
752
|
{ name: 'disable', short: 'd', type: 'boolean', description: 'Disable instead of enable' },
|
|
753
753
|
],
|
|
754
754
|
examples: [
|
|
755
|
-
{ command: '
|
|
756
|
-
{ command: '
|
|
755
|
+
{ command: 'flo daemon enable -w testgaps', description: 'Enable testgaps worker' },
|
|
756
|
+
{ command: 'flo daemon enable -w refactor --disable', description: 'Disable refactor worker' },
|
|
757
757
|
],
|
|
758
758
|
action: async (ctx) => {
|
|
759
759
|
const workerType = ctx.flags.worker;
|
|
@@ -782,7 +782,7 @@ const installCommand = {
|
|
|
782
782
|
{ name: 'quiet', short: 'Q', type: 'boolean', description: 'Suppress output' },
|
|
783
783
|
],
|
|
784
784
|
examples: [
|
|
785
|
-
{ command: '
|
|
785
|
+
{ command: 'flo daemon install', description: 'Register daemon as login service' },
|
|
786
786
|
],
|
|
787
787
|
action: async (ctx) => {
|
|
788
788
|
const quiet = ctx.flags.quiet;
|
|
@@ -816,7 +816,7 @@ const uninstallCommand = {
|
|
|
816
816
|
{ name: 'quiet', short: 'Q', type: 'boolean', description: 'Suppress output' },
|
|
817
817
|
],
|
|
818
818
|
examples: [
|
|
819
|
-
{ command: '
|
|
819
|
+
{ command: 'flo daemon uninstall', description: 'Remove daemon login service' },
|
|
820
820
|
],
|
|
821
821
|
action: async (ctx) => {
|
|
822
822
|
const quiet = ctx.flags.quiet;
|
|
@@ -879,13 +879,13 @@ export const daemonCommand = {
|
|
|
879
879
|
],
|
|
880
880
|
options: [],
|
|
881
881
|
examples: [
|
|
882
|
-
{ command: '
|
|
883
|
-
{ command: '
|
|
884
|
-
{ command: '
|
|
885
|
-
{ command: '
|
|
886
|
-
{ command: '
|
|
887
|
-
{ command: '
|
|
888
|
-
{ command: '
|
|
882
|
+
{ command: 'flo daemon start', description: 'Start the daemon' },
|
|
883
|
+
{ command: 'flo daemon start --headless', description: 'Start with headless workers (E2B sandbox)' },
|
|
884
|
+
{ command: 'flo daemon status', description: 'Check daemon status' },
|
|
885
|
+
{ command: 'flo daemon stop', description: 'Stop the daemon' },
|
|
886
|
+
{ command: 'flo daemon trigger -w optimize', description: 'Run the optimize worker' },
|
|
887
|
+
{ command: 'flo daemon install', description: 'Register as OS login service' },
|
|
888
|
+
{ command: 'flo daemon uninstall', description: 'Remove OS login service' },
|
|
889
889
|
],
|
|
890
890
|
action: async () => {
|
|
891
891
|
output.writeln();
|
|
@@ -922,7 +922,7 @@ export const daemonCommand = {
|
|
|
922
922
|
`${output.highlight('uninstall')} - Remove OS login service`,
|
|
923
923
|
]);
|
|
924
924
|
output.writeln();
|
|
925
|
-
output.writeln('Run "
|
|
925
|
+
output.writeln('Run "flo daemon <subcommand> --help" for details');
|
|
926
926
|
return { success: true };
|
|
927
927
|
},
|
|
928
928
|
};
|
|
@@ -17,8 +17,8 @@ const deployCommand = {
|
|
|
17
17
|
{ name: 'rollback-on-fail', type: 'boolean', description: 'Auto rollback on failure', default: 'true' },
|
|
18
18
|
],
|
|
19
19
|
examples: [
|
|
20
|
-
{ command: '
|
|
21
|
-
{ command: '
|
|
20
|
+
{ command: 'flo deployment deploy -e prod', description: 'Deploy to production' },
|
|
21
|
+
{ command: 'flo deployment deploy --dry-run', description: 'Simulate deployment' },
|
|
22
22
|
],
|
|
23
23
|
action: async (ctx) => {
|
|
24
24
|
const env = ctx.flags.env || 'staging';
|
|
@@ -68,8 +68,8 @@ const statusCommand = {
|
|
|
68
68
|
{ name: 'watch', short: 'w', type: 'boolean', description: 'Watch for changes' },
|
|
69
69
|
],
|
|
70
70
|
examples: [
|
|
71
|
-
{ command: '
|
|
72
|
-
{ command: '
|
|
71
|
+
{ command: 'flo deployment status', description: 'Show all environments' },
|
|
72
|
+
{ command: 'flo deployment status -e prod', description: 'Check production' },
|
|
73
73
|
],
|
|
74
74
|
action: async (ctx) => {
|
|
75
75
|
output.writeln();
|
|
@@ -103,8 +103,8 @@ const rollbackCommand = {
|
|
|
103
103
|
{ name: 'steps', short: 's', type: 'number', description: 'Number of versions to rollback', default: '1' },
|
|
104
104
|
],
|
|
105
105
|
examples: [
|
|
106
|
-
{ command: '
|
|
107
|
-
{ command: '
|
|
106
|
+
{ command: 'flo deployment rollback -e prod', description: 'Rollback production' },
|
|
107
|
+
{ command: 'flo deployment rollback -e prod -v v3.0.0', description: 'Rollback to specific version' },
|
|
108
108
|
],
|
|
109
109
|
action: async (ctx) => {
|
|
110
110
|
const env = ctx.flags.env;
|
|
@@ -144,8 +144,8 @@ const historyCommand = {
|
|
|
144
144
|
{ name: 'limit', short: 'l', type: 'number', description: 'Number of entries', default: '10' },
|
|
145
145
|
],
|
|
146
146
|
examples: [
|
|
147
|
-
{ command: '
|
|
148
|
-
{ command: '
|
|
147
|
+
{ command: 'flo deployment history', description: 'Show all history' },
|
|
148
|
+
{ command: 'flo deployment history -e prod', description: 'Production history' },
|
|
149
149
|
],
|
|
150
150
|
action: async (ctx) => {
|
|
151
151
|
const env = ctx.flags.env;
|
|
@@ -182,8 +182,8 @@ const environmentsCommand = {
|
|
|
182
182
|
{ name: 'name', short: 'n', type: 'string', description: 'Environment name' },
|
|
183
183
|
],
|
|
184
184
|
examples: [
|
|
185
|
-
{ command: '
|
|
186
|
-
{ command: '
|
|
185
|
+
{ command: 'flo deployment environments', description: 'List environments' },
|
|
186
|
+
{ command: 'flo deployment envs -a create -n preview', description: 'Create environment' },
|
|
187
187
|
],
|
|
188
188
|
action: async (ctx) => {
|
|
189
189
|
output.writeln();
|
|
@@ -217,8 +217,8 @@ const logsCommand = {
|
|
|
217
217
|
{ name: 'lines', short: 'n', type: 'number', description: 'Number of lines', default: '50' },
|
|
218
218
|
],
|
|
219
219
|
examples: [
|
|
220
|
-
{ command: '
|
|
221
|
-
{ command: '
|
|
220
|
+
{ command: 'flo deployment logs -e prod', description: 'View production logs' },
|
|
221
|
+
{ command: 'flo deployment logs -d dep-123', description: 'View specific deployment' },
|
|
222
222
|
],
|
|
223
223
|
action: async (ctx) => {
|
|
224
224
|
const env = ctx.flags.env || 'staging';
|
|
@@ -254,9 +254,9 @@ export const deploymentCommand = {
|
|
|
254
254
|
aliases: ['deploy'],
|
|
255
255
|
subcommands: [deployCommand, statusCommand, rollbackCommand, historyCommand, environmentsCommand, logsCommand],
|
|
256
256
|
examples: [
|
|
257
|
-
{ command: '
|
|
258
|
-
{ command: '
|
|
259
|
-
{ command: '
|
|
257
|
+
{ command: 'flo deployment deploy -e prod', description: 'Deploy to production' },
|
|
258
|
+
{ command: 'flo deployment status', description: 'Check all environments' },
|
|
259
|
+
{ command: 'flo deployment rollback -e prod', description: 'Rollback production' },
|
|
260
260
|
],
|
|
261
261
|
action: async () => {
|
|
262
262
|
output.writeln();
|
|
@@ -47,7 +47,7 @@ export async function checkConfigFile() {
|
|
|
47
47
|
return { name: 'Config File', status: 'pass', message: `Found: ${configPath}` };
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
return { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: '
|
|
50
|
+
return { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: 'npx moflo config init' };
|
|
51
51
|
}
|
|
52
52
|
export async function checkStatusLine() {
|
|
53
53
|
const settingsPath = join(process.cwd(), '.claude', 'settings.json');
|
|
@@ -91,16 +91,16 @@ export async function checkDaemonStatus() {
|
|
|
91
91
|
// getDaemonLockHolder auto-cleans stale locks, but check for legacy PID file
|
|
92
92
|
const lockFile = '.moflo/daemon.lock';
|
|
93
93
|
if (existsSync(lockFile)) {
|
|
94
|
-
return { name: 'Daemon Status', status: 'warn', message: 'Stale lock file', fix: '
|
|
94
|
+
return { name: 'Daemon Status', status: 'warn', message: 'Stale lock file', fix: 'npx moflo daemon start' };
|
|
95
95
|
}
|
|
96
96
|
const pidFile = '.moflo/daemon.pid';
|
|
97
97
|
if (existsSync(pidFile)) {
|
|
98
|
-
return { name: 'Daemon Status', status: 'warn', message: 'Legacy PID file found', fix: '
|
|
98
|
+
return { name: 'Daemon Status', status: 'warn', message: 'Legacy PID file found', fix: 'npx moflo daemon start' };
|
|
99
99
|
}
|
|
100
|
-
return { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: '
|
|
100
|
+
return { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: 'npx moflo daemon start' };
|
|
101
101
|
}
|
|
102
102
|
catch (e) {
|
|
103
|
-
return { name: 'Daemon Status', status: 'warn', message: `Unable to check: ${errorDetail(e)}`, fix: '
|
|
103
|
+
return { name: 'Daemon Status', status: 'warn', message: `Unable to check: ${errorDetail(e)}`, fix: 'npx moflo daemon status' };
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
@@ -265,7 +265,7 @@ export async function checkMemoryDatabase() {
|
|
|
265
265
|
fix: 'restart claude code session',
|
|
266
266
|
};
|
|
267
267
|
}
|
|
268
|
-
return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: '
|
|
268
|
+
return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'npx moflo memory configure --backend hybrid' };
|
|
269
269
|
}
|
|
270
270
|
/**
|
|
271
271
|
* Catches `.swarm/` residue that survived past the canonical migration:
|
|
@@ -86,16 +86,16 @@ export const doctorCommand = {
|
|
|
86
86
|
},
|
|
87
87
|
],
|
|
88
88
|
examples: [
|
|
89
|
-
{ command: '
|
|
90
|
-
{ command: '
|
|
91
|
-
{ command: '
|
|
92
|
-
{ command: '
|
|
93
|
-
{ command: '
|
|
94
|
-
{ command: '
|
|
95
|
-
{ command: '
|
|
96
|
-
{ command: '
|
|
97
|
-
{ command: '
|
|
98
|
-
{ command: '
|
|
89
|
+
{ command: 'flo doctor', description: 'Run full health check' },
|
|
90
|
+
{ command: 'flo doctor --fix', description: 'Show fixes for issues' },
|
|
91
|
+
{ command: 'flo doctor --install', description: 'Auto-install missing dependencies' },
|
|
92
|
+
{ command: 'flo doctor --kill-zombies', description: 'Find and kill zombie processes' },
|
|
93
|
+
{ command: 'flo doctor -c version', description: 'Check for stale npx cache' },
|
|
94
|
+
{ command: 'flo doctor -c claude', description: 'Check Claude Code CLI only' },
|
|
95
|
+
{ command: 'flo doctor --strict', description: 'Fail (exit 1) on any warning — used by CI' },
|
|
96
|
+
{ command: 'flo doctor --json', description: 'Emit a single JSON doc with per-check + per-subcheck details (for CI/smoke gates)' },
|
|
97
|
+
{ command: 'flo doctor -c swarm', description: 'Run only the swarm + agent + task coordinator-path tripwire (epic #798)' },
|
|
98
|
+
{ command: 'flo doctor -c hive-mind', description: 'Run only the hive-mind MessageBus + shared-coordinator tripwire' },
|
|
99
99
|
],
|
|
100
100
|
action: async (ctx) => {
|
|
101
101
|
const showFix = ctx.flags.fix;
|
|
@@ -30,8 +30,8 @@ const generateCommand = {
|
|
|
30
30
|
{ name: 'output', short: 'o', type: 'string', description: 'Output format: json, array, preview', default: 'preview' },
|
|
31
31
|
],
|
|
32
32
|
examples: [
|
|
33
|
-
{ command: '
|
|
34
|
-
{ command: '
|
|
33
|
+
{ command: 'flo embeddings generate -t "Hello world"', description: 'Generate embedding' },
|
|
34
|
+
{ command: 'flo embeddings generate -t "Test" -o json', description: 'Output as JSON' },
|
|
35
35
|
],
|
|
36
36
|
action: async (ctx) => {
|
|
37
37
|
const text = ctx.flags.text;
|
|
@@ -102,8 +102,8 @@ const searchCommand = {
|
|
|
102
102
|
{ name: 'db-path', type: 'string', description: 'Database path', default: DEFAULT_DB_PATH_FLAG },
|
|
103
103
|
],
|
|
104
104
|
examples: [
|
|
105
|
-
{ command: '
|
|
106
|
-
{ command: '
|
|
105
|
+
{ command: 'flo embeddings search -q "error handling"', description: 'Search for similar' },
|
|
106
|
+
{ command: 'flo embeddings search -q "test" -l 5', description: 'Limit results' },
|
|
107
107
|
],
|
|
108
108
|
action: async (ctx) => {
|
|
109
109
|
const query = ctx.flags.query;
|
|
@@ -128,7 +128,7 @@ const searchCommand = {
|
|
|
128
128
|
if (!fs.existsSync(fullDbPath)) {
|
|
129
129
|
spinner.fail('Database not found');
|
|
130
130
|
output.printWarning(`No database at ${fullDbPath}`);
|
|
131
|
-
output.printInfo('Run:
|
|
131
|
+
output.printInfo('Run: flo memory init');
|
|
132
132
|
return { success: false, exitCode: 1 };
|
|
133
133
|
}
|
|
134
134
|
// node:sqlite via the unified factory (Phase 5 / #1084).
|
|
@@ -207,7 +207,7 @@ const searchCommand = {
|
|
|
207
207
|
if (topResults.length === 0) {
|
|
208
208
|
output.writeln();
|
|
209
209
|
output.printWarning('No matches found');
|
|
210
|
-
output.printInfo(`Try:
|
|
210
|
+
output.printInfo(`Try: flo memory store -k "key" --value "your data"`);
|
|
211
211
|
return { success: true, data: [] };
|
|
212
212
|
}
|
|
213
213
|
output.writeln();
|
|
@@ -265,7 +265,7 @@ const compareCommand = {
|
|
|
265
265
|
{ name: 'metric', short: 'm', type: 'string', description: 'Metric: cosine, euclidean, dot', default: 'cosine' },
|
|
266
266
|
],
|
|
267
267
|
examples: [
|
|
268
|
-
{ command: '
|
|
268
|
+
{ command: 'flo embeddings compare --text1 "Hello" --text2 "Hi there"', description: 'Compare texts' },
|
|
269
269
|
],
|
|
270
270
|
action: async (ctx) => {
|
|
271
271
|
const text1 = ctx.flags.text1;
|
|
@@ -350,8 +350,8 @@ const collectionsCommand = {
|
|
|
350
350
|
{ name: 'db-path', type: 'string', description: 'Database path', default: DEFAULT_DB_PATH_FLAG },
|
|
351
351
|
],
|
|
352
352
|
examples: [
|
|
353
|
-
{ command: '
|
|
354
|
-
{ command: '
|
|
353
|
+
{ command: 'flo embeddings collections', description: 'List collections' },
|
|
354
|
+
{ command: 'flo embeddings collections -a stats', description: 'Show detailed stats' },
|
|
355
355
|
],
|
|
356
356
|
action: async (ctx) => {
|
|
357
357
|
const action = ctx.flags.action || 'list';
|
|
@@ -366,7 +366,7 @@ const collectionsCommand = {
|
|
|
366
366
|
// Check if database exists
|
|
367
367
|
if (!fs.existsSync(fullDbPath)) {
|
|
368
368
|
output.printWarning('No database found');
|
|
369
|
-
output.printInfo('Run:
|
|
369
|
+
output.printInfo('Run: flo memory init');
|
|
370
370
|
output.writeln();
|
|
371
371
|
output.writeln(output.dim('No collections yet - initialize memory first'));
|
|
372
372
|
return { success: true, data: [] };
|
|
@@ -407,7 +407,7 @@ const collectionsCommand = {
|
|
|
407
407
|
output.printWarning('No collections found');
|
|
408
408
|
output.writeln();
|
|
409
409
|
output.writeln(output.dim('Store some data first:'));
|
|
410
|
-
output.writeln(output.highlight('
|
|
410
|
+
output.writeln(output.highlight(' flo memory store -k "key" --value "data"'));
|
|
411
411
|
return { success: true, data: [] };
|
|
412
412
|
}
|
|
413
413
|
output.printTable({
|
|
@@ -451,9 +451,9 @@ const indexCommand = {
|
|
|
451
451
|
{ name: 'm', type: 'number', description: 'HNSW M parameter', default: '16' },
|
|
452
452
|
],
|
|
453
453
|
examples: [
|
|
454
|
-
{ command: '
|
|
455
|
-
{ command: '
|
|
456
|
-
{ command: '
|
|
454
|
+
{ command: 'flo embeddings index', description: 'Show index status' },
|
|
455
|
+
{ command: 'flo embeddings index -a build -c documents', description: 'Build index' },
|
|
456
|
+
{ command: 'flo embeddings index -a optimize -c patterns', description: 'Optimize index' },
|
|
457
457
|
],
|
|
458
458
|
action: async (ctx) => {
|
|
459
459
|
const action = ctx.flags.action || 'status';
|
|
@@ -512,7 +512,7 @@ const indexCommand = {
|
|
|
512
512
|
else {
|
|
513
513
|
output.writeln();
|
|
514
514
|
output.printInfo('Index is empty. Store some entries to populate it.');
|
|
515
|
-
output.printInfo('Run:
|
|
515
|
+
output.printInfo('Run: flo memory store -k "key" --value "text"');
|
|
516
516
|
}
|
|
517
517
|
return { success: true, data: status };
|
|
518
518
|
}
|
|
@@ -585,11 +585,11 @@ export const initCommand = {
|
|
|
585
585
|
{ name: 'force', short: 'f', type: 'boolean', description: 'Overwrite existing configuration', default: 'false' },
|
|
586
586
|
],
|
|
587
587
|
examples: [
|
|
588
|
-
{ command: '
|
|
589
|
-
{ command: '
|
|
590
|
-
{ command: '
|
|
591
|
-
{ command: '
|
|
592
|
-
{ command: '
|
|
588
|
+
{ command: 'flo embeddings init', description: 'Initialize with defaults' },
|
|
589
|
+
{ command: 'flo embeddings init --model all-mpnet-base-v2', description: 'Use higher quality model' },
|
|
590
|
+
{ command: 'flo embeddings init --no-hyperbolic', description: 'Euclidean only' },
|
|
591
|
+
{ command: 'flo embeddings init --curvature=-0.5', description: 'Custom curvature (use = for negative)' },
|
|
592
|
+
{ command: 'flo embeddings init --force', description: 'Overwrite existing config' },
|
|
593
593
|
],
|
|
594
594
|
action: async (ctx) => {
|
|
595
595
|
const model = ctx.flags.model || 'all-MiniLM-L6-v2';
|
|
@@ -703,7 +703,7 @@ const providersCommand = {
|
|
|
703
703
|
description: 'List available embedding providers',
|
|
704
704
|
options: [],
|
|
705
705
|
examples: [
|
|
706
|
-
{ command: '
|
|
706
|
+
{ command: 'flo embeddings providers', description: 'List providers' },
|
|
707
707
|
],
|
|
708
708
|
action: async () => {
|
|
709
709
|
output.writeln();
|
|
@@ -742,8 +742,8 @@ const chunkCommand = {
|
|
|
742
742
|
{ name: 'file', short: 'f', type: 'string', description: 'File to chunk (instead of text)' },
|
|
743
743
|
],
|
|
744
744
|
examples: [
|
|
745
|
-
{ command: '
|
|
746
|
-
{ command: '
|
|
745
|
+
{ command: 'flo embeddings chunk -t "Long text..." -s 256', description: 'Chunk with 256 char limit' },
|
|
746
|
+
{ command: 'flo embeddings chunk -f doc.txt --strategy paragraph', description: 'Chunk file by paragraph' },
|
|
747
747
|
],
|
|
748
748
|
action: async (ctx) => {
|
|
749
749
|
const text = ctx.flags.text || '';
|
|
@@ -784,8 +784,8 @@ const normalizeCommand = {
|
|
|
784
784
|
{ name: 'check', short: 'c', type: 'boolean', description: 'Check if already normalized' },
|
|
785
785
|
],
|
|
786
786
|
examples: [
|
|
787
|
-
{ command: '
|
|
788
|
-
{ command: '
|
|
787
|
+
{ command: 'flo embeddings normalize -i "[0.5, 0.3, 0.8]" -t l2', description: 'L2 normalize' },
|
|
788
|
+
{ command: 'flo embeddings normalize --check -i "[...]"', description: 'Check if normalized' },
|
|
789
789
|
],
|
|
790
790
|
action: async (ctx) => {
|
|
791
791
|
const type = ctx.flags.type || 'l2';
|
|
@@ -822,8 +822,8 @@ const hyperbolicCommand = {
|
|
|
822
822
|
{ name: 'input', short: 'i', type: 'string', description: 'Input embedding(s) JSON' },
|
|
823
823
|
],
|
|
824
824
|
examples: [
|
|
825
|
-
{ command: '
|
|
826
|
-
{ command: '
|
|
825
|
+
{ command: 'flo embeddings hyperbolic -a convert -i "[0.5, 0.3]"', description: 'Convert to Poincaré' },
|
|
826
|
+
{ command: 'flo embeddings hyperbolic -a distance', description: 'Compute hyperbolic distance' },
|
|
827
827
|
],
|
|
828
828
|
action: async (ctx) => {
|
|
829
829
|
const action = ctx.flags.action || 'convert';
|
|
@@ -923,11 +923,11 @@ const neuralCommand = {
|
|
|
923
923
|
{ name: 'consolidation-interval', type: 'string', description: 'Memory consolidation interval (ms)', default: '60000' },
|
|
924
924
|
],
|
|
925
925
|
examples: [
|
|
926
|
-
{ command: '
|
|
927
|
-
{ command: '
|
|
928
|
-
{ command: '
|
|
929
|
-
{ command: '
|
|
930
|
-
{ command: '
|
|
926
|
+
{ command: 'flo embeddings neural --init', description: 'Initialize MoVector substrate' },
|
|
927
|
+
{ command: 'flo embeddings neural -f drift', description: 'Semantic drift detection' },
|
|
928
|
+
{ command: 'flo embeddings neural -f memory', description: 'Memory physics (hippocampal)' },
|
|
929
|
+
{ command: 'flo embeddings neural -f coherence', description: 'Safety & alignment monitoring' },
|
|
930
|
+
{ command: 'flo embeddings neural --drift-threshold=0.2', description: 'Custom drift threshold' },
|
|
931
931
|
],
|
|
932
932
|
action: async (ctx) => {
|
|
933
933
|
const feature = ctx.flags.feature || 'all';
|
|
@@ -1070,8 +1070,8 @@ export const modelsCommand = {
|
|
|
1070
1070
|
{ name: 'list', short: 'l', type: 'boolean', description: 'List available models', default: 'true' },
|
|
1071
1071
|
],
|
|
1072
1072
|
examples: [
|
|
1073
|
-
{ command: '
|
|
1074
|
-
{ command: '
|
|
1073
|
+
{ command: 'flo embeddings models', description: 'List models' },
|
|
1074
|
+
{ command: 'flo embeddings models -d all-MiniLM-L6-v2', description: 'Download model' },
|
|
1075
1075
|
],
|
|
1076
1076
|
action: async (ctx) => {
|
|
1077
1077
|
const download = ctx.flags.download;
|
|
@@ -1122,8 +1122,8 @@ const cacheCommand = {
|
|
|
1122
1122
|
{ name: 'db-path', type: 'string', description: 'SQLite database path', default: '.cache/embeddings.db' },
|
|
1123
1123
|
],
|
|
1124
1124
|
examples: [
|
|
1125
|
-
{ command: '
|
|
1126
|
-
{ command: '
|
|
1125
|
+
{ command: 'flo embeddings cache', description: 'Show cache stats' },
|
|
1126
|
+
{ command: 'flo embeddings cache -a clear', description: 'Clear cache' },
|
|
1127
1127
|
],
|
|
1128
1128
|
action: async (ctx) => {
|
|
1129
1129
|
const action = ctx.flags.action || 'stats';
|
|
@@ -1253,8 +1253,8 @@ const warmupCommand = {
|
|
|
1253
1253
|
{ name: 'test', short: 't', type: 'boolean', description: 'Run test embedding after warmup', default: 'true' },
|
|
1254
1254
|
],
|
|
1255
1255
|
examples: [
|
|
1256
|
-
{ command: '
|
|
1257
|
-
{ command: '
|
|
1256
|
+
{ command: 'flo embeddings warmup', description: 'Preload model with test' },
|
|
1257
|
+
{ command: 'flo embeddings warmup -b', description: 'Background warmup' },
|
|
1258
1258
|
],
|
|
1259
1259
|
action: async (ctx) => {
|
|
1260
1260
|
const runTest = ctx.flags.test !== false;
|
|
@@ -1327,8 +1327,8 @@ const benchmarkCommand = {
|
|
|
1327
1327
|
{ name: 'full', short: 'f', type: 'boolean', description: 'Run full benchmark suite', default: 'false' },
|
|
1328
1328
|
],
|
|
1329
1329
|
examples: [
|
|
1330
|
-
{ command: '
|
|
1331
|
-
{ command: '
|
|
1330
|
+
{ command: 'flo embeddings benchmark', description: 'Quick benchmark' },
|
|
1331
|
+
{ command: 'flo embeddings benchmark -n 50 -f', description: 'Full benchmark' },
|
|
1332
1332
|
],
|
|
1333
1333
|
action: async (ctx) => {
|
|
1334
1334
|
const iterations = parseInt(ctx.flags.iterations || '10', 10);
|
|
@@ -1471,8 +1471,8 @@ const migrateCommand = {
|
|
|
1471
1471
|
{ name: 'verbose', short: 'v', type: 'boolean', description: 'Verbose output', default: 'false' },
|
|
1472
1472
|
],
|
|
1473
1473
|
examples: [
|
|
1474
|
-
{ command: '
|
|
1475
|
-
{ command: '
|
|
1474
|
+
{ command: 'flo embeddings migrate', description: `Migrate ${DEFAULT_DB_PATH_FLAG} to current version` },
|
|
1475
|
+
{ command: 'flo embeddings migrate -d .custom/mem.db', description: 'Migrate a custom DB' },
|
|
1476
1476
|
],
|
|
1477
1477
|
action: async (ctx) => {
|
|
1478
1478
|
const dbPath = ctx.flags.db || memoryDbPath(process.cwd());
|
|
@@ -1511,13 +1511,13 @@ export const embeddingsCommand = {
|
|
|
1511
1511
|
benchmarkCommand,
|
|
1512
1512
|
],
|
|
1513
1513
|
examples: [
|
|
1514
|
-
{ command: '
|
|
1515
|
-
{ command: '
|
|
1516
|
-
{ command: '
|
|
1517
|
-
{ command: '
|
|
1518
|
-
{ command: '
|
|
1519
|
-
{ command: '
|
|
1520
|
-
{ command: '
|
|
1514
|
+
{ command: 'flo embeddings init', description: 'Initialize ONNX embedding system' },
|
|
1515
|
+
{ command: 'flo embeddings init --model all-mpnet-base-v2', description: 'Init with larger model' },
|
|
1516
|
+
{ command: 'flo embeddings generate -t "Hello"', description: 'Generate embedding' },
|
|
1517
|
+
{ command: 'flo embeddings search -q "error handling"', description: 'Semantic search' },
|
|
1518
|
+
{ command: 'flo embeddings chunk -t "Long doc..."', description: 'Chunk document' },
|
|
1519
|
+
{ command: 'flo embeddings hyperbolic -a convert', description: 'Hyperbolic space' },
|
|
1520
|
+
{ command: 'flo embed neural -f drift', description: 'Neural substrate' },
|
|
1521
1521
|
],
|
|
1522
1522
|
action: async () => {
|
|
1523
1523
|
output.writeln();
|