@securecode-ai/mcp 0.5.5 → 0.5.6
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/dist/api/types.d.ts +7 -0
- package/dist/approval/auditLog.d.ts +1 -1
- package/dist/approval/auditLog.js +11 -3
- package/dist/approval/auditLog.js.map +1 -1
- package/dist/approval/broker.d.ts +7 -2
- package/dist/approval/broker.js +239 -110
- package/dist/approval/broker.js.map +1 -1
- package/dist/approval/policy.d.ts +10 -0
- package/dist/approval/policy.js +104 -0
- package/dist/approval/policy.js.map +1 -0
- package/dist/approval/types.d.ts +11 -2
- package/dist/approval/types.js +10 -1
- package/dist/approval/types.js.map +1 -1
- package/dist/attack/agentScanExecutor.d.ts +35 -1
- package/dist/attack/agentScanExecutor.js +405 -76
- package/dist/attack/agentScanExecutor.js.map +1 -1
- package/dist/attack/agentScanLoop.d.ts +20 -0
- package/dist/attack/agentScanLoop.js +1264 -60
- package/dist/attack/agentScanLoop.js.map +1 -1
- package/dist/attack/agentScanProtocol.d.ts +382 -6
- package/dist/attack/agentScanProtocol.js +110 -4
- package/dist/attack/agentScanProtocol.js.map +1 -1
- package/dist/attack/agentTrace.d.ts +73 -0
- package/dist/attack/agentTrace.js +228 -0
- package/dist/attack/agentTrace.js.map +1 -0
- package/dist/attack/architectureScoutExecutor.d.ts +18 -0
- package/dist/attack/architectureScoutExecutor.js +211 -0
- package/dist/attack/architectureScoutExecutor.js.map +1 -0
- package/dist/attack/architectureScoutLoop.d.ts +36 -0
- package/dist/attack/architectureScoutLoop.js +403 -0
- package/dist/attack/architectureScoutLoop.js.map +1 -0
- package/dist/attack/architectureScoutProtocol.d.ts +209 -0
- package/dist/attack/architectureScoutProtocol.js +47 -0
- package/dist/attack/architectureScoutProtocol.js.map +1 -0
- package/dist/attack/candidateStore.d.ts +95 -0
- package/dist/attack/candidateStore.js +231 -0
- package/dist/attack/candidateStore.js.map +1 -0
- package/dist/attack/evidenceLedger.d.ts +67 -0
- package/dist/attack/evidenceLedger.js +192 -0
- package/dist/attack/evidenceLedger.js.map +1 -0
- package/dist/attack/finishGate.d.ts +62 -0
- package/dist/attack/finishGate.js +209 -0
- package/dist/attack/finishGate.js.map +1 -0
- package/dist/attack/fixCodeMerge.d.ts +27 -0
- package/dist/attack/fixCodeMerge.js +42 -0
- package/dist/attack/fixCodeMerge.js.map +1 -0
- package/dist/attack/fixVerifyLoop.d.ts +55 -0
- package/dist/attack/fixVerifyLoop.js +187 -0
- package/dist/attack/fixVerifyLoop.js.map +1 -0
- package/dist/attack/investigationProfiles.d.ts +36 -0
- package/dist/attack/investigationProfiles.js +144 -0
- package/dist/attack/investigationProfiles.js.map +1 -0
- package/dist/attack/investigationState.d.ts +227 -0
- package/dist/attack/investigationState.js +666 -0
- package/dist/attack/investigationState.js.map +1 -0
- package/dist/attack/mutationOperators.d.ts +22 -0
- package/dist/attack/mutationOperators.js +170 -0
- package/dist/attack/mutationOperators.js.map +1 -0
- package/dist/attack/mutationTest.d.ts +33 -0
- package/dist/attack/mutationTest.js +110 -0
- package/dist/attack/mutationTest.js.map +1 -0
- package/dist/attack/proofGate.d.ts +20 -0
- package/dist/attack/proofGate.js +104 -0
- package/dist/attack/proofGate.js.map +1 -0
- package/dist/attack/proofTypes.d.ts +57 -0
- package/dist/attack/proofTypes.js +32 -0
- package/dist/attack/proofTypes.js.map +1 -0
- package/dist/attack/protocolValidator.d.ts +50 -0
- package/dist/attack/protocolValidator.js +427 -0
- package/dist/attack/protocolValidator.js.map +1 -0
- package/dist/attack/qualityMetrics.d.ts +133 -0
- package/dist/attack/qualityMetrics.js +226 -0
- package/dist/attack/qualityMetrics.js.map +1 -0
- package/dist/attack/scanScheduler.d.ts +52 -0
- package/dist/attack/scanScheduler.js +265 -0
- package/dist/attack/scanScheduler.js.map +1 -0
- package/dist/attack/scanState.d.ts +58 -0
- package/dist/attack/scanState.js +102 -0
- package/dist/attack/scanState.js.map +1 -0
- package/dist/attack/searchIntent.d.ts +16 -0
- package/dist/attack/searchIntent.js +57 -0
- package/dist/attack/searchIntent.js.map +1 -0
- package/dist/attack/verifyLoop.d.ts +43 -0
- package/dist/attack/verifyLoop.js +314 -14
- package/dist/attack/verifyLoop.js.map +1 -1
- package/dist/attack/workItem.d.ts +57 -0
- package/dist/attack/workItem.js +225 -0
- package/dist/attack/workItem.js.map +1 -0
- package/dist/audit/findingReviewQueue.d.ts +109 -0
- package/dist/audit/findingReviewQueue.js +335 -0
- package/dist/audit/findingReviewQueue.js.map +1 -0
- package/dist/audit/scanAuditLog.d.ts +160 -0
- package/dist/audit/scanAuditLog.js +404 -0
- package/dist/audit/scanAuditLog.js.map +1 -0
- package/dist/dependency/dependencyChecker.js +35 -9
- package/dist/dependency/dependencyChecker.js.map +1 -1
- package/dist/dependency/exploitPriority.d.ts +33 -0
- package/dist/dependency/exploitPriority.js +78 -0
- package/dist/dependency/exploitPriority.js.map +1 -0
- package/dist/dependency/finding.d.ts +16 -0
- package/dist/dependency/osvClient.js +2 -0
- package/dist/dependency/osvClient.js.map +1 -1
- package/dist/dependency/types.d.ts +12 -1
- package/dist/mcp/server.js +13 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -0
- package/dist/mcp/tools.js +127 -6
- package/dist/mcp/tools.js.map +1 -1
- package/dist/project-map/agentMemory.d.ts +83 -1
- package/dist/project-map/agentMemory.js +197 -7
- package/dist/project-map/agentMemory.js.map +1 -1
- package/dist/project-map/architectureContext.d.ts +202 -0
- package/dist/project-map/architectureContext.js +421 -0
- package/dist/project-map/architectureContext.js.map +1 -0
- package/dist/project-map/blastRadius.d.ts +54 -0
- package/dist/project-map/blastRadius.js +196 -0
- package/dist/project-map/blastRadius.js.map +1 -0
- package/dist/project-map/callGraphExtractor.d.ts +13 -0
- package/dist/project-map/callGraphExtractor.js +222 -0
- package/dist/project-map/callGraphExtractor.js.map +1 -0
- package/dist/project-map/capabilityRegistry.d.ts +46 -0
- package/dist/project-map/capabilityRegistry.js +91 -0
- package/dist/project-map/capabilityRegistry.js.map +1 -0
- package/dist/project-map/findTests.d.ts +29 -0
- package/dist/project-map/findTests.js +236 -0
- package/dist/project-map/findTests.js.map +1 -0
- package/dist/project-map/handlerInventory.d.ts +112 -0
- package/dist/project-map/handlerInventory.js +184 -0
- package/dist/project-map/handlerInventory.js.map +1 -0
- package/dist/project-map/implementationResolver.d.ts +43 -0
- package/dist/project-map/implementationResolver.js +217 -0
- package/dist/project-map/implementationResolver.js.map +1 -0
- package/dist/project-map/mapContext.d.ts +6 -1
- package/dist/project-map/mapContext.js +1 -0
- package/dist/project-map/mapContext.js.map +1 -1
- package/dist/project-map/scanCache.d.ts +57 -3
- package/dist/project-map/scanCache.js +61 -2
- package/dist/project-map/scanCache.js.map +1 -1
- package/dist/project-map/symbolIndex.d.ts +39 -0
- package/dist/project-map/symbolIndex.js +385 -0
- package/dist/project-map/symbolIndex.js.map +1 -0
- package/dist/tooling/agentEvalScoring.d.ts +77 -0
- package/dist/tooling/agentEvalScoring.js +140 -0
- package/dist/tooling/agentEvalScoring.js.map +1 -0
- package/dist/tooling/agentRegression.d.ts +53 -0
- package/dist/tooling/agentRegression.js +99 -0
- package/dist/tooling/agentRegression.js.map +1 -0
- package/dist/tools/agentScan.d.ts +69 -0
- package/dist/tools/agentScan.js +702 -43
- package/dist/tools/agentScan.js.map +1 -1
- package/dist/tools/findingReviewTools.d.ts +22 -0
- package/dist/tools/findingReviewTools.js +121 -0
- package/dist/tools/findingReviewTools.js.map +1 -0
- package/dist/tools/fix.js +1 -1
- package/dist/tools/fix.js.map +1 -1
- package/dist/tools/map.js +191 -1
- package/dist/tools/map.js.map +1 -1
- package/dist/tools/runTests.d.ts +2 -0
- package/dist/tools/runTests.js +29 -0
- package/dist/tools/runTests.js.map +1 -0
- package/dist/utils/effectMock.d.ts +1 -0
- package/dist/utils/effectMock.js +162 -0
- package/dist/utils/effectMock.js.map +1 -0
- package/dist/utils/gitContext.d.ts +26 -0
- package/dist/utils/gitContext.js +317 -0
- package/dist/utils/gitContext.js.map +1 -0
- package/dist/utils/localTestRunner.d.ts +57 -2
- package/dist/utils/localTestRunner.js +122 -115
- package/dist/utils/localTestRunner.js.map +1 -1
- package/dist/utils/securityConfig.d.ts +17 -0
- package/dist/utils/securityConfig.js +192 -0
- package/dist/utils/securityConfig.js.map +1 -0
- package/dist/utils/testCommandPolicy.d.ts +36 -0
- package/dist/utils/testCommandPolicy.js +252 -0
- package/dist/utils/testCommandPolicy.js.map +1 -0
- package/dist/utils/testRunner.d.ts +56 -0
- package/dist/utils/testRunner.js +246 -0
- package/dist/utils/testRunner.js.map +1 -0
- package/dist/utils/testSafety.d.ts +40 -2
- package/dist/utils/testSafety.js +205 -26
- package/dist/utils/testSafety.js.map +1 -1
- package/dist/utils/verificationSandbox.d.ts +113 -0
- package/dist/utils/verificationSandbox.js +656 -0
- package/dist/utils/verificationSandbox.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLoop.js","sourceRoot":"","sources":["../../src/attack/verifyLoop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verifyLoop.js","sourceRoot":"","sources":["../../src/attack/verifyLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Work item — a structured unit of investigation work that the scheduler
|
|
3
|
+
* can prioritize. Work items are derived from profile requirements and
|
|
4
|
+
* architecture-risk tasks.
|
|
5
|
+
*/
|
|
6
|
+
import type { EvidenceRequirement } from './evidenceLedger';
|
|
7
|
+
export type WorkItemKind = 'profile-requirement' | 'architecture-risk' | 'handler-review' | 'implementation-review' | 'candidate-evidence' | 'verification-recovery';
|
|
8
|
+
export type WorkItemPriority = 'critical' | 'high' | 'medium' | 'low';
|
|
9
|
+
export type WorkItemStatus = 'pending' | 'active' | 'resolved' | 'refuted' | 'blocked';
|
|
10
|
+
export type RequirementStatus = 'missing' | 'satisfied' | 'refuted' | 'blocked';
|
|
11
|
+
export interface RequirementEvidence {
|
|
12
|
+
requirementId: string;
|
|
13
|
+
evidenceRefs: string[];
|
|
14
|
+
status: RequirementStatus;
|
|
15
|
+
}
|
|
16
|
+
export interface WorkItem {
|
|
17
|
+
id: string;
|
|
18
|
+
kind: WorkItemKind;
|
|
19
|
+
title: string;
|
|
20
|
+
priority: WorkItemPriority;
|
|
21
|
+
targetFiles: string[];
|
|
22
|
+
requirements: EvidenceRequirement[];
|
|
23
|
+
evidenceRefs: string[];
|
|
24
|
+
requirementEvidence: Map<string, RequirementEvidence>;
|
|
25
|
+
status: WorkItemStatus;
|
|
26
|
+
attempts: number;
|
|
27
|
+
blockedReason?: string;
|
|
28
|
+
maxAttempts: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function createProfileWorkItem(requirement: EvidenceRequirement, targetFiles: string[]): WorkItem;
|
|
31
|
+
export declare function createArchitectureRiskWorkItem(title: string, targetFiles: string[], requirements: EvidenceRequirement[]): WorkItem;
|
|
32
|
+
export declare function createHandlerReviewWorkItem(filePath: string, symbol: string): WorkItem;
|
|
33
|
+
export declare function createImplementationReviewWorkItem(filePath: string, symbol: string): WorkItem;
|
|
34
|
+
export declare class WorkItemQueue {
|
|
35
|
+
private items;
|
|
36
|
+
add(item: WorkItem): void;
|
|
37
|
+
addAll(items: WorkItem[]): void;
|
|
38
|
+
get(id: string): WorkItem | undefined;
|
|
39
|
+
update(id: string, update: Partial<WorkItem>): void;
|
|
40
|
+
addEvidence(id: string, evidenceRef: string): void;
|
|
41
|
+
addEvidenceForRequirement(id: string, requirementId: string, evidenceRef: string): void;
|
|
42
|
+
isRequirementSatisfied(id: string, requirementId: string): boolean;
|
|
43
|
+
isFullyResolved(id: string): boolean;
|
|
44
|
+
getUnsatisfiedRequirements(id: string): EvidenceRequirement[];
|
|
45
|
+
incrementAttempt(id: string): void;
|
|
46
|
+
resolve(id: string): void;
|
|
47
|
+
forceResolve(id: string): void;
|
|
48
|
+
refute(id: string): void;
|
|
49
|
+
getPending(): WorkItem[];
|
|
50
|
+
getActive(): WorkItem[];
|
|
51
|
+
getBlocked(): WorkItem[];
|
|
52
|
+
getUnresolved(): WorkItem[];
|
|
53
|
+
getExecutable(): WorkItem[];
|
|
54
|
+
highestPriority(): WorkItem | null;
|
|
55
|
+
all(): WorkItem[];
|
|
56
|
+
size(): number;
|
|
57
|
+
}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Work item — a structured unit of investigation work that the scheduler
|
|
4
|
+
* can prioritize. Work items are derived from profile requirements and
|
|
5
|
+
* architecture-risk tasks.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.WorkItemQueue = void 0;
|
|
9
|
+
exports.createProfileWorkItem = createProfileWorkItem;
|
|
10
|
+
exports.createArchitectureRiskWorkItem = createArchitectureRiskWorkItem;
|
|
11
|
+
exports.createHandlerReviewWorkItem = createHandlerReviewWorkItem;
|
|
12
|
+
exports.createImplementationReviewWorkItem = createImplementationReviewWorkItem;
|
|
13
|
+
let idCounter = 0;
|
|
14
|
+
function nextId(prefix) {
|
|
15
|
+
idCounter++;
|
|
16
|
+
return `${prefix}-${idCounter}`;
|
|
17
|
+
}
|
|
18
|
+
function createProfileWorkItem(requirement, targetFiles) {
|
|
19
|
+
return {
|
|
20
|
+
id: nextId('profile'),
|
|
21
|
+
kind: 'profile-requirement',
|
|
22
|
+
title: requirement.description,
|
|
23
|
+
priority: 'high',
|
|
24
|
+
targetFiles,
|
|
25
|
+
requirements: [requirement],
|
|
26
|
+
evidenceRefs: [],
|
|
27
|
+
requirementEvidence: new Map([[requirement.id, { requirementId: requirement.id, evidenceRefs: [], status: 'missing' }]]),
|
|
28
|
+
status: 'pending',
|
|
29
|
+
attempts: 0,
|
|
30
|
+
maxAttempts: 3,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function createArchitectureRiskWorkItem(title, targetFiles, requirements) {
|
|
34
|
+
const requirementEvidence = new Map();
|
|
35
|
+
for (const req of requirements) {
|
|
36
|
+
requirementEvidence.set(req.id, { requirementId: req.id, evidenceRefs: [], status: 'missing' });
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
id: nextId('arch-risk'),
|
|
40
|
+
kind: 'architecture-risk',
|
|
41
|
+
title,
|
|
42
|
+
priority: 'high',
|
|
43
|
+
targetFiles,
|
|
44
|
+
requirements,
|
|
45
|
+
evidenceRefs: [],
|
|
46
|
+
requirementEvidence,
|
|
47
|
+
status: 'pending',
|
|
48
|
+
attempts: 0,
|
|
49
|
+
maxAttempts: 3,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createHandlerReviewWorkItem(filePath, symbol) {
|
|
53
|
+
const reqId = nextId('handler-req');
|
|
54
|
+
const requirement = {
|
|
55
|
+
id: reqId,
|
|
56
|
+
description: `Review handler ${symbol}`,
|
|
57
|
+
acceptedKinds: ['source-range', 'policy-result'],
|
|
58
|
+
minimumCount: 1,
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
id: nextId('handler'),
|
|
62
|
+
kind: 'handler-review',
|
|
63
|
+
title: `Review handler: ${symbol}`,
|
|
64
|
+
priority: 'medium',
|
|
65
|
+
targetFiles: [filePath],
|
|
66
|
+
requirements: [requirement],
|
|
67
|
+
evidenceRefs: [],
|
|
68
|
+
requirementEvidence: new Map([[reqId, { requirementId: reqId, evidenceRefs: [], status: 'missing' }]]),
|
|
69
|
+
status: 'pending',
|
|
70
|
+
attempts: 0,
|
|
71
|
+
maxAttempts: 2,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function createImplementationReviewWorkItem(filePath, symbol) {
|
|
75
|
+
const reqId = nextId('impl-req');
|
|
76
|
+
const requirement = {
|
|
77
|
+
id: reqId,
|
|
78
|
+
description: `Resolve implementation of ${symbol}`,
|
|
79
|
+
acceptedKinds: ['implementation-resolution'],
|
|
80
|
+
minimumCount: 1,
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
id: nextId('impl'),
|
|
84
|
+
kind: 'implementation-review',
|
|
85
|
+
title: `Resolve implementation for: ${symbol}`,
|
|
86
|
+
priority: 'critical',
|
|
87
|
+
targetFiles: [filePath],
|
|
88
|
+
requirements: [requirement],
|
|
89
|
+
evidenceRefs: [],
|
|
90
|
+
requirementEvidence: new Map([[reqId, { requirementId: reqId, evidenceRefs: [], status: 'missing' }]]),
|
|
91
|
+
status: 'pending',
|
|
92
|
+
attempts: 0,
|
|
93
|
+
maxAttempts: 2,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
class WorkItemQueue {
|
|
97
|
+
items = new Map();
|
|
98
|
+
add(item) {
|
|
99
|
+
if (!this.items.has(item.id)) {
|
|
100
|
+
this.items.set(item.id, item);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
addAll(items) {
|
|
104
|
+
for (const item of items)
|
|
105
|
+
this.add(item);
|
|
106
|
+
}
|
|
107
|
+
get(id) {
|
|
108
|
+
return this.items.get(id);
|
|
109
|
+
}
|
|
110
|
+
update(id, update) {
|
|
111
|
+
const item = this.items.get(id);
|
|
112
|
+
if (item) {
|
|
113
|
+
Object.assign(item, update);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
addEvidence(id, evidenceRef) {
|
|
117
|
+
const item = this.items.get(id);
|
|
118
|
+
if (item && !item.evidenceRefs.includes(evidenceRef)) {
|
|
119
|
+
item.evidenceRefs.push(evidenceRef);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
addEvidenceForRequirement(id, requirementId, evidenceRef) {
|
|
123
|
+
const item = this.items.get(id);
|
|
124
|
+
if (!item)
|
|
125
|
+
return;
|
|
126
|
+
if (!item.evidenceRefs.includes(evidenceRef)) {
|
|
127
|
+
item.evidenceRefs.push(evidenceRef);
|
|
128
|
+
}
|
|
129
|
+
const reqEv = item.requirementEvidence.get(requirementId);
|
|
130
|
+
if (reqEv && !reqEv.evidenceRefs.includes(evidenceRef)) {
|
|
131
|
+
reqEv.evidenceRefs.push(evidenceRef);
|
|
132
|
+
if (reqEv.status === 'missing') {
|
|
133
|
+
const req = item.requirements.find(r => r.id === requirementId);
|
|
134
|
+
if (req && reqEv.evidenceRefs.length >= req.minimumCount) {
|
|
135
|
+
reqEv.status = 'satisfied';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
isRequirementSatisfied(id, requirementId) {
|
|
141
|
+
const item = this.items.get(id);
|
|
142
|
+
if (!item)
|
|
143
|
+
return false;
|
|
144
|
+
const reqEv = item.requirementEvidence.get(requirementId);
|
|
145
|
+
return reqEv?.status === 'satisfied' || reqEv?.status === 'refuted';
|
|
146
|
+
}
|
|
147
|
+
isFullyResolved(id) {
|
|
148
|
+
const item = this.items.get(id);
|
|
149
|
+
if (!item)
|
|
150
|
+
return false;
|
|
151
|
+
for (const req of item.requirements) {
|
|
152
|
+
const reqEv = item.requirementEvidence.get(req.id);
|
|
153
|
+
if (!reqEv || (reqEv.status !== 'satisfied' && reqEv.status !== 'refuted')) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
getUnsatisfiedRequirements(id) {
|
|
160
|
+
const item = this.items.get(id);
|
|
161
|
+
if (!item)
|
|
162
|
+
return [];
|
|
163
|
+
const unsatisfied = [];
|
|
164
|
+
for (const req of item.requirements) {
|
|
165
|
+
const reqEv = item.requirementEvidence.get(req.id);
|
|
166
|
+
if (!reqEv || (reqEv.status !== 'satisfied' && reqEv.status !== 'refuted')) {
|
|
167
|
+
unsatisfied.push(req);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return unsatisfied;
|
|
171
|
+
}
|
|
172
|
+
incrementAttempt(id) {
|
|
173
|
+
const item = this.items.get(id);
|
|
174
|
+
if (item) {
|
|
175
|
+
item.attempts++;
|
|
176
|
+
if (item.attempts >= item.maxAttempts) {
|
|
177
|
+
item.status = 'blocked';
|
|
178
|
+
item.blockedReason = `Max attempts (${item.maxAttempts}) reached`;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
resolve(id) {
|
|
183
|
+
const item = this.items.get(id);
|
|
184
|
+
if (item && this.isFullyResolved(id)) {
|
|
185
|
+
item.status = 'resolved';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
forceResolve(id) {
|
|
189
|
+
this.update(id, { status: 'resolved' });
|
|
190
|
+
}
|
|
191
|
+
refute(id) {
|
|
192
|
+
this.update(id, { status: 'refuted' });
|
|
193
|
+
}
|
|
194
|
+
getPending() {
|
|
195
|
+
return [...this.items.values()].filter(i => i.status === 'pending');
|
|
196
|
+
}
|
|
197
|
+
getActive() {
|
|
198
|
+
return [...this.items.values()].filter(i => i.status === 'active');
|
|
199
|
+
}
|
|
200
|
+
getBlocked() {
|
|
201
|
+
return [...this.items.values()].filter(i => i.status === 'blocked');
|
|
202
|
+
}
|
|
203
|
+
getUnresolved() {
|
|
204
|
+
return [...this.items.values()].filter(i => i.status === 'pending' || i.status === 'active' || i.status === 'blocked');
|
|
205
|
+
}
|
|
206
|
+
getExecutable() {
|
|
207
|
+
return [...this.items.values()].filter(i => i.status === 'pending' || i.status === 'active');
|
|
208
|
+
}
|
|
209
|
+
highestPriority() {
|
|
210
|
+
const executable = this.getExecutable();
|
|
211
|
+
if (executable.length === 0)
|
|
212
|
+
return null;
|
|
213
|
+
const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
|
|
214
|
+
executable.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
|
|
215
|
+
return executable[0];
|
|
216
|
+
}
|
|
217
|
+
all() {
|
|
218
|
+
return [...this.items.values()];
|
|
219
|
+
}
|
|
220
|
+
size() {
|
|
221
|
+
return this.items.size;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
exports.WorkItemQueue = WorkItemQueue;
|
|
225
|
+
//# sourceMappingURL=workItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workItem.js","sourceRoot":"","sources":["../../src/attack/workItem.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA6CH,sDAiBC;AAED,wEAsBC;AAED,kEAwBC;AAED,gFAwBC;AAnGD,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,SAAS,MAAM,CAAC,MAAc;IAC1B,SAAS,EAAE,CAAC;IACZ,OAAO,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;AACpC,CAAC;AAED,SAAgB,qBAAqB,CACjC,WAAgC,EAChC,WAAqB;IAErB,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC;QACrB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,WAAW,CAAC,WAAW;QAC9B,QAAQ,EAAE,MAAM;QAChB,WAAW;QACX,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,YAAY,EAAE,EAAE;QAChB,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACxH,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;KACjB,CAAC;AACN,CAAC;AAED,SAAgB,8BAA8B,CAC1C,KAAa,EACb,WAAqB,EACrB,YAAmC;IAEnC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA+B,CAAC;IACnE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7B,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC;QACvB,IAAI,EAAE,mBAAmB;QACzB,KAAK;QACL,QAAQ,EAAE,MAAM;QAChB,WAAW;QACX,YAAY;QACZ,YAAY,EAAE,EAAE;QAChB,mBAAmB;QACnB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;KACjB,CAAC;AACN,CAAC;AAED,SAAgB,2BAA2B,CACvC,QAAgB,EAChB,MAAc;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,WAAW,GAAwB;QACrC,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,kBAAkB,MAAM,EAAE;QACvC,aAAa,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QAChD,YAAY,EAAE,CAAC;KAClB,CAAC;IACF,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC;QACrB,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,mBAAmB,MAAM,EAAE;QAClC,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,YAAY,EAAE,EAAE;QAChB,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACtG,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;KACjB,CAAC;AACN,CAAC;AAED,SAAgB,kCAAkC,CAC9C,QAAgB,EAChB,MAAc;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,WAAW,GAAwB;QACrC,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,6BAA6B,MAAM,EAAE;QAClD,aAAa,EAAE,CAAC,2BAA2B,CAAC;QAC5C,YAAY,EAAE,CAAC;KAClB,CAAC;IACF,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,+BAA+B,MAAM,EAAE;QAC9C,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,YAAY,EAAE,EAAE;QAChB,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACtG,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,CAAC;KACjB,CAAC;AACN,CAAC;AAED,MAAa,aAAa;IACd,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE5C,GAAG,CAAC,IAAc;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAiB;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,MAAyB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,WAAmB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,EAAU,EAAE,aAAqB,EAAE,WAAmB;QAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;gBAChE,IAAI,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACvD,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC/B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,sBAAsB,CAAC,EAAU,EAAE,aAAqB;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO,KAAK,EAAE,MAAM,KAAK,WAAW,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACxE,CAAC;IAED,eAAe,CAAC,EAAU;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBACzE,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0BAA0B,CAAC,EAAU;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,MAAM,WAAW,GAA0B,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBACzE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,gBAAgB,CAAC,EAAU;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,IAAI,CAAC,aAAa,GAAG,iBAAiB,IAAI,CAAC,WAAW,WAAW,CAAC;YACtE,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,CAAC,EAAU;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,YAAY,CAAC,EAAU;QACnB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,EAAU;QACb,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACxE,CAAC;IAED,SAAS;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,UAAU;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC3H,CAAC;IAED,aAAa;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACjG,CAAC;IAED,eAAe;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,aAAa,GAAqC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACpG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjF,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,GAAG;QACC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;CACJ;AA9ID,sCA8IC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finding review queue — non-blocking human review for INCONCLUSIVE findings.
|
|
3
|
+
*
|
|
4
|
+
* When the verify subagent cannot prove or disprove a finding (sandbox
|
|
5
|
+
* unavailable, budget exhausted, test couldn't run), the finding is added
|
|
6
|
+
* to this local review queue. The scan completes without blocking — the
|
|
7
|
+
* user can later adjudicate each item as confirmed, rejected, or deferred.
|
|
8
|
+
*
|
|
9
|
+
* Privacy contract (same as scanAuditLog.ts + agentMemory.ts):
|
|
10
|
+
* - Source code NEVER leaves the machine.
|
|
11
|
+
* - Evidence strings, `why` explanations, fix code, full test scripts,
|
|
12
|
+
* and full API responses are NOT recorded. Only hashes, counts,
|
|
13
|
+
* verdicts, file paths, and line numbers are stored.
|
|
14
|
+
* - The review queue is per-workspace, stored at
|
|
15
|
+
* `<workspaceRoot>/.securecode/finding-review-queue.json`.
|
|
16
|
+
*
|
|
17
|
+
* Retention:
|
|
18
|
+
* - 500 review items per workspace.
|
|
19
|
+
* - Resolved items pruned after 90 days.
|
|
20
|
+
* - Unresolved items kept until explicitly resolved.
|
|
21
|
+
*
|
|
22
|
+
* Dedup: identical findings (fileHash + filePath + line + findingType +
|
|
23
|
+
* evidenceHash) are not re-enqueued — the existing item is returned.
|
|
24
|
+
*/
|
|
25
|
+
export type ReviewDecision = 'confirmed' | 'rejected' | 'deferred';
|
|
26
|
+
export type ReviewReason = 'inconclusive-verification' | 'sandbox-unavailable' | 'verification-budget-exhausted' | 'runtime-blocked' | 'test-generation-failed' | 'manual-request';
|
|
27
|
+
export interface FindingReviewItem {
|
|
28
|
+
id: string;
|
|
29
|
+
createdAt: string;
|
|
30
|
+
updatedAt: string;
|
|
31
|
+
workspaceRelativePath: string;
|
|
32
|
+
fileHash: string;
|
|
33
|
+
line: number;
|
|
34
|
+
lineEnd?: number;
|
|
35
|
+
findingType: string;
|
|
36
|
+
severity: string;
|
|
37
|
+
confidence: number;
|
|
38
|
+
proven: 'INCONCLUSIVE' | 'SKIPPED' | 'UNPROVEN';
|
|
39
|
+
reviewReason: ReviewReason;
|
|
40
|
+
/** Short verification reason, truncated to a safe length. */
|
|
41
|
+
verificationReason?: string;
|
|
42
|
+
/** SHA-256 of the evidence string — for dedup + privacy. */
|
|
43
|
+
evidenceHash: string;
|
|
44
|
+
decision?: ReviewDecision;
|
|
45
|
+
decisionReason?: string;
|
|
46
|
+
decidedAt?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface FindingReviewQueueFile {
|
|
49
|
+
version: number;
|
|
50
|
+
items: FindingReviewItem[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Load the review queue for a workspace. Returns an empty queue
|
|
54
|
+
* (version + empty array) if the file doesn't exist or is corrupt.
|
|
55
|
+
*/
|
|
56
|
+
export declare function loadReviewQueue(workspaceRoot: string): FindingReviewQueueFile;
|
|
57
|
+
export interface EnqueueFindingReviewInput {
|
|
58
|
+
workspaceRelativePath: string;
|
|
59
|
+
fileContent: string;
|
|
60
|
+
line: number;
|
|
61
|
+
lineEnd?: number;
|
|
62
|
+
findingType: string;
|
|
63
|
+
severity: string;
|
|
64
|
+
confidence: number;
|
|
65
|
+
proven: 'INCONCLUSIVE' | 'SKIPPED' | 'UNPROVEN';
|
|
66
|
+
reviewReason: ReviewReason;
|
|
67
|
+
verificationReason?: string;
|
|
68
|
+
evidence: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Enqueue a finding for human review. Dedupes by
|
|
72
|
+
* (fileHash + filePath + line + findingType + evidenceHash).
|
|
73
|
+
* Returns the item (existing if duplicate, new otherwise).
|
|
74
|
+
*
|
|
75
|
+
* Re-enqueuing a previously-resolved item with the same dedup key
|
|
76
|
+
* reopens it (clears the decision) — the finding reappeared and needs
|
|
77
|
+
* re-review.
|
|
78
|
+
*/
|
|
79
|
+
export declare function enqueueFindingReview(workspaceRoot: string, input: EnqueueFindingReviewInput): FindingReviewItem;
|
|
80
|
+
export interface ListFindingReviewsOptions {
|
|
81
|
+
decision?: ReviewDecision | 'pending';
|
|
82
|
+
filePath?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* List review items, optionally filtered by decision status and/or file path.
|
|
86
|
+
*/
|
|
87
|
+
export declare function listFindingReviews(workspaceRoot: string, options?: ListFindingReviewsOptions): FindingReviewItem[];
|
|
88
|
+
/**
|
|
89
|
+
* Mark a review item as confirmed, rejected, or deferred.
|
|
90
|
+
* Returns the updated item, or null if the ID was not found.
|
|
91
|
+
*/
|
|
92
|
+
export declare function decideFindingReview(workspaceRoot: string, id: string, decision: ReviewDecision, reason?: string): FindingReviewItem | null;
|
|
93
|
+
/**
|
|
94
|
+
* Remove a single review item by ID. Returns true if removed.
|
|
95
|
+
*/
|
|
96
|
+
export declare function removeFindingReview(workspaceRoot: string, id: string): boolean;
|
|
97
|
+
export interface ClearFindingReviewsOptions {
|
|
98
|
+
id?: string;
|
|
99
|
+
resolvedOnly?: boolean;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Clear review items. If `id` is given, removes just that item.
|
|
103
|
+
* If `resolvedOnly` is true, removes only items with a decision set.
|
|
104
|
+
* Otherwise removes ALL items.
|
|
105
|
+
* Returns the count of items removed.
|
|
106
|
+
*/
|
|
107
|
+
export declare function clearFindingReviews(workspaceRoot: string, options?: ClearFindingReviewsOptions): number;
|
|
108
|
+
export declare function formatReviewItem(item: FindingReviewItem): string;
|
|
109
|
+
export declare function formatReviewList(items: FindingReviewItem[]): string;
|