claude-flow-novice 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/MIGRATION_SUMMARY.md +222 -0
- package/.claude/agents/README.md +89 -0
- package/.claude/agents/analysis/code-analyzer.md +209 -0
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
- package/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
- package/.claude/agents/base-template-generator.md +42 -0
- package/.claude/agents/consensus/README.md +253 -0
- package/.claude/agents/consensus/byzantine-coordinator.md +63 -0
- package/.claude/agents/consensus/consensus-builder.md +242 -0
- package/.claude/agents/consensus/crdt-synchronizer.md +997 -0
- package/.claude/agents/consensus/gossip-coordinator.md +63 -0
- package/.claude/agents/consensus/performance-benchmarker.md +851 -0
- package/.claude/agents/consensus/quorum-manager.md +823 -0
- package/.claude/agents/consensus/raft-manager.md +63 -0
- package/.claude/agents/consensus/security-manager.md +622 -0
- package/.claude/agents/core/coder.md +211 -0
- package/.claude/agents/core/planner.md +116 -0
- package/.claude/agents/core/researcher.md +136 -0
- package/.claude/agents/core/reviewer.md +272 -0
- package/.claude/agents/core/tester.md +266 -0
- package/.claude/agents/data/ml/data-ml-model.md +193 -0
- package/.claude/agents/development/backend/dev-backend-api.md +142 -0
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
- package/.claude/agents/flow-nexus/app-store.md +88 -0
- package/.claude/agents/flow-nexus/authentication.md +69 -0
- package/.claude/agents/flow-nexus/challenges.md +81 -0
- package/.claude/agents/flow-nexus/neural-network.md +88 -0
- package/.claude/agents/flow-nexus/payments.md +83 -0
- package/.claude/agents/flow-nexus/sandbox.md +76 -0
- package/.claude/agents/flow-nexus/swarm.md +76 -0
- package/.claude/agents/flow-nexus/user-tools.md +96 -0
- package/.claude/agents/flow-nexus/workflow.md +84 -0
- package/.claude/agents/github/code-review-swarm.md +538 -0
- package/.claude/agents/github/github-modes.md +173 -0
- package/.claude/agents/github/issue-tracker.md +319 -0
- package/.claude/agents/github/multi-repo-swarm.md +553 -0
- package/.claude/agents/github/pr-manager.md +191 -0
- package/.claude/agents/github/project-board-sync.md +509 -0
- package/.claude/agents/github/release-manager.md +367 -0
- package/.claude/agents/github/release-swarm.md +583 -0
- package/.claude/agents/github/repo-architect.md +398 -0
- package/.claude/agents/github/swarm-issue.md +573 -0
- package/.claude/agents/github/swarm-pr.md +428 -0
- package/.claude/agents/github/sync-coordinator.md +452 -0
- package/.claude/agents/github/workflow-automation.md +635 -0
- package/.claude/agents/goal/goal-planner.md +73 -0
- package/.claude/agents/neural/safla-neural.md +74 -0
- package/.claude/agents/optimization/README.md +250 -0
- package/.claude/agents/optimization/benchmark-suite.md +665 -0
- package/.claude/agents/optimization/load-balancer.md +431 -0
- package/.claude/agents/optimization/performance-monitor.md +672 -0
- package/.claude/agents/optimization/resource-allocator.md +674 -0
- package/.claude/agents/optimization/topology-optimizer.md +808 -0
- package/.claude/agents/sparc/architecture.md +472 -0
- package/.claude/agents/sparc/pseudocode.md +318 -0
- package/.claude/agents/sparc/refinement.md +525 -0
- package/.claude/agents/sparc/specification.md +276 -0
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
- package/.claude/agents/sublinear/consciousness-evolution-agent.md +499 -0
- package/.claude/agents/sublinear/matrix-solver-agent.md +113 -0
- package/.claude/agents/sublinear/nanosecond-scheduler-agent.md +644 -0
- package/.claude/agents/sublinear/pagerank-agent.md +699 -0
- package/.claude/agents/sublinear/phi-calculator-agent.md +749 -0
- package/.claude/agents/sublinear/psycho-symbolic-agent.md +543 -0
- package/.claude/agents/sublinear/sublinear.md +816 -0
- package/.claude/agents/sublinear/temporal-advantage-agent.md +360 -0
- package/.claude/agents/swarm/README.md +190 -0
- package/.claude/agents/swarm/adaptive-coordinator.md +396 -0
- package/.claude/agents/swarm/hierarchical-coordinator.md +300 -0
- package/.claude/agents/swarm/mesh-coordinator.md +435 -0
- package/.claude/agents/templates/automation-smart-agent.md +205 -0
- package/.claude/agents/templates/coordinator-swarm-init.md +90 -0
- package/.claude/agents/templates/github-pr-manager.md +177 -0
- package/.claude/agents/templates/implementer-sparc-coder.md +259 -0
- package/.claude/agents/templates/memory-coordinator.md +187 -0
- package/.claude/agents/templates/migration-plan.md +746 -0
- package/.claude/agents/templates/orchestrator-task.md +139 -0
- package/.claude/agents/templates/performance-analyzer.md +199 -0
- package/.claude/agents/templates/sparc-coordinator.md +183 -0
- package/.claude/agents/testing/e2e/playwright-agent.md +249 -0
- package/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
- package/.claude/agents/testing/validation/production-validator.md +395 -0
- package/.claude/commands/agents/README.md +10 -0
- package/.claude/commands/agents/agent-capabilities.md +21 -0
- package/.claude/commands/agents/agent-coordination.md +28 -0
- package/.claude/commands/agents/agent-spawning.md +28 -0
- package/.claude/commands/agents/agent-types.md +26 -0
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
- package/.claude/commands/analysis/README.md +9 -0
- package/.claude/commands/analysis/bottleneck-detect.md +162 -0
- package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
- package/.claude/commands/analysis/performance-report.md +25 -0
- package/.claude/commands/analysis/token-efficiency.md +45 -0
- package/.claude/commands/analysis/token-usage.md +25 -0
- package/.claude/commands/automation/README.md +9 -0
- package/.claude/commands/automation/auto-agent.md +122 -0
- package/.claude/commands/automation/self-healing.md +106 -0
- package/.claude/commands/automation/session-memory.md +90 -0
- package/.claude/commands/automation/smart-agents.md +73 -0
- package/.claude/commands/automation/smart-spawn.md +25 -0
- package/.claude/commands/automation/workflow-select.md +25 -0
- package/.claude/commands/coordination/README.md +9 -0
- package/.claude/commands/coordination/agent-spawn.md +25 -0
- package/.claude/commands/coordination/init.md +44 -0
- package/.claude/commands/coordination/orchestrate.md +43 -0
- package/.claude/commands/coordination/spawn.md +45 -0
- package/.claude/commands/coordination/swarm-init.md +85 -0
- package/.claude/commands/coordination/task-orchestrate.md +25 -0
- package/.claude/commands/flow-nexus/app-store.md +124 -0
- package/.claude/commands/flow-nexus/challenges.md +120 -0
- package/.claude/commands/flow-nexus/login-registration.md +65 -0
- package/.claude/commands/flow-nexus/neural-network.md +134 -0
- package/.claude/commands/flow-nexus/payments.md +116 -0
- package/.claude/commands/flow-nexus/sandbox.md +83 -0
- package/.claude/commands/flow-nexus/swarm.md +87 -0
- package/.claude/commands/flow-nexus/user-tools.md +152 -0
- package/.claude/commands/flow-nexus/workflow.md +115 -0
- package/.claude/commands/github/README.md +11 -0
- package/.claude/commands/github/code-review-swarm.md +514 -0
- package/.claude/commands/github/code-review.md +25 -0
- package/.claude/commands/github/github-modes.md +147 -0
- package/.claude/commands/github/github-swarm.md +121 -0
- package/.claude/commands/github/issue-tracker.md +292 -0
- package/.claude/commands/github/issue-triage.md +25 -0
- package/.claude/commands/github/multi-repo-swarm.md +519 -0
- package/.claude/commands/github/pr-enhance.md +26 -0
- package/.claude/commands/github/pr-manager.md +170 -0
- package/.claude/commands/github/project-board-sync.md +471 -0
- package/.claude/commands/github/release-manager.md +338 -0
- package/.claude/commands/github/release-swarm.md +544 -0
- package/.claude/commands/github/repo-analyze.md +25 -0
- package/.claude/commands/github/repo-architect.md +367 -0
- package/.claude/commands/github/swarm-issue.md +482 -0
- package/.claude/commands/github/swarm-pr.md +285 -0
- package/.claude/commands/github/sync-coordinator.md +301 -0
- package/.claude/commands/github/workflow-automation.md +442 -0
- package/.claude/commands/hive-mind/README.md +17 -0
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
- package/.claude/commands/hive-mind/hive-mind.md +27 -0
- package/.claude/commands/hooks/README.md +11 -0
- package/.claude/commands/hooks/overview.md +58 -0
- package/.claude/commands/hooks/post-edit.md +117 -0
- package/.claude/commands/hooks/post-task.md +112 -0
- package/.claude/commands/hooks/pre-edit.md +113 -0
- package/.claude/commands/hooks/pre-task.md +111 -0
- package/.claude/commands/hooks/session-end.md +118 -0
- package/.claude/commands/hooks/setup.md +103 -0
- package/.claude/commands/memory/README.md +9 -0
- package/.claude/commands/memory/memory-persist.md +25 -0
- package/.claude/commands/memory/memory-search.md +25 -0
- package/.claude/commands/memory/memory-usage.md +25 -0
- package/.claude/commands/memory/neural.md +47 -0
- package/.claude/commands/memory/usage.md +46 -0
- package/.claude/commands/monitoring/README.md +9 -0
- package/.claude/commands/monitoring/agent-metrics.md +25 -0
- package/.claude/commands/monitoring/agents.md +44 -0
- package/.claude/commands/monitoring/real-time-view.md +25 -0
- package/.claude/commands/monitoring/status.md +46 -0
- package/.claude/commands/monitoring/swarm-monitor.md +25 -0
- package/.claude/commands/optimization/README.md +9 -0
- package/.claude/commands/optimization/auto-topology.md +62 -0
- package/.claude/commands/optimization/cache-manage.md +25 -0
- package/.claude/commands/optimization/parallel-execute.md +25 -0
- package/.claude/commands/optimization/parallel-execution.md +50 -0
- package/.claude/commands/optimization/topology-optimize.md +25 -0
- package/.claude/commands/pair/README.md +261 -0
- package/.claude/commands/pair/commands.md +546 -0
- package/.claude/commands/pair/config.md +510 -0
- package/.claude/commands/pair/examples.md +512 -0
- package/.claude/commands/pair/modes.md +348 -0
- package/.claude/commands/pair/session.md +407 -0
- package/.claude/commands/pair/start.md +209 -0
- package/.claude/commands/sparc/analyzer.md +52 -0
- package/.claude/commands/sparc/architect.md +53 -0
- package/.claude/commands/sparc/batch-executor.md +54 -0
- package/.claude/commands/sparc/coder.md +54 -0
- package/.claude/commands/sparc/debugger.md +54 -0
- package/.claude/commands/sparc/designer.md +53 -0
- package/.claude/commands/sparc/documenter.md +54 -0
- package/.claude/commands/sparc/innovator.md +54 -0
- package/.claude/commands/sparc/memory-manager.md +54 -0
- package/.claude/commands/sparc/optimizer.md +54 -0
- package/.claude/commands/sparc/orchestrator.md +132 -0
- package/.claude/commands/sparc/researcher.md +54 -0
- package/.claude/commands/sparc/reviewer.md +54 -0
- package/.claude/commands/sparc/sparc-modes.md +174 -0
- package/.claude/commands/sparc/swarm-coordinator.md +54 -0
- package/.claude/commands/sparc/tdd.md +54 -0
- package/.claude/commands/sparc/tester.md +54 -0
- package/.claude/commands/sparc/workflow-manager.md +54 -0
- package/.claude/commands/stream-chain/pipeline.md +121 -0
- package/.claude/commands/stream-chain/run.md +70 -0
- package/.claude/commands/swarm/README.md +15 -0
- package/.claude/commands/swarm/analysis.md +95 -0
- package/.claude/commands/swarm/development.md +96 -0
- package/.claude/commands/swarm/examples.md +168 -0
- package/.claude/commands/swarm/maintenance.md +102 -0
- package/.claude/commands/swarm/optimization.md +117 -0
- package/.claude/commands/swarm/research.md +136 -0
- package/.claude/commands/swarm/swarm-analysis.md +8 -0
- package/.claude/commands/swarm/swarm-background.md +8 -0
- package/.claude/commands/swarm/swarm-init.md +19 -0
- package/.claude/commands/swarm/swarm-modes.md +8 -0
- package/.claude/commands/swarm/swarm-monitor.md +8 -0
- package/.claude/commands/swarm/swarm-spawn.md +19 -0
- package/.claude/commands/swarm/swarm-status.md +8 -0
- package/.claude/commands/swarm/swarm-strategies.md +8 -0
- package/.claude/commands/swarm/swarm.md +27 -0
- package/.claude/commands/swarm/testing.md +131 -0
- package/.claude/commands/testing/playwright-e2e.md +288 -0
- package/.claude/commands/training/README.md +9 -0
- package/.claude/commands/training/model-update.md +25 -0
- package/.claude/commands/training/neural-patterns.md +74 -0
- package/.claude/commands/training/neural-train.md +25 -0
- package/.claude/commands/training/pattern-learn.md +25 -0
- package/.claude/commands/training/specialization.md +63 -0
- package/.claude/commands/truth/start.md +143 -0
- package/.claude/commands/verify/check.md +50 -0
- package/.claude/commands/verify/start.md +128 -0
- package/.claude/commands/workflows/README.md +9 -0
- package/.claude/commands/workflows/development.md +78 -0
- package/.claude/commands/workflows/research.md +63 -0
- package/.claude/commands/workflows/workflow-create.md +25 -0
- package/.claude/commands/workflows/workflow-execute.md +25 -0
- package/.claude/commands/workflows/workflow-export.md +25 -0
- package/.claude/helpers/checkpoint-manager.sh +251 -0
- package/.claude/helpers/github-safe.js +106 -0
- package/.claude/helpers/github-setup.sh +28 -0
- package/.claude/helpers/quick-start.sh +19 -0
- package/.claude/helpers/setup-mcp.sh +18 -0
- package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
- package/.claude/settings.json +112 -0
- package/.claude/settings.local.json +10 -0
- package/CHANGELOG.md +1517 -0
- package/LICENSE +21 -0
- package/README.md +338 -0
- package/dist/src/adapters/cliffy-node.js +70 -0
- package/dist/src/adapters/cliffy-node.js.map +1 -0
- package/dist/src/agents/agent-loader.js +208 -0
- package/dist/src/agents/agent-loader.js.map +1 -0
- package/dist/src/agents/agent-manager.js +1786 -0
- package/dist/src/agents/agent-manager.js.map +1 -0
- package/dist/src/agents/agent-registry.js +356 -0
- package/dist/src/agents/agent-registry.js.map +1 -0
- package/dist/src/agents/agent-validator.js +273 -0
- package/dist/src/agents/agent-validator.js.map +1 -0
- package/dist/src/agents/github/agent-factory.js +553 -0
- package/dist/src/agents/github/agent-factory.js.map +1 -0
- package/dist/src/agents/github/compatibility/legacy-agent-mappings.js +307 -0
- package/dist/src/agents/github/compatibility/legacy-agent-mappings.js.map +1 -0
- package/dist/src/agents/github/compatibility/legacy-agent-proxy.js +334 -0
- package/dist/src/agents/github/compatibility/legacy-agent-proxy.js.map +1 -0
- package/dist/src/agents/github/core/github-collaboration-manager.js +796 -0
- package/dist/src/agents/github/core/github-collaboration-manager.js.map +1 -0
- package/dist/src/agents/github/core/github-integration-manager.js +546 -0
- package/dist/src/agents/github/core/github-integration-manager.js.map +1 -0
- package/dist/src/agents/github/core/github-release-coordinator.js +718 -0
- package/dist/src/agents/github/core/github-release-coordinator.js.map +1 -0
- package/dist/src/agents/github/index.js +68 -0
- package/dist/src/agents/github/index.js.map +1 -0
- package/dist/src/agents/github/types/index.js +6 -0
- package/dist/src/agents/github/types/index.js.map +1 -0
- package/dist/src/agents/github/utils/error-handling.js +496 -0
- package/dist/src/agents/github/utils/error-handling.js.map +1 -0
- package/dist/src/agents/github/utils/github-client.js +158 -0
- package/dist/src/agents/github/utils/github-client.js.map +1 -0
- package/dist/src/agents/github/utils/hook-integration.js +450 -0
- package/dist/src/agents/github/utils/hook-integration.js.map +1 -0
- package/dist/src/agents/github/utils/performance-optimizer.js +501 -0
- package/dist/src/agents/github/utils/performance-optimizer.js.map +1 -0
- package/dist/src/agents/hierarchical-coordinator.js +775 -0
- package/dist/src/agents/hierarchical-coordinator.js.map +1 -0
- package/dist/src/agents/lifecycle-manager.js +613 -0
- package/dist/src/agents/lifecycle-manager.js.map +1 -0
- package/dist/src/agents/mesh-coordinator.js +580 -0
- package/dist/src/agents/mesh-coordinator.js.map +1 -0
- package/dist/src/agents/simple-agent.js +89 -0
- package/dist/src/agents/simple-agent.js.map +1 -0
- package/dist/src/agents/task-agent-integration.js +240 -0
- package/dist/src/agents/task-agent-integration.js.map +1 -0
- package/dist/src/api/auth-service.js +474 -0
- package/dist/src/api/auth-service.js.map +1 -0
- package/dist/src/api/claude-api-errors.js +171 -0
- package/dist/src/api/claude-api-errors.js.map +1 -0
- package/dist/src/api/claude-client-enhanced.js +473 -0
- package/dist/src/api/claude-client-enhanced.js.map +1 -0
- package/dist/src/api/claude-client.js +527 -0
- package/dist/src/api/claude-client.js.map +1 -0
- package/dist/src/api/database-service.js +666 -0
- package/dist/src/api/database-service.js.map +1 -0
- package/dist/src/api/swarm-api.js +585 -0
- package/dist/src/api/swarm-api.js.map +1 -0
- package/dist/src/automation/test-pipeline/E2ETestGenerator.js +448 -0
- package/dist/src/automation/test-pipeline/E2ETestGenerator.js.map +1 -0
- package/dist/src/automation/test-pipeline/PerformanceMonitor.js +572 -0
- package/dist/src/automation/test-pipeline/PerformanceMonitor.js.map +1 -0
- package/dist/src/automation/test-pipeline/PipelineValidator.js +654 -0
- package/dist/src/automation/test-pipeline/PipelineValidator.js.map +1 -0
- package/dist/src/automation/test-pipeline/RegressionTestManager.js +545 -0
- package/dist/src/automation/test-pipeline/RegressionTestManager.js.map +1 -0
- package/dist/src/automation/test-pipeline/SwarmTestCoordinator.js +450 -0
- package/dist/src/automation/test-pipeline/SwarmTestCoordinator.js.map +1 -0
- package/dist/src/automation/test-pipeline/TestDataManager.js +708 -0
- package/dist/src/automation/test-pipeline/TestDataManager.js.map +1 -0
- package/dist/src/automation/test-pipeline/TestReportingSystem.js +527 -0
- package/dist/src/automation/test-pipeline/TestReportingSystem.js.map +1 -0
- package/dist/src/automation/test-pipeline/utils/chrome-mcp-integration.js +353 -0
- package/dist/src/automation/test-pipeline/utils/chrome-mcp-integration.js.map +1 -0
- package/dist/src/automation/test-pipeline/utils/swarm-coordinator.js +448 -0
- package/dist/src/automation/test-pipeline/utils/swarm-coordinator.js.map +1 -0
- package/dist/src/ci-cd/deployment-orchestrator.js +477 -0
- package/dist/src/ci-cd/deployment-orchestrator.js.map +1 -0
- package/dist/src/ci-cd/github-actions-templates.js +972 -0
- package/dist/src/ci-cd/github-actions-templates.js.map +1 -0
- package/dist/src/ci-cd/performance/PerformanceGate.js +383 -0
- package/dist/src/ci-cd/performance/PerformanceGate.js.map +1 -0
- package/dist/src/cli/agents/analyst.js +788 -0
- package/dist/src/cli/agents/analyst.js.map +1 -0
- package/dist/src/cli/agents/architect.js +846 -0
- package/dist/src/cli/agents/architect.js.map +1 -0
- package/dist/src/cli/agents/base-agent.js +437 -0
- package/dist/src/cli/agents/base-agent.js.map +1 -0
- package/dist/src/cli/agents/capabilities.js +701 -0
- package/dist/src/cli/agents/capabilities.js.map +1 -0
- package/dist/src/cli/agents/coder.js +936 -0
- package/dist/src/cli/agents/coder.js.map +1 -0
- package/dist/src/cli/agents/coordinator.js +489 -0
- package/dist/src/cli/agents/coordinator.js.map +1 -0
- package/dist/src/cli/agents/hive-agents.js +708 -0
- package/dist/src/cli/agents/hive-agents.js.map +1 -0
- package/dist/src/cli/agents/index.js +299 -0
- package/dist/src/cli/agents/index.js.map +1 -0
- package/dist/src/cli/agents/researcher.js +388 -0
- package/dist/src/cli/agents/researcher.js.map +1 -0
- package/dist/src/cli/agents/tester.js +634 -0
- package/dist/src/cli/agents/tester.js.map +1 -0
- package/dist/src/cli/cli-core.js +264 -0
- package/dist/src/cli/cli-core.js.map +1 -0
- package/dist/src/cli/commands/advanced-memory-commands.js +834 -0
- package/dist/src/cli/commands/advanced-memory-commands.js.map +1 -0
- package/dist/src/cli/commands/agent-simple.js +346 -0
- package/dist/src/cli/commands/agent-simple.js.map +1 -0
- package/dist/src/cli/commands/agent.js +368 -0
- package/dist/src/cli/commands/agent.js.map +1 -0
- package/dist/src/cli/commands/claude-api.js +237 -0
- package/dist/src/cli/commands/claude-api.js.map +1 -0
- package/dist/src/cli/commands/claude.js +132 -0
- package/dist/src/cli/commands/claude.js.map +1 -0
- package/dist/src/cli/commands/config-integration.js +395 -0
- package/dist/src/cli/commands/config-integration.js.map +1 -0
- package/dist/src/cli/commands/config.js +67 -0
- package/dist/src/cli/commands/config.js.map +1 -0
- package/dist/src/cli/commands/enterprise.js +1523 -0
- package/dist/src/cli/commands/enterprise.js.map +1 -0
- package/dist/src/cli/commands/goal-init.js +262 -0
- package/dist/src/cli/commands/goal-init.js.map +1 -0
- package/dist/src/cli/commands/help-new.js +276 -0
- package/dist/src/cli/commands/help-new.js.map +1 -0
- package/dist/src/cli/commands/help.js +1055 -0
- package/dist/src/cli/commands/help.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/index.js +20 -0
- package/dist/src/cli/commands/hive-mind/index.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/init.js +58 -0
- package/dist/src/cli/commands/hive-mind/init.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/optimize-memory.js +362 -0
- package/dist/src/cli/commands/hive-mind/optimize-memory.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/pause.js +73 -0
- package/dist/src/cli/commands/hive-mind/pause.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/ps.js +104 -0
- package/dist/src/cli/commands/hive-mind/ps.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/resume.js +56 -0
- package/dist/src/cli/commands/hive-mind/resume.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/spawn.js +242 -0
- package/dist/src/cli/commands/hive-mind/spawn.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/status.js +250 -0
- package/dist/src/cli/commands/hive-mind/status.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/stop.js +116 -0
- package/dist/src/cli/commands/hive-mind/stop.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/task.js +302 -0
- package/dist/src/cli/commands/hive-mind/task.js.map +1 -0
- package/dist/src/cli/commands/hive-mind/wizard.js +705 -0
- package/dist/src/cli/commands/hive-mind/wizard.js.map +1 -0
- package/dist/src/cli/commands/hive.js +506 -0
- package/dist/src/cli/commands/hive.js.map +1 -0
- package/dist/src/cli/commands/hook-types.js +5 -0
- package/dist/src/cli/commands/hook-types.js.map +1 -0
- package/dist/src/cli/commands/hook-validator.js +177 -0
- package/dist/src/cli/commands/hook-validator.js.map +1 -0
- package/dist/src/cli/commands/hook.js +303 -0
- package/dist/src/cli/commands/hook.js.map +1 -0
- package/dist/src/cli/commands/index.js +2745 -0
- package/dist/src/cli/commands/index.js.map +1 -0
- package/dist/src/cli/commands/maestro.js +242 -0
- package/dist/src/cli/commands/maestro.js.map +1 -0
- package/dist/src/cli/commands/mcp.js +148 -0
- package/dist/src/cli/commands/mcp.js.map +1 -0
- package/dist/src/cli/commands/memory.js +193 -0
- package/dist/src/cli/commands/memory.js.map +1 -0
- package/dist/src/cli/commands/migrate.js +107 -0
- package/dist/src/cli/commands/migrate.js.map +1 -0
- package/dist/src/cli/commands/monitor.js +574 -0
- package/dist/src/cli/commands/monitor.js.map +1 -0
- package/dist/src/cli/commands/neural-init.js +211 -0
- package/dist/src/cli/commands/neural-init.js.map +1 -0
- package/dist/src/cli/commands/ruv-swarm.js +555 -0
- package/dist/src/cli/commands/ruv-swarm.js.map +1 -0
- package/dist/src/cli/commands/session.js +517 -0
- package/dist/src/cli/commands/session.js.map +1 -0
- package/dist/src/cli/commands/sparc.js +486 -0
- package/dist/src/cli/commands/sparc.js.map +1 -0
- package/dist/src/cli/commands/start/event-emitter.js +35 -0
- package/dist/src/cli/commands/start/event-emitter.js.map +1 -0
- package/dist/src/cli/commands/start/index.js +9 -0
- package/dist/src/cli/commands/start/index.js.map +1 -0
- package/dist/src/cli/commands/start/process-manager.js +294 -0
- package/dist/src/cli/commands/start/process-manager.js.map +1 -0
- package/dist/src/cli/commands/start/process-ui-simple.js +322 -0
- package/dist/src/cli/commands/start/process-ui-simple.js.map +1 -0
- package/dist/src/cli/commands/start/process-ui.js +5 -0
- package/dist/src/cli/commands/start/process-ui.js.map +1 -0
- package/dist/src/cli/commands/start/start-command.js +463 -0
- package/dist/src/cli/commands/start/start-command.js.map +1 -0
- package/dist/src/cli/commands/start/system-monitor.js +268 -0
- package/dist/src/cli/commands/start/system-monitor.js.map +1 -0
- package/dist/src/cli/commands/start/types.js +22 -0
- package/dist/src/cli/commands/start/types.js.map +1 -0
- package/dist/src/cli/commands/start.js +6 -0
- package/dist/src/cli/commands/start.js.map +1 -0
- package/dist/src/cli/commands/status.js +328 -0
- package/dist/src/cli/commands/status.js.map +1 -0
- package/dist/src/cli/commands/swarm-spawn.js +56 -0
- package/dist/src/cli/commands/swarm-spawn.js.map +1 -0
- package/dist/src/cli/commands/swarm.js +567 -0
- package/dist/src/cli/commands/swarm.js.map +1 -0
- package/dist/src/cli/commands/task.js +44 -0
- package/dist/src/cli/commands/task.js.map +1 -0
- package/dist/src/cli/commands/validate-integration.js +122 -0
- package/dist/src/cli/commands/validate-integration.js.map +1 -0
- package/dist/src/cli/commands/verification.js +351 -0
- package/dist/src/cli/commands/verification.js.map +1 -0
- package/dist/src/cli/commands/workflow.js +615 -0
- package/dist/src/cli/commands/workflow.js.map +1 -0
- package/dist/src/cli/completion.js +578 -0
- package/dist/src/cli/completion.js.map +1 -0
- package/dist/src/cli/consolidated/ConsolidatedCLI.js +379 -0
- package/dist/src/cli/consolidated/ConsolidatedCLI.js.map +1 -0
- package/dist/src/cli/consolidated/core/CommandHandlers.js +833 -0
- package/dist/src/cli/consolidated/core/CommandHandlers.js.map +1 -0
- package/dist/src/cli/consolidated/core/TierManager.js +291 -0
- package/dist/src/cli/consolidated/core/TierManager.js.map +1 -0
- package/dist/src/cli/consolidated/help/InteractiveHelp.js +714 -0
- package/dist/src/cli/consolidated/help/InteractiveHelp.js.map +1 -0
- package/dist/src/cli/consolidated/index.js +62 -0
- package/dist/src/cli/consolidated/index.js.map +1 -0
- package/dist/src/cli/consolidated/intelligence/IntelligenceEngine.js +457 -0
- package/dist/src/cli/consolidated/intelligence/IntelligenceEngine.js.map +1 -0
- package/dist/src/cli/consolidated/routing/CommandRouter.js +526 -0
- package/dist/src/cli/consolidated/routing/CommandRouter.js.map +1 -0
- package/dist/src/cli/consolidated/utils/IntelligentDefaults.js +729 -0
- package/dist/src/cli/consolidated/utils/IntelligentDefaults.js.map +1 -0
- package/dist/src/cli/consolidated/utils/PerformanceOptimizer.js +416 -0
- package/dist/src/cli/consolidated/utils/PerformanceOptimizer.js.map +1 -0
- package/dist/src/cli/formatter.js +284 -0
- package/dist/src/cli/formatter.js.map +1 -0
- package/dist/src/cli/help-formatter.js +111 -0
- package/dist/src/cli/help-formatter.js.map +1 -0
- package/dist/src/cli/index-remote.js +125 -0
- package/dist/src/cli/index-remote.js.map +1 -0
- package/dist/src/cli/index.js +159 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/init/batch-tools.js +388 -0
- package/dist/src/cli/init/batch-tools.js.map +1 -0
- package/dist/src/cli/init/claude-config.js +401 -0
- package/dist/src/cli/init/claude-config.js.map +1 -0
- package/dist/src/cli/init/directory-structure.js +146 -0
- package/dist/src/cli/init/directory-structure.js.map +1 -0
- package/dist/src/cli/init/index.js +52 -0
- package/dist/src/cli/init/index.js.map +1 -0
- package/dist/src/cli/init/sparc-environment.js +543 -0
- package/dist/src/cli/init/sparc-environment.js.map +1 -0
- package/dist/src/cli/init/swarm-commands.js +796 -0
- package/dist/src/cli/init/swarm-commands.js.map +1 -0
- package/dist/src/cli/init/utils.js +15 -0
- package/dist/src/cli/init/utils.js.map +1 -0
- package/dist/src/cli/maestro-cli-bridge.js +426 -0
- package/dist/src/cli/maestro-cli-bridge.js.map +1 -0
- package/dist/src/cli/main.js +26 -0
- package/dist/src/cli/main.js.map +1 -0
- package/dist/src/cli/node-repl.js +652 -0
- package/dist/src/cli/node-repl.js.map +1 -0
- package/dist/src/cli/repl.js +1078 -0
- package/dist/src/cli/repl.js.map +1 -0
- package/dist/src/cli/simple-cli.js +3026 -0
- package/dist/src/cli/simple-cli.js.map +1 -0
- package/dist/src/cli/simple-mcp.js +87 -0
- package/dist/src/cli/simple-mcp.js.map +1 -0
- package/dist/src/cli/simple-orchestrator.js +857 -0
- package/dist/src/cli/simple-orchestrator.js.map +1 -0
- package/dist/src/cli/ui/compatible-ui.js +322 -0
- package/dist/src/cli/ui/compatible-ui.js.map +1 -0
- package/dist/src/cli/ui/fallback-handler.js +156 -0
- package/dist/src/cli/ui/fallback-handler.js.map +1 -0
- package/dist/src/cli/ui/index.js +32 -0
- package/dist/src/cli/ui/index.js.map +1 -0
- package/dist/src/cli/utils/environment-detector.js +228 -0
- package/dist/src/cli/utils/environment-detector.js.map +1 -0
- package/dist/src/cli/utils/prompt-defaults.js +234 -0
- package/dist/src/cli/utils/prompt-defaults.js.map +1 -0
- package/dist/src/cli/validation-helper.js +66 -0
- package/dist/src/cli/validation-helper.js.map +1 -0
- package/dist/src/communication/message-bus.js +1007 -0
- package/dist/src/communication/message-bus.js.map +1 -0
- package/dist/src/communication/reliable-communication-manager.js +374 -0
- package/dist/src/communication/reliable-communication-manager.js.map +1 -0
- package/dist/src/config/ai/decision-tree-generator.js +763 -0
- package/dist/src/config/ai/decision-tree-generator.js.map +1 -0
- package/dist/src/config/ai/project-detection-engine.js +1081 -0
- package/dist/src/config/ai/project-detection-engine.js.map +1 -0
- package/dist/src/config/config-manager.js +1285 -0
- package/dist/src/config/config-manager.js.map +1 -0
- package/dist/src/config/consent-manager.js +433 -0
- package/dist/src/config/consent-manager.js.map +1 -0
- package/dist/src/config/core/intelligent-configuration-manager.js +674 -0
- package/dist/src/config/core/intelligent-configuration-manager.js.map +1 -0
- package/dist/src/config/index.js +110 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/integration/hooks-integration.js +548 -0
- package/dist/src/config/integration/hooks-integration.js.map +1 -0
- package/dist/src/config/migration/config-migration.js +285 -0
- package/dist/src/config/migration/config-migration.js.map +1 -0
- package/dist/src/config/migration/version-migration-engine.js +984 -0
- package/dist/src/config/migration/version-migration-engine.js.map +1 -0
- package/dist/src/config/migration-manager.js +529 -0
- package/dist/src/config/migration-manager.js.map +1 -0
- package/dist/src/config/ruv-swarm-config.js +332 -0
- package/dist/src/config/ruv-swarm-config.js.map +1 -0
- package/dist/src/config/ruv-swarm-integration.js +285 -0
- package/dist/src/config/ruv-swarm-integration.js.map +1 -0
- package/dist/src/config/storage/multi-tier-storage.js +626 -0
- package/dist/src/config/storage/multi-tier-storage.js.map +1 -0
- package/dist/src/config/test-migration-fixer.js +332 -0
- package/dist/src/config/test-migration-fixer.js.map +1 -0
- package/dist/src/config/ui/progressive-disclosure-engine.js +876 -0
- package/dist/src/config/ui/progressive-disclosure-engine.js.map +1 -0
- package/dist/src/config/utils/config-export-import.js +454 -0
- package/dist/src/config/utils/config-export-import.js.map +1 -0
- package/dist/src/config/utils/zero-config-setup.js +238 -0
- package/dist/src/config/utils/zero-config-setup.js.map +1 -0
- package/dist/src/config/validation/config-validator.js +462 -0
- package/dist/src/config/validation/config-validator.js.map +1 -0
- package/dist/src/config/web-portal-config.js +343 -0
- package/dist/src/config/web-portal-config.js.map +1 -0
- package/dist/src/config/zero-config-setup.js +294 -0
- package/dist/src/config/zero-config-setup.js.map +1 -0
- package/dist/src/constants/agent-types.js +51 -0
- package/dist/src/constants/agent-types.js.map +1 -0
- package/dist/src/coordination/advanced-scheduler.js +370 -0
- package/dist/src/coordination/advanced-scheduler.js.map +1 -0
- package/dist/src/coordination/advanced-task-executor.js +481 -0
- package/dist/src/coordination/advanced-task-executor.js.map +1 -0
- package/dist/src/coordination/background-executor.js +366 -0
- package/dist/src/coordination/background-executor.js.map +1 -0
- package/dist/src/coordination/circuit-breaker.js +286 -0
- package/dist/src/coordination/circuit-breaker.js.map +1 -0
- package/dist/src/coordination/conflict-resolution.js +348 -0
- package/dist/src/coordination/conflict-resolution.js.map +1 -0
- package/dist/src/coordination/dependency-graph.js +398 -0
- package/dist/src/coordination/dependency-graph.js.map +1 -0
- package/dist/src/coordination/hive-orchestrator.js +309 -0
- package/dist/src/coordination/hive-orchestrator.js.map +1 -0
- package/dist/src/coordination/hive-protocol.js +363 -0
- package/dist/src/coordination/hive-protocol.js.map +1 -0
- package/dist/src/coordination/index.js +21 -0
- package/dist/src/coordination/index.js.map +1 -0
- package/dist/src/coordination/load-balancer.js +737 -0
- package/dist/src/coordination/load-balancer.js.map +1 -0
- package/dist/src/coordination/manager.js +360 -0
- package/dist/src/coordination/manager.js.map +1 -0
- package/dist/src/coordination/messaging.js +221 -0
- package/dist/src/coordination/messaging.js.map +1 -0
- package/dist/src/coordination/metrics.js +415 -0
- package/dist/src/coordination/metrics.js.map +1 -0
- package/dist/src/coordination/resources.js +276 -0
- package/dist/src/coordination/resources.js.map +1 -0
- package/dist/src/coordination/scheduler.js +322 -0
- package/dist/src/coordination/scheduler.js.map +1 -0
- package/dist/src/coordination/swarm-coordinator.js +585 -0
- package/dist/src/coordination/swarm-coordinator.js.map +1 -0
- package/dist/src/coordination/swarm-monitor.js +359 -0
- package/dist/src/coordination/swarm-monitor.js.map +1 -0
- package/dist/src/coordination/work-stealing.js +164 -0
- package/dist/src/coordination/work-stealing.js.map +1 -0
- package/dist/src/core/agent-manager.js +80 -0
- package/dist/src/core/agent-manager.js.map +1 -0
- package/dist/src/core/config.js +1221 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/event-bus.js +136 -0
- package/dist/src/core/event-bus.js.map +1 -0
- package/dist/src/core/index.js +6 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/json-persistence.js +112 -0
- package/dist/src/core/json-persistence.js.map +1 -0
- package/dist/src/core/logger.js +245 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/orchestrator-fixed.js +236 -0
- package/dist/src/core/orchestrator-fixed.js.map +1 -0
- package/dist/src/core/orchestrator.js +1136 -0
- package/dist/src/core/orchestrator.js.map +1 -0
- package/dist/src/core/persistence.js +185 -0
- package/dist/src/core/persistence.js.map +1 -0
- package/dist/src/core/project-manager.js +80 -0
- package/dist/src/core/project-manager.js.map +1 -0
- package/dist/src/core/version.js +35 -0
- package/dist/src/core/version.js.map +1 -0
- package/dist/src/crdt/types.js +509 -0
- package/dist/src/crdt/types.js.map +1 -0
- package/dist/src/enterprise/analytics-manager.js +1133 -0
- package/dist/src/enterprise/analytics-manager.js.map +1 -0
- package/dist/src/enterprise/audit-manager.js +1112 -0
- package/dist/src/enterprise/audit-manager.js.map +1 -0
- package/dist/src/enterprise/cloud-manager.js +886 -0
- package/dist/src/enterprise/cloud-manager.js.map +1 -0
- package/dist/src/enterprise/deployment-manager.js +963 -0
- package/dist/src/enterprise/deployment-manager.js.map +1 -0
- package/dist/src/enterprise/index.js +8 -0
- package/dist/src/enterprise/index.js.map +1 -0
- package/dist/src/enterprise/project-manager.js +577 -0
- package/dist/src/enterprise/project-manager.js.map +1 -0
- package/dist/src/enterprise/security-manager.js +987 -0
- package/dist/src/enterprise/security-manager.js.map +1 -0
- package/dist/src/feature-flags/cli/Phase4CLI.js +463 -0
- package/dist/src/feature-flags/cli/Phase4CLI.js.map +1 -0
- package/dist/src/feature-flags/core/FeatureFlagManager.js +324 -0
- package/dist/src/feature-flags/core/FeatureFlagManager.js.map +1 -0
- package/dist/src/feature-flags/index.js +237 -0
- package/dist/src/feature-flags/index.js.map +1 -0
- package/dist/src/feature-flags/monitoring/RolloutMonitor.js +275 -0
- package/dist/src/feature-flags/monitoring/RolloutMonitor.js.map +1 -0
- package/dist/src/feature-flags/rollout/RolloutController.js +301 -0
- package/dist/src/feature-flags/rollout/RolloutController.js.map +1 -0
- package/dist/src/feature-flags/validation/HookInterceptor.js +310 -0
- package/dist/src/feature-flags/validation/HookInterceptor.js.map +1 -0
- package/dist/src/feature-flags/validation/TruthBasedValidator.js +263 -0
- package/dist/src/feature-flags/validation/TruthBasedValidator.js.map +1 -0
- package/dist/src/hive-mind/core/Agent.js +569 -0
- package/dist/src/hive-mind/core/Agent.js.map +1 -0
- package/dist/src/hive-mind/core/Communication.js +411 -0
- package/dist/src/hive-mind/core/Communication.js.map +1 -0
- package/dist/src/hive-mind/core/DatabaseManager.js +599 -0
- package/dist/src/hive-mind/core/DatabaseManager.js.map +1 -0
- package/dist/src/hive-mind/core/HiveMind.js +575 -0
- package/dist/src/hive-mind/core/HiveMind.js.map +1 -0
- package/dist/src/hive-mind/core/Memory.js +1159 -0
- package/dist/src/hive-mind/core/Memory.js.map +1 -0
- package/dist/src/hive-mind/core/MemoryMonitor.js +525 -0
- package/dist/src/hive-mind/core/MemoryMonitor.js.map +1 -0
- package/dist/src/hive-mind/core/Queen.js +753 -0
- package/dist/src/hive-mind/core/Queen.js.map +1 -0
- package/dist/src/hive-mind/index.js +21 -0
- package/dist/src/hive-mind/index.js.map +1 -0
- package/dist/src/hive-mind/integration/ConsensusEngine.js +460 -0
- package/dist/src/hive-mind/integration/ConsensusEngine.js.map +1 -0
- package/dist/src/hive-mind/integration/MCPToolWrapper.js +243 -0
- package/dist/src/hive-mind/integration/MCPToolWrapper.js.map +1 -0
- package/dist/src/hive-mind/integration/SwarmOrchestrator.js +812 -0
- package/dist/src/hive-mind/integration/SwarmOrchestrator.js.map +1 -0
- package/dist/src/hive-mind/types.js +9 -0
- package/dist/src/hive-mind/types.js.map +1 -0
- package/dist/src/hooks/index.js +197 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/index.js +11 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/integration/mock-components.js +362 -0
- package/dist/src/integration/mock-components.js.map +1 -0
- package/dist/src/integration/system-integration.js +428 -0
- package/dist/src/integration/system-integration.js.map +1 -0
- package/dist/src/integration/types.js +5 -0
- package/dist/src/integration/types.js.map +1 -0
- package/dist/src/lifecycle/communication-protocols.js +568 -0
- package/dist/src/lifecycle/communication-protocols.js.map +1 -0
- package/dist/src/lifecycle/dependency-tracker.js +799 -0
- package/dist/src/lifecycle/dependency-tracker.js.map +1 -0
- package/dist/src/lifecycle/memory-schema.js +622 -0
- package/dist/src/lifecycle/memory-schema.js.map +1 -0
- package/dist/src/maestro/maestro-swarm-coordinator.js +504 -0
- package/dist/src/maestro/maestro-swarm-coordinator.js.map +1 -0
- package/dist/src/maestro/maestro-types.js +3 -0
- package/dist/src/maestro/maestro-types.js.map +1 -0
- package/dist/src/maestro/tests/native-hive-mind-integration.test.js +382 -0
- package/dist/src/maestro/tests/native-hive-mind-integration.test.js.map +1 -0
- package/dist/src/mcp/auth.js +347 -0
- package/dist/src/mcp/auth.js.map +1 -0
- package/dist/src/mcp/claude-code-wrapper.js +717 -0
- package/dist/src/mcp/claude-code-wrapper.js.map +1 -0
- package/dist/src/mcp/claude-flow-tools.js +1365 -0
- package/dist/src/mcp/claude-flow-tools.js.map +1 -0
- package/dist/src/mcp/client.js +201 -0
- package/dist/src/mcp/client.js.map +1 -0
- package/dist/src/mcp/index.js +192 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/integrate-wrapper.js +85 -0
- package/dist/src/mcp/integrate-wrapper.js.map +1 -0
- package/dist/src/mcp/lifecycle-manager.js +348 -0
- package/dist/src/mcp/lifecycle-manager.js.map +1 -0
- package/dist/src/mcp/load-balancer.js +386 -0
- package/dist/src/mcp/load-balancer.js.map +1 -0
- package/dist/src/mcp/orchestration-integration.js +800 -0
- package/dist/src/mcp/orchestration-integration.js.map +1 -0
- package/dist/src/mcp/performance-monitor.js +489 -0
- package/dist/src/mcp/performance-monitor.js.map +1 -0
- package/dist/src/mcp/protocol-manager.js +376 -0
- package/dist/src/mcp/protocol-manager.js.map +1 -0
- package/dist/src/mcp/recovery/connection-health-monitor.js +240 -0
- package/dist/src/mcp/recovery/connection-health-monitor.js.map +1 -0
- package/dist/src/mcp/recovery/connection-state-manager.js +309 -0
- package/dist/src/mcp/recovery/connection-state-manager.js.map +1 -0
- package/dist/src/mcp/recovery/fallback-coordinator.js +288 -0
- package/dist/src/mcp/recovery/fallback-coordinator.js.map +1 -0
- package/dist/src/mcp/recovery/index.js +10 -0
- package/dist/src/mcp/recovery/index.js.map +1 -0
- package/dist/src/mcp/recovery/reconnection-manager.js +219 -0
- package/dist/src/mcp/recovery/reconnection-manager.js.map +1 -0
- package/dist/src/mcp/recovery/recovery-manager.js +262 -0
- package/dist/src/mcp/recovery/recovery-manager.js.map +1 -0
- package/dist/src/mcp/router.js +220 -0
- package/dist/src/mcp/router.js.map +1 -0
- package/dist/src/mcp/ruv-swarm-tools.js +671 -0
- package/dist/src/mcp/ruv-swarm-tools.js.map +1 -0
- package/dist/src/mcp/server-with-wrapper.js +32 -0
- package/dist/src/mcp/server-with-wrapper.js.map +1 -0
- package/dist/src/mcp/server-wrapper-mode.js +26 -0
- package/dist/src/mcp/server-wrapper-mode.js.map +1 -0
- package/dist/src/mcp/server.js +539 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/session-manager.js +338 -0
- package/dist/src/mcp/session-manager.js.map +1 -0
- package/dist/src/mcp/sparc-modes.js +455 -0
- package/dist/src/mcp/sparc-modes.js.map +1 -0
- package/dist/src/mcp/swarm-tools.js +903 -0
- package/dist/src/mcp/swarm-tools.js.map +1 -0
- package/dist/src/mcp/tests/mcp-integration.test.js +493 -0
- package/dist/src/mcp/tests/mcp-integration.test.js.map +1 -0
- package/dist/src/mcp/tools.js +426 -0
- package/dist/src/mcp/tools.js.map +1 -0
- package/dist/src/mcp/transports/base.js +5 -0
- package/dist/src/mcp/transports/base.js.map +1 -0
- package/dist/src/mcp/transports/http.js +414 -0
- package/dist/src/mcp/transports/http.js.map +1 -0
- package/dist/src/mcp/transports/stdio.js +217 -0
- package/dist/src/mcp/transports/stdio.js.map +1 -0
- package/dist/src/memory/advanced-memory-manager.js +1522 -0
- package/dist/src/memory/advanced-memory-manager.js.map +1 -0
- package/dist/src/memory/backends/base.js +5 -0
- package/dist/src/memory/backends/base.js.map +1 -0
- package/dist/src/memory/backends/markdown.js +235 -0
- package/dist/src/memory/backends/markdown.js.map +1 -0
- package/dist/src/memory/backends/sqlite.js +295 -0
- package/dist/src/memory/backends/sqlite.js.map +1 -0
- package/dist/src/memory/cache.js +177 -0
- package/dist/src/memory/cache.js.map +1 -0
- package/dist/src/memory/distributed-memory.js +745 -0
- package/dist/src/memory/distributed-memory.js.map +1 -0
- package/dist/src/memory/indexer.js +184 -0
- package/dist/src/memory/indexer.js.map +1 -0
- package/dist/src/memory/manager.js +457 -0
- package/dist/src/memory/manager.js.map +1 -0
- package/dist/src/memory/sqlite-enhanced-backend.js +529 -0
- package/dist/src/memory/sqlite-enhanced-backend.js.map +1 -0
- package/dist/src/memory/swarm-memory.js +446 -0
- package/dist/src/memory/swarm-memory.js.map +1 -0
- package/dist/src/migration/index.js +94 -0
- package/dist/src/migration/index.js.map +1 -0
- package/dist/src/migration/logger.js +110 -0
- package/dist/src/migration/logger.js.map +1 -0
- package/dist/src/migration/migration-analyzer.js +255 -0
- package/dist/src/migration/migration-analyzer.js.map +1 -0
- package/dist/src/migration/migration-runner.js +511 -0
- package/dist/src/migration/migration-runner.js.map +1 -0
- package/dist/src/migration/migration-validator.js +272 -0
- package/dist/src/migration/migration-validator.js.map +1 -0
- package/dist/src/migration/progress-reporter.js +139 -0
- package/dist/src/migration/progress-reporter.js.map +1 -0
- package/dist/src/migration/rollback-manager.js +310 -0
- package/dist/src/migration/rollback-manager.js.map +1 -0
- package/dist/src/migration/tests/migration-system.test.js +9 -0
- package/dist/src/migration/tests/migration-system.test.js.map +1 -0
- package/dist/src/migration/types.js +5 -0
- package/dist/src/migration/types.js.map +1 -0
- package/dist/src/monitoring/diagnostics.js +532 -0
- package/dist/src/monitoring/diagnostics.js.map +1 -0
- package/dist/src/monitoring/health-check.js +355 -0
- package/dist/src/monitoring/health-check.js.map +1 -0
- package/dist/src/monitoring/phase4/analytics/consensus-tracker.js +764 -0
- package/dist/src/monitoring/phase4/analytics/consensus-tracker.js.map +1 -0
- package/dist/src/monitoring/phase4/analytics/performance-assessor.js +859 -0
- package/dist/src/monitoring/phase4/analytics/performance-assessor.js.map +1 -0
- package/dist/src/monitoring/phase4/analytics/truth-score-analyzer.js +667 -0
- package/dist/src/monitoring/phase4/analytics/truth-score-analyzer.js.map +1 -0
- package/dist/src/monitoring/phase4/dashboard/monitoring-dashboard.js +1008 -0
- package/dist/src/monitoring/phase4/dashboard/monitoring-dashboard.js.map +1 -0
- package/dist/src/monitoring/phase4/rollout-decision-engine.js +849 -0
- package/dist/src/monitoring/phase4/rollout-decision-engine.js.map +1 -0
- package/dist/src/monitoring/real-time-feedback-system.js +688 -0
- package/dist/src/monitoring/real-time-feedback-system.js.map +1 -0
- package/dist/src/monitoring/real-time-monitor.js +981 -0
- package/dist/src/monitoring/real-time-monitor.js.map +1 -0
- package/dist/src/monitoring/regression/RegressionDetector.js +525 -0
- package/dist/src/monitoring/regression/RegressionDetector.js.map +1 -0
- package/dist/src/neural/NeuralDomainMapper.js +1137 -0
- package/dist/src/neural/NeuralDomainMapper.js.map +1 -0
- package/dist/src/neural/index.js +418 -0
- package/dist/src/neural/index.js.map +1 -0
- package/dist/src/neural/integration.js +590 -0
- package/dist/src/neural/integration.js.map +1 -0
- package/dist/src/providers/anthropic-provider.js +245 -0
- package/dist/src/providers/anthropic-provider.js.map +1 -0
- package/dist/src/providers/base-provider.js +389 -0
- package/dist/src/providers/base-provider.js.map +1 -0
- package/dist/src/providers/cohere-provider.js +405 -0
- package/dist/src/providers/cohere-provider.js.map +1 -0
- package/dist/src/providers/google-provider.js +376 -0
- package/dist/src/providers/google-provider.js.map +1 -0
- package/dist/src/providers/index.js +18 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/providers/ollama-provider.js +400 -0
- package/dist/src/providers/ollama-provider.js.map +1 -0
- package/dist/src/providers/openai-provider.js +364 -0
- package/dist/src/providers/openai-provider.js.map +1 -0
- package/dist/src/providers/provider-manager.js +487 -0
- package/dist/src/providers/provider-manager.js.map +1 -0
- package/dist/src/providers/types.js +55 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/providers/utils.js +343 -0
- package/dist/src/providers/utils.js.map +1 -0
- package/dist/src/quality-gates/automated-review-system.js +645 -0
- package/dist/src/quality-gates/automated-review-system.js.map +1 -0
- package/dist/src/resources/resource-manager.js +1275 -0
- package/dist/src/resources/resource-manager.js.map +1 -0
- package/dist/src/rollback/recovery-manager.js +1065 -0
- package/dist/src/rollback/recovery-manager.js.map +1 -0
- package/dist/src/services/agent-manager.js +308 -0
- package/dist/src/services/agent-manager.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/hook-manager.js +506 -0
- package/dist/src/services/agentic-flow-hooks/hook-manager.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/index.js +322 -0
- package/dist/src/services/agentic-flow-hooks/index.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/llm-hooks.js +445 -0
- package/dist/src/services/agentic-flow-hooks/llm-hooks.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/memory-hooks.js +558 -0
- package/dist/src/services/agentic-flow-hooks/memory-hooks.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/neural-hooks.js +595 -0
- package/dist/src/services/agentic-flow-hooks/neural-hooks.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/performance-hooks.js +640 -0
- package/dist/src/services/agentic-flow-hooks/performance-hooks.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/types.js +8 -0
- package/dist/src/services/agentic-flow-hooks/types.js.map +1 -0
- package/dist/src/services/agentic-flow-hooks/workflow-hooks.js +746 -0
- package/dist/src/services/agentic-flow-hooks/workflow-hooks.js.map +1 -0
- package/dist/src/services/performance-metrics-collector.js +529 -0
- package/dist/src/services/performance-metrics-collector.js.map +1 -0
- package/dist/src/services/swarm-coordinator.js +431 -0
- package/dist/src/services/swarm-coordinator.js.map +1 -0
- package/dist/src/services/swarm-memory-manager.js +513 -0
- package/dist/src/services/swarm-memory-manager.js.map +1 -0
- package/dist/src/services/swarm-relaunch-manager.js +408 -0
- package/dist/src/services/swarm-relaunch-manager.js.map +1 -0
- package/dist/src/services/task-handoff-service.js +361 -0
- package/dist/src/services/task-handoff-service.js.map +1 -0
- package/dist/src/swarm/__tests__/integration.test.js +229 -0
- package/dist/src/swarm/__tests__/integration.test.js.map +1 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +346 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js.map +1 -0
- package/dist/src/swarm/advanced-orchestrator.js +1093 -0
- package/dist/src/swarm/advanced-orchestrator.js.map +1 -0
- package/dist/src/swarm/claude-code-interface.js +959 -0
- package/dist/src/swarm/claude-code-interface.js.map +1 -0
- package/dist/src/swarm/claude-flow-executor.js +218 -0
- package/dist/src/swarm/claude-flow-executor.js.map +1 -0
- package/dist/src/swarm/coordinator.js +3001 -0
- package/dist/src/swarm/coordinator.js.map +1 -0
- package/dist/src/swarm/direct-executor.js +1169 -0
- package/dist/src/swarm/direct-executor.js.map +1 -0
- package/dist/src/swarm/executor-v2.js +312 -0
- package/dist/src/swarm/executor-v2.js.map +1 -0
- package/dist/src/swarm/executor.js +813 -0
- package/dist/src/swarm/executor.js.map +1 -0
- package/dist/src/swarm/hive-mind-integration.js +700 -0
- package/dist/src/swarm/hive-mind-integration.js.map +1 -0
- package/dist/src/swarm/index.js +43 -0
- package/dist/src/swarm/index.js.map +1 -0
- package/dist/src/swarm/json-output-aggregator.js +269 -0
- package/dist/src/swarm/json-output-aggregator.js.map +1 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +623 -0
- package/dist/src/swarm/mcp-integration-wrapper.js.map +1 -0
- package/dist/src/swarm/memory.js +1119 -0
- package/dist/src/swarm/memory.js.map +1 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +350 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js.map +1 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +273 -0
- package/dist/src/swarm/optimizations/async-file-manager.js.map +1 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +148 -0
- package/dist/src/swarm/optimizations/circular-buffer.js.map +1 -0
- package/dist/src/swarm/optimizations/connection-pool.js +239 -0
- package/dist/src/swarm/optimizations/connection-pool.js.map +1 -0
- package/dist/src/swarm/optimizations/index.js +30 -0
- package/dist/src/swarm/optimizations/index.js.map +1 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +318 -0
- package/dist/src/swarm/optimizations/optimized-executor.js.map +1 -0
- package/dist/src/swarm/optimizations/ttl-map.js +223 -0
- package/dist/src/swarm/optimizations/ttl-map.js.map +1 -0
- package/dist/src/swarm/prompt-cli.js +202 -0
- package/dist/src/swarm/prompt-cli.js.map +1 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +193 -0
- package/dist/src/swarm/prompt-copier-enhanced.js.map +1 -0
- package/dist/src/swarm/prompt-copier.js +376 -0
- package/dist/src/swarm/prompt-copier.js.map +1 -0
- package/dist/src/swarm/prompt-manager.js +287 -0
- package/dist/src/swarm/prompt-manager.js.map +1 -0
- package/dist/src/swarm/prompt-utils.js +299 -0
- package/dist/src/swarm/prompt-utils.js.map +1 -0
- package/dist/src/swarm/result-aggregator.js +713 -0
- package/dist/src/swarm/result-aggregator.js.map +1 -0
- package/dist/src/swarm/sparc-executor.js +1557 -0
- package/dist/src/swarm/sparc-executor.js.map +1 -0
- package/dist/src/swarm/strategies/auto.js +751 -0
- package/dist/src/swarm/strategies/auto.js.map +1 -0
- package/dist/src/swarm/strategies/base.js +117 -0
- package/dist/src/swarm/strategies/base.js.map +1 -0
- package/dist/src/swarm/strategies/research.js +911 -0
- package/dist/src/swarm/strategies/research.js.map +1 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +4 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js.map +1 -0
- package/dist/src/swarm/types.js +54 -0
- package/dist/src/swarm/types.js.map +1 -0
- package/dist/src/swarm/workers/copy-worker.js +58 -0
- package/dist/src/swarm/workers/copy-worker.js.map +1 -0
- package/dist/src/swarm-fullstack/adapters/chrome-mcp-adapter.js +412 -0
- package/dist/src/swarm-fullstack/adapters/chrome-mcp-adapter.js.map +1 -0
- package/dist/src/swarm-fullstack/adapters/shadcn-mcp-adapter.js +560 -0
- package/dist/src/swarm-fullstack/adapters/shadcn-mcp-adapter.js.map +1 -0
- package/dist/src/swarm-fullstack/cli/fullstack-cli.js +582 -0
- package/dist/src/swarm-fullstack/cli/fullstack-cli.js.map +1 -0
- package/dist/src/swarm-fullstack/config/fullstack-config.js +369 -0
- package/dist/src/swarm-fullstack/config/fullstack-config.js.map +1 -0
- package/dist/src/swarm-fullstack/core/dynamic-agent-spawner.js +687 -0
- package/dist/src/swarm-fullstack/core/dynamic-agent-spawner.js.map +1 -0
- package/dist/src/swarm-fullstack/core/enhanced-swarm-message-router.js +589 -0
- package/dist/src/swarm-fullstack/core/enhanced-swarm-message-router.js.map +1 -0
- package/dist/src/swarm-fullstack/core/fullstack-orchestrator.js +538 -0
- package/dist/src/swarm-fullstack/core/fullstack-orchestrator.js.map +1 -0
- package/dist/src/swarm-fullstack/types/index.js +8 -0
- package/dist/src/swarm-fullstack/types/index.js.map +1 -0
- package/dist/src/task/commands.js +130 -0
- package/dist/src/task/commands.js.map +1 -0
- package/dist/src/task/coordination.js +737 -0
- package/dist/src/task/coordination.js.map +1 -0
- package/dist/src/task/engine.js +490 -0
- package/dist/src/task/engine.js.map +1 -0
- package/dist/src/task/index.js +269 -0
- package/dist/src/task/index.js.map +1 -0
- package/dist/src/task/types.js +5 -0
- package/dist/src/task/types.js.map +1 -0
- package/dist/src/terminal/adapters/base.js +5 -0
- package/dist/src/terminal/adapters/base.js.map +1 -0
- package/dist/src/terminal/adapters/native.js +473 -0
- package/dist/src/terminal/adapters/native.js.map +1 -0
- package/dist/src/terminal/adapters/vscode.js +285 -0
- package/dist/src/terminal/adapters/vscode.js.map +1 -0
- package/dist/src/terminal/manager.js +237 -0
- package/dist/src/terminal/manager.js.map +1 -0
- package/dist/src/terminal/pool.js +209 -0
- package/dist/src/terminal/pool.js.map +1 -0
- package/dist/src/terminal/session.js +211 -0
- package/dist/src/terminal/session.js.map +1 -0
- package/dist/src/terminal/vscode-bridge.js +186 -0
- package/dist/src/terminal/vscode-bridge.js.map +1 -0
- package/dist/src/testing/performance/PerformanceTestRunner.js +401 -0
- package/dist/src/testing/performance/PerformanceTestRunner.js.map +1 -0
- package/dist/src/testing-integration/chrome-mcp-integration.js +556 -0
- package/dist/src/testing-integration/chrome-mcp-integration.js.map +1 -0
- package/dist/src/testing-integration/continuous-test-runner.js +509 -0
- package/dist/src/testing-integration/continuous-test-runner.js.map +1 -0
- package/dist/src/tests/validation-consistency.test.js +52 -0
- package/dist/src/tests/validation-consistency.test.js.map +1 -0
- package/dist/src/topology/adaptive-coordinator.js +691 -0
- package/dist/src/topology/adaptive-coordinator.js.map +1 -0
- package/dist/src/topology/communication-bridge.js +551 -0
- package/dist/src/topology/communication-bridge.js.map +1 -0
- package/dist/src/topology/enhanced-hierarchical-coordinator.js +1732 -0
- package/dist/src/topology/enhanced-hierarchical-coordinator.js.map +1 -0
- package/dist/src/topology/enhanced-mesh-coordinator.js +1271 -0
- package/dist/src/topology/enhanced-mesh-coordinator.js.map +1 -0
- package/dist/src/topology/topology-manager.js +797 -0
- package/dist/src/topology/topology-manager.js.map +1 -0
- package/dist/src/topology/types.js +8 -0
- package/dist/src/topology/types.js.map +1 -0
- package/dist/src/types/agent-lifecycle-types.js +172 -0
- package/dist/src/types/agent-lifecycle-types.js.map +1 -0
- package/dist/src/types/agent-types.js +11 -0
- package/dist/src/types/agent-types.js.map +1 -0
- package/dist/src/types/cliffy.d.js +9 -0
- package/dist/src/types/cliffy.d.js.map +1 -0
- package/dist/src/types/global.d.js +5 -0
- package/dist/src/types/global.d.js.map +1 -0
- package/dist/src/types/index.js +16 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/mcp.d.js +3 -0
- package/dist/src/types/mcp.d.js.map +1 -0
- package/dist/src/types/vscode.d.js +4 -0
- package/dist/src/types/vscode.d.js.map +1 -0
- package/dist/src/ui/hive-dashboard.js +284 -0
- package/dist/src/ui/hive-dashboard.js.map +1 -0
- package/dist/src/utils/error-handler.js +27 -0
- package/dist/src/utils/error-handler.js.map +1 -0
- package/dist/src/utils/errors.js +195 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/formatters.js +66 -0
- package/dist/src/utils/formatters.js.map +1 -0
- package/dist/src/utils/helpers.js +451 -0
- package/dist/src/utils/helpers.js.map +1 -0
- package/dist/src/utils/paths.js +43 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/type-guards.js +119 -0
- package/dist/src/utils/type-guards.js.map +1 -0
- package/dist/src/utils/types.js +38 -0
- package/dist/src/utils/types.js.map +1 -0
- package/dist/src/verification/agent-scorer.js +633 -0
- package/dist/src/verification/agent-scorer.js.map +1 -0
- package/dist/src/verification/alert-manager.js +1126 -0
- package/dist/src/verification/alert-manager.js.map +1 -0
- package/dist/src/verification/api/types/index.js +6 -0
- package/dist/src/verification/api/types/index.js.map +1 -0
- package/dist/src/verification/checkpoint-manager.js +519 -0
- package/dist/src/verification/checkpoint-manager.js.map +1 -0
- package/dist/src/verification/cli-integration.js +500 -0
- package/dist/src/verification/cli-integration.js.map +1 -0
- package/dist/src/verification/conflict-resolver.js +534 -0
- package/dist/src/verification/conflict-resolver.js.map +1 -0
- package/dist/src/verification/crdt-coordinator.js +506 -0
- package/dist/src/verification/crdt-coordinator.js.map +1 -0
- package/dist/src/verification/dashboard-exporter.js +876 -0
- package/dist/src/verification/dashboard-exporter.js.map +1 -0
- package/dist/src/verification/demo.js +320 -0
- package/dist/src/verification/demo.js.map +1 -0
- package/dist/src/verification/examples.js +508 -0
- package/dist/src/verification/examples.js.map +1 -0
- package/dist/src/verification/hooks.js +961 -0
- package/dist/src/verification/hooks.js.map +1 -0
- package/dist/src/verification/index.js +73 -0
- package/dist/src/verification/index.js.map +1 -0
- package/dist/src/verification/interfaces.js +7 -0
- package/dist/src/verification/interfaces.js.map +1 -0
- package/dist/src/verification/memory-manager.js +510 -0
- package/dist/src/verification/memory-manager.js.map +1 -0
- package/dist/src/verification/middleware.js +579 -0
- package/dist/src/verification/middleware.js.map +1 -0
- package/dist/src/verification/rollback-engine.js +511 -0
- package/dist/src/verification/rollback-engine.js.map +1 -0
- package/dist/src/verification/rollback.js +1710 -0
- package/dist/src/verification/rollback.js.map +1 -0
- package/dist/src/verification/security-bypass-test.js +704 -0
- package/dist/src/verification/security-bypass-test.js.map +1 -0
- package/dist/src/verification/security.js +1125 -0
- package/dist/src/verification/security.js.map +1 -0
- package/dist/src/verification/simple-hooks.js +189 -0
- package/dist/src/verification/simple-hooks.js.map +1 -0
- package/dist/src/verification/system-tracker.js +657 -0
- package/dist/src/verification/system-tracker.js.map +1 -0
- package/dist/src/verification/telemetry.js +922 -0
- package/dist/src/verification/telemetry.js.map +1 -0
- package/dist/src/verification/test-verification.js +43 -0
- package/dist/src/verification/test-verification.js.map +1 -0
- package/dist/src/verification/tests/e2e/verification-pipeline.test.js +1027 -0
- package/dist/src/verification/tests/e2e/verification-pipeline.test.js.map +1 -0
- package/dist/src/verification/tests/integration/cross-agent-communication.test.js +638 -0
- package/dist/src/verification/tests/integration/cross-agent-communication.test.js.map +1 -0
- package/dist/src/verification/tests/mocks/false-reporting-scenarios.test.js +1029 -0
- package/dist/src/verification/tests/mocks/false-reporting-scenarios.test.js.map +1 -0
- package/dist/src/verification/tests/performance/verification-overhead.test.js +587 -0
- package/dist/src/verification/tests/performance/verification-overhead.test.js.map +1 -0
- package/dist/src/verification/tests/unit/truth-scoring.test.js +579 -0
- package/dist/src/verification/tests/unit/truth-scoring.test.js.map +1 -0
- package/dist/src/verification/tests.js +611 -0
- package/dist/src/verification/tests.js.map +1 -0
- package/dist/src/verification/truth-scorer.js +584 -0
- package/dist/src/verification/truth-scorer.js.map +1 -0
- package/dist/src/verification/types.js +56 -0
- package/dist/src/verification/types.js.map +1 -0
- package/dist/src/verification/verification-pipeline.js +884 -0
- package/dist/src/verification/verification-pipeline.js.map +1 -0
- package/dist/src/web/messaging/agent-status-tracker.js +447 -0
- package/dist/src/web/messaging/agent-status-tracker.js.map +1 -0
- package/dist/src/web/messaging/human-intervention-system.js +298 -0
- package/dist/src/web/messaging/human-intervention-system.js.map +1 -0
- package/dist/src/web/messaging/message-filter.js +289 -0
- package/dist/src/web/messaging/message-filter.js.map +1 -0
- package/dist/src/web/messaging/swarm-message-router.js +320 -0
- package/dist/src/web/messaging/swarm-message-router.js.map +1 -0
- package/dist/src/web/messaging/transparency-logger.js +415 -0
- package/dist/src/web/messaging/transparency-logger.js.map +1 -0
- package/dist/src/web/portal-server.js +440 -0
- package/dist/src/web/portal-server.js.map +1 -0
- package/dist/src/web/server.js +311 -0
- package/dist/src/web/server.js.map +1 -0
- package/dist/src/web/websocket/websocket-manager.js +509 -0
- package/dist/src/web/websocket/websocket-manager.js.map +1 -0
- package/dist/src/workflows/feature-lifecycle-manager.js +386 -0
- package/dist/src/workflows/feature-lifecycle-manager.js.map +1 -0
- package/dist/src/workflows/fullstack-coordination-manager.js +801 -0
- package/dist/src/workflows/fullstack-coordination-manager.js.map +1 -0
- package/dist/src/workflows/iterative-development-orchestrator.js +1128 -0
- package/dist/src/workflows/iterative-development-orchestrator.js.map +1 -0
- package/dist/src/workflows/progressive-rollout-manager.js +710 -0
- package/dist/src/workflows/progressive-rollout-manager.js.map +1 -0
- package/package.json +264 -0
- package/scripts/README.md +339 -0
- package/scripts/post-install-claude-md.js +50 -0
- package/src/commands/dependency-recommendations.js +551 -0
- package/src/commands/suggest-improvements.js +492 -0
- package/src/commands/suggest-templates.js +916 -0
- package/src/npx/claude-md-protection.js +169 -0
- package/wiki/INDEX.md +264 -0
- package/wiki/NAVIGATION.md +270 -0
- package/wiki/README.md +101 -0
- package/wiki/accessibility/README.md +103 -0
- package/wiki/accessibility/assistive-tech/screen-reader-support.md +912 -0
- package/wiki/accessibility/automation/agent-testing-automation.md +880 -0
- package/wiki/accessibility/guidelines/wcag-compliance.md +278 -0
- package/wiki/accessibility/i18n/internationalization-strategies.md +1022 -0
- package/wiki/accessibility/motor-accessibility/keyboard-navigation.md +1182 -0
- package/wiki/accessibility/patterns/inclusive-design-patterns.md +715 -0
- package/wiki/accessibility/testing/automated-testing.md +665 -0
- package/wiki/accessibility/visual-design/color-contrast.md +926 -0
- package/wiki/accessibility/workflows/accessibility-first-development.md +916 -0
- package/wiki/accessibility/workflows/inclusive-design-review.md +835 -0
- package/wiki/api-reference/README.md +565 -0
- package/wiki/api-reference/agent-management-api.md +931 -0
- package/wiki/api-reference/cli-api.md +630 -0
- package/wiki/api-reference/configuration-api.md +1355 -0
- package/wiki/api-reference/examples-code-samples.md +2241 -0
- package/wiki/api-reference/hooks-coordination-api.md +1406 -0
- package/wiki/api-reference/mcp-tool-specifications.md +944 -0
- package/wiki/api-reference/plugin-development.md +1695 -0
- package/wiki/api-reference/technical-architecture.md +1729 -0
- package/wiki/command-reference/README.md +305 -0
- package/wiki/command-reference/agent-commands.md +571 -0
- package/wiki/command-reference/cli-commands.md +516 -0
- package/wiki/command-reference/command-syntax.md +676 -0
- package/wiki/command-reference/expert/README.md +616 -0
- package/wiki/command-reference/expert-tier.md +791 -0
- package/wiki/command-reference/intermediate/README.md +628 -0
- package/wiki/command-reference/intermediate-tier.md +1024 -0
- package/wiki/command-reference/mcp-integration.md +412 -0
- package/wiki/command-reference/mcp-tools/README.md +1743 -0
- package/wiki/command-reference/mcp-tools/dual-access-workflows.md +911 -0
- package/wiki/command-reference/mcp-tools/index.md +201 -0
- package/wiki/command-reference/mcp-tools/integration-patterns.md +830 -0
- package/wiki/command-reference/mcp-tools/quick-reference.md +383 -0
- package/wiki/command-reference/mcp-tools/session-management.md +1183 -0
- package/wiki/command-reference/mcp-tools/task-tool-integration.md +827 -0
- package/wiki/command-reference/novice/README.md +661 -0
- package/wiki/command-reference/novice-tier.md +1142 -0
- package/wiki/command-reference/progression-guide.md +772 -0
- package/wiki/command-reference/troubleshooting.md +803 -0
- package/wiki/command-reference/workflows.md +752 -0
- package/wiki/community/README.md +328 -0
- package/wiki/community/contributing/README.md +623 -0
- package/wiki/community/contributing/code-of-conduct.md +388 -0
- package/wiki/community/contributing/collaboration-workflows.md +1 -0
- package/wiki/community/contributing/issue-reporting.md +1 -0
- package/wiki/community/contributing/onboarding-guide.md +1 -0
- package/wiki/community/contributing/recognition-system.md +1 -0
- package/wiki/community/discussions/README.md +54 -0
- package/wiki/community/learning-resources.md +476 -0
- package/wiki/community/showcase/README.md +1 -0
- package/wiki/core-concepts/README.md +656 -0
- package/wiki/core-concepts/agent-feedback-hooks/README.md +298 -0
- package/wiki/core-concepts/agents/README.md +392 -0
- package/wiki/core-concepts/agents/agent-creation-guide.md +431 -0
- package/wiki/core-concepts/agents.md +301 -0
- package/wiki/core-concepts/architecture.md +227 -0
- package/wiki/core-concepts/hooks-lifecycle/README.md +543 -0
- package/wiki/core-concepts/integration.md +507 -0
- package/wiki/core-concepts/memory-system/README.md +521 -0
- package/wiki/core-concepts/performance.md +463 -0
- package/wiki/core-concepts/sparc-methodology/README.md +465 -0
- package/wiki/core-concepts/sparc-workflow.md +407 -0
- package/wiki/core-concepts/swarm-coordination/README.md +525 -0
- package/wiki/core-concepts/swarm-coordination.md +453 -0
- package/wiki/cost-optimization/enterprise-cost-management.md +1356 -0
- package/wiki/deployment/enterprise-deployment-patterns.md +1739 -0
- package/wiki/enterprise-architecture/enterprise-architecture-overview.md +348 -0
- package/wiki/enterprise-architecture/enterprise-scaling-patterns.md +1184 -0
- package/wiki/examples/README.md +288 -0
- package/wiki/examples/automation/cicd-pipeline/README.md +1265 -0
- package/wiki/examples/basic/hello-world/README.md +434 -0
- package/wiki/examples/basic-projects/README.md +427 -0
- package/wiki/examples/enterprise-integration/README.md +602 -0
- package/wiki/examples/integration-patterns.md +825 -0
- package/wiki/examples/legacy-migration/README.md +656 -0
- package/wiki/examples/multi-cloud/README.md +1071 -0
- package/wiki/examples/performance-benchmarks.md +729 -0
- package/wiki/examples/performance-optimization/README.md +1214 -0
- package/wiki/examples/projects/rest-api/README.md +845 -0
- package/wiki/examples/real-time-collaboration/README.md +1092 -0
- package/wiki/examples/scenarios/ecommerce/README.md +1273 -0
- package/wiki/examples/swarm-patterns.md +1026 -0
- package/wiki/examples/templates/download-system.md +993 -0
- package/wiki/examples/templates/javascript/README.md +487 -0
- package/wiki/examples/templates/javascript/package.json +119 -0
- package/wiki/examples/troubleshooting/README.md +1317 -0
- package/wiki/examples/utilities/patterns/README.md +1347 -0
- package/wiki/examples/videos/01-setup.md +403 -0
- package/wiki/examples/workflow-automation/README.md +1023 -0
- package/wiki/getting-started/README.md +398 -0
- package/wiki/getting-started/benefits.md +451 -0
- package/wiki/getting-started/claude-code-mcp/README.md +319 -0
- package/wiki/getting-started/claude-code-mcp/setup.md +431 -0
- package/wiki/getting-started/claude-code-mcp/usage-examples.md +501 -0
- package/wiki/getting-started/cli-access/README.md +300 -0
- package/wiki/getting-started/cli-access/first-commands.md +319 -0
- package/wiki/getting-started/installation/README.md +469 -0
- package/wiki/getting-started/installation/troubleshooting.md +617 -0
- package/wiki/getting-started/learning-path.md +494 -0
- package/wiki/getting-started/learning-plan-generator.md +434 -0
- package/wiki/getting-started/quick-start/README.md +255 -0
- package/wiki/getting-started/quick-start/cli-tutorial.md +680 -0
- package/wiki/getting-started/quick-start/mcp-tutorial.md +544 -0
- package/wiki/governance/multi-project-coordination.md +820 -0
- package/wiki/languages/README.md +349 -0
- package/wiki/languages/go/README.md +124 -0
- package/wiki/languages/go/examples/README.md +1066 -0
- package/wiki/languages/go/frameworks/README.md +708 -0
- package/wiki/languages/go/integration/README.md +748 -0
- package/wiki/languages/go/microservices/README.md +1185 -0
- package/wiki/languages/go/performance/README.md +1310 -0
- package/wiki/languages/go/setup/README.md +397 -0
- package/wiki/languages/go/systems/README.md +1116 -0
- package/wiki/languages/go/testing/README.md +999 -0
- package/wiki/languages/java/README.md +217 -0
- package/wiki/languages/java/claude-flow-integration.md +1220 -0
- package/wiki/languages/java/enterprise-java.md +1247 -0
- package/wiki/languages/java/examples.md +1712 -0
- package/wiki/languages/java/microservices.md +1600 -0
- package/wiki/languages/java/performance.md +1122 -0
- package/wiki/languages/java/project-setup.md +504 -0
- package/wiki/languages/java/spring-boot.md +756 -0
- package/wiki/languages/java/testing.md +1323 -0
- package/wiki/languages/javascript/README.md +575 -0
- package/wiki/languages/javascript/api/README.md +1445 -0
- package/wiki/languages/javascript/backend/README.md +748 -0
- package/wiki/languages/javascript/frontend/README.md +1048 -0
- package/wiki/languages/javascript/integration.md +1107 -0
- package/wiki/languages/javascript/setup/README.md +438 -0
- package/wiki/languages/javascript/testing/README.md +1775 -0
- package/wiki/languages/python/README.md +1002 -0
- package/wiki/languages/python/data-science/README.md +1317 -0
- package/wiki/languages/python/examples/README.md +911 -0
- package/wiki/languages/python/integration.md +1515 -0
- package/wiki/languages/python/mcp-integration.md +843 -0
- package/wiki/languages/python/setup/README.md +622 -0
- package/wiki/languages/python/testing/README.md +1680 -0
- package/wiki/languages/python/web-development/README.md +974 -0
- package/wiki/languages/rust/README.md +936 -0
- package/wiki/languages/rust/examples/cli-mcp-workflows.md +850 -0
- package/wiki/languages/rust/examples/rest-api.md +1927 -0
- package/wiki/languages/rust/setup/cargo-integration.md +780 -0
- package/wiki/languages/rust/testing/quality-validation.md +1098 -0
- package/wiki/languages/rust/web-development/axum.md +1497 -0
- package/wiki/languages/rust/workflows/systems-programming.md +1189 -0
- package/wiki/languages/typescript/README.md +581 -0
- package/wiki/languages/typescript/automation.md +1070 -0
- package/wiki/languages/typescript/coordination.md +971 -0
- package/wiki/languages/typescript/enterprise.md +1368 -0
- package/wiki/languages/typescript/frameworks.md +970 -0
- package/wiki/languages/typescript/migration.md +1384 -0
- package/wiki/languages/typescript/patterns.md +694 -0
- package/wiki/languages/typescript/performance.md +1195 -0
- package/wiki/languages/typescript/setup.md +516 -0
- package/wiki/languages/typescript/workflows.md +481 -0
- package/wiki/monitoring/enterprise-observability.md +1141 -0
- package/wiki/security/enterprise-security-framework.md +1174 -0
- package/wiki/team-coordination/team-scaling-strategies.md +1486 -0
- package/wiki/troubleshooting/README.md +654 -0
- package/wiki/troubleshooting/common-issues/README.md +659 -0
- package/wiki/troubleshooting/common-issues.md +458 -0
- package/wiki/troubleshooting/error-resolution.md +763 -0
- package/wiki/troubleshooting/performance-optimization.md +540 -0
- package/wiki/tutorials/README.md +607 -0
- package/wiki/tutorials/advanced/01-multi-agent-orchestration-patterns.md +585 -0
- package/wiki/tutorials/advanced/02-enterprise-architecture-development.md +661 -0
- package/wiki/tutorials/advanced/03-advanced-sparc-methodology.md +595 -0
- package/wiki/tutorials/advanced/04-performance-optimization-workflows.md +613 -0
- package/wiki/tutorials/advanced/05-custom-agent-development.md +681 -0
- package/wiki/tutorials/advanced/06-legacy-system-integration.md +574 -0
- package/wiki/tutorials/advanced/07-production-deployment-monitoring.md +684 -0
- package/wiki/tutorials/advanced/08-enterprise-scenarios.md +700 -0
- package/wiki/tutorials/advanced/README.md +577 -0
- package/wiki/tutorials/advanced/performance-optimization.md +476 -0
- package/wiki/tutorials/advanced/swarm-orchestration.md +627 -0
- package/wiki/tutorials/beginner/01-first-project.md +532 -0
- package/wiki/tutorials/beginner/02-basic-workflows.md +523 -0
- package/wiki/tutorials/beginner/03-simple-automation.md +641 -0
- package/wiki/tutorials/beginner/04-quality-testing.md +984 -0
- package/wiki/tutorials/beginner/README.md +388 -0
- package/wiki/tutorials/exercises/ecommerce-platform.md +1370 -0
- package/wiki/tutorials/intermediate/01-multi-agent-teams.md +961 -0
- package/wiki/tutorials/intermediate/README.md +452 -0
- package/wiki/tutorials/intermediate/optimization.md +402 -0
- package/wiki/tutorials/skill-assessment.md +522 -0
- package/wiki/tutorials/skill-competency-matrix.md +548 -0
- package/wiki/tutorials/troubleshooting/command-cheatsheet.md +425 -0
- package/wiki/tutorials/troubleshooting/setup-issues.md +717 -0
- package/wiki/video-tutorials/README.md +202 -0
- package/wiki/video-tutorials/accessibility/README.md +1349 -0
- package/wiki/video-tutorials/community/README.md +1366 -0
- package/wiki/video-tutorials/content-organization/README.md +1295 -0
- package/wiki/video-tutorials/distribution/README.md +1093 -0
- package/wiki/video-tutorials/editing/README.md +751 -0
- package/wiki/video-tutorials/interactive/README.md +1151 -0
- package/wiki/video-tutorials/multi-language/README.md +1384 -0
- package/wiki/video-tutorials/planning/README.md +461 -0
- package/wiki/video-tutorials/recording/README.md +619 -0
- package/wiki/video-tutorials/technical-specs/README.md +1018 -0
|
@@ -0,0 +1,1368 @@
|
|
|
1
|
+
# Enterprise TypeScript Patterns with Claude Flow
|
|
2
|
+
|
|
3
|
+
Comprehensive guide to building and maintaining large-scale TypeScript applications using enterprise patterns, agent coordination, and advanced architectural approaches.
|
|
4
|
+
|
|
5
|
+
## 🏢 Enterprise Architecture Patterns
|
|
6
|
+
|
|
7
|
+
### Domain-Driven Design Implementation
|
|
8
|
+
```typescript
|
|
9
|
+
// Enterprise domain modeling with TypeScript
|
|
10
|
+
namespace UserManagement {
|
|
11
|
+
// Value Objects
|
|
12
|
+
export class Email {
|
|
13
|
+
private constructor(private readonly value: string) {}
|
|
14
|
+
|
|
15
|
+
static create(email: string): Either<ValidationError, Email> {
|
|
16
|
+
if (!this.isValid(email)) {
|
|
17
|
+
return left(new ValidationError('Invalid email format'));
|
|
18
|
+
}
|
|
19
|
+
return right(new Email(email));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static isValid(email: string): boolean {
|
|
23
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
toString(): string {
|
|
27
|
+
return this.value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
equals(other: Email): boolean {
|
|
31
|
+
return this.value === other.value;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class UserId {
|
|
36
|
+
private constructor(private readonly value: string) {}
|
|
37
|
+
|
|
38
|
+
static create(id?: string): UserId {
|
|
39
|
+
return new UserId(id || crypto.randomUUID());
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static fromString(value: string): Either<ValidationError, UserId> {
|
|
43
|
+
if (!value || value.trim().length === 0) {
|
|
44
|
+
return left(new ValidationError('UserId cannot be empty'));
|
|
45
|
+
}
|
|
46
|
+
return right(new UserId(value));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
toString(): string {
|
|
50
|
+
return this.value;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
equals(other: UserId): boolean {
|
|
54
|
+
return this.value === other.value;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Entities
|
|
59
|
+
export class User {
|
|
60
|
+
private events: DomainEvent[] = [];
|
|
61
|
+
|
|
62
|
+
private constructor(
|
|
63
|
+
private readonly id: UserId,
|
|
64
|
+
private email: Email,
|
|
65
|
+
private profile: UserProfile,
|
|
66
|
+
private permissions: Permission[],
|
|
67
|
+
private readonly createdAt: Date,
|
|
68
|
+
private updatedAt: Date
|
|
69
|
+
) {}
|
|
70
|
+
|
|
71
|
+
static create(data: CreateUserData): Either<DomainError, User> {
|
|
72
|
+
const emailResult = Email.create(data.email);
|
|
73
|
+
if (emailResult.isLeft()) {
|
|
74
|
+
return left(emailResult.value);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const user = new User(
|
|
78
|
+
UserId.create(),
|
|
79
|
+
emailResult.value,
|
|
80
|
+
UserProfile.create(data.profile),
|
|
81
|
+
[],
|
|
82
|
+
new Date(),
|
|
83
|
+
new Date()
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
user.addEvent(new UserCreatedEvent(user.id, user.email, user.profile));
|
|
87
|
+
return right(user);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
changeEmail(newEmail: Email): Either<DomainError, void> {
|
|
91
|
+
if (this.email.equals(newEmail)) {
|
|
92
|
+
return left(new DomainError('Email is already set to this value'));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const oldEmail = this.email;
|
|
96
|
+
this.email = newEmail;
|
|
97
|
+
this.updatedAt = new Date();
|
|
98
|
+
|
|
99
|
+
this.addEvent(new UserEmailChangedEvent(this.id, oldEmail, newEmail));
|
|
100
|
+
return right(undefined);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
grantPermission(permission: Permission): Either<DomainError, void> {
|
|
104
|
+
if (this.hasPermission(permission)) {
|
|
105
|
+
return left(new DomainError('User already has this permission'));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
this.permissions.push(permission);
|
|
109
|
+
this.updatedAt = new Date();
|
|
110
|
+
|
|
111
|
+
this.addEvent(new UserPermissionGrantedEvent(this.id, permission));
|
|
112
|
+
return right(undefined);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private hasPermission(permission: Permission): boolean {
|
|
116
|
+
return this.permissions.some(p => p.equals(permission));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private addEvent(event: DomainEvent): void {
|
|
120
|
+
this.events.push(event);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
getUncommittedEvents(): DomainEvent[] {
|
|
124
|
+
return [...this.events];
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
markEventsAsCommitted(): void {
|
|
128
|
+
this.events = [];
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Getters
|
|
132
|
+
getId(): UserId { return this.id; }
|
|
133
|
+
getEmail(): Email { return this.email; }
|
|
134
|
+
getProfile(): UserProfile { return this.profile; }
|
|
135
|
+
getPermissions(): Permission[] { return [...this.permissions]; }
|
|
136
|
+
getCreatedAt(): Date { return this.createdAt; }
|
|
137
|
+
getUpdatedAt(): Date { return this.updatedAt; }
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Domain Services
|
|
141
|
+
export class UserDomainService {
|
|
142
|
+
constructor(
|
|
143
|
+
private readonly userRepository: UserRepository,
|
|
144
|
+
private readonly emailService: EmailDomainService
|
|
145
|
+
) {}
|
|
146
|
+
|
|
147
|
+
async createUser(data: CreateUserData): Promise<Either<DomainError, User>> {
|
|
148
|
+
// Check if email is already taken
|
|
149
|
+
const existingUser = await this.userRepository.findByEmail(
|
|
150
|
+
Email.create(data.email).value as Email
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
if (existingUser.isSome()) {
|
|
154
|
+
return left(new DomainError('Email is already in use'));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Validate email deliverability
|
|
158
|
+
const emailValidation = await this.emailService.validateEmailDeliverability(data.email);
|
|
159
|
+
if (emailValidation.isLeft()) {
|
|
160
|
+
return left(emailValidation.value);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return User.create(data);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
async transferUserData(
|
|
167
|
+
sourceUserId: UserId,
|
|
168
|
+
targetUserId: UserId
|
|
169
|
+
): Promise<Either<DomainError, void>> {
|
|
170
|
+
const sourceUser = await this.userRepository.findById(sourceUserId);
|
|
171
|
+
if (sourceUser.isNone()) {
|
|
172
|
+
return left(new DomainError('Source user not found'));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const targetUser = await this.userRepository.findById(targetUserId);
|
|
176
|
+
if (targetUser.isNone()) {
|
|
177
|
+
return left(new DomainError('Target user not found'));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Domain logic for data transfer
|
|
181
|
+
// Implementation details...
|
|
182
|
+
|
|
183
|
+
return right(undefined);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Agent workflow for domain modeling
|
|
189
|
+
Task("Domain Architect", "Design comprehensive domain model with entities and value objects", "system-architect")
|
|
190
|
+
Task("Domain Service Developer", "Implement domain services with business logic", "coder")
|
|
191
|
+
Task("Event System Designer", "Design domain events and event sourcing patterns", "code-analyzer")
|
|
192
|
+
Task("Repository Pattern Implementer", "Create repository interfaces and implementations", "backend-dev")
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Microservices Architecture with TypeScript
|
|
196
|
+
```typescript
|
|
197
|
+
// Enterprise microservices coordination
|
|
198
|
+
interface MicroserviceConfig {
|
|
199
|
+
serviceName: string;
|
|
200
|
+
version: string;
|
|
201
|
+
port: number;
|
|
202
|
+
dependencies: ServiceDependency[];
|
|
203
|
+
healthCheckEndpoint: string;
|
|
204
|
+
metricsEndpoint: string;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
interface ServiceDependency {
|
|
208
|
+
name: string;
|
|
209
|
+
type: 'database' | 'cache' | 'queue' | 'external-api' | 'internal-service';
|
|
210
|
+
connectionString: string;
|
|
211
|
+
timeout: number;
|
|
212
|
+
retryPolicy: RetryPolicy;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
interface RetryPolicy {
|
|
216
|
+
maxAttempts: number;
|
|
217
|
+
backoffStrategy: 'exponential' | 'linear' | 'fixed';
|
|
218
|
+
baseDelay: number;
|
|
219
|
+
maxDelay: number;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Base microservice class
|
|
223
|
+
abstract class BaseMicroservice {
|
|
224
|
+
protected config: MicroserviceConfig;
|
|
225
|
+
protected logger: Logger;
|
|
226
|
+
protected metrics: MetricsCollector;
|
|
227
|
+
protected healthChecker: HealthChecker;
|
|
228
|
+
|
|
229
|
+
constructor(config: MicroserviceConfig) {
|
|
230
|
+
this.config = config;
|
|
231
|
+
this.logger = new Logger(config.serviceName);
|
|
232
|
+
this.metrics = new MetricsCollector(config.serviceName);
|
|
233
|
+
this.healthChecker = new HealthChecker(config.dependencies);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
async start(): Promise<void> {
|
|
237
|
+
try {
|
|
238
|
+
// Initialize dependencies
|
|
239
|
+
await this.initializeDependencies();
|
|
240
|
+
|
|
241
|
+
// Setup health checks
|
|
242
|
+
await this.setupHealthChecks();
|
|
243
|
+
|
|
244
|
+
// Setup metrics collection
|
|
245
|
+
await this.setupMetrics();
|
|
246
|
+
|
|
247
|
+
// Start the service
|
|
248
|
+
await this.startService();
|
|
249
|
+
|
|
250
|
+
// Register with service discovery
|
|
251
|
+
await this.registerWithServiceDiscovery();
|
|
252
|
+
|
|
253
|
+
this.logger.info(`${this.config.serviceName} started successfully on port ${this.config.port}`);
|
|
254
|
+
} catch (error) {
|
|
255
|
+
this.logger.error(`Failed to start ${this.config.serviceName}:`, error);
|
|
256
|
+
await this.gracefulShutdown();
|
|
257
|
+
throw error;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
async gracefulShutdown(): Promise<void> {
|
|
262
|
+
this.logger.info(`Shutting down ${this.config.serviceName}...`);
|
|
263
|
+
|
|
264
|
+
try {
|
|
265
|
+
// Deregister from service discovery
|
|
266
|
+
await this.deregisterFromServiceDiscovery();
|
|
267
|
+
|
|
268
|
+
// Close connections
|
|
269
|
+
await this.closeDependencies();
|
|
270
|
+
|
|
271
|
+
// Stop metrics collection
|
|
272
|
+
await this.stopMetrics();
|
|
273
|
+
|
|
274
|
+
// Perform cleanup
|
|
275
|
+
await this.cleanup();
|
|
276
|
+
|
|
277
|
+
this.logger.info(`${this.config.serviceName} shut down successfully`);
|
|
278
|
+
} catch (error) {
|
|
279
|
+
this.logger.error(`Error during shutdown:`, error);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
protected abstract startService(): Promise<void>;
|
|
284
|
+
protected abstract cleanup(): Promise<void>;
|
|
285
|
+
|
|
286
|
+
private async initializeDependencies(): Promise<void> {
|
|
287
|
+
for (const dependency of this.config.dependencies) {
|
|
288
|
+
await this.initializeDependency(dependency);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private async initializeDependency(dependency: ServiceDependency): Promise<void> {
|
|
293
|
+
const maxAttempts = dependency.retryPolicy.maxAttempts;
|
|
294
|
+
let attempt = 1;
|
|
295
|
+
|
|
296
|
+
while (attempt <= maxAttempts) {
|
|
297
|
+
try {
|
|
298
|
+
await this.connectToDependency(dependency);
|
|
299
|
+
this.logger.info(`Connected to dependency: ${dependency.name}`);
|
|
300
|
+
return;
|
|
301
|
+
} catch (error) {
|
|
302
|
+
this.logger.warn(`Failed to connect to ${dependency.name} (attempt ${attempt}/${maxAttempts}):`, error);
|
|
303
|
+
|
|
304
|
+
if (attempt === maxAttempts) {
|
|
305
|
+
throw new Error(`Failed to connect to dependency ${dependency.name} after ${maxAttempts} attempts`);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const delay = this.calculateBackoffDelay(dependency.retryPolicy, attempt);
|
|
309
|
+
await this.sleep(delay);
|
|
310
|
+
attempt++;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
private calculateBackoffDelay(policy: RetryPolicy, attempt: number): number {
|
|
316
|
+
switch (policy.backoffStrategy) {
|
|
317
|
+
case 'exponential':
|
|
318
|
+
return Math.min(policy.baseDelay * Math.pow(2, attempt - 1), policy.maxDelay);
|
|
319
|
+
case 'linear':
|
|
320
|
+
return Math.min(policy.baseDelay * attempt, policy.maxDelay);
|
|
321
|
+
case 'fixed':
|
|
322
|
+
return policy.baseDelay;
|
|
323
|
+
default:
|
|
324
|
+
return policy.baseDelay;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
private sleep(ms: number): Promise<void> {
|
|
329
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// User service implementation
|
|
334
|
+
class UserService extends BaseMicroservice {
|
|
335
|
+
private app: Express;
|
|
336
|
+
private userRepository: UserRepository;
|
|
337
|
+
private eventBus: EventBus;
|
|
338
|
+
|
|
339
|
+
protected async startService(): Promise<void> {
|
|
340
|
+
// Setup Express app
|
|
341
|
+
this.app = express();
|
|
342
|
+
this.setupMiddleware();
|
|
343
|
+
this.setupRoutes();
|
|
344
|
+
|
|
345
|
+
// Initialize repository
|
|
346
|
+
this.userRepository = new TypeORMUserRepository();
|
|
347
|
+
|
|
348
|
+
// Initialize event bus
|
|
349
|
+
this.eventBus = new RabbitMQEventBus();
|
|
350
|
+
|
|
351
|
+
// Start HTTP server
|
|
352
|
+
this.app.listen(this.config.port);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
private setupMiddleware(): void {
|
|
356
|
+
this.app.use(express.json());
|
|
357
|
+
this.app.use(cors());
|
|
358
|
+
this.app.use(helmet());
|
|
359
|
+
this.app.use(this.requestLoggingMiddleware());
|
|
360
|
+
this.app.use(this.metricsMiddleware());
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
private setupRoutes(): void {
|
|
364
|
+
const userController = new UserController(
|
|
365
|
+
this.userRepository,
|
|
366
|
+
this.eventBus,
|
|
367
|
+
this.logger
|
|
368
|
+
);
|
|
369
|
+
|
|
370
|
+
this.app.use('/api/v1/users', userController.getRouter());
|
|
371
|
+
this.app.get('/health', this.healthCheckHandler());
|
|
372
|
+
this.app.get('/metrics', this.metricsHandler());
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
protected async cleanup(): Promise<void> {
|
|
376
|
+
// Cleanup implementation
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// Agent workflow for microservices
|
|
381
|
+
Task("Microservices Architect", "Design microservices architecture with TypeScript", "system-architect")
|
|
382
|
+
Task("Service Implementation Developer", "Implement individual microservices with type safety", "backend-dev")
|
|
383
|
+
Task("Inter-Service Communication Designer", "Design type-safe service communication patterns", "code-analyzer")
|
|
384
|
+
Task("DevOps Integration Specialist", "Setup deployment and monitoring for microservices", "cicd-engineer")
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Event Sourcing and CQRS Implementation
|
|
388
|
+
```typescript
|
|
389
|
+
// Enterprise event sourcing with TypeScript
|
|
390
|
+
namespace EventSourcing {
|
|
391
|
+
// Event Store
|
|
392
|
+
interface Event {
|
|
393
|
+
id: string;
|
|
394
|
+
aggregateId: string;
|
|
395
|
+
aggregateType: string;
|
|
396
|
+
eventType: string;
|
|
397
|
+
eventVersion: number;
|
|
398
|
+
eventData: unknown;
|
|
399
|
+
metadata: EventMetadata;
|
|
400
|
+
timestamp: Date;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
interface EventMetadata {
|
|
404
|
+
userId?: string;
|
|
405
|
+
correlationId: string;
|
|
406
|
+
causationId?: string;
|
|
407
|
+
ipAddress?: string;
|
|
408
|
+
userAgent?: string;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
interface EventStore {
|
|
412
|
+
appendEvents(
|
|
413
|
+
aggregateId: string,
|
|
414
|
+
events: Event[],
|
|
415
|
+
expectedVersion: number
|
|
416
|
+
): Promise<Either<ConcurrencyError, void>>;
|
|
417
|
+
|
|
418
|
+
getEvents(
|
|
419
|
+
aggregateId: string,
|
|
420
|
+
fromVersion?: number
|
|
421
|
+
): Promise<Event[]>;
|
|
422
|
+
|
|
423
|
+
getAllEvents(
|
|
424
|
+
fromPosition?: bigint,
|
|
425
|
+
maxCount?: number
|
|
426
|
+
): Promise<Event[]>;
|
|
427
|
+
|
|
428
|
+
getEventsByType(
|
|
429
|
+
eventType: string,
|
|
430
|
+
fromPosition?: bigint,
|
|
431
|
+
maxCount?: number
|
|
432
|
+
): Promise<Event[]>;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// Aggregate Base Class
|
|
436
|
+
abstract class AggregateRoot {
|
|
437
|
+
private uncommittedEvents: Event[] = [];
|
|
438
|
+
private version: number = 0;
|
|
439
|
+
|
|
440
|
+
protected constructor(protected readonly id: string) {}
|
|
441
|
+
|
|
442
|
+
protected addEvent(eventData: unknown, eventType: string): void {
|
|
443
|
+
const event: Event = {
|
|
444
|
+
id: crypto.randomUUID(),
|
|
445
|
+
aggregateId: this.id,
|
|
446
|
+
aggregateType: this.constructor.name,
|
|
447
|
+
eventType,
|
|
448
|
+
eventVersion: this.version + 1,
|
|
449
|
+
eventData,
|
|
450
|
+
metadata: {
|
|
451
|
+
correlationId: crypto.randomUUID(),
|
|
452
|
+
timestamp: new Date()
|
|
453
|
+
},
|
|
454
|
+
timestamp: new Date()
|
|
455
|
+
};
|
|
456
|
+
|
|
457
|
+
this.uncommittedEvents.push(event);
|
|
458
|
+
this.version++;
|
|
459
|
+
this.applyEvent(event);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
getUncommittedEvents(): Event[] {
|
|
463
|
+
return [...this.uncommittedEvents];
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
markEventsAsCommitted(): void {
|
|
467
|
+
this.uncommittedEvents = [];
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
loadFromHistory(events: Event[]): void {
|
|
471
|
+
for (const event of events) {
|
|
472
|
+
this.applyEvent(event);
|
|
473
|
+
this.version = event.eventVersion;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
getVersion(): number {
|
|
478
|
+
return this.version;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
protected abstract applyEvent(event: Event): void;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// User Aggregate Implementation
|
|
485
|
+
export class UserAggregate extends AggregateRoot {
|
|
486
|
+
private email?: string;
|
|
487
|
+
private profile?: UserProfile;
|
|
488
|
+
private isActive: boolean = true;
|
|
489
|
+
|
|
490
|
+
static create(id: string, email: string, profile: UserProfile): UserAggregate {
|
|
491
|
+
const user = new UserAggregate(id);
|
|
492
|
+
user.addEvent(
|
|
493
|
+
{ email, profile },
|
|
494
|
+
'UserCreated'
|
|
495
|
+
);
|
|
496
|
+
return user;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
static fromHistory(id: string, events: Event[]): UserAggregate {
|
|
500
|
+
const user = new UserAggregate(id);
|
|
501
|
+
user.loadFromHistory(events);
|
|
502
|
+
return user;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
changeEmail(newEmail: string): Either<DomainError, void> {
|
|
506
|
+
if (!this.isActive) {
|
|
507
|
+
return left(new DomainError('Cannot change email for inactive user'));
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if (this.email === newEmail) {
|
|
511
|
+
return left(new DomainError('Email is already set to this value'));
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
this.addEvent(
|
|
515
|
+
{ oldEmail: this.email, newEmail },
|
|
516
|
+
'UserEmailChanged'
|
|
517
|
+
);
|
|
518
|
+
|
|
519
|
+
return right(undefined);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
deactivate(): Either<DomainError, void> {
|
|
523
|
+
if (!this.isActive) {
|
|
524
|
+
return left(new DomainError('User is already inactive'));
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
this.addEvent({}, 'UserDeactivated');
|
|
528
|
+
return right(undefined);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
protected applyEvent(event: Event): void {
|
|
532
|
+
switch (event.eventType) {
|
|
533
|
+
case 'UserCreated':
|
|
534
|
+
this.applyUserCreated(event.eventData as { email: string; profile: UserProfile });
|
|
535
|
+
break;
|
|
536
|
+
case 'UserEmailChanged':
|
|
537
|
+
this.applyUserEmailChanged(event.eventData as { newEmail: string });
|
|
538
|
+
break;
|
|
539
|
+
case 'UserDeactivated':
|
|
540
|
+
this.applyUserDeactivated();
|
|
541
|
+
break;
|
|
542
|
+
default:
|
|
543
|
+
throw new Error(`Unknown event type: ${event.eventType}`);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
private applyUserCreated(data: { email: string; profile: UserProfile }): void {
|
|
548
|
+
this.email = data.email;
|
|
549
|
+
this.profile = data.profile;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
private applyUserEmailChanged(data: { newEmail: string }): void {
|
|
553
|
+
this.email = data.newEmail;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
private applyUserDeactivated(): void {
|
|
557
|
+
this.isActive = false;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// Getters
|
|
561
|
+
getEmail(): string | undefined { return this.email; }
|
|
562
|
+
getProfile(): UserProfile | undefined { return this.profile; }
|
|
563
|
+
getIsActive(): boolean { return this.isActive; }
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
// Repository Implementation
|
|
567
|
+
export class EventSourcedUserRepository {
|
|
568
|
+
constructor(private readonly eventStore: EventStore) {}
|
|
569
|
+
|
|
570
|
+
async save(user: UserAggregate): Promise<Either<RepositoryError, void>> {
|
|
571
|
+
const uncommittedEvents = user.getUncommittedEvents();
|
|
572
|
+
if (uncommittedEvents.length === 0) {
|
|
573
|
+
return right(undefined);
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
const result = await this.eventStore.appendEvents(
|
|
577
|
+
user.id,
|
|
578
|
+
uncommittedEvents,
|
|
579
|
+
user.getVersion() - uncommittedEvents.length
|
|
580
|
+
);
|
|
581
|
+
|
|
582
|
+
if (result.isRight()) {
|
|
583
|
+
user.markEventsAsCommitted();
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
return result;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
async findById(id: string): Promise<Option<UserAggregate>> {
|
|
590
|
+
const events = await this.eventStore.getEvents(id);
|
|
591
|
+
if (events.length === 0) {
|
|
592
|
+
return none();
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
const user = UserAggregate.fromHistory(id, events);
|
|
596
|
+
return some(user);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
// CQRS Read Models
|
|
601
|
+
interface UserReadModel {
|
|
602
|
+
id: string;
|
|
603
|
+
email: string;
|
|
604
|
+
profile: UserProfile;
|
|
605
|
+
isActive: boolean;
|
|
606
|
+
createdAt: Date;
|
|
607
|
+
updatedAt: Date;
|
|
608
|
+
version: number;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
// Projection Builder
|
|
612
|
+
export class UserProjectionBuilder {
|
|
613
|
+
constructor(
|
|
614
|
+
private readonly readModelRepository: UserReadModelRepository,
|
|
615
|
+
private readonly eventStore: EventStore
|
|
616
|
+
) {}
|
|
617
|
+
|
|
618
|
+
async buildProjections(): Promise<void> {
|
|
619
|
+
let position = await this.readModelRepository.getLastProcessedPosition();
|
|
620
|
+
|
|
621
|
+
while (true) {
|
|
622
|
+
const events = await this.eventStore.getAllEvents(position, 100);
|
|
623
|
+
if (events.length === 0) {
|
|
624
|
+
break;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
for (const event of events) {
|
|
628
|
+
await this.processEvent(event);
|
|
629
|
+
position = BigInt(event.id);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
await this.readModelRepository.updateLastProcessedPosition(position);
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
private async processEvent(event: Event): Promise<void> {
|
|
637
|
+
if (event.aggregateType !== 'UserAggregate') {
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
switch (event.eventType) {
|
|
642
|
+
case 'UserCreated':
|
|
643
|
+
await this.handleUserCreated(event);
|
|
644
|
+
break;
|
|
645
|
+
case 'UserEmailChanged':
|
|
646
|
+
await this.handleUserEmailChanged(event);
|
|
647
|
+
break;
|
|
648
|
+
case 'UserDeactivated':
|
|
649
|
+
await this.handleUserDeactivated(event);
|
|
650
|
+
break;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
private async handleUserCreated(event: Event): Promise<void> {
|
|
655
|
+
const data = event.eventData as { email: string; profile: UserProfile };
|
|
656
|
+
const readModel: UserReadModel = {
|
|
657
|
+
id: event.aggregateId,
|
|
658
|
+
email: data.email,
|
|
659
|
+
profile: data.profile,
|
|
660
|
+
isActive: true,
|
|
661
|
+
createdAt: event.timestamp,
|
|
662
|
+
updatedAt: event.timestamp,
|
|
663
|
+
version: event.eventVersion
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
await this.readModelRepository.save(readModel);
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
private async handleUserEmailChanged(event: Event): Promise<void> {
|
|
670
|
+
const data = event.eventData as { newEmail: string };
|
|
671
|
+
await this.readModelRepository.updateEmail(event.aggregateId, data.newEmail, event.timestamp);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
private async handleUserDeactivated(event: Event): Promise<void> {
|
|
675
|
+
await this.readModelRepository.deactivateUser(event.aggregateId, event.timestamp);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
// Agent workflow for event sourcing
|
|
681
|
+
Task("Event Sourcing Architect", "Design event sourcing and CQRS architecture", "system-architect")
|
|
682
|
+
Task("Aggregate Developer", "Implement domain aggregates with event sourcing", "coder")
|
|
683
|
+
Task("Event Store Developer", "Implement event store with TypeScript", "backend-dev")
|
|
684
|
+
Task("Projection Builder", "Create read model projections from events", "code-analyzer")
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
## 🔒 Enterprise Security Patterns
|
|
688
|
+
|
|
689
|
+
### Authentication and Authorization
|
|
690
|
+
```typescript
|
|
691
|
+
// Enterprise authentication system
|
|
692
|
+
namespace Authentication {
|
|
693
|
+
// User authentication
|
|
694
|
+
interface AuthUser {
|
|
695
|
+
id: string;
|
|
696
|
+
email: string;
|
|
697
|
+
roles: Role[];
|
|
698
|
+
permissions: Permission[];
|
|
699
|
+
lastLoginAt?: Date;
|
|
700
|
+
isActive: boolean;
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
interface Role {
|
|
704
|
+
id: string;
|
|
705
|
+
name: string;
|
|
706
|
+
permissions: Permission[];
|
|
707
|
+
hierarchy: number;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
interface Permission {
|
|
711
|
+
id: string;
|
|
712
|
+
resource: string;
|
|
713
|
+
action: string;
|
|
714
|
+
conditions?: AccessCondition[];
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
interface AccessCondition {
|
|
718
|
+
field: string;
|
|
719
|
+
operator: 'equals' | 'not_equals' | 'in' | 'not_in' | 'greater_than' | 'less_than';
|
|
720
|
+
value: unknown;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
// JWT Token Service
|
|
724
|
+
export class JWTTokenService {
|
|
725
|
+
constructor(
|
|
726
|
+
private readonly secretKey: string,
|
|
727
|
+
private readonly issuer: string,
|
|
728
|
+
private readonly audience: string
|
|
729
|
+
) {}
|
|
730
|
+
|
|
731
|
+
generateAccessToken(user: AuthUser): string {
|
|
732
|
+
const payload: JWTPayload = {
|
|
733
|
+
sub: user.id,
|
|
734
|
+
email: user.email,
|
|
735
|
+
roles: user.roles.map(r => r.name),
|
|
736
|
+
permissions: user.permissions.map(p => `${p.resource}:${p.action}`),
|
|
737
|
+
iat: Math.floor(Date.now() / 1000),
|
|
738
|
+
exp: Math.floor(Date.now() / 1000) + (60 * 60), // 1 hour
|
|
739
|
+
iss: this.issuer,
|
|
740
|
+
aud: this.audience
|
|
741
|
+
};
|
|
742
|
+
|
|
743
|
+
return jwt.sign(payload, this.secretKey, { algorithm: 'HS256' });
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
generateRefreshToken(userId: string): string {
|
|
747
|
+
const payload: RefreshTokenPayload = {
|
|
748
|
+
sub: userId,
|
|
749
|
+
type: 'refresh',
|
|
750
|
+
iat: Math.floor(Date.now() / 1000),
|
|
751
|
+
exp: Math.floor(Date.now() / 1000) + (30 * 24 * 60 * 60), // 30 days
|
|
752
|
+
iss: this.issuer,
|
|
753
|
+
aud: this.audience
|
|
754
|
+
};
|
|
755
|
+
|
|
756
|
+
return jwt.sign(payload, this.secretKey, { algorithm: 'HS256' });
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
verifyToken(token: string): Either<AuthenticationError, JWTPayload> {
|
|
760
|
+
try {
|
|
761
|
+
const payload = jwt.verify(token, this.secretKey, {
|
|
762
|
+
issuer: this.issuer,
|
|
763
|
+
audience: this.audience
|
|
764
|
+
}) as JWTPayload;
|
|
765
|
+
|
|
766
|
+
return right(payload);
|
|
767
|
+
} catch (error) {
|
|
768
|
+
if (error instanceof jwt.TokenExpiredError) {
|
|
769
|
+
return left(new AuthenticationError('Token expired'));
|
|
770
|
+
} else if (error instanceof jwt.JsonWebTokenError) {
|
|
771
|
+
return left(new AuthenticationError('Invalid token'));
|
|
772
|
+
} else {
|
|
773
|
+
return left(new AuthenticationError('Token verification failed'));
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
// Role-Based Access Control (RBAC)
|
|
780
|
+
export class RBACAuthorizationService {
|
|
781
|
+
constructor(
|
|
782
|
+
private readonly roleRepository: RoleRepository,
|
|
783
|
+
private readonly permissionRepository: PermissionRepository
|
|
784
|
+
) {}
|
|
785
|
+
|
|
786
|
+
async authorize(
|
|
787
|
+
user: AuthUser,
|
|
788
|
+
resource: string,
|
|
789
|
+
action: string,
|
|
790
|
+
context?: AuthorizationContext
|
|
791
|
+
): Promise<Either<AuthorizationError, void>> {
|
|
792
|
+
// Check direct user permissions
|
|
793
|
+
const directPermission = user.permissions.find(p =>
|
|
794
|
+
p.resource === resource && p.action === action
|
|
795
|
+
);
|
|
796
|
+
|
|
797
|
+
if (directPermission) {
|
|
798
|
+
const conditionResult = await this.evaluateConditions(
|
|
799
|
+
directPermission.conditions || [],
|
|
800
|
+
context
|
|
801
|
+
);
|
|
802
|
+
if (conditionResult.isRight()) {
|
|
803
|
+
return right(undefined);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
// Check role-based permissions
|
|
808
|
+
for (const role of user.roles) {
|
|
809
|
+
const rolePermission = role.permissions.find(p =>
|
|
810
|
+
p.resource === resource && p.action === action
|
|
811
|
+
);
|
|
812
|
+
|
|
813
|
+
if (rolePermission) {
|
|
814
|
+
const conditionResult = await this.evaluateConditions(
|
|
815
|
+
rolePermission.conditions || [],
|
|
816
|
+
context
|
|
817
|
+
);
|
|
818
|
+
if (conditionResult.isRight()) {
|
|
819
|
+
return right(undefined);
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
return left(new AuthorizationError(`Access denied for ${resource}:${action}`));
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
private async evaluateConditions(
|
|
828
|
+
conditions: AccessCondition[],
|
|
829
|
+
context?: AuthorizationContext
|
|
830
|
+
): Promise<Either<AuthorizationError, void>> {
|
|
831
|
+
if (conditions.length === 0) {
|
|
832
|
+
return right(undefined);
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
for (const condition of conditions) {
|
|
836
|
+
const result = await this.evaluateCondition(condition, context);
|
|
837
|
+
if (result.isLeft()) {
|
|
838
|
+
return result;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
return right(undefined);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
private async evaluateCondition(
|
|
846
|
+
condition: AccessCondition,
|
|
847
|
+
context?: AuthorizationContext
|
|
848
|
+
): Promise<Either<AuthorizationError, void>> {
|
|
849
|
+
if (!context) {
|
|
850
|
+
return left(new AuthorizationError('Context required for condition evaluation'));
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
const contextValue = this.getContextValue(context, condition.field);
|
|
854
|
+
if (contextValue === undefined) {
|
|
855
|
+
return left(new AuthorizationError(`Context field '${condition.field}' not found`));
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
const satisfied = this.evaluateConditionOperator(
|
|
859
|
+
condition.operator,
|
|
860
|
+
contextValue,
|
|
861
|
+
condition.value
|
|
862
|
+
);
|
|
863
|
+
|
|
864
|
+
return satisfied
|
|
865
|
+
? right(undefined)
|
|
866
|
+
: left(new AuthorizationError(`Condition not satisfied: ${condition.field} ${condition.operator} ${condition.value}`));
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
private evaluateConditionOperator(
|
|
870
|
+
operator: string,
|
|
871
|
+
contextValue: unknown,
|
|
872
|
+
expectedValue: unknown
|
|
873
|
+
): boolean {
|
|
874
|
+
switch (operator) {
|
|
875
|
+
case 'equals':
|
|
876
|
+
return contextValue === expectedValue;
|
|
877
|
+
case 'not_equals':
|
|
878
|
+
return contextValue !== expectedValue;
|
|
879
|
+
case 'in':
|
|
880
|
+
return Array.isArray(expectedValue) && expectedValue.includes(contextValue);
|
|
881
|
+
case 'not_in':
|
|
882
|
+
return Array.isArray(expectedValue) && !expectedValue.includes(contextValue);
|
|
883
|
+
case 'greater_than':
|
|
884
|
+
return Number(contextValue) > Number(expectedValue);
|
|
885
|
+
case 'less_than':
|
|
886
|
+
return Number(contextValue) < Number(expectedValue);
|
|
887
|
+
default:
|
|
888
|
+
return false;
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// Authentication Middleware
|
|
894
|
+
export function createAuthenticationMiddleware(
|
|
895
|
+
tokenService: JWTTokenService,
|
|
896
|
+
userRepository: AuthUserRepository
|
|
897
|
+
): RequestHandler {
|
|
898
|
+
return async (req: AuthenticatedRequest, res: Response, next: NextFunction): Promise<void> => {
|
|
899
|
+
try {
|
|
900
|
+
const authHeader = req.headers.authorization;
|
|
901
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
902
|
+
res.status(401).json({ error: 'Missing or invalid authorization header' });
|
|
903
|
+
return;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
const token = authHeader.substring(7);
|
|
907
|
+
const tokenResult = tokenService.verifyToken(token);
|
|
908
|
+
|
|
909
|
+
if (tokenResult.isLeft()) {
|
|
910
|
+
res.status(401).json({ error: tokenResult.value.message });
|
|
911
|
+
return;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
const payload = tokenResult.value;
|
|
915
|
+
const user = await userRepository.findById(payload.sub);
|
|
916
|
+
|
|
917
|
+
if (!user || !user.isActive) {
|
|
918
|
+
res.status(401).json({ error: 'User not found or inactive' });
|
|
919
|
+
return;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
req.user = user;
|
|
923
|
+
next();
|
|
924
|
+
} catch (error) {
|
|
925
|
+
res.status(500).json({ error: 'Authentication error' });
|
|
926
|
+
}
|
|
927
|
+
};
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
// Authorization Middleware
|
|
931
|
+
export function createAuthorizationMiddleware(
|
|
932
|
+
authorizationService: RBACAuthorizationService,
|
|
933
|
+
resource: string,
|
|
934
|
+
action: string
|
|
935
|
+
): RequestHandler {
|
|
936
|
+
return async (req: AuthenticatedRequest, res: Response, next: NextFunction): Promise<void> => {
|
|
937
|
+
try {
|
|
938
|
+
if (!req.user) {
|
|
939
|
+
res.status(401).json({ error: 'Authentication required' });
|
|
940
|
+
return;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
const context: AuthorizationContext = {
|
|
944
|
+
userId: req.user.id,
|
|
945
|
+
params: req.params,
|
|
946
|
+
query: req.query,
|
|
947
|
+
body: req.body
|
|
948
|
+
};
|
|
949
|
+
|
|
950
|
+
const authResult = await authorizationService.authorize(
|
|
951
|
+
req.user,
|
|
952
|
+
resource,
|
|
953
|
+
action,
|
|
954
|
+
context
|
|
955
|
+
);
|
|
956
|
+
|
|
957
|
+
if (authResult.isLeft()) {
|
|
958
|
+
res.status(403).json({ error: authResult.value.message });
|
|
959
|
+
return;
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
next();
|
|
963
|
+
} catch (error) {
|
|
964
|
+
res.status(500).json({ error: 'Authorization error' });
|
|
965
|
+
}
|
|
966
|
+
};
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
// Agent workflow for enterprise security
|
|
971
|
+
Task("Security Architect", "Design comprehensive authentication and authorization system", "system-architect")
|
|
972
|
+
Task("Auth Implementation Developer", "Implement JWT-based authentication with RBAC", "backend-dev")
|
|
973
|
+
Task("Security Validator", "Validate security implementation and identify vulnerabilities", "reviewer")
|
|
974
|
+
Task("Access Control Specialist", "Implement fine-grained access control patterns", "coder")
|
|
975
|
+
```
|
|
976
|
+
|
|
977
|
+
## 📊 Enterprise Monitoring and Observability
|
|
978
|
+
|
|
979
|
+
### Comprehensive Logging and Metrics
|
|
980
|
+
```typescript
|
|
981
|
+
// Enterprise logging and monitoring system
|
|
982
|
+
namespace Monitoring {
|
|
983
|
+
// Structured Logging
|
|
984
|
+
interface LogEntry {
|
|
985
|
+
timestamp: Date;
|
|
986
|
+
level: LogLevel;
|
|
987
|
+
message: string;
|
|
988
|
+
service: string;
|
|
989
|
+
traceId?: string;
|
|
990
|
+
spanId?: string;
|
|
991
|
+
userId?: string;
|
|
992
|
+
metadata: Record<string, unknown>;
|
|
993
|
+
error?: ErrorInfo;
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
interface ErrorInfo {
|
|
997
|
+
name: string;
|
|
998
|
+
message: string;
|
|
999
|
+
stack?: string;
|
|
1000
|
+
code?: string;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
1004
|
+
|
|
1005
|
+
export class StructuredLogger {
|
|
1006
|
+
constructor(
|
|
1007
|
+
private readonly service: string,
|
|
1008
|
+
private readonly outputs: LogOutput[]
|
|
1009
|
+
) {}
|
|
1010
|
+
|
|
1011
|
+
debug(message: string, metadata: Record<string, unknown> = {}): void {
|
|
1012
|
+
this.log('debug', message, metadata);
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
info(message: string, metadata: Record<string, unknown> = {}): void {
|
|
1016
|
+
this.log('info', message, metadata);
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
warn(message: string, metadata: Record<string, unknown> = {}): void {
|
|
1020
|
+
this.log('warn', message, metadata);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
error(message: string, error?: Error, metadata: Record<string, unknown> = {}): void {
|
|
1024
|
+
const errorInfo: ErrorInfo | undefined = error ? {
|
|
1025
|
+
name: error.name,
|
|
1026
|
+
message: error.message,
|
|
1027
|
+
stack: error.stack,
|
|
1028
|
+
code: (error as any).code
|
|
1029
|
+
} : undefined;
|
|
1030
|
+
|
|
1031
|
+
this.log('error', message, metadata, errorInfo);
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
fatal(message: string, error?: Error, metadata: Record<string, unknown> = {}): void {
|
|
1035
|
+
const errorInfo: ErrorInfo | undefined = error ? {
|
|
1036
|
+
name: error.name,
|
|
1037
|
+
message: error.message,
|
|
1038
|
+
stack: error.stack,
|
|
1039
|
+
code: (error as any).code
|
|
1040
|
+
} : undefined;
|
|
1041
|
+
|
|
1042
|
+
this.log('fatal', message, metadata, errorInfo);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
private log(
|
|
1046
|
+
level: LogLevel,
|
|
1047
|
+
message: string,
|
|
1048
|
+
metadata: Record<string, unknown>,
|
|
1049
|
+
error?: ErrorInfo
|
|
1050
|
+
): void {
|
|
1051
|
+
const entry: LogEntry = {
|
|
1052
|
+
timestamp: new Date(),
|
|
1053
|
+
level,
|
|
1054
|
+
message,
|
|
1055
|
+
service: this.service,
|
|
1056
|
+
traceId: this.getCurrentTraceId(),
|
|
1057
|
+
spanId: this.getCurrentSpanId(),
|
|
1058
|
+
userId: this.getCurrentUserId(),
|
|
1059
|
+
metadata,
|
|
1060
|
+
error
|
|
1061
|
+
};
|
|
1062
|
+
|
|
1063
|
+
for (const output of this.outputs) {
|
|
1064
|
+
output.write(entry);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
private getCurrentTraceId(): string | undefined {
|
|
1069
|
+
// Implementation to get current trace ID from context
|
|
1070
|
+
return undefined;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
private getCurrentSpanId(): string | undefined {
|
|
1074
|
+
// Implementation to get current span ID from context
|
|
1075
|
+
return undefined;
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
private getCurrentUserId(): string | undefined {
|
|
1079
|
+
// Implementation to get current user ID from context
|
|
1080
|
+
return undefined;
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
// Metrics Collection
|
|
1085
|
+
interface MetricEntry {
|
|
1086
|
+
name: string;
|
|
1087
|
+
type: MetricType;
|
|
1088
|
+
value: number;
|
|
1089
|
+
timestamp: Date;
|
|
1090
|
+
tags: Record<string, string>;
|
|
1091
|
+
unit?: string;
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
type MetricType = 'counter' | 'gauge' | 'histogram' | 'timer';
|
|
1095
|
+
|
|
1096
|
+
export class MetricsCollector {
|
|
1097
|
+
private metrics: Map<string, MetricEntry> = new Map();
|
|
1098
|
+
|
|
1099
|
+
constructor(
|
|
1100
|
+
private readonly service: string,
|
|
1101
|
+
private readonly outputs: MetricsOutput[]
|
|
1102
|
+
) {}
|
|
1103
|
+
|
|
1104
|
+
incrementCounter(name: string, value: number = 1, tags: Record<string, string> = {}): void {
|
|
1105
|
+
const key = this.createMetricKey(name, tags);
|
|
1106
|
+
const existing = this.metrics.get(key);
|
|
1107
|
+
|
|
1108
|
+
const metric: MetricEntry = {
|
|
1109
|
+
name,
|
|
1110
|
+
type: 'counter',
|
|
1111
|
+
value: existing ? existing.value + value : value,
|
|
1112
|
+
timestamp: new Date(),
|
|
1113
|
+
tags: { service: this.service, ...tags }
|
|
1114
|
+
};
|
|
1115
|
+
|
|
1116
|
+
this.metrics.set(key, metric);
|
|
1117
|
+
this.emitMetric(metric);
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
setGauge(name: string, value: number, tags: Record<string, string> = {}): void {
|
|
1121
|
+
const metric: MetricEntry = {
|
|
1122
|
+
name,
|
|
1123
|
+
type: 'gauge',
|
|
1124
|
+
value,
|
|
1125
|
+
timestamp: new Date(),
|
|
1126
|
+
tags: { service: this.service, ...tags }
|
|
1127
|
+
};
|
|
1128
|
+
|
|
1129
|
+
const key = this.createMetricKey(name, tags);
|
|
1130
|
+
this.metrics.set(key, metric);
|
|
1131
|
+
this.emitMetric(metric);
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
recordHistogram(name: string, value: number, tags: Record<string, string> = {}): void {
|
|
1135
|
+
const metric: MetricEntry = {
|
|
1136
|
+
name,
|
|
1137
|
+
type: 'histogram',
|
|
1138
|
+
value,
|
|
1139
|
+
timestamp: new Date(),
|
|
1140
|
+
tags: { service: this.service, ...tags }
|
|
1141
|
+
};
|
|
1142
|
+
|
|
1143
|
+
this.emitMetric(metric);
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
startTimer(name: string, tags: Record<string, string> = {}): () => void {
|
|
1147
|
+
const start = Date.now();
|
|
1148
|
+
|
|
1149
|
+
return () => {
|
|
1150
|
+
const duration = Date.now() - start;
|
|
1151
|
+
const metric: MetricEntry = {
|
|
1152
|
+
name,
|
|
1153
|
+
type: 'timer',
|
|
1154
|
+
value: duration,
|
|
1155
|
+
timestamp: new Date(),
|
|
1156
|
+
tags: { service: this.service, ...tags },
|
|
1157
|
+
unit: 'milliseconds'
|
|
1158
|
+
};
|
|
1159
|
+
|
|
1160
|
+
this.emitMetric(metric);
|
|
1161
|
+
};
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
private createMetricKey(name: string, tags: Record<string, string>): string {
|
|
1165
|
+
const sortedTags = Object.keys(tags)
|
|
1166
|
+
.sort()
|
|
1167
|
+
.map(key => `${key}=${tags[key]}`)
|
|
1168
|
+
.join(',');
|
|
1169
|
+
return `${name}[${sortedTags}]`;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
private emitMetric(metric: MetricEntry): void {
|
|
1173
|
+
for (const output of this.outputs) {
|
|
1174
|
+
output.write(metric);
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
// Distributed Tracing
|
|
1180
|
+
interface Span {
|
|
1181
|
+
traceId: string;
|
|
1182
|
+
spanId: string;
|
|
1183
|
+
parentSpanId?: string;
|
|
1184
|
+
operationName: string;
|
|
1185
|
+
startTime: Date;
|
|
1186
|
+
endTime?: Date;
|
|
1187
|
+
duration?: number;
|
|
1188
|
+
tags: Record<string, string>;
|
|
1189
|
+
logs: SpanLog[];
|
|
1190
|
+
status: SpanStatus;
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
interface SpanLog {
|
|
1194
|
+
timestamp: Date;
|
|
1195
|
+
fields: Record<string, unknown>;
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
type SpanStatus = 'ok' | 'error' | 'timeout' | 'cancelled';
|
|
1199
|
+
|
|
1200
|
+
export class DistributedTracer {
|
|
1201
|
+
private activeSpans: Map<string, Span> = new Map();
|
|
1202
|
+
|
|
1203
|
+
constructor(
|
|
1204
|
+
private readonly service: string,
|
|
1205
|
+
private readonly outputs: TracingOutput[]
|
|
1206
|
+
) {}
|
|
1207
|
+
|
|
1208
|
+
startSpan(operationName: string, parentSpanId?: string): Span {
|
|
1209
|
+
const span: Span = {
|
|
1210
|
+
traceId: parentSpanId ? this.getTraceIdFromSpan(parentSpanId) : this.generateTraceId(),
|
|
1211
|
+
spanId: this.generateSpanId(),
|
|
1212
|
+
parentSpanId,
|
|
1213
|
+
operationName,
|
|
1214
|
+
startTime: new Date(),
|
|
1215
|
+
tags: { service: this.service },
|
|
1216
|
+
logs: [],
|
|
1217
|
+
status: 'ok'
|
|
1218
|
+
};
|
|
1219
|
+
|
|
1220
|
+
this.activeSpans.set(span.spanId, span);
|
|
1221
|
+
return span;
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
finishSpan(spanId: string, status: SpanStatus = 'ok'): void {
|
|
1225
|
+
const span = this.activeSpans.get(spanId);
|
|
1226
|
+
if (!span) {
|
|
1227
|
+
return;
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
span.endTime = new Date();
|
|
1231
|
+
span.duration = span.endTime.getTime() - span.startTime.getTime();
|
|
1232
|
+
span.status = status;
|
|
1233
|
+
|
|
1234
|
+
this.activeSpans.delete(spanId);
|
|
1235
|
+
|
|
1236
|
+
for (const output of this.outputs) {
|
|
1237
|
+
output.write(span);
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
addSpanTag(spanId: string, key: string, value: string): void {
|
|
1242
|
+
const span = this.activeSpans.get(spanId);
|
|
1243
|
+
if (span) {
|
|
1244
|
+
span.tags[key] = value;
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
logToSpan(spanId: string, fields: Record<string, unknown>): void {
|
|
1249
|
+
const span = this.activeSpans.get(spanId);
|
|
1250
|
+
if (span) {
|
|
1251
|
+
span.logs.push({
|
|
1252
|
+
timestamp: new Date(),
|
|
1253
|
+
fields
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
private generateTraceId(): string {
|
|
1259
|
+
return crypto.randomUUID();
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
private generateSpanId(): string {
|
|
1263
|
+
return crypto.randomUUID();
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
private getTraceIdFromSpan(spanId: string): string {
|
|
1267
|
+
const span = this.activeSpans.get(spanId);
|
|
1268
|
+
return span ? span.traceId : this.generateTraceId();
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
// Health Monitoring
|
|
1273
|
+
export class HealthMonitor {
|
|
1274
|
+
private healthChecks: Map<string, HealthCheck> = new Map();
|
|
1275
|
+
|
|
1276
|
+
constructor(private readonly logger: StructuredLogger) {}
|
|
1277
|
+
|
|
1278
|
+
registerHealthCheck(name: string, check: HealthCheck): void {
|
|
1279
|
+
this.healthChecks.set(name, check);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
async checkHealth(): Promise<HealthStatus> {
|
|
1283
|
+
const results: Record<string, HealthCheckResult> = {};
|
|
1284
|
+
let overallStatus: 'healthy' | 'unhealthy' | 'degraded' = 'healthy';
|
|
1285
|
+
|
|
1286
|
+
for (const [name, check] of this.healthChecks) {
|
|
1287
|
+
try {
|
|
1288
|
+
const result = await Promise.race([
|
|
1289
|
+
check.execute(),
|
|
1290
|
+
this.timeout(check.timeout || 5000)
|
|
1291
|
+
]);
|
|
1292
|
+
|
|
1293
|
+
results[name] = result;
|
|
1294
|
+
|
|
1295
|
+
if (result.status === 'unhealthy') {
|
|
1296
|
+
overallStatus = 'unhealthy';
|
|
1297
|
+
} else if (result.status === 'degraded' && overallStatus === 'healthy') {
|
|
1298
|
+
overallStatus = 'degraded';
|
|
1299
|
+
}
|
|
1300
|
+
} catch (error) {
|
|
1301
|
+
results[name] = {
|
|
1302
|
+
status: 'unhealthy',
|
|
1303
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
1304
|
+
timestamp: new Date()
|
|
1305
|
+
};
|
|
1306
|
+
overallStatus = 'unhealthy';
|
|
1307
|
+
|
|
1308
|
+
this.logger.error(`Health check failed: ${name}`, error);
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
return {
|
|
1313
|
+
status: overallStatus,
|
|
1314
|
+
timestamp: new Date(),
|
|
1315
|
+
checks: results
|
|
1316
|
+
};
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
private timeout(ms: number): Promise<never> {
|
|
1320
|
+
return new Promise((_, reject) =>
|
|
1321
|
+
setTimeout(() => reject(new Error('Health check timeout')), ms)
|
|
1322
|
+
);
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
// Agent workflow for monitoring and observability
|
|
1328
|
+
Task("Observability Architect", "Design comprehensive monitoring and observability strategy", "system-architect")
|
|
1329
|
+
Task("Logging Implementation Developer", "Implement structured logging with correlation IDs", "backend-dev")
|
|
1330
|
+
Task("Metrics Collection Specialist", "Setup metrics collection and aggregation", "performance-benchmarker")
|
|
1331
|
+
Task("Monitoring Dashboard Creator", "Create monitoring dashboards and alerting", "code-analyzer")
|
|
1332
|
+
```
|
|
1333
|
+
|
|
1334
|
+
## 🎯 Enterprise Development Best Practices
|
|
1335
|
+
|
|
1336
|
+
### Code Quality and Standards
|
|
1337
|
+
- **Strict TypeScript Configuration** - Enable all strict checks and type coverage requirements
|
|
1338
|
+
- **Architecture Documentation** - Maintain comprehensive architecture documentation
|
|
1339
|
+
- **Code Review Standards** - Implement mandatory code reviews with security focus
|
|
1340
|
+
- **Testing Strategy** - Comprehensive unit, integration, and end-to-end testing
|
|
1341
|
+
- **Security Scanning** - Automated security vulnerability scanning
|
|
1342
|
+
|
|
1343
|
+
### Scalability Considerations
|
|
1344
|
+
- **Modular Architecture** - Design for horizontal scaling and modularity
|
|
1345
|
+
- **Performance Monitoring** - Continuous performance monitoring and optimization
|
|
1346
|
+
- **Caching Strategies** - Multi-level caching for improved performance
|
|
1347
|
+
- **Database Optimization** - Query optimization and connection pooling
|
|
1348
|
+
- **Load Balancing** - Proper load distribution and failover mechanisms
|
|
1349
|
+
|
|
1350
|
+
### Operational Excellence
|
|
1351
|
+
- **CI/CD Pipelines** - Automated deployment with quality gates
|
|
1352
|
+
- **Monitoring and Alerting** - Comprehensive monitoring with intelligent alerting
|
|
1353
|
+
- **Disaster Recovery** - Backup and recovery procedures
|
|
1354
|
+
- **Documentation** - Up-to-date technical and operational documentation
|
|
1355
|
+
- **Incident Response** - Well-defined incident response procedures
|
|
1356
|
+
|
|
1357
|
+
---
|
|
1358
|
+
|
|
1359
|
+
**Next Steps:**
|
|
1360
|
+
- Explore [Migration Strategies](migration.md) for enterprise-scale migrations
|
|
1361
|
+
- Return to [TypeScript Guide](README.md) for additional enterprise patterns
|
|
1362
|
+
- Check other language guides for polyglot enterprise architectures
|
|
1363
|
+
|
|
1364
|
+
**Ready to build enterprise TypeScript applications?**
|
|
1365
|
+
- Start with domain modeling and clean architecture
|
|
1366
|
+
- Implement comprehensive security and monitoring
|
|
1367
|
+
- Use agents to maintain code quality and standards
|
|
1368
|
+
- Focus on scalability and operational excellence from day one
|