fivocell 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -98
- package/README.md +418 -180
- package/dist/cli.js +698 -80
- package/dist/cli.js.map +1 -1
- package/dist/core/__tests__/ab-test-framework.test.d.ts +2 -0
- package/dist/core/__tests__/ab-test-framework.test.d.ts.map +1 -0
- package/dist/core/__tests__/ab-test-framework.test.js +43 -0
- package/dist/core/__tests__/ab-test-framework.test.js.map +1 -0
- package/dist/core/__tests__/ai-memory.test.d.ts +2 -0
- package/dist/core/__tests__/ai-memory.test.d.ts.map +1 -0
- package/dist/core/__tests__/ai-memory.test.js +143 -0
- package/dist/core/__tests__/ai-memory.test.js.map +1 -0
- package/dist/core/__tests__/ast-extractor.test.d.ts +2 -0
- package/dist/core/__tests__/ast-extractor.test.d.ts.map +1 -0
- package/dist/core/__tests__/ast-extractor.test.js +30 -0
- package/dist/core/__tests__/ast-extractor.test.js.map +1 -0
- package/dist/core/__tests__/build-failure-predictor.test.d.ts +2 -0
- package/dist/core/__tests__/build-failure-predictor.test.d.ts.map +1 -0
- package/dist/core/__tests__/build-failure-predictor.test.js +76 -0
- package/dist/core/__tests__/build-failure-predictor.test.js.map +1 -0
- package/dist/core/__tests__/chapter3-verify.test.d.ts +2 -0
- package/dist/core/__tests__/chapter3-verify.test.d.ts.map +1 -0
- package/dist/core/__tests__/chapter3-verify.test.js +315 -0
- package/dist/core/__tests__/chapter3-verify.test.js.map +1 -0
- package/dist/core/__tests__/chapter4-hostile.test.d.ts +11 -0
- package/dist/core/__tests__/chapter4-hostile.test.d.ts.map +1 -0
- package/dist/core/__tests__/chapter4-hostile.test.js +269 -0
- package/dist/core/__tests__/chapter4-hostile.test.js.map +1 -0
- package/dist/core/__tests__/chapter4-verify.test.d.ts +2 -0
- package/dist/core/__tests__/chapter4-verify.test.d.ts.map +1 -0
- package/dist/core/__tests__/chapter4-verify.test.js +349 -0
- package/dist/core/__tests__/chapter4-verify.test.js.map +1 -0
- package/dist/core/__tests__/chapter8-hostile.test.d.ts +2 -0
- package/dist/core/__tests__/chapter8-hostile.test.d.ts.map +1 -0
- package/dist/core/__tests__/chapter8-hostile.test.js +445 -0
- package/dist/core/__tests__/chapter8-hostile.test.js.map +1 -0
- package/dist/core/__tests__/chapter9-hostile.test.d.ts +2 -0
- package/dist/core/__tests__/chapter9-hostile.test.d.ts.map +1 -0
- package/dist/core/__tests__/chapter9-hostile.test.js +783 -0
- package/dist/core/__tests__/chapter9-hostile.test.js.map +1 -0
- package/dist/core/__tests__/circular-dependency-detector.test.d.ts +2 -0
- package/dist/core/__tests__/circular-dependency-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/circular-dependency-detector.test.js +55 -0
- package/dist/core/__tests__/circular-dependency-detector.test.js.map +1 -0
- package/dist/core/__tests__/community-full.test.d.ts +2 -0
- package/dist/core/__tests__/community-full.test.d.ts.map +1 -0
- package/dist/core/__tests__/community-full.test.js +70 -0
- package/dist/core/__tests__/community-full.test.js.map +1 -0
- package/dist/core/__tests__/community-live.test.d.ts +2 -0
- package/dist/core/__tests__/community-live.test.d.ts.map +1 -0
- package/dist/core/__tests__/community-live.test.js +67 -0
- package/dist/core/__tests__/community-live.test.js.map +1 -0
- package/dist/core/__tests__/complexity-analyzer.test.d.ts +2 -0
- package/dist/core/__tests__/complexity-analyzer.test.d.ts.map +1 -0
- package/dist/core/__tests__/complexity-analyzer.test.js +54 -0
- package/dist/core/__tests__/complexity-analyzer.test.js.map +1 -0
- package/dist/core/__tests__/config-attribution.test.d.ts +2 -0
- package/dist/core/__tests__/config-attribution.test.d.ts.map +1 -0
- package/dist/core/__tests__/config-attribution.test.js +45 -0
- package/dist/core/__tests__/config-attribution.test.js.map +1 -0
- package/dist/core/__tests__/conflict-detector.test.d.ts +2 -0
- package/dist/core/__tests__/conflict-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/conflict-detector.test.js +120 -0
- package/dist/core/__tests__/conflict-detector.test.js.map +1 -0
- package/dist/core/__tests__/context-restore.test.d.ts +2 -0
- package/dist/core/__tests__/context-restore.test.d.ts.map +1 -0
- package/dist/core/__tests__/context-restore.test.js +75 -0
- package/dist/core/__tests__/context-restore.test.js.map +1 -0
- package/dist/core/__tests__/convention-detector.test.d.ts +2 -0
- package/dist/core/__tests__/convention-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/convention-detector.test.js +97 -0
- package/dist/core/__tests__/convention-detector.test.js.map +1 -0
- package/dist/core/__tests__/cost-optimizer.test.d.ts +1 -0
- package/dist/core/__tests__/cost-optimizer.test.d.ts.map +1 -0
- package/dist/core/__tests__/cost-optimizer.test.js +92 -0
- package/dist/core/__tests__/cost-optimizer.test.js.map +1 -0
- package/dist/core/__tests__/cross-domain-projections.test.d.ts +2 -0
- package/dist/core/__tests__/cross-domain-projections.test.d.ts.map +1 -0
- package/dist/core/__tests__/cross-domain-projections.test.js +36 -0
- package/dist/core/__tests__/cross-domain-projections.test.js.map +1 -0
- package/dist/core/__tests__/cross-project-sync.test.d.ts +2 -0
- package/dist/core/__tests__/cross-project-sync.test.d.ts.map +1 -0
- package/dist/core/__tests__/cross-project-sync.test.js +67 -0
- package/dist/core/__tests__/cross-project-sync.test.js.map +1 -0
- package/dist/core/__tests__/dead-code-detector.test.d.ts +2 -0
- package/dist/core/__tests__/dead-code-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/dead-code-detector.test.js +41 -0
- package/dist/core/__tests__/dead-code-detector.test.js.map +1 -0
- package/dist/core/__tests__/dependency-health-checker.test.d.ts +2 -0
- package/dist/core/__tests__/dependency-health-checker.test.d.ts.map +1 -0
- package/dist/core/__tests__/dependency-health-checker.test.js +50 -0
- package/dist/core/__tests__/dependency-health-checker.test.js.map +1 -0
- package/dist/core/__tests__/duplication-detector.test.d.ts +2 -0
- package/dist/core/__tests__/duplication-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/duplication-detector.test.js +46 -0
- package/dist/core/__tests__/duplication-detector.test.js.map +1 -0
- package/dist/core/__tests__/error-predictor.test.d.ts +2 -0
- package/dist/core/__tests__/error-predictor.test.d.ts.map +1 -0
- package/dist/core/__tests__/error-predictor.test.js +65 -0
- package/dist/core/__tests__/error-predictor.test.js.map +1 -0
- package/dist/core/__tests__/explainability.test.d.ts +2 -0
- package/dist/core/__tests__/explainability.test.d.ts.map +1 -0
- package/dist/core/__tests__/explainability.test.js +112 -0
- package/dist/core/__tests__/explainability.test.js.map +1 -0
- package/dist/core/__tests__/failure-memory.test.d.ts +2 -0
- package/dist/core/__tests__/failure-memory.test.d.ts.map +1 -0
- package/dist/core/__tests__/failure-memory.test.js +124 -0
- package/dist/core/__tests__/failure-memory.test.js.map +1 -0
- package/dist/core/__tests__/git-branch-pregenerator.test.d.ts +2 -0
- package/dist/core/__tests__/git-branch-pregenerator.test.d.ts.map +1 -0
- package/dist/core/__tests__/git-branch-pregenerator.test.js +44 -0
- package/dist/core/__tests__/git-branch-pregenerator.test.js.map +1 -0
- package/dist/core/__tests__/handoff-detector.test.d.ts +2 -0
- package/dist/core/__tests__/handoff-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/handoff-detector.test.js +71 -0
- package/dist/core/__tests__/handoff-detector.test.js.map +1 -0
- package/dist/core/__tests__/interruption-recovery.test.d.ts +2 -0
- package/dist/core/__tests__/interruption-recovery.test.d.ts.map +1 -0
- package/dist/core/__tests__/interruption-recovery.test.js +66 -0
- package/dist/core/__tests__/interruption-recovery.test.js.map +1 -0
- package/dist/core/__tests__/knowledge-graph.test.d.ts +1 -0
- package/dist/core/__tests__/knowledge-graph.test.d.ts.map +1 -0
- package/dist/core/__tests__/knowledge-graph.test.js +124 -0
- package/dist/core/__tests__/knowledge-graph.test.js.map +1 -0
- package/dist/core/__tests__/knowledge-silo-detector.test.d.ts +2 -0
- package/dist/core/__tests__/knowledge-silo-detector.test.d.ts.map +1 -0
- package/dist/core/__tests__/knowledge-silo-detector.test.js +77 -0
- package/dist/core/__tests__/knowledge-silo-detector.test.js.map +1 -0
- package/dist/core/__tests__/language-switch-assistant.test.d.ts +2 -0
- package/dist/core/__tests__/language-switch-assistant.test.d.ts.map +1 -0
- package/dist/core/__tests__/language-switch-assistant.test.js +34 -0
- package/dist/core/__tests__/language-switch-assistant.test.js.map +1 -0
- package/dist/core/__tests__/marketplace.test.d.ts +2 -0
- package/dist/core/__tests__/marketplace.test.d.ts.map +1 -0
- package/dist/core/__tests__/marketplace.test.js +96 -0
- package/dist/core/__tests__/marketplace.test.js.map +1 -0
- package/dist/core/__tests__/merge-conflict-predictor.test.d.ts +2 -0
- package/dist/core/__tests__/merge-conflict-predictor.test.d.ts.map +1 -0
- package/dist/core/__tests__/merge-conflict-predictor.test.js +36 -0
- package/dist/core/__tests__/merge-conflict-predictor.test.js.map +1 -0
- package/dist/core/__tests__/next-action-predictor.test.d.ts +2 -0
- package/dist/core/__tests__/next-action-predictor.test.d.ts.map +1 -0
- package/dist/core/__tests__/next-action-predictor.test.js +57 -0
- package/dist/core/__tests__/next-action-predictor.test.js.map +1 -0
- package/dist/core/__tests__/offline-queue.test.d.ts +2 -0
- package/dist/core/__tests__/offline-queue.test.d.ts.map +1 -0
- package/dist/core/__tests__/offline-queue.test.js +84 -0
- package/dist/core/__tests__/offline-queue.test.js.map +1 -0
- package/dist/core/__tests__/organization-memory.test.d.ts +2 -0
- package/dist/core/__tests__/organization-memory.test.d.ts.map +1 -0
- package/dist/core/__tests__/organization-memory.test.js +89 -0
- package/dist/core/__tests__/organization-memory.test.js.map +1 -0
- package/dist/core/__tests__/pattern-utils.test.d.ts +2 -0
- package/dist/core/__tests__/pattern-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/pattern-utils.test.js +52 -0
- package/dist/core/__tests__/pattern-utils.test.js.map +1 -0
- package/dist/core/__tests__/performance-predictor.test.d.ts +2 -0
- package/dist/core/__tests__/performance-predictor.test.d.ts.map +1 -0
- package/dist/core/__tests__/performance-predictor.test.js +60 -0
- package/dist/core/__tests__/performance-predictor.test.js.map +1 -0
- package/dist/core/__tests__/playbook-generator.test.d.ts +2 -0
- package/dist/core/__tests__/playbook-generator.test.d.ts.map +1 -0
- package/dist/core/__tests__/playbook-generator.test.js +94 -0
- package/dist/core/__tests__/playbook-generator.test.js.map +1 -0
- package/dist/core/__tests__/pr-review-assistant.test.d.ts +2 -0
- package/dist/core/__tests__/pr-review-assistant.test.d.ts.map +1 -0
- package/dist/core/__tests__/pr-review-assistant.test.js +35 -0
- package/dist/core/__tests__/pr-review-assistant.test.js.map +1 -0
- package/dist/core/__tests__/privacy-manager.test.d.ts +2 -0
- package/dist/core/__tests__/privacy-manager.test.d.ts.map +1 -0
- package/dist/core/__tests__/privacy-manager.test.js +97 -0
- package/dist/core/__tests__/privacy-manager.test.js.map +1 -0
- package/dist/core/__tests__/project-dna.test.d.ts +2 -0
- package/dist/core/__tests__/project-dna.test.d.ts.map +1 -0
- package/dist/core/__tests__/project-dna.test.js +135 -0
- package/dist/core/__tests__/project-dna.test.js.map +1 -0
- package/dist/core/__tests__/regex-extractor.test.d.ts +2 -0
- package/dist/core/__tests__/regex-extractor.test.d.ts.map +1 -0
- package/dist/core/__tests__/regex-extractor.test.js +49 -0
- package/dist/core/__tests__/regex-extractor.test.js.map +1 -0
- package/dist/core/__tests__/reputation.test.d.ts +2 -0
- package/dist/core/__tests__/reputation.test.d.ts.map +1 -0
- package/dist/core/__tests__/reputation.test.js +100 -0
- package/dist/core/__tests__/reputation.test.js.map +1 -0
- package/dist/core/__tests__/security-predictor.test.d.ts +2 -0
- package/dist/core/__tests__/security-predictor.test.d.ts.map +1 -0
- package/dist/core/__tests__/security-predictor.test.js +60 -0
- package/dist/core/__tests__/security-predictor.test.js.map +1 -0
- package/dist/core/__tests__/signal-capture.test.d.ts +2 -0
- package/dist/core/__tests__/signal-capture.test.d.ts.map +1 -0
- package/dist/core/__tests__/signal-capture.test.js +98 -0
- package/dist/core/__tests__/signal-capture.test.js.map +1 -0
- package/dist/core/__tests__/solution-index.test.d.ts +2 -0
- package/dist/core/__tests__/solution-index.test.d.ts.map +1 -0
- package/dist/core/__tests__/solution-index.test.js +78 -0
- package/dist/core/__tests__/solution-index.test.js.map +1 -0
- package/dist/core/__tests__/standup-generator.test.d.ts +2 -0
- package/dist/core/__tests__/standup-generator.test.d.ts.map +1 -0
- package/dist/core/__tests__/standup-generator.test.js +46 -0
- package/dist/core/__tests__/standup-generator.test.js.map +1 -0
- package/dist/core/__tests__/team-composer.test.d.ts +2 -0
- package/dist/core/__tests__/team-composer.test.d.ts.map +1 -0
- package/dist/core/__tests__/team-composer.test.js +113 -0
- package/dist/core/__tests__/team-composer.test.js.map +1 -0
- package/dist/core/__tests__/test-anticipator.test.d.ts +2 -0
- package/dist/core/__tests__/test-anticipator.test.d.ts.map +1 -0
- package/dist/core/__tests__/test-anticipator.test.js +41 -0
- package/dist/core/__tests__/test-anticipator.test.js.map +1 -0
- package/dist/core/__tests__/time-saved.test.d.ts +1 -0
- package/dist/core/__tests__/time-saved.test.d.ts.map +1 -0
- package/dist/core/__tests__/time-saved.test.js +93 -0
- package/dist/core/__tests__/time-saved.test.js.map +1 -0
- package/dist/core/__tests__/validation-run.test.d.ts +7 -0
- package/dist/core/__tests__/validation-run.test.d.ts.map +1 -0
- package/dist/core/__tests__/validation-run.test.js +510 -0
- package/dist/core/__tests__/validation-run.test.js.map +1 -0
- package/dist/core/__tests__/workflow-outcome-graph.test.d.ts +2 -0
- package/dist/core/__tests__/workflow-outcome-graph.test.d.ts.map +1 -0
- package/dist/core/__tests__/workflow-outcome-graph.test.js +89 -0
- package/dist/core/__tests__/workflow-outcome-graph.test.js.map +1 -0
- package/dist/core/ai-memory.d.ts +84 -0
- package/dist/core/ai-memory.d.ts.map +1 -0
- package/dist/core/ai-memory.js +238 -0
- package/dist/core/ai-memory.js.map +1 -0
- package/dist/core/architecture-engine.d.ts +104 -0
- package/dist/core/architecture-engine.d.ts.map +1 -0
- package/dist/core/architecture-engine.js +216 -0
- package/dist/core/architecture-engine.js.map +1 -0
- package/dist/core/ast-differ.d.ts +15 -0
- package/dist/core/ast-differ.d.ts.map +1 -0
- package/dist/core/ast-differ.js +528 -0
- package/dist/core/ast-differ.js.map +1 -0
- package/dist/core/ast-extractor.d.ts +1 -1
- package/dist/core/ast-extractor.d.ts.map +1 -1
- package/dist/core/ast-extractor.js +7 -5
- package/dist/core/ast-extractor.js.map +1 -1
- package/dist/core/backend-engine.d.ts +40 -0
- package/dist/core/backend-engine.d.ts.map +1 -0
- package/dist/core/backend-engine.js +131 -0
- package/dist/core/backend-engine.js.map +1 -0
- package/dist/core/blind-spot-engine.d.ts +29 -0
- package/dist/core/blind-spot-engine.d.ts.map +1 -0
- package/dist/core/blind-spot-engine.js +579 -0
- package/dist/core/blind-spot-engine.js.map +1 -0
- package/dist/core/build-failure-predictor.d.ts +4 -0
- package/dist/core/build-failure-predictor.d.ts.map +1 -1
- package/dist/core/build-failure-predictor.js +111 -58
- package/dist/core/build-failure-predictor.js.map +1 -1
- package/dist/core/cell-store.d.ts +72 -0
- package/dist/core/cell-store.d.ts.map +1 -0
- package/dist/core/cell-store.js +171 -0
- package/dist/core/cell-store.js.map +1 -0
- package/dist/core/community-advanced-engine.d.ts +30 -0
- package/dist/core/community-advanced-engine.d.ts.map +1 -0
- package/dist/core/community-advanced-engine.js +103 -0
- package/dist/core/community-advanced-engine.js.map +1 -0
- package/dist/core/community-engine.d.ts +62 -0
- package/dist/core/community-engine.d.ts.map +1 -0
- package/dist/core/community-engine.js +194 -0
- package/dist/core/community-engine.js.map +1 -0
- package/dist/core/community-full.d.ts +2 -3
- package/dist/core/community-full.d.ts.map +1 -1
- package/dist/core/community-full.js +2 -5
- package/dist/core/community-full.js.map +1 -1
- package/dist/core/community-intelligence.d.ts +169 -0
- package/dist/core/community-intelligence.d.ts.map +1 -0
- package/dist/core/community-intelligence.js +527 -0
- package/dist/core/community-intelligence.js.map +1 -0
- package/dist/core/community-live.d.ts +1 -0
- package/dist/core/community-live.d.ts.map +1 -1
- package/dist/core/community-live.js +9 -6
- package/dist/core/community-live.js.map +1 -1
- package/dist/core/community-prior.d.ts +1 -0
- package/dist/core/community-prior.d.ts.map +1 -1
- package/dist/core/community-prior.js +18 -10
- package/dist/core/community-prior.js.map +1 -1
- package/dist/core/confidence-engine.d.ts +2 -3
- package/dist/core/confidence-engine.d.ts.map +1 -1
- package/dist/core/confidence-engine.js +29 -32
- package/dist/core/confidence-engine.js.map +1 -1
- package/dist/core/conflict-detector.js +1 -1
- package/dist/core/conflict-detector.js.map +1 -1
- package/dist/core/convention-detector.d.ts +37 -0
- package/dist/core/convention-detector.d.ts.map +1 -0
- package/dist/core/convention-detector.js +189 -0
- package/dist/core/convention-detector.js.map +1 -0
- package/dist/core/cost-optimizer.d.ts +78 -0
- package/dist/core/cost-optimizer.d.ts.map +1 -0
- package/dist/core/cost-optimizer.js +257 -0
- package/dist/core/cost-optimizer.js.map +1 -0
- package/dist/core/cross-domain-projections.js +2 -2
- package/dist/core/cross-layer-intelligence.d.ts +375 -0
- package/dist/core/cross-layer-intelligence.d.ts.map +1 -0
- package/dist/core/cross-layer-intelligence.js +690 -0
- package/dist/core/cross-layer-intelligence.js.map +1 -0
- package/dist/core/developer-profile.d.ts +6 -0
- package/dist/core/developer-profile.d.ts.map +1 -0
- package/dist/core/developer-profile.js +78 -0
- package/dist/core/developer-profile.js.map +1 -0
- package/dist/core/error-predictor.d.ts +5 -2
- package/dist/core/error-predictor.d.ts.map +1 -1
- package/dist/core/error-predictor.js +124 -40
- package/dist/core/error-predictor.js.map +1 -1
- package/dist/core/explainability.d.ts +33 -0
- package/dist/core/explainability.d.ts.map +1 -0
- package/dist/core/explainability.js +131 -0
- package/dist/core/explainability.js.map +1 -0
- package/dist/core/extraction-cascade.d.ts +19 -5
- package/dist/core/extraction-cascade.d.ts.map +1 -1
- package/dist/core/extraction-cascade.js +86 -15
- package/dist/core/extraction-cascade.js.map +1 -1
- package/dist/core/failure-memory.d.ts +38 -0
- package/dist/core/failure-memory.d.ts.map +1 -0
- package/dist/core/failure-memory.js +113 -0
- package/dist/core/failure-memory.js.map +1 -0
- package/dist/core/frontend-engine.d.ts +40 -0
- package/dist/core/frontend-engine.d.ts.map +1 -0
- package/dist/core/frontend-engine.js +129 -0
- package/dist/core/frontend-engine.js.map +1 -0
- package/dist/core/go-extractor.d.ts +5 -0
- package/dist/core/go-extractor.d.ts.map +1 -0
- package/dist/core/go-extractor.js +68 -0
- package/dist/core/go-extractor.js.map +1 -0
- package/dist/core/identity-resolver.d.ts.map +1 -1
- package/dist/core/identity-resolver.js +16 -31
- package/dist/core/identity-resolver.js.map +1 -1
- package/dist/core/knowledge-graph-engine.d.ts +62 -0
- package/dist/core/knowledge-graph-engine.d.ts.map +1 -0
- package/dist/core/knowledge-graph-engine.js +176 -0
- package/dist/core/knowledge-graph-engine.js.map +1 -0
- package/dist/core/knowledge-graph.d.ts +229 -0
- package/dist/core/knowledge-graph.d.ts.map +1 -0
- package/dist/core/knowledge-graph.js +713 -0
- package/dist/core/knowledge-graph.js.map +1 -0
- package/dist/core/language-switch-assistant.d.ts.map +1 -1
- package/dist/core/language-switch-assistant.js +4 -1
- package/dist/core/language-switch-assistant.js.map +1 -1
- package/dist/core/learning-layer.d.ts +11 -0
- package/dist/core/learning-layer.d.ts.map +1 -0
- package/dist/core/learning-layer.js +25 -0
- package/dist/core/learning-layer.js.map +1 -0
- package/dist/core/marketplace.d.ts +43 -0
- package/dist/core/marketplace.d.ts.map +1 -0
- package/dist/core/marketplace.js +133 -0
- package/dist/core/marketplace.js.map +1 -0
- package/dist/core/memory-store.d.ts +59 -0
- package/dist/core/memory-store.d.ts.map +1 -0
- package/dist/core/memory-store.js +151 -0
- package/dist/core/memory-store.js.map +1 -0
- package/dist/core/naming-engine.d.ts +43 -0
- package/dist/core/naming-engine.d.ts.map +1 -0
- package/dist/core/naming-engine.js +120 -0
- package/dist/core/naming-engine.js.map +1 -0
- package/dist/core/org-intelligence.d.ts +151 -0
- package/dist/core/org-intelligence.d.ts.map +1 -0
- package/dist/core/org-intelligence.js +490 -0
- package/dist/core/org-intelligence.js.map +1 -0
- package/dist/core/organization-memory.d.ts +34 -0
- package/dist/core/organization-memory.d.ts.map +1 -0
- package/dist/core/organization-memory.js +148 -0
- package/dist/core/organization-memory.js.map +1 -0
- package/dist/core/outcome-engine.d.ts +21 -0
- package/dist/core/outcome-engine.d.ts.map +1 -0
- package/dist/core/outcome-engine.js +220 -0
- package/dist/core/outcome-engine.js.map +1 -0
- package/dist/core/outcome-recorder.d.ts +34 -0
- package/dist/core/outcome-recorder.d.ts.map +1 -0
- package/dist/core/outcome-recorder.js +109 -0
- package/dist/core/outcome-recorder.js.map +1 -0
- package/dist/core/outcome-store.d.ts +21 -0
- package/dist/core/outcome-store.d.ts.map +1 -0
- package/dist/core/outcome-store.js +120 -0
- package/dist/core/outcome-store.js.map +1 -0
- package/dist/core/outcome-types.d.ts +64 -0
- package/dist/core/outcome-types.d.ts.map +1 -0
- package/dist/core/outcome-types.js +20 -0
- package/dist/core/outcome-types.js.map +1 -0
- package/dist/core/pattern-classifier.d.ts +11 -0
- package/dist/core/pattern-classifier.d.ts.map +1 -0
- package/dist/core/pattern-classifier.js +82 -0
- package/dist/core/pattern-classifier.js.map +1 -0
- package/dist/core/pattern-lifecycle.d.ts +8 -0
- package/dist/core/pattern-lifecycle.d.ts.map +1 -0
- package/dist/core/pattern-lifecycle.js +25 -0
- package/dist/core/pattern-lifecycle.js.map +1 -0
- package/dist/core/pattern-quality.d.ts +6 -0
- package/dist/core/pattern-quality.d.ts.map +1 -0
- package/dist/core/pattern-quality.js +45 -0
- package/dist/core/pattern-quality.js.map +1 -0
- package/dist/core/pattern-ranking.d.ts +8 -0
- package/dist/core/pattern-ranking.d.ts.map +1 -0
- package/dist/core/pattern-ranking.js +40 -0
- package/dist/core/pattern-ranking.js.map +1 -0
- package/dist/core/pattern-relationships.d.ts +16 -0
- package/dist/core/pattern-relationships.d.ts.map +1 -0
- package/dist/core/pattern-relationships.js +66 -0
- package/dist/core/pattern-relationships.js.map +1 -0
- package/dist/core/pattern-search.d.ts +25 -0
- package/dist/core/pattern-search.d.ts.map +1 -0
- package/dist/core/pattern-search.js +82 -0
- package/dist/core/pattern-search.js.map +1 -0
- package/dist/core/pattern-store.d.ts +18 -3
- package/dist/core/pattern-store.d.ts.map +1 -1
- package/dist/core/pattern-store.js +155 -54
- package/dist/core/pattern-store.js.map +1 -1
- package/dist/core/{enterprise-features.d.ts → pattern-utils.d.ts} +2 -4
- package/dist/core/pattern-utils.d.ts.map +1 -0
- package/dist/core/{enterprise-features.js → pattern-utils.js} +4 -24
- package/dist/core/pattern-utils.js.map +1 -0
- package/dist/core/pattern-validator.d.ts +14 -0
- package/dist/core/pattern-validator.d.ts.map +1 -0
- package/dist/core/pattern-validator.js +47 -0
- package/dist/core/pattern-validator.js.map +1 -0
- package/dist/core/performance-predictor.d.ts +4 -0
- package/dist/core/performance-predictor.d.ts.map +1 -1
- package/dist/core/performance-predictor.js +143 -38
- package/dist/core/performance-predictor.js.map +1 -1
- package/dist/core/platt-calibration.d.ts.map +1 -1
- package/dist/core/platt-calibration.js +5 -3
- package/dist/core/platt-calibration.js.map +1 -1
- package/dist/core/playbook-generator.d.ts +21 -0
- package/dist/core/playbook-generator.d.ts.map +1 -0
- package/dist/core/playbook-generator.js +161 -0
- package/dist/core/playbook-generator.js.map +1 -0
- package/dist/core/privacy-manager.d.ts +43 -0
- package/dist/core/privacy-manager.d.ts.map +1 -0
- package/dist/core/privacy-manager.js +131 -0
- package/dist/core/privacy-manager.js.map +1 -0
- package/dist/core/productivity-engine.d.ts +57 -0
- package/dist/core/productivity-engine.d.ts.map +1 -0
- package/dist/core/productivity-engine.js +138 -0
- package/dist/core/productivity-engine.js.map +1 -0
- package/dist/core/project-dna-types.d.ts +150 -0
- package/dist/core/project-dna-types.d.ts.map +1 -0
- package/dist/core/project-dna-types.js +3 -0
- package/dist/core/project-dna-types.js.map +1 -0
- package/dist/core/project-dna.d.ts +122 -0
- package/dist/core/project-dna.d.ts.map +1 -0
- package/dist/core/project-dna.js +922 -0
- package/dist/core/project-dna.js.map +1 -0
- package/dist/core/python-extractor.d.ts +5 -0
- package/dist/core/python-extractor.d.ts.map +1 -0
- package/dist/core/python-extractor.js +68 -0
- package/dist/core/python-extractor.js.map +1 -0
- package/dist/core/realtime-guardian.d.ts.map +1 -1
- package/dist/core/realtime-guardian.js +1 -3
- package/dist/core/realtime-guardian.js.map +1 -1
- package/dist/core/recommendation-engine.d.ts +9 -0
- package/dist/core/recommendation-engine.d.ts.map +1 -0
- package/dist/core/recommendation-engine.js +152 -0
- package/dist/core/recommendation-engine.js.map +1 -0
- package/dist/core/recommendation-store.d.ts +21 -0
- package/dist/core/recommendation-store.d.ts.map +1 -0
- package/dist/core/recommendation-store.js +125 -0
- package/dist/core/recommendation-store.js.map +1 -0
- package/dist/core/recommendation-types.d.ts +54 -0
- package/dist/core/recommendation-types.d.ts.map +1 -0
- package/dist/core/recommendation-types.js +3 -0
- package/dist/core/recommendation-types.js.map +1 -0
- package/dist/core/regex-extractor.js +1 -1
- package/dist/core/regex-extractor.js.map +1 -1
- package/dist/core/reputation.d.ts +42 -0
- package/dist/core/reputation.d.ts.map +1 -0
- package/dist/core/reputation.js +173 -0
- package/dist/core/reputation.js.map +1 -0
- package/dist/core/scale-tester.d.ts +2 -2
- package/dist/core/scale-tester.d.ts.map +1 -1
- package/dist/core/scale-tester.js +12 -1
- package/dist/core/scale-tester.js.map +1 -1
- package/dist/core/search-engine.d.ts +37 -0
- package/dist/core/search-engine.d.ts.map +1 -0
- package/dist/core/search-engine.js +223 -0
- package/dist/core/search-engine.js.map +1 -0
- package/dist/core/security-predictor.d.ts +2 -1
- package/dist/core/security-predictor.d.ts.map +1 -1
- package/dist/core/security-predictor.js +80 -30
- package/dist/core/security-predictor.js.map +1 -1
- package/dist/core/session-recovery.js +8 -8
- package/dist/core/session-recovery.js.map +1 -1
- package/dist/core/similarity-engine.d.ts +8 -0
- package/dist/core/similarity-engine.d.ts.map +1 -0
- package/dist/core/similarity-engine.js +74 -0
- package/dist/core/similarity-engine.js.map +1 -0
- package/dist/core/structure-engine.d.ts +34 -0
- package/dist/core/structure-engine.d.ts.map +1 -0
- package/dist/core/structure-engine.js +114 -0
- package/dist/core/structure-engine.js.map +1 -0
- package/dist/core/syntax-engine.d.ts +101 -0
- package/dist/core/syntax-engine.d.ts.map +1 -0
- package/dist/core/syntax-engine.js +342 -0
- package/dist/core/syntax-engine.js.map +1 -0
- package/dist/core/team-advanced-engine.d.ts +19 -0
- package/dist/core/team-advanced-engine.d.ts.map +1 -0
- package/dist/core/team-advanced-engine.js +91 -0
- package/dist/core/team-advanced-engine.js.map +1 -0
- package/dist/core/team-engine.d.ts +59 -0
- package/dist/core/team-engine.d.ts.map +1 -0
- package/dist/core/team-engine.js +141 -0
- package/dist/core/team-engine.js.map +1 -0
- package/dist/core/time-saved.d.ts +51 -0
- package/dist/core/time-saved.d.ts.map +1 -0
- package/dist/core/time-saved.js +97 -0
- package/dist/core/time-saved.js.map +1 -0
- package/dist/core/workflow-outcome-graph.d.ts +46 -0
- package/dist/core/workflow-outcome-graph.d.ts.map +1 -0
- package/dist/core/workflow-outcome-graph.js +168 -0
- package/dist/core/workflow-outcome-graph.js.map +1 -0
- package/dist/core/workflow-tracker.d.ts +36 -0
- package/dist/core/workflow-tracker.d.ts.map +1 -0
- package/dist/core/workflow-tracker.js +99 -0
- package/dist/core/workflow-tracker.js.map +1 -0
- package/dist/core/ws-client.d.ts +24 -0
- package/dist/core/ws-client.d.ts.map +1 -0
- package/dist/core/ws-client.js +203 -0
- package/dist/core/ws-client.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +9 -10
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/server.d.ts +4 -2
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +886 -73
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/watchdog.js +2 -1
- package/dist/daemon/watchdog.js.map +1 -1
- package/dist/index.d.ts +21 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -4
- package/dist/index.js.map +1 -1
- package/dist/store.d.ts +4 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +47 -0
- package/dist/store.js.map +1 -0
- package/dist/types.d.ts +60 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +13 -2
- package/dist/types.js.map +1 -1
- package/dist/validation/quick-run.d.ts +7 -0
- package/dist/validation/quick-run.d.ts.map +1 -0
- package/dist/validation/quick-run.js +404 -0
- package/dist/validation/quick-run.js.map +1 -0
- package/package.json +87 -53
- package/CHANGELOG.md +0 -32
- package/CONTRIBUTING.md +0 -60
- package/dist/core/cell-pro.d.ts +0 -28
- package/dist/core/cell-pro.d.ts.map +0 -1
- package/dist/core/cell-pro.js +0 -70
- package/dist/core/cell-pro.js.map +0 -1
- package/dist/core/enterprise-features.d.ts.map +0 -1
- package/dist/core/enterprise-features.js.map +0 -1
- package/dist/core/enterprise.d.ts +0 -27
- package/dist/core/enterprise.d.ts.map +0 -1
- package/dist/core/enterprise.js +0 -41
- package/dist/core/enterprise.js.map +0 -1
- package/extensions/jetbrains/plugin.json +0 -9
- package/extensions/shell/copilot-sync.js +0 -59
- package/extensions/shell/install.sh +0 -38
- package/extensions/shell/watcher.js +0 -113
- package/extensions/vscode/.vscodeignore +0 -5
- package/extensions/vscode/dist/daemon-client.js +0 -94
- package/extensions/vscode/dist/diff-tracker.js +0 -94
- package/extensions/vscode/dist/extension.js +0 -100
- package/extensions/vscode/dist/status-bar.js +0 -70
- package/extensions/vscode/package-lock.json +0 -40
- package/extensions/vscode/package.json +0 -27
- package/packages/mcp-server/dist/server.d.ts +0 -2
- package/packages/mcp-server/dist/server.js +0 -213
- package/packages/mcp-server/package-lock.json +0 -970
- package/packages/mcp-server/package.json +0 -19
|
@@ -0,0 +1,783 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cross_layer_intelligence_1 = require("../cross-layer-intelligence");
|
|
4
|
+
let hvPass = 0;
|
|
5
|
+
let hvFail = 0;
|
|
6
|
+
const hvErrors = [];
|
|
7
|
+
function check(cond, msg) {
|
|
8
|
+
if (cond) {
|
|
9
|
+
hvPass++;
|
|
10
|
+
console.log(` ✅ ${msg}`);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
hvFail++;
|
|
14
|
+
const m = ` ❌ FAIL: ${msg}`;
|
|
15
|
+
console.log(m);
|
|
16
|
+
hvErrors.push(m);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function gt(a, b, msg) {
|
|
20
|
+
if (a > b) {
|
|
21
|
+
hvPass++;
|
|
22
|
+
console.log(` ✅ ${msg} (${a} > ${b})`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
hvFail++;
|
|
26
|
+
const m = ` ❌ FAIL: ${msg} — ${a} not > ${b}`;
|
|
27
|
+
console.log(m);
|
|
28
|
+
hvErrors.push(m);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function lt(a, b, msg) {
|
|
32
|
+
if (a < b) {
|
|
33
|
+
hvPass++;
|
|
34
|
+
console.log(` ✅ ${msg} (${a} < ${b})`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
hvFail++;
|
|
38
|
+
const m = ` ❌ FAIL: ${msg} — ${a} not < ${b}`;
|
|
39
|
+
console.log(m);
|
|
40
|
+
hvErrors.push(m);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function gte(a, b, msg) {
|
|
44
|
+
if (a >= b) {
|
|
45
|
+
hvPass++;
|
|
46
|
+
console.log(` ✅ ${msg} (${a} >= ${b})`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
hvFail++;
|
|
50
|
+
const m = ` ❌ FAIL: ${msg} — ${a} not >= ${b}`;
|
|
51
|
+
console.log(m);
|
|
52
|
+
hvErrors.push(m);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function neq(a, b, msg) {
|
|
56
|
+
if (a !== b) {
|
|
57
|
+
hvPass++;
|
|
58
|
+
console.log(` ✅ ${msg}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
hvFail++;
|
|
62
|
+
const m = ` ❌ FAIL: ${msg} — values are identical`;
|
|
63
|
+
console.log(m);
|
|
64
|
+
hvErrors.push(m);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
describe('CHAPTER 9 — HOSTILE VERIFICATION', () => {
|
|
68
|
+
beforeAll(() => { (0, cross_layer_intelligence_1.resetCrossLayer)(); });
|
|
69
|
+
afterAll(() => {
|
|
70
|
+
console.log('\n' + '='.repeat(60));
|
|
71
|
+
console.log('HOSTILE VERDICT');
|
|
72
|
+
console.log('='.repeat(60));
|
|
73
|
+
console.log(` Passed: ${hvPass}`);
|
|
74
|
+
console.log(` Failed: ${hvFail}`);
|
|
75
|
+
console.log(` Total: ${hvPass + hvFail}\n`);
|
|
76
|
+
if (hvFail === 0)
|
|
77
|
+
console.log(' 🔒 CHAPTER 9 — PASSED');
|
|
78
|
+
else {
|
|
79
|
+
console.log(` ❌ ${hvFail} FAILURES:`);
|
|
80
|
+
for (const e of hvErrors)
|
|
81
|
+
console.log(` ${e}`);
|
|
82
|
+
}
|
|
83
|
+
(0, cross_layer_intelligence_1.resetCrossLayer)();
|
|
84
|
+
});
|
|
85
|
+
// ===================================================================
|
|
86
|
+
// T1: 100 devs, 10 teams, 5 orgs — full cross-layer pipeline
|
|
87
|
+
// ===================================================================
|
|
88
|
+
test('T1: 100 devs, 10 teams, 5 orgs — full pipeline', () => {
|
|
89
|
+
console.log('\n--- T1: 100 devs, 10 teams, 5 orgs ---\n');
|
|
90
|
+
const start = Date.now();
|
|
91
|
+
// Build Unified Contexts for 100 developers across 5 orgs
|
|
92
|
+
const orgs = ['org-alpha', 'org-beta', 'org-gamma', 'org-delta', 'org-epsilon'];
|
|
93
|
+
const teams = ['team-frontend', 'team-backend', 'team-devops', 'team-data', 'team-mobile', 'team-security', 'team-qa', 'team-arch', 'team-ml', 'team-platform'];
|
|
94
|
+
const langs = ['typescript', 'python', 'go', 'rust', 'java', 'kotlin', 'swift', 'ruby'];
|
|
95
|
+
const cats = ['testing', 'data', 'devops', 'ui', 'async', 'security', 'api', 'performance'];
|
|
96
|
+
const contexts = [];
|
|
97
|
+
for (let d = 0; d < 100; d++) {
|
|
98
|
+
const orgIdx = d % 5;
|
|
99
|
+
const teamIdx = d % 10;
|
|
100
|
+
const devLangs = [langs[Math.floor(Math.random() * langs.length)]];
|
|
101
|
+
if (Math.random() > 0.5)
|
|
102
|
+
devLangs.push(langs[Math.floor(Math.random() * langs.length)]);
|
|
103
|
+
const devCats = [cats[Math.floor(Math.random() * cats.length)]];
|
|
104
|
+
if (Math.random() > 0.5)
|
|
105
|
+
devCats.push(cats[Math.floor(Math.random() * cats.length)]);
|
|
106
|
+
const ctx = (0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
107
|
+
developerId: `dev_${d}`,
|
|
108
|
+
personal: {
|
|
109
|
+
languages: devLangs,
|
|
110
|
+
topCategories: devCats,
|
|
111
|
+
patternsUsed: Math.floor(Math.random() * 100) + 5,
|
|
112
|
+
successRate: 0.3 + Math.random() * 0.6,
|
|
113
|
+
avgConfidence: 0.4 + Math.random() * 0.5,
|
|
114
|
+
avgHealth: 0.3 + Math.random() * 0.6,
|
|
115
|
+
},
|
|
116
|
+
project: {
|
|
117
|
+
projectId: `proj_${orgIdx}_${teamIdx}`,
|
|
118
|
+
primaryLanguage: devLangs[0],
|
|
119
|
+
framework: Math.random() > 0.5 ? 'react' : Math.random() > 0.5 ? 'express' : null,
|
|
120
|
+
architecture: ['microservices', 'monolith', 'layered', 'event-driven'][Math.floor(Math.random() * 4)],
|
|
121
|
+
complexity: ['low', 'medium', 'high'][Math.floor(Math.random() * 3)],
|
|
122
|
+
maturity: ['new', 'developing', 'mature', 'legacy'][Math.floor(Math.random() * 4)],
|
|
123
|
+
testingStyle: ['tdd', 'integration', 'e2e', 'minimal'][Math.floor(Math.random() * 4)],
|
|
124
|
+
riskScore: Math.floor(Math.random() * 60),
|
|
125
|
+
developmentStyle: ['agile', 'waterfall', 'hybrid'][Math.floor(Math.random() * 3)],
|
|
126
|
+
},
|
|
127
|
+
team: {
|
|
128
|
+
teamId: teams[teamIdx],
|
|
129
|
+
teamName: `Team-${teams[teamIdx]}`,
|
|
130
|
+
memberCount: 8 + Math.floor(Math.random() * 12),
|
|
131
|
+
successRate: 0.4 + Math.random() * 0.5,
|
|
132
|
+
topLanguages: [langs[Math.floor(Math.random() * langs.length)]],
|
|
133
|
+
topCategories: [cats[Math.floor(Math.random() * cats.length)]],
|
|
134
|
+
style: ['quality-driven', 'experiment-driven', 'speed-driven', 'stability-driven'][Math.floor(Math.random() * 4)],
|
|
135
|
+
riskLevel: ['low', 'medium', 'high'][Math.floor(Math.random() * 3)],
|
|
136
|
+
riskScore: Math.floor(Math.random() * 60),
|
|
137
|
+
testingAdoption: Math.floor(Math.random() * 80) + 10,
|
|
138
|
+
},
|
|
139
|
+
org: {
|
|
140
|
+
orgId: orgs[orgIdx],
|
|
141
|
+
orgName: `Org-${orgs[orgIdx]}`,
|
|
142
|
+
teamCount: 10,
|
|
143
|
+
memberCount: 20 + Math.floor(Math.random() * 30),
|
|
144
|
+
avgSuccessRate: 0.5 + Math.random() * 0.3,
|
|
145
|
+
totalOutcomes: 500 + Math.floor(Math.random() * 2000),
|
|
146
|
+
},
|
|
147
|
+
community: {
|
|
148
|
+
totalPatterns: 500,
|
|
149
|
+
totalDevs: 5000,
|
|
150
|
+
totalOutcomes: 50000,
|
|
151
|
+
avgSuccessRate: 0.65,
|
|
152
|
+
topCategories: ['testing', 'data', 'devops', 'ui'],
|
|
153
|
+
patternRankings: { 'testing_p1': 1, 'data_p1': 2, 'devops_p1': 3 },
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
contexts.push(ctx);
|
|
157
|
+
}
|
|
158
|
+
const buildTime = Date.now() - start;
|
|
159
|
+
console.log(` Built ${contexts.length} contexts in ${buildTime}ms`);
|
|
160
|
+
lt(buildTime, 10000, `Build 100 contexts < 10s (was ${buildTime}ms)`);
|
|
161
|
+
check(contexts.every(c => c.developerId.startsWith('dev_')), 'All contexts have developer IDs');
|
|
162
|
+
check(contexts.every(c => c.personal !== null), 'All contexts have personal data');
|
|
163
|
+
check(contexts.every(c => c.project !== null), 'All contexts have project data');
|
|
164
|
+
check(contexts.every(c => c.team !== null), 'All contexts have team data');
|
|
165
|
+
check(contexts.every(c => c.org !== null), 'All contexts have org data');
|
|
166
|
+
check(contexts.every(c => c.community !== null), 'All contexts have community data');
|
|
167
|
+
check(contexts.every(c => c.combined.primaryLanguages.length > 0), 'All contexts have primary languages');
|
|
168
|
+
// Compute Intelligence Scores
|
|
169
|
+
const scores = contexts.map(ctx => (0, cross_layer_intelligence_1.computeIntelligenceScore)({
|
|
170
|
+
personalSuccessRate: ctx.personal?.successRate,
|
|
171
|
+
personalConfidence: ctx.personal?.avgConfidence,
|
|
172
|
+
personalPatternsUsed: ctx.personal?.patternsUsed,
|
|
173
|
+
orgTeamSuccessRate: ctx.team?.successRate,
|
|
174
|
+
orgTeamRiskScore: ctx.team?.riskScore,
|
|
175
|
+
dnaRiskScore: ctx.project?.riskScore,
|
|
176
|
+
riskLevel: ctx.team?.riskLevel,
|
|
177
|
+
communityReputation: Math.random() * 0.8,
|
|
178
|
+
}));
|
|
179
|
+
console.log(` Intelligence scores computed for ${scores.length} devs`);
|
|
180
|
+
check(scores.every(s => s.overallScore >= 0 && s.overallScore <= 100), 'All scores in 0-100 range');
|
|
181
|
+
check(scores.every(s => Object.keys(s.dimensions).length === 7), 'All scores have 7 dimensions');
|
|
182
|
+
check(scores.every(s => s.sampleSize >= 5), 'All scores have sample size >= 5');
|
|
183
|
+
// Generate evidence for 100 patterns
|
|
184
|
+
const evidences = contexts.slice(0, 100).map((ctx, i) => (0, cross_layer_intelligence_1.generateEvidence)({
|
|
185
|
+
patternId: `pattern_${i}`,
|
|
186
|
+
category: cats[i % cats.length],
|
|
187
|
+
personalSuccessRate: ctx.personal?.successRate,
|
|
188
|
+
personalSampleSize: ctx.personal?.patternsUsed,
|
|
189
|
+
communitySuccessRate: 0.6 + Math.random() * 0.3,
|
|
190
|
+
communitySampleSize: 100 + Math.floor(Math.random() * 500),
|
|
191
|
+
orgSuccessRate: ctx.team?.successRate,
|
|
192
|
+
orgSampleSize: ctx.org?.totalOutcomes,
|
|
193
|
+
graphInfluenceScore: Math.random() * 0.8,
|
|
194
|
+
dnaSimilarity: Math.random() * 0.7,
|
|
195
|
+
outcomeConfidence: Math.random() * 0.9,
|
|
196
|
+
}));
|
|
197
|
+
console.log(` Generated ${evidences.length} evidence sets`);
|
|
198
|
+
check(evidences.every(e => e.evidence.length >= 2), 'All evidence sets have >= 2 points');
|
|
199
|
+
check(evidences.some(e => e.evidence.some(ev => ev.type === 'personal')), 'Has personal evidence');
|
|
200
|
+
check(evidences.some(e => e.evidence.some(ev => ev.type === 'community')), 'Has community evidence');
|
|
201
|
+
const allTime = Date.now() - start;
|
|
202
|
+
console.log(` Total pipeline time: ${allTime}ms`);
|
|
203
|
+
lt(allTime, 15000, `Full pipeline < 15s (was ${allTime}ms)`);
|
|
204
|
+
});
|
|
205
|
+
// ===================================================================
|
|
206
|
+
// T2: 1000 devs, 50 teams, 20 orgs — scale
|
|
207
|
+
// ===================================================================
|
|
208
|
+
test('T2: 1000 devs scale test', () => {
|
|
209
|
+
console.log('\n--- T2: 1000 devs scale ---\n');
|
|
210
|
+
const start = Date.now();
|
|
211
|
+
for (let d = 0; d < 1000; d++) {
|
|
212
|
+
(0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
213
|
+
developerId: `scale_dev_${d}`,
|
|
214
|
+
personal: {
|
|
215
|
+
languages: ['typescript'],
|
|
216
|
+
topCategories: ['testing'],
|
|
217
|
+
patternsUsed: 20 + (d % 50),
|
|
218
|
+
successRate: 0.5 + (d % 100) * 0.003,
|
|
219
|
+
},
|
|
220
|
+
project: {
|
|
221
|
+
projectId: `scale_proj_${d % 50}`,
|
|
222
|
+
primaryLanguage: 'typescript',
|
|
223
|
+
architecture: 'microservices',
|
|
224
|
+
complexity: 'medium',
|
|
225
|
+
testingStyle: 'integration',
|
|
226
|
+
},
|
|
227
|
+
team: {
|
|
228
|
+
teamId: `scale_team_${d % 50}`,
|
|
229
|
+
teamName: `Scale-Team-${d % 50}`,
|
|
230
|
+
memberCount: 20,
|
|
231
|
+
successRate: 0.6,
|
|
232
|
+
testingAdoption: 50,
|
|
233
|
+
},
|
|
234
|
+
org: {
|
|
235
|
+
orgId: `scale_org_${d % 20}`,
|
|
236
|
+
orgName: `Scale-Org-${d % 20}`,
|
|
237
|
+
teamCount: 50,
|
|
238
|
+
memberCount: 1000,
|
|
239
|
+
avgSuccessRate: 0.6,
|
|
240
|
+
totalOutcomes: 10000,
|
|
241
|
+
},
|
|
242
|
+
community: {
|
|
243
|
+
totalPatterns: 500,
|
|
244
|
+
totalDevs: 5000,
|
|
245
|
+
totalOutcomes: 50000,
|
|
246
|
+
avgSuccessRate: 0.65,
|
|
247
|
+
topCategories: ['testing', 'data'],
|
|
248
|
+
},
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
const elapsed = Date.now() - start;
|
|
252
|
+
console.log(` Built 1000 contexts in ${elapsed}ms`);
|
|
253
|
+
lt(elapsed, 30000, `Build 1000 contexts < 30s (was ${elapsed}ms)`);
|
|
254
|
+
// Intelligence scores at scale
|
|
255
|
+
const sStart = Date.now();
|
|
256
|
+
for (let d = 0; d < 1000; d++) {
|
|
257
|
+
(0, cross_layer_intelligence_1.computeIntelligenceScore)({
|
|
258
|
+
personalSuccessRate: 0.5 + (d % 100) * 0.003,
|
|
259
|
+
personalPatternsUsed: 20 + (d % 50),
|
|
260
|
+
communityReputation: (d % 100) * 0.008,
|
|
261
|
+
orgTeamSuccessRate: 0.6,
|
|
262
|
+
riskLevel: d % 3 === 0 ? 'low' : d % 3 === 1 ? 'medium' : 'high',
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
const sTime = Date.now() - sStart;
|
|
266
|
+
console.log(` 1000 scores in ${sTime}ms`);
|
|
267
|
+
lt(sTime, 5000, `1000 scores < 5s (was ${sTime}ms)`);
|
|
268
|
+
});
|
|
269
|
+
// ===================================================================
|
|
270
|
+
// T3: Unified context — different combos, cached context
|
|
271
|
+
// ===================================================================
|
|
272
|
+
test('T3: Unified context combos and caching', () => {
|
|
273
|
+
console.log('\n--- T3: Context combos ---\n');
|
|
274
|
+
// Developer only — no org, no community
|
|
275
|
+
const soloCtx = (0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
276
|
+
developerId: 'solo_dev',
|
|
277
|
+
personal: { languages: ['python'], topCategories: ['data'], patternsUsed: 15, successRate: 0.8 },
|
|
278
|
+
});
|
|
279
|
+
check(soloCtx.personal !== null, 'Solo dev has personal context');
|
|
280
|
+
check(soloCtx.project === null, 'Solo dev has no project context');
|
|
281
|
+
check(soloCtx.team === null, 'Solo dev has no team context');
|
|
282
|
+
check(soloCtx.org === null, 'Solo dev has no org context');
|
|
283
|
+
check(soloCtx.community === null, 'Solo dev has no community context');
|
|
284
|
+
check(!soloCtx.combined.orgAligned, 'Solo dev not org aligned');
|
|
285
|
+
check(!soloCtx.combined.communityAligned, 'Solo dev not community aligned');
|
|
286
|
+
// Full context — all layers
|
|
287
|
+
const fullCtx = (0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
288
|
+
developerId: 'full_dev',
|
|
289
|
+
personal: { languages: ['typescript', 'go'], topCategories: ['testing', 'devops'], patternsUsed: 100, successRate: 0.75, avgConfidence: 0.8, avgHealth: 0.7 },
|
|
290
|
+
project: { projectId: 'p1', primaryLanguage: 'typescript', framework: 'nextjs', architecture: 'microservices', complexity: 'high', maturity: 'mature', testingStyle: 'tdd', riskScore: 20, developmentStyle: 'agile', fingerprint: 'fp1' },
|
|
291
|
+
team: { teamId: 't1', teamName: 'Platform', memberCount: 12, successRate: 0.78, topLanguages: ['typescript'], topCategories: ['testing'], style: 'quality-driven', riskLevel: 'low', riskScore: 25, testingAdoption: 75 },
|
|
292
|
+
org: { orgId: 'o1', orgName: 'Acme', teamCount: 8, memberCount: 96, avgSuccessRate: 0.7, totalOutcomes: 5000 },
|
|
293
|
+
community: { totalPatterns: 1000, totalDevs: 10000, totalOutcomes: 100000, avgSuccessRate: 0.65, topCategories: ['testing', 'data', 'devops'] },
|
|
294
|
+
});
|
|
295
|
+
check(fullCtx.personal !== null, 'Full dev has personal context');
|
|
296
|
+
check(fullCtx.project !== null, 'Full dev has project context');
|
|
297
|
+
check(fullCtx.team !== null, 'Full dev has team context');
|
|
298
|
+
check(fullCtx.org !== null, 'Full dev has org context');
|
|
299
|
+
check(fullCtx.community !== null, 'Full dev has community context');
|
|
300
|
+
check(fullCtx.combined.orgAligned, 'Full dev is org aligned');
|
|
301
|
+
check(fullCtx.combined.communityAligned, 'Full dev is community aligned');
|
|
302
|
+
gte(fullCtx.combined.overallSuccessRate, 0, 'Overall success rate computed');
|
|
303
|
+
gte(fullCtx.personal.patternsUsed, 100, 'Personal patterns used');
|
|
304
|
+
// Cached context
|
|
305
|
+
const cached = (0, cross_layer_intelligence_1.getCachedContext)('full_dev');
|
|
306
|
+
check(cached !== null, 'Context cached');
|
|
307
|
+
check(cached.developerId === 'full_dev', 'Cached context has correct dev ID');
|
|
308
|
+
check(cached.personal.languages.includes('typescript'), 'Cached context has languages');
|
|
309
|
+
// Different developers get different contexts
|
|
310
|
+
const ctxA = (0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
311
|
+
developerId: 'dev_a',
|
|
312
|
+
personal: { languages: ['rust'], topCategories: ['performance'], patternsUsed: 200, successRate: 0.9 },
|
|
313
|
+
});
|
|
314
|
+
const ctxB = (0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
315
|
+
developerId: 'dev_b',
|
|
316
|
+
personal: { languages: ['ruby'], topCategories: ['ui'], patternsUsed: 10, successRate: 0.3 },
|
|
317
|
+
});
|
|
318
|
+
neq(ctxA.developerId, ctxB.developerId, 'Different dev IDs');
|
|
319
|
+
neq(ctxA.personal.languages[0], ctxB.personal.languages[0], 'Different languages');
|
|
320
|
+
gt(ctxA.personal.successRate, ctxB.personal.successRate, 'Different success rates');
|
|
321
|
+
});
|
|
322
|
+
// ===================================================================
|
|
323
|
+
// T4: Intelligence Score differentiation
|
|
324
|
+
// ===================================================================
|
|
325
|
+
test('T4: Intelligence score differentiation', () => {
|
|
326
|
+
console.log('\n--- T4: Score differentiation ---\n');
|
|
327
|
+
// High performer
|
|
328
|
+
const highScore = (0, cross_layer_intelligence_1.computeIntelligenceScore)({
|
|
329
|
+
personalSuccessRate: 0.95,
|
|
330
|
+
personalConfidence: 0.90,
|
|
331
|
+
personalPatternsUsed: 200,
|
|
332
|
+
communityReputation: 0.85,
|
|
333
|
+
communityRank: 5,
|
|
334
|
+
orgTeamSuccessRate: 0.90,
|
|
335
|
+
orgTeamRiskScore: 10,
|
|
336
|
+
graphInfluenceScore: 0.80,
|
|
337
|
+
dnaMaturityScore: 0.90,
|
|
338
|
+
dnaRiskScore: 10,
|
|
339
|
+
outcomeHealth: 0.90,
|
|
340
|
+
riskLevel: 'low',
|
|
341
|
+
});
|
|
342
|
+
// Low performer
|
|
343
|
+
const lowScore = (0, cross_layer_intelligence_1.computeIntelligenceScore)({
|
|
344
|
+
personalSuccessRate: 0.15,
|
|
345
|
+
personalConfidence: 0.20,
|
|
346
|
+
personalPatternsUsed: 3,
|
|
347
|
+
communityReputation: 0.10,
|
|
348
|
+
communityRank: 500,
|
|
349
|
+
orgTeamSuccessRate: 0.20,
|
|
350
|
+
orgTeamRiskScore: 80,
|
|
351
|
+
graphInfluenceScore: 0.05,
|
|
352
|
+
dnaMaturityScore: 0.10,
|
|
353
|
+
dnaRiskScore: 80,
|
|
354
|
+
outcomeHealth: 0.15,
|
|
355
|
+
riskLevel: 'high',
|
|
356
|
+
});
|
|
357
|
+
console.log(` High score: ${highScore.overallScore}, Low score: ${lowScore.overallScore}`);
|
|
358
|
+
gt(highScore.overallScore, lowScore.overallScore, 'High performer scores higher than low');
|
|
359
|
+
gt(highScore.overallScore, 60, `High score >= 60 (was ${highScore.overallScore})`);
|
|
360
|
+
lt(lowScore.overallScore, 50, `Low score < 50 (was ${lowScore.overallScore})`);
|
|
361
|
+
// All dimensions should be higher for high performer
|
|
362
|
+
for (const [dim, hVal] of Object.entries(highScore.dimensions)) {
|
|
363
|
+
const lVal = lowScore.dimensions[dim];
|
|
364
|
+
gte(hVal, lVal, `High performer has higher or equal ${dim}`);
|
|
365
|
+
}
|
|
366
|
+
// Mid performer
|
|
367
|
+
const midScore = (0, cross_layer_intelligence_1.computeIntelligenceScore)({
|
|
368
|
+
personalSuccessRate: 0.55,
|
|
369
|
+
personalConfidence: 0.50,
|
|
370
|
+
personalPatternsUsed: 50,
|
|
371
|
+
communityReputation: 0.45,
|
|
372
|
+
orgTeamSuccessRate: 0.55,
|
|
373
|
+
riskLevel: 'medium',
|
|
374
|
+
});
|
|
375
|
+
console.log(` Mid score: ${midScore.overallScore}`);
|
|
376
|
+
lt(midScore.overallScore, highScore.overallScore, 'Mid < High');
|
|
377
|
+
gt(midScore.overallScore, lowScore.overallScore, 'Mid > Low');
|
|
378
|
+
});
|
|
379
|
+
// ===================================================================
|
|
380
|
+
// T5: Evidence Engine
|
|
381
|
+
// ===================================================================
|
|
382
|
+
test('T5: Evidence generation', () => {
|
|
383
|
+
console.log('\n--- T5: Evidence Engine ---\n');
|
|
384
|
+
// Full evidence
|
|
385
|
+
const full = (0, cross_layer_intelligence_1.generateEvidence)({
|
|
386
|
+
patternId: 'repo_pattern',
|
|
387
|
+
category: 'testing',
|
|
388
|
+
personalSuccessRate: 0.85,
|
|
389
|
+
personalSampleSize: 20,
|
|
390
|
+
communitySuccessRate: 0.91,
|
|
391
|
+
communitySampleSize: 12000,
|
|
392
|
+
orgSuccessRate: 0.73,
|
|
393
|
+
orgSampleSize: 1400,
|
|
394
|
+
graphInfluenceScore: 0.78,
|
|
395
|
+
dnaSimilarity: 0.82,
|
|
396
|
+
outcomeConfidence: 0.88,
|
|
397
|
+
});
|
|
398
|
+
console.log(` ${full.evidence.length} evidence points for repo_pattern`);
|
|
399
|
+
gt(full.evidence.length, 3, 'Full evidence has >= 3 points');
|
|
400
|
+
check(full.evidence.some(e => e.type === 'personal'), 'Has personal evidence');
|
|
401
|
+
check(full.evidence.some(e => e.type === 'community'), 'Has community evidence');
|
|
402
|
+
check(full.evidence.some(e => e.type === 'org'), 'Has org evidence');
|
|
403
|
+
check(full.evidence.some(e => e.type === 'graph'), 'Has graph evidence');
|
|
404
|
+
check(full.evidence.some(e => e.type === 'dna'), 'Has DNA evidence');
|
|
405
|
+
check(full.evidence.some(e => e.type === 'outcome'), 'Has outcome evidence');
|
|
406
|
+
// Minimal evidence
|
|
407
|
+
const minimal = (0, cross_layer_intelligence_1.generateEvidence)({
|
|
408
|
+
patternId: 'new_pattern',
|
|
409
|
+
category: 'experimental',
|
|
410
|
+
personalSuccessRate: 0.6,
|
|
411
|
+
personalSampleSize: 2,
|
|
412
|
+
});
|
|
413
|
+
console.log(` ${minimal.evidence.length} evidence points for new pattern`);
|
|
414
|
+
gte(minimal.evidence.length, 1, 'Minimal evidence has >= 1 point');
|
|
415
|
+
check(minimal.evidence.every(e => e.sampleSize > 0), 'Evidence has sample sizes');
|
|
416
|
+
gte(minimal.totalScore, 0, 'Evidence total score >= 0');
|
|
417
|
+
gte(minimal.confidence, 0, 'Evidence confidence >= 0');
|
|
418
|
+
// Differing evidence
|
|
419
|
+
const evA = (0, cross_layer_intelligence_1.generateEvidence)({
|
|
420
|
+
patternId: 'p1', category: 'testing',
|
|
421
|
+
personalSuccessRate: 0.9, personalSampleSize: 100,
|
|
422
|
+
communitySuccessRate: 0.8, communitySampleSize: 1000,
|
|
423
|
+
});
|
|
424
|
+
const evB = (0, cross_layer_intelligence_1.generateEvidence)({
|
|
425
|
+
patternId: 'p2', category: 'testing',
|
|
426
|
+
personalSuccessRate: 0.3, personalSampleSize: 5,
|
|
427
|
+
communitySuccessRate: 0.4, communitySampleSize: 200,
|
|
428
|
+
});
|
|
429
|
+
neq(evA.totalScore, evB.totalScore, 'Different patterns get different scores');
|
|
430
|
+
gt(evA.totalScore, evB.totalScore, 'Better evidence scores higher');
|
|
431
|
+
});
|
|
432
|
+
// ===================================================================
|
|
433
|
+
// T6: Knowledge Gap Engine
|
|
434
|
+
// ===================================================================
|
|
435
|
+
test('T6: Knowledge gap detection', () => {
|
|
436
|
+
console.log('\n--- T6: Knowledge Gaps ---\n');
|
|
437
|
+
const patterns = [
|
|
438
|
+
{ patternId: 'tdd_testing', category: 'testing', communitySuccessRate: 0.91, communitySampleSize: 12000, orgSuccessRate: 0.42, orgSampleSize: 200 },
|
|
439
|
+
{ patternId: 'ci_cd', category: 'devops', communitySuccessRate: 0.85, communitySampleSize: 8000, orgSuccessRate: 0.35, orgSampleSize: 150 },
|
|
440
|
+
{ patternId: 'code_review', category: 'review', communitySuccessRate: 0.78, communitySampleSize: 5000, orgSuccessRate: 0.68, orgSampleSize: 180 },
|
|
441
|
+
{ patternId: 'microservices', category: 'architecture', communitySuccessRate: 0.65, communitySampleSize: 3000, orgSuccessRate: 0.62, orgSampleSize: 100 },
|
|
442
|
+
{ patternId: 'pair_programming', category: 'collaboration', communitySuccessRate: 0.55, communitySampleSize: 2000, orgSuccessRate: 0.52, orgSampleSize: 50 },
|
|
443
|
+
{ patternId: 'all_good', category: 'testing', communitySuccessRate: 0.85, communitySampleSize: 5000, orgSuccessRate: 0.83, orgSampleSize: 300 },
|
|
444
|
+
];
|
|
445
|
+
const gaps = (0, cross_layer_intelligence_1.detectKnowledgeGaps)({
|
|
446
|
+
patterns,
|
|
447
|
+
minGapThreshold: 0.15,
|
|
448
|
+
minCommunitySample: 5,
|
|
449
|
+
});
|
|
450
|
+
console.log(` ${gaps.length} knowledge gaps detected`);
|
|
451
|
+
for (const g of gaps) {
|
|
452
|
+
console.log(` ${g.patternId}: gap=${Math.round(g.gapSize * 100)}%, impact=${g.impact}`);
|
|
453
|
+
}
|
|
454
|
+
gt(gaps.length, 0, 'Knowledge gaps detected');
|
|
455
|
+
check(gaps.every(g => g.gapSize > 0.15), 'All gaps above threshold');
|
|
456
|
+
check(gaps.some(g => g.impact === 'high' || g.impact === 'medium'), 'Some gaps are high/medium impact');
|
|
457
|
+
check(gaps.every(g => g.recommendation.length > 10), 'All gaps have recommendations');
|
|
458
|
+
// No gaps
|
|
459
|
+
const noGaps = (0, cross_layer_intelligence_1.detectKnowledgeGaps)({
|
|
460
|
+
patterns: [
|
|
461
|
+
{ patternId: 'p1', category: 'test', communitySuccessRate: 0.8, communitySampleSize: 100, orgSuccessRate: 0.79, orgSampleSize: 50 },
|
|
462
|
+
],
|
|
463
|
+
});
|
|
464
|
+
check(noGaps.length === 0, 'No gaps when rates are equal');
|
|
465
|
+
});
|
|
466
|
+
// ===================================================================
|
|
467
|
+
// T7: Opportunity Engine
|
|
468
|
+
// ===================================================================
|
|
469
|
+
test('T7: Opportunity detection', () => {
|
|
470
|
+
console.log('\n--- T7: Opportunities ---\n');
|
|
471
|
+
const gaps = [
|
|
472
|
+
{ patternId: 'tdd', category: 'testing', communitySuccessRate: 0.91, communitySampleSize: 12000, orgSuccessRate: 0.42, orgSampleSize: 200, gapSize: 0.49, impact: 'high', recommendation: 'Adopt TDD' },
|
|
473
|
+
{ patternId: 'ci_cd', category: 'devops', communitySuccessRate: 0.85, communitySampleSize: 8000, orgSuccessRate: 0.35, orgSampleSize: 150, gapSize: 0.50, impact: 'high', recommendation: 'Adopt CI/CD' },
|
|
474
|
+
];
|
|
475
|
+
const opps = (0, cross_layer_intelligence_1.findOpportunities)({
|
|
476
|
+
currentSuccessRate: 0.45,
|
|
477
|
+
communityAvgSuccessRate: 0.68,
|
|
478
|
+
topPerformerRate: 0.92,
|
|
479
|
+
gaps,
|
|
480
|
+
teamTestingAdoption: 15,
|
|
481
|
+
orgAvgTestingAdoption: 55,
|
|
482
|
+
teamCIRate: 10,
|
|
483
|
+
orgAvgCIRate: 70,
|
|
484
|
+
teamReviewRate: 25,
|
|
485
|
+
orgAvgReviewRate: 60,
|
|
486
|
+
});
|
|
487
|
+
console.log(` ${opps.length} opportunities`);
|
|
488
|
+
for (const o of opps) {
|
|
489
|
+
console.log(` ${o.title}: impact=+${o.impact}pp, confidence=${Math.round(o.confidence * 100)}%`);
|
|
490
|
+
}
|
|
491
|
+
gt(opps.length, 0, 'Opportunities generated');
|
|
492
|
+
check(opps.every(o => o.confidence > 0 && o.confidence <= 1), 'All have valid confidence');
|
|
493
|
+
check(opps.every(o => o.impact > 0), 'All have positive impact');
|
|
494
|
+
check(opps.every(o => o.description.length > 10), 'All have descriptions');
|
|
495
|
+
check(opps.some(o => o.category === 'testing'), 'Testing opportunity exists');
|
|
496
|
+
check(opps.some(o => o.category === 'community'), 'Community opportunity exists');
|
|
497
|
+
});
|
|
498
|
+
// ===================================================================
|
|
499
|
+
// T8: Risk Engine V2
|
|
500
|
+
// ===================================================================
|
|
501
|
+
test('T8: Risk Engine V2', () => {
|
|
502
|
+
console.log('\n--- T8: Risk V2 ---\n');
|
|
503
|
+
const gaps = [
|
|
504
|
+
{ patternId: 'tdd', category: 'testing', communitySuccessRate: 0.91, communitySampleSize: 12000, orgSuccessRate: 0.42, orgSampleSize: 200, gapSize: 0.49, impact: 'high', recommendation: 'Adopt TDD' },
|
|
505
|
+
{ patternId: 'ci_cd', category: 'devops', communitySuccessRate: 0.85, communitySampleSize: 8000, orgSuccessRate: 0.35, orgSampleSize: 150, gapSize: 0.50, impact: 'high', recommendation: 'Adopt CI/CD' },
|
|
506
|
+
{ patternId: 'code_review', category: 'review', communitySuccessRate: 0.78, communitySampleSize: 5000, orgSuccessRate: 0.68, orgSampleSize: 180, gapSize: 0.10, impact: 'low', recommendation: 'Improve reviews' },
|
|
507
|
+
];
|
|
508
|
+
const risks = (0, cross_layer_intelligence_1.analyzeRisks)({
|
|
509
|
+
knowledgeSilos: gaps,
|
|
510
|
+
busFactorScore: 85,
|
|
511
|
+
teamRiskScore: 65,
|
|
512
|
+
teamTestingAdoption: 12,
|
|
513
|
+
teamSuccessRate: 0.45,
|
|
514
|
+
orgAvgSuccessRate: 0.72,
|
|
515
|
+
memberCount: 8,
|
|
516
|
+
totalPatterns: 200,
|
|
517
|
+
});
|
|
518
|
+
console.log(` ${risks.length} risks identified`);
|
|
519
|
+
for (const r of risks) {
|
|
520
|
+
console.log(` ${r.title}: score=${r.riskScore}, impact=${r.impact}, prob=${Math.round(r.probability * 100)}%`);
|
|
521
|
+
}
|
|
522
|
+
gt(risks.length, 0, 'Risks identified');
|
|
523
|
+
check(risks.some(r => r.category === 'knowledge'), 'Knowledge risk identified');
|
|
524
|
+
check(risks.some(r => r.category === 'people'), 'People risk (bus factor) identified');
|
|
525
|
+
check(risks.some(r => r.category === 'quality'), 'Quality risk identified');
|
|
526
|
+
check(risks.some(r => r.category === 'performance'), 'Performance risk identified');
|
|
527
|
+
check(risks.every(r => r.rootCause.length > 0), 'All risks have root cause');
|
|
528
|
+
check(risks.every(r => r.recommendation.length > 0), 'All risks have recommendations');
|
|
529
|
+
check(risks.every(r => r.evidencePoints.length > 0), 'All risks have evidence');
|
|
530
|
+
// No risks
|
|
531
|
+
const noRisks = (0, cross_layer_intelligence_1.analyzeRisks)({});
|
|
532
|
+
check(noRisks.length === 0, 'No risks when no data provided');
|
|
533
|
+
});
|
|
534
|
+
// ===================================================================
|
|
535
|
+
// T9: Pattern Lifecycle
|
|
536
|
+
// ===================================================================
|
|
537
|
+
test('T9: Pattern lifecycle classification', () => {
|
|
538
|
+
console.log('\n--- T9: Lifecycle ---\n');
|
|
539
|
+
const lifecycles = (0, cross_layer_intelligence_1.classifyLifecycle)({
|
|
540
|
+
patterns: [
|
|
541
|
+
{ patternId: 'rust_pattern', category: 'performance', communityTrend: 'exploding', communityUsage: 200, orgUsage: 50, avgSuccessRate: 0.85, confidence: 0.9 },
|
|
542
|
+
{ patternId: 'react_hooks', category: 'ui', communityTrend: 'rising', communityUsage: 80, orgUsage: 30, avgSuccessRate: 0.78, confidence: 0.85 },
|
|
543
|
+
{ patternId: 'tdd', category: 'testing', communityTrend: 'stable', communityUsage: 500, orgUsage: 200, avgSuccessRate: 0.82, confidence: 0.95 },
|
|
544
|
+
{ patternId: 'jquery', category: 'ui', communityTrend: 'declining', communityUsage: 300, orgUsage: 50, avgSuccessRate: 0.5, confidence: 0.6 },
|
|
545
|
+
{ patternId: 'coffeescript', category: 'language', communityTrend: 'dead', communityUsage: 10, orgUsage: 0, avgSuccessRate: 0.2, confidence: 0.1 },
|
|
546
|
+
{ patternId: 'new_fad', category: 'experimental', communityTrend: 'rising', communityUsage: 12, avgSuccessRate: 0.9, confidence: 0.3 },
|
|
547
|
+
],
|
|
548
|
+
});
|
|
549
|
+
console.log(` ${lifecycles.length} lifecycle classifications`);
|
|
550
|
+
const stages = lifecycles.map(l => `${l.patternId}: ${l.stage} (${l.communityTrend})`);
|
|
551
|
+
for (const s of stages)
|
|
552
|
+
console.log(` ${s}`);
|
|
553
|
+
gt(lifecycles.length, 0, 'Lifecycles computed');
|
|
554
|
+
check(lifecycles.every(l => ['emerging', 'growing', 'mature', 'declining', 'dead'].includes(l.stage)), 'All have valid stages');
|
|
555
|
+
const rustCycle = lifecycles.find(l => l.patternId === 'rust_pattern');
|
|
556
|
+
check(rustCycle?.stage === 'growing', 'Rust/exploding is growing');
|
|
557
|
+
const tddCycle = lifecycles.find(l => l.patternId === 'tdd');
|
|
558
|
+
check(tddCycle?.stage === 'mature', 'TDD/stable/high usage is mature');
|
|
559
|
+
const jqCycle = lifecycles.find(l => l.patternId === 'jquery');
|
|
560
|
+
check(jqCycle?.stage === 'declining', 'jQuery declining is declining');
|
|
561
|
+
const csCycle = lifecycles.find(l => l.patternId === 'coffeescript');
|
|
562
|
+
check(csCycle?.stage === 'dead', 'CoffeeScript dead is dead');
|
|
563
|
+
const newCycle = lifecycles.find(l => l.patternId === 'new_fad');
|
|
564
|
+
check(newCycle?.stage === 'emerging', 'New/low usage is emerging');
|
|
565
|
+
check(lifecycles.every(l => l.estimatedLifespan.length > 0), 'All have estimated lifespans');
|
|
566
|
+
});
|
|
567
|
+
// ===================================================================
|
|
568
|
+
// T10: Multi-Level Benchmarking
|
|
569
|
+
// ===================================================================
|
|
570
|
+
test('T10: Multi-level benchmarking', () => {
|
|
571
|
+
console.log('\n--- T10: Benchmarks ---\n');
|
|
572
|
+
const benchmarks = (0, cross_layer_intelligence_1.computeMultiLevelBenchmarks)({
|
|
573
|
+
metrics: [
|
|
574
|
+
{
|
|
575
|
+
name: 'Success Rate',
|
|
576
|
+
personalValue: 0.72, personalSampleSize: 50,
|
|
577
|
+
teamValue: 0.68, teamSampleSize: 200,
|
|
578
|
+
orgValue: 0.65, orgSampleSize: 5000,
|
|
579
|
+
communityAvg: 0.71, communityP50: 0.68, communityP90: 0.92, communitySampleSize: 50000,
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
name: 'Testing Coverage',
|
|
583
|
+
personalValue: 0.35, personalSampleSize: 50,
|
|
584
|
+
teamValue: 0.40, teamSampleSize: 200,
|
|
585
|
+
orgValue: 0.50, orgSampleSize: 5000,
|
|
586
|
+
communityAvg: 0.65, communityP50: 0.60, communityP90: 0.85, communitySampleSize: 50000,
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
name: 'Pattern Adoption',
|
|
590
|
+
personalValue: 0.60, personalSampleSize: 50,
|
|
591
|
+
orgValue: 0.55, orgSampleSize: 5000,
|
|
592
|
+
communityAvg: 0.70, communityP50: 0.65, communityP90: 0.90, communitySampleSize: 50000,
|
|
593
|
+
},
|
|
594
|
+
],
|
|
595
|
+
});
|
|
596
|
+
console.log(` ${benchmarks.length} benchmarks`);
|
|
597
|
+
for (const b of benchmarks) {
|
|
598
|
+
console.log(` ${b.metric}: ${b.levels.length} levels, gapToNext=${b.gapToNext}, gapToBest=${b.gapToBest}`);
|
|
599
|
+
for (const l of b.levels)
|
|
600
|
+
console.log(` ${l.level}: ${Math.round(l.value * 100)}% (n=${l.sampleSize})`);
|
|
601
|
+
}
|
|
602
|
+
gt(benchmarks.length, 0, 'Benchmarks computed');
|
|
603
|
+
check(benchmarks.every(b => b.levels.length >= 2), 'All benchmarks have >= 2 levels');
|
|
604
|
+
check(benchmarks.some(b => b.levels.some(l => l.level === 'personal')), 'Has personal level');
|
|
605
|
+
check(benchmarks.some(b => b.levels.some(l => l.level === 'community')), 'Has community level');
|
|
606
|
+
// Success Rate — personal > team > org < community
|
|
607
|
+
const sr = benchmarks.find(b => b.metric === 'Success Rate');
|
|
608
|
+
check(sr !== undefined, 'Success Rate benchmark exists');
|
|
609
|
+
if (sr) {
|
|
610
|
+
const personal = sr.levels.find(l => l.level === 'personal');
|
|
611
|
+
const org = sr.levels.find(l => l.level === 'org');
|
|
612
|
+
if (personal && org) {
|
|
613
|
+
gt(personal.value, org.value, 'Personal > org in success rate');
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
// Testing Coverage — community should be highest
|
|
617
|
+
const tc = benchmarks.find(b => b.metric === 'Testing Coverage');
|
|
618
|
+
check(tc !== undefined, 'Testing Coverage benchmark exists');
|
|
619
|
+
if (tc) {
|
|
620
|
+
const community = tc.levels.find(l => l.level === 'community');
|
|
621
|
+
const personal = tc.levels.find(l => l.level === 'personal');
|
|
622
|
+
if (community && personal) {
|
|
623
|
+
gt(community.value, personal.value, 'Community > personal in testing coverage');
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
// ===================================================================
|
|
628
|
+
// T11: Decision Engine
|
|
629
|
+
// ===================================================================
|
|
630
|
+
test('T11: Decision engine', () => {
|
|
631
|
+
console.log('\n--- T11: Decisions ---\n');
|
|
632
|
+
const score = {
|
|
633
|
+
overallScore: 55,
|
|
634
|
+
dimensions: { personalSuccess: 45, personalConfidence: 50, communityReputation: 30, orgAlignment: 60, graphInfluence: 40, dnaMaturity: 55, riskHealth: 50 },
|
|
635
|
+
weights: { personalSuccess: 0.2, personalConfidence: 0.1, communityReputation: 0.15, orgAlignment: 0.15, graphInfluence: 0.1, dnaMaturity: 0.15, riskHealth: 0.15 },
|
|
636
|
+
sampleSize: 100,
|
|
637
|
+
};
|
|
638
|
+
const gaps = [
|
|
639
|
+
{ patternId: 'tdd', category: 'testing', communitySuccessRate: 0.91, communitySampleSize: 12000, orgSuccessRate: 0.42, orgSampleSize: 200, gapSize: 0.49, impact: 'high', recommendation: 'Adopt TDD' },
|
|
640
|
+
];
|
|
641
|
+
const opps = [
|
|
642
|
+
{ title: 'Increase Testing', category: 'testing', currentValue: 15, expectedValue: 55, impact: 17, confidence: 0.91, evidenceCount: 12000, effort: 'medium', description: 'Increase testing from 15% to 55%' },
|
|
643
|
+
{ title: 'Adopt CI/CD', category: 'devops', currentValue: 10, expectedValue: 70, impact: 14, confidence: 0.85, evidenceCount: 8000, effort: 'medium', description: 'Adopt CI/CD pipelines' },
|
|
644
|
+
];
|
|
645
|
+
const risks = [
|
|
646
|
+
{ title: 'High Bus Factor', category: 'people', rootCause: 'Knowledge concentrated', probability: 0.85, impact: 'high', riskScore: 85, recommendation: 'Share knowledge', evidencePoints: ['Bus factor: 85'] },
|
|
647
|
+
{ title: 'Low Testing', category: 'quality', rootCause: 'Testing not prioritized', probability: 0.7, impact: 'medium', riskScore: 45, recommendation: 'Increase testing', evidencePoints: ['Testing: 15%'] },
|
|
648
|
+
];
|
|
649
|
+
const decisions = (0, cross_layer_intelligence_1.generateDecisions)({
|
|
650
|
+
intelligenceScore: score,
|
|
651
|
+
knowledgeGaps: gaps,
|
|
652
|
+
opportunities: opps,
|
|
653
|
+
risks,
|
|
654
|
+
personalSuccessRate: 0.55,
|
|
655
|
+
personalPatternsUsed: 100,
|
|
656
|
+
teamTestingAdoption: 15,
|
|
657
|
+
teamCIRate: 10,
|
|
658
|
+
teamReviewRate: 25,
|
|
659
|
+
});
|
|
660
|
+
console.log(` ${decisions.length} decisions generated`);
|
|
661
|
+
for (const d of decisions) {
|
|
662
|
+
console.log(` #${d.priority}: ${d.action} (impact=${d.impact} ${d.impactUnit}, confidence=${d.confidence}%)`);
|
|
663
|
+
}
|
|
664
|
+
gt(decisions.length, 0, 'Decisions generated');
|
|
665
|
+
check(decisions.every(d => d.priority > 0), 'All decisions have priority');
|
|
666
|
+
check(decisions.every(d => d.action.length > 0), 'All decisions have actions');
|
|
667
|
+
check(decisions.every(d => d.impact > 0), 'All decisions have positive impact');
|
|
668
|
+
check(decisions.every(d => d.confidence >= 0 && d.confidence <= 100), 'All decisions have valid confidence');
|
|
669
|
+
check(decisions.every(d => d.recommendations.length > 0), 'All decisions have recommendations');
|
|
670
|
+
check(decisions.every(d => d.keyEvidence.length > 0), 'All decisions have evidence');
|
|
671
|
+
// Sorted by priority
|
|
672
|
+
for (let i = 1; i < decisions.length; i++) {
|
|
673
|
+
gte(decisions[i].priority, decisions[i - 1].priority, 'Decisions sorted by priority');
|
|
674
|
+
}
|
|
675
|
+
// Risk mitigation should be high priority
|
|
676
|
+
check(decisions.some(d => d.category === 'people'), 'People risk decision exists');
|
|
677
|
+
});
|
|
678
|
+
// ===================================================================
|
|
679
|
+
// T12: Full Intelligence Report
|
|
680
|
+
// ===================================================================
|
|
681
|
+
test('T12: Intelligence report generator', () => {
|
|
682
|
+
console.log('\n--- T12: Report Generation ---\n');
|
|
683
|
+
const ctx = (0, cross_layer_intelligence_1.buildUnifiedContext)({
|
|
684
|
+
developerId: 'report_dev',
|
|
685
|
+
personal: { languages: ['typescript', 'go'], topCategories: ['testing', 'data'], patternsUsed: 150, successRate: 0.78, avgConfidence: 0.82, avgHealth: 0.75 },
|
|
686
|
+
project: { projectId: 'report_proj', primaryLanguage: 'typescript', framework: 'nextjs', architecture: 'microservices', complexity: 'high', maturity: 'mature', testingStyle: 'tdd', riskScore: 15 },
|
|
687
|
+
team: { teamId: 'report_team', teamName: 'Core', memberCount: 10, successRate: 0.72, topLanguages: ['typescript'], topCategories: ['testing'], style: 'quality-driven', riskLevel: 'low', riskScore: 20, testingAdoption: 65 },
|
|
688
|
+
org: { orgId: 'report_org', orgName: 'TechCorp', teamCount: 10, memberCount: 100, avgSuccessRate: 0.68, totalOutcomes: 10000 },
|
|
689
|
+
community: { totalPatterns: 1000, totalDevs: 10000, totalOutcomes: 100000, avgSuccessRate: 0.65, topCategories: ['testing', 'data', 'devops'] },
|
|
690
|
+
});
|
|
691
|
+
const score = (0, cross_layer_intelligence_1.computeIntelligenceScore)({
|
|
692
|
+
personalSuccessRate: 0.78, personalConfidence: 0.82, personalPatternsUsed: 150,
|
|
693
|
+
communityReputation: 0.72, orgTeamSuccessRate: 0.72, orgTeamRiskScore: 20,
|
|
694
|
+
graphInfluenceScore: 0.65, dnaRiskScore: 15, riskLevel: 'low',
|
|
695
|
+
});
|
|
696
|
+
const gaps = (0, cross_layer_intelligence_1.detectKnowledgeGaps)({
|
|
697
|
+
patterns: [
|
|
698
|
+
{ patternId: 'tdd', category: 'testing', communitySuccessRate: 0.91, communitySampleSize: 12000, orgSuccessRate: 0.55, orgSampleSize: 300 },
|
|
699
|
+
{ patternId: 'ci_cd', category: 'devops', communitySuccessRate: 0.85, communitySampleSize: 8000, orgSuccessRate: 0.45, orgSampleSize: 200 },
|
|
700
|
+
],
|
|
701
|
+
});
|
|
702
|
+
const opps = (0, cross_layer_intelligence_1.findOpportunities)({
|
|
703
|
+
currentSuccessRate: 0.72, communityAvgSuccessRate: 0.65, topPerformerRate: 0.92, gaps,
|
|
704
|
+
teamTestingAdoption: 65, orgAvgTestingAdoption: 50,
|
|
705
|
+
});
|
|
706
|
+
const risks = (0, cross_layer_intelligence_1.analyzeRisks)({
|
|
707
|
+
knowledgeSilos: gaps,
|
|
708
|
+
teamTestingAdoption: 65,
|
|
709
|
+
teamSuccessRate: 0.72,
|
|
710
|
+
orgAvgSuccessRate: 0.68,
|
|
711
|
+
});
|
|
712
|
+
const benchmarks = (0, cross_layer_intelligence_1.computeMultiLevelBenchmarks)({
|
|
713
|
+
metrics: [
|
|
714
|
+
{
|
|
715
|
+
name: 'Success Rate',
|
|
716
|
+
personalValue: 0.78, personalSampleSize: 150,
|
|
717
|
+
teamValue: 0.72, teamSampleSize: 1000,
|
|
718
|
+
orgValue: 0.68, orgSampleSize: 10000,
|
|
719
|
+
communityAvg: 0.65, communityP50: 0.62, communityP90: 0.88, communitySampleSize: 100000,
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
name: 'Testing Coverage',
|
|
723
|
+
personalValue: 0.60, personalSampleSize: 150,
|
|
724
|
+
teamValue: 0.65, teamSampleSize: 1000,
|
|
725
|
+
orgValue: 0.50, orgSampleSize: 10000,
|
|
726
|
+
communityAvg: 0.60, communityP50: 0.55, communityP90: 0.82, communitySampleSize: 100000,
|
|
727
|
+
},
|
|
728
|
+
],
|
|
729
|
+
});
|
|
730
|
+
const decisions = (0, cross_layer_intelligence_1.generateDecisions)({
|
|
731
|
+
intelligenceScore: score, knowledgeGaps: gaps, opportunities: opps, risks,
|
|
732
|
+
personalSuccessRate: 0.78, personalPatternsUsed: 150,
|
|
733
|
+
});
|
|
734
|
+
const report = (0, cross_layer_intelligence_1.generateIntelligenceReport)({
|
|
735
|
+
targetId: 'report_dev',
|
|
736
|
+
targetType: 'developer',
|
|
737
|
+
unifiedContext: ctx,
|
|
738
|
+
intelligenceScore: score,
|
|
739
|
+
knowledgeGaps: gaps,
|
|
740
|
+
opportunities: opps,
|
|
741
|
+
risks,
|
|
742
|
+
benchmarks,
|
|
743
|
+
decisions,
|
|
744
|
+
});
|
|
745
|
+
console.log(` Report: ${report.reportId}`);
|
|
746
|
+
console.log(` Score: ${report.intelligenceScore.overallScore}/100`);
|
|
747
|
+
console.log(` ${report.decisions.length} decisions, ${report.gaps.length} gaps, ${report.opportunities.length} opps, ${report.risks.length} risks`);
|
|
748
|
+
console.log(` ${report.benchmarks.length} benchmarks`);
|
|
749
|
+
console.log(` ${report.strengths.length} strengths, ${report.weaknesses.length} weaknesses`);
|
|
750
|
+
console.log(` Summary: ${report.summary.substring(0, 80)}...`);
|
|
751
|
+
check(report.reportId.startsWith('report_'), 'Report has valid ID');
|
|
752
|
+
check(report.targetId === 'report_dev', 'Report targets correct dev');
|
|
753
|
+
gte(report.intelligenceScore.overallScore, 0, 'Report has score');
|
|
754
|
+
gt(report.generatedAt, 0, 'Report has generation timestamp');
|
|
755
|
+
gt(report.decisions.length, 0, 'Report has decisions');
|
|
756
|
+
gt(report.benchmarks.length, 0, 'Report has benchmarks');
|
|
757
|
+
gt(report.strengths.length + report.weaknesses.length, 0, 'Report has strengths/weaknesses');
|
|
758
|
+
gt(report.summary.length, 50, 'Report has substantial summary');
|
|
759
|
+
// Persist and retrieve
|
|
760
|
+
const retrieved = (0, cross_layer_intelligence_1.getReport)(report.reportId);
|
|
761
|
+
check(retrieved !== null, 'Report persisted to store');
|
|
762
|
+
check(retrieved.targetId === 'report_dev', 'Retrieved report has correct data');
|
|
763
|
+
const allReports = (0, cross_layer_intelligence_1.listReports)();
|
|
764
|
+
gt(allReports.length, 0, 'Reports listed');
|
|
765
|
+
check(allReports.includes(report.reportId), 'Report ID in list');
|
|
766
|
+
});
|
|
767
|
+
// ===================================================================
|
|
768
|
+
// T13: Restart survival
|
|
769
|
+
// ===================================================================
|
|
770
|
+
test('T13: Data persists across restart', () => {
|
|
771
|
+
console.log('\n--- T13: Restart Survival ---\n');
|
|
772
|
+
const allReports = (0, cross_layer_intelligence_1.listReports)();
|
|
773
|
+
console.log(` ${allReports.length} reports survive`);
|
|
774
|
+
gt(allReports.length, 0, 'Reports survive restart');
|
|
775
|
+
if (allReports.length > 0) {
|
|
776
|
+
const report = (0, cross_layer_intelligence_1.getReport)(allReports[0]);
|
|
777
|
+
check(report !== null, 'Individual report retrieved after restart');
|
|
778
|
+
check(report.targetId.length > 0, 'Report has target');
|
|
779
|
+
gte(report.intelligenceScore.overallScore, 0, 'Report score persists');
|
|
780
|
+
}
|
|
781
|
+
});
|
|
782
|
+
});
|
|
783
|
+
//# sourceMappingURL=chapter9-hostile.test.js.map
|