claude-flow-novice 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-flow-novice/preferences/generation.json +147 -0
- package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
- package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
- package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
- package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
- package/.claude-flow-novice/preferences/project-local.json +91 -0
- package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
- package/.claude-flow-novice/preferences/team-shared.json +195 -0
- package/.claude-flow-novice/preferences/user-global.json +247 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
- package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
- package/CLAUDE.md +81 -0
- package/README-NPM.md +0 -0
- package/package.json +11 -7
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/migration/README.md +434 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
- package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
- package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
- package/src/cli/simple-commands/__tests__/task.test.js +8 -0
- package/src/cli/simple-commands/agent.js +216 -0
- package/src/cli/simple-commands/analysis.js +570 -0
- package/src/cli/simple-commands/automation-executor.js +1603 -0
- package/src/cli/simple-commands/automation.js +627 -0
- package/src/cli/simple-commands/batch-manager.js +338 -0
- package/src/cli/simple-commands/claude-telemetry.js +311 -0
- package/src/cli/simple-commands/claude-track.js +102 -0
- package/src/cli/simple-commands/concurrent-display.js +348 -0
- package/src/cli/simple-commands/config.js +319 -0
- package/src/cli/simple-commands/coordination.js +307 -0
- package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
- package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
- package/src/cli/simple-commands/fix-hook-variables.js +363 -0
- package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
- package/src/cli/simple-commands/github/github-api.js +624 -0
- package/src/cli/simple-commands/github/init.js +543 -0
- package/src/cli/simple-commands/github.js +377 -0
- package/src/cli/simple-commands/goal.js +145 -0
- package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
- package/src/cli/simple-commands/hive-mind/communication.js +740 -0
- package/src/cli/simple-commands/hive-mind/core.js +1031 -0
- package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
- package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
- package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
- package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
- package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
- package/src/cli/simple-commands/hive-mind/queen.js +809 -0
- package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
- package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
- package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
- package/src/cli/simple-commands/hive-mind.js +3112 -0
- package/src/cli/simple-commands/hive.js +140 -0
- package/src/cli/simple-commands/hook-safety.js +671 -0
- package/src/cli/simple-commands/hooks.js +1268 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
- package/src/cli/simple-commands/init/README.md +106 -0
- package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
- package/src/cli/simple-commands/init/agent-copier.js +347 -0
- package/src/cli/simple-commands/init/batch-init.js +663 -0
- package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
- package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
- package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
- package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
- package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
- package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
- package/src/cli/simple-commands/init/help.js +110 -0
- package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
- package/src/cli/simple-commands/init/index.js +1953 -0
- package/src/cli/simple-commands/init/performance-monitor.js +344 -0
- package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
- package/src/cli/simple-commands/init/rollback/index.js +399 -0
- package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
- package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
- package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
- package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
- package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
- package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
- package/src/cli/simple-commands/init/sparc-structure.js +68 -0
- package/src/cli/simple-commands/init/template-copier.js +640 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
- package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
- package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
- package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
- package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
- package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
- package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
- package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
- package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
- package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
- package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
- package/src/cli/simple-commands/init/templates/coordination.md +16 -0
- package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
- package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
- package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
- package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
- package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
- package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
- package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
- package/src/cli/simple-commands/init/templates/settings.json +109 -0
- package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
- package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
- package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
- package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
- package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
- package/src/cli/simple-commands/init/validation/index.js +388 -0
- package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
- package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
- package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
- package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
- package/src/cli/simple-commands/init.js +4 -0
- package/src/cli/simple-commands/mcp-health.js +163 -0
- package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
- package/src/cli/simple-commands/mcp.js +420 -0
- package/src/cli/simple-commands/memory-consolidation.js +631 -0
- package/src/cli/simple-commands/memory.js +345 -0
- package/src/cli/simple-commands/migrate-hooks.js +63 -0
- package/src/cli/simple-commands/monitor.js +417 -0
- package/src/cli/simple-commands/neural.js +148 -0
- package/src/cli/simple-commands/pair-autofix-only.js +755 -0
- package/src/cli/simple-commands/pair-basic.js +751 -0
- package/src/cli/simple-commands/pair-old.js +623 -0
- package/src/cli/simple-commands/pair-working.js +849 -0
- package/src/cli/simple-commands/pair.js +849 -0
- package/src/cli/simple-commands/performance-hooks.js +149 -0
- package/src/cli/simple-commands/performance-metrics.js +601 -0
- package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
- package/src/cli/simple-commands/process-ui.js +274 -0
- package/src/cli/simple-commands/realtime-update-system.js +659 -0
- package/src/cli/simple-commands/sparc/architecture.js +1750 -0
- package/src/cli/simple-commands/sparc/commands.js +575 -0
- package/src/cli/simple-commands/sparc/completion.js +1831 -0
- package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
- package/src/cli/simple-commands/sparc/index.js +321 -0
- package/src/cli/simple-commands/sparc/phase-base.js +430 -0
- package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
- package/src/cli/simple-commands/sparc/refinement.js +1856 -0
- package/src/cli/simple-commands/sparc/specification.js +736 -0
- package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
- package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
- package/src/cli/simple-commands/sparc-modes/code.js +148 -0
- package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
- package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
- package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
- package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
- package/src/cli/simple-commands/sparc-modes/index.js +201 -0
- package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
- package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
- package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
- package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
- package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
- package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
- package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
- package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
- package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
- package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
- package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
- package/src/cli/simple-commands/sparc.js +530 -0
- package/src/cli/simple-commands/start-ui.js +147 -0
- package/src/cli/simple-commands/start-wrapper.js +285 -0
- package/src/cli/simple-commands/start.js +2 -0
- package/src/cli/simple-commands/status.js +303 -0
- package/src/cli/simple-commands/stream-chain-clean.js +221 -0
- package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
- package/src/cli/simple-commands/stream-chain-real.js +408 -0
- package/src/cli/simple-commands/stream-chain-working.js +323 -0
- package/src/cli/simple-commands/stream-chain.js +491 -0
- package/src/cli/simple-commands/stream-processor.js +340 -0
- package/src/cli/simple-commands/swarm-executor.js +253 -0
- package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
- package/src/cli/simple-commands/swarm-ui.js +741 -0
- package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
- package/src/cli/simple-commands/swarm.js +2277 -0
- package/src/cli/simple-commands/task.js +228 -0
- package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
- package/src/cli/simple-commands/timestamp-fix.js +104 -0
- package/src/cli/simple-commands/token-tracker.js +372 -0
- package/src/cli/simple-commands/tool-execution-framework.js +555 -0
- package/src/cli/simple-commands/train-and-stream.js +354 -0
- package/src/cli/simple-commands/training-pipeline.js +874 -0
- package/src/cli/simple-commands/training.js +288 -0
- package/src/cli/simple-commands/verification-hooks.js +336 -0
- package/src/cli/simple-commands/verification-integration.js +464 -0
- package/src/cli/simple-commands/verification-training-integration.js +646 -0
- package/src/cli/simple-commands/verification.js +551 -0
- package/src/cli/simple-commands/web-server.js +929 -0
- package/src/cli/simple-commands/webui-validator.js +136 -0
- package/src/language/README.md +503 -0
- package/src/language/claude-md-generator.js +618 -0
- package/src/language/cli.js +422 -0
- package/src/language/example.js +347 -0
- package/src/language/integration-system.js +619 -0
- package/src/language/language-detector.js +581 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
# Migration Scripts
|
|
2
|
+
|
|
3
|
+
This directory contains migration and upgrade scripts for the Claude Flow project, including installation utilities, data migration tools, and system upgrade procedures.
|
|
4
|
+
|
|
5
|
+
## Scripts
|
|
6
|
+
|
|
7
|
+
### Installation & Setup
|
|
8
|
+
|
|
9
|
+
#### `install.js` - Primary Installation Script
|
|
10
|
+
Main installation script for Claude Flow with comprehensive setup and configuration.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Basic installation
|
|
14
|
+
node scripts/migration/install.js
|
|
15
|
+
|
|
16
|
+
# Custom installation path
|
|
17
|
+
node scripts/migration/install.js --path /custom/path
|
|
18
|
+
|
|
19
|
+
# Development installation
|
|
20
|
+
node scripts/migration/install.js --dev
|
|
21
|
+
|
|
22
|
+
# Production installation
|
|
23
|
+
node scripts/migration/install.js --production
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### `install-arm64.js` - ARM64 Architecture Installation
|
|
27
|
+
Specialized installation script for ARM64 (Apple Silicon, ARM-based systems).
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# ARM64 installation
|
|
31
|
+
node scripts/migration/install-arm64.js
|
|
32
|
+
|
|
33
|
+
# ARM64 with native compilation
|
|
34
|
+
node scripts/migration/install-arm64.js --native
|
|
35
|
+
|
|
36
|
+
# ARM64 development setup
|
|
37
|
+
node scripts/migration/install-arm64.js --dev
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Data Migration
|
|
41
|
+
|
|
42
|
+
#### `migrate-hooks.js` - Hooks Migration Tool
|
|
43
|
+
Migrates Claude Flow hooks and coordination data between versions.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Basic hooks migration
|
|
47
|
+
node scripts/migration/migrate-hooks.js
|
|
48
|
+
|
|
49
|
+
# Migration from specific version
|
|
50
|
+
node scripts/migration/migrate-hooks.js --from 1.0.0 --to 2.0.0
|
|
51
|
+
|
|
52
|
+
# Dry run migration
|
|
53
|
+
node scripts/migration/migrate-hooks.js --dry-run
|
|
54
|
+
|
|
55
|
+
# Backup before migration
|
|
56
|
+
node scripts/migration/migrate-hooks.js --backup
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### `migration-examples.ts` - Migration Example Templates
|
|
60
|
+
Provides example migration scripts and templates for custom migrations.
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# View migration examples
|
|
64
|
+
tsx scripts/migration/migration-examples.ts --list
|
|
65
|
+
|
|
66
|
+
# Generate migration template
|
|
67
|
+
tsx scripts/migration/migration-examples.ts --template database
|
|
68
|
+
|
|
69
|
+
# Run example migration
|
|
70
|
+
tsx scripts/migration/migration-examples.ts --example simple-data-migration
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Migration Categories
|
|
74
|
+
|
|
75
|
+
### 1. System Installation
|
|
76
|
+
Scripts that handle initial system setup and installation.
|
|
77
|
+
|
|
78
|
+
**Installation Features:**
|
|
79
|
+
- Dependency management
|
|
80
|
+
- Configuration setup
|
|
81
|
+
- Environment preparation
|
|
82
|
+
- Service registration
|
|
83
|
+
- Initial data seeding
|
|
84
|
+
|
|
85
|
+
### 2. Version Upgrades
|
|
86
|
+
Scripts that handle upgrading between Claude Flow versions.
|
|
87
|
+
|
|
88
|
+
**Upgrade Features:**
|
|
89
|
+
- Version compatibility checking
|
|
90
|
+
- Data schema migration
|
|
91
|
+
- Configuration migration
|
|
92
|
+
- Feature flag migration
|
|
93
|
+
- Rollback capabilities
|
|
94
|
+
|
|
95
|
+
### 3. Data Migration
|
|
96
|
+
Scripts that handle data transformation and migration.
|
|
97
|
+
|
|
98
|
+
**Data Migration Features:**
|
|
99
|
+
- Database schema updates
|
|
100
|
+
- Data format conversions
|
|
101
|
+
- File system migrations
|
|
102
|
+
- Configuration migrations
|
|
103
|
+
- Cache migrations
|
|
104
|
+
|
|
105
|
+
### 4. Platform Migration
|
|
106
|
+
Scripts that handle migration between different platforms or architectures.
|
|
107
|
+
|
|
108
|
+
**Platform Features:**
|
|
109
|
+
- Cross-platform compatibility
|
|
110
|
+
- Architecture-specific optimizations
|
|
111
|
+
- Native dependency handling
|
|
112
|
+
- Performance optimizations
|
|
113
|
+
- Platform-specific configurations
|
|
114
|
+
|
|
115
|
+
## Usage Patterns
|
|
116
|
+
|
|
117
|
+
### Fresh Installation Workflow
|
|
118
|
+
```bash
|
|
119
|
+
# 1. Prepare system
|
|
120
|
+
npm install
|
|
121
|
+
|
|
122
|
+
# 2. Run installation
|
|
123
|
+
node scripts/migration/install.js --production
|
|
124
|
+
|
|
125
|
+
# 3. Verify installation
|
|
126
|
+
node scripts/migration/install.js --verify
|
|
127
|
+
|
|
128
|
+
# 4. Post-installation setup
|
|
129
|
+
npm run postinstall
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Version Upgrade Workflow
|
|
133
|
+
```bash
|
|
134
|
+
# 1. Backup current system
|
|
135
|
+
node scripts/migration/migrate-hooks.js --backup
|
|
136
|
+
|
|
137
|
+
# 2. Check compatibility
|
|
138
|
+
node scripts/migration/migrate-hooks.js --check-compatibility
|
|
139
|
+
|
|
140
|
+
# 3. Run migration
|
|
141
|
+
node scripts/migration/migrate-hooks.js --from 1.5.0 --to 2.0.0
|
|
142
|
+
|
|
143
|
+
# 4. Verify migration
|
|
144
|
+
node scripts/migration/migrate-hooks.js --verify
|
|
145
|
+
|
|
146
|
+
# 5. Update configuration
|
|
147
|
+
npm run setup
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### ARM64 Installation Workflow
|
|
151
|
+
```bash
|
|
152
|
+
# 1. Check architecture
|
|
153
|
+
uname -m # Should show arm64 or aarch64
|
|
154
|
+
|
|
155
|
+
# 2. Install ARM64 optimized version
|
|
156
|
+
node scripts/migration/install-arm64.js --native
|
|
157
|
+
|
|
158
|
+
# 3. Verify ARM64 installation
|
|
159
|
+
node scripts/migration/install-arm64.js --test
|
|
160
|
+
|
|
161
|
+
# 4. Performance validation
|
|
162
|
+
npm run test:performance
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Installation Features
|
|
166
|
+
|
|
167
|
+
### Dependency Management
|
|
168
|
+
- **Automatic dependency resolution**
|
|
169
|
+
- **Platform-specific dependencies**
|
|
170
|
+
- **Optional dependency handling**
|
|
171
|
+
- **Dependency conflict resolution**
|
|
172
|
+
- **Security vulnerability checking**
|
|
173
|
+
|
|
174
|
+
### Configuration Setup
|
|
175
|
+
- **Environment-specific configuration**
|
|
176
|
+
- **Custom configuration templates**
|
|
177
|
+
- **Configuration validation**
|
|
178
|
+
- **Default configuration deployment**
|
|
179
|
+
- **Configuration backup and restore**
|
|
180
|
+
|
|
181
|
+
### Service Integration
|
|
182
|
+
- **System service registration**
|
|
183
|
+
- **Service dependency management**
|
|
184
|
+
- **Health check configuration**
|
|
185
|
+
- **Monitoring setup**
|
|
186
|
+
- **Log rotation configuration**
|
|
187
|
+
|
|
188
|
+
## Migration Strategies
|
|
189
|
+
|
|
190
|
+
### Database Migration
|
|
191
|
+
```javascript
|
|
192
|
+
// Example database migration
|
|
193
|
+
const migration = {
|
|
194
|
+
version: "2.0.0",
|
|
195
|
+
description: "Add swarm coordination tables",
|
|
196
|
+
up: async (db) => {
|
|
197
|
+
await db.createTable("swarm_states", {
|
|
198
|
+
id: "UUID PRIMARY KEY",
|
|
199
|
+
topology: "VARCHAR(50)",
|
|
200
|
+
agent_count: "INTEGER",
|
|
201
|
+
created_at: "TIMESTAMP"
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
down: async (db) => {
|
|
205
|
+
await db.dropTable("swarm_states");
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Configuration Migration
|
|
211
|
+
```javascript
|
|
212
|
+
// Example configuration migration
|
|
213
|
+
const configMigration = {
|
|
214
|
+
from: "1.5.0",
|
|
215
|
+
to: "2.0.0",
|
|
216
|
+
transform: (oldConfig) => {
|
|
217
|
+
return {
|
|
218
|
+
...oldConfig,
|
|
219
|
+
swarm: {
|
|
220
|
+
...oldConfig.coordination,
|
|
221
|
+
topology: oldConfig.coordination.type,
|
|
222
|
+
agents: oldConfig.coordination.workers
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### File System Migration
|
|
230
|
+
```bash
|
|
231
|
+
# Example file system migration
|
|
232
|
+
mv .claude-flow/coordination .claude-flow/swarm
|
|
233
|
+
mv .claude-flow/workers .claude-flow/agents
|
|
234
|
+
mkdir -p .claude-flow/topology
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Platform-Specific Considerations
|
|
238
|
+
|
|
239
|
+
### ARM64 (Apple Silicon)
|
|
240
|
+
- **Native binary compilation**
|
|
241
|
+
- **Rosetta 2 compatibility**
|
|
242
|
+
- **Performance optimizations**
|
|
243
|
+
- **Memory efficiency**
|
|
244
|
+
- **Battery optimization**
|
|
245
|
+
|
|
246
|
+
### x86_64 (Intel/AMD)
|
|
247
|
+
- **Legacy compatibility**
|
|
248
|
+
- **Performance tuning**
|
|
249
|
+
- **Memory management**
|
|
250
|
+
- **Vectorization support**
|
|
251
|
+
- **Cache optimization**
|
|
252
|
+
|
|
253
|
+
### Windows
|
|
254
|
+
- **Path handling differences**
|
|
255
|
+
- **Service registration**
|
|
256
|
+
- **Registry configuration**
|
|
257
|
+
- **PowerShell integration**
|
|
258
|
+
- **Windows-specific dependencies**
|
|
259
|
+
|
|
260
|
+
### Linux
|
|
261
|
+
- **Distribution-specific packages**
|
|
262
|
+
- **systemd integration**
|
|
263
|
+
- **Permission management**
|
|
264
|
+
- **Container compatibility**
|
|
265
|
+
- **Package manager integration**
|
|
266
|
+
|
|
267
|
+
### macOS
|
|
268
|
+
- **Homebrew integration**
|
|
269
|
+
- **LaunchAgent configuration**
|
|
270
|
+
- **Keychain integration**
|
|
271
|
+
- **Code signing requirements**
|
|
272
|
+
- **App notarization**
|
|
273
|
+
|
|
274
|
+
## Safety & Recovery
|
|
275
|
+
|
|
276
|
+
### Backup Strategies
|
|
277
|
+
```bash
|
|
278
|
+
# Create system backup
|
|
279
|
+
node scripts/migration/migrate-hooks.js --backup --include-data
|
|
280
|
+
|
|
281
|
+
# Create configuration backup
|
|
282
|
+
node scripts/migration/install.js --backup-config
|
|
283
|
+
|
|
284
|
+
# Create selective backup
|
|
285
|
+
node scripts/migration/migrate-hooks.js --backup --selective "swarm,agents"
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Rollback Procedures
|
|
289
|
+
```bash
|
|
290
|
+
# Rollback to previous version
|
|
291
|
+
node scripts/migration/migrate-hooks.js --rollback
|
|
292
|
+
|
|
293
|
+
# Rollback to specific version
|
|
294
|
+
node scripts/migration/migrate-hooks.js --rollback --to 1.5.0
|
|
295
|
+
|
|
296
|
+
# Rollback with data restoration
|
|
297
|
+
node scripts/migration/migrate-hooks.js --rollback --restore-data
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Verification & Testing
|
|
301
|
+
```bash
|
|
302
|
+
# Verify installation
|
|
303
|
+
node scripts/migration/install.js --verify --comprehensive
|
|
304
|
+
|
|
305
|
+
# Test migration integrity
|
|
306
|
+
node scripts/migration/migrate-hooks.js --test
|
|
307
|
+
|
|
308
|
+
# Performance verification
|
|
309
|
+
npm run test:performance:migration
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Package.json Integration
|
|
313
|
+
|
|
314
|
+
Migration scripts integrate with npm lifecycle hooks:
|
|
315
|
+
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"scripts": {
|
|
319
|
+
"preinstall": "node scripts/migration/install.js --check-requirements",
|
|
320
|
+
"postinstall": "node scripts/migration/install.js --setup",
|
|
321
|
+
"migrate": "node scripts/migration/migrate-hooks.js",
|
|
322
|
+
"migrate:dry-run": "node scripts/migration/migrate-hooks.js --dry-run",
|
|
323
|
+
"install:arm64": "node scripts/migration/install-arm64.js",
|
|
324
|
+
"backup": "node scripts/migration/migrate-hooks.js --backup"
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Environment Configuration
|
|
330
|
+
|
|
331
|
+
### Development Environment
|
|
332
|
+
```bash
|
|
333
|
+
export CLAUDE_FLOW_ENV=development
|
|
334
|
+
export CLAUDE_FLOW_MIGRATION_MODE=safe
|
|
335
|
+
export CLAUDE_FLOW_BACKUP_ENABLED=true
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Production Environment
|
|
339
|
+
```bash
|
|
340
|
+
export CLAUDE_FLOW_ENV=production
|
|
341
|
+
export CLAUDE_FLOW_MIGRATION_MODE=strict
|
|
342
|
+
export CLAUDE_FLOW_BACKUP_ENABLED=true
|
|
343
|
+
export CLAUDE_FLOW_ROLLBACK_ENABLED=true
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Staging Environment
|
|
347
|
+
```bash
|
|
348
|
+
export CLAUDE_FLOW_ENV=staging
|
|
349
|
+
export CLAUDE_FLOW_MIGRATION_MODE=testing
|
|
350
|
+
export CLAUDE_FLOW_VALIDATION_STRICT=true
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Troubleshooting
|
|
354
|
+
|
|
355
|
+
### Installation Issues
|
|
356
|
+
```bash
|
|
357
|
+
# Check system requirements
|
|
358
|
+
node scripts/migration/install.js --check-requirements
|
|
359
|
+
|
|
360
|
+
# Debug installation
|
|
361
|
+
node scripts/migration/install.js --debug --verbose
|
|
362
|
+
|
|
363
|
+
# Force reinstallation
|
|
364
|
+
node scripts/migration/install.js --force --clean
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Migration Failures
|
|
368
|
+
```bash
|
|
369
|
+
# Check migration status
|
|
370
|
+
node scripts/migration/migrate-hooks.js --status
|
|
371
|
+
|
|
372
|
+
# Resume failed migration
|
|
373
|
+
node scripts/migration/migrate-hooks.js --resume
|
|
374
|
+
|
|
375
|
+
# Rollback failed migration
|
|
376
|
+
node scripts/migration/migrate-hooks.js --rollback --force
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Platform-Specific Issues
|
|
380
|
+
```bash
|
|
381
|
+
# ARM64 compatibility check
|
|
382
|
+
node scripts/migration/install-arm64.js --check-compatibility
|
|
383
|
+
|
|
384
|
+
# Force native compilation
|
|
385
|
+
node scripts/migration/install-arm64.js --force-native
|
|
386
|
+
|
|
387
|
+
# Use compatibility mode
|
|
388
|
+
node scripts/migration/install-arm64.js --compatibility-mode
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
## Best Practices
|
|
392
|
+
|
|
393
|
+
### Pre-Migration
|
|
394
|
+
1. **Create comprehensive backups**
|
|
395
|
+
2. **Test migration in staging**
|
|
396
|
+
3. **Check system requirements**
|
|
397
|
+
4. **Review migration logs**
|
|
398
|
+
5. **Plan rollback strategy**
|
|
399
|
+
|
|
400
|
+
### During Migration
|
|
401
|
+
1. **Monitor progress closely**
|
|
402
|
+
2. **Check for errors immediately**
|
|
403
|
+
3. **Maintain system logs**
|
|
404
|
+
4. **Verify each step**
|
|
405
|
+
5. **Document any issues**
|
|
406
|
+
|
|
407
|
+
### Post-Migration
|
|
408
|
+
1. **Verify system functionality**
|
|
409
|
+
2. **Run comprehensive tests**
|
|
410
|
+
3. **Update documentation**
|
|
411
|
+
4. **Monitor performance**
|
|
412
|
+
5. **Clean up temporary files**
|
|
413
|
+
|
|
414
|
+
## Contributing Migration Scripts
|
|
415
|
+
|
|
416
|
+
When adding new migration scripts:
|
|
417
|
+
|
|
418
|
+
1. **Include comprehensive error handling**
|
|
419
|
+
2. **Implement dry-run capabilities**
|
|
420
|
+
3. **Provide rollback functionality**
|
|
421
|
+
4. **Add progress monitoring**
|
|
422
|
+
5. **Write detailed documentation**
|
|
423
|
+
6. **Test across all platforms**
|
|
424
|
+
7. **Include backup strategies**
|
|
425
|
+
|
|
426
|
+
## Related Documentation
|
|
427
|
+
|
|
428
|
+
- Migration Planning Guide
|
|
429
|
+
- Version Compatibility Matrix
|
|
430
|
+
- Platform Installation Guides
|
|
431
|
+
- Troubleshooting Documentation
|
|
432
|
+
- Recovery Procedures
|
|
433
|
+
|
|
434
|
+
For legacy migration scripts, see `../legacy/` directory.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import { spawn } from 'node:child_process';
|
|
5
|
+
|
|
6
|
+
// Check if SQLite bindings are working
|
|
7
|
+
async function checkSqliteBindings() {
|
|
8
|
+
try {
|
|
9
|
+
const Database = await import('better-sqlite3');
|
|
10
|
+
const db = new Database.default(':memory:');
|
|
11
|
+
db.close();
|
|
12
|
+
return true;
|
|
13
|
+
} catch (error) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Attempt to rebuild better-sqlite3 for ARM64
|
|
19
|
+
async function rebuildSqlite() {
|
|
20
|
+
console.log('🔧 Rebuilding better-sqlite3 for ARM64...');
|
|
21
|
+
|
|
22
|
+
return new Promise((resolve) => {
|
|
23
|
+
const rebuild = spawn('npm', ['rebuild', 'better-sqlite3'], {
|
|
24
|
+
stdio: 'inherit',
|
|
25
|
+
shell: true
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
rebuild.on('close', (code) => {
|
|
29
|
+
if (code === 0) {
|
|
30
|
+
console.log('✅ Successfully rebuilt better-sqlite3 for ARM64');
|
|
31
|
+
resolve(true);
|
|
32
|
+
} else {
|
|
33
|
+
console.log('⚠️ Failed to rebuild better-sqlite3');
|
|
34
|
+
resolve(false);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
rebuild.on('error', () => {
|
|
39
|
+
console.log('⚠️ Failed to rebuild better-sqlite3');
|
|
40
|
+
resolve(false);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Main installation logic
|
|
46
|
+
async function main() {
|
|
47
|
+
const platform = os.platform();
|
|
48
|
+
const arch = os.arch();
|
|
49
|
+
|
|
50
|
+
// Only run on ARM64 macOS
|
|
51
|
+
if (platform === 'darwin' && arch === 'arm64') {
|
|
52
|
+
console.log('🍎 Detected Apple Silicon (ARM64) Mac');
|
|
53
|
+
|
|
54
|
+
const bindingsWork = await checkSqliteBindings();
|
|
55
|
+
|
|
56
|
+
if (!bindingsWork) {
|
|
57
|
+
console.log('⚠️ SQLite bindings not working for ARM64');
|
|
58
|
+
const rebuildSuccess = await rebuildSqlite();
|
|
59
|
+
|
|
60
|
+
if (!rebuildSuccess) {
|
|
61
|
+
console.log('');
|
|
62
|
+
console.log('⚠️ Unable to rebuild SQLite bindings for ARM64');
|
|
63
|
+
console.log('📝 Claude-Flow will fall back to in-memory storage');
|
|
64
|
+
console.log('');
|
|
65
|
+
console.log('To fix this issue, you can try:');
|
|
66
|
+
console.log('1. Install Xcode Command Line Tools: xcode-select --install');
|
|
67
|
+
console.log('2. Manually rebuild: cd node_modules/better-sqlite3 && npm run build-release');
|
|
68
|
+
console.log('3. Use Rosetta 2: arch -x86_64 npm install');
|
|
69
|
+
console.log('');
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
console.log('✅ SQLite bindings are working correctly');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Run the installation enhancement
|
|
78
|
+
main().catch(console.error);
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import https from 'node:https';
|
|
7
|
+
import { spawn, exec } from 'node:child_process';
|
|
8
|
+
|
|
9
|
+
console.log('Installing Claude-Flow...');
|
|
10
|
+
|
|
11
|
+
// Check if Deno is available
|
|
12
|
+
function checkDeno() {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
const deno = spawn('deno', ['--version'], { stdio: 'pipe' });
|
|
15
|
+
deno.on('close', (code) => {
|
|
16
|
+
resolve(code === 0);
|
|
17
|
+
});
|
|
18
|
+
deno.on('error', () => {
|
|
19
|
+
resolve(false);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Install Deno if not available
|
|
25
|
+
async function installDeno() {
|
|
26
|
+
console.log('Deno not found. Installing Deno...');
|
|
27
|
+
|
|
28
|
+
const platform = os.platform();
|
|
29
|
+
|
|
30
|
+
if (platform === 'win32') {
|
|
31
|
+
return new Promise((resolve, reject) => {
|
|
32
|
+
console.log('Installing Deno on Windows using PowerShell...');
|
|
33
|
+
const psCommand = `powershell -Command "irm https://deno.land/install.ps1 | iex"`;
|
|
34
|
+
exec(psCommand, (error, stdout, stderr) => {
|
|
35
|
+
if (error) {
|
|
36
|
+
console.error('Failed to install Deno with PowerShell:', stderr);
|
|
37
|
+
console.log('Please install Deno manually from https://deno.land/');
|
|
38
|
+
reject(new Error('Failed to install Deno'));
|
|
39
|
+
} else {
|
|
40
|
+
console.log('Deno installed successfully!');
|
|
41
|
+
resolve();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
const installScript = spawn('curl', ['-fsSL', 'https://deno.land/x/install/install.sh'], { stdio: 'pipe' });
|
|
48
|
+
const sh = spawn('sh', [], { stdio: ['pipe', 'inherit', 'inherit'] });
|
|
49
|
+
|
|
50
|
+
installScript.stdout.pipe(sh.stdin);
|
|
51
|
+
|
|
52
|
+
sh.on('close', (code) => {
|
|
53
|
+
if (code === 0) {
|
|
54
|
+
console.log('Deno installed successfully!');
|
|
55
|
+
resolve();
|
|
56
|
+
} else {
|
|
57
|
+
reject(new Error('Failed to install Deno'));
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Main installation process
|
|
65
|
+
async function main() {
|
|
66
|
+
try {
|
|
67
|
+
const denoAvailable = await checkDeno();
|
|
68
|
+
|
|
69
|
+
if (!denoAvailable) {
|
|
70
|
+
await installDeno();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
console.log('Claude-Flow installation completed!');
|
|
74
|
+
console.log('You can now use: npx claude-flow or claude-flow (if installed globally)');
|
|
75
|
+
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error('Installation failed:', error.message);
|
|
78
|
+
console.log('Please install Deno manually from https://deno.land/ and try again.');
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
main();
|