fivocell 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/CONTRIBUTING.md +60 -0
- package/LICENSE +98 -0
- package/README.md +267 -0
- package/bin/cell.js +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1131 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/ab-test-framework.d.ts +33 -0
- package/dist/core/ab-test-framework.d.ts.map +1 -0
- package/dist/core/ab-test-framework.js +93 -0
- package/dist/core/ab-test-framework.js.map +1 -0
- package/dist/core/ast-extractor.d.ts +10 -0
- package/dist/core/ast-extractor.d.ts.map +1 -0
- package/dist/core/ast-extractor.js +111 -0
- package/dist/core/ast-extractor.js.map +1 -0
- package/dist/core/build-failure-predictor.d.ts +25 -0
- package/dist/core/build-failure-predictor.d.ts.map +1 -0
- package/dist/core/build-failure-predictor.js +124 -0
- package/dist/core/build-failure-predictor.js.map +1 -0
- package/dist/core/cell-pro.d.ts +28 -0
- package/dist/core/cell-pro.d.ts.map +1 -0
- package/dist/core/cell-pro.js +70 -0
- package/dist/core/cell-pro.js.map +1 -0
- package/dist/core/circular-dependency-detector.d.ts +22 -0
- package/dist/core/circular-dependency-detector.d.ts.map +1 -0
- package/dist/core/circular-dependency-detector.js +95 -0
- package/dist/core/circular-dependency-detector.js.map +1 -0
- package/dist/core/cloud-client.d.ts +40 -0
- package/dist/core/cloud-client.d.ts.map +1 -0
- package/dist/core/cloud-client.js +126 -0
- package/dist/core/cloud-client.js.map +1 -0
- package/dist/core/community-full.d.ts +38 -0
- package/dist/core/community-full.d.ts.map +1 -0
- package/dist/core/community-full.js +125 -0
- package/dist/core/community-full.js.map +1 -0
- package/dist/core/community-live.d.ts +31 -0
- package/dist/core/community-live.d.ts.map +1 -0
- package/dist/core/community-live.js +187 -0
- package/dist/core/community-live.js.map +1 -0
- package/dist/core/community-prior.d.ts +25 -0
- package/dist/core/community-prior.d.ts.map +1 -0
- package/dist/core/community-prior.js +181 -0
- package/dist/core/community-prior.js.map +1 -0
- package/dist/core/complexity-analyzer.d.ts +28 -0
- package/dist/core/complexity-analyzer.d.ts.map +1 -0
- package/dist/core/complexity-analyzer.js +110 -0
- package/dist/core/complexity-analyzer.js.map +1 -0
- package/dist/core/confidence-engine.d.ts +16 -0
- package/dist/core/confidence-engine.d.ts.map +1 -0
- package/dist/core/confidence-engine.js +155 -0
- package/dist/core/confidence-engine.js.map +1 -0
- package/dist/core/config-attribution.d.ts +30 -0
- package/dist/core/config-attribution.d.ts.map +1 -0
- package/dist/core/config-attribution.js +288 -0
- package/dist/core/config-attribution.js.map +1 -0
- package/dist/core/conflict-detector.d.ts +43 -0
- package/dist/core/conflict-detector.d.ts.map +1 -0
- package/dist/core/conflict-detector.js +205 -0
- package/dist/core/conflict-detector.js.map +1 -0
- package/dist/core/context-restore.d.ts +25 -0
- package/dist/core/context-restore.d.ts.map +1 -0
- package/dist/core/context-restore.js +129 -0
- package/dist/core/context-restore.js.map +1 -0
- package/dist/core/cross-domain-projections.d.ts +19 -0
- package/dist/core/cross-domain-projections.d.ts.map +1 -0
- package/dist/core/cross-domain-projections.js +69 -0
- package/dist/core/cross-domain-projections.js.map +1 -0
- package/dist/core/cross-language-mappings.d.ts +15 -0
- package/dist/core/cross-language-mappings.d.ts.map +1 -0
- package/dist/core/cross-language-mappings.js +202 -0
- package/dist/core/cross-language-mappings.js.map +1 -0
- package/dist/core/cross-project-sync.d.ts +24 -0
- package/dist/core/cross-project-sync.d.ts.map +1 -0
- package/dist/core/cross-project-sync.js +132 -0
- package/dist/core/cross-project-sync.js.map +1 -0
- package/dist/core/dead-code-detector.d.ts +20 -0
- package/dist/core/dead-code-detector.d.ts.map +1 -0
- package/dist/core/dead-code-detector.js +106 -0
- package/dist/core/dead-code-detector.js.map +1 -0
- package/dist/core/decay-engine.d.ts +14 -0
- package/dist/core/decay-engine.d.ts.map +1 -0
- package/dist/core/decay-engine.js +41 -0
- package/dist/core/decay-engine.js.map +1 -0
- package/dist/core/dependency-health-checker.d.ts +23 -0
- package/dist/core/dependency-health-checker.d.ts.map +1 -0
- package/dist/core/dependency-health-checker.js +94 -0
- package/dist/core/dependency-health-checker.js.map +1 -0
- package/dist/core/duplication-detector.d.ts +29 -0
- package/dist/core/duplication-detector.d.ts.map +1 -0
- package/dist/core/duplication-detector.js +115 -0
- package/dist/core/duplication-detector.js.map +1 -0
- package/dist/core/enterprise-features.d.ts +32 -0
- package/dist/core/enterprise-features.d.ts.map +1 -0
- package/dist/core/enterprise-features.js +87 -0
- package/dist/core/enterprise-features.js.map +1 -0
- package/dist/core/enterprise.d.ts +27 -0
- package/dist/core/enterprise.d.ts.map +1 -0
- package/dist/core/enterprise.js +41 -0
- package/dist/core/enterprise.js.map +1 -0
- package/dist/core/error-predictor.d.ts +16 -0
- package/dist/core/error-predictor.d.ts.map +1 -0
- package/dist/core/error-predictor.js +123 -0
- package/dist/core/error-predictor.js.map +1 -0
- package/dist/core/extraction-cascade.d.ts +18 -0
- package/dist/core/extraction-cascade.d.ts.map +1 -0
- package/dist/core/extraction-cascade.js +48 -0
- package/dist/core/extraction-cascade.js.map +1 -0
- package/dist/core/git-branch-pregenerator.d.ts +23 -0
- package/dist/core/git-branch-pregenerator.d.ts.map +1 -0
- package/dist/core/git-branch-pregenerator.js +100 -0
- package/dist/core/git-branch-pregenerator.js.map +1 -0
- package/dist/core/handoff-detector.d.ts +24 -0
- package/dist/core/handoff-detector.d.ts.map +1 -0
- package/dist/core/handoff-detector.js +116 -0
- package/dist/core/handoff-detector.js.map +1 -0
- package/dist/core/identity-resolver.d.ts +7 -0
- package/dist/core/identity-resolver.d.ts.map +1 -0
- package/dist/core/identity-resolver.js +82 -0
- package/dist/core/identity-resolver.js.map +1 -0
- package/dist/core/interruption-recovery.d.ts +26 -0
- package/dist/core/interruption-recovery.d.ts.map +1 -0
- package/dist/core/interruption-recovery.js +135 -0
- package/dist/core/interruption-recovery.js.map +1 -0
- package/dist/core/knowledge-silo-detector.d.ts +20 -0
- package/dist/core/knowledge-silo-detector.d.ts.map +1 -0
- package/dist/core/knowledge-silo-detector.js +117 -0
- package/dist/core/knowledge-silo-detector.js.map +1 -0
- package/dist/core/language-switch-assistant.d.ts +18 -0
- package/dist/core/language-switch-assistant.d.ts.map +1 -0
- package/dist/core/language-switch-assistant.js +98 -0
- package/dist/core/language-switch-assistant.js.map +1 -0
- package/dist/core/merge-conflict-predictor.d.ts +18 -0
- package/dist/core/merge-conflict-predictor.d.ts.map +1 -0
- package/dist/core/merge-conflict-predictor.js +98 -0
- package/dist/core/merge-conflict-predictor.js.map +1 -0
- package/dist/core/model-intelligence.d.ts +24 -0
- package/dist/core/model-intelligence.d.ts.map +1 -0
- package/dist/core/model-intelligence.js +73 -0
- package/dist/core/model-intelligence.js.map +1 -0
- package/dist/core/next-action-predictor.d.ts +26 -0
- package/dist/core/next-action-predictor.d.ts.map +1 -0
- package/dist/core/next-action-predictor.js +136 -0
- package/dist/core/next-action-predictor.js.map +1 -0
- package/dist/core/offline-queue.d.ts +40 -0
- package/dist/core/offline-queue.d.ts.map +1 -0
- package/dist/core/offline-queue.js +193 -0
- package/dist/core/offline-queue.js.map +1 -0
- package/dist/core/pattern-store.d.ts +27 -0
- package/dist/core/pattern-store.d.ts.map +1 -0
- package/dist/core/pattern-store.js +233 -0
- package/dist/core/pattern-store.js.map +1 -0
- package/dist/core/performance-predictor.d.ts +16 -0
- package/dist/core/performance-predictor.d.ts.map +1 -0
- package/dist/core/performance-predictor.js +111 -0
- package/dist/core/performance-predictor.js.map +1 -0
- package/dist/core/platt-calibration.d.ts +18 -0
- package/dist/core/platt-calibration.d.ts.map +1 -0
- package/dist/core/platt-calibration.js +89 -0
- package/dist/core/platt-calibration.js.map +1 -0
- package/dist/core/pr-review-assistant.d.ts +17 -0
- package/dist/core/pr-review-assistant.d.ts.map +1 -0
- package/dist/core/pr-review-assistant.js +85 -0
- package/dist/core/pr-review-assistant.js.map +1 -0
- package/dist/core/prompt-conditioner.d.ts +10 -0
- package/dist/core/prompt-conditioner.d.ts.map +1 -0
- package/dist/core/prompt-conditioner.js +54 -0
- package/dist/core/prompt-conditioner.js.map +1 -0
- package/dist/core/realtime-guardian.d.ts +19 -0
- package/dist/core/realtime-guardian.d.ts.map +1 -0
- package/dist/core/realtime-guardian.js +64 -0
- package/dist/core/realtime-guardian.js.map +1 -0
- package/dist/core/regex-extractor.d.ts +10 -0
- package/dist/core/regex-extractor.d.ts.map +1 -0
- package/dist/core/regex-extractor.js +141 -0
- package/dist/core/regex-extractor.js.map +1 -0
- package/dist/core/scale-tester.d.ts +20 -0
- package/dist/core/scale-tester.d.ts.map +1 -0
- package/dist/core/scale-tester.js +79 -0
- package/dist/core/scale-tester.js.map +1 -0
- package/dist/core/security-predictor.d.ts +15 -0
- package/dist/core/security-predictor.d.ts.map +1 -0
- package/dist/core/security-predictor.js +91 -0
- package/dist/core/security-predictor.js.map +1 -0
- package/dist/core/session-recovery.d.ts +19 -0
- package/dist/core/session-recovery.d.ts.map +1 -0
- package/dist/core/session-recovery.js +138 -0
- package/dist/core/session-recovery.js.map +1 -0
- package/dist/core/signal-capture.d.ts +22 -0
- package/dist/core/signal-capture.d.ts.map +1 -0
- package/dist/core/signal-capture.js +76 -0
- package/dist/core/signal-capture.js.map +1 -0
- package/dist/core/solution-index.d.ts +33 -0
- package/dist/core/solution-index.d.ts.map +1 -0
- package/dist/core/solution-index.js +175 -0
- package/dist/core/solution-index.js.map +1 -0
- package/dist/core/standup-generator.d.ts +17 -0
- package/dist/core/standup-generator.d.ts.map +1 -0
- package/dist/core/standup-generator.js +84 -0
- package/dist/core/standup-generator.js.map +1 -0
- package/dist/core/team-composer.d.ts +29 -0
- package/dist/core/team-composer.d.ts.map +1 -0
- package/dist/core/team-composer.js +150 -0
- package/dist/core/team-composer.js.map +1 -0
- package/dist/core/test-anticipator.d.ts +17 -0
- package/dist/core/test-anticipator.d.ts.map +1 -0
- package/dist/core/test-anticipator.js +113 -0
- package/dist/core/test-anticipator.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +19 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +199 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/server.d.ts +81 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +505 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/watchdog.d.ts +2 -0
- package/dist/daemon/watchdog.d.ts.map +1 -0
- package/dist/daemon/watchdog.js +93 -0
- package/dist/daemon/watchdog.js.map +1 -0
- package/dist/daemon/websocket.d.ts +5 -0
- package/dist/daemon/websocket.d.ts.map +1 -0
- package/dist/daemon/websocket.js +90 -0
- package/dist/daemon/websocket.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +88 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +28 -0
- package/dist/types.js.map +1 -0
- package/extensions/jetbrains/plugin.json +9 -0
- package/extensions/shell/copilot-sync.js +59 -0
- package/extensions/shell/install.sh +38 -0
- package/extensions/shell/watcher.js +113 -0
- package/extensions/vscode/.vscodeignore +5 -0
- package/extensions/vscode/dist/daemon-client.js +94 -0
- package/extensions/vscode/dist/diff-tracker.js +94 -0
- package/extensions/vscode/dist/extension.js +100 -0
- package/extensions/vscode/dist/status-bar.js +70 -0
- package/extensions/vscode/package-lock.json +40 -0
- package/extensions/vscode/package.json +27 -0
- package/package.json +53 -0
- package/packages/mcp-server/dist/server.d.ts +2 -0
- package/packages/mcp-server/dist/server.js +213 -0
- package/packages/mcp-server/package-lock.json +970 -0
- package/packages/mcp-server/package.json +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-store.js","sourceRoot":"","sources":["../../src/core/pattern-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface PerformancePrediction {
|
|
2
|
+
type: 'n_plus_one' | 'eager_loading' | 'memory_leak' | 'large_bundle';
|
|
3
|
+
line: number;
|
|
4
|
+
severity: 'high' | 'medium' | 'low';
|
|
5
|
+
message: string;
|
|
6
|
+
suggestion: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class PerformancePredictor {
|
|
9
|
+
predict(code: string): PerformancePrediction[];
|
|
10
|
+
private checkNPlusOne;
|
|
11
|
+
private checkEagerLoading;
|
|
12
|
+
private checkMemoryLeak;
|
|
13
|
+
private checkLargeBundle;
|
|
14
|
+
private checkForRelationAccess;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=performance-predictor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-predictor.d.ts","sourceRoot":"","sources":["../../src/core/performance-predictor.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAwB9C,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,sBAAsB;CAO/B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PerformancePredictor = void 0;
|
|
4
|
+
class PerformancePredictor {
|
|
5
|
+
predict(code) {
|
|
6
|
+
const predictions = [];
|
|
7
|
+
const lines = code.split('\n');
|
|
8
|
+
for (let i = 0; i < lines.length; i++) {
|
|
9
|
+
const line = lines[i];
|
|
10
|
+
const lineNum = i + 1;
|
|
11
|
+
const n1Prediction = this.checkNPlusOne(line, lineNum, lines, i);
|
|
12
|
+
if (n1Prediction)
|
|
13
|
+
predictions.push(n1Prediction);
|
|
14
|
+
const eagerPrediction = this.checkEagerLoading(line, lineNum, lines, i);
|
|
15
|
+
if (eagerPrediction)
|
|
16
|
+
predictions.push(eagerPrediction);
|
|
17
|
+
const memoryPrediction = this.checkMemoryLeak(line, lineNum, lines, i);
|
|
18
|
+
if (memoryPrediction)
|
|
19
|
+
predictions.push(memoryPrediction);
|
|
20
|
+
const bundlePrediction = this.checkLargeBundle(line, lineNum);
|
|
21
|
+
if (bundlePrediction)
|
|
22
|
+
predictions.push(bundlePrediction);
|
|
23
|
+
}
|
|
24
|
+
return predictions;
|
|
25
|
+
}
|
|
26
|
+
checkNPlusOne(line, lineNum, allLines, idx) {
|
|
27
|
+
if (/\.forEach\s*\(/.test(line) || /\.map\s*\(/.test(line)) {
|
|
28
|
+
const bodyStart = idx;
|
|
29
|
+
const bodyEnd = Math.min(allLines.length, idx + 10);
|
|
30
|
+
const bodyLines = allLines.slice(bodyStart, bodyEnd);
|
|
31
|
+
const hasDbCall = bodyLines.some((l) => /\b(find|findOne|findAll|findBy|query|execute)\s*\(/.test(l));
|
|
32
|
+
if (hasDbCall) {
|
|
33
|
+
return {
|
|
34
|
+
type: 'n_plus_one',
|
|
35
|
+
line: lineNum,
|
|
36
|
+
severity: 'high',
|
|
37
|
+
message: 'Potential N+1 query: database call inside loop',
|
|
38
|
+
suggestion: 'Use eager loading or batch query: include: [relation] or findAll({ where: { id: ids } })',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
checkEagerLoading(line, lineNum, allLines, idx) {
|
|
45
|
+
if (/\bfindAll?\s*\(\s*\{/.test(line) && !/\binclude\s*:/.test(line)) {
|
|
46
|
+
const contextLines = allLines && idx !== undefined ? allLines.slice(idx, Math.min(allLines.length, idx + 15)) : [line];
|
|
47
|
+
const hasRelationAccess = contextLines.some((l) => this.checkForRelationAccess(l));
|
|
48
|
+
if (hasRelationAccess) {
|
|
49
|
+
return {
|
|
50
|
+
type: 'eager_loading',
|
|
51
|
+
line: lineNum,
|
|
52
|
+
severity: 'medium',
|
|
53
|
+
message: 'Missing eager loading: related data may cause extra queries',
|
|
54
|
+
suggestion: 'Add include: ["relation"] to prevent N+1 queries',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
checkMemoryLeak(line, lineNum, allLines, idx) {
|
|
61
|
+
if (/setInterval\s*\(/.test(line)) {
|
|
62
|
+
const contextLines = allLines && idx !== undefined ? allLines.slice(idx, Math.min(allLines.length, idx + 20)) : [line];
|
|
63
|
+
if (!contextLines.some((l) => /clearInterval/.test(l))) {
|
|
64
|
+
return {
|
|
65
|
+
type: 'memory_leak',
|
|
66
|
+
line: lineNum,
|
|
67
|
+
severity: 'high',
|
|
68
|
+
message: 'Potential memory leak: setInterval without clearInterval',
|
|
69
|
+
suggestion: 'Store interval ID and call clearInterval in cleanup/useEffect return',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (/addEventListener\s*\(/.test(line)) {
|
|
74
|
+
const contextLines = allLines && idx !== undefined ? allLines.slice(idx, Math.min(allLines.length, idx + 20)) : [line];
|
|
75
|
+
if (!contextLines.some((l) => /removeEventListener/.test(l))) {
|
|
76
|
+
return {
|
|
77
|
+
type: 'memory_leak',
|
|
78
|
+
line: lineNum,
|
|
79
|
+
severity: 'medium',
|
|
80
|
+
message: 'Potential memory leak: addEventListener without removeEventListener',
|
|
81
|
+
suggestion: 'Call removeEventListener in cleanup function',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
checkLargeBundle(line, lineNum) {
|
|
88
|
+
if (/import\s+.*from\s+['"](\w+)['"]/.test(line)) {
|
|
89
|
+
const match = line.match(/import\s+\*\s+as\s+(\w+)\s+from/);
|
|
90
|
+
if (match) {
|
|
91
|
+
return {
|
|
92
|
+
type: 'large_bundle',
|
|
93
|
+
line: lineNum,
|
|
94
|
+
severity: 'low',
|
|
95
|
+
message: `Wildcard import of '${match[1]}' may increase bundle size`,
|
|
96
|
+
suggestion: `Import only needed exports: import { specificExport } from '${match[1]}'`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
checkForRelationAccess(line) {
|
|
103
|
+
const relationPatterns = [
|
|
104
|
+
/\b(?:include|through|belongsTo|hasMany|hasOne)\b/,
|
|
105
|
+
/\b(?:user|author|owner|creator|parent|children)\b/,
|
|
106
|
+
];
|
|
107
|
+
return relationPatterns.some((p) => p.test(line));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.PerformancePredictor = PerformancePredictor;
|
|
111
|
+
//# sourceMappingURL=performance-predictor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-predictor.js","sourceRoot":"","sources":["../../src/core/performance-predictor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare class PlattCalibration {
|
|
2
|
+
private communityA;
|
|
3
|
+
private communityB;
|
|
4
|
+
private personalA;
|
|
5
|
+
private personalB;
|
|
6
|
+
private predictionCount;
|
|
7
|
+
constructor(communityA?: number, communityB?: number);
|
|
8
|
+
calibrate(rawConfidence: number): number;
|
|
9
|
+
getCalibrationPhase(): string;
|
|
10
|
+
getCalibrationDisplay(): string;
|
|
11
|
+
getDowngradedTier(tier: string): string;
|
|
12
|
+
recordPrediction(rawConfidence: number, wasCorrect: boolean): void;
|
|
13
|
+
getPredictionCount(): number;
|
|
14
|
+
setCommunityParams(a: number, b: number): void;
|
|
15
|
+
private plattScale;
|
|
16
|
+
private updatePersonalParams;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=platt-calibration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platt-calibration.d.ts","sourceRoot":"","sources":["../../src/core/platt-calibration.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;gBAEpB,UAAU,GAAE,MAAU,EAAE,UAAU,GAAE,MAAU;IAQ1D,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAkBxC,mBAAmB,IAAI,MAAM;IAM7B,qBAAqB,IAAI,MAAM;IAgB/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAavC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAQlE,kBAAkB,IAAI,MAAM;IAI5B,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,oBAAoB;CAO7B"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlattCalibration = void 0;
|
|
4
|
+
class PlattCalibration {
|
|
5
|
+
communityA;
|
|
6
|
+
communityB;
|
|
7
|
+
personalA;
|
|
8
|
+
personalB;
|
|
9
|
+
predictionCount;
|
|
10
|
+
constructor(communityA = 0, communityB = 1) {
|
|
11
|
+
this.communityA = communityA;
|
|
12
|
+
this.communityB = communityB;
|
|
13
|
+
this.personalA = 0;
|
|
14
|
+
this.personalB = 1;
|
|
15
|
+
this.predictionCount = 0;
|
|
16
|
+
}
|
|
17
|
+
calibrate(rawConfidence) {
|
|
18
|
+
if (this.predictionCount < 100) {
|
|
19
|
+
const calibrated = this.plattScale(rawConfidence, this.communityA, this.communityB);
|
|
20
|
+
return Math.round(calibrated * 1000) / 1000;
|
|
21
|
+
}
|
|
22
|
+
if (this.predictionCount < 1000) {
|
|
23
|
+
const weight = Math.min(1.0, (this.predictionCount - 100) / 900);
|
|
24
|
+
const aBlended = (1 - weight) * this.communityA + weight * this.personalA;
|
|
25
|
+
const bBlended = (1 - weight) * this.communityB + weight * this.personalB;
|
|
26
|
+
const calibrated = this.plattScale(rawConfidence, aBlended, bBlended);
|
|
27
|
+
return Math.round(calibrated * 1000) / 1000;
|
|
28
|
+
}
|
|
29
|
+
const calibrated = this.plattScale(rawConfidence, this.personalA, this.personalB);
|
|
30
|
+
return Math.round(calibrated * 1000) / 1000;
|
|
31
|
+
}
|
|
32
|
+
getCalibrationPhase() {
|
|
33
|
+
if (this.predictionCount < 100)
|
|
34
|
+
return 'early';
|
|
35
|
+
if (this.predictionCount < 1000)
|
|
36
|
+
return 'blending';
|
|
37
|
+
return 'calibrated';
|
|
38
|
+
}
|
|
39
|
+
getCalibrationDisplay() {
|
|
40
|
+
const phase = this.getCalibrationPhase();
|
|
41
|
+
switch (phase) {
|
|
42
|
+
case 'early':
|
|
43
|
+
return '(early estimate, calibrating...)';
|
|
44
|
+
case 'blending':
|
|
45
|
+
const pct = Math.round(((this.predictionCount - 100) / 900) * 100);
|
|
46
|
+
return `(calibrating: ${pct}% complete)`;
|
|
47
|
+
case 'calibrated':
|
|
48
|
+
return '';
|
|
49
|
+
default:
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
getDowngradedTier(tier) {
|
|
54
|
+
if (this.predictionCount >= 100)
|
|
55
|
+
return tier;
|
|
56
|
+
const downgrade = {
|
|
57
|
+
strong: 'moderate',
|
|
58
|
+
moderate: 'weak',
|
|
59
|
+
weak: 'uncertain',
|
|
60
|
+
uncertain: 'uncertain',
|
|
61
|
+
};
|
|
62
|
+
return downgrade[tier] || tier;
|
|
63
|
+
}
|
|
64
|
+
recordPrediction(rawConfidence, wasCorrect) {
|
|
65
|
+
this.predictionCount++;
|
|
66
|
+
if (this.predictionCount >= 100) {
|
|
67
|
+
this.updatePersonalParams(rawConfidence, wasCorrect);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
getPredictionCount() {
|
|
71
|
+
return this.predictionCount;
|
|
72
|
+
}
|
|
73
|
+
setCommunityParams(a, b) {
|
|
74
|
+
this.communityA = a;
|
|
75
|
+
this.communityB = b;
|
|
76
|
+
}
|
|
77
|
+
plattScale(x, a, b) {
|
|
78
|
+
return 1 / (1 + Math.exp(a * x + b));
|
|
79
|
+
}
|
|
80
|
+
updatePersonalParams(rawConfidence, wasCorrect) {
|
|
81
|
+
const target = wasCorrect ? 1 : 0;
|
|
82
|
+
const lr = 0.01;
|
|
83
|
+
const logit = Math.log(Math.max(rawConfidence, 0.001) / Math.max(1 - rawConfidence, 0.001));
|
|
84
|
+
this.personalA += lr * (target - this.plattScale(rawConfidence, this.personalA, this.personalB)) * logit;
|
|
85
|
+
this.personalB += lr * (target - this.plattScale(rawConfidence, this.personalA, this.personalB));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.PlattCalibration = PlattCalibration;
|
|
89
|
+
//# sourceMappingURL=platt-calibration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platt-calibration.js","sourceRoot":"","sources":["../../src/core/platt-calibration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Pattern } from '../types';
|
|
2
|
+
export interface PRSummary {
|
|
3
|
+
title: string;
|
|
4
|
+
filesChanged: number;
|
|
5
|
+
linesAdded: number;
|
|
6
|
+
linesRemoved: number;
|
|
7
|
+
patternsDetected: Pattern[];
|
|
8
|
+
potentialBugs: string[];
|
|
9
|
+
patternDeviations: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare class PRReviewAssistant {
|
|
12
|
+
generateSummary(title: string, diff: string, patterns: Pattern[]): PRSummary;
|
|
13
|
+
detectPotentialBugs(diff: string): string[];
|
|
14
|
+
detectPatternDeviations(diff: string, patterns: Pattern[]): string[];
|
|
15
|
+
getReviewChecklist(): string[];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=pr-review-assistant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-review-assistant.d.ts","sourceRoot":"","sources":["../../src/core/pr-review-assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,iBAAiB;IAC5B,eAAe,CACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,SAAS;IAyBZ,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IA4B3C,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE;IA0BpE,kBAAkB,IAAI,MAAM,EAAE;CAW/B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PRReviewAssistant = void 0;
|
|
4
|
+
class PRReviewAssistant {
|
|
5
|
+
generateSummary(title, diff, patterns) {
|
|
6
|
+
const lines = diff.split('\n');
|
|
7
|
+
const added = lines.filter((l) => l.startsWith('+') && !l.startsWith('+++')).length;
|
|
8
|
+
const removed = lines.filter((l) => l.startsWith('-') && !l.startsWith('---')).length;
|
|
9
|
+
const files = new Set();
|
|
10
|
+
for (const line of lines) {
|
|
11
|
+
const match = line.match(/^\+\+\+\s+b\/(.+)/);
|
|
12
|
+
if (match)
|
|
13
|
+
files.add(match[1]);
|
|
14
|
+
}
|
|
15
|
+
const potentialBugs = this.detectPotentialBugs(diff);
|
|
16
|
+
const patternDeviations = this.detectPatternDeviations(diff, patterns);
|
|
17
|
+
return {
|
|
18
|
+
title,
|
|
19
|
+
filesChanged: files.size,
|
|
20
|
+
linesAdded: added,
|
|
21
|
+
linesRemoved: removed,
|
|
22
|
+
patternsDetected: patterns.filter(p => p.confidence.mean >= 0.5),
|
|
23
|
+
potentialBugs,
|
|
24
|
+
patternDeviations,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
detectPotentialBugs(diff) {
|
|
28
|
+
const bugs = [];
|
|
29
|
+
const lines = diff.split('\n');
|
|
30
|
+
for (const line of lines) {
|
|
31
|
+
if (!line.startsWith('+') || line.startsWith('+++'))
|
|
32
|
+
continue;
|
|
33
|
+
const code = line.substring(1);
|
|
34
|
+
if (/console\.(log|warn|error)/.test(code)) {
|
|
35
|
+
bugs.push(`Debug statement left in: ${code.trim()}`);
|
|
36
|
+
}
|
|
37
|
+
if (/\.only\(/.test(code)) {
|
|
38
|
+
bugs.push(`Test isolation issue: .only() found: ${code.trim()}`);
|
|
39
|
+
}
|
|
40
|
+
if (/TODO|FIXME|HACK/.test(code)) {
|
|
41
|
+
bugs.push(`Unresolved TODO/FIXME: ${code.trim()}`);
|
|
42
|
+
}
|
|
43
|
+
if (/setTimeout\(.*,\s*0\)/.test(code)) {
|
|
44
|
+
bugs.push(`Potential race condition: setTimeout with 0ms: ${code.trim()}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return bugs;
|
|
48
|
+
}
|
|
49
|
+
detectPatternDeviations(diff, patterns) {
|
|
50
|
+
const deviations = [];
|
|
51
|
+
const lines = diff.split('\n');
|
|
52
|
+
for (const line of lines) {
|
|
53
|
+
if (!line.startsWith('+') || line.startsWith('+++'))
|
|
54
|
+
continue;
|
|
55
|
+
const code = line.substring(1);
|
|
56
|
+
for (const pattern of patterns) {
|
|
57
|
+
if (pattern.confidence.mean >= 0.7) {
|
|
58
|
+
if (pattern.category === 'variable_declaration' && /\bvar\s+/.test(code)) {
|
|
59
|
+
deviations.push(`Pattern deviation: uses 'var' but team prefers '${pattern.to}' (${pattern.confidence.mean})`);
|
|
60
|
+
}
|
|
61
|
+
if (pattern.category === 'function_style' && /\bfunction\b/.test(code)) {
|
|
62
|
+
deviations.push(`Pattern deviation: uses 'function' but team prefers '${pattern.to}' (${pattern.confidence.mean})`);
|
|
63
|
+
}
|
|
64
|
+
if (pattern.category === 'equality' && /(?<!=)=(?!=)/.test(code)) {
|
|
65
|
+
deviations.push(`Pattern deviation: uses '==' but team prefers '${pattern.to}' (${pattern.confidence.mean})`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return deviations;
|
|
71
|
+
}
|
|
72
|
+
getReviewChecklist() {
|
|
73
|
+
return [
|
|
74
|
+
'Code follows team patterns and conventions',
|
|
75
|
+
'Tests cover new functionality',
|
|
76
|
+
'No debug statements or .only() in tests',
|
|
77
|
+
'Error handling is present for async operations',
|
|
78
|
+
'No hardcoded secrets or credentials',
|
|
79
|
+
'Performance implications considered',
|
|
80
|
+
'Documentation updated if needed',
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.PRReviewAssistant = PRReviewAssistant;
|
|
85
|
+
//# sourceMappingURL=pr-review-assistant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-review-assistant.js","sourceRoot":"","sources":["../../src/core/pr-review-assistant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Pattern } from '../types';
|
|
2
|
+
export declare class PromptConditioner {
|
|
3
|
+
private maxTokens;
|
|
4
|
+
constructor(maxTokens?: number);
|
|
5
|
+
conditionPrompt(basePrompt: string, patterns: Pattern[]): string;
|
|
6
|
+
buildTasteContext(patterns: Pattern[]): string;
|
|
7
|
+
getBypassMessage(): string;
|
|
8
|
+
isTasteApplicable(patterns: Pattern[]): boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=prompt-conditioner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-conditioner.d.ts","sourceRoot":"","sources":["../../src/core/prompt-conditioner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAAW;IAIlC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM;IAahE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM;IAmC9C,gBAAgB,IAAI,MAAM;IAI1B,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO;CAGhD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PromptConditioner = void 0;
|
|
4
|
+
class PromptConditioner {
|
|
5
|
+
maxTokens;
|
|
6
|
+
constructor(maxTokens = 50) {
|
|
7
|
+
this.maxTokens = maxTokens;
|
|
8
|
+
}
|
|
9
|
+
conditionPrompt(basePrompt, patterns) {
|
|
10
|
+
if (basePrompt.includes('[TASTE:')) {
|
|
11
|
+
return basePrompt;
|
|
12
|
+
}
|
|
13
|
+
const tasteContext = this.buildTasteContext(patterns);
|
|
14
|
+
if (!tasteContext) {
|
|
15
|
+
return basePrompt;
|
|
16
|
+
}
|
|
17
|
+
return `${tasteContext}\n\n${basePrompt}`;
|
|
18
|
+
}
|
|
19
|
+
buildTasteContext(patterns) {
|
|
20
|
+
const applicablePatterns = patterns.filter((p) => p.confidence.mean >= 0.5);
|
|
21
|
+
if (applicablePatterns.length === 0) {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
const sorted = applicablePatterns.sort((a, b) => b.confidence.mean - a.confidence.mean);
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
const entries = [];
|
|
27
|
+
let tokenEstimate = 0;
|
|
28
|
+
for (const pattern of sorted) {
|
|
29
|
+
const entry = `${pattern.description.toLowerCase()}(${pattern.confidence.mean})`;
|
|
30
|
+
const key = `${pattern.category}|${pattern.from}|${pattern.to}`;
|
|
31
|
+
if (seen.has(key))
|
|
32
|
+
continue;
|
|
33
|
+
seen.add(key);
|
|
34
|
+
const entryTokens = Math.ceil(entry.length / 3);
|
|
35
|
+
if (tokenEstimate + entryTokens > this.maxTokens) {
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
entries.push(entry);
|
|
39
|
+
tokenEstimate += entryTokens;
|
|
40
|
+
}
|
|
41
|
+
if (entries.length === 0) {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
return `[TASTE: ${entries.join(', ')}]`;
|
|
45
|
+
}
|
|
46
|
+
getBypassMessage() {
|
|
47
|
+
return '[Use my taste: ON] [Skip for this request] [Pause for this session]';
|
|
48
|
+
}
|
|
49
|
+
isTasteApplicable(patterns) {
|
|
50
|
+
return patterns.some((p) => p.confidence.mean >= 0.5);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.PromptConditioner = PromptConditioner;
|
|
54
|
+
//# sourceMappingURL=prompt-conditioner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-conditioner.js","sourceRoot":"","sources":["../../src/core/prompt-conditioner.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IACpB,SAAS,CAAS;IAE1B,YAAY,YAAoB,EAAE;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,eAAe,CAAC,UAAkB,EAAE,QAAmB;QACrD,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,GAAG,YAAY,OAAO,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,QAAmB;QACnC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QAE5E,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAExF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;YACjF,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEhD,IAAI,aAAa,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,aAAa,IAAI,WAAW,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,gBAAgB;QACd,OAAO,qEAAqE,CAAC;IAC/E,CAAC;IAED,iBAAiB,CAAC,QAAmB;QACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IACxD,CAAC;CACF;AA9DD,8CA8DC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface GuardianAlert {
|
|
2
|
+
type: 'critical' | 'warning' | 'info' | 'predictive';
|
|
3
|
+
line: number;
|
|
4
|
+
message: string;
|
|
5
|
+
confidence: number;
|
|
6
|
+
patternId?: string;
|
|
7
|
+
}
|
|
8
|
+
interface GuardianStats {
|
|
9
|
+
totalAlerts: number;
|
|
10
|
+
falsePositives: number;
|
|
11
|
+
fpr: number;
|
|
12
|
+
dismissed: number;
|
|
13
|
+
mode: 'full' | 'critical-only';
|
|
14
|
+
}
|
|
15
|
+
export declare function analyzeLine(code: string, lineNumber: number, communityPrior?: Map<string, number>): GuardianAlert[];
|
|
16
|
+
export declare function recordFeedback(alertMessage: string, wasHelpful: boolean): void;
|
|
17
|
+
export declare function getStats(): GuardianStats;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=realtime-guardian.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-guardian.d.ts","sourceRoot":"","sources":["../../src/core/realtime-guardian.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;CAChC;AAYD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,EAAE,CAkCnH;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAU9E;AAED,wBAAgB,QAAQ,IAAI,aAAa,CAExC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Real-Time Guardian — Streaming code analysis via WebSocket
|
|
3
|
+
// Detects: SQL injection, hardcoded secrets, XSS, null refs, build failures
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.analyzeLine = analyzeLine;
|
|
6
|
+
exports.recordFeedback = recordFeedback;
|
|
7
|
+
exports.getStats = getStats;
|
|
8
|
+
let totalAlerts = 0;
|
|
9
|
+
let falsePositives = 0;
|
|
10
|
+
let userDismissed = new Map();
|
|
11
|
+
let mode = 'full';
|
|
12
|
+
const SQL_INJECTION_PATTERN = /(\bselect\b.*\bfrom\b.*\+|execute\s*\(\s*['"]\s*\+|\.query\s*\(\s*['"].*\+)/i;
|
|
13
|
+
const HARDCODED_SECRET = /(api[_-]?key|secret|password|token)\s*[:=]\s*['"][A-Za-z0-9_\-]{8,}['"]/i;
|
|
14
|
+
const NULL_REF_PATTERN = /(\w+)\.(\w+)\s*\(\)(?!.*\?\.)/;
|
|
15
|
+
const XSS_PATTERN = /innerHTML\s*=|dangerouslySetInnerHTML|document\.write\s*\(/i;
|
|
16
|
+
function analyzeLine(code, lineNumber, communityPrior) {
|
|
17
|
+
const alerts = [];
|
|
18
|
+
if (SQL_INJECTION_PATTERN.test(code)) {
|
|
19
|
+
alerts.push({ type: 'critical', line: lineNumber, message: 'Potential SQL injection', confidence: 0.95 });
|
|
20
|
+
}
|
|
21
|
+
if (HARDCODED_SECRET.test(code)) {
|
|
22
|
+
alerts.push({ type: 'critical', line: lineNumber, message: 'Hardcoded secret detected', confidence: 0.92 });
|
|
23
|
+
}
|
|
24
|
+
if (XSS_PATTERN.test(code)) {
|
|
25
|
+
alerts.push({ type: 'critical', line: lineNumber, message: 'Potential XSS vector', confidence: 0.88 });
|
|
26
|
+
}
|
|
27
|
+
if (NULL_REF_PATTERN.test(code) && !code.includes('?.')) {
|
|
28
|
+
alerts.push({ type: 'warning', line: lineNumber, message: 'Potential null reference', confidence: 0.75 });
|
|
29
|
+
}
|
|
30
|
+
if (communityPrior) {
|
|
31
|
+
for (const [patternId, failRate] of communityPrior) {
|
|
32
|
+
if (code.includes(patternId) && failRate > 0.7) {
|
|
33
|
+
alerts.push({ type: 'predictive', line: lineNumber, message: `Pattern caused build failure ${Math.round(failRate * 100)}% of the time`, confidence: failRate, patternId });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return alerts.filter(a => {
|
|
38
|
+
if (mode === 'critical-only')
|
|
39
|
+
return a.type === 'critical';
|
|
40
|
+
if (a.confidence < 0.85)
|
|
41
|
+
return false;
|
|
42
|
+
const dismissCount = userDismissed.get(a.message) || 0;
|
|
43
|
+
if (dismissCount >= 3)
|
|
44
|
+
return false;
|
|
45
|
+
return true;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function recordFeedback(alertMessage, wasHelpful) {
|
|
49
|
+
totalAlerts++;
|
|
50
|
+
if (!wasHelpful) {
|
|
51
|
+
falsePositives++;
|
|
52
|
+
const count = (userDismissed.get(alertMessage) || 0) + 1;
|
|
53
|
+
userDismissed.set(alertMessage, count);
|
|
54
|
+
}
|
|
55
|
+
const fpr = totalAlerts > 0 ? falsePositives / totalAlerts : 0;
|
|
56
|
+
if (fpr > 0.10)
|
|
57
|
+
mode = 'critical-only';
|
|
58
|
+
else if (fpr < 0.05 && mode === 'critical-only')
|
|
59
|
+
mode = 'full';
|
|
60
|
+
}
|
|
61
|
+
function getStats() {
|
|
62
|
+
return { totalAlerts, falsePositives, fpr: totalAlerts > 0 ? falsePositives / totalAlerts : 0, dismissed: Array.from(userDismissed.values()).reduce((a, b) => a + b, 0), mode };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=realtime-guardian.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-guardian.js","sourceRoot":"","sources":["../../src/core/realtime-guardian.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExtractedPattern } from '../types';
|
|
2
|
+
export declare class RegexExtractor {
|
|
3
|
+
private patterns;
|
|
4
|
+
extract(originalCode: string, editedCode: string): ExtractedPattern[];
|
|
5
|
+
extractFromDiff(originalCode: string, editedCode: string): ExtractedPattern[];
|
|
6
|
+
getPatternCount(): number;
|
|
7
|
+
private countMatches;
|
|
8
|
+
private calculateDelta;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=regex-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-extractor.d.ts","sourceRoot":"","sources":["../../src/core/regex-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAgEd;IAEF,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAiCrE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAkC7E,eAAe,IAAI,MAAM;IAIzB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;CAGvB"}
|