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
package/dist/cli.js
CHANGED
|
@@ -33,19 +33,134 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
return result;
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
36
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
40
|
const commander_1 = require("commander");
|
|
38
41
|
const path = __importStar(require("path"));
|
|
39
42
|
const fs = __importStar(require("fs"));
|
|
40
43
|
const os = __importStar(require("os"));
|
|
44
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
const figlet_1 = __importDefault(require("figlet"));
|
|
46
|
+
const gradient_string_1 = __importDefault(require("gradient-string"));
|
|
47
|
+
const child_process_1 = require("child_process");
|
|
41
48
|
const index_1 = require("./index");
|
|
49
|
+
// ─── Color Helpers ─────────────────────────────────────
|
|
50
|
+
const C = {
|
|
51
|
+
primary: chalk_1.default.hex('#FF6B35'),
|
|
52
|
+
primaryLight: chalk_1.default.hex('#FF8C42'),
|
|
53
|
+
primaryDark: chalk_1.default.hex('#E65100'),
|
|
54
|
+
accent: chalk_1.default.hex('#FFAB91'),
|
|
55
|
+
success: chalk_1.default.green,
|
|
56
|
+
error: chalk_1.default.red,
|
|
57
|
+
warn: chalk_1.default.yellow,
|
|
58
|
+
info: chalk_1.default.hex('#FFAB91'),
|
|
59
|
+
dim: chalk_1.default.dim,
|
|
60
|
+
bold: chalk_1.default.bold,
|
|
61
|
+
num: (s) => chalk_1.default.hex('#FF6B35').bold(s),
|
|
62
|
+
header: (s) => chalk_1.default.hex('#FF8C42').bold(s),
|
|
63
|
+
sub: (s) => chalk_1.default.hex('#FFAB91').dim(s),
|
|
64
|
+
};
|
|
65
|
+
// ─── Number → Command Mapping ──────────────────────────
|
|
66
|
+
const NUM = {
|
|
67
|
+
1: 'learn', 2: 'next', 3: 'scan', 4: 'errors', 5: 'buildcheck',
|
|
68
|
+
6: 'deadcode', 7: 'complexity', 8: 'branch', 9: 'gentests', 10: 'perf',
|
|
69
|
+
11: 'community', 12: 'community-live', 13: 'community-full',
|
|
70
|
+
14: 'push', 15: 'pull', 16: 'vote', 17: 'mergecheck',
|
|
71
|
+
18: 'snapshot', 19: 'sync', 20: 'solutions', 21: 'langswitch',
|
|
72
|
+
22: 'resume', 23: 'handoff', 24: 'silos', 25: 'review',
|
|
73
|
+
26: 'standup', 27: 'offline', 28: 'cycles', 29: 'dupes',
|
|
74
|
+
30: 'deps', 31: 'abtest', 32: 'xdomain',
|
|
75
|
+
33: 'daemon restart', 34: 'daemon status',
|
|
76
|
+
35: 'cloud on', 36: 'cloud off', 37: 'privacy',
|
|
77
|
+
38: 'taste show', 39: 'taste reset', 40: 'watch', 41: 'team', 42: 'community-stats',
|
|
78
|
+
};
|
|
79
|
+
const IMPORTANT_CMDS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
80
|
+
const OTHER_CMDS = Object.keys(NUM).map(Number).filter(n => !IMPORTANT_CMDS.includes(n));
|
|
81
|
+
// ─── Terminal Utilities ────────────────────────────────
|
|
82
|
+
function termWidth() { return process.stdout.columns || 80; }
|
|
83
|
+
function hline(ch = '─') { return ch.repeat(termWidth() - 2); }
|
|
84
|
+
function centerText(text) {
|
|
85
|
+
const w = termWidth();
|
|
86
|
+
const pad = Math.max(0, Math.floor((w - text.length) / 2));
|
|
87
|
+
return ' '.repeat(pad) + text;
|
|
88
|
+
}
|
|
89
|
+
// ─── Banner ────────────────────────────────────────────
|
|
90
|
+
function showBanner() {
|
|
91
|
+
const w = termWidth();
|
|
92
|
+
const line = C.primaryDark(hline('─'));
|
|
93
|
+
const thick = C.primary(hline('━'));
|
|
94
|
+
let f;
|
|
95
|
+
try {
|
|
96
|
+
f = figlet_1.default.textSync('FIVO CELL', { font: 'ANSI Shadow', width: w - 4 });
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
try {
|
|
100
|
+
f = figlet_1.default.textSync('FIVO CELL', { font: 'Big' });
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
f = 'FIVO CELL';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const banner = (0, gradient_string_1.default)(['#FF6B35', '#FF8C42', '#FFAB91'])(f);
|
|
107
|
+
console.log(banner);
|
|
108
|
+
console.log(C.accent(centerText('Anticipatory Intelligence Engine v1.0.0')));
|
|
109
|
+
console.log(thick);
|
|
110
|
+
console.log(C.primary.bold('\n ▸ Named Commands'));
|
|
111
|
+
console.log(line);
|
|
112
|
+
console.log(` ${C.primary.bold('run')} ${C.primary.bold('status')} ${C.primary.bold('start')} ${C.primary.bold('stop')}`);
|
|
113
|
+
console.log(C.primary.bold('\n ▸ Quick Commands'));
|
|
114
|
+
console.log(line);
|
|
115
|
+
const imp = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
116
|
+
for (let i = 0; i < imp.length; i += 5) {
|
|
117
|
+
const row = imp.slice(i, i + 5).map(n => `${C.num(String(n).padStart(2))} ${C.bold(NUM[n].padEnd(14))}`).join(C.dim(' │ '));
|
|
118
|
+
console.log(` ${row}`);
|
|
119
|
+
}
|
|
120
|
+
console.log(C.primary.bold('\n ▸ Other Commands: 11-39'));
|
|
121
|
+
console.log(line);
|
|
122
|
+
console.log(C.dim(' cell 9 → Run command by number'));
|
|
123
|
+
console.log(C.dim(' cell 1,2,3 → Run multiple commands'));
|
|
124
|
+
console.log(C.dim(' cell 1-5 → Run range of commands'));
|
|
125
|
+
console.log();
|
|
126
|
+
console.log(thick);
|
|
127
|
+
console.log();
|
|
128
|
+
}
|
|
129
|
+
// ─── Number Argument Parser ────────────────────────────
|
|
130
|
+
function parseNumberArg(input) {
|
|
131
|
+
if (/^\d+$/.test(input))
|
|
132
|
+
return [parseInt(input)];
|
|
133
|
+
if (/^\d+-\d+$/.test(input)) {
|
|
134
|
+
const [s, e] = input.split('-').map(Number);
|
|
135
|
+
if (s > e)
|
|
136
|
+
return [];
|
|
137
|
+
return Array.from({ length: e - s + 1 }, (_, i) => s + i);
|
|
138
|
+
}
|
|
139
|
+
if (/^\d+(,\d+)+$/.test(input)) {
|
|
140
|
+
return [...new Set(input.split(',').map(Number))];
|
|
141
|
+
}
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
function runNumbers(nums) {
|
|
145
|
+
const script = process.argv[1];
|
|
146
|
+
for (const n of nums) {
|
|
147
|
+
const cmd = NUM[n];
|
|
148
|
+
if (!cmd) {
|
|
149
|
+
console.error(C.error(`Unknown command number: ${n}`));
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
console.log(C.primary(`\n ──▶ ${n}: ${cmd} ${'─'.repeat(50)}`));
|
|
153
|
+
(0, child_process_1.execSync)(`node "${script}" ${cmd}`, { stdio: 'inherit', cwd: process.cwd() });
|
|
154
|
+
}
|
|
155
|
+
process.exit(0);
|
|
156
|
+
}
|
|
42
157
|
const program = new commander_1.Command();
|
|
43
158
|
program
|
|
44
159
|
.name('cell')
|
|
45
160
|
.description('FIVO Cell — Anticipatory Intelligence. Learns your coding taste.')
|
|
46
161
|
.version('1.0.0');
|
|
47
162
|
program
|
|
48
|
-
.command('
|
|
163
|
+
.command('run')
|
|
49
164
|
.description('Initialize FIVO Cell in the current project')
|
|
50
165
|
.action(() => {
|
|
51
166
|
const cellDir = path.join(process.cwd(), index_1.DEFAULT_CONFIG.cellDir);
|
|
@@ -54,21 +169,70 @@ program
|
|
|
54
169
|
}
|
|
55
170
|
const store = new index_1.PatternStore(cellDir);
|
|
56
171
|
store.save();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
console.
|
|
60
|
-
console.log(
|
|
61
|
-
console.log(
|
|
62
|
-
console.log('
|
|
63
|
-
console.log(
|
|
64
|
-
console.log(
|
|
65
|
-
console.log('
|
|
66
|
-
console.log(
|
|
67
|
-
console.log(
|
|
68
|
-
console.log('
|
|
69
|
-
console.log('
|
|
70
|
-
console.log('');
|
|
71
|
-
console.log('
|
|
172
|
+
const thick = C.primary(hline('━'));
|
|
173
|
+
const line = C.primaryDark(hline('─'));
|
|
174
|
+
console.clear();
|
|
175
|
+
console.log();
|
|
176
|
+
console.log(thick);
|
|
177
|
+
console.log(C.success.bold(centerText('✅ FIVO Cell Initialized')));
|
|
178
|
+
console.log(thick);
|
|
179
|
+
console.log();
|
|
180
|
+
console.log(C.info(' Directory: ') + C.bold(cellDir));
|
|
181
|
+
console.log(line);
|
|
182
|
+
console.log();
|
|
183
|
+
console.log(C.primary.bold(' 🌐 Cloud Sync: ON (Anonymous pattern stats only)'));
|
|
184
|
+
console.log(C.sub(' → Better suggestions from 10K+ developers'));
|
|
185
|
+
console.log(C.sub(' → Your code NEVER leaves your machine'));
|
|
186
|
+
console.log(C.sub(' → What we share (just stats, no code):'));
|
|
187
|
+
console.log(C.sub(' "prefers const over let (87%)"'));
|
|
188
|
+
console.log(C.sub(' "uses named exports, not default (83%)"'));
|
|
189
|
+
console.log(C.sub(' "vitest over jest (91%)"'));
|
|
190
|
+
console.log(C.sub(' "pnpm over npm (86%)"'));
|
|
191
|
+
console.log(C.sub(' → No file paths. No project names. No source code.'));
|
|
192
|
+
console.log(C.sub(' → Turn off anytime: cell cloud off'));
|
|
193
|
+
console.log();
|
|
194
|
+
console.log(line);
|
|
195
|
+
console.log(C.info(' Run ') + C.primary.bold('cell status') + C.info(' to see your taste profile.'));
|
|
196
|
+
console.log(C.dim(' Run ') + C.primary('cell watch') + C.dim(' for auto-learning from file edits'));
|
|
197
|
+
console.log(thick);
|
|
198
|
+
console.log();
|
|
199
|
+
// Auto-install git hook
|
|
200
|
+
const gitDir = path.join(process.cwd(), '.git');
|
|
201
|
+
if (fs.existsSync(gitDir)) {
|
|
202
|
+
const hooksDir = path.join(gitDir, 'hooks');
|
|
203
|
+
if (!fs.existsSync(hooksDir))
|
|
204
|
+
fs.mkdirSync(hooksDir, { recursive: true });
|
|
205
|
+
const hookPath = path.join(hooksDir, 'post-commit');
|
|
206
|
+
if (!fs.existsSync(hookPath)) {
|
|
207
|
+
const cellBin = process.argv[1];
|
|
208
|
+
const hook = `#!/bin/sh
|
|
209
|
+
# FIVO Cell — auto-learn on commit
|
|
210
|
+
DIFF=$(git diff --cached --diff-algorithm=histogram)
|
|
211
|
+
if [ -n "$DIFF" ]; then
|
|
212
|
+
node "${cellBin}" learn --original "$(echo "$DIFF" | head -200)" --edited "committed" 2>/dev/null
|
|
213
|
+
fi
|
|
214
|
+
`;
|
|
215
|
+
fs.writeFileSync(hookPath, hook, { mode: 0o755 });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Migration: legacy → .cell/ format
|
|
219
|
+
try {
|
|
220
|
+
const store = new index_1.CellStore(path.join(process.cwd(), '.cell'));
|
|
221
|
+
const result = store.migrateFromLegacy(cellDir);
|
|
222
|
+
if (result.migrated > 0) {
|
|
223
|
+
console.log(C.dim(` 📦 Migrated ${result.migrated} patterns to .cell/ format`));
|
|
224
|
+
console.log(C.dim(` 📁 .cell/personal/style.json`));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch { }
|
|
228
|
+
// Rebuild search index
|
|
229
|
+
try {
|
|
230
|
+
const se = new index_1.SearchEngine();
|
|
231
|
+
const r = se.rebuild();
|
|
232
|
+
if (r.indexed > 0)
|
|
233
|
+
console.log(C.dim(` 🔍 Search index: ${r.indexed} files indexed`));
|
|
234
|
+
}
|
|
235
|
+
catch { }
|
|
72
236
|
});
|
|
73
237
|
program
|
|
74
238
|
.command('status')
|
|
@@ -80,32 +244,117 @@ program
|
|
|
80
244
|
return;
|
|
81
245
|
}
|
|
82
246
|
const store = new index_1.PatternStore(cellDir);
|
|
83
|
-
|
|
84
|
-
|
|
247
|
+
const thick = C.primary(hline('━'));
|
|
248
|
+
const line = C.primaryDark(hline('─'));
|
|
85
249
|
const patterns = store.getAllPatterns();
|
|
250
|
+
console.clear();
|
|
251
|
+
console.log();
|
|
252
|
+
console.log(thick);
|
|
253
|
+
console.log(C.primary.bold(centerText('📊 FIVO Cell — Taste Profile')));
|
|
254
|
+
console.log(thick);
|
|
255
|
+
console.log();
|
|
86
256
|
if (patterns.length === 0) {
|
|
87
|
-
console.log('No patterns learned yet. Start coding to teach Cell your style.');
|
|
257
|
+
console.log(C.warn(centerText('No patterns learned yet. Start coding to teach Cell your style.')));
|
|
258
|
+
console.log();
|
|
259
|
+
console.log(thick);
|
|
88
260
|
return;
|
|
89
261
|
}
|
|
90
|
-
console.log(`Total patterns:
|
|
91
|
-
console.log(`Total signals:
|
|
262
|
+
console.log(` Total patterns: ${C.bold(String(patterns.length))}`);
|
|
263
|
+
console.log(` Total signals: ${C.bold(String(store.getTotalSignals()))}`);
|
|
264
|
+
console.log(line);
|
|
92
265
|
const strong = store.getPatternsByTier('strong');
|
|
93
266
|
const moderate = store.getPatternsByTier('moderate');
|
|
94
267
|
const weak = store.getPatternsByTier('weak');
|
|
95
|
-
console.log(
|
|
96
|
-
console.log(`
|
|
97
|
-
console.log(`
|
|
98
|
-
console.log(`
|
|
268
|
+
console.log(C.primary.bold('\n Tiers:'));
|
|
269
|
+
console.log(C.success(` ● Strong (>0.80): ${String(strong.length).padStart(3)} patterns`));
|
|
270
|
+
console.log(C.warn(` ● Moderate (0.50-0.80): ${String(moderate.length).padStart(3)} patterns`));
|
|
271
|
+
console.log(C.dim(` ● Weak (0.30-0.50): ${String(weak.length).padStart(3)} patterns`));
|
|
99
272
|
if (strong.length > 0) {
|
|
100
|
-
console.log('\
|
|
273
|
+
console.log(C.primary.bold('\n Top Patterns:'));
|
|
101
274
|
const top = patterns
|
|
102
275
|
.sort((a, b) => b.confidence.mean - a.confidence.mean)
|
|
103
276
|
.slice(0, 5);
|
|
104
277
|
for (const p of top) {
|
|
105
|
-
console.log(`
|
|
278
|
+
console.log(C.success(` ✅ ${p.description}`) + C.dim(` (${p.confidence.mean}, ${p.signals?.positive || 0}/${p.signals?.total || 0} signals)`));
|
|
106
279
|
}
|
|
107
280
|
}
|
|
108
|
-
|
|
281
|
+
// Blind spots
|
|
282
|
+
try {
|
|
283
|
+
const bs = new index_1.BlindSpotEngine(cellDir);
|
|
284
|
+
const summary = bs.getSummary();
|
|
285
|
+
if (summary.top.length > 0) {
|
|
286
|
+
console.log(line);
|
|
287
|
+
console.log(C.primary.bold('\n 👁️ Blind Spots Detected:'));
|
|
288
|
+
for (const s of summary.top.slice(0, 3)) {
|
|
289
|
+
const sev = s.severity === 'critical' ? C.error('●') : s.severity === 'high' ? C.warn('●') : C.info('●');
|
|
290
|
+
console.log(C.warn(` ${sev} ${s.description} (${Math.round(s.missedRate * 100)}% of cases)`));
|
|
291
|
+
console.log(C.dim(` ${s.suggestion}`));
|
|
292
|
+
}
|
|
293
|
+
console.log(C.dim(`\n Total: ${summary.total} blind spots · Critical: ${summary.critical} · High: ${summary.high}`));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch { }
|
|
297
|
+
// Naming + Structure + Architecture + Productivity
|
|
298
|
+
try {
|
|
299
|
+
const namingSummary = new index_1.NamingEngine().getSummary();
|
|
300
|
+
const structureSummary = new index_1.StructureEngine().getSummary();
|
|
301
|
+
const frontendSummary = new index_1.FrontendEngine().getSummary();
|
|
302
|
+
const backendSummary = new index_1.BackendEngine().getSummary();
|
|
303
|
+
const productivitySummary = new index_1.ProductivityEngine().getSummary();
|
|
304
|
+
const syntaxSummary = new index_1.SyntaxEngine().getSummary();
|
|
305
|
+
if (namingSummary.length > 0 && structureSummary.length > 0) {
|
|
306
|
+
console.log(line);
|
|
307
|
+
console.log(C.primary.bold('\n 📐 Style Intelligence:'));
|
|
308
|
+
for (const s of namingSummary)
|
|
309
|
+
console.log(C.info(` ${s}`));
|
|
310
|
+
for (const s of structureSummary)
|
|
311
|
+
console.log(C.info(` ${s}`));
|
|
312
|
+
for (const s of syntaxSummary)
|
|
313
|
+
console.log(C.info(` ${s}`));
|
|
314
|
+
}
|
|
315
|
+
const archSummary = new index_1.ArchitectureEngine().getSummary();
|
|
316
|
+
if (frontendSummary.length > 0 || backendSummary.length > 0 || archSummary.length > 0) {
|
|
317
|
+
console.log(line);
|
|
318
|
+
console.log(C.primary.bold('\n 🏗️ Architecture Intelligence:'));
|
|
319
|
+
for (const s of frontendSummary)
|
|
320
|
+
console.log(C.info(` ${s}`));
|
|
321
|
+
for (const s of backendSummary)
|
|
322
|
+
console.log(C.info(` ${s}`));
|
|
323
|
+
for (const s of archSummary)
|
|
324
|
+
console.log(C.info(` ${s}`));
|
|
325
|
+
}
|
|
326
|
+
if (productivitySummary.length > 0) {
|
|
327
|
+
console.log(line);
|
|
328
|
+
console.log(C.primary.bold('\n ⚡ Productivity Intelligence:'));
|
|
329
|
+
for (const s of productivitySummary)
|
|
330
|
+
console.log(C.info(` ${s}`));
|
|
331
|
+
}
|
|
332
|
+
const knowledgeSummary = new index_1.KnowledgeGraphEngine().getSummary();
|
|
333
|
+
if (knowledgeSummary.length > 0) {
|
|
334
|
+
console.log(line);
|
|
335
|
+
console.log(C.primary.bold('\n 🧠 Knowledge Graph:'));
|
|
336
|
+
for (const s of knowledgeSummary)
|
|
337
|
+
console.log(C.info(` ${s}`));
|
|
338
|
+
}
|
|
339
|
+
const teamAdvSummary = new index_1.TeamAdvancedEngine().getSummary();
|
|
340
|
+
const communityAdvSummary = new index_1.CommunityAdvancedEngine().getSummary();
|
|
341
|
+
if (teamAdvSummary.length > 0) {
|
|
342
|
+
console.log(line);
|
|
343
|
+
console.log(C.primary.bold('\n 👥 Team Advanced:'));
|
|
344
|
+
for (const s of teamAdvSummary)
|
|
345
|
+
console.log(C.info(` ${s}`));
|
|
346
|
+
}
|
|
347
|
+
if (communityAdvSummary.length > 0) {
|
|
348
|
+
console.log(line);
|
|
349
|
+
console.log(C.primary.bold('\n 🌐 Community Advanced:'));
|
|
350
|
+
for (const s of communityAdvSummary)
|
|
351
|
+
console.log(C.info(` ${s}`));
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch { }
|
|
355
|
+
console.log();
|
|
356
|
+
console.log(thick);
|
|
357
|
+
console.log();
|
|
109
358
|
});
|
|
110
359
|
program
|
|
111
360
|
.command('taste show')
|
|
@@ -139,6 +388,7 @@ program
|
|
|
139
388
|
.option('-e, --edited <code>', 'Your edited version')
|
|
140
389
|
.option('-a, --accept', 'Mark as accepted (no edits)')
|
|
141
390
|
.option('-r, --reject', 'Mark as rejected')
|
|
391
|
+
.option('--audit', 'Run security and error analysis on edited code')
|
|
142
392
|
.action((options) => {
|
|
143
393
|
const cellDir = path.join(process.cwd(), index_1.DEFAULT_CONFIG.cellDir);
|
|
144
394
|
if (!fs.existsSync(cellDir)) {
|
|
@@ -165,20 +415,39 @@ program
|
|
|
165
415
|
}
|
|
166
416
|
else if (options.original && options.edited) {
|
|
167
417
|
const signal = capture.captureEditDiff(options.original, options.edited, context);
|
|
168
|
-
const result = cascade.extract(options.original, options.edited);
|
|
418
|
+
const result = cascade.extract(options.original, options.edited, context.language);
|
|
169
419
|
console.log(`📝 Edit diff captured (session: ${signal.sessionId})`);
|
|
170
420
|
console.log(` Step used: ${result.stepUsed}`);
|
|
171
421
|
console.log(` Latency: ${result.latencyMs}ms`);
|
|
172
422
|
console.log(` Patterns found: ${result.patterns.length}`);
|
|
173
423
|
for (const p of result.patterns) {
|
|
174
|
-
const pattern = store.addOrUpdatePattern(p.category, p.description, p.from, p.to, true, p.conditions);
|
|
175
|
-
console.log(` → ${p.description} (confidence: ${pattern.confidence.mean})`);
|
|
424
|
+
const pattern = store.addOrUpdatePattern(p.category, p.description, p.from, p.to, true, p.conditions, 'global', result.stepUsed, result.language);
|
|
425
|
+
console.log(` → ${p.description} (confidence: ${pattern.confidence.mean}, quality: ${pattern.quality.score})`);
|
|
176
426
|
}
|
|
177
427
|
store.save();
|
|
428
|
+
try {
|
|
429
|
+
new index_1.CellStore().syncFromPatternStore(store);
|
|
430
|
+
}
|
|
431
|
+
catch { }
|
|
178
432
|
console.log(`\n✅ Taste profile updated. ${store.getPatternCount()} patterns total.`);
|
|
433
|
+
if (options.audit && options.edited) {
|
|
434
|
+
const auditResult = cascade.audit(options.edited);
|
|
435
|
+
if (auditResult.security.length > 0 || auditResult.errors.length > 0) {
|
|
436
|
+
console.log(`\n🔍 Code audit results:`);
|
|
437
|
+
for (const s of auditResult.security) {
|
|
438
|
+
console.log(` ⚠ [${s.severity}] ${s.type}:${s.line} ${s.message}`);
|
|
439
|
+
}
|
|
440
|
+
for (const e of auditResult.errors) {
|
|
441
|
+
console.log(` ⚠ [${e.severity}] ${e.type}:${e.line} ${e.message}`);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
console.log(`\n🔍 Code audit: no issues found`);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
179
448
|
}
|
|
180
449
|
else {
|
|
181
|
-
console.log('❌ Provide --original and --edited, or --accept, or --reject');
|
|
450
|
+
console.log('❌ Provide --original and --edited, or --accept with --original, or --reject with --original');
|
|
182
451
|
}
|
|
183
452
|
});
|
|
184
453
|
program
|
|
@@ -191,7 +460,7 @@ program
|
|
|
191
460
|
console.log('❌ Cell not initialized. Run `cell init` first.');
|
|
192
461
|
return;
|
|
193
462
|
}
|
|
194
|
-
const username = options.username ||
|
|
463
|
+
const username = options.username || 'anonymous';
|
|
195
464
|
const store = new index_1.PatternStore(cellDir);
|
|
196
465
|
const composer = new index_1.TeamComposer(store, cellDir);
|
|
197
466
|
composer.pushTaste(username);
|
|
@@ -258,7 +527,7 @@ program
|
|
|
258
527
|
return;
|
|
259
528
|
}
|
|
260
529
|
if (options.pattern && options.vote) {
|
|
261
|
-
const username =
|
|
530
|
+
const username = 'anonymous';
|
|
262
531
|
const session = detector.castVote(options.pattern, username, options.vote);
|
|
263
532
|
if (!session) {
|
|
264
533
|
console.log('❌ Vote failed. Check pattern ID and deadline.');
|
|
@@ -953,51 +1222,18 @@ program
|
|
|
953
1222
|
}
|
|
954
1223
|
return;
|
|
955
1224
|
}
|
|
956
|
-
const
|
|
957
|
-
console.log(`\n📊 Community
|
|
1225
|
+
const ds = full.getCommunityStats();
|
|
1226
|
+
console.log(`\n📊 Community Stats`);
|
|
958
1227
|
console.log(`──────────────────────────────────`);
|
|
959
|
-
console.log(` Total patterns: ${
|
|
960
|
-
console.log(` Live patterns: ${
|
|
961
|
-
console.log(` Synthetic patterns: ${
|
|
962
|
-
console.log(` Avg confidence: ${
|
|
963
|
-
console.log(` Calibration: ${
|
|
964
|
-
console.log(` Cross-language maps: ${
|
|
1228
|
+
console.log(` Total patterns: ${ds.totalPatterns}`);
|
|
1229
|
+
console.log(` Live patterns: ${ds.livePatterns}`);
|
|
1230
|
+
console.log(` Synthetic patterns: ${ds.syntheticPatterns}`);
|
|
1231
|
+
console.log(` Avg confidence: ${ds.avgConfidence}`);
|
|
1232
|
+
console.log(` Calibration: ${ds.calibrationPhase}`);
|
|
1233
|
+
console.log(` Cross-language maps: ${ds.crossLanguageMappings}`);
|
|
965
1234
|
console.log(`\n${full.getDisplayLabel()}`);
|
|
966
|
-
const
|
|
967
|
-
console.log(`\n All-real guarantee: ${
|
|
968
|
-
});
|
|
969
|
-
program
|
|
970
|
-
.command('enterprise')
|
|
971
|
-
.description('Enterprise features')
|
|
972
|
-
.option('--obfuscate <name>', 'Obfuscate project name')
|
|
973
|
-
.option('--paginate <json>', 'Paginate items {items, page, pageSize}')
|
|
974
|
-
.option('--s3-config <json>', 'Get S3 config {bucket, region}')
|
|
975
|
-
.option('--self-hosted <url>', 'Get self-hosted config')
|
|
976
|
-
.action((options) => {
|
|
977
|
-
const enterprise = new index_1.EnterpriseFeatures();
|
|
978
|
-
if (options.obfuscate) {
|
|
979
|
-
console.log(`Hash: ${enterprise.obfuscateProjectName(options.obfuscate)}`);
|
|
980
|
-
return;
|
|
981
|
-
}
|
|
982
|
-
if (options.paginate) {
|
|
983
|
-
const { items, page, pageSize } = JSON.parse(options.paginate);
|
|
984
|
-
const result = enterprise.paginate(items, page, pageSize);
|
|
985
|
-
console.log(`Page ${result.page}/${result.totalPages} (${result.total} total items):`);
|
|
986
|
-
for (const item of result.items) {
|
|
987
|
-
console.log(` ${JSON.stringify(item)}`);
|
|
988
|
-
}
|
|
989
|
-
return;
|
|
990
|
-
}
|
|
991
|
-
if (options.s3Config) {
|
|
992
|
-
const { bucket, region } = JSON.parse(options.s3Config);
|
|
993
|
-
console.log(JSON.stringify(enterprise.getS3Config(bucket, region), null, 2));
|
|
994
|
-
return;
|
|
995
|
-
}
|
|
996
|
-
if (options.selfHosted) {
|
|
997
|
-
console.log(JSON.stringify(enterprise.getSelfHostedConfig(options.selfHosted), null, 2));
|
|
998
|
-
return;
|
|
999
|
-
}
|
|
1000
|
-
console.log('Enterprise features: obfuscate, paginate, s3-config, self-hosted');
|
|
1235
|
+
const s = full.getStats();
|
|
1236
|
+
console.log(`\n All-real guarantee: ${s.isAllReal ? '✅ YES' : '❌ NO'}`);
|
|
1001
1237
|
});
|
|
1002
1238
|
program
|
|
1003
1239
|
.command('xdomain')
|
|
@@ -1021,7 +1257,7 @@ program
|
|
|
1021
1257
|
console.log(`\n🔬 ${proj.sourceDomain} → ${proj.targetDomain}`);
|
|
1022
1258
|
console.log(` Transfer accuracy: ${proj.transferAccuracy}`);
|
|
1023
1259
|
console.log(` Confidence: ${proj.confidence}`);
|
|
1024
|
-
console.log(` Passes
|
|
1260
|
+
console.log(` Passes 65% gate: ${projections.validateTransferAccuracy(proj) ? '✅' : '❌'}`);
|
|
1025
1261
|
console.log('\n Concept mappings:');
|
|
1026
1262
|
for (const [from, to] of Object.entries(proj.mappedConcepts)) {
|
|
1027
1263
|
console.log(` ${from} → ${to}`);
|
|
@@ -1034,6 +1270,89 @@ program
|
|
|
1034
1270
|
}
|
|
1035
1271
|
console.log(`\n${projections.getResearchGateStatus()}`);
|
|
1036
1272
|
});
|
|
1273
|
+
// ─── SEARCH ────────────────────────────────────────────
|
|
1274
|
+
program
|
|
1275
|
+
.command('search')
|
|
1276
|
+
.description('Search across all personal intelligence data')
|
|
1277
|
+
.argument('<query>', 'Search query (e.g., "error handling", "naming conventions")')
|
|
1278
|
+
.option('-l, --limit <n>', 'Max results', '5')
|
|
1279
|
+
.action((query, options) => {
|
|
1280
|
+
const se = new index_1.SearchEngine();
|
|
1281
|
+
se.rebuild(); // Always rebuild before search
|
|
1282
|
+
const results = se.search(query, parseInt(options.limit));
|
|
1283
|
+
const thick = C.primary(hline('━'));
|
|
1284
|
+
console.clear();
|
|
1285
|
+
console.log();
|
|
1286
|
+
console.log(thick);
|
|
1287
|
+
console.log(C.primary.bold(centerText(`🔍 Search: "${query}"`)));
|
|
1288
|
+
console.log(thick);
|
|
1289
|
+
console.log();
|
|
1290
|
+
if (results.length === 0) {
|
|
1291
|
+
console.log(C.warn(centerText('No results found. Try different keywords.')));
|
|
1292
|
+
console.log();
|
|
1293
|
+
console.log(thick);
|
|
1294
|
+
return;
|
|
1295
|
+
}
|
|
1296
|
+
for (const r of results) {
|
|
1297
|
+
console.log(C.num(` ${r.score} `) + C.bold(r.file));
|
|
1298
|
+
console.log(C.dim(` ${r.snippet}`));
|
|
1299
|
+
console.log(C.dim(` Tags: ${r.tags.join(', ')}`));
|
|
1300
|
+
console.log();
|
|
1301
|
+
}
|
|
1302
|
+
console.log(C.dim(` ${results.length} results found`));
|
|
1303
|
+
console.log();
|
|
1304
|
+
console.log(thick);
|
|
1305
|
+
});
|
|
1306
|
+
// ─── TEAM ─────────────────────────────────────────────
|
|
1307
|
+
program
|
|
1308
|
+
.command('team')
|
|
1309
|
+
.description('Show team intelligence overview')
|
|
1310
|
+
.option('-o, --onboard', 'Generate onboarding document')
|
|
1311
|
+
.option('-a, --add-pattern <name>', 'Add team approved pattern')
|
|
1312
|
+
.option('-d, --desc <text>', 'Pattern description (with --add-pattern)')
|
|
1313
|
+
.option('-c, --category <cat>', 'Pattern category')
|
|
1314
|
+
.action((options) => {
|
|
1315
|
+
const te = new index_1.TeamEngine();
|
|
1316
|
+
if (options.addPattern && options.desc) {
|
|
1317
|
+
const cat = options.category || 'general';
|
|
1318
|
+
const r = te.addPattern(options.addPattern, options.desc, cat, 'local');
|
|
1319
|
+
console.log(C.success(`\n ✅ Team pattern added: ${r.id}`));
|
|
1320
|
+
console.log(C.dim(` "${options.addPattern}": ${options.desc}\n`));
|
|
1321
|
+
return;
|
|
1322
|
+
}
|
|
1323
|
+
if (options.onboard) {
|
|
1324
|
+
const doc = te.generateOnboarding();
|
|
1325
|
+
const outPath = path.join(process.cwd(), 'TEAM-ONBOARDING.md');
|
|
1326
|
+
fs.writeFileSync(outPath, doc, 'utf-8');
|
|
1327
|
+
console.log(C.success(`\n ✅ Onboarding doc generated: ${outPath}\n`));
|
|
1328
|
+
return;
|
|
1329
|
+
}
|
|
1330
|
+
const summary = te.getSummary();
|
|
1331
|
+
const thick = C.primary(hline('━'));
|
|
1332
|
+
console.clear();
|
|
1333
|
+
console.log();
|
|
1334
|
+
console.log(thick);
|
|
1335
|
+
console.log(C.primary.bold(centerText('👥 Team Intelligence')));
|
|
1336
|
+
console.log(thick);
|
|
1337
|
+
console.log();
|
|
1338
|
+
if (summary.length === 0) {
|
|
1339
|
+
console.log(C.warn(centerText('No team data yet. Members push their taste with `cell push`.\nThen patterns and knowledge map will populate automatically.')));
|
|
1340
|
+
console.log();
|
|
1341
|
+
console.log(thick);
|
|
1342
|
+
return;
|
|
1343
|
+
}
|
|
1344
|
+
for (const s of summary)
|
|
1345
|
+
console.log(C.info(` ${s}`));
|
|
1346
|
+
console.log();
|
|
1347
|
+
console.log(C.dim(' Commands:'));
|
|
1348
|
+
console.log(C.dim(' cell team --onboard Generate onboarding doc'));
|
|
1349
|
+
console.log(C.dim(' cell team --add-pattern <name> --desc <text> Add pattern'));
|
|
1350
|
+
console.log(C.dim(' cell push Share your taste'));
|
|
1351
|
+
console.log(C.dim(' cell pull Pull team taste'));
|
|
1352
|
+
console.log(C.dim(' cell silos Check knowledge gaps'));
|
|
1353
|
+
console.log();
|
|
1354
|
+
console.log(thick);
|
|
1355
|
+
});
|
|
1037
1356
|
// ─── DAEMON COMMANDS ──────────────────────────────────
|
|
1038
1357
|
const daemonCmd = program.command('daemon').description('Manage Cell Daemon (background service)');
|
|
1039
1358
|
daemonCmd
|
|
@@ -1048,7 +1367,8 @@ daemonCmd
|
|
|
1048
1367
|
console.log(` Health: http://localhost:${result.port}/health`);
|
|
1049
1368
|
}
|
|
1050
1369
|
catch (err) {
|
|
1051
|
-
|
|
1370
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
1371
|
+
console.error(`❌ Failed to start daemon: ${message}`);
|
|
1052
1372
|
}
|
|
1053
1373
|
});
|
|
1054
1374
|
daemonCmd
|
|
@@ -1070,7 +1390,8 @@ daemonCmd
|
|
|
1070
1390
|
console.log(`✅ Daemon restarted (PID: ${result.pid}, Port: ${result.port})`);
|
|
1071
1391
|
}
|
|
1072
1392
|
catch (err) {
|
|
1073
|
-
|
|
1393
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
1394
|
+
console.error(`❌ Failed to restart daemon: ${message}`);
|
|
1074
1395
|
}
|
|
1075
1396
|
});
|
|
1076
1397
|
daemonCmd
|
|
@@ -1092,6 +1413,34 @@ daemonCmd
|
|
|
1092
1413
|
console.log(` Stale PID found: ${status.pid}`);
|
|
1093
1414
|
}
|
|
1094
1415
|
});
|
|
1416
|
+
// ─── Top-level start/stop shortcuts ────────────────────
|
|
1417
|
+
program
|
|
1418
|
+
.command('start')
|
|
1419
|
+
.description('Start the Cell Daemon (auto-starts file watcher)')
|
|
1420
|
+
.action(async () => {
|
|
1421
|
+
console.log(C.primary('Starting Cell Daemon...'));
|
|
1422
|
+
try {
|
|
1423
|
+
const { startDaemon } = await Promise.resolve().then(() => __importStar(require('./daemon/lifecycle')));
|
|
1424
|
+
const result = await startDaemon();
|
|
1425
|
+
console.log(C.success(`✅ Daemon started (PID: ${result.pid}, Port: ${result.port})`));
|
|
1426
|
+
console.log(C.info(` Health: http://localhost:${result.port}/health`));
|
|
1427
|
+
console.log(C.accent('\n👁️ Auto-Learn active — watching files for changes...'));
|
|
1428
|
+
console.log(C.dim(' Edit any source file → Cell learns automatically'));
|
|
1429
|
+
console.log(C.dim(' Stop daemon: cell stop\n'));
|
|
1430
|
+
}
|
|
1431
|
+
catch (err) {
|
|
1432
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
1433
|
+
console.error(C.error(`❌ Failed to start daemon: ${message}`));
|
|
1434
|
+
}
|
|
1435
|
+
});
|
|
1436
|
+
program
|
|
1437
|
+
.command('stop')
|
|
1438
|
+
.description('Stop the Cell Daemon')
|
|
1439
|
+
.action(async () => {
|
|
1440
|
+
const { stopDaemon } = await Promise.resolve().then(() => __importStar(require('./daemon/lifecycle')));
|
|
1441
|
+
const result = stopDaemon();
|
|
1442
|
+
console.log(result.success ? C.success(`✅ ${result.message}`) : C.warn(`⚠️ ${result.message}`));
|
|
1443
|
+
});
|
|
1095
1444
|
program
|
|
1096
1445
|
.command('cloud')
|
|
1097
1446
|
.description('Manage cloud sync')
|
|
@@ -1127,5 +1476,274 @@ program
|
|
|
1127
1476
|
console.log(' Fully offline. Nothing leaves your machine.');
|
|
1128
1477
|
console.log(' Turn on: cell cloud on');
|
|
1129
1478
|
}));
|
|
1479
|
+
program
|
|
1480
|
+
.command('privacy')
|
|
1481
|
+
.description('Show privacy settings and current sharing status')
|
|
1482
|
+
.action(async () => {
|
|
1483
|
+
const http = await Promise.resolve().then(() => __importStar(require('http')));
|
|
1484
|
+
return new Promise((resolve) => {
|
|
1485
|
+
http.get('http://localhost:9876/privacy/mode', (res) => {
|
|
1486
|
+
let data = '';
|
|
1487
|
+
res.on('data', (chunk) => data += chunk);
|
|
1488
|
+
res.on('end', () => {
|
|
1489
|
+
try {
|
|
1490
|
+
const { mode } = JSON.parse(data);
|
|
1491
|
+
console.log(`\n🔒 Privacy Mode: ${mode}`);
|
|
1492
|
+
console.log(` Change: cell cloud on (community) | cell cloud off (private)\n`);
|
|
1493
|
+
}
|
|
1494
|
+
catch {
|
|
1495
|
+
console.log('\n🔒 Privacy Mode: private (daemon not reachable, showing default)\n');
|
|
1496
|
+
}
|
|
1497
|
+
resolve();
|
|
1498
|
+
});
|
|
1499
|
+
}).on('error', () => {
|
|
1500
|
+
console.log('\n🔒 Privacy Mode: private (daemon not reachable, showing default)\n');
|
|
1501
|
+
resolve();
|
|
1502
|
+
});
|
|
1503
|
+
});
|
|
1504
|
+
});
|
|
1505
|
+
// ─── Auto-Learn: File Watcher ──────────────────────────
|
|
1506
|
+
program
|
|
1507
|
+
.command('watch')
|
|
1508
|
+
.description('Watch files and learn automatically from every edit')
|
|
1509
|
+
.action(() => {
|
|
1510
|
+
const cellDir = path.join(process.cwd(), index_1.DEFAULT_CONFIG.cellDir);
|
|
1511
|
+
if (!fs.existsSync(cellDir)) {
|
|
1512
|
+
fs.mkdirSync(cellDir, { recursive: true });
|
|
1513
|
+
const store = new index_1.PatternStore(cellDir);
|
|
1514
|
+
store.save();
|
|
1515
|
+
}
|
|
1516
|
+
const store = new index_1.PatternStore(cellDir);
|
|
1517
|
+
const cellStore = new index_1.CellStore();
|
|
1518
|
+
const capture = new index_1.SignalCapture();
|
|
1519
|
+
const cascade = new index_1.ExtractionCascade();
|
|
1520
|
+
const cellDir2 = path.join(process.cwd(), '.cell');
|
|
1521
|
+
const blindSpots = new index_1.BlindSpotEngine(cellDir);
|
|
1522
|
+
const naming = new index_1.NamingEngine(cellDir2);
|
|
1523
|
+
const structure = new index_1.StructureEngine(cellDir2);
|
|
1524
|
+
const frontend = new index_1.FrontendEngine(cellDir2);
|
|
1525
|
+
const backend = new index_1.BackendEngine(cellDir2);
|
|
1526
|
+
const productivity = new index_1.ProductivityEngine(cellDir2);
|
|
1527
|
+
const syntax = new index_1.SyntaxEngine(cellDir2);
|
|
1528
|
+
const arch = new index_1.ArchitectureEngine(cellDir2);
|
|
1529
|
+
const knowledge = new index_1.KnowledgeGraphEngine(cellDir2);
|
|
1530
|
+
const filePrevMap = new Map();
|
|
1531
|
+
const timers = {};
|
|
1532
|
+
let learned = 0;
|
|
1533
|
+
function getLang(fp) {
|
|
1534
|
+
const ext = path.extname(fp).toLowerCase();
|
|
1535
|
+
const m = {
|
|
1536
|
+
'.ts': 'typescript', '.tsx': 'typescript', '.js': 'javascript', '.jsx': 'javascript',
|
|
1537
|
+
'.py': 'python', '.go': 'go', '.java': 'java', '.rb': 'ruby', '.rs': 'rust',
|
|
1538
|
+
'.cs': 'csharp', '.php': 'php', '.swift': 'swift', '.kt': 'kotlin',
|
|
1539
|
+
};
|
|
1540
|
+
return m[ext] || 'unknown';
|
|
1541
|
+
}
|
|
1542
|
+
const fileVersions = new Map();
|
|
1543
|
+
function processFile(filePath) {
|
|
1544
|
+
clearTimeout(timers[filePath]);
|
|
1545
|
+
timers[filePath] = setTimeout(() => {
|
|
1546
|
+
try {
|
|
1547
|
+
const current = fs.readFileSync(filePath, 'utf-8');
|
|
1548
|
+
const rel = path.relative(process.cwd(), filePath);
|
|
1549
|
+
const previous = fileVersions.get(filePath) || '';
|
|
1550
|
+
fileVersions.set(filePath, current);
|
|
1551
|
+
if (!previous || previous === current)
|
|
1552
|
+
return;
|
|
1553
|
+
const lang = getLang(filePath);
|
|
1554
|
+
const ctx = {
|
|
1555
|
+
language: lang,
|
|
1556
|
+
framework: 'unknown',
|
|
1557
|
+
fileType: path.extname(filePath),
|
|
1558
|
+
strictness: 'moderate',
|
|
1559
|
+
projectId: path.basename(process.cwd()),
|
|
1560
|
+
};
|
|
1561
|
+
capture.captureEditDiff(previous, current, ctx);
|
|
1562
|
+
const result = cascade.extract(previous, current, lang);
|
|
1563
|
+
const spots = blindSpots.analyze(current, lang);
|
|
1564
|
+
naming.analyze(current);
|
|
1565
|
+
structure.analyze(current);
|
|
1566
|
+
frontend.analyze(current);
|
|
1567
|
+
backend.analyze(current);
|
|
1568
|
+
syntax.analyze(current);
|
|
1569
|
+
arch.analyze(current, rel);
|
|
1570
|
+
knowledge.detectTechnologies(current, rel);
|
|
1571
|
+
knowledge.updateSession(rel, 'edited');
|
|
1572
|
+
productivity.analyzeEngineering(current, rel);
|
|
1573
|
+
if (previous)
|
|
1574
|
+
productivity.recordEdit(previous, current);
|
|
1575
|
+
for (const p of result.patterns) {
|
|
1576
|
+
store.addOrUpdatePattern(p.category, p.description, p.from, p.to, true, p.conditions, 'global', result.stepUsed, lang);
|
|
1577
|
+
}
|
|
1578
|
+
store.save();
|
|
1579
|
+
try {
|
|
1580
|
+
cellStore.syncFromPatternStore(store);
|
|
1581
|
+
}
|
|
1582
|
+
catch { }
|
|
1583
|
+
learned += result.patterns.length;
|
|
1584
|
+
const parts = [];
|
|
1585
|
+
if (result.patterns.length > 0)
|
|
1586
|
+
parts.push(C.success(`${result.patterns.length}p`));
|
|
1587
|
+
if (spots.length > 0)
|
|
1588
|
+
parts.push(C.warn(`${spots.length} blind spots`));
|
|
1589
|
+
console.log(C.success(` 📝 ${rel}`) + C.dim(` → ${parts.join(', ')} (total: ${learned})`));
|
|
1590
|
+
}
|
|
1591
|
+
catch { }
|
|
1592
|
+
}, 600);
|
|
1593
|
+
}
|
|
1594
|
+
function watchDir(dir) {
|
|
1595
|
+
try {
|
|
1596
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
1597
|
+
for (const e of entries) {
|
|
1598
|
+
const full = path.join(dir, e.name);
|
|
1599
|
+
if (e.isDirectory() && !['node_modules', '.fivo', '.git', 'dist', 'coverage', '.next', '.cache'].includes(e.name)) {
|
|
1600
|
+
watchDir(full);
|
|
1601
|
+
// Watch directory for new files
|
|
1602
|
+
try {
|
|
1603
|
+
fs.watch(full, (ev) => {
|
|
1604
|
+
if (ev === 'rename') {
|
|
1605
|
+
setTimeout(() => {
|
|
1606
|
+
try {
|
|
1607
|
+
const newEntries = fs.readdirSync(full, { withFileTypes: true });
|
|
1608
|
+
for (const ne of newEntries) {
|
|
1609
|
+
const nf = path.join(full, ne.name);
|
|
1610
|
+
if (ne.isFile() && /\.(ts|tsx|js|jsx|py|go|java|rb|rs|cs|php|swift|kt)$/.test(ne.name)) {
|
|
1611
|
+
if (!fileVersions.has(nf)) {
|
|
1612
|
+
fileVersions.set(nf, fs.readFileSync(nf, 'utf-8'));
|
|
1613
|
+
console.log(C.dim(` 📄 New file: ${path.relative(process.cwd(), nf)}`));
|
|
1614
|
+
}
|
|
1615
|
+
fs.watch(nf, (ev2) => { if (ev2 === 'change')
|
|
1616
|
+
processFile(nf); });
|
|
1617
|
+
}
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
catch { }
|
|
1621
|
+
}, 200);
|
|
1622
|
+
}
|
|
1623
|
+
});
|
|
1624
|
+
}
|
|
1625
|
+
catch { }
|
|
1626
|
+
}
|
|
1627
|
+
else if (e.isFile() && /\.(ts|tsx|js|jsx|py|go|java|rb|rs|cs|php|swift|kt)$/.test(e.name)) {
|
|
1628
|
+
if (!fileVersions.has(full)) {
|
|
1629
|
+
try {
|
|
1630
|
+
fileVersions.set(full, fs.readFileSync(full, 'utf-8'));
|
|
1631
|
+
}
|
|
1632
|
+
catch { }
|
|
1633
|
+
}
|
|
1634
|
+
fs.watch(full, (ev) => { if (ev === 'change')
|
|
1635
|
+
processFile(full); });
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1638
|
+
}
|
|
1639
|
+
catch { }
|
|
1640
|
+
}
|
|
1641
|
+
const thick = C.primary(hline('━'));
|
|
1642
|
+
console.clear();
|
|
1643
|
+
console.log();
|
|
1644
|
+
console.log(thick);
|
|
1645
|
+
console.log(C.primary.bold(centerText('👁️ Auto-Learn Mode')));
|
|
1646
|
+
console.log(thick);
|
|
1647
|
+
console.log();
|
|
1648
|
+
console.log(C.info(' Watching all source files for edits...'));
|
|
1649
|
+
console.log(C.dim(' Edit any file → Cell learns automatically'));
|
|
1650
|
+
console.log(C.dim(' Press Ctrl+C to stop'));
|
|
1651
|
+
console.log();
|
|
1652
|
+
console.log(thick);
|
|
1653
|
+
console.log();
|
|
1654
|
+
watchDir(process.cwd());
|
|
1655
|
+
});
|
|
1656
|
+
// ─── Auto-Learn: Git Hook ──────────────────────────────
|
|
1657
|
+
program
|
|
1658
|
+
.command('install-hook')
|
|
1659
|
+
.description('Install git hook for auto-learning on every commit')
|
|
1660
|
+
.action(() => {
|
|
1661
|
+
const gitDir = path.join(process.cwd(), '.git');
|
|
1662
|
+
if (!fs.existsSync(gitDir)) {
|
|
1663
|
+
console.log(C.error(' ❌ Not a git repository. Run `git init` first.'));
|
|
1664
|
+
return;
|
|
1665
|
+
}
|
|
1666
|
+
const hooksDir = path.join(gitDir, 'hooks');
|
|
1667
|
+
if (!fs.existsSync(hooksDir))
|
|
1668
|
+
fs.mkdirSync(hooksDir, { recursive: true });
|
|
1669
|
+
const hookPath = path.join(hooksDir, 'post-commit');
|
|
1670
|
+
const cellBin = process.argv[1];
|
|
1671
|
+
const hook = `#!/bin/sh
|
|
1672
|
+
# FIVO Cell — auto-learn on commit
|
|
1673
|
+
DIFF=$(git diff --cached --diff-algorithm=histogram)
|
|
1674
|
+
if [ -n "$DIFF" ]; then
|
|
1675
|
+
node "${cellBin}" learn --original "$(echo "$DIFF" | head -200)" --edited "committed" 2>/dev/null
|
|
1676
|
+
fi
|
|
1677
|
+
`;
|
|
1678
|
+
fs.writeFileSync(hookPath, hook, { mode: 0o755 });
|
|
1679
|
+
console.log(C.success('\n ✅ Git hook installed: post-commit'));
|
|
1680
|
+
console.log(C.info(' Every commit → Cell learns from the diff automatically.'));
|
|
1681
|
+
console.log(C.dim(' To remove: delete .git/hooks/post-commit\n'));
|
|
1682
|
+
});
|
|
1683
|
+
// ─── Auto-Start ───────────────────────────────────────
|
|
1684
|
+
program
|
|
1685
|
+
.command('autostart')
|
|
1686
|
+
.description('Auto-start Cell daemon on PC reboot')
|
|
1687
|
+
.addCommand(new commander_1.Command('on')
|
|
1688
|
+
.description('Enable auto-start on boot')
|
|
1689
|
+
.action(() => {
|
|
1690
|
+
const isWin = process.platform === 'win32';
|
|
1691
|
+
const cellCmd = process.argv[1];
|
|
1692
|
+
if (isWin) {
|
|
1693
|
+
const startupDir = path.join(os.homedir(), 'AppData', 'Roaming', 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup');
|
|
1694
|
+
if (!fs.existsSync(startupDir))
|
|
1695
|
+
fs.mkdirSync(startupDir, { recursive: true });
|
|
1696
|
+
const batPath = path.join(startupDir, 'fivo-cell-start.bat');
|
|
1697
|
+
fs.writeFileSync(batPath, `@echo off\r\n${cellCmd} start\r\n`, 'utf-8');
|
|
1698
|
+
console.log(C.success('\n ✅ Auto-start enabled (Windows)'));
|
|
1699
|
+
console.log(C.dim(` ${batPath}`));
|
|
1700
|
+
console.log(C.info(' PC reboot → Cell auto-starts\n'));
|
|
1701
|
+
}
|
|
1702
|
+
else {
|
|
1703
|
+
const bashrc = path.join(os.homedir(), '.bashrc');
|
|
1704
|
+
const line = `(cell status > /dev/null 2>&1) || ${cellCmd} start`;
|
|
1705
|
+
if (!fs.existsSync(bashrc))
|
|
1706
|
+
fs.writeFileSync(bashrc, '');
|
|
1707
|
+
const content = fs.readFileSync(bashrc, 'utf-8');
|
|
1708
|
+
if (!content.includes('cell start')) {
|
|
1709
|
+
fs.writeFileSync(bashrc, content + `\n# FIVO Cell auto-start\n${line}\n`);
|
|
1710
|
+
}
|
|
1711
|
+
console.log(C.success('\n ✅ Auto-start enabled (Linux/Mac)'));
|
|
1712
|
+
console.log(C.dim(` Added to ~/.bashrc`));
|
|
1713
|
+
console.log(C.info(' Terminal open → Cell auto-starts\n'));
|
|
1714
|
+
}
|
|
1715
|
+
}))
|
|
1716
|
+
.addCommand(new commander_1.Command('off')
|
|
1717
|
+
.description('Disable auto-start on boot')
|
|
1718
|
+
.action(() => {
|
|
1719
|
+
const isWin = process.platform === 'win32';
|
|
1720
|
+
if (isWin) {
|
|
1721
|
+
const startupDir = path.join(os.homedir(), 'AppData', 'Roaming', 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup');
|
|
1722
|
+
const batPath = path.join(startupDir, 'fivo-cell-start.bat');
|
|
1723
|
+
if (fs.existsSync(batPath))
|
|
1724
|
+
fs.unlinkSync(batPath);
|
|
1725
|
+
console.log(C.success('\n ✅ Auto-start disabled\n'));
|
|
1726
|
+
}
|
|
1727
|
+
else {
|
|
1728
|
+
const bashrc = path.join(os.homedir(), '.bashrc');
|
|
1729
|
+
if (fs.existsSync(bashrc)) {
|
|
1730
|
+
const content = fs.readFileSync(bashrc, 'utf-8')
|
|
1731
|
+
.replace(/\n# FIVO Cell auto-start\n.*\n?/, '\n')
|
|
1732
|
+
.trim();
|
|
1733
|
+
fs.writeFileSync(bashrc, content + '\n');
|
|
1734
|
+
}
|
|
1735
|
+
console.log(C.success('\n ✅ Auto-start disabled\n'));
|
|
1736
|
+
}
|
|
1737
|
+
}));
|
|
1738
|
+
// ─── Number Command Interception ──────────────────────
|
|
1739
|
+
const rawArgs = process.argv.slice(2);
|
|
1740
|
+
if (rawArgs.length === 0) {
|
|
1741
|
+
showBanner();
|
|
1742
|
+
process.exit(0);
|
|
1743
|
+
}
|
|
1744
|
+
const nums = parseNumberArg(rawArgs[0]);
|
|
1745
|
+
if (nums.length > 0) {
|
|
1746
|
+
runNumbers(nums);
|
|
1747
|
+
}
|
|
1130
1748
|
program.parse(process.argv);
|
|
1131
1749
|
//# sourceMappingURL=cli.js.map
|