audit-tools 0.50.19 → 0.50.21
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/audit/cli/conceptualDispatch.d.ts.map +1 -1
- package/dist/audit/cli/conceptualDispatch.js +26 -1
- package/dist/audit/cli/conceptualDispatch.js.map +1 -1
- package/dist/audit/cli/confirmIntentStep.d.ts +8 -0
- package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
- package/dist/audit/cli/confirmIntentStep.js +19 -2
- package/dist/audit/cli/confirmIntentStep.js.map +1 -1
- package/dist/audit/cli/laneValidators.d.ts.map +1 -1
- package/dist/audit/cli/laneValidators.js +9 -1
- package/dist/audit/cli/laneValidators.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +31 -3
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +63 -2
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/resynthesizeCommand.d.ts.map +1 -1
- package/dist/audit/cli/resynthesizeCommand.js +2 -0
- package/dist/audit/cli/resynthesizeCommand.js.map +1 -1
- package/dist/audit/cli/steps.d.ts +2 -2
- package/dist/audit/io/artifacts.d.ts +3 -0
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +1 -0
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/orchestrator/dependencyMap.d.ts +1 -0
- package/dist/audit/orchestrator/dependencyMap.d.ts.map +1 -1
- package/dist/audit/orchestrator/dependencyMap.js +3 -0
- package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts +2 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.js +5 -2
- package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
- package/dist/audit/orchestrator/executors.d.ts.map +1 -1
- package/dist/audit/orchestrator/executors.js +5 -0
- package/dist/audit/orchestrator/executors.js.map +1 -1
- package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/synthesisExecutors.js +27 -1
- package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
- package/dist/audit/reporting/synthesis.d.ts +4 -0
- package/dist/audit/reporting/synthesis.d.ts.map +1 -1
- package/dist/audit/reporting/synthesis.js +229 -5
- package/dist/audit/reporting/synthesis.js.map +1 -1
- package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts +7 -11
- package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -1
- package/dist/audit/systemic/secondOrderAdversaryPrompt.js +135 -54
- package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -1
- package/dist/audit/types/conceptualAdjudication.d.ts +665 -0
- package/dist/audit/types/conceptualAdjudication.d.ts.map +1 -0
- package/dist/audit/types/conceptualAdjudication.js +298 -0
- package/dist/audit/types/conceptualAdjudication.js.map +1 -0
- package/opencode.json +2 -2
- package/package.json +1 -1
- package/skills/audit-code/audit-code.prompt.md +11 -1
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { unlink } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { FindingSchema, isFileMissingError, laneAssetsDir, readJsonFile, readOptionalJsonFile, writeJsonFile, } from "audit-tools/shared";
|
|
5
|
+
const PercentageSchema = z.number().finite().min(0).max(100);
|
|
6
|
+
export const ConceptualRoundContributorSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
contributor_id: z.string().min(1),
|
|
9
|
+
perspective: z.string().min(1),
|
|
10
|
+
lane_id: z.string().min(1),
|
|
11
|
+
prompt_path: z.string().min(1),
|
|
12
|
+
result_path: z.string().min(1),
|
|
13
|
+
})
|
|
14
|
+
.strict();
|
|
15
|
+
export const ConceptualReviewRoundManifestSchema = z
|
|
16
|
+
.object({
|
|
17
|
+
schema_version: z.literal(1),
|
|
18
|
+
mode: z.literal("deep"),
|
|
19
|
+
round_id: z.string().min(1),
|
|
20
|
+
perspectives: z.array(ConceptualRoundContributorSchema).min(1),
|
|
21
|
+
judge: z
|
|
22
|
+
.object({
|
|
23
|
+
contributor_id: z.string().min(1),
|
|
24
|
+
lane_id: z.string().min(1),
|
|
25
|
+
prompt_path: z.string().min(1),
|
|
26
|
+
result_path: z.string().min(1),
|
|
27
|
+
})
|
|
28
|
+
.strict(),
|
|
29
|
+
})
|
|
30
|
+
.strict();
|
|
31
|
+
export const CONCEPTUAL_REVIEW_ROUND_FILENAME = "conceptual-review-round.json";
|
|
32
|
+
export function conceptualReviewRoundManifestPath(artifactsDir) {
|
|
33
|
+
return join(laneAssetsDir(artifactsDir), CONCEPTUAL_REVIEW_ROUND_FILENAME);
|
|
34
|
+
}
|
|
35
|
+
export async function writeConceptualReviewRoundManifest(artifactsDir, manifest) {
|
|
36
|
+
await writeJsonFile(conceptualReviewRoundManifestPath(artifactsDir), ConceptualReviewRoundManifestSchema.parse(manifest));
|
|
37
|
+
}
|
|
38
|
+
export async function readConceptualReviewRoundManifest(artifactsDir) {
|
|
39
|
+
const value = await readOptionalJsonFile(conceptualReviewRoundManifestPath(artifactsDir));
|
|
40
|
+
return value === undefined
|
|
41
|
+
? undefined
|
|
42
|
+
: ConceptualReviewRoundManifestSchema.parse(value);
|
|
43
|
+
}
|
|
44
|
+
export async function clearConceptualReviewRoundManifest(artifactsDir) {
|
|
45
|
+
try {
|
|
46
|
+
await unlink(conceptualReviewRoundManifestPath(artifactsDir));
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (!isFileMissingError(error))
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export const ConceptualCandidateDispositionSchema = z
|
|
54
|
+
.object({
|
|
55
|
+
candidate_id: z.string().min(1),
|
|
56
|
+
contributor_id: z.string().min(1),
|
|
57
|
+
source_finding_id: z.string().min(1),
|
|
58
|
+
disposition: z.enum(["retained", "merged", "rejected"]),
|
|
59
|
+
target_final_finding_ids: z.array(z.string().min(1)),
|
|
60
|
+
modification_percent: PercentageSchema,
|
|
61
|
+
rationale: z.string().trim().min(1),
|
|
62
|
+
})
|
|
63
|
+
.strict();
|
|
64
|
+
export const ConceptualFinalFindingShareSchema = z
|
|
65
|
+
.object({
|
|
66
|
+
final_finding_id: z.string().min(1),
|
|
67
|
+
contributors: z
|
|
68
|
+
.array(z
|
|
69
|
+
.object({
|
|
70
|
+
contributor_id: z.string().min(1),
|
|
71
|
+
source_candidate_ids: z.array(z.string().min(1)),
|
|
72
|
+
contribution_percent: PercentageSchema,
|
|
73
|
+
rationale: z.string().trim().min(1),
|
|
74
|
+
})
|
|
75
|
+
.strict())
|
|
76
|
+
.min(1),
|
|
77
|
+
})
|
|
78
|
+
.strict();
|
|
79
|
+
export const ConceptualJudgeSubmissionSchema = z
|
|
80
|
+
.object({
|
|
81
|
+
round_id: z.string().min(1),
|
|
82
|
+
findings: z.array(FindingSchema),
|
|
83
|
+
candidate_dispositions: z.array(ConceptualCandidateDispositionSchema),
|
|
84
|
+
final_finding_shares: z.array(ConceptualFinalFindingShareSchema),
|
|
85
|
+
})
|
|
86
|
+
.strict();
|
|
87
|
+
export function conceptualCandidateId(contributorId, findingId) {
|
|
88
|
+
return `${contributorId}::${findingId}`;
|
|
89
|
+
}
|
|
90
|
+
function submissionFindings(value, path) {
|
|
91
|
+
const envelope = z
|
|
92
|
+
.union([
|
|
93
|
+
z.array(FindingSchema),
|
|
94
|
+
z.object({ findings: z.array(FindingSchema) }).passthrough(),
|
|
95
|
+
])
|
|
96
|
+
.safeParse(value);
|
|
97
|
+
if (!envelope.success) {
|
|
98
|
+
throw new Error(`conceptual perspective result ${path} is not a valid findings array/envelope: ${envelope.error.message}`);
|
|
99
|
+
}
|
|
100
|
+
return Array.isArray(envelope.data)
|
|
101
|
+
? envelope.data
|
|
102
|
+
: envelope.data.findings;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Read exactly the perspective result paths named by the current-round
|
|
106
|
+
* manifest. No directory scan is permitted: old round files may remain for
|
|
107
|
+
* provenance, but they are never candidates in a later adjudication.
|
|
108
|
+
*/
|
|
109
|
+
export async function loadConceptualPerspectiveFindings(manifestInput) {
|
|
110
|
+
const manifest = ConceptualReviewRoundManifestSchema.parse(manifestInput);
|
|
111
|
+
const out = new Map();
|
|
112
|
+
for (const contributor of manifest.perspectives) {
|
|
113
|
+
if (out.has(contributor.contributor_id)) {
|
|
114
|
+
throw new Error(`duplicate contributor ${contributor.contributor_id}`);
|
|
115
|
+
}
|
|
116
|
+
const value = await readJsonFile(contributor.result_path);
|
|
117
|
+
out.set(contributor.contributor_id, submissionFindings(value, contributor.result_path));
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
function fail(message) {
|
|
122
|
+
throw new Error(`invalid conceptual adjudication: ${message}`);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Apply semantic invariants a schema alone cannot express. Percentages remain
|
|
126
|
+
* judge-authored estimates; tooling verifies references, completeness, and
|
|
127
|
+
* arithmetic rather than pretending to derive semantic credit mechanically.
|
|
128
|
+
*/
|
|
129
|
+
export function buildConceptualReviewAdjudication(params) {
|
|
130
|
+
const manifest = ConceptualReviewRoundManifestSchema.parse(params.manifest);
|
|
131
|
+
const submission = ConceptualJudgeSubmissionSchema.parse(params.submission);
|
|
132
|
+
if (submission.round_id !== manifest.round_id) {
|
|
133
|
+
fail(`stale round ${submission.round_id}; expected current round ${manifest.round_id}`);
|
|
134
|
+
}
|
|
135
|
+
const perspectiveIds = new Set();
|
|
136
|
+
for (const contributor of manifest.perspectives) {
|
|
137
|
+
if (perspectiveIds.has(contributor.contributor_id)) {
|
|
138
|
+
fail(`duplicate contributor ${contributor.contributor_id}`);
|
|
139
|
+
}
|
|
140
|
+
perspectiveIds.add(contributor.contributor_id);
|
|
141
|
+
}
|
|
142
|
+
if (perspectiveIds.has(manifest.judge.contributor_id)) {
|
|
143
|
+
fail(`judge contributor duplicates perspective ${manifest.judge.contributor_id}`);
|
|
144
|
+
}
|
|
145
|
+
const expectedCandidates = new Map();
|
|
146
|
+
for (const contributor of manifest.perspectives) {
|
|
147
|
+
const findings = params.perspectiveFindings.get(contributor.contributor_id);
|
|
148
|
+
if (!findings) {
|
|
149
|
+
fail(`missing perspective findings for ${contributor.contributor_id}`);
|
|
150
|
+
}
|
|
151
|
+
const seenFindingIds = new Set();
|
|
152
|
+
for (const finding of findings) {
|
|
153
|
+
if (seenFindingIds.has(finding.id)) {
|
|
154
|
+
fail(`duplicate source finding ${finding.id} from contributor ${contributor.contributor_id}`);
|
|
155
|
+
}
|
|
156
|
+
seenFindingIds.add(finding.id);
|
|
157
|
+
const id = conceptualCandidateId(contributor.contributor_id, finding.id);
|
|
158
|
+
expectedCandidates.set(id, {
|
|
159
|
+
contributorId: contributor.contributor_id,
|
|
160
|
+
findingId: finding.id,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const finalIds = new Set(submission.findings.map((finding) => finding.id));
|
|
165
|
+
if (finalIds.size !== submission.findings.length) {
|
|
166
|
+
fail("duplicate final finding id");
|
|
167
|
+
}
|
|
168
|
+
const dispositions = new Map();
|
|
169
|
+
for (const disposition of submission.candidate_dispositions) {
|
|
170
|
+
if (dispositions.has(disposition.candidate_id)) {
|
|
171
|
+
fail(`duplicate candidate disposition ${disposition.candidate_id}`);
|
|
172
|
+
}
|
|
173
|
+
dispositions.set(disposition.candidate_id, disposition);
|
|
174
|
+
const expected = expectedCandidates.get(disposition.candidate_id);
|
|
175
|
+
if (!expected) {
|
|
176
|
+
fail(`unknown candidate ${disposition.candidate_id}`);
|
|
177
|
+
}
|
|
178
|
+
if (disposition.contributor_id !== expected.contributorId ||
|
|
179
|
+
disposition.source_finding_id !== expected.findingId ||
|
|
180
|
+
disposition.candidate_id !==
|
|
181
|
+
conceptualCandidateId(disposition.contributor_id, disposition.source_finding_id)) {
|
|
182
|
+
fail(`candidate identity mismatch ${disposition.candidate_id}`);
|
|
183
|
+
}
|
|
184
|
+
for (const finalId of disposition.target_final_finding_ids) {
|
|
185
|
+
if (!finalIds.has(finalId)) {
|
|
186
|
+
fail(`unknown final finding ${finalId}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (disposition.disposition === "rejected" &&
|
|
190
|
+
disposition.target_final_finding_ids.length > 0) {
|
|
191
|
+
fail(`rejected candidate ${disposition.candidate_id} maps to a final finding`);
|
|
192
|
+
}
|
|
193
|
+
if (disposition.disposition !== "rejected" &&
|
|
194
|
+
disposition.target_final_finding_ids.length === 0) {
|
|
195
|
+
fail(`${disposition.disposition} candidate ${disposition.candidate_id} has no final finding`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
for (const expectedId of expectedCandidates.keys()) {
|
|
199
|
+
if (!dispositions.has(expectedId)) {
|
|
200
|
+
fail(`missing candidate disposition ${expectedId}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const shareByFinal = new Map();
|
|
204
|
+
const citedShareEdges = new Set();
|
|
205
|
+
for (const finalShare of submission.final_finding_shares) {
|
|
206
|
+
if (!finalIds.has(finalShare.final_finding_id)) {
|
|
207
|
+
fail(`unknown final finding ${finalShare.final_finding_id}`);
|
|
208
|
+
}
|
|
209
|
+
if (shareByFinal.has(finalShare.final_finding_id)) {
|
|
210
|
+
fail(`duplicate final finding share ${finalShare.final_finding_id}`);
|
|
211
|
+
}
|
|
212
|
+
shareByFinal.set(finalShare.final_finding_id, finalShare);
|
|
213
|
+
const seenContributors = new Set();
|
|
214
|
+
let judgeShares = 0;
|
|
215
|
+
let total = 0;
|
|
216
|
+
for (const share of finalShare.contributors) {
|
|
217
|
+
if (seenContributors.has(share.contributor_id)) {
|
|
218
|
+
fail(`duplicate contributor ${share.contributor_id} for final finding ${finalShare.final_finding_id}`);
|
|
219
|
+
}
|
|
220
|
+
seenContributors.add(share.contributor_id);
|
|
221
|
+
total += share.contribution_percent;
|
|
222
|
+
if (share.contributor_id === manifest.judge.contributor_id) {
|
|
223
|
+
judgeShares += 1;
|
|
224
|
+
if (share.source_candidate_ids.length > 0) {
|
|
225
|
+
fail(`judge share for ${finalShare.final_finding_id} references source candidates`);
|
|
226
|
+
}
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
if (!perspectiveIds.has(share.contributor_id)) {
|
|
230
|
+
fail(`unknown contributor ${share.contributor_id}`);
|
|
231
|
+
}
|
|
232
|
+
if (share.source_candidate_ids.length === 0) {
|
|
233
|
+
fail(`perspective share ${share.contributor_id} for ${finalShare.final_finding_id} has no source candidate`);
|
|
234
|
+
}
|
|
235
|
+
for (const candidateId of share.source_candidate_ids) {
|
|
236
|
+
const edgeId = `${candidateId}\u0000${finalShare.final_finding_id}`;
|
|
237
|
+
if (citedShareEdges.has(edgeId)) {
|
|
238
|
+
fail(`candidate ${candidateId} is cited more than once for final finding ${finalShare.final_finding_id}`);
|
|
239
|
+
}
|
|
240
|
+
citedShareEdges.add(edgeId);
|
|
241
|
+
const candidate = dispositions.get(candidateId);
|
|
242
|
+
if (!candidate)
|
|
243
|
+
fail(`unknown candidate ${candidateId}`);
|
|
244
|
+
if (candidate.contributor_id !== share.contributor_id) {
|
|
245
|
+
fail(`candidate ${candidateId} belongs to another contributor`);
|
|
246
|
+
}
|
|
247
|
+
if (!candidate.target_final_finding_ids.includes(finalShare.final_finding_id)) {
|
|
248
|
+
fail(`candidate ${candidateId} does not target final finding ${finalShare.final_finding_id}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (judgeShares !== 1) {
|
|
253
|
+
fail(`final finding ${finalShare.final_finding_id} requires exactly one judge share`);
|
|
254
|
+
}
|
|
255
|
+
if (Math.abs(total - 100) > Number.EPSILON) {
|
|
256
|
+
fail(`contribution shares for ${finalShare.final_finding_id} must total 100 (got ${total})`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
for (const finalId of finalIds) {
|
|
260
|
+
if (!shareByFinal.has(finalId)) {
|
|
261
|
+
fail(`missing final finding share ${finalId}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
for (const disposition of dispositions.values()) {
|
|
265
|
+
if (disposition.disposition === "rejected")
|
|
266
|
+
continue;
|
|
267
|
+
for (const finalId of disposition.target_final_finding_ids) {
|
|
268
|
+
if (!citedShareEdges.has(`${disposition.candidate_id}\u0000${finalId}`)) {
|
|
269
|
+
fail(`${disposition.disposition} candidate ${disposition.candidate_id} is not cited by final finding ${finalId}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
schema_version: 1,
|
|
275
|
+
generated_at: params.generatedAt,
|
|
276
|
+
round_id: manifest.round_id,
|
|
277
|
+
contributors: [
|
|
278
|
+
...manifest.perspectives.map((contributor) => ({
|
|
279
|
+
contributor_id: contributor.contributor_id,
|
|
280
|
+
role: "perspective",
|
|
281
|
+
perspective: contributor.perspective,
|
|
282
|
+
lane_id: contributor.lane_id,
|
|
283
|
+
prompt_path: contributor.prompt_path,
|
|
284
|
+
result_path: contributor.result_path,
|
|
285
|
+
})),
|
|
286
|
+
{
|
|
287
|
+
contributor_id: manifest.judge.contributor_id,
|
|
288
|
+
role: "judge",
|
|
289
|
+
lane_id: manifest.judge.lane_id,
|
|
290
|
+
prompt_path: manifest.judge.prompt_path,
|
|
291
|
+
result_path: manifest.judge.result_path,
|
|
292
|
+
},
|
|
293
|
+
],
|
|
294
|
+
candidate_dispositions: submission.candidate_dispositions,
|
|
295
|
+
final_finding_shares: submission.final_finding_shares,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=conceptualAdjudication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conceptualAdjudication.js","sourceRoot":"","sources":["../../../src/audit/types/conceptualAdjudication.ts"],"names":[],"mappings":"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"}
|
package/opencode.json
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"grep": "allow",
|
|
9
9
|
"edit": {
|
|
10
10
|
"*": "ask",
|
|
11
|
-
".remediate-code/**": "allow",
|
|
12
|
-
".audit-tools/**": "allow",
|
|
13
11
|
".audit-code/**": "allow",
|
|
12
|
+
".audit-tools/**": "allow",
|
|
13
|
+
".remediate-code/**": "allow",
|
|
14
14
|
".audit-artifacts/**": "allow",
|
|
15
15
|
"audit-report.md": "allow"
|
|
16
16
|
},
|
package/package.json
CHANGED
|
@@ -42,7 +42,17 @@ catalog, or state files unless the current prompt directs you to them.
|
|
|
42
42
|
|
|
43
43
|
When the prompt emits semantic review items, assign them with the host's native
|
|
44
44
|
subagent facilities when available. Do not send provider, model, quota,
|
|
45
|
-
context-window, routing, or launch configuration to audit-tools.
|
|
45
|
+
context-window, routing, or launch configuration to audit-tools. Before treating
|
|
46
|
+
the run as comprehensive, perform a host-side structural-capability preflight:
|
|
47
|
+
confirm the host can inspect the structural graph/relationships and source
|
|
48
|
+
structure required by the workload. This is a host capability check, not an
|
|
49
|
+
audit-tools MCP/provider or lane-selection step. If capability is degraded but
|
|
50
|
+
you proceed, record one reserved AgentReflection with task_id exactly
|
|
51
|
+
`audit-capability-preflight`; use severity `high` or `critical` when material to
|
|
52
|
+
claimed coverage, with concrete `tool_friction`, `ambiguities`, and `suggestions`
|
|
53
|
+
details. A structurally incapable run must not be labelled comprehensive. Keep
|
|
54
|
+
the conversation-first flow and loader contract; do not add provider, routing,
|
|
55
|
+
model, or machine-capability fields to audit-tools. Write the
|
|
46
56
|
prompt-bound result artifacts exactly where requested and let the next backend
|
|
47
57
|
step validate and ingest them.
|
|
48
58
|
|