audit-tools 0.32.44 → 0.32.46
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/args.d.ts.map +1 -1
- package/dist/audit/cli/args.js +2 -4
- package/dist/audit/cli/args.js.map +1 -1
- package/dist/audit/cli/auditStep.d.ts +1 -1
- package/dist/audit/cli/dispatch.d.ts +1 -0
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +39 -18
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.d.ts +41 -0
- package/dist/audit/cli/mergeAndIngestCommand.d.ts.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.js +105 -18
- package/dist/audit/cli/mergeAndIngestCommand.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +3 -3
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +23 -38
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +130 -89
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/ownerTokens.d.ts +21 -0
- package/dist/audit/cli/ownerTokens.d.ts.map +1 -0
- package/dist/audit/cli/ownerTokens.js +86 -0
- package/dist/audit/cli/ownerTokens.js.map +1 -0
- package/dist/audit/cli/resynthesizeCommand.d.ts.map +1 -1
- package/dist/audit/cli/resynthesizeCommand.js +8 -10
- package/dist/audit/cli/resynthesizeCommand.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.js +9 -22
- package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
- package/dist/audit/contracts/wrapperResponse.d.ts +6 -6
- package/dist/audit/extractors/gitHistory.d.ts.map +1 -1
- package/dist/audit/extractors/gitHistory.js +3 -0
- package/dist/audit/extractors/gitHistory.js.map +1 -1
- package/dist/audit/orchestrator/advance.d.ts +4 -1
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +185 -36
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/fileIntegrity.d.ts.map +1 -1
- package/dist/audit/orchestrator/fileIntegrity.js +21 -32
- package/dist/audit/orchestrator/fileIntegrity.js.map +1 -1
- package/dist/audit/orchestrator/reviewPackets.d.ts.map +1 -1
- package/dist/audit/orchestrator/reviewPackets.js +31 -36
- package/dist/audit/orchestrator/reviewPackets.js.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.js +12 -24
- package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
- package/dist/audit/providers/opencodeProvider.d.ts +1 -4
- package/dist/audit/providers/opencodeProvider.d.ts.map +1 -1
- package/dist/audit/providers/opencodeProvider.js +6 -9
- package/dist/audit/providers/opencodeProvider.js.map +1 -1
- package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
- package/dist/audit/reporting/mergeFindings.js +1 -32
- package/dist/audit/reporting/mergeFindings.js.map +1 -1
- package/dist/audit/reporting/synthesis.d.ts.map +1 -1
- package/dist/audit/reporting/synthesis.js +1 -12
- package/dist/audit/reporting/synthesis.js.map +1 -1
- package/dist/audit/supervisor/operatorHandoff.d.ts.map +1 -1
- package/dist/audit/supervisor/operatorHandoff.js +9 -12
- package/dist/audit/supervisor/operatorHandoff.js.map +1 -1
- package/dist/audit/supervisor/sessionConfig.d.ts.map +1 -1
- package/dist/audit/supervisor/sessionConfig.js +25 -35
- package/dist/audit/supervisor/sessionConfig.js.map +1 -1
- package/dist/audit/types/auditState.d.ts +6 -6
- package/dist/remediate/dedup/crossLensDedup.d.ts +2 -1
- package/dist/remediate/dedup/crossLensDedup.d.ts.map +1 -1
- package/dist/remediate/dedup/crossLensDedup.js +4 -33
- package/dist/remediate/dedup/crossLensDedup.js.map +1 -1
- package/dist/remediate/index.d.ts +2 -2
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +5 -8
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/intake.d.ts.map +1 -1
- package/dist/remediate/intake.js +9 -5
- package/dist/remediate/intake.js.map +1 -1
- package/dist/remediate/phases/close.d.ts +59 -1
- package/dist/remediate/phases/close.d.ts.map +1 -1
- package/dist/remediate/phases/close.js +294 -29
- package/dist/remediate/phases/close.js.map +1 -1
- package/dist/remediate/phases/plan.d.ts +2 -2
- package/dist/remediate/phases/plan.d.ts.map +1 -1
- package/dist/remediate/phases/plan.js +31 -23
- package/dist/remediate/phases/plan.js.map +1 -1
- package/dist/remediate/providers/opencodeProvider.d.ts +1 -4
- package/dist/remediate/providers/opencodeProvider.d.ts.map +1 -1
- package/dist/remediate/providers/opencodeProvider.js +6 -9
- package/dist/remediate/providers/opencodeProvider.js.map +1 -1
- package/dist/remediate/state/store.d.ts +54 -11
- package/dist/remediate/state/store.d.ts.map +1 -1
- package/dist/remediate/state/store.js +37 -64
- package/dist/remediate/state/store.js.map +1 -1
- package/dist/remediate/state/types.d.ts +22 -0
- package/dist/remediate/state/types.d.ts.map +1 -1
- package/dist/remediate/state/types.js +8 -0
- package/dist/remediate/state/types.js.map +1 -1
- package/dist/remediate/steps/dispatch/acceptNode.d.ts +38 -0
- package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/acceptNode.js +70 -24
- package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.js +30 -0
- package/dist/remediate/steps/dispatch/marshal.js.map +1 -1
- package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/worktreeLifecycle.js +42 -8
- package/dist/remediate/steps/dispatch/worktreeLifecycle.js.map +1 -1
- package/dist/remediate/steps/finalGate.d.ts +2 -2
- package/dist/remediate/steps/finalGate.d.ts.map +1 -1
- package/dist/remediate/steps/finalGate.js +8 -9
- package/dist/remediate/steps/finalGate.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +12 -0
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +57 -35
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
- package/dist/remediate/steps/rollingSession.js +27 -1
- package/dist/remediate/steps/rollingSession.js.map +1 -1
- package/dist/remediate/utils/fileIntegrity.d.ts.map +1 -1
- package/dist/remediate/utils/fileIntegrity.js +29 -33
- package/dist/remediate/utils/fileIntegrity.js.map +1 -1
- package/dist/remediate/utils/hostAssets.d.ts +4 -1
- package/dist/remediate/utils/hostAssets.d.ts.map +1 -1
- package/dist/remediate/utils/hostAssets.js +4 -1
- package/dist/remediate/utils/hostAssets.js.map +1 -1
- package/dist/remediate/validation/artifacts.d.ts.map +1 -1
- package/dist/remediate/validation/artifacts.js +3 -2
- package/dist/remediate/validation/artifacts.js.map +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipeline.js +3 -1
- package/dist/remediate/validation/contractPipeline.js.map +1 -1
- package/dist/shared/chunkByBudget.d.ts +58 -0
- package/dist/shared/chunkByBudget.d.ts.map +1 -0
- package/dist/shared/chunkByBudget.js +31 -0
- package/dist/shared/chunkByBudget.js.map +1 -0
- package/dist/shared/countBy.d.ts +19 -0
- package/dist/shared/countBy.d.ts.map +1 -0
- package/dist/shared/countBy.js +29 -0
- package/dist/shared/countBy.js.map +1 -0
- package/dist/shared/engine/obligationEngine.d.ts +2 -2
- package/dist/shared/fileIntegrity.d.ts +55 -0
- package/dist/shared/fileIntegrity.d.ts.map +1 -0
- package/dist/shared/fileIntegrity.js +50 -0
- package/dist/shared/fileIntegrity.js.map +1 -0
- package/dist/shared/findingSimilarity.d.ts +26 -0
- package/dist/shared/findingSimilarity.d.ts.map +1 -0
- package/dist/shared/findingSimilarity.js +54 -0
- package/dist/shared/findingSimilarity.js.map +1 -0
- package/dist/shared/friction/stepBoundaryCapture.d.ts +17 -0
- package/dist/shared/friction/stepBoundaryCapture.d.ts.map +1 -1
- package/dist/shared/friction/stepBoundaryCapture.js +21 -0
- package/dist/shared/friction/stepBoundaryCapture.js.map +1 -1
- package/dist/shared/git.d.ts +23 -0
- package/dist/shared/git.d.ts.map +1 -1
- package/dist/shared/git.js +26 -0
- package/dist/shared/git.js.map +1 -1
- package/dist/shared/index.d.ts +11 -4
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +22 -3
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/auditToolsPaths.d.ts +7 -0
- package/dist/shared/io/auditToolsPaths.d.ts.map +1 -1
- package/dist/shared/io/auditToolsPaths.js +10 -0
- package/dist/shared/io/auditToolsPaths.js.map +1 -1
- package/dist/shared/io/lockedJsonStore.d.ts +66 -0
- package/dist/shared/io/lockedJsonStore.d.ts.map +1 -0
- package/dist/shared/io/lockedJsonStore.js +59 -0
- package/dist/shared/io/lockedJsonStore.js.map +1 -0
- package/dist/shared/loopCorePaths.d.ts.map +1 -1
- package/dist/shared/loopCorePaths.js +2 -0
- package/dist/shared/loopCorePaths.js.map +1 -1
- package/dist/shared/providers/openAiCompatibleProvider.d.ts.map +1 -1
- package/dist/shared/providers/openAiCompatibleProvider.js +2 -1
- package/dist/shared/providers/openAiCompatibleProvider.js.map +1 -1
- package/dist/shared/providers/opencodeProvider.d.ts +8 -0
- package/dist/shared/providers/opencodeProvider.d.ts.map +1 -1
- package/dist/shared/providers/opencodeProvider.js +10 -0
- package/dist/shared/providers/opencodeProvider.js.map +1 -1
- package/dist/shared/quota/claimRegistry.d.ts +9 -0
- package/dist/shared/quota/claimRegistry.d.ts.map +1 -1
- package/dist/shared/quota/claimRegistry.js +20 -0
- package/dist/shared/quota/claimRegistry.js.map +1 -1
- package/dist/shared/reporting/auditDeliverable.d.ts.map +1 -1
- package/dist/shared/reporting/auditDeliverable.js +14 -9
- package/dist/shared/reporting/auditDeliverable.js.map +1 -1
- package/dist/shared/tooling/exec.d.ts +42 -4
- package/dist/shared/tooling/exec.d.ts.map +1 -1
- package/dist/shared/tooling/exec.js +90 -12
- package/dist/shared/tooling/exec.js.map +1 -1
- package/dist/shared/types/contractPipeline/verification.d.ts +17 -3
- package/dist/shared/types/contractPipeline/verification.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.d.ts +28 -0
- package/dist/shared/types/sessionConfig.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.js +35 -0
- package/dist/shared/types/sessionConfig.js.map +1 -1
- package/opencode.json +2 -11
- package/package.json +2 -1
- package/scripts/audit/postinstall.mjs +57 -137
- package/scripts/remediate/postinstall.mjs +41 -169
- package/scripts/shared/install-host-assets.mjs +188 -0
- package/wrapper/audit-code-wrapper-lib.mjs +32 -4
- package/wrapper/audit-code-wrapper-opencode.mjs +41 -25
- package/wrapper/remediate-code-wrapper-opencode.mjs +43 -21
- package/dist/remediate/utils/commands.d.ts +0 -17
- package/dist/remediate/utils/commands.d.ts.map +0 -1
- package/dist/remediate/utils/commands.js +0 -29
- package/dist/remediate/utils/commands.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countBy.d.ts","sourceRoot":"","sources":["../../src/shared/countBy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAClB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,GACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic "count items by a derived key" reducer. Four independent
|
|
3
|
+
* reimplementations of this existed before the extraction: the audit
|
|
4
|
+
* synthesis summary breakdowns (severity/lens/grounding-status/runtime-status
|
|
5
|
+
* — src/audit/reporting/synthesis.ts, 4 call sites sharing one local
|
|
6
|
+
* `countBy`), the shared audit-deliverable renderer's severity/lens
|
|
7
|
+
* breakdowns (src/shared/reporting/auditDeliverable.ts), remediate's
|
|
8
|
+
* outcomes-report close-out (src/remediate/phases/close.ts), and remediate's
|
|
9
|
+
* findings digest (src/remediate/intake.ts). Single-sourced here so a future
|
|
10
|
+
* fifth breakdown doesn't reimplement it a fifth time.
|
|
11
|
+
*
|
|
12
|
+
* A `selectKey` returning `undefined` or `""` skips the item — it is never
|
|
13
|
+
* counted under an empty-string bucket. This matches the original
|
|
14
|
+
* synthesis.ts behavior (its `if (!key) continue;` guard), which some
|
|
15
|
+
* consumers rely on (e.g. the grounding-status breakdown, where most findings
|
|
16
|
+
* have no grounding verdict at all).
|
|
17
|
+
*/
|
|
18
|
+
export function countBy(items, selectKey) {
|
|
19
|
+
const breakdown = {};
|
|
20
|
+
for (const item of items) {
|
|
21
|
+
const key = selectKey(item);
|
|
22
|
+
if (!key) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
breakdown[key] = (breakdown[key] ?? 0) + 1;
|
|
26
|
+
}
|
|
27
|
+
return breakdown;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=countBy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countBy.js","sourceRoot":"","sources":["../../src/shared/countBy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,OAAO,CACrB,KAAkB,EAClB,SAA0C;IAE1C,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -31,11 +31,11 @@ export declare const ObligationSchema: z.ZodObject<{
|
|
|
31
31
|
reason: z.ZodOptional<z.ZodString>;
|
|
32
32
|
}, "strict", z.ZodTypeAny, {
|
|
33
33
|
id: string;
|
|
34
|
-
state: "blocked" | "
|
|
34
|
+
state: "blocked" | "missing" | "satisfied" | "present" | "stale";
|
|
35
35
|
reason?: string | undefined;
|
|
36
36
|
}, {
|
|
37
37
|
id: string;
|
|
38
|
-
state: "blocked" | "
|
|
38
|
+
state: "blocked" | "missing" | "satisfied" | "present" | "stale";
|
|
39
39
|
reason?: string | undefined;
|
|
40
40
|
}>;
|
|
41
41
|
export type Obligation = z.infer<typeof ObligationSchema>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic file-integrity check loop — the common core of audit-code's
|
|
3
|
+
* `checkFileIntegrity` (flat repo-manifest scope) and remediate-code's
|
|
4
|
+
* `checkAffectedFileIntegrity` (finding-affected-files scope). Both iterate a
|
|
5
|
+
* list of records carrying a stored/expected hash, resolve each to an absolute
|
|
6
|
+
* path, classify it as unchanged / changed / missing / an I/O error, and derive
|
|
7
|
+
* `is_clean` from the three buckets. What genuinely differs per side — the
|
|
8
|
+
* record shape, path resolution, how a file/directory is actually hashed, and
|
|
9
|
+
* the I/O-error reporting format — stays with the caller via the injected
|
|
10
|
+
* `resolveAbsolute` / `exists` / `hash` hooks; this module owns only the shared
|
|
11
|
+
* classify-and-bucket loop.
|
|
12
|
+
*/
|
|
13
|
+
export interface FileIntegrityBuckets {
|
|
14
|
+
changed: string[];
|
|
15
|
+
missing: string[];
|
|
16
|
+
ioErrors: string[];
|
|
17
|
+
isClean: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Outcome of hashing one record's resolved path, reported back to the loop:
|
|
21
|
+
* - `ok` — the file was read; compare `hash` against the record's expected hash.
|
|
22
|
+
* - `missing` — the path turned out to be absent (e.g. a race between the
|
|
23
|
+
* caller's `exists` pre-check and the actual read).
|
|
24
|
+
* - `io_error` — a real read failure (not "absent"). The caller is responsible
|
|
25
|
+
* for reporting/logging it in its own format before returning this outcome.
|
|
26
|
+
*/
|
|
27
|
+
export type FileIntegrityHashOutcome = {
|
|
28
|
+
kind: "ok";
|
|
29
|
+
hash: string;
|
|
30
|
+
} | {
|
|
31
|
+
kind: "missing";
|
|
32
|
+
} | {
|
|
33
|
+
kind: "io_error";
|
|
34
|
+
};
|
|
35
|
+
export interface FileIntegrityCheckOptions<T> {
|
|
36
|
+
/** Records to check (already scoped/deduped by the caller). */
|
|
37
|
+
records: Iterable<T>;
|
|
38
|
+
/** Display path recorded into the changed/missing/io_errors buckets. */
|
|
39
|
+
getPath: (record: T) => string;
|
|
40
|
+
/** The record's stored/expected hash. Records without one are skipped entirely. */
|
|
41
|
+
getExpectedHash: (record: T) => string | undefined;
|
|
42
|
+
/** Resolve the record's display path to an absolute filesystem path. */
|
|
43
|
+
resolveAbsolute: (path: string) => string;
|
|
44
|
+
/** Synchronous existence check, run before attempting to hash. */
|
|
45
|
+
exists: (absolutePath: string) => boolean;
|
|
46
|
+
/** Hash the resolved path, classifying any failure per {@link FileIntegrityHashOutcome}. */
|
|
47
|
+
hash: (absolutePath: string, record: T) => Promise<FileIntegrityHashOutcome>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Iterate `records`, classify each into changed / missing / io_errors against
|
|
51
|
+
* its expected hash, and derive `isClean`. Ordering follows iteration order of
|
|
52
|
+
* `records` (callers are responsible for any stable pre-sort/dedup).
|
|
53
|
+
*/
|
|
54
|
+
export declare function checkFileIntegrityRecords<T>(options: FileIntegrityCheckOptions<T>): Promise<FileIntegrityBuckets>;
|
|
55
|
+
//# sourceMappingURL=fileIntegrity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileIntegrity.d.ts","sourceRoot":"","sources":["../../src/shared/fileIntegrity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,wEAAwE;IACxE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,mFAAmF;IACnF,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACnD,wEAAwE;IACxE,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,kEAAkE;IAClE,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,4FAA4F;IAC5F,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC9E;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic file-integrity check loop — the common core of audit-code's
|
|
3
|
+
* `checkFileIntegrity` (flat repo-manifest scope) and remediate-code's
|
|
4
|
+
* `checkAffectedFileIntegrity` (finding-affected-files scope). Both iterate a
|
|
5
|
+
* list of records carrying a stored/expected hash, resolve each to an absolute
|
|
6
|
+
* path, classify it as unchanged / changed / missing / an I/O error, and derive
|
|
7
|
+
* `is_clean` from the three buckets. What genuinely differs per side — the
|
|
8
|
+
* record shape, path resolution, how a file/directory is actually hashed, and
|
|
9
|
+
* the I/O-error reporting format — stays with the caller via the injected
|
|
10
|
+
* `resolveAbsolute` / `exists` / `hash` hooks; this module owns only the shared
|
|
11
|
+
* classify-and-bucket loop.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Iterate `records`, classify each into changed / missing / io_errors against
|
|
15
|
+
* its expected hash, and derive `isClean`. Ordering follows iteration order of
|
|
16
|
+
* `records` (callers are responsible for any stable pre-sort/dedup).
|
|
17
|
+
*/
|
|
18
|
+
export async function checkFileIntegrityRecords(options) {
|
|
19
|
+
const changed = [];
|
|
20
|
+
const missing = [];
|
|
21
|
+
const ioErrors = [];
|
|
22
|
+
for (const record of options.records) {
|
|
23
|
+
const expectedHash = options.getExpectedHash(record);
|
|
24
|
+
if (!expectedHash)
|
|
25
|
+
continue;
|
|
26
|
+
const path = options.getPath(record);
|
|
27
|
+
const absolute = options.resolveAbsolute(path);
|
|
28
|
+
if (!options.exists(absolute)) {
|
|
29
|
+
missing.push(path);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const outcome = await options.hash(absolute, record);
|
|
33
|
+
if (outcome.kind === "missing") {
|
|
34
|
+
missing.push(path);
|
|
35
|
+
}
|
|
36
|
+
else if (outcome.kind === "io_error") {
|
|
37
|
+
ioErrors.push(path);
|
|
38
|
+
}
|
|
39
|
+
else if (outcome.hash !== expectedHash) {
|
|
40
|
+
changed.push(path);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
changed,
|
|
45
|
+
missing,
|
|
46
|
+
ioErrors,
|
|
47
|
+
isClean: changed.length === 0 && missing.length === 0 && ioErrors.length === 0,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=fileIntegrity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileIntegrity.js","sourceRoot":"","sources":["../../src/shared/fileIntegrity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqCH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAqC;IAErC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;KAC/E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text/file-similarity primitives for the fuzzy ("similar enough to merge")
|
|
3
|
+
* dedup tier. Byte-identical copies of these four helpers lived in both
|
|
4
|
+
* halves of the pipeline — the auditor's same-lens/cross-lens merge passes
|
|
5
|
+
* (src/audit/reporting/mergeFindings.ts) and the remediator's cross-lens
|
|
6
|
+
* dedup (src/remediate/dedup/crossLensDedup.ts) — sitting right alongside
|
|
7
|
+
* the severityRank/confidenceRank/findingIdentityKey imports both already
|
|
8
|
+
* pulled from `audit-tools/shared`. Single-sourced here so the two fuzzy
|
|
9
|
+
* layers can never silently drift on what "similar enough" means.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately separate from findingIdentitySignature.ts: that module owns
|
|
12
|
+
* the deterministic EXACT-match identity ladder; this one is the fuzzy layer
|
|
13
|
+
* consulted only when the exact-match signature does not already collapse
|
|
14
|
+
* two findings.
|
|
15
|
+
*/
|
|
16
|
+
import type { Finding } from "./types/finding.js";
|
|
17
|
+
/**
|
|
18
|
+
* Jaccard similarity (0..1) of the whitespace-tokenized, case-folded,
|
|
19
|
+
* punctuation-stripped word sets of `a` and `b`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function wordJaccard(a: string, b: string): number;
|
|
22
|
+
/** Jaccard overlap (0..1) of two findings' affected-file path sets. */
|
|
23
|
+
export declare function filePathOverlap(a: Finding, b: Finding): number;
|
|
24
|
+
/** A finding's primary (first-listed) affected-file path, or "" when none. */
|
|
25
|
+
export declare function primaryPath(finding: Finding): string;
|
|
26
|
+
//# sourceMappingURL=findingSimilarity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findingSimilarity.d.ts","sourceRoot":"","sources":["../../src/shared/findingSimilarity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAYlD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAS9D;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text/file-similarity primitives for the fuzzy ("similar enough to merge")
|
|
3
|
+
* dedup tier. Byte-identical copies of these four helpers lived in both
|
|
4
|
+
* halves of the pipeline — the auditor's same-lens/cross-lens merge passes
|
|
5
|
+
* (src/audit/reporting/mergeFindings.ts) and the remediator's cross-lens
|
|
6
|
+
* dedup (src/remediate/dedup/crossLensDedup.ts) — sitting right alongside
|
|
7
|
+
* the severityRank/confidenceRank/findingIdentityKey imports both already
|
|
8
|
+
* pulled from `audit-tools/shared`. Single-sourced here so the two fuzzy
|
|
9
|
+
* layers can never silently drift on what "similar enough" means.
|
|
10
|
+
*
|
|
11
|
+
* Deliberately separate from findingIdentitySignature.ts: that module owns
|
|
12
|
+
* the deterministic EXACT-match identity ladder; this one is the fuzzy layer
|
|
13
|
+
* consulted only when the exact-match signature does not already collapse
|
|
14
|
+
* two findings.
|
|
15
|
+
*/
|
|
16
|
+
function wordSet(text) {
|
|
17
|
+
return new Set(text
|
|
18
|
+
.toLowerCase()
|
|
19
|
+
.replace(/[^a-z0-9\s]/g, " ")
|
|
20
|
+
.split(/\s+/)
|
|
21
|
+
.filter(Boolean));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Jaccard similarity (0..1) of the whitespace-tokenized, case-folded,
|
|
25
|
+
* punctuation-stripped word sets of `a` and `b`.
|
|
26
|
+
*/
|
|
27
|
+
export function wordJaccard(a, b) {
|
|
28
|
+
const sa = wordSet(a);
|
|
29
|
+
const sb = wordSet(b);
|
|
30
|
+
let intersection = 0;
|
|
31
|
+
for (const w of sa) {
|
|
32
|
+
if (sb.has(w))
|
|
33
|
+
intersection++;
|
|
34
|
+
}
|
|
35
|
+
const union = sa.size + sb.size - intersection;
|
|
36
|
+
return union === 0 ? 0 : intersection / union;
|
|
37
|
+
}
|
|
38
|
+
/** Jaccard overlap (0..1) of two findings' affected-file path sets. */
|
|
39
|
+
export function filePathOverlap(a, b) {
|
|
40
|
+
const setA = new Set(a.affected_files.map((f) => f.path));
|
|
41
|
+
const setB = new Set(b.affected_files.map((f) => f.path));
|
|
42
|
+
let intersection = 0;
|
|
43
|
+
for (const path of setA) {
|
|
44
|
+
if (setB.has(path))
|
|
45
|
+
intersection++;
|
|
46
|
+
}
|
|
47
|
+
const union = setA.size + setB.size - intersection;
|
|
48
|
+
return union === 0 ? 0 : intersection / union;
|
|
49
|
+
}
|
|
50
|
+
/** A finding's primary (first-listed) affected-file path, or "" when none. */
|
|
51
|
+
export function primaryPath(finding) {
|
|
52
|
+
return finding.affected_files[0]?.path ?? "";
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=findingSimilarity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findingSimilarity.js","sourceRoot":"","sources":["../../src/shared/findingSimilarity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,GAAG,CACZ,IAAI;SACD,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,YAAY,EAAE,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC;IAC/C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;AAChD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,CAAU,EAAE,CAAU;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,YAAY,EAAE,CAAC;IACrC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IACnD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -99,4 +99,21 @@ export interface StepBoundaryFriction {
|
|
|
99
99
|
* retry, re-derive) never double-count the same fact (INV-O1-6).
|
|
100
100
|
*/
|
|
101
101
|
export declare function captureStepBoundaryFriction(artifactsDir: string, runId: string, fact: StepBoundaryFriction, tool: FrictionCaptureArtifact["tool"]): Promise<void>;
|
|
102
|
+
/** Reactive cost-drift facts routed through {@link captureCostDriftFriction}. */
|
|
103
|
+
export interface CostDriftInfo {
|
|
104
|
+
poolId: string;
|
|
105
|
+
observedCostUsd: number;
|
|
106
|
+
declaredCostPerMtok: number;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Route a reactive cost-drift demotion (a dispatch pool declared free —
|
|
110
|
+
* `cost_per_mtok:0` — that started reporting a positive cost, so the rolling
|
|
111
|
+
* engine demoted it out of free-first ordering) through the step-boundary
|
|
112
|
+
* chokepoint as a `declared_cost_drift` fact. Both orchestrators' rolling
|
|
113
|
+
* dispatch wiring (`onCostDrift`) is byte-identical apart from the trailing
|
|
114
|
+
* `source` tool tag; this single-sources the eventType/note/severity/area
|
|
115
|
+
* template so they cannot drift. Fire-and-forget, like the call sites it
|
|
116
|
+
* replaces — never awaited by the caller.
|
|
117
|
+
*/
|
|
118
|
+
export declare function captureCostDriftFriction(artifactsDir: string, runId: string, info: CostDriftInfo, source: FrictionCaptureArtifact["tool"]): void;
|
|
102
119
|
//# sourceMappingURL=stepBoundaryCapture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepBoundaryCapture.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/stepBoundaryCapture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,kBAAkB,GAClB,+BAA+B,GAC/B,iBAAiB,GACjB,qBAAqB,GACrB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAmClB;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAElB;AAgBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,MAAM,CAIR;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,SAAS,EAAE,qBAAqB,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
1
|
+
{"version":3,"file":"stepBoundaryCapture.d.ts","sourceRoot":"","sources":["../../../src/shared/friction/stepBoundaryCapture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,kBAAkB,GAClB,+BAA+B,GAC/B,iBAAiB,GACjB,qBAAqB,GACrB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAmClB;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAElB;AAgBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,MAAM,CAIR;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,SAAS,EAAE,qBAAqB,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC,GACtC,IAAI,CAgBN"}
|
|
@@ -88,4 +88,25 @@ export async function captureStepBoundaryFriction(artifactsDir, runId, fact, too
|
|
|
88
88
|
};
|
|
89
89
|
await captureFrictionEvent(artifactsDir, runId, event, tool);
|
|
90
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Route a reactive cost-drift demotion (a dispatch pool declared free —
|
|
93
|
+
* `cost_per_mtok:0` — that started reporting a positive cost, so the rolling
|
|
94
|
+
* engine demoted it out of free-first ordering) through the step-boundary
|
|
95
|
+
* chokepoint as a `declared_cost_drift` fact. Both orchestrators' rolling
|
|
96
|
+
* dispatch wiring (`onCostDrift`) is byte-identical apart from the trailing
|
|
97
|
+
* `source` tool tag; this single-sources the eventType/note/severity/area
|
|
98
|
+
* template so they cannot drift. Fire-and-forget, like the call sites it
|
|
99
|
+
* replaces — never awaited by the caller.
|
|
100
|
+
*/
|
|
101
|
+
export function captureCostDriftFriction(artifactsDir, runId, info, source) {
|
|
102
|
+
void captureStepBoundaryFriction(artifactsDir, runId, {
|
|
103
|
+
eventType: "declared_cost_drift",
|
|
104
|
+
discriminator: info.poolId,
|
|
105
|
+
note: `pool "${info.poolId}" was declared free (cost_per_mtok=${info.declaredCostPerMtok}) ` +
|
|
106
|
+
`but reported cost=${info.observedCostUsd} — demoted out of free-first ordering; ` +
|
|
107
|
+
`reconcile the source's declared cost.`,
|
|
108
|
+
severity: "medium",
|
|
109
|
+
area: "dispatch/cost",
|
|
110
|
+
}, source);
|
|
111
|
+
}
|
|
91
112
|
//# sourceMappingURL=stepBoundaryCapture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepBoundaryCapture.js","sourceRoot":"","sources":["../../../src/shared/friction/stepBoundaryCapture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AAqErF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,sBAAsB,GAAqC;IAC/D,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,qBAAqB;IACnC,oBAAoB,EAAE,qBAAqB;IAC3C,eAAe,EAAE,qBAAqB;IACtC,gBAAgB,EAAE,qBAAqB;IACvC,6BAA6B,EAAE,qBAAqB;IACpD,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,oBAAoB;IAC1C,eAAe,EAAE,oBAAoB;IACrC,iFAAiF;IACjF,+EAA+E;IAC/E,mBAAmB,EAAE,oBAAoB;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAgC;IAEhC,OAAO,sBAAsB,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CACtC,OAAO,EACP,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CACxD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAgC,EAChC,KAAa,EACb,aAAqB;IAErB,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;SACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACtC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AA0BD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAoB,EACpB,KAAa,EACb,IAA0B,EAC1B,IAAqC;IAErC,MAAM,KAAK,GAAkB;QAC3B,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,0EAA0E;QAC1E,8EAA8E;QAC9E,6EAA6E;QAC7E,8EAA8E;QAC9E,8EAA8E;QAC9E,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM;QACjC,gBAAgB,EAAE,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9D,8EAA8E;QAC9E,8EAA8E;QAC9E,iFAAiF;QACjF,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa;QAC1D,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IACF,MAAM,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC"}
|
|
1
|
+
{"version":3,"file":"stepBoundaryCapture.js","sourceRoot":"","sources":["../../../src/shared/friction/stepBoundaryCapture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAsB,MAAM,2BAA2B,CAAC;AAqErF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,sBAAsB,GAAqC;IAC/D,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,qBAAqB;IACnC,oBAAoB,EAAE,qBAAqB;IAC3C,eAAe,EAAE,qBAAqB;IACtC,gBAAgB,EAAE,qBAAqB;IACvC,6BAA6B,EAAE,qBAAqB;IACpD,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,oBAAoB;IAC1C,eAAe,EAAE,oBAAoB;IACrC,iFAAiF;IACjF,+EAA+E;IAC/E,mBAAmB,EAAE,oBAAoB;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAgC;IAEhC,OAAO,sBAAsB,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CACtC,OAAO,EACP,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CACxD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAgC,EAChC,KAAa,EACb,aAAqB;IAErB,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;SACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACtC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AA0BD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAoB,EACpB,KAAa,EACb,IAA0B,EAC1B,IAAqC;IAErC,MAAM,KAAK,GAAkB;QAC3B,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,0EAA0E;QAC1E,8EAA8E;QAC9E,6EAA6E;QAC7E,8EAA8E;QAC9E,8EAA8E;QAC9E,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM;QACjC,gBAAgB,EAAE,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9D,8EAA8E;QAC9E,8EAA8E;QAC9E,iFAAiF;QACjF,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa;QAC1D,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IACF,MAAM,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AASD;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAoB,EACpB,KAAa,EACb,IAAmB,EACnB,MAAuC;IAEvC,KAAK,2BAA2B,CAC9B,YAAY,EACZ,KAAK,EACL;QACE,SAAS,EAAE,qBAAqB;QAChC,aAAa,EAAE,IAAI,CAAC,MAAM;QAC1B,IAAI,EACF,SAAS,IAAI,CAAC,MAAM,sCAAsC,IAAI,CAAC,mBAAmB,IAAI;YACtF,qBAAqB,IAAI,CAAC,eAAe,yCAAyC;YAClF,uCAAuC;QACzC,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,eAAe;KACtB,EACD,MAAM,CACP,CAAC;AACJ,CAAC"}
|
package/dist/shared/git.d.ts
CHANGED
|
@@ -42,17 +42,40 @@ export interface GitHistory {
|
|
|
42
42
|
co_change: CoChangePair[];
|
|
43
43
|
churn: ChurnEntry[];
|
|
44
44
|
authorship: AuthorshipEntry[];
|
|
45
|
+
/**
|
|
46
|
+
* Count of in-window commits whose file count exceeded
|
|
47
|
+
* `maxCoChangeFilesPerCommit` and were therefore SKIPPED for co-change pair
|
|
48
|
+
* expansion (churn/authorship still counted them — only pairing was
|
|
49
|
+
* skipped). Optional so existing `GitHistory` literals built by other
|
|
50
|
+
* callers (e.g. the audit extractor's in-scope filter, the no-root
|
|
51
|
+
* fallback) remain valid without updating — this field is additive.
|
|
52
|
+
* Absent/`undefined` means "no commit was skipped" (equivalent to `0`).
|
|
53
|
+
*/
|
|
54
|
+
skipped_cochange_commits?: number;
|
|
45
55
|
}
|
|
46
56
|
export interface MineGitHistoryOptions {
|
|
47
57
|
/** Cap on commits scanned, newest first (bounds cost on large repos). */
|
|
48
58
|
maxCommits?: number;
|
|
49
59
|
/** Minimum shared-commit count for a co-change pair to be reported. */
|
|
50
60
|
minCoChangeCommits?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Cap on files touched by a single commit before it is skipped for
|
|
63
|
+
* co-change pair expansion (bounds the O(files^2) blow-up a single wide
|
|
64
|
+
* commit — a vendor/format/rename sweep — would otherwise cause). A commit
|
|
65
|
+
* touching more files than this carries almost no per-pair signal anyway
|
|
66
|
+
* (any two files it "explains" are also very likely explained by other,
|
|
67
|
+
* narrower commits), so skipping it loses little while capping cost.
|
|
68
|
+
*/
|
|
69
|
+
maxCoChangeFilesPerCommit?: number;
|
|
51
70
|
}
|
|
52
71
|
/**
|
|
53
72
|
* Mine deterministic git-history signals from `root`'s commit log:
|
|
54
73
|
* - **co_change**: file pairs that changed in the same commit, counted across
|
|
55
74
|
* history (a temporal-coupling signal), filtered by `minCoChangeCommits`.
|
|
75
|
+
* A commit touching more than `maxCoChangeFilesPerCommit` files is SKIPPED
|
|
76
|
+
* for pair expansion entirely (churn/authorship still see it) — bounds the
|
|
77
|
+
* per-commit O(files^2) cost; `skipped_cochange_commits` on the result
|
|
78
|
+
* counts how many commits this affected.
|
|
56
79
|
* - **churn**: per-file commit-touch frequency.
|
|
57
80
|
* - **authorship**: per-file distinct-author count (a bus-factor signal).
|
|
58
81
|
*
|
package/dist/shared/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/shared/git.ts"],"names":[],"mappings":"AAmBA,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAElE;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAEnE;AA8CD,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/shared/git.ts"],"names":[],"mappings":"AAmBA,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAElE;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAEnE;AA8CD,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B;;;;;;;;OAQG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAaD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,UAAU,CAgGZ;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAazD"}
|
package/dist/shared/git.js
CHANGED
|
@@ -99,10 +99,22 @@ function parseCommitRecords(stdout) {
|
|
|
99
99
|
}
|
|
100
100
|
const DEFAULT_MAX_COMMITS = 1000;
|
|
101
101
|
const DEFAULT_MIN_CO_CHANGE_COMMITS = 2;
|
|
102
|
+
/**
|
|
103
|
+
* See `MineGitHistoryOptions.maxCoChangeFilesPerCommit` for rationale. 100 is
|
|
104
|
+
* generous for ordinary commits (which touch a handful of files) while
|
|
105
|
+
* cutting off the O(n^2) pair count (100^2 = 10_000 pairs) well before a
|
|
106
|
+
* repo-wide reformat/vendor-drop commit (which can touch thousands of files,
|
|
107
|
+
* i.e. millions of pairs) turns co-change mining into a memory/CPU cliff.
|
|
108
|
+
*/
|
|
109
|
+
const DEFAULT_MAX_COCHANGE_FILES_PER_COMMIT = 100;
|
|
102
110
|
/**
|
|
103
111
|
* Mine deterministic git-history signals from `root`'s commit log:
|
|
104
112
|
* - **co_change**: file pairs that changed in the same commit, counted across
|
|
105
113
|
* history (a temporal-coupling signal), filtered by `minCoChangeCommits`.
|
|
114
|
+
* A commit touching more than `maxCoChangeFilesPerCommit` files is SKIPPED
|
|
115
|
+
* for pair expansion entirely (churn/authorship still see it) — bounds the
|
|
116
|
+
* per-commit O(files^2) cost; `skipped_cochange_commits` on the result
|
|
117
|
+
* counts how many commits this affected.
|
|
106
118
|
* - **churn**: per-file commit-touch frequency.
|
|
107
119
|
* - **authorship**: per-file distinct-author count (a bus-factor signal).
|
|
108
120
|
*
|
|
@@ -117,6 +129,7 @@ export function mineGitHistory(root, options = {}) {
|
|
|
117
129
|
return empty;
|
|
118
130
|
const maxCommits = options.maxCommits ?? DEFAULT_MAX_COMMITS;
|
|
119
131
|
const minCoChange = options.minCoChangeCommits ?? DEFAULT_MIN_CO_CHANGE_COMMITS;
|
|
132
|
+
const maxCoChangeFiles = options.maxCoChangeFilesPerCommit ?? DEFAULT_MAX_COCHANGE_FILES_PER_COMMIT;
|
|
120
133
|
const result = runTracked([
|
|
121
134
|
"git",
|
|
122
135
|
"log",
|
|
@@ -139,6 +152,7 @@ export function mineGitHistory(root, options = {}) {
|
|
|
139
152
|
const churn = new Map();
|
|
140
153
|
const authors = new Map();
|
|
141
154
|
const coChange = new Map();
|
|
155
|
+
let skippedCoChangeCommits = 0;
|
|
142
156
|
for (const record of records) {
|
|
143
157
|
// Dedup files within a commit so a rename/edit pair cannot double-count.
|
|
144
158
|
const files = [...new Set(record.files)].sort();
|
|
@@ -152,6 +166,15 @@ export function mineGitHistory(root, options = {}) {
|
|
|
152
166
|
if (record.author.length > 0)
|
|
153
167
|
authorSet.add(record.author);
|
|
154
168
|
}
|
|
169
|
+
// Pair expansion is O(files^2); a commit touching more than
|
|
170
|
+
// maxCoChangeFiles is SKIPPED ENTIRELY for pairing (never a truncated
|
|
171
|
+
// subset — a biased subset of an oversized commit's files would produce
|
|
172
|
+
// arbitrary, order-dependent pairs, which is worse than reporting none).
|
|
173
|
+
// Churn/authorship above are unaffected: every touched file still counts.
|
|
174
|
+
if (files.length > maxCoChangeFiles) {
|
|
175
|
+
skippedCoChangeCommits += 1;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
155
178
|
for (let i = 0; i < files.length; i += 1) {
|
|
156
179
|
for (let j = i + 1; j < files.length; j += 1) {
|
|
157
180
|
// a < b guaranteed by the sort above, so the pair key is canonical.
|
|
@@ -179,6 +202,9 @@ export function mineGitHistory(root, options = {}) {
|
|
|
179
202
|
co_change: coChangeList,
|
|
180
203
|
churn: churnList,
|
|
181
204
|
authorship: authorshipList,
|
|
205
|
+
...(skippedCoChangeCommits > 0
|
|
206
|
+
? { skipped_cochange_commits: skippedCoChangeCommits }
|
|
207
|
+
: {}),
|
|
182
208
|
};
|
|
183
209
|
}
|
|
184
210
|
/** Working-tree changes vs HEAD plus untracked (non-ignored) files. */
|
package/dist/shared/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/shared/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,8DAA8D;AAE9D,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAc;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM;SACjB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,uBAAuB,CAAC,EAAE;QACvE,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAW;IACpD,MAAM,MAAM,GAAG,UAAU,CACvB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,EAC9D,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAChC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;QACtD,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAY;IACpD,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAaD;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,OAAO,GAA2B,IAAI,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,kCAAkC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,OAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/shared/git.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export { detectRepoConventions, formatRepoConventions, } from "./tooling/repoCon
|
|
|
49
49
|
export type { StepStatus, DispatchModelTier, DispatchModelHint, } from "./types/stepContract.js";
|
|
50
50
|
export { StepStatusSchema, DispatchModelTierSchema, } from "./types/stepContract.js";
|
|
51
51
|
export type { ProviderName, ResolvedProviderName, SessionUiMode, SubprocessTemplateConfig, ClaudeCodeConfig, CodexConfig, OpenCodeConfig, OpenAiCompatibleConfig, DispatchableSource, DispatchableSourceProvider, VSCodeTaskConfig, AntigravityConfig, BlockQuotaConfig, QuotaModelLimits, QuotaConfig, ObservabilityConfig, SynthesisConfig, GraphConfig, DispatchRoutingTiers, DispatchConfig, DesignReviewConfig, AnalyzerSetting, SessionConfig, } from "./types/sessionConfig.js";
|
|
52
|
-
export { PROVIDER_NAMES, SESSION_UI_MODES, PROVIDER_SECTION_KEYS, DISPATCHABLE_SOURCE_PROVIDERS, ANALYZER_SETTINGS, AnalyzerSettingSchema, resolveHostDispatchCapability, } from "./types/sessionConfig.js";
|
|
52
|
+
export { PROVIDER_NAMES, SESSION_UI_MODES, PROVIDER_SECTION_KEYS, DISPATCHABLE_SOURCE_PROVIDERS, ANALYZER_SETTINGS, AnalyzerSettingSchema, resolveHostDispatchCapability, resolveRollingEngineFlag, assertHostProviderName, } from "./types/sessionConfig.js";
|
|
53
53
|
export { AUDITOR_REPORT_MARKER } from "./contracts.js";
|
|
54
54
|
export { OPENCODE_MANAGED_BROAD_VALUE, withoutOpenCodeWildcard, mergeOpenCodeAgentPermissionRule, mergeOpenCodeGlobalPermissionRule, migrateOpenCodeGlobalExternalDirectory, unionOpenCodeBashCeiling, composeOpenCodeBashCeiling, verifyOpenCodeBashCeiling, } from "./opencodePermissions.js";
|
|
55
55
|
export type { OpenCodeCeilingViolation } from "./opencodePermissions.js";
|
|
@@ -60,12 +60,17 @@ export type { AuditDeliverablePair } from "./reporting/auditDeliverable.js";
|
|
|
60
60
|
export { buildAuditFindingsDeliverable, renderAuditDeliverableMarkdown, buildAuditDeliverablePair, } from "./reporting/auditDeliverable.js";
|
|
61
61
|
export { AGENT_FEEDBACK_FILENAME, parseReflectionsNdjson, aggregateReflections, renderProcessFeedbackSection, ReflectionClaritySchema, ReflectionSeveritySchema, AgentReflectionSchema, } from "./agentReflections.js";
|
|
62
62
|
export { DEFAULT_CONTEXT_TOKENS, DEFAULT_OUTPUT_TOKENS, BLOCK_SAFETY_MARGIN, BYTES_PER_TOKEN, ESTIMATED_TOKENS_PER_LINE, ESTIMATED_PROMPT_OVERHEAD_TOKENS, ESTIMATED_ITEM_OVERHEAD_TOKENS, estimateTokensFromBytes, resolveContextBudget, } from "./tokens.js";
|
|
63
|
+
export { countBy } from "./countBy.js";
|
|
64
|
+
export { chunkByBudget } from "./chunkByBudget.js";
|
|
63
65
|
export { mapWithConcurrency } from "./concurrency.js";
|
|
64
66
|
export { mintUniqueId } from "./ids.js";
|
|
65
67
|
export type { FindingIdentityFields } from "./findingIdentitySignature.js";
|
|
66
68
|
export { normalizeAnchorPath, normalizeTitle, findingIdentitySignature, findingIdentityFields, findingIdentityKey, } from "./findingIdentitySignature.js";
|
|
69
|
+
export { wordJaccard, filePathOverlap, primaryPath, } from "./findingSimilarity.js";
|
|
67
70
|
export type { HashContentOptions } from "./hash.js";
|
|
68
71
|
export { hashContent } from "./hash.js";
|
|
72
|
+
export type { FileIntegrityBuckets, FileIntegrityHashOutcome, FileIntegrityCheckOptions, } from "./fileIntegrity.js";
|
|
73
|
+
export { checkFileIntegrityRecords } from "./fileIntegrity.js";
|
|
69
74
|
export { stableStringify } from "./stableStringify.js";
|
|
70
75
|
export type { IdentityKeyInput, TaskContentSignatureInput, ResultEmitSource, ResultContentDiscriminatorInput, IdempotencyKeyInput, ContentKeyInput, } from "./contentKey.js";
|
|
71
76
|
export { buildTaskContentSignature, buildResultContentDiscriminator, resultDiscriminatorForEmit, canonicalSplitDiscriminator, splitDiscriminatorFromTaskId, identityKey, idempotencyKey, contentKey, newInstanceId, } from "./contentKey.js";
|
|
@@ -84,14 +89,16 @@ export type { GitHistory, CoChangePair, ChurnEntry, AuthorshipEntry, MineGitHist
|
|
|
84
89
|
export type { RunLogEvent, RunLoggerOptions } from "./observability/runLog.js";
|
|
85
90
|
export { RunLogger } from "./observability/runLog.js";
|
|
86
91
|
export { isFileMissingError, isTransientFsError, withFsRetry, readJsonFile, writeJsonFile, readJsonStringScalar, readJsonStringScalarChunks, appendNdjsonFile, readNdjsonFile, readOptionalJsonFile, readOptionalNdjsonFile, writeNdjsonFile, readOptionalTextFile, writeTextFile, } from "./io/json.js";
|
|
92
|
+
export type { LockedJsonStore, LockedJsonStoreOptions, } from "./io/lockedJsonStore.js";
|
|
93
|
+
export { createLockedJsonStore, SKIP_WRITE, LOCKED_JSON_STORE_TIMEOUT_MS, } from "./io/lockedJsonStore.js";
|
|
87
94
|
export { auditToolsDir, auditArtifactsDir, remediationArtifactsDir, stepsDir, artifactTreeLockPath, nodeClaimsPath, taskClaimsPath, incomingDir, outputDirFor, auditReportPath, auditFindingsPath, promotedAuditReportPath, promotedAuditFindingsPath, AUDIT_REPORT_FILENAME, AUDIT_FINDINGS_FILENAME, REMEDIATION_REPORT_FILENAME, REMEDIATION_OUTCOMES_FILENAME, } from "./io/auditToolsPaths.js";
|
|
88
95
|
export { resolveRepoRoot, climbOutOfAuditTools } from "./io/repoRoot.js";
|
|
89
96
|
export type { FrictionItem, FrictionCaptureArtifact, } from "./io/frictionCapture.js";
|
|
90
97
|
export { FRICTION_CAPTURE_SCHEMA_VERSION, FRICTION_CAPTURE_DIRNAME, frictionCaptureDir, frictionCapturePath, frictionCaptured, persistFrictionCapture, sanitizeRunId, } from "./io/frictionCapture.js";
|
|
91
98
|
export type { FrictionEvent, CapturedFrictionItem, } from "./friction/captureFrictionEvent.js";
|
|
92
99
|
export { captureFrictionEvent } from "./friction/captureFrictionEvent.js";
|
|
93
|
-
export type { StepBoundaryEventType, StepBoundaryFriction, } from "./friction/stepBoundaryCapture.js";
|
|
94
|
-
export { captureStepBoundaryFriction, stepBoundaryEventId, } from "./friction/stepBoundaryCapture.js";
|
|
100
|
+
export type { StepBoundaryEventType, StepBoundaryFriction, CostDriftInfo, } from "./friction/stepBoundaryCapture.js";
|
|
101
|
+
export { captureStepBoundaryFriction, stepBoundaryEventId, captureCostDriftFriction, } from "./friction/stepBoundaryCapture.js";
|
|
95
102
|
export type { FrictionDisposition, FrictionDispositionRecord, TriageSubject, FrictionTriageDecision, FrictionOpenObservation, FrictionCategoryAttestation, FrictionCategory, TriagedFrictionArtifact, } from "./friction/triage.js";
|
|
96
103
|
export { FRICTION_DISPOSITIONS, FRICTION_NAMED_DIMENSIONS, FRICTION_CATEGORIES, FRICTION_CATEGORY_LABELS, isFrictionCategory, isFrictionDisposition, reflectionKey, frictionLockPath, collectTriageSubjects, decideFrictionTriage, buildFrictionTriageBlock, appendFrictionUnderLock, recordFrictionDisposition, } from "./friction/triage.js";
|
|
97
104
|
export type { RepairValidationError, RepairValidationResult, RepairCoercion, RepairCoercionResult, RepairPatcher, RepairContract, RepairStatus, RepairStage, RepairRedispatch, RepairOutcome, RunEmitValidateRepairOptions, } from "./repair/index.js";
|
|
@@ -125,7 +132,7 @@ export { OpenAiCompatibleProvider, OPENAI_COMPATIBLE_PROVIDER_NAME, parseJsonLoo
|
|
|
125
132
|
export type { OpenAiCompatibleProviderDeps } from "./providers/openAiCompatibleProvider.js";
|
|
126
133
|
export type { ClaudeCodeProviderOptions } from "./providers/claudeCodeProvider.js";
|
|
127
134
|
export { ClaudeCodeProvider, CLAUDE_CODE_PROVIDER_NAME, buildActiveClaudeCodeSessionMessage, } from "./providers/claudeCodeProvider.js";
|
|
128
|
-
export { OpenCodeProvider, OPENCODE_PROVIDER_NAME, } from "./providers/opencodeProvider.js";
|
|
135
|
+
export { OpenCodeProvider, OPENCODE_PROVIDER_NAME, createOpenCodeProvider, } from "./providers/opencodeProvider.js";
|
|
129
136
|
export type { AutoProviderContext, FreshSessionProviderDeps, } from "./providers/providerFactory.js";
|
|
130
137
|
export { resolveFreshSessionProviderName, createFreshSessionProvider, hasConfiguredOpenAiCompatible, discoverOutputConstraintCapability, } from "./providers/providerFactory.js";
|
|
131
138
|
export type { CapabilityTier, DiscoveredProvider, ConfirmedProviderPool, } from "./providers/providerConfirmation.js";
|