llm-agent-cli 2.0.0
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/agent.d.ts +112 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +730 -0
- package/dist/agent.js.map +1 -0
- package/dist/audit.d.ts +24 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +94 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth.d.ts +36 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +236 -0
- package/dist/auth.js.map +1 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +48 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +94 -0
- package/dist/context.js.map +1 -0
- package/dist/diff.d.ts +27 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +174 -0
- package/dist/diff.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +905 -0
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +13 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +88 -0
- package/dist/input.js.map +1 -0
- package/dist/memory.d.ts +32 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +103 -0
- package/dist/memory.js.map +1 -0
- package/dist/preprocessor.d.ts +12 -0
- package/dist/preprocessor.d.ts.map +1 -0
- package/dist/preprocessor.js +138 -0
- package/dist/preprocessor.js.map +1 -0
- package/dist/project.d.ts +10 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +145 -0
- package/dist/project.js.map +1 -0
- package/dist/renderer.d.ts +2 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +31 -0
- package/dist/renderer.js.map +1 -0
- package/dist/session.d.ts +36 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +78 -0
- package/dist/session.js.map +1 -0
- package/dist/tools/filesystem.d.ts +138 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +539 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/git.d.ts +60 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +188 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/index.d.ts +386 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +142 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/linter.d.ts +44 -0
- package/dist/tools/linter.d.ts.map +1 -0
- package/dist/tools/linter.js +426 -0
- package/dist/tools/linter.js.map +1 -0
- package/dist/tools/network.d.ts +17 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +121 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/search.d.ts +33 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +263 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/security.d.ts +18 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +242 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/shell.d.ts +14 -0
- package/dist/tools/shell.d.ts.map +1 -0
- package/dist/tools/shell.js +68 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/tools/types.d.ts +5 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { AgentConfig } from "./config.js";
|
|
2
|
+
export interface UsageRecord {
|
|
3
|
+
prompt_tokens: number;
|
|
4
|
+
completion_tokens: number;
|
|
5
|
+
total_tokens: number;
|
|
6
|
+
}
|
|
7
|
+
export interface TurnMetrics {
|
|
8
|
+
promptTokens: number;
|
|
9
|
+
completionTokens: number;
|
|
10
|
+
totalTokens: number;
|
|
11
|
+
turnCostUsd: number;
|
|
12
|
+
cumulativeCostUsd: number;
|
|
13
|
+
cumulativePromptTokens: number;
|
|
14
|
+
cumulativeCompletionTokens: number;
|
|
15
|
+
contextUtilization: number;
|
|
16
|
+
warnThresholdCrossed: boolean;
|
|
17
|
+
autoCompactRecommended: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ContextState {
|
|
20
|
+
cumulativePromptTokens: number;
|
|
21
|
+
cumulativeCompletionTokens: number;
|
|
22
|
+
cumulativeCostUsd: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class ContextManager {
|
|
25
|
+
private readonly config;
|
|
26
|
+
private cumulativePromptTokens;
|
|
27
|
+
private cumulativeCompletionTokens;
|
|
28
|
+
private cumulativeCostUsd;
|
|
29
|
+
constructor(config: AgentConfig);
|
|
30
|
+
reset(): void;
|
|
31
|
+
loadState(state: ContextState): void;
|
|
32
|
+
serializeState(): ContextState;
|
|
33
|
+
private resolvePricing;
|
|
34
|
+
recordTurn(model: string, usage: UsageRecord): TurnMetrics;
|
|
35
|
+
getCostSummary(): {
|
|
36
|
+
inputTokens: number;
|
|
37
|
+
outputTokens: number;
|
|
38
|
+
totalTokens: number;
|
|
39
|
+
totalCostUsd: number;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Estimate the token count for a message array without calling the router.
|
|
44
|
+
* Uses the well-known approximation of 1 token ≈ 4 UTF-16 code units.
|
|
45
|
+
* Accurate to ±15% for English prose; good enough for a pre-flight gate.
|
|
46
|
+
*/
|
|
47
|
+
export declare function estimateTokens(messages: unknown[]): number;
|
|
48
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,0BAA0B,CAAK;IACvC,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,EAAE,WAAW;IAI/B,KAAK,IAAI,IAAI;IAMb,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAMpC,cAAc,IAAI,YAAY;IAQ9B,OAAO,CAAC,cAAc;IAoBtB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW;IAqC1D,cAAc,IAAI;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB;CASF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAM1D"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export class ContextManager {
|
|
2
|
+
config;
|
|
3
|
+
cumulativePromptTokens = 0;
|
|
4
|
+
cumulativeCompletionTokens = 0;
|
|
5
|
+
cumulativeCostUsd = 0;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
reset() {
|
|
10
|
+
this.cumulativePromptTokens = 0;
|
|
11
|
+
this.cumulativeCompletionTokens = 0;
|
|
12
|
+
this.cumulativeCostUsd = 0;
|
|
13
|
+
}
|
|
14
|
+
loadState(state) {
|
|
15
|
+
this.cumulativePromptTokens = state.cumulativePromptTokens;
|
|
16
|
+
this.cumulativeCompletionTokens = state.cumulativeCompletionTokens;
|
|
17
|
+
this.cumulativeCostUsd = state.cumulativeCostUsd;
|
|
18
|
+
}
|
|
19
|
+
serializeState() {
|
|
20
|
+
return {
|
|
21
|
+
cumulativePromptTokens: this.cumulativePromptTokens,
|
|
22
|
+
cumulativeCompletionTokens: this.cumulativeCompletionTokens,
|
|
23
|
+
cumulativeCostUsd: this.cumulativeCostUsd,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
resolvePricing(model) {
|
|
27
|
+
const direct = this.config.modelPricingPer1K[model];
|
|
28
|
+
if (direct) {
|
|
29
|
+
return direct;
|
|
30
|
+
}
|
|
31
|
+
const normalized = model.toLowerCase();
|
|
32
|
+
const entries = Object.entries(this.config.modelPricingPer1K);
|
|
33
|
+
for (const [key, value] of entries) {
|
|
34
|
+
if (normalized.includes(key.toLowerCase())) {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
input: this.config.defaultInputCostPer1K,
|
|
40
|
+
output: this.config.defaultOutputCostPer1K,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
recordTurn(model, usage) {
|
|
44
|
+
const promptTokens = Math.max(0, usage.prompt_tokens || 0);
|
|
45
|
+
const completionTokens = Math.max(0, usage.completion_tokens || 0);
|
|
46
|
+
const totalTokens = usage.total_tokens && usage.total_tokens > 0
|
|
47
|
+
? usage.total_tokens
|
|
48
|
+
: promptTokens + completionTokens;
|
|
49
|
+
const pricing = this.resolvePricing(model);
|
|
50
|
+
const turnCostUsd = (promptTokens / 1000) * pricing.input +
|
|
51
|
+
(completionTokens / 1000) * pricing.output;
|
|
52
|
+
this.cumulativePromptTokens += promptTokens;
|
|
53
|
+
this.cumulativeCompletionTokens += completionTokens;
|
|
54
|
+
this.cumulativeCostUsd += turnCostUsd;
|
|
55
|
+
const contextUtilization = this.config.contextWindowTokens > 0
|
|
56
|
+
? promptTokens / this.config.contextWindowTokens
|
|
57
|
+
: 0;
|
|
58
|
+
return {
|
|
59
|
+
promptTokens,
|
|
60
|
+
completionTokens,
|
|
61
|
+
totalTokens,
|
|
62
|
+
turnCostUsd,
|
|
63
|
+
cumulativeCostUsd: this.cumulativeCostUsd,
|
|
64
|
+
cumulativePromptTokens: this.cumulativePromptTokens,
|
|
65
|
+
cumulativeCompletionTokens: this.cumulativeCompletionTokens,
|
|
66
|
+
contextUtilization,
|
|
67
|
+
warnThresholdCrossed: contextUtilization >= this.config.warnThresholdRatio,
|
|
68
|
+
autoCompactRecommended: contextUtilization >= this.config.autoCompactThresholdRatio,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
getCostSummary() {
|
|
72
|
+
const totalTokens = this.cumulativePromptTokens + this.cumulativeCompletionTokens;
|
|
73
|
+
return {
|
|
74
|
+
inputTokens: this.cumulativePromptTokens,
|
|
75
|
+
outputTokens: this.cumulativeCompletionTokens,
|
|
76
|
+
totalTokens,
|
|
77
|
+
totalCostUsd: this.cumulativeCostUsd,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Estimate the token count for a message array without calling the router.
|
|
83
|
+
* Uses the well-known approximation of 1 token ≈ 4 UTF-16 code units.
|
|
84
|
+
* Accurate to ±15% for English prose; good enough for a pre-flight gate.
|
|
85
|
+
*/
|
|
86
|
+
export function estimateTokens(messages) {
|
|
87
|
+
try {
|
|
88
|
+
return Math.ceil(JSON.stringify(messages).length / 4);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/diff.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure line-based unified diff with no external dependencies.
|
|
3
|
+
* Uses LCS (longest common subsequence) to compute changes.
|
|
4
|
+
*/
|
|
5
|
+
export interface UnifiedDiffOptions {
|
|
6
|
+
oldLabel?: string;
|
|
7
|
+
newLabel?: string;
|
|
8
|
+
contextLines?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Compute a unified diff string (plain text, no ANSI colors).
|
|
12
|
+
* Returns empty string when the two texts are identical.
|
|
13
|
+
*/
|
|
14
|
+
export declare function computeUnifiedDiff(oldText: string, newText: string, options?: UnifiedDiffOptions): string;
|
|
15
|
+
/**
|
|
16
|
+
* Colorize a unified diff string using chalk-compatible ANSI codes.
|
|
17
|
+
* Red for deletions, green for additions, dim for context, bold for headers.
|
|
18
|
+
*/
|
|
19
|
+
export declare function colorizeUnifiedDiff(diff: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Count changed lines in a unified diff (lines starting with + or - excluding headers).
|
|
22
|
+
*/
|
|
23
|
+
export declare function countDiffChanges(diff: string): {
|
|
24
|
+
added: number;
|
|
25
|
+
removed: number;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8EH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA2ER;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4BxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQjF"}
|
package/dist/diff.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure line-based unified diff with no external dependencies.
|
|
3
|
+
* Uses LCS (longest common subsequence) to compute changes.
|
|
4
|
+
*/
|
|
5
|
+
function diffLines(oldLines, newLines) {
|
|
6
|
+
const m = oldLines.length;
|
|
7
|
+
const n = newLines.length;
|
|
8
|
+
// LCS DP table — O(m*n) space, fine for typical source files
|
|
9
|
+
const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
|
|
10
|
+
for (let i = 1; i <= m; i++) {
|
|
11
|
+
for (let j = 1; j <= n; j++) {
|
|
12
|
+
dp[i][j] =
|
|
13
|
+
oldLines[i - 1] === newLines[j - 1]
|
|
14
|
+
? dp[i - 1][j - 1] + 1
|
|
15
|
+
: Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const ops = [];
|
|
19
|
+
let i = m;
|
|
20
|
+
let j = n;
|
|
21
|
+
while (i > 0 || j > 0) {
|
|
22
|
+
if (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {
|
|
23
|
+
ops.unshift({ op: "keep", line: oldLines[i - 1] });
|
|
24
|
+
i--;
|
|
25
|
+
j--;
|
|
26
|
+
}
|
|
27
|
+
else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {
|
|
28
|
+
ops.unshift({ op: "add", line: newLines[j - 1] });
|
|
29
|
+
j--;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
ops.unshift({ op: "del", line: oldLines[i - 1] });
|
|
33
|
+
i--;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return ops;
|
|
37
|
+
}
|
|
38
|
+
function buildHunkIndices(ops, contextLines) {
|
|
39
|
+
const changed = new Set();
|
|
40
|
+
for (let idx = 0; idx < ops.length; idx++) {
|
|
41
|
+
if (ops[idx].op !== "keep") {
|
|
42
|
+
for (let c = Math.max(0, idx - contextLines); c <= Math.min(ops.length - 1, idx + contextLines); c++) {
|
|
43
|
+
changed.add(c);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (changed.size === 0)
|
|
48
|
+
return [];
|
|
49
|
+
const sorted = [...changed].sort((a, b) => a - b);
|
|
50
|
+
const hunks = [];
|
|
51
|
+
let start = sorted[0];
|
|
52
|
+
let prev = start;
|
|
53
|
+
for (let k = 1; k < sorted.length; k++) {
|
|
54
|
+
const cur = sorted[k];
|
|
55
|
+
if (cur > prev + 1) {
|
|
56
|
+
hunks.push(Array.from({ length: prev - start + 1 }, (_, x) => start + x));
|
|
57
|
+
start = cur;
|
|
58
|
+
}
|
|
59
|
+
prev = cur;
|
|
60
|
+
}
|
|
61
|
+
hunks.push(Array.from({ length: prev - start + 1 }, (_, x) => start + x));
|
|
62
|
+
return hunks;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Compute a unified diff string (plain text, no ANSI colors).
|
|
66
|
+
* Returns empty string when the two texts are identical.
|
|
67
|
+
*/
|
|
68
|
+
export function computeUnifiedDiff(oldText, newText, options = {}) {
|
|
69
|
+
const { oldLabel = "original", newLabel = "modified", contextLines = 3, } = options;
|
|
70
|
+
if (oldText === newText)
|
|
71
|
+
return "";
|
|
72
|
+
const oldLines = oldText.split("\n");
|
|
73
|
+
const newLines = newText.split("\n");
|
|
74
|
+
const ops = diffLines(oldLines, newLines);
|
|
75
|
+
const annotated = [];
|
|
76
|
+
let oldNo = 0;
|
|
77
|
+
let newNo = 0;
|
|
78
|
+
for (const op of ops) {
|
|
79
|
+
if (op.op === "keep") {
|
|
80
|
+
oldNo++;
|
|
81
|
+
newNo++;
|
|
82
|
+
annotated.push({ op: "keep", line: op.line, oldNo, newNo });
|
|
83
|
+
}
|
|
84
|
+
else if (op.op === "del") {
|
|
85
|
+
oldNo++;
|
|
86
|
+
annotated.push({ op: "del", line: op.line, oldNo, newNo: null });
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
newNo++;
|
|
90
|
+
annotated.push({ op: "add", line: op.line, oldNo: null, newNo });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const hunkRanges = buildHunkIndices(ops, contextLines);
|
|
94
|
+
if (hunkRanges.length === 0)
|
|
95
|
+
return "";
|
|
96
|
+
const outputLines = [`--- ${oldLabel}`, `+++ ${newLabel}`];
|
|
97
|
+
for (const indices of hunkRanges) {
|
|
98
|
+
// Find first old and new line numbers in this hunk
|
|
99
|
+
let hunkOldStart = 1;
|
|
100
|
+
let hunkNewStart = 1;
|
|
101
|
+
for (const i of indices) {
|
|
102
|
+
if (annotated[i].oldNo !== null) {
|
|
103
|
+
hunkOldStart = annotated[i].oldNo;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
for (const i of indices) {
|
|
108
|
+
if (annotated[i].newNo !== null) {
|
|
109
|
+
hunkNewStart = annotated[i].newNo;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const oldCount = indices.filter((i) => annotated[i].oldNo !== null).length;
|
|
114
|
+
const newCount = indices.filter((i) => annotated[i].newNo !== null).length;
|
|
115
|
+
outputLines.push(`@@ -${hunkOldStart},${oldCount} +${hunkNewStart},${newCount} @@`);
|
|
116
|
+
for (const idx of indices) {
|
|
117
|
+
const a = annotated[idx];
|
|
118
|
+
if (a.op === "keep")
|
|
119
|
+
outputLines.push(` ${a.line}`);
|
|
120
|
+
else if (a.op === "add")
|
|
121
|
+
outputLines.push(`+${a.line}`);
|
|
122
|
+
else
|
|
123
|
+
outputLines.push(`-${a.line}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return outputLines.join("\n");
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Colorize a unified diff string using chalk-compatible ANSI codes.
|
|
130
|
+
* Red for deletions, green for additions, dim for context, bold for headers.
|
|
131
|
+
*/
|
|
132
|
+
export function colorizeUnifiedDiff(diff) {
|
|
133
|
+
if (!diff)
|
|
134
|
+
return "";
|
|
135
|
+
// Use raw ANSI codes so this module stays dep-free; caller can also use chalk.
|
|
136
|
+
const RED = "\x1b[31m";
|
|
137
|
+
const GREEN = "\x1b[32m";
|
|
138
|
+
const CYAN = "\x1b[36m";
|
|
139
|
+
const DIM = "\x1b[2m";
|
|
140
|
+
const RESET = "\x1b[0m";
|
|
141
|
+
return diff
|
|
142
|
+
.split("\n")
|
|
143
|
+
.map((line) => {
|
|
144
|
+
if (line.startsWith("---") || line.startsWith("+++")) {
|
|
145
|
+
return `${DIM}${line}${RESET}`;
|
|
146
|
+
}
|
|
147
|
+
if (line.startsWith("@@")) {
|
|
148
|
+
return `${CYAN}${line}${RESET}`;
|
|
149
|
+
}
|
|
150
|
+
if (line.startsWith("+")) {
|
|
151
|
+
return `${GREEN}${line}${RESET}`;
|
|
152
|
+
}
|
|
153
|
+
if (line.startsWith("-")) {
|
|
154
|
+
return `${RED}${line}${RESET}`;
|
|
155
|
+
}
|
|
156
|
+
return line;
|
|
157
|
+
})
|
|
158
|
+
.join("\n");
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Count changed lines in a unified diff (lines starting with + or - excluding headers).
|
|
162
|
+
*/
|
|
163
|
+
export function countDiffChanges(diff) {
|
|
164
|
+
let added = 0;
|
|
165
|
+
let removed = 0;
|
|
166
|
+
for (const line of diff.split("\n")) {
|
|
167
|
+
if (line.startsWith("+") && !line.startsWith("+++"))
|
|
168
|
+
added++;
|
|
169
|
+
else if (line.startsWith("-") && !line.startsWith("---"))
|
|
170
|
+
removed++;
|
|
171
|
+
}
|
|
172
|
+
return { added, removed };
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=diff.js.map
|
package/dist/diff.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,SAAS,SAAS,CAAC,QAAkB,EAAE,QAAkB;IACvD,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE1B,6DAA6D;IAC7D,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CACxD,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;gBACP,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC;oBACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC,CAAC;YACpD,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC,CAAC;YACnD,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC,CAAC;YACnD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAa,EAAE,YAAoB;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YAC5B,KACE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC,EACvC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,YAAY,CAAC,EACjD,CAAC,EAAE,EACH,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;IACvB,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1E,KAAK,GAAG,GAAG,CAAC;QACd,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE1E,OAAO,KAAK,CAAC;AACf,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,OAAe,EACf,UAA8B,EAAE;IAEhC,MAAM,EACJ,QAAQ,GAAG,UAAU,EACrB,QAAQ,GAAG,UAAU,EACrB,YAAY,GAAG,CAAC,GACjB,GAAG,OAAO,CAAC;IAEZ,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAS1C,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACrB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;YACR,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3B,KAAK,EAAE,CAAC;YACR,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;YACR,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,WAAW,GAAa,CAAC,OAAO,QAAQ,EAAE,EAAE,OAAO,QAAQ,EAAE,CAAC,CAAC;IAErE,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,mDAAmD;QACnD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,KAAM,CAAC;gBACpC,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,KAAM,CAAC;gBACpC,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QAE5E,WAAW,CAAC,IAAI,CAAC,OAAO,YAAY,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,CAAC,CAAC;QAEpF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM;gBAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC/C,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK;gBAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;gBACnD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,+EAA+E;IAC/E,MAAM,GAAG,GAAG,UAAU,CAAC;IACvB,MAAM,KAAK,GAAG,UAAU,CAAC;IACzB,MAAM,IAAI,GAAG,UAAU,CAAC;IACxB,MAAM,GAAG,GAAG,SAAS,CAAC;IACtB,MAAM,KAAK,GAAG,SAAS,CAAC;IAExB,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,KAAK,EAAE,CAAC;aACxD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC"}
|