hex-audit 0.4.5 → 0.5.1
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/DEMO.md +12 -11
- package/README.md +38 -37
- package/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/app-build-manifest.json +23 -23
- package/dashboard/.next/app-path-routes-manifest.json +1 -1
- package/dashboard/.next/build-manifest.json +2 -2
- package/dashboard/.next/next-minimal-server.js.nft.json +1 -1
- package/dashboard/.next/next-server.js.nft.json +1 -1
- package/dashboard/.next/prerender-manifest.json +1 -1
- package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/_not-found.html +1 -1
- package/dashboard/.next/server/app/_not-found.rsc +4 -4
- package/dashboard/.next/server/app/access/page.js +1 -1
- package/dashboard/.next/server/app/access/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/access/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/api/flows/route.js +1 -1
- package/dashboard/.next/server/app/api/github-status/route.js +1 -1
- package/dashboard/.next/server/app/api/issues/[id]/move/route.js +1 -1
- package/dashboard/.next/server/app/api/issues/[id]/move/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/issues/[id]/route.js +1 -1
- package/dashboard/.next/server/app/api/issues/[id]/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/mermaid/route.js +1 -1
- package/dashboard/.next/server/app/api/progress/route.js +1 -1
- package/dashboard/.next/server/app/api/watch/route.js +2 -2
- package/dashboard/.next/server/app/calls/page.js +1 -1
- package/dashboard/.next/server/app/calls/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/calls/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/conformance/page.js +1 -1
- package/dashboard/.next/server/app/conformance/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/diagram/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/diagram.html +1 -1
- package/dashboard/.next/server/app/diagram.rsc +4 -4
- package/dashboard/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/flows.html +1 -1
- package/dashboard/.next/server/app/flows.rsc +4 -4
- package/dashboard/.next/server/app/functions/page.js +1 -1
- package/dashboard/.next/server/app/functions/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/functions/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/issues/page.js +5 -3
- package/dashboard/.next/server/app/issues/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/overleaf/page.js +1 -1
- package/dashboard/.next/server/app/overleaf/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/page.js +1 -1
- package/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/progress/page.js +1 -1
- package/dashboard/.next/server/app/progress/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/stats/page.js +1 -1
- package/dashboard/.next/server/app/stats/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app-paths-manifest.json +9 -9
- package/dashboard/.next/server/chunks/42.js +1 -0
- package/dashboard/.next/server/chunks/431.js +1 -1
- package/dashboard/.next/server/chunks/44.js +1 -0
- package/dashboard/.next/server/functions-config-manifest.json +1 -1
- package/dashboard/.next/server/middleware-build-manifest.js +1 -1
- package/dashboard/.next/server/pages/404.html +1 -1
- package/dashboard/.next/server/pages/500.html +1 -1
- package/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dashboard/.next/static/chunks/app/issues/page-6bfbf80884d3c9d8.js +1 -0
- package/dashboard/.next/static/chunks/app/{layout-cde7d75ea6df4f81.js → layout-91d2987f5030a3c4.js} +1 -1
- package/dashboard/.next/static/css/{36c6bb859d4545fd.css → 9c84313d0484b74f.css} +1 -1
- package/dashboard/app/issues/IssuesBoardClient.tsx +55 -24
- package/dashboard/app/issues/page.tsx +6 -3
- package/dashboard/components/DashboardLayout.tsx +1 -1
- package/dashboard/lib/data.ts +11 -19
- package/dashboard/lib/finding-markdown.ts +95 -5
- package/dist/commands/access.d.ts.map +1 -1
- package/dist/commands/access.js +3 -4
- package/dist/commands/access.js.map +1 -1
- package/dist/commands/ai-status.d.ts.map +1 -1
- package/dist/commands/ai-status.js +8 -10
- package/dist/commands/ai-status.js.map +1 -1
- package/dist/commands/calls.d.ts.map +1 -1
- package/dist/commands/calls.js +3 -4
- package/dist/commands/calls.js.map +1 -1
- package/dist/commands/constraints.d.ts.map +1 -1
- package/dist/commands/constraints.js +2 -4
- package/dist/commands/constraints.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +2 -4
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +21 -5
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/deps.d.ts.map +1 -1
- package/dist/commands/deps.js +2 -4
- package/dist/commands/deps.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +97 -11
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/patterns.d.ts.map +1 -1
- package/dist/commands/patterns.js +2 -4
- package/dist/commands/patterns.js.map +1 -1
- package/dist/commands/state.d.ts.map +1 -1
- package/dist/commands/state.js +3 -4
- package/dist/commands/state.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +3 -4
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/surface.d.ts.map +1 -1
- package/dist/commands/surface.js +3 -4
- package/dist/commands/surface.js.map +1 -1
- package/dist/core/config.d.ts +14 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +33 -16
- package/dist/core/config.js.map +1 -1
- package/dist/core/issues.d.ts +51 -12
- package/dist/core/issues.d.ts.map +1 -1
- package/dist/core/issues.js +186 -25
- package/dist/core/issues.js.map +1 -1
- package/dist/core/locate.d.ts +26 -0
- package/dist/core/locate.d.ts.map +1 -0
- package/dist/core/locate.js +56 -0
- package/dist/core/locate.js.map +1 -0
- package/dist/core/schema.d.ts +24 -8
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +12 -1
- package/dist/core/schema.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/skills/generate-overleaf.md +18 -10
- package/dist/skills/ingest-aa-report.md +15 -19
- package/dist/skills/init-audit.md +13 -20
- package/dist/skills/sync-issues.md +87 -179
- package/dist/skills/validate-all-findings.md +50 -0
- package/dist/skills/validate-issue.md +5 -3
- package/dist/skills/write-finding.md +33 -29
- package/package.json +1 -1
- package/dashboard/.next/server/chunks/557.js +0 -1
- package/dashboard/.next/static/chunks/app/issues/page-30f7bcde0f4f6ddb.js +0 -1
- /package/dashboard/.next/static/{4HWoeGmBSZi6iGcKL3VWA → dm-uzRRik5AgaBPedT1iR}/_buildManifest.js +0 -0
- /package/dashboard/.next/static/{4HWoeGmBSZi6iGcKL3VWA → dm-uzRRik5AgaBPedT1iR}/_ssgManifest.js +0 -0
package/dist/core/issues.js
CHANGED
|
@@ -70,6 +70,26 @@ export function isValidSeverity(v) {
|
|
|
70
70
|
export function isValidResolution(v) {
|
|
71
71
|
return typeof v === 'string' && RESOLUTION_VALUES.includes(v);
|
|
72
72
|
}
|
|
73
|
+
// ─── ID allocation ──────────────────────────────────────────────────
|
|
74
|
+
/**
|
|
75
|
+
* Allocate the next uniform issue id (`H-001`, `H-002`, ...). Scans both
|
|
76
|
+
* findings.json and tracking.json for the highest `H-<n>` so every creator
|
|
77
|
+
* (init-audit conformance materialization, write-finding, ingest-aa-report,
|
|
78
|
+
* sync-issues pull) agrees on a single sequential namespace.
|
|
79
|
+
*/
|
|
80
|
+
export function allocateId(outputDir) {
|
|
81
|
+
let max = 0;
|
|
82
|
+
const scan = (id) => {
|
|
83
|
+
const m = /^H-(\d+)$/.exec(id);
|
|
84
|
+
if (m)
|
|
85
|
+
max = Math.max(max, parseInt(m[1], 10));
|
|
86
|
+
};
|
|
87
|
+
for (const f of loadFindings(outputDir).findings)
|
|
88
|
+
scan(f.id);
|
|
89
|
+
for (const t of loadTracking(outputDir).findings)
|
|
90
|
+
scan(t.id);
|
|
91
|
+
return `H-${String(max + 1).padStart(3, '0')}`;
|
|
92
|
+
}
|
|
73
93
|
// ─── Source-specific materialization ────────────────────────────────
|
|
74
94
|
function newEmptyFinding(id, severity) {
|
|
75
95
|
return {
|
|
@@ -85,10 +105,10 @@ function newEmptyFinding(id, severity) {
|
|
|
85
105
|
created_at: new Date().toISOString(),
|
|
86
106
|
};
|
|
87
107
|
}
|
|
88
|
-
/** Build a findings.json record from a conformance item
|
|
89
|
-
function findingFromConformance(outputDir, id, tracking) {
|
|
108
|
+
/** Build a findings.json record from a conformance item, keyed by source_ref. */
|
|
109
|
+
function findingFromConformance(outputDir, id, ref, tracking) {
|
|
90
110
|
const spec = readJson(path.join(outputDir, 'spec-conformance.json'));
|
|
91
|
-
const item = spec?.items?.find((i) => i.id ===
|
|
111
|
+
const item = spec?.items?.find((i) => i.id === ref);
|
|
92
112
|
if (!item)
|
|
93
113
|
return null;
|
|
94
114
|
const f = newEmptyFinding(id, (tracking?.severity ?? item.severity_hint ?? 'Info'));
|
|
@@ -98,16 +118,16 @@ function findingFromConformance(outputDir, id, tracking) {
|
|
|
98
118
|
const loc = item.code_location;
|
|
99
119
|
if (loc?.file)
|
|
100
120
|
f.root_cause.locations = [{ file: loc.file }];
|
|
101
|
-
f.
|
|
121
|
+
f.source_ref = ref;
|
|
102
122
|
return f;
|
|
103
123
|
}
|
|
104
|
-
/** Build a findings.json record from an ai-results or external/github record. */
|
|
105
|
-
function findingFromAiOrGithub(outputDir, id, kind, tracking) {
|
|
124
|
+
/** Build a findings.json record from an ai-results or external/github record, keyed by source_ref. */
|
|
125
|
+
function findingFromAiOrGithub(outputDir, id, kind, ref, tracking) {
|
|
106
126
|
const nested = kind === 'auditagent'
|
|
107
127
|
? path.join(outputDir, 'ai-results', 'auditagent', 'findings.json')
|
|
108
128
|
: path.join(outputDir, 'external', 'github', 'findings.json');
|
|
109
129
|
const file = readJson(nested);
|
|
110
|
-
const rec = file?.findings?.find((r) => r.id === id);
|
|
130
|
+
const rec = file?.findings?.find((r) => r.id === ref || String(r.issue_number ?? '') === ref || r.id === `github-${ref}`);
|
|
111
131
|
if (!rec)
|
|
112
132
|
return null;
|
|
113
133
|
const f = newEmptyFinding(id, rec.severity ?? tracking?.severity ?? 'Info');
|
|
@@ -116,13 +136,14 @@ function findingFromAiOrGithub(outputDir, id, kind, tracking) {
|
|
|
116
136
|
f.description = String(rec.description ?? '');
|
|
117
137
|
const affected = rec.affected_code ?? [];
|
|
118
138
|
f.root_cause.locations = affected.map((a) => ({ file: a.file, snippet: a.snippet }));
|
|
119
|
-
f.
|
|
139
|
+
f.source_ref = ref;
|
|
120
140
|
return f;
|
|
121
141
|
}
|
|
122
142
|
/**
|
|
123
143
|
* Ensure a findings.json entry exists for `id`, materializing one from the
|
|
124
144
|
* source-specific record if needed. Idempotent: returns the existing entry
|
|
125
|
-
* untouched when present. Dispatches on
|
|
145
|
+
* untouched when present. Dispatches on the tracking entry's `source` +
|
|
146
|
+
* `source_ref` (not the id, which is now a uniform `H-NNN`).
|
|
126
147
|
*/
|
|
127
148
|
export function ensureFindingExists(outputDir, id) {
|
|
128
149
|
const findings = loadFindings(outputDir);
|
|
@@ -130,23 +151,25 @@ export function ensureFindingExists(outputDir, id) {
|
|
|
130
151
|
if (existing)
|
|
131
152
|
return existing;
|
|
132
153
|
const tracking = loadTracking(outputDir).findings.find((t) => t.id === id);
|
|
154
|
+
const ref = tracking?.source_ref ?? '';
|
|
133
155
|
let materialized = null;
|
|
134
|
-
if (
|
|
135
|
-
materialized = findingFromConformance(outputDir, id, tracking);
|
|
156
|
+
if (tracking?.source === 'conformance' && ref) {
|
|
157
|
+
materialized = findingFromConformance(outputDir, id, ref, tracking);
|
|
136
158
|
}
|
|
137
|
-
else if (
|
|
138
|
-
materialized = findingFromAiOrGithub(outputDir, id, 'auditagent', tracking);
|
|
159
|
+
else if (tracking?.source === 'auditagent' && ref) {
|
|
160
|
+
materialized = findingFromAiOrGithub(outputDir, id, 'auditagent', ref, tracking);
|
|
139
161
|
}
|
|
140
|
-
else if (
|
|
141
|
-
materialized = findingFromAiOrGithub(outputDir, id, 'github', tracking);
|
|
162
|
+
else if (tracking?.source === 'github' && ref) {
|
|
163
|
+
materialized = findingFromAiOrGithub(outputDir, id, 'github', ref, tracking);
|
|
142
164
|
}
|
|
143
|
-
// Fallback: synthesize a minimal record from the tracking entry (
|
|
144
|
-
//
|
|
165
|
+
// Fallback: synthesize a minimal record from the tracking entry (manual
|
|
166
|
+
// findings, or any source record we couldn't read).
|
|
145
167
|
if (!materialized) {
|
|
146
168
|
materialized = newEmptyFinding(id, tracking?.severity ?? 'Info');
|
|
147
169
|
if (tracking?.title)
|
|
148
170
|
materialized.title = tracking.title;
|
|
149
|
-
|
|
171
|
+
if (tracking?.source_ref)
|
|
172
|
+
materialized.source_ref = tracking.source_ref;
|
|
150
173
|
}
|
|
151
174
|
findings.findings.push(materialized);
|
|
152
175
|
writeJson(path.join(outputDir, 'findings.json'), findings);
|
|
@@ -163,10 +186,16 @@ export function ensureFindingExists(outputDir, id) {
|
|
|
163
186
|
* /validate-issue skill, which the auditor invokes deliberately — a drag-drop
|
|
164
187
|
* on the board should never silently rewrite .sol files.
|
|
165
188
|
*/
|
|
166
|
-
|
|
189
|
+
const SYNCED_LOCK_MSG = 'Issue is synced to GitHub and is read-only in Hex. Edit it on GitHub, then run /sync-issues to pull the changes.';
|
|
190
|
+
export function moveIssue(outputDir, id, column, duplicateOf) {
|
|
167
191
|
const nextStatus = COLUMN_TO_STATUS[column];
|
|
168
|
-
|
|
169
|
-
|
|
192
|
+
// `synced` is reachable only via markSynced (the /sync-issues path), never drag/move.
|
|
193
|
+
if (!nextStatus) {
|
|
194
|
+
throw new Error(`Invalid column: ${column}. The "synced" column is reached only via /sync-issues.`);
|
|
195
|
+
}
|
|
196
|
+
const current = loadTracking(outputDir).findings.find((t) => t.id === id);
|
|
197
|
+
if (current?.status === 'synced')
|
|
198
|
+
throw new Error(SYNCED_LOCK_MSG);
|
|
170
199
|
// Promoting to Verified should make the issue reportable.
|
|
171
200
|
if (column === 'verified')
|
|
172
201
|
ensureFindingExists(outputDir, id);
|
|
@@ -185,7 +214,7 @@ export function moveIssue(outputDir, id, column) {
|
|
|
185
214
|
poc_status: finding.poc?.status ?? 'not_started',
|
|
186
215
|
poc_file: finding.poc?.file ?? null,
|
|
187
216
|
duplicates: [],
|
|
188
|
-
duplicate_of: null,
|
|
217
|
+
duplicate_of: column === 'duplicate' ? (duplicateOf ?? null) : null,
|
|
189
218
|
notes: '',
|
|
190
219
|
};
|
|
191
220
|
tracking.findings.push(entry);
|
|
@@ -193,9 +222,15 @@ export function moveIssue(outputDir, id, column) {
|
|
|
193
222
|
else {
|
|
194
223
|
entry.status = nextStatus;
|
|
195
224
|
}
|
|
196
|
-
|
|
197
|
-
|
|
225
|
+
if (column === 'duplicate') {
|
|
226
|
+
// Record the canonical issue this duplicates, if given.
|
|
227
|
+
if (duplicateOf)
|
|
228
|
+
entry.duplicate_of = duplicateOf;
|
|
229
|
+
}
|
|
230
|
+
else if (entry.duplicate_of) {
|
|
231
|
+
// Clear a stale duplicate pointer when the card leaves the Duplicate column.
|
|
198
232
|
entry.duplicate_of = null;
|
|
233
|
+
}
|
|
199
234
|
writeJson(path.join(outputDir, 'tracking.json'), tracking);
|
|
200
235
|
return entry;
|
|
201
236
|
}
|
|
@@ -220,9 +255,16 @@ export function patchIssue(outputDir, id, updates) {
|
|
|
220
255
|
}
|
|
221
256
|
clean[key] = value;
|
|
222
257
|
}
|
|
223
|
-
|
|
258
|
+
// `files` is not an editable text field; it sets root_cause.locations directly.
|
|
259
|
+
const files = Array.isArray(updates.files)
|
|
260
|
+
? updates.files.filter((v) => typeof v === 'string')
|
|
261
|
+
: null;
|
|
262
|
+
if (Object.keys(clean).length === 0 && !files) {
|
|
224
263
|
throw new Error('No editable fields supplied');
|
|
225
264
|
}
|
|
265
|
+
const current = loadTracking(outputDir).findings.find((t) => t.id === id);
|
|
266
|
+
if (current?.status === 'synced')
|
|
267
|
+
throw new Error(SYNCED_LOCK_MSG);
|
|
226
268
|
const finding = ensureFindingExists(outputDir, id);
|
|
227
269
|
const findings = loadFindings(outputDir);
|
|
228
270
|
const target = findings.findings.find((f) => f.id === id) ?? finding;
|
|
@@ -235,6 +277,9 @@ export function patchIssue(outputDir, id, updates) {
|
|
|
235
277
|
}
|
|
236
278
|
target[key] = value;
|
|
237
279
|
}
|
|
280
|
+
if (files) {
|
|
281
|
+
target.root_cause.locations = files.map((file) => ({ file }));
|
|
282
|
+
}
|
|
238
283
|
writeJson(path.join(outputDir, 'findings.json'), findings);
|
|
239
284
|
// Mirror title / severity / notes onto tracking.
|
|
240
285
|
const tracking = loadTracking(outputDir);
|
|
@@ -250,4 +295,120 @@ export function patchIssue(outputDir, id, updates) {
|
|
|
250
295
|
}
|
|
251
296
|
return target;
|
|
252
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Allocate a uniform `H-NNN` id and write a tracking entry + findings.json
|
|
300
|
+
* skeleton. Returns the new id. Conformance/manual start in the Potential
|
|
301
|
+
* column (`pending_validation`); auditagent starts `unverified`. Skills call
|
|
302
|
+
* this (via `hex issue new`) instead of hand-writing JSON.
|
|
303
|
+
*/
|
|
304
|
+
export function createIssue(outputDir, input) {
|
|
305
|
+
const id = allocateId(outputDir);
|
|
306
|
+
const status = input.source === 'auditagent' ? 'unverified' : 'pending_validation';
|
|
307
|
+
// Materialize the full finding from the source record when source_ref
|
|
308
|
+
// resolves (conformance / auditagent / github), so the board shows the real
|
|
309
|
+
// description immediately. Fall back to a titled skeleton otherwise.
|
|
310
|
+
const ref = input.source_ref ?? '';
|
|
311
|
+
let f = null;
|
|
312
|
+
if (input.source === 'conformance' && ref) {
|
|
313
|
+
f = findingFromConformance(outputDir, id, ref);
|
|
314
|
+
}
|
|
315
|
+
else if (input.source === 'auditagent' && ref) {
|
|
316
|
+
f = findingFromAiOrGithub(outputDir, id, 'auditagent', ref);
|
|
317
|
+
}
|
|
318
|
+
else if (input.source === 'github' && ref) {
|
|
319
|
+
f = findingFromAiOrGithub(outputDir, id, 'github', ref);
|
|
320
|
+
}
|
|
321
|
+
if (!f) {
|
|
322
|
+
f = newEmptyFinding(id, input.severity ?? 'Info');
|
|
323
|
+
f.title = input.title;
|
|
324
|
+
if (input.source_ref)
|
|
325
|
+
f.source_ref = input.source_ref;
|
|
326
|
+
}
|
|
327
|
+
// An explicit --severity / --title from the caller wins over the source record.
|
|
328
|
+
if (input.severity)
|
|
329
|
+
f.severity = input.severity;
|
|
330
|
+
if (input.title)
|
|
331
|
+
f.title = input.title;
|
|
332
|
+
// Explicit affected files populate the File(s) line.
|
|
333
|
+
if (input.files && input.files.length > 0) {
|
|
334
|
+
f.root_cause.locations = input.files.map((file) => ({ file }));
|
|
335
|
+
}
|
|
336
|
+
const severity = f.severity;
|
|
337
|
+
const findings = loadFindings(outputDir);
|
|
338
|
+
findings.findings.push(f);
|
|
339
|
+
writeJson(path.join(outputDir, 'findings.json'), findings);
|
|
340
|
+
const tracking = loadTracking(outputDir);
|
|
341
|
+
tracking.findings.push({
|
|
342
|
+
id,
|
|
343
|
+
title: input.title,
|
|
344
|
+
severity,
|
|
345
|
+
source: input.source,
|
|
346
|
+
status,
|
|
347
|
+
poc_status: 'not_started',
|
|
348
|
+
poc_file: null,
|
|
349
|
+
duplicates: [],
|
|
350
|
+
duplicate_of: null,
|
|
351
|
+
source_ref: input.source_ref ?? null,
|
|
352
|
+
notes: '',
|
|
353
|
+
});
|
|
354
|
+
writeJson(path.join(outputDir, 'tracking.json'), tracking);
|
|
355
|
+
return id;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Mark an issue as synced to GitHub: set status to `synced`, write the github
|
|
359
|
+
* block, and overwrite finding fields from GitHub (GitHub is the source of
|
|
360
|
+
* truth once synced). Used by /sync-issues for both push-confirm (after
|
|
361
|
+
* `gh issue create`) and pull-update (GitHub edits → local). This is the only
|
|
362
|
+
* function that produces `status: 'synced'`.
|
|
363
|
+
*/
|
|
364
|
+
export function markSynced(outputDir, id, github, fields = {}) {
|
|
365
|
+
const finding = ensureFindingExists(outputDir, id);
|
|
366
|
+
const findings = loadFindings(outputDir);
|
|
367
|
+
const target = findings.findings.find((f) => f.id === id) ?? finding;
|
|
368
|
+
if (fields.title != null)
|
|
369
|
+
target.title = fields.title;
|
|
370
|
+
if (fields.severity != null && isValidSeverity(fields.severity))
|
|
371
|
+
target.severity = fields.severity;
|
|
372
|
+
if (fields.description != null)
|
|
373
|
+
target.description = fields.description;
|
|
374
|
+
if (fields.recommendation != null)
|
|
375
|
+
target.recommendation = fields.recommendation;
|
|
376
|
+
if (fields.update_from_client != null)
|
|
377
|
+
target.update_from_client = fields.update_from_client;
|
|
378
|
+
if (fields.resolution != null) {
|
|
379
|
+
if (fields.resolution === '')
|
|
380
|
+
delete target.resolution;
|
|
381
|
+
else if (isValidResolution(fields.resolution))
|
|
382
|
+
target.resolution = fields.resolution;
|
|
383
|
+
}
|
|
384
|
+
target.github = { ...github };
|
|
385
|
+
writeJson(path.join(outputDir, 'findings.json'), findings);
|
|
386
|
+
const tracking = loadTracking(outputDir);
|
|
387
|
+
let entry = tracking.findings.find((t) => t.id === id);
|
|
388
|
+
if (!entry) {
|
|
389
|
+
entry = {
|
|
390
|
+
id,
|
|
391
|
+
title: target.title,
|
|
392
|
+
severity: target.severity,
|
|
393
|
+
source: 'github',
|
|
394
|
+
status: 'synced',
|
|
395
|
+
poc_status: target.poc?.status ?? 'not_started',
|
|
396
|
+
poc_file: target.poc?.file ?? null,
|
|
397
|
+
duplicates: [],
|
|
398
|
+
duplicate_of: null,
|
|
399
|
+
source_ref: String(github.issue_number),
|
|
400
|
+
notes: '',
|
|
401
|
+
};
|
|
402
|
+
tracking.findings.push(entry);
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
entry.status = 'synced';
|
|
406
|
+
entry.title = target.title;
|
|
407
|
+
entry.severity = target.severity;
|
|
408
|
+
if (entry.source_ref == null)
|
|
409
|
+
entry.source_ref = String(github.issue_number);
|
|
410
|
+
}
|
|
411
|
+
writeJson(path.join(outputDir, 'tracking.json'), tracking);
|
|
412
|
+
return target;
|
|
413
|
+
}
|
|
253
414
|
//# sourceMappingURL=issues.js.map
|
package/dist/core/issues.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/core/issues.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/core/issues.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,CAAC,MAAM,eAAe,GAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAA0B;IACtD,OAAO;IACP,WAAW;IACX,cAAc;IACd,WAAW;IACX,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IAC3D,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO;IACP,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,oBAAoB;IACpB,OAAO;CACC,CAAC;AAyDX,uEAAuE;AAEvE,SAAS,QAAQ,CAAI,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAM,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACrE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB;IACrC,OAAO,QAAQ,CAAe,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC3F,CAAC;AACD,SAAS,YAAY,CAAC,SAAiB;IACrC,OAAO,QAAQ,CAAe,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,eAAqC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,CAAU;IAC1C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,iBAAuC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,uEAAuE;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC;YAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ;QAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ;QAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,uEAAuE;AAEvE,SAAS,eAAe,CAAC,EAAU,EAAE,QAAkB;IACrD,OAAO;QACL,EAAE;QACF,KAAK,EAAE,EAAE;QACT,QAAQ;QACR,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7B,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;QACjE,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;QAClC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAS,sBAAsB,CAC7B,SAAiB,EACjB,EAAU,EACV,GAAW,EACX,QAAwB;IAExB,MAAM,IAAI,GAAG,QAAQ,CACnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAC9C,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,CAAC,GAAG,eAAe,CACvB,EAAE,EACF,CAAC,QAAQ,EAAE,QAAQ,IAAK,IAAI,CAAC,aAA0B,IAAI,MAAM,CAAa,CAC/E,CAAC;IACF,CAAC,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IAChC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,aAA8C,CAAC;IAChE,IAAI,GAAG,EAAE,IAAI;QAAE,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,sGAAsG;AACtG,SAAS,qBAAqB,CAC5B,SAAiB,EACjB,EAAU,EACV,IAA6B,EAC7B,GAAW,EACX,QAAwB;IAExB,MAAM,MAAM,GACV,IAAI,KAAK,YAAY;QACnB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC;QACnE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,QAAQ,CAAgD,MAAM,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,GAAG,EAAE,CACxF,CAAC;IACF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,EAAG,GAAG,CAAC,QAAqB,IAAI,QAAQ,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAC;IAC1F,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAI,GAAG,CAAC,aAA2D,IAAI,EAAE,CAAC;IACxF,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,EAAU;IAC/D,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC;IAEvC,IAAI,YAAY,GAAmB,IAAI,CAAC;IACxC,IAAI,QAAQ,EAAE,MAAM,KAAK,aAAa,IAAI,GAAG,EAAE,CAAC;QAC9C,YAAY,GAAG,sBAAsB,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,QAAQ,EAAE,MAAM,KAAK,YAAY,IAAI,GAAG,EAAE,CAAC;QACpD,YAAY,GAAG,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;SAAM,IAAI,QAAQ,EAAE,MAAM,KAAK,QAAQ,IAAI,GAAG,EAAE,CAAC;QAChD,YAAY,GAAG,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,wEAAwE;IACxE,oDAAoD;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAC;QACjE,IAAI,QAAQ,EAAE,KAAK;YAAE,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACzD,IAAI,QAAQ,EAAE,UAAU;YAAE,YAAY,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC1E,CAAC;IAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,MAAM,eAAe,GACnB,kHAAkH,CAAC;AAErH,MAAM,UAAU,SAAS,CACvB,SAAiB,EACjB,EAAU,EACV,MAAmB,EACnB,WAAoB;IAEpB,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,sFAAsF;IACtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,yDAAyD,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAI,OAAO,EAAE,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnE,0DAA0D;IAC1D,IAAI,MAAM,KAAK,UAAU;QAAE,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,6EAA6E;QAC7E,sEAAsE;QACtE,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnD,KAAK,GAAG;YACN,EAAE;YACF,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,aAAa;YAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI;YACnC,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACnE,KAAK,EAAE,EAAE;SACV,CAAC;QACF,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,wDAAwD;QACxD,IAAI,WAAW;YAAE,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;IACpD,CAAC;SAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9B,6EAA6E;QAC7E,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,EAAU,EACV,OAAgC;IAEhC,MAAM,KAAK,GAA4C,EAAE,CAAC;IAC1D,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC;YAAE,SAAS;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,UAAU,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,gFAAgF;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,CAAC,CAAE,OAAO,CAAC,KAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAChF,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAI,OAAO,EAAE,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,OAAO,CAAC;IAErE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,KAAK,OAAO;YAAE,SAAS,CAAC,wCAAwC;QACvE,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC,UAAU,CAAC;YACzB,SAAS;QACX,CAAC;QACA,MAAkC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3D,iDAAiD;IACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,OAAO,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;QAC1D,IAAI,UAAU,IAAI,KAAK;YAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAoB,CAAC;QACrE,IAAI,OAAO,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,KAAuB;IACpE,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAEnF,sEAAsE;IACtE,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,GAAmB,IAAI,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,GAAG,EAAE,CAAC;QAC1C,CAAC,GAAG,sBAAsB,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,GAAG,EAAE,CAAC;QAChD,CAAC,GAAG,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,EAAE,CAAC;QAC5C,CAAC,GAAG,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,IAAI,KAAK,CAAC,UAAU;YAAE,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACxD,CAAC;IACD,gFAAgF;IAChF,IAAI,KAAK,CAAC,QAAQ;QAAE,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChD,IAAI,KAAK,CAAC,KAAK;QAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACvC,qDAAqD;IACrD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAa,CAAC,CAAC,QAAQ,CAAC;IAEtC,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB,EAAE;QACF,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ;QACR,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM;QACN,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;IACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3D,OAAO,EAAE,CAAC;AACZ,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,EAAU,EACV,MAAkB,EAClB,SAAqB,EAAE;IAEvB,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,OAAO,CAAC;IAErE,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACtD,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7D,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACxE,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI;QAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IACjF,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI;QAAE,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAC7F,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,UAAU,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC,UAAU,CAAC;aAClD,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG;YACN,EAAE;YACF,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,IAAI,aAAa;YAC/C,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI;YAClC,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YACvC,KAAK,EAAE,EAAE;SACV,CAAC;QACF,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI;YAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/E,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE3D,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locate the Hex output directory on disk. Dependency-free (node builtins only)
|
|
3
|
+
* so it can be imported by both the CLI and the Next.js dashboard without
|
|
4
|
+
* dragging in the rest of `src/core` — the dashboard's webpack can't resolve our
|
|
5
|
+
* NodeNext `.js`-suffixed relative imports, so anything it imports from here must
|
|
6
|
+
* not import other `src/core` modules.
|
|
7
|
+
*/
|
|
8
|
+
/** Candidate output-directory names, in priority order (`.hex` is current). */
|
|
9
|
+
export declare const OUTPUT_DIR_NAMES: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Find a config.json directly under `dir` (in one of the candidate output dirs,
|
|
12
|
+
* or `dir` itself). Returns the normalized path to config.json, or null.
|
|
13
|
+
*/
|
|
14
|
+
export declare function findConfigInDir(dir: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Locate the Hex output directory by **walking up** the directory tree from
|
|
17
|
+
* `searchFrom`, checking each ancestor for a `<dir>/config.json`. Returns the
|
|
18
|
+
* directory the config.json actually lives in (e.g. `<project>/.hex`) — anchored
|
|
19
|
+
* to disk rather than to the absolute `project_dir` string baked into config.json
|
|
20
|
+
* at init time (which goes stale if the project is moved/mounted/renamed and
|
|
21
|
+
* makes the CLI and dashboard disagree about which `.hex` to use).
|
|
22
|
+
*
|
|
23
|
+
* Returns null if no config.json is found in `searchFrom` or any ancestor.
|
|
24
|
+
*/
|
|
25
|
+
export declare function findOutputDir(searchFrom?: string): string | null;
|
|
26
|
+
//# sourceMappingURL=locate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locate.d.ts","sourceRoot":"","sources":["../../src/core/locate.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,UAA2C,CAAC;AAMzE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,UAAU,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAY/E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Locate the Hex output directory on disk. Dependency-free (node builtins only)
|
|
5
|
+
* so it can be imported by both the CLI and the Next.js dashboard without
|
|
6
|
+
* dragging in the rest of `src/core` — the dashboard's webpack can't resolve our
|
|
7
|
+
* NodeNext `.js`-suffixed relative imports, so anything it imports from here must
|
|
8
|
+
* not import other `src/core` modules.
|
|
9
|
+
*/
|
|
10
|
+
/** Candidate output-directory names, in priority order (`.hex` is current). */
|
|
11
|
+
export const OUTPUT_DIR_NAMES = ['.hex', '.solaudit', 'solaudit-output'];
|
|
12
|
+
function norm(p) {
|
|
13
|
+
return p.replace(/\\/g, '/');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Find a config.json directly under `dir` (in one of the candidate output dirs,
|
|
17
|
+
* or `dir` itself). Returns the normalized path to config.json, or null.
|
|
18
|
+
*/
|
|
19
|
+
export function findConfigInDir(dir) {
|
|
20
|
+
const candidates = [
|
|
21
|
+
...OUTPUT_DIR_NAMES.map((name) => path.join(dir, name, 'config.json')),
|
|
22
|
+
// Also check if `dir` itself is an output dir.
|
|
23
|
+
path.join(dir, 'config.json'),
|
|
24
|
+
];
|
|
25
|
+
for (const candidate of candidates) {
|
|
26
|
+
if (fs.existsSync(candidate)) {
|
|
27
|
+
return norm(candidate);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Locate the Hex output directory by **walking up** the directory tree from
|
|
34
|
+
* `searchFrom`, checking each ancestor for a `<dir>/config.json`. Returns the
|
|
35
|
+
* directory the config.json actually lives in (e.g. `<project>/.hex`) — anchored
|
|
36
|
+
* to disk rather than to the absolute `project_dir` string baked into config.json
|
|
37
|
+
* at init time (which goes stale if the project is moved/mounted/renamed and
|
|
38
|
+
* makes the CLI and dashboard disagree about which `.hex` to use).
|
|
39
|
+
*
|
|
40
|
+
* Returns null if no config.json is found in `searchFrom` or any ancestor.
|
|
41
|
+
*/
|
|
42
|
+
export function findOutputDir(searchFrom = process.cwd()) {
|
|
43
|
+
let dir = path.resolve(searchFrom);
|
|
44
|
+
// Loop until the filesystem root (parent === self).
|
|
45
|
+
for (;;) {
|
|
46
|
+
const configPath = findConfigInDir(dir);
|
|
47
|
+
if (configPath) {
|
|
48
|
+
return norm(path.dirname(configPath));
|
|
49
|
+
}
|
|
50
|
+
const parent = path.dirname(dir);
|
|
51
|
+
if (parent === dir)
|
|
52
|
+
return null;
|
|
53
|
+
dir = parent;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=locate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/core/locate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;GAMG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAEzE,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,UAAU,GAAG;QACjB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACtE,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;KAC9B,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,aAAqB,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,oDAAoD;IACpD,SAAS,CAAC;QACR,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/core/schema.d.ts
CHANGED
|
@@ -2067,6 +2067,7 @@ export declare const FindingSchema: z.ZodObject<{
|
|
|
2067
2067
|
}>>;
|
|
2068
2068
|
update_from_client: z.ZodOptional<z.ZodString>;
|
|
2069
2069
|
resolution: z.ZodOptional<z.ZodEnum<["Fixed", "Mitigated", "Acknowledged", "Not Fixed", "Unresolved"]>>;
|
|
2070
|
+
source_ref: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2070
2071
|
}, "strip", z.ZodTypeAny, {
|
|
2071
2072
|
id: string;
|
|
2072
2073
|
description: string;
|
|
@@ -2105,6 +2106,7 @@ export declare const FindingSchema: z.ZodObject<{
|
|
|
2105
2106
|
} | undefined;
|
|
2106
2107
|
update_from_client?: string | undefined;
|
|
2107
2108
|
resolution?: "Fixed" | "Mitigated" | "Acknowledged" | "Not Fixed" | "Unresolved" | undefined;
|
|
2109
|
+
source_ref?: string | null | undefined;
|
|
2108
2110
|
}, {
|
|
2109
2111
|
id: string;
|
|
2110
2112
|
description: string;
|
|
@@ -2143,6 +2145,7 @@ export declare const FindingSchema: z.ZodObject<{
|
|
|
2143
2145
|
} | undefined;
|
|
2144
2146
|
update_from_client?: string | undefined;
|
|
2145
2147
|
resolution?: "Fixed" | "Mitigated" | "Acknowledged" | "Not Fixed" | "Unresolved" | undefined;
|
|
2148
|
+
source_ref?: string | null | undefined;
|
|
2146
2149
|
}>;
|
|
2147
2150
|
export declare const FindingsSchema: z.ZodObject<{
|
|
2148
2151
|
findings: z.ZodArray<z.ZodObject<{
|
|
@@ -2249,6 +2252,7 @@ export declare const FindingsSchema: z.ZodObject<{
|
|
|
2249
2252
|
}>>;
|
|
2250
2253
|
update_from_client: z.ZodOptional<z.ZodString>;
|
|
2251
2254
|
resolution: z.ZodOptional<z.ZodEnum<["Fixed", "Mitigated", "Acknowledged", "Not Fixed", "Unresolved"]>>;
|
|
2255
|
+
source_ref: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2252
2256
|
}, "strip", z.ZodTypeAny, {
|
|
2253
2257
|
id: string;
|
|
2254
2258
|
description: string;
|
|
@@ -2287,6 +2291,7 @@ export declare const FindingsSchema: z.ZodObject<{
|
|
|
2287
2291
|
} | undefined;
|
|
2288
2292
|
update_from_client?: string | undefined;
|
|
2289
2293
|
resolution?: "Fixed" | "Mitigated" | "Acknowledged" | "Not Fixed" | "Unresolved" | undefined;
|
|
2294
|
+
source_ref?: string | null | undefined;
|
|
2290
2295
|
}, {
|
|
2291
2296
|
id: string;
|
|
2292
2297
|
description: string;
|
|
@@ -2325,6 +2330,7 @@ export declare const FindingsSchema: z.ZodObject<{
|
|
|
2325
2330
|
} | undefined;
|
|
2326
2331
|
update_from_client?: string | undefined;
|
|
2327
2332
|
resolution?: "Fixed" | "Mitigated" | "Acknowledged" | "Not Fixed" | "Unresolved" | undefined;
|
|
2333
|
+
source_ref?: string | null | undefined;
|
|
2328
2334
|
}>, "many">;
|
|
2329
2335
|
}, "strip", z.ZodTypeAny, {
|
|
2330
2336
|
findings: {
|
|
@@ -2365,6 +2371,7 @@ export declare const FindingsSchema: z.ZodObject<{
|
|
|
2365
2371
|
} | undefined;
|
|
2366
2372
|
update_from_client?: string | undefined;
|
|
2367
2373
|
resolution?: "Fixed" | "Mitigated" | "Acknowledged" | "Not Fixed" | "Unresolved" | undefined;
|
|
2374
|
+
source_ref?: string | null | undefined;
|
|
2368
2375
|
}[];
|
|
2369
2376
|
}, {
|
|
2370
2377
|
findings: {
|
|
@@ -2405,6 +2412,7 @@ export declare const FindingsSchema: z.ZodObject<{
|
|
|
2405
2412
|
} | undefined;
|
|
2406
2413
|
update_from_client?: string | undefined;
|
|
2407
2414
|
resolution?: "Fixed" | "Mitigated" | "Acknowledged" | "Not Fixed" | "Unresolved" | undefined;
|
|
2415
|
+
source_ref?: string | null | undefined;
|
|
2408
2416
|
}[];
|
|
2409
2417
|
}>;
|
|
2410
2418
|
export declare const TrackingSourceSchema: z.ZodEnum<["manual", "auditagent", "conformance", "github"]>;
|
|
@@ -2413,14 +2421,15 @@ export declare const TrackingEntrySchema: z.ZodObject<{
|
|
|
2413
2421
|
title: z.ZodString;
|
|
2414
2422
|
severity: z.ZodEnum<["Critical", "High", "Medium", "Low", "Info"]>;
|
|
2415
2423
|
source: z.ZodEnum<["manual", "auditagent", "conformance", "github"]>;
|
|
2416
|
-
status: z.ZodEnum<["verified", "pending_validation", "rejected", "duplicate", "unverified"]>;
|
|
2424
|
+
status: z.ZodEnum<["verified", "pending_validation", "rejected", "duplicate", "unverified", "synced"]>;
|
|
2417
2425
|
poc_status: z.ZodEnum<["passing", "failing", "not_started"]>;
|
|
2418
2426
|
poc_file: z.ZodNullable<z.ZodString>;
|
|
2419
2427
|
duplicates: z.ZodArray<z.ZodString, "many">;
|
|
2420
2428
|
duplicate_of: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2429
|
+
source_ref: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2421
2430
|
notes: z.ZodString;
|
|
2422
2431
|
}, "strip", z.ZodTypeAny, {
|
|
2423
|
-
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified";
|
|
2432
|
+
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified" | "synced";
|
|
2424
2433
|
id: string;
|
|
2425
2434
|
severity: "Critical" | "High" | "Medium" | "Low" | "Info";
|
|
2426
2435
|
title: string;
|
|
@@ -2429,9 +2438,10 @@ export declare const TrackingEntrySchema: z.ZodObject<{
|
|
|
2429
2438
|
poc_file: string | null;
|
|
2430
2439
|
duplicates: string[];
|
|
2431
2440
|
notes: string;
|
|
2441
|
+
source_ref?: string | null | undefined;
|
|
2432
2442
|
duplicate_of?: string | null | undefined;
|
|
2433
2443
|
}, {
|
|
2434
|
-
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified";
|
|
2444
|
+
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified" | "synced";
|
|
2435
2445
|
id: string;
|
|
2436
2446
|
severity: "Critical" | "High" | "Medium" | "Low" | "Info";
|
|
2437
2447
|
title: string;
|
|
@@ -2440,6 +2450,7 @@ export declare const TrackingEntrySchema: z.ZodObject<{
|
|
|
2440
2450
|
poc_file: string | null;
|
|
2441
2451
|
duplicates: string[];
|
|
2442
2452
|
notes: string;
|
|
2453
|
+
source_ref?: string | null | undefined;
|
|
2443
2454
|
duplicate_of?: string | null | undefined;
|
|
2444
2455
|
}>;
|
|
2445
2456
|
export declare const TrackingSchema: z.ZodObject<{
|
|
@@ -2448,14 +2459,15 @@ export declare const TrackingSchema: z.ZodObject<{
|
|
|
2448
2459
|
title: z.ZodString;
|
|
2449
2460
|
severity: z.ZodEnum<["Critical", "High", "Medium", "Low", "Info"]>;
|
|
2450
2461
|
source: z.ZodEnum<["manual", "auditagent", "conformance", "github"]>;
|
|
2451
|
-
status: z.ZodEnum<["verified", "pending_validation", "rejected", "duplicate", "unverified"]>;
|
|
2462
|
+
status: z.ZodEnum<["verified", "pending_validation", "rejected", "duplicate", "unverified", "synced"]>;
|
|
2452
2463
|
poc_status: z.ZodEnum<["passing", "failing", "not_started"]>;
|
|
2453
2464
|
poc_file: z.ZodNullable<z.ZodString>;
|
|
2454
2465
|
duplicates: z.ZodArray<z.ZodString, "many">;
|
|
2455
2466
|
duplicate_of: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2467
|
+
source_ref: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2456
2468
|
notes: z.ZodString;
|
|
2457
2469
|
}, "strip", z.ZodTypeAny, {
|
|
2458
|
-
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified";
|
|
2470
|
+
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified" | "synced";
|
|
2459
2471
|
id: string;
|
|
2460
2472
|
severity: "Critical" | "High" | "Medium" | "Low" | "Info";
|
|
2461
2473
|
title: string;
|
|
@@ -2464,9 +2476,10 @@ export declare const TrackingSchema: z.ZodObject<{
|
|
|
2464
2476
|
poc_file: string | null;
|
|
2465
2477
|
duplicates: string[];
|
|
2466
2478
|
notes: string;
|
|
2479
|
+
source_ref?: string | null | undefined;
|
|
2467
2480
|
duplicate_of?: string | null | undefined;
|
|
2468
2481
|
}, {
|
|
2469
|
-
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified";
|
|
2482
|
+
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified" | "synced";
|
|
2470
2483
|
id: string;
|
|
2471
2484
|
severity: "Critical" | "High" | "Medium" | "Low" | "Info";
|
|
2472
2485
|
title: string;
|
|
@@ -2475,11 +2488,12 @@ export declare const TrackingSchema: z.ZodObject<{
|
|
|
2475
2488
|
poc_file: string | null;
|
|
2476
2489
|
duplicates: string[];
|
|
2477
2490
|
notes: string;
|
|
2491
|
+
source_ref?: string | null | undefined;
|
|
2478
2492
|
duplicate_of?: string | null | undefined;
|
|
2479
2493
|
}>, "many">;
|
|
2480
2494
|
}, "strip", z.ZodTypeAny, {
|
|
2481
2495
|
findings: {
|
|
2482
|
-
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified";
|
|
2496
|
+
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified" | "synced";
|
|
2483
2497
|
id: string;
|
|
2484
2498
|
severity: "Critical" | "High" | "Medium" | "Low" | "Info";
|
|
2485
2499
|
title: string;
|
|
@@ -2488,11 +2502,12 @@ export declare const TrackingSchema: z.ZodObject<{
|
|
|
2488
2502
|
poc_file: string | null;
|
|
2489
2503
|
duplicates: string[];
|
|
2490
2504
|
notes: string;
|
|
2505
|
+
source_ref?: string | null | undefined;
|
|
2491
2506
|
duplicate_of?: string | null | undefined;
|
|
2492
2507
|
}[];
|
|
2493
2508
|
}, {
|
|
2494
2509
|
findings: {
|
|
2495
|
-
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified";
|
|
2510
|
+
status: "verified" | "pending_validation" | "rejected" | "duplicate" | "unverified" | "synced";
|
|
2496
2511
|
id: string;
|
|
2497
2512
|
severity: "Critical" | "High" | "Medium" | "Low" | "Info";
|
|
2498
2513
|
title: string;
|
|
@@ -2501,6 +2516,7 @@ export declare const TrackingSchema: z.ZodObject<{
|
|
|
2501
2516
|
poc_file: string | null;
|
|
2502
2517
|
duplicates: string[];
|
|
2503
2518
|
notes: string;
|
|
2519
|
+
source_ref?: string | null | undefined;
|
|
2504
2520
|
duplicate_of?: string | null | undefined;
|
|
2505
2521
|
}[];
|
|
2506
2522
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|