infraweaver 0.3.7 → 0.3.8
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/README.md +2 -2
- package/dist/agents/claude.d.ts +1 -1
- package/dist/agents/claudePretoolGate.d.ts +0 -36
- package/dist/agents/toolPlaneWatch.d.ts +31 -0
- package/dist/cli.mjs +31903 -18736
- package/dist/external.d.ts +2 -1
- package/dist/index.js +31987 -18749
- package/dist/internal.js +132 -52
- package/dist/mcp/baseBranch.d.ts +41 -0
- package/dist/mcp/changeSummary.d.ts +1 -1
- package/dist/mcp/findingAudit.d.ts +2 -0
- package/dist/mcp/guardrails.d.ts +38 -0
- package/dist/mcp/localContext.d.ts +1 -1
- package/dist/mcp/moduleExtraction.d.ts +5 -0
- package/dist/mcp/pr.d.ts +0 -31
- package/dist/mcp/reproveSuggestions.d.ts +27 -0
- package/dist/mcp/review.d.ts +126 -2
- package/dist/mcp/reviewCommentLimit.d.ts +17 -0
- package/dist/mcp/reviewComments.d.ts +9 -5
- package/dist/mcp/reviewDedup.d.ts +1 -0
- package/dist/mcp/reviewMarkers.d.ts +10 -0
- package/dist/mcp/reviewProvenance.d.ts +20 -6
- package/dist/mcp/shared.d.ts +15 -0
- package/dist/mcp/suggestionProver.d.ts +3 -2
- package/dist/mcp/terraform/checkovSeverities.d.ts +7 -0
- package/dist/mcp/terraform/consolidation.d.ts +26 -0
- package/dist/mcp/terraform/cost.d.ts +2 -2
- package/dist/mcp/terraform/currency.d.ts +11 -0
- package/dist/mcp/terraform/deltaSummary.d.ts +11 -1
- package/dist/mcp/terraform/emittedArtefacts.d.ts +11 -0
- package/dist/mcp/terraform/evidence.d.ts +10 -0
- package/dist/mcp/terraform/gateScan.d.ts +2 -16
- package/dist/mcp/terraform/hcl.d.ts +15 -0
- package/dist/mcp/terraform/initArtefacts.d.ts +21 -0
- package/dist/mcp/terraform/localModules.d.ts +29 -0
- package/dist/mcp/terraform/moduleFindings.d.ts +38 -0
- package/dist/mcp/terraform/refactor/attribution.d.ts +1 -1
- package/dist/mcp/terraform/refactor/equivalence.d.ts +7 -0
- package/dist/mcp/terraform/refactor/expressions.d.ts +62 -0
- package/dist/mcp/terraform/refactor/references.d.ts +15 -0
- package/dist/mcp/terraform/refactor/resources.d.ts +11 -0
- package/dist/mcp/terraform/refactor/substitution.d.ts +55 -37
- package/dist/mcp/terraform/scanDelta.d.ts +28 -0
- package/dist/mcp/terraform/scanSession.d.ts +13 -0
- package/dist/mcp/terraform/scanners.d.ts +67 -18
- package/dist/mcp/terraform/secretScan.d.ts +19 -0
- package/dist/mcp/terraform/standardsReport.d.ts +1 -1
- package/dist/mcp/terraform/tools/plan.d.ts +1 -1
- package/dist/mcp/terraform/tools/scan.d.ts +7 -7
- package/dist/mcp/terraform/tools/validate.d.ts +7 -2
- package/dist/mcp/terraform/tools/verifyRemediation.d.ts +1 -1
- package/dist/mcp/terraform/treeLayout.d.ts +57 -0
- package/dist/mcp/terraform/types.d.ts +1 -1
- package/dist/phases/applyPlan.d.ts +0 -2
- package/dist/toolState.d.ts +3 -0
- package/dist/utils/agent/codexOAuth.d.ts +1 -1
- package/dist/utils/cli.d.ts +1 -7
- package/dist/utils/cloud/cloudReport.d.ts +1 -1
- package/dist/utils/config/baseRefConfig.d.ts +1 -1
- package/dist/utils/config/infraweaverConfig.d.ts +1 -1
- package/dist/utils/config/payload.d.ts +5 -0
- package/dist/utils/markdownTable.d.ts +6 -0
- package/dist/utils/setup/toolLicensing.d.ts +1 -1
- package/dist/utils/unifiedDiff.d.ts +69 -0
- package/package.json +34 -28
- package/src/agents/claude.ts +48 -13
- package/src/agents/claudePretoolGate.ts +9 -17
- package/src/agents/sessionLabeler.ts +3 -3
- package/src/agents/toolPlaneWatch.ts +71 -0
- package/src/external.ts +3 -1
- package/src/mcp/assess.ts +8 -8
- package/src/mcp/baseBranch.ts +96 -0
- package/src/mcp/changeSummary.ts +10 -11
- package/src/mcp/checkSuite.ts +7 -10
- package/src/mcp/checkout.ts +13 -40
- package/src/mcp/crosswalk.ts +5 -0
- package/src/mcp/findingAudit.ts +1 -1
- package/src/mcp/git.ts +44 -2
- package/src/mcp/guardrails.ts +188 -36
- package/src/mcp/localContext.ts +2 -0
- package/src/mcp/localServer.ts +1 -0
- package/src/mcp/moduleExtraction.ts +17 -5
- package/src/mcp/moduleTests.ts +9 -2
- package/src/mcp/modules.ts +10 -7
- package/src/mcp/pr.ts +17 -65
- package/src/mcp/reproveSuggestions.ts +86 -0
- package/src/mcp/review.ts +249 -75
- package/src/mcp/reviewAnchor.ts +11 -23
- package/src/mcp/reviewCommentLimit.ts +79 -0
- package/src/mcp/reviewComments.ts +34 -81
- package/src/mcp/reviewDedup.ts +1 -1
- package/src/mcp/reviewMarkers.ts +25 -2
- package/src/mcp/reviewProvenance.ts +56 -21
- package/src/mcp/roots.ts +3 -2
- package/src/mcp/server.ts +2 -1
- package/src/mcp/shared.ts +40 -1
- package/src/mcp/shell.ts +27 -28
- package/src/mcp/suggestionProver.ts +8 -4
- package/src/mcp/terraform/checkovSeverities.ts +1156 -0
- package/src/mcp/terraform/concernResult.ts +2 -1
- package/src/mcp/terraform/consolidation.ts +232 -19
- package/src/mcp/terraform/cost.ts +16 -7
- package/src/mcp/terraform/cspm.ts +8 -4
- package/src/mcp/terraform/currency.ts +28 -12
- package/src/mcp/terraform/decisions.ts +1 -1
- package/src/mcp/terraform/deltaSummary.ts +50 -1
- package/src/mcp/terraform/emittedArtefacts.ts +63 -0
- package/src/mcp/terraform/evidence.ts +23 -3
- package/src/mcp/terraform/gateScan.ts +191 -128
- package/src/mcp/terraform/hcl.ts +27 -2
- package/src/mcp/terraform/idleFloor.ts +2 -1
- package/src/mcp/terraform/initArtefacts.ts +76 -0
- package/src/mcp/terraform/localModules.ts +112 -0
- package/src/mcp/terraform/moduleDocs.ts +2 -5
- package/src/mcp/terraform/moduleFindings.ts +102 -0
- package/src/mcp/terraform/moduleVersionConstraints.ts +1 -1
- package/src/mcp/terraform/planPairs.ts +2 -20
- package/src/mcp/terraform/policyGate.ts +0 -15
- package/src/mcp/terraform/refactor/attribution.ts +39 -5
- package/src/mcp/terraform/refactor/equivalence.ts +49 -10
- package/src/mcp/terraform/refactor/expressions.ts +323 -0
- package/src/mcp/terraform/refactor/references.ts +101 -0
- package/src/mcp/terraform/refactor/resources.ts +79 -7
- package/src/mcp/terraform/refactor/substitution.ts +852 -256
- package/src/mcp/terraform/scanDelta.ts +34 -0
- package/src/mcp/terraform/scanSession.ts +30 -0
- package/src/mcp/terraform/scannerCache.ts +4 -0
- package/src/mcp/terraform/scanners.ts +553 -233
- package/src/mcp/terraform/secretScan.ts +131 -0
- package/src/mcp/terraform/standardsReport.ts +14 -13
- package/src/mcp/terraform/tools/consolidationCandidates.ts +3 -0
- package/src/mcp/terraform/tools/emitEvidence.ts +13 -5
- package/src/mcp/terraform/tools/emitOscal.ts +3 -2
- package/src/mcp/terraform/tools/emitVex.ts +10 -4
- package/src/mcp/terraform/tools/equivalenceCheck.ts +139 -21
- package/src/mcp/terraform/tools/infracostDiff.ts +2 -2
- package/src/mcp/terraform/tools/plan.ts +30 -17
- package/src/mcp/terraform/tools/reviewScanDelta.ts +3 -0
- package/src/mcp/terraform/tools/scan.ts +5 -3
- package/src/mcp/terraform/tools/standardsReport.ts +1 -1
- package/src/mcp/terraform/tools/validate.ts +20 -5
- package/src/mcp/terraform/tools/verifyRemediation.ts +14 -7
- package/src/mcp/terraform/tools/versionCurrency.ts +3 -1
- package/src/mcp/terraform/treeLayout.ts +378 -0
- package/src/mcp/terraform/types.ts +4 -1
- package/src/mcp/terraform/versionRequirements.ts +11 -2
- package/src/modes/__snapshots__/assemblePrompt.test.ts.snap +2 -0
- package/src/modes/modernize-deprecated.ts +2 -2
- package/src/modes/refactor.ts +9 -9
- package/src/modes/remediate.ts +1 -1
- package/src/modes/terraform-code-review.ts +6 -3
- package/src/modes/update-dependencies.ts +6 -6
- package/src/phases/applyPlan.ts +33 -14
- package/src/phases/applySuggestions.ts +2 -2
- package/src/phases/runAgentWithWatchdogs.ts +2 -1
- package/src/toolState.ts +7 -0
- package/src/utils/agent/codexOAuth.ts +7 -7
- package/src/utils/agent/openCodeModels.ts +4 -6
- package/src/utils/cli.ts +1 -31
- package/src/utils/cloud/runContext.ts +1 -8
- package/src/utils/config/baseRefConfig.ts +6 -0
- package/src/utils/config/infraweaverConfig.ts +2 -0
- package/src/utils/config/payload.ts +41 -0
- package/src/utils/github/assets.ts +1 -6
- package/src/utils/github/github.ts +42 -150
- package/src/utils/github/token.ts +6 -11
- package/src/utils/log.ts +4 -5
- package/src/utils/markdownTable.ts +11 -0
- package/src/utils/prompt/changeImpact.ts +18 -26
- package/src/utils/prompt/instructions.ts +1 -1
- package/src/utils/prompt/promptDirectives.ts +1 -1
- package/src/utils/prompt/toolSelection.ts +11 -2
- package/src/utils/setup/toolLicensing.ts +7 -0
- package/src/utils/telemetry.ts +2 -1
- package/src/utils/unifiedDiff.ts +120 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one unified-diff reader: hunk headers, line classification and per-side
|
|
3
|
+
* line numbering for every caller that walks a patch — a single GitHub `patch`
|
|
4
|
+
* fragment (hunks only, no file headers), a truncated review-comment `diff_hunk`,
|
|
5
|
+
* or a multi-file `git diff`.
|
|
6
|
+
*
|
|
7
|
+
* Deliberately TOLERANT, and that is why this is not jsdiff's `parsePatch`: that
|
|
8
|
+
* one validates every hunk's line counts and throws on a mismatch, but GitHub's
|
|
9
|
+
* `diff_hunk` is cut off at the commented line by design, and the callers here are
|
|
10
|
+
* pure functions fed external text where a parse error must not cost the whole
|
|
11
|
+
* result. Lines are numbered from the hunk header and classified by their marker;
|
|
12
|
+
* the declared counts are used for exactly one thing (see below).
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** a parsed `@@ -a,b +c,d @@` header; an omitted count is 1, as git writes it */
|
|
16
|
+
export type HunkHeader = {
|
|
17
|
+
oldStart: number;
|
|
18
|
+
oldCount: number;
|
|
19
|
+
newStart: number;
|
|
20
|
+
newCount: number;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type DiffLine =
|
|
24
|
+
/** a `@@` hunk header */
|
|
25
|
+
| { kind: "hunk"; raw: string; header: HunkHeader }
|
|
26
|
+
/** a `+++` new-side file header; `path` has `b/` stripped, `/dev/null` for a deletion */
|
|
27
|
+
| { kind: "file"; raw: string; path: string }
|
|
28
|
+
| { kind: "add"; raw: string; text: string; newLine: number }
|
|
29
|
+
| { kind: "remove"; raw: string; text: string; oldLine: number }
|
|
30
|
+
| { kind: "context"; raw: string; text: string; oldLine: number; newLine: number }
|
|
31
|
+
/** anything else: `diff --git`/`---`/`index` headers, ``,
|
|
32
|
+
* lines outside any hunk, or an unknown marker — never numbered */
|
|
33
|
+
| { kind: "meta"; raw: string };
|
|
34
|
+
|
|
35
|
+
// anchored at line start: an added, removed or context line whose TEXT contains a
|
|
36
|
+
// header-shaped substring (e.g. `+ log.info("@@ -1,2 +3,4 @@")`) is content, not a
|
|
37
|
+
// hunk boundary.
|
|
38
|
+
const HUNK_HEADER = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;
|
|
39
|
+
|
|
40
|
+
export function parseHunkHeader(line: string): HunkHeader | null {
|
|
41
|
+
const m = HUNK_HEADER.exec(line);
|
|
42
|
+
if (!m) return null;
|
|
43
|
+
// the start groups are required, so the "" defaults never apply
|
|
44
|
+
const [, oldS = "", oldC = "1", newS = "", newC = "1"] = m;
|
|
45
|
+
return {
|
|
46
|
+
oldStart: Number.parseInt(oldS, 10),
|
|
47
|
+
oldCount: Number.parseInt(oldC, 10),
|
|
48
|
+
newStart: Number.parseInt(newS, 10),
|
|
49
|
+
newCount: Number.parseInt(newC, 10),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Classify and number every line of `diff`.
|
|
55
|
+
*
|
|
56
|
+
* `--- `/`+++ ` are file headers only OUTSIDE a hunk body: once a hunk's declared
|
|
57
|
+
* counts are used up (or before any hunk). Inside one they are a removed line
|
|
58
|
+
* starting `-- ` or an added line starting `++ `, which a marker-only reader would
|
|
59
|
+
* mistake for the next file. Everything else ignores the counts, so a truncated
|
|
60
|
+
* hunk or a hand-written one with wrong counts still numbers its lines.
|
|
61
|
+
*
|
|
62
|
+
* An empty line inside a hunk is a context line whose single space was stripped,
|
|
63
|
+
* except the input's LAST line — that is the artefact of a trailing newline.
|
|
64
|
+
*/
|
|
65
|
+
export function parseDiffLines(diff: string): DiffLine[] {
|
|
66
|
+
const raws = diff.split("\n");
|
|
67
|
+
const out: DiffLine[] = [];
|
|
68
|
+
let inHunk = false;
|
|
69
|
+
let oldLine = 0;
|
|
70
|
+
let newLine = 0;
|
|
71
|
+
let oldLeft = 0;
|
|
72
|
+
let newLeft = 0;
|
|
73
|
+
for (const [i, raw] of raws.entries()) {
|
|
74
|
+
const header = parseHunkHeader(raw);
|
|
75
|
+
if (header) {
|
|
76
|
+
inHunk = true;
|
|
77
|
+
oldLine = header.oldStart;
|
|
78
|
+
newLine = header.newStart;
|
|
79
|
+
oldLeft = header.oldCount;
|
|
80
|
+
newLeft = header.newCount;
|
|
81
|
+
out.push({ kind: "hunk", raw, header });
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const bodyExhausted = oldLeft <= 0 && newLeft <= 0;
|
|
85
|
+
if (raw.startsWith("diff --git ") || (raw.startsWith("--- ") && (!inHunk || bodyExhausted))) {
|
|
86
|
+
inHunk = false;
|
|
87
|
+
out.push({ kind: "meta", raw });
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (raw.startsWith("+++ ") && (!inHunk || bodyExhausted)) {
|
|
91
|
+
inHunk = false;
|
|
92
|
+
out.push({ kind: "file", raw, path: raw.slice(4).trim().replace(/^b\//, "") });
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (!inHunk) {
|
|
96
|
+
out.push({ kind: "meta", raw });
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const marker = raw === "" && i < raws.length - 1 ? " " : raw[0];
|
|
100
|
+
const text = raw.slice(1);
|
|
101
|
+
if (marker === "+") {
|
|
102
|
+
out.push({ kind: "add", raw, text, newLine });
|
|
103
|
+
newLine++;
|
|
104
|
+
newLeft--;
|
|
105
|
+
} else if (marker === "-") {
|
|
106
|
+
out.push({ kind: "remove", raw, text, oldLine });
|
|
107
|
+
oldLine++;
|
|
108
|
+
oldLeft--;
|
|
109
|
+
} else if (marker === " ") {
|
|
110
|
+
out.push({ kind: "context", raw, text, oldLine, newLine });
|
|
111
|
+
oldLine++;
|
|
112
|
+
newLine++;
|
|
113
|
+
oldLeft--;
|
|
114
|
+
newLeft--;
|
|
115
|
+
} else {
|
|
116
|
+
out.push({ kind: "meta", raw });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|