claude-flow-novice 2.0.3 ā 2.0.4
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/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -1,710 +1,529 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI Commands for Guidance System
|
|
3
3
|
* Provides command-line interface for accessing adaptive guidance features
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const { Command } = require('commander');
|
|
4
|
+
*/ const { Command } = require('commander');
|
|
7
5
|
const { GuidanceSystem } = require('../../guidance');
|
|
8
6
|
const chalk = require('chalk');
|
|
9
7
|
const Table = require('cli-table3');
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
constructor() {
|
|
13
|
-
this.guidanceSystem = null;
|
|
14
|
-
this.program = new Command();
|
|
15
|
-
this.setupCommands();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
8
|
+
let GuidanceCommands = class GuidanceCommands {
|
|
9
|
+
/**
|
|
19
10
|
* Setup all guidance-related commands
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
guidance
|
|
50
|
-
.command('status')
|
|
51
|
-
.alias('st')
|
|
52
|
-
.description('Show your experience level and learning progress')
|
|
53
|
-
.option('--detailed', 'Show detailed statistics')
|
|
54
|
-
.action(async (options) => {
|
|
55
|
-
await this.showUserStatus(options);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// Get learning recommendations
|
|
59
|
-
guidance
|
|
60
|
-
.command('learn')
|
|
61
|
-
.alias('rec')
|
|
62
|
-
.description('Get personalized learning recommendations')
|
|
63
|
-
.option('--topic <topic>', 'Get recommendations for specific topic')
|
|
64
|
-
.action(async (options) => {
|
|
65
|
-
await this.showLearningRecommendations(options);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
// Show learning path
|
|
69
|
-
guidance
|
|
70
|
-
.command('path')
|
|
71
|
-
.description('Show your learning path and progression')
|
|
72
|
-
.action(async () => {
|
|
73
|
-
await this.showLearningPath();
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// Set experience level
|
|
77
|
-
guidance
|
|
78
|
-
.command('level <level>')
|
|
79
|
-
.description('Set your experience level (novice, intermediate, expert, adaptive)')
|
|
80
|
-
.action(async (level) => {
|
|
81
|
-
await this.setExperienceLevel(level);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
// Update preferences
|
|
85
|
-
guidance
|
|
86
|
-
.command('preferences')
|
|
87
|
-
.alias('prefs')
|
|
88
|
-
.description('Manage guidance preferences')
|
|
89
|
-
.option('--tips <boolean>', 'Enable/disable tips (true/false)')
|
|
90
|
-
.option('--warnings <boolean>', 'Enable/disable safety warnings (true/false)')
|
|
91
|
-
.option('--verbosity <level>', 'Set verbosity level (low, medium, high)')
|
|
92
|
-
.option('--auto-suggest <boolean>', 'Enable/disable auto-suggestions (true/false)')
|
|
93
|
-
.action(async (options) => {
|
|
94
|
-
await this.updatePreferences(options);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// Get knowledge resources
|
|
98
|
-
guidance
|
|
99
|
-
.command('resources <topic>')
|
|
100
|
-
.alias('res')
|
|
101
|
-
.description('Get learning resources for a specific topic')
|
|
102
|
-
.action(async (topic) => {
|
|
103
|
-
await this.showKnowledgeResources(topic);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// Get common patterns
|
|
107
|
-
guidance
|
|
108
|
-
.command('patterns <taskType>')
|
|
109
|
-
.alias('pat')
|
|
110
|
-
.description('Show common patterns for a task type')
|
|
111
|
-
.action(async (taskType) => {
|
|
112
|
-
await this.showCommonPatterns(taskType);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
// Analyze current context
|
|
116
|
-
guidance
|
|
117
|
-
.command('analyze')
|
|
118
|
-
.description('Analyze current project context and get suggestions')
|
|
119
|
-
.option('--files <glob>', 'Analyze specific files')
|
|
120
|
-
.option('--errors <file>', 'Include error log for analysis')
|
|
121
|
-
.action(async (options) => {
|
|
122
|
-
await this.analyzeContext(options);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
// Generate tutorial
|
|
126
|
-
guidance
|
|
127
|
-
.command('tutorial <topic>')
|
|
128
|
-
.alias('tut')
|
|
129
|
-
.description('Generate a tutorial for a specific topic')
|
|
130
|
-
.option('--level <level>', 'Target experience level')
|
|
131
|
-
.option('--save <file>', 'Save tutorial to file')
|
|
132
|
-
.action(async (topic, options) => {
|
|
133
|
-
await this.generateTutorial(topic, options);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
// Show system health
|
|
137
|
-
guidance
|
|
138
|
-
.command('health')
|
|
139
|
-
.description('Show guidance system health and statistics')
|
|
140
|
-
.action(async () => {
|
|
141
|
-
await this.showSystemHealth();
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Initialize guidance system
|
|
147
|
-
*/
|
|
148
|
-
async initializeGuidance(options) {
|
|
149
|
-
try {
|
|
150
|
-
console.log(chalk.blue('š Initializing adaptive guidance system...'));
|
|
151
|
-
|
|
152
|
-
this.guidanceSystem = new GuidanceSystem(options);
|
|
153
|
-
|
|
154
|
-
// Setup event listeners
|
|
155
|
-
this.guidanceSystem.on('initialized', () => {
|
|
156
|
-
console.log(chalk.green('ā
Guidance system initialized successfully'));
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
this.guidanceSystem.on('error', ({ error, context }) => {
|
|
160
|
-
console.error(chalk.red(`ā Error in ${context}:`, error.message));
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
const initialized = await this.guidanceSystem.initialize();
|
|
164
|
-
|
|
165
|
-
if (initialized) {
|
|
166
|
-
const status = this.guidanceSystem.getUserStatus();
|
|
167
|
-
console.log(chalk.cyan(`\nš¤ Experience Level: ${status?.experienceLevel || 'novice'}`));
|
|
168
|
-
console.log(
|
|
169
|
-
chalk.gray('š” Use "claude-flow-novice guidance help-with <command>" for contextual help'),
|
|
170
|
-
);
|
|
171
|
-
} else {
|
|
172
|
-
console.error(chalk.red('ā Failed to initialize guidance system'));
|
|
173
|
-
process.exit(1);
|
|
174
|
-
}
|
|
175
|
-
} catch (error) {
|
|
176
|
-
console.error(chalk.red('ā Initialization failed:', error.message));
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Get contextual help for a command
|
|
183
|
-
*/
|
|
184
|
-
async getCommandHelp(command, options) {
|
|
185
|
-
await this.ensureInitialized();
|
|
186
|
-
|
|
187
|
-
try {
|
|
188
|
-
const context = {
|
|
189
|
-
command,
|
|
190
|
-
taskType: options.taskType,
|
|
191
|
-
complexity: options.complexity,
|
|
192
|
-
userInput: command,
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
const guidance = await this.guidanceSystem.getCommandGuidance(command, [], context);
|
|
196
|
-
|
|
197
|
-
if (!guidance) {
|
|
198
|
-
console.log(chalk.yellow('ā ļø No specific guidance available for this command'));
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
this.displayGuidance(guidance, options.verbose);
|
|
203
|
-
} catch (error) {
|
|
204
|
-
console.error(chalk.red('ā Failed to get command help:', error.message));
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Display guidance information
|
|
210
|
-
*/
|
|
211
|
-
displayGuidance(guidance, verbose = false) {
|
|
212
|
-
console.log(chalk.blue.bold(`\nš Guidance for: ${guidance.context.taskType || 'general'}`));
|
|
213
|
-
console.log(chalk.gray(`Experience Level: ${guidance.experienceLevel}`));
|
|
214
|
-
|
|
215
|
-
// Context information
|
|
216
|
-
if (guidance.context) {
|
|
217
|
-
console.log(chalk.cyan('\nšÆ Context Analysis:'));
|
|
218
|
-
console.log(` Task Type: ${guidance.context.taskType}`);
|
|
219
|
-
console.log(` Complexity: ${guidance.context.complexity}`);
|
|
220
|
-
console.log(` Urgency: ${guidance.context.urgency}`);
|
|
221
|
-
|
|
222
|
-
if (guidance.context.recommendedAgents?.length > 0) {
|
|
223
|
-
console.log(` Recommended Agents: ${guidance.context.recommendedAgents.join(', ')}`);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// Adaptive guidance
|
|
228
|
-
if (guidance.adaptive) {
|
|
229
|
-
const adaptive = guidance.adaptive;
|
|
230
|
-
|
|
231
|
-
// Suggestions
|
|
232
|
-
if (adaptive.suggestions?.length > 0) {
|
|
233
|
-
console.log(chalk.green('\nš” Suggestions:'));
|
|
234
|
-
adaptive.suggestions.forEach((suggestion, index) => {
|
|
235
|
-
const priority =
|
|
236
|
-
suggestion.priority === 'high' ? 'š“' : suggestion.priority === 'medium' ? 'š”' : 'š¢';
|
|
237
|
-
console.log(` ${index + 1}. ${priority} ${suggestion.message}`);
|
|
238
|
-
|
|
239
|
-
if (suggestion.action) {
|
|
240
|
-
console.log(` Command: ${chalk.cyan(suggestion.action)}`);
|
|
241
|
-
}
|
|
11
|
+
*/ setupCommands() {
|
|
12
|
+
const guidance = this.program.command('guidance').alias('guide').description('Adaptive guidance system commands');
|
|
13
|
+
// Initialize guidance system
|
|
14
|
+
guidance.command('init').description('Initialize the guidance system').option('--config-dir <dir>', 'Configuration directory path').action(async (options)=>{
|
|
15
|
+
await this.initializeGuidance(options);
|
|
16
|
+
});
|
|
17
|
+
// Get guidance for a command
|
|
18
|
+
guidance.command('help-with <command>').alias('hw').description('Get contextual help for a specific command').option('--task-type <type>', 'Specify task type for better guidance').option('--complexity <level>', 'Specify complexity level (low, medium, high)').option('--verbose', 'Get detailed explanations').action(async (command, options)=>{
|
|
19
|
+
await this.getCommandHelp(command, options);
|
|
20
|
+
});
|
|
21
|
+
// Show user status and experience level
|
|
22
|
+
guidance.command('status').alias('st').description('Show your experience level and learning progress').option('--detailed', 'Show detailed statistics').action(async (options)=>{
|
|
23
|
+
await this.showUserStatus(options);
|
|
24
|
+
});
|
|
25
|
+
// Get learning recommendations
|
|
26
|
+
guidance.command('learn').alias('rec').description('Get personalized learning recommendations').option('--topic <topic>', 'Get recommendations for specific topic').action(async (options)=>{
|
|
27
|
+
await this.showLearningRecommendations(options);
|
|
28
|
+
});
|
|
29
|
+
// Show learning path
|
|
30
|
+
guidance.command('path').description('Show your learning path and progression').action(async ()=>{
|
|
31
|
+
await this.showLearningPath();
|
|
32
|
+
});
|
|
33
|
+
// Set experience level
|
|
34
|
+
guidance.command('level <level>').description('Set your experience level (novice, intermediate, expert, adaptive)').action(async (level)=>{
|
|
35
|
+
await this.setExperienceLevel(level);
|
|
36
|
+
});
|
|
37
|
+
// Update preferences
|
|
38
|
+
guidance.command('preferences').alias('prefs').description('Manage guidance preferences').option('--tips <boolean>', 'Enable/disable tips (true/false)').option('--warnings <boolean>', 'Enable/disable safety warnings (true/false)').option('--verbosity <level>', 'Set verbosity level (low, medium, high)').option('--auto-suggest <boolean>', 'Enable/disable auto-suggestions (true/false)').action(async (options)=>{
|
|
39
|
+
await this.updatePreferences(options);
|
|
242
40
|
});
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
if (adaptive.warnings?.length > 0) {
|
|
247
|
-
console.log(chalk.yellow('\nā ļø Warnings:'));
|
|
248
|
-
adaptive.warnings.forEach((warning, index) => {
|
|
249
|
-
console.log(` ${index + 1}. ${warning.message}`);
|
|
250
|
-
if (warning.suggestion) {
|
|
251
|
-
console.log(` Suggestion: ${warning.suggestion}`);
|
|
252
|
-
}
|
|
41
|
+
// Get knowledge resources
|
|
42
|
+
guidance.command('resources <topic>').alias('res').description('Get learning resources for a specific topic').action(async (topic)=>{
|
|
43
|
+
await this.showKnowledgeResources(topic);
|
|
253
44
|
});
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
if (adaptive.tips?.length > 0 && verbose) {
|
|
258
|
-
console.log(chalk.blue('\nš” Tips:'));
|
|
259
|
-
adaptive.tips.forEach((tip, index) => {
|
|
260
|
-
console.log(` ${index + 1}. ${tip.message}`);
|
|
45
|
+
// Get common patterns
|
|
46
|
+
guidance.command('patterns <taskType>').alias('pat').description('Show common patterns for a task type').action(async (taskType)=>{
|
|
47
|
+
await this.showCommonPatterns(taskType);
|
|
261
48
|
});
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
if (adaptive.examples?.length > 0 && verbose) {
|
|
266
|
-
console.log(chalk.magenta('\nš Examples:'));
|
|
267
|
-
adaptive.examples.forEach((example, index) => {
|
|
268
|
-
console.log(` ${index + 1}. ${example.title}`);
|
|
269
|
-
console.log(` ${chalk.cyan(example.command)}`);
|
|
270
|
-
console.log(` ${example.description}`);
|
|
49
|
+
// Analyze current context
|
|
50
|
+
guidance.command('analyze').description('Analyze current project context and get suggestions').option('--files <glob>', 'Analyze specific files').option('--errors <file>', 'Include error log for analysis').action(async (options)=>{
|
|
51
|
+
await this.analyzeContext(options);
|
|
271
52
|
});
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
if (step.command) {
|
|
280
|
-
console.log(` Command: ${chalk.cyan(step.command)}`);
|
|
281
|
-
}
|
|
53
|
+
// Generate tutorial
|
|
54
|
+
guidance.command('tutorial <topic>').alias('tut').description('Generate a tutorial for a specific topic').option('--level <level>', 'Target experience level').option('--save <file>', 'Save tutorial to file').action(async (topic, options)=>{
|
|
55
|
+
await this.generateTutorial(topic, options);
|
|
56
|
+
});
|
|
57
|
+
// Show system health
|
|
58
|
+
guidance.command('health').description('Show guidance system health and statistics').action(async ()=>{
|
|
59
|
+
await this.showSystemHealth();
|
|
282
60
|
});
|
|
283
|
-
}
|
|
284
61
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Initialize guidance system
|
|
64
|
+
*/ async initializeGuidance(options) {
|
|
65
|
+
try {
|
|
66
|
+
console.log(chalk.blue('š Initializing adaptive guidance system...'));
|
|
67
|
+
this.guidanceSystem = new GuidanceSystem(options);
|
|
68
|
+
// Setup event listeners
|
|
69
|
+
this.guidanceSystem.on('initialized', ()=>{
|
|
70
|
+
console.log(chalk.green('ā
Guidance system initialized successfully'));
|
|
71
|
+
});
|
|
72
|
+
this.guidanceSystem.on('error', ({ error, context })=>{
|
|
73
|
+
console.error(chalk.red(`ā Error in ${context}:`, error.message));
|
|
74
|
+
});
|
|
75
|
+
const initialized = await this.guidanceSystem.initialize();
|
|
76
|
+
if (initialized) {
|
|
77
|
+
const status = this.guidanceSystem.getUserStatus();
|
|
78
|
+
console.log(chalk.cyan(`\nš¤ Experience Level: ${status?.experienceLevel || 'novice'}`));
|
|
79
|
+
console.log(chalk.gray('š” Use "claude-flow-novice guidance help-with <command>" for contextual help'));
|
|
80
|
+
} else {
|
|
81
|
+
console.error(chalk.red('ā Failed to initialize guidance system'));
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
} catch (error) {
|
|
85
|
+
console.error(chalk.red('ā Initialization failed:', error.message));
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
299
88
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
console.log(`Experience Level: ${chalk.cyan(status.experienceLevel)}`);
|
|
320
|
-
console.log(`Progress to Next: ${chalk.green(Math.round(status.progressToNext * 100))}%`);
|
|
321
|
-
|
|
322
|
-
// Statistics
|
|
323
|
-
if (options.detailed) {
|
|
324
|
-
const table = new Table({
|
|
325
|
-
head: ['Metric', 'Value'],
|
|
326
|
-
colWidths: [25, 15],
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
table.push(
|
|
330
|
-
['Total Commands', status.stats.totalCommands],
|
|
331
|
-
['Successful Commands', status.stats.successfulCommands],
|
|
332
|
-
['Failed Commands', status.stats.failedCommands],
|
|
333
|
-
[
|
|
334
|
-
'Success Rate',
|
|
335
|
-
`${Math.round((status.stats.successfulCommands / status.stats.totalCommands) * 100)}%`,
|
|
336
|
-
],
|
|
337
|
-
['Days Active', status.stats.daysActive || 0],
|
|
338
|
-
);
|
|
339
|
-
|
|
340
|
-
console.log('\nš Statistics:');
|
|
341
|
-
console.log(table.toString());
|
|
342
|
-
|
|
343
|
-
// Skill proficiency
|
|
344
|
-
if (status.skillProficiency) {
|
|
345
|
-
console.log(chalk.blue('\nšÆ Skill Proficiency:'));
|
|
346
|
-
Object.entries(status.skillProficiency).forEach(([skill, score]) => {
|
|
347
|
-
const percentage = Math.round(score * 100);
|
|
348
|
-
const bar =
|
|
349
|
-
'ā'.repeat(Math.floor(percentage / 10)) +
|
|
350
|
-
'ā'.repeat(10 - Math.floor(percentage / 10));
|
|
351
|
-
console.log(` ${skill}: ${chalk.cyan(bar)} ${percentage}%`);
|
|
352
|
-
});
|
|
89
|
+
/**
|
|
90
|
+
* Get contextual help for a command
|
|
91
|
+
*/ async getCommandHelp(command, options) {
|
|
92
|
+
await this.ensureInitialized();
|
|
93
|
+
try {
|
|
94
|
+
const context = {
|
|
95
|
+
command,
|
|
96
|
+
taskType: options.taskType,
|
|
97
|
+
complexity: options.complexity,
|
|
98
|
+
userInput: command
|
|
99
|
+
};
|
|
100
|
+
const guidance = await this.guidanceSystem.getCommandGuidance(command, [], context);
|
|
101
|
+
if (!guidance) {
|
|
102
|
+
console.log(chalk.yellow('ā ļø No specific guidance available for this command'));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this.displayGuidance(guidance, options.verbose);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.error(chalk.red('ā Failed to get command help:', error.message));
|
|
353
108
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Display guidance information
|
|
112
|
+
*/ displayGuidance(guidance, verbose = false) {
|
|
113
|
+
console.log(chalk.blue.bold(`\nš Guidance for: ${guidance.context.taskType || 'general'}`));
|
|
114
|
+
console.log(chalk.gray(`Experience Level: ${guidance.experienceLevel}`));
|
|
115
|
+
// Context information
|
|
116
|
+
if (guidance.context) {
|
|
117
|
+
console.log(chalk.cyan('\nšÆ Context Analysis:'));
|
|
118
|
+
console.log(` Task Type: ${guidance.context.taskType}`);
|
|
119
|
+
console.log(` Complexity: ${guidance.context.complexity}`);
|
|
120
|
+
console.log(` Urgency: ${guidance.context.urgency}`);
|
|
121
|
+
if (guidance.context.recommendedAgents?.length > 0) {
|
|
122
|
+
console.log(` Recommended Agents: ${guidance.context.recommendedAgents.join(', ')}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Adaptive guidance
|
|
126
|
+
if (guidance.adaptive) {
|
|
127
|
+
const adaptive = guidance.adaptive;
|
|
128
|
+
// Suggestions
|
|
129
|
+
if (adaptive.suggestions?.length > 0) {
|
|
130
|
+
console.log(chalk.green('\nš” Suggestions:'));
|
|
131
|
+
adaptive.suggestions.forEach((suggestion, index)=>{
|
|
132
|
+
const priority = suggestion.priority === 'high' ? 'š“' : suggestion.priority === 'medium' ? 'š”' : 'š¢';
|
|
133
|
+
console.log(` ${index + 1}. ${priority} ${suggestion.message}`);
|
|
134
|
+
if (suggestion.action) {
|
|
135
|
+
console.log(` Command: ${chalk.cyan(suggestion.action)}`);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
// Warnings
|
|
140
|
+
if (adaptive.warnings?.length > 0) {
|
|
141
|
+
console.log(chalk.yellow('\nā ļø Warnings:'));
|
|
142
|
+
adaptive.warnings.forEach((warning, index)=>{
|
|
143
|
+
console.log(` ${index + 1}. ${warning.message}`);
|
|
144
|
+
if (warning.suggestion) {
|
|
145
|
+
console.log(` Suggestion: ${warning.suggestion}`);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// Tips
|
|
150
|
+
if (adaptive.tips?.length > 0 && verbose) {
|
|
151
|
+
console.log(chalk.blue('\nš” Tips:'));
|
|
152
|
+
adaptive.tips.forEach((tip, index)=>{
|
|
153
|
+
console.log(` ${index + 1}. ${tip.message}`);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// Examples
|
|
157
|
+
if (adaptive.examples?.length > 0 && verbose) {
|
|
158
|
+
console.log(chalk.magenta('\nš Examples:'));
|
|
159
|
+
adaptive.examples.forEach((example, index)=>{
|
|
160
|
+
console.log(` ${index + 1}. ${example.title}`);
|
|
161
|
+
console.log(` ${chalk.cyan(example.command)}`);
|
|
162
|
+
console.log(` ${example.description}`);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Next steps
|
|
166
|
+
if (adaptive.nextSteps?.length > 0) {
|
|
167
|
+
console.log(chalk.cyan('\nš Next Steps:'));
|
|
168
|
+
adaptive.nextSteps.forEach((step, index)=>{
|
|
169
|
+
console.log(` ${index + 1}. ${step.description}`);
|
|
170
|
+
if (step.command) {
|
|
171
|
+
console.log(` Command: ${chalk.cyan(step.command)}`);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Just-in-time help
|
|
177
|
+
if (guidance.justInTime && verbose) {
|
|
178
|
+
const jit = guidance.justInTime;
|
|
179
|
+
if (jit.quickTips?.length > 0) {
|
|
180
|
+
console.log(chalk.blue('\nā” Quick Tips:'));
|
|
181
|
+
jit.quickTips.forEach((tip)=>console.log(` ⢠${tip}`));
|
|
182
|
+
}
|
|
183
|
+
if (jit.commonMistakes?.length > 0) {
|
|
184
|
+
console.log(chalk.red('\nš« Common Mistakes to Avoid:'));
|
|
185
|
+
jit.commonMistakes.forEach((mistake)=>console.log(` ⢠${mistake}`));
|
|
186
|
+
}
|
|
371
187
|
}
|
|
372
|
-
}
|
|
373
|
-
} catch (error) {
|
|
374
|
-
console.error(chalk.red('ā Failed to get user status:', error.message));
|
|
375
188
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
189
|
+
/**
|
|
190
|
+
* Show user status and experience level
|
|
191
|
+
*/ async showUserStatus(options) {
|
|
192
|
+
await this.ensureInitialized();
|
|
193
|
+
try {
|
|
194
|
+
const status = this.guidanceSystem.getUserStatus();
|
|
195
|
+
if (!status) {
|
|
196
|
+
console.log(chalk.yellow('ā ļø No user profile found'));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
console.log(chalk.blue.bold('\nš¤ User Status\n'));
|
|
200
|
+
// Basic info
|
|
201
|
+
console.log(`Experience Level: ${chalk.cyan(status.experienceLevel)}`);
|
|
202
|
+
console.log(`Progress to Next: ${chalk.green(Math.round(status.progressToNext * 100))}%`);
|
|
203
|
+
// Statistics
|
|
204
|
+
if (options.detailed) {
|
|
205
|
+
const table = new Table({
|
|
206
|
+
head: [
|
|
207
|
+
'Metric',
|
|
208
|
+
'Value'
|
|
209
|
+
],
|
|
210
|
+
colWidths: [
|
|
211
|
+
25,
|
|
212
|
+
15
|
|
213
|
+
]
|
|
214
|
+
});
|
|
215
|
+
table.push([
|
|
216
|
+
'Total Commands',
|
|
217
|
+
status.stats.totalCommands
|
|
218
|
+
], [
|
|
219
|
+
'Successful Commands',
|
|
220
|
+
status.stats.successfulCommands
|
|
221
|
+
], [
|
|
222
|
+
'Failed Commands',
|
|
223
|
+
status.stats.failedCommands
|
|
224
|
+
], [
|
|
225
|
+
'Success Rate',
|
|
226
|
+
`${Math.round(status.stats.successfulCommands / status.stats.totalCommands * 100)}%`
|
|
227
|
+
], [
|
|
228
|
+
'Days Active',
|
|
229
|
+
status.stats.daysActive || 0
|
|
230
|
+
]);
|
|
231
|
+
console.log('\nš Statistics:');
|
|
232
|
+
console.log(table.toString());
|
|
233
|
+
// Skill proficiency
|
|
234
|
+
if (status.skillProficiency) {
|
|
235
|
+
console.log(chalk.blue('\nšÆ Skill Proficiency:'));
|
|
236
|
+
Object.entries(status.skillProficiency).forEach(([skill, score])=>{
|
|
237
|
+
const percentage = Math.round(score * 100);
|
|
238
|
+
const bar = 'ā'.repeat(Math.floor(percentage / 10)) + 'ā'.repeat(10 - Math.floor(percentage / 10));
|
|
239
|
+
console.log(` ${skill}: ${chalk.cyan(bar)} ${percentage}%`);
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
// Learning progress
|
|
243
|
+
if (status.learningProgress) {
|
|
244
|
+
console.log(chalk.green('\nš Achievements:'));
|
|
245
|
+
console.log(` Completed Tutorials: ${status.learningProgress.completedTutorials?.length || 0}`);
|
|
246
|
+
console.log(` Mastered Concepts: ${status.learningProgress.masteredConcepts?.length || 0}`);
|
|
247
|
+
if (status.learningProgress.strugglingAreas?.length > 0) {
|
|
248
|
+
console.log(chalk.yellow(' Areas for Improvement:'));
|
|
249
|
+
status.learningProgress.strugglingAreas.forEach((area)=>{
|
|
250
|
+
console.log(` ⢠${area}`);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
} catch (error) {
|
|
256
|
+
console.error(chalk.red('ā Failed to get user status:', error.message));
|
|
402
257
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Show learning recommendations
|
|
261
|
+
*/ async showLearningRecommendations(options) {
|
|
262
|
+
await this.ensureInitialized();
|
|
263
|
+
try {
|
|
264
|
+
const recommendations = this.guidanceSystem.getLearningRecommendations();
|
|
265
|
+
if (recommendations.combined.length === 0) {
|
|
266
|
+
console.log(chalk.green('š Great! No specific recommendations at the moment.'));
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
console.log(chalk.blue.bold('\nš Learning Recommendations\n'));
|
|
270
|
+
recommendations.combined.forEach((rec, index)=>{
|
|
271
|
+
const priority = rec.priority === 'high' ? 'š“' : rec.priority === 'medium' ? 'š”' : 'š¢';
|
|
272
|
+
console.log(`${index + 1}. ${priority} ${chalk.cyan(rec.title)}`);
|
|
273
|
+
console.log(` ${rec.description}`);
|
|
274
|
+
if (rec.estimatedTime) {
|
|
275
|
+
console.log(` ā±ļø Estimated time: ${rec.estimatedTime}`);
|
|
276
|
+
}
|
|
277
|
+
if (rec.prerequisite) {
|
|
278
|
+
console.log(` š Prerequisite: ${rec.prerequisite}`);
|
|
279
|
+
}
|
|
280
|
+
console.log('');
|
|
281
|
+
});
|
|
282
|
+
console.log(chalk.gray('š” Use "claude-flow-novice guidance tutorial <topic>" to start learning'));
|
|
283
|
+
} catch (error) {
|
|
284
|
+
console.error(chalk.red('ā Failed to get recommendations:', error.message));
|
|
406
285
|
}
|
|
407
|
-
|
|
408
|
-
console.log('');
|
|
409
|
-
});
|
|
410
|
-
|
|
411
|
-
console.log(chalk.gray('š” Use "claude-flow-novice guidance tutorial <topic>" to start learning'));
|
|
412
|
-
} catch (error) {
|
|
413
|
-
console.error(chalk.red('ā Failed to get recommendations:', error.message));
|
|
414
286
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
/**
|
|
287
|
+
/**
|
|
418
288
|
* Show learning path
|
|
419
|
-
*/
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
console.log(` ⢠${area}`);
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
} catch (error) {
|
|
447
|
-
console.error(chalk.red('ā Failed to get learning path:', error.message));
|
|
289
|
+
*/ async showLearningPath() {
|
|
290
|
+
await this.ensureInitialized();
|
|
291
|
+
try {
|
|
292
|
+
const path = this.guidanceSystem.getLearningPath();
|
|
293
|
+
console.log(chalk.blue.bold('\nš£ļø Your Learning Path\n'));
|
|
294
|
+
console.log(`Current Level: ${chalk.cyan(path.currentLevel)}`);
|
|
295
|
+
console.log(`Next Level: ${chalk.green(path.nextLevel)}`);
|
|
296
|
+
console.log(`Progress: ${chalk.yellow(Math.round(path.progressToNext * 100))}%`);
|
|
297
|
+
console.log(`Estimated Time to Next: ${path.estimatedTimeToNext}`);
|
|
298
|
+
if (path.recommendedTutorials?.length > 0) {
|
|
299
|
+
console.log(chalk.blue('\nš Recommended Tutorials:'));
|
|
300
|
+
path.recommendedTutorials.forEach((tutorial, index)=>{
|
|
301
|
+
console.log(` ${index + 1}. ${tutorial.title} (${tutorial.estimatedTime})`);
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
if (path.focusAreas?.length > 0) {
|
|
305
|
+
console.log(chalk.yellow('\nšÆ Focus Areas:'));
|
|
306
|
+
path.focusAreas.forEach((area)=>{
|
|
307
|
+
console.log(` ⢠${area}`);
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
} catch (error) {
|
|
311
|
+
console.error(chalk.red('ā Failed to get learning path:', error.message));
|
|
312
|
+
}
|
|
448
313
|
}
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
/**
|
|
314
|
+
/**
|
|
452
315
|
* Set experience level
|
|
453
|
-
*/
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
chalk.cyan(
|
|
465
|
-
`Current guidance settings will be adjusted for ${status.experienceLevel} level`,
|
|
466
|
-
),
|
|
467
|
-
);
|
|
468
|
-
} catch (error) {
|
|
469
|
-
console.error(chalk.red('ā Failed to set experience level:', error.message));
|
|
316
|
+
*/ async setExperienceLevel(level) {
|
|
317
|
+
await this.ensureInitialized();
|
|
318
|
+
try {
|
|
319
|
+
await this.guidanceSystem.setExperienceLevel(level);
|
|
320
|
+
console.log(chalk.green(`ā
Experience level set to: ${level}`));
|
|
321
|
+
// Show updated status
|
|
322
|
+
const status = this.guidanceSystem.getUserStatus();
|
|
323
|
+
console.log(chalk.cyan(`Current guidance settings will be adjusted for ${status.experienceLevel} level`));
|
|
324
|
+
} catch (error) {
|
|
325
|
+
console.error(chalk.red('ā Failed to set experience level:', error.message));
|
|
326
|
+
}
|
|
470
327
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
/**
|
|
328
|
+
/**
|
|
474
329
|
* Update preferences
|
|
475
|
-
*/
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
330
|
+
*/ async updatePreferences(options) {
|
|
331
|
+
await this.ensureInitialized();
|
|
332
|
+
try {
|
|
333
|
+
const updates = {};
|
|
334
|
+
if (options.tips !== undefined) {
|
|
335
|
+
updates.showTips = options.tips === 'true';
|
|
336
|
+
}
|
|
337
|
+
if (options.warnings !== undefined) {
|
|
338
|
+
updates.safetyMode = options.warnings === 'true';
|
|
339
|
+
}
|
|
340
|
+
if (options.verbosity) {
|
|
341
|
+
updates.preferredVerbosity = options.verbosity;
|
|
342
|
+
}
|
|
343
|
+
if (options.autoSuggest !== undefined) {
|
|
344
|
+
updates.autoSuggest = options.autoSuggest === 'true';
|
|
345
|
+
}
|
|
346
|
+
if (Object.keys(updates).length === 0) {
|
|
347
|
+
// Show current preferences
|
|
348
|
+
const status = this.guidanceSystem.getUserStatus();
|
|
349
|
+
console.log(chalk.blue('\nāļø Current Preferences:\n'));
|
|
350
|
+
const table = new Table({
|
|
351
|
+
head: [
|
|
352
|
+
'Setting',
|
|
353
|
+
'Value'
|
|
354
|
+
],
|
|
355
|
+
colWidths: [
|
|
356
|
+
20,
|
|
357
|
+
15
|
|
358
|
+
]
|
|
359
|
+
});
|
|
360
|
+
Object.entries(status.preferences || {}).forEach(([key, value])=>{
|
|
361
|
+
table.push([
|
|
362
|
+
key,
|
|
363
|
+
String(value)
|
|
364
|
+
]);
|
|
365
|
+
});
|
|
366
|
+
console.log(table.toString());
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
await this.guidanceSystem.updateUserPreferences(updates);
|
|
370
|
+
console.log(chalk.green('ā
Preferences updated successfully'));
|
|
371
|
+
// Show updated preferences
|
|
372
|
+
Object.entries(updates).forEach(([key, value])=>{
|
|
373
|
+
console.log(` ${key}: ${chalk.cyan(value)}`);
|
|
374
|
+
});
|
|
375
|
+
} catch (error) {
|
|
376
|
+
console.error(chalk.red('ā Failed to update preferences:', error.message));
|
|
377
|
+
}
|
|
522
378
|
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
/**
|
|
379
|
+
/**
|
|
526
380
|
* Show knowledge resources
|
|
527
|
-
*/
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
? 'š'
|
|
547
|
-
: resource.type === 'example'
|
|
548
|
-
? 'š”'
|
|
549
|
-
: resource.type === 'tool'
|
|
550
|
-
? 'š§'
|
|
551
|
-
: 'š';
|
|
552
|
-
|
|
553
|
-
console.log(`${index + 1}. ${icon} ${chalk.cyan(resource.title)}`);
|
|
554
|
-
if (resource.url) {
|
|
555
|
-
console.log(` š ${resource.url}`);
|
|
381
|
+
*/ async showKnowledgeResources(topic) {
|
|
382
|
+
await this.ensureInitialized();
|
|
383
|
+
try {
|
|
384
|
+
const resources = this.guidanceSystem.getKnowledgeResources(topic);
|
|
385
|
+
if (resources.length === 0) {
|
|
386
|
+
console.log(chalk.yellow(`ā ļø No resources found for topic: ${topic}`));
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
console.log(chalk.blue.bold(`\nš Resources for: ${topic}\n`));
|
|
390
|
+
resources.forEach((resource, index)=>{
|
|
391
|
+
const icon = resource.type === 'tutorial' ? 'š' : resource.type === 'guide' ? 'š' : resource.type === 'example' ? 'š”' : resource.type === 'tool' ? 'š§' : 'š';
|
|
392
|
+
console.log(`${index + 1}. ${icon} ${chalk.cyan(resource.title)}`);
|
|
393
|
+
if (resource.url) {
|
|
394
|
+
console.log(` š ${resource.url}`);
|
|
395
|
+
}
|
|
396
|
+
console.log('');
|
|
397
|
+
});
|
|
398
|
+
} catch (error) {
|
|
399
|
+
console.error(chalk.red('ā Failed to get resources:', error.message));
|
|
556
400
|
}
|
|
557
|
-
console.log('');
|
|
558
|
-
});
|
|
559
|
-
} catch (error) {
|
|
560
|
-
console.error(chalk.red('ā Failed to get resources:', error.message));
|
|
561
401
|
}
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
/**
|
|
402
|
+
/**
|
|
565
403
|
* Show common patterns
|
|
566
|
-
*/
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
404
|
+
*/ async showCommonPatterns(taskType) {
|
|
405
|
+
await this.ensureInitialized();
|
|
406
|
+
try {
|
|
407
|
+
const patterns = this.guidanceSystem.getCommonPatterns(taskType);
|
|
408
|
+
if (patterns.length === 0) {
|
|
409
|
+
console.log(chalk.yellow(`ā ļø No patterns found for task type: ${taskType}`));
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
console.log(chalk.blue.bold(`\nšļø Common Patterns for: ${taskType}\n`));
|
|
413
|
+
patterns.forEach((pattern, index)=>{
|
|
414
|
+
console.log(`${index + 1}. ${chalk.cyan(pattern.name)}`);
|
|
415
|
+
console.log(` ${pattern.description}`);
|
|
416
|
+
if (pattern.example) {
|
|
417
|
+
console.log(` Example: ${chalk.gray(pattern.example)}`);
|
|
418
|
+
}
|
|
419
|
+
console.log('');
|
|
420
|
+
});
|
|
421
|
+
} catch (error) {
|
|
422
|
+
console.error(chalk.red('ā Failed to get patterns:', error.message));
|
|
585
423
|
}
|
|
586
|
-
console.log('');
|
|
587
|
-
});
|
|
588
|
-
} catch (error) {
|
|
589
|
-
console.error(chalk.red('ā Failed to get patterns:', error.message));
|
|
590
424
|
}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
/**
|
|
425
|
+
/**
|
|
594
426
|
* Analyze current context
|
|
595
|
-
*/
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
);
|
|
607
|
-
console.log(chalk.gray('š” This feature will be enhanced in future versions'));
|
|
608
|
-
} catch (error) {
|
|
609
|
-
console.error(chalk.red('ā Failed to analyze context:', error.message));
|
|
427
|
+
*/ async analyzeContext(options) {
|
|
428
|
+
await this.ensureInitialized();
|
|
429
|
+
try {
|
|
430
|
+
// Implementation would gather context from current directory, files, etc.
|
|
431
|
+
console.log(chalk.blue('š Analyzing current context...\n'));
|
|
432
|
+
// Placeholder for actual context analysis
|
|
433
|
+
console.log(chalk.green('Analysis complete! Context-specific guidance would be displayed here.'));
|
|
434
|
+
console.log(chalk.gray('š” This feature will be enhanced in future versions'));
|
|
435
|
+
} catch (error) {
|
|
436
|
+
console.error(chalk.red('ā Failed to analyze context:', error.message));
|
|
437
|
+
}
|
|
610
438
|
}
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
/**
|
|
439
|
+
/**
|
|
614
440
|
* Generate tutorial
|
|
615
|
-
*/
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
? 'š£'
|
|
638
|
-
: section.type === 'exercise'
|
|
639
|
-
? 'šŖ'
|
|
640
|
-
: section.type === 'examples'
|
|
641
|
-
? 'š”'
|
|
642
|
-
: 'š';
|
|
643
|
-
|
|
644
|
-
console.log(` ${index + 1}. ${icon} ${section.title}`);
|
|
645
|
-
});
|
|
646
|
-
|
|
647
|
-
if (options.save) {
|
|
648
|
-
console.log(chalk.gray(`\nš¾ Tutorial content would be saved to: ${options.save}`));
|
|
649
|
-
}
|
|
650
|
-
} catch (error) {
|
|
651
|
-
console.error(chalk.red('ā Failed to generate tutorial:', error.message));
|
|
441
|
+
*/ async generateTutorial(topic, options) {
|
|
442
|
+
await this.ensureInitialized();
|
|
443
|
+
try {
|
|
444
|
+
const level = options.level || this.guidanceSystem.adaptiveGuide.getExperienceLevel();
|
|
445
|
+
const tutorial = this.guidanceSystem.generateTutorial(topic, level);
|
|
446
|
+
console.log(chalk.blue.bold(`\nš Tutorial: ${tutorial.content.title}\n`));
|
|
447
|
+
console.log(`Level: ${chalk.cyan(tutorial.level)}`);
|
|
448
|
+
console.log(`Estimated Time: ${tutorial.content.estimatedTime}`);
|
|
449
|
+
if (tutorial.content.prerequisites?.length > 0) {
|
|
450
|
+
console.log(`Prerequisites: ${tutorial.content.prerequisites.join(', ')}`);
|
|
451
|
+
}
|
|
452
|
+
console.log(chalk.green('\nš Tutorial Sections:'));
|
|
453
|
+
tutorial.content.sections.forEach((section, index)=>{
|
|
454
|
+
const icon = section.type === 'explanation' ? 'š' : section.type === 'walkthrough' ? 'š£' : section.type === 'exercise' ? 'šŖ' : section.type === 'examples' ? 'š”' : 'š';
|
|
455
|
+
console.log(` ${index + 1}. ${icon} ${section.title}`);
|
|
456
|
+
});
|
|
457
|
+
if (options.save) {
|
|
458
|
+
console.log(chalk.gray(`\nš¾ Tutorial content would be saved to: ${options.save}`));
|
|
459
|
+
}
|
|
460
|
+
} catch (error) {
|
|
461
|
+
console.error(chalk.red('ā Failed to generate tutorial:', error.message));
|
|
462
|
+
}
|
|
652
463
|
}
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
/**
|
|
464
|
+
/**
|
|
656
465
|
* Show system health
|
|
657
|
-
*/
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
466
|
+
*/ async showSystemHealth() {
|
|
467
|
+
await this.ensureInitialized();
|
|
468
|
+
try {
|
|
469
|
+
const health = this.guidanceSystem.getSystemHealth();
|
|
470
|
+
console.log(chalk.blue.bold('\nš„ Guidance System Health\n'));
|
|
471
|
+
const table = new Table({
|
|
472
|
+
head: [
|
|
473
|
+
'Component',
|
|
474
|
+
'Status'
|
|
475
|
+
],
|
|
476
|
+
colWidths: [
|
|
477
|
+
30,
|
|
478
|
+
20
|
|
479
|
+
]
|
|
480
|
+
});
|
|
481
|
+
table.push([
|
|
482
|
+
'Initialized',
|
|
483
|
+
health.initialized ? 'ā
Yes' : 'ā No'
|
|
484
|
+
], [
|
|
485
|
+
'User Profile',
|
|
486
|
+
health.userProfileLoaded ? 'ā
Loaded' : 'ā Not Loaded'
|
|
487
|
+
], [
|
|
488
|
+
'Experience Level',
|
|
489
|
+
health.experienceLevel
|
|
490
|
+
], [
|
|
491
|
+
'Knowledge Base Size',
|
|
492
|
+
health.knowledgeBaseSize
|
|
493
|
+
], [
|
|
494
|
+
'Behavior Patterns',
|
|
495
|
+
health.behaviorPatternsCount
|
|
496
|
+
], [
|
|
497
|
+
'System Uptime',
|
|
498
|
+
`${Math.floor(health.systemUptime / 60)} minutes`
|
|
499
|
+
]);
|
|
500
|
+
console.log(table.toString());
|
|
501
|
+
if (health.memoryUsage) {
|
|
502
|
+
console.log(chalk.blue('\nš¾ Memory Usage:'));
|
|
503
|
+
console.log(` RSS: ${Math.round(health.memoryUsage.rss / 1024 / 1024)} MB`);
|
|
504
|
+
console.log(` Heap Used: ${Math.round(health.memoryUsage.heapUsed / 1024 / 1024)} MB`);
|
|
505
|
+
}
|
|
506
|
+
} catch (error) {
|
|
507
|
+
console.error(chalk.red('ā Failed to get system health:', error.message));
|
|
508
|
+
}
|
|
689
509
|
}
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
/**
|
|
510
|
+
/**
|
|
693
511
|
* Ensure guidance system is initialized
|
|
694
|
-
*/
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
512
|
+
*/ async ensureInitialized() {
|
|
513
|
+
if (!this.guidanceSystem) {
|
|
514
|
+
this.guidanceSystem = new GuidanceSystem();
|
|
515
|
+
await this.guidanceSystem.initialize();
|
|
516
|
+
}
|
|
699
517
|
}
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
/**
|
|
518
|
+
/**
|
|
703
519
|
* Get the configured program for CLI integration
|
|
704
|
-
*/
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
520
|
+
*/ getProgram() {
|
|
521
|
+
return this.program;
|
|
522
|
+
}
|
|
523
|
+
constructor(){
|
|
524
|
+
this.guidanceSystem = null;
|
|
525
|
+
this.program = new Command();
|
|
526
|
+
this.setupCommands();
|
|
527
|
+
}
|
|
528
|
+
};
|
|
710
529
|
module.exports = GuidanceCommands;
|