appsec-agent 0.3.7 → 1.2.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/README.md +39 -0
- package/conf/appsec_agent.yaml +10 -0
- package/dist/bin/agent-run.js +29 -6
- package/dist/bin/agent-run.js.map +1 -1
- package/dist/conf/appsec_agent.yaml +10 -0
- package/dist/src/agent_actions.d.ts +8 -1
- package/dist/src/agent_actions.d.ts.map +1 -1
- package/dist/src/agent_actions.js +8 -6
- package/dist/src/agent_actions.js.map +1 -1
- package/dist/src/diff_chunking.d.ts +35 -0
- package/dist/src/diff_chunking.d.ts.map +1 -0
- package/dist/src/diff_chunking.js +151 -0
- package/dist/src/diff_chunking.js.map +1 -0
- package/dist/src/diff_report_merge.d.ts +28 -0
- package/dist/src/diff_report_merge.d.ts.map +1 -0
- package/dist/src/diff_report_merge.js +164 -0
- package/dist/src/diff_report_merge.js.map +1 -0
- package/dist/src/llm_query.d.ts +52 -0
- package/dist/src/llm_query.d.ts.map +1 -0
- package/dist/src/llm_query.js +157 -0
- package/dist/src/llm_query.js.map +1 -0
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +93 -9
- package/dist/src/main.js.map +1 -1
- package/dist/src/openai_tools.d.ts +26 -0
- package/dist/src/openai_tools.d.ts.map +1 -0
- package/dist/src/openai_tools.js +194 -0
- package/dist/src/openai_tools.js.map +1 -0
- package/dist/src/utils.d.ts +5 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +83 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -95,6 +95,24 @@ The agents can be configured through environment variables and configuration fil
|
|
|
95
95
|
|
|
96
96
|
Configuration file: `conf/appsec_agent.yaml`
|
|
97
97
|
|
|
98
|
+
### Optional: LLM failover (Anthropic → OpenAI)
|
|
99
|
+
|
|
100
|
+
**Failover is off by default.** The agent uses Anthropic only unless you enable failover. When enabled, if the Anthropic call fails (e.g. API outage or rate limit), the agent will retry using the OpenAI API so the parent app gets a single response path.
|
|
101
|
+
|
|
102
|
+
To enable failover, set:
|
|
103
|
+
|
|
104
|
+
- `FAILOVER_ENABLED`: set to `true` to enable (default is disabled).
|
|
105
|
+
- `OPENAI_API_KEY`: your OpenAI API key (required when failover is enabled).
|
|
106
|
+
- `OPENAI_BASE_URL`: (optional) custom OpenAI endpoint.
|
|
107
|
+
- `OPENAI_FALLBACK_MODEL`: (optional) model to use for fallback (e.g. `gpt-4o`); default is `gpt-4o`.
|
|
108
|
+
|
|
109
|
+
**CLI overrides env overrides config.** You can use:
|
|
110
|
+
|
|
111
|
+
- `--failover`: enable failover for this run.
|
|
112
|
+
- `--openai-api-key <key>`: OpenAI API key for this run (overrides `OPENAI_API_KEY`).
|
|
113
|
+
|
|
114
|
+
When failover runs, all agents (simple query, code reviewer, threat modeler, diff reviewer) use the same prompt and system message; tooled agents do not run tools on the fallback path. The response shape is unchanged so the parent app is unaffected.
|
|
115
|
+
|
|
98
116
|
## 🤖 Available Agents
|
|
99
117
|
|
|
100
118
|
### Simple Query Agent (`simple_query_agent`)
|
|
@@ -216,6 +234,27 @@ The diff context JSON file should follow this structure:
|
|
|
216
234
|
|
|
217
235
|
**Note:** If `--diff-context` is provided without the `code_reviewer` role, a warning will be displayed as the option is only applicable to code reviews.
|
|
218
236
|
|
|
237
|
+
#### PR chunking (large PRs)
|
|
238
|
+
|
|
239
|
+
When a PR diff exceeds the model's context limit, **chunking** splits the diff into batches, reviews each batch, then merges the reports into a single output file.
|
|
240
|
+
|
|
241
|
+
- **Config** (in `conf/appsec_agent.yaml`): PR diff chunking options live under **`pr_reviewer.options`** and are **on by default** when you use the `pr_reviewer` role with `-d/--diff-context`. The `code_reviewer` role does not have chunking enabled by default.
|
|
242
|
+
- `diff_review_max_tokens_per_batch`: e.g. `150000` (0 or omit = no chunking)
|
|
243
|
+
- `diff_review_max_batches`: e.g. `3` (cap on number of batches per run)
|
|
244
|
+
- `diff_review_max_files`: optional cap on files reviewed; rest are skipped
|
|
245
|
+
- `diff_review_exclude_paths`: optional list of path patterns to exclude (e.g. `["src/analytics/*"]`)
|
|
246
|
+
- **CLI** (override config): `--diff-max-tokens <n>`, `--diff-max-batches <n>`, `--diff-max-files <n>`, `--diff-exclude <pattern>` (repeatable)
|
|
247
|
+
|
|
248
|
+
When chunking is used, the merged report may include a **Skipped** section listing files that were excluded or that exceeded the batch limit. Total API cost is logged per batch and as a total, and (for JSON reports) included in `meta.total_cost_usd`.
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# pr_reviewer has chunking on by default when using -d
|
|
252
|
+
$ npx agent-run -r pr_reviewer -d pr-diff.json
|
|
253
|
+
|
|
254
|
+
# Or enable chunking via CLI when using code_reviewer (overrides config)
|
|
255
|
+
$ npx agent-run -r code_reviewer -d pr-diff.json --diff-max-tokens 150000 --diff-max-batches 3
|
|
256
|
+
```
|
|
257
|
+
|
|
219
258
|
### Threat Modeler Example
|
|
220
259
|
```bash
|
|
221
260
|
# Run threat modeler on current directory
|
package/conf/appsec_agent.yaml
CHANGED
|
@@ -20,6 +20,16 @@ default: &default
|
|
|
20
20
|
system_prompt: "You are an Application Security (AppSec) expert assistant. You are responsible for performing risk assessment on the source code repository for SOC2 type 2 compliance audit: 1. Start with drawing the ASCII text based Data Flow Diagrm (DFD), with output format as <codebase_data_flow_diagram_text_timestamp>; 2. then proceeding to use STRIDE methodology to perform threat modeling on the DFD, without output report in the format <codebase_threat_model_timestamp>; 3. finally, provide a seperate risk registry report including proposed remediation plan in the format <codebase_risk_registry_text_timestamp>. We're looking for 3 reports in the current working directory as the deliverable."
|
|
21
21
|
output_format: "markdown"
|
|
22
22
|
verbose: True
|
|
23
|
+
pr_reviewer:
|
|
24
|
+
options:
|
|
25
|
+
system_prompt: "You are an Application Security (AppSec) expert assistant specializing in Pull Request security reviews. Analyze ONLY the changed code provided in the diff context. Focus on security implications of the new or modified code, cite specific line numbers from the provided diff, and write the security review report."
|
|
26
|
+
output_format: "markdown"
|
|
27
|
+
verbose: True
|
|
28
|
+
# PR diff chunking (for -d/--diff-context): on by default for pr_reviewer
|
|
29
|
+
diff_review_max_tokens_per_batch: 150000
|
|
30
|
+
diff_review_max_batches: 3
|
|
31
|
+
diff_review_max_files: 80
|
|
32
|
+
# diff_review_exclude_paths: []
|
|
23
33
|
|
|
24
34
|
|
|
25
35
|
development:
|
package/dist/bin/agent-run.js
CHANGED
|
@@ -58,8 +58,15 @@ program
|
|
|
58
58
|
.option('-k, --anthropic-api-key <key>', 'Anthropic API key (overrides ANTHROPIC_API_KEY environment variable)')
|
|
59
59
|
.option('-u, --anthropic-base-url <url>', 'Anthropic API base URL (overrides ANTHROPIC_BASE_URL environment variable)')
|
|
60
60
|
.option('-c, --context <context>', 'Additional context for the code review (e.g., deployment environment, architecture, compliance requirements)')
|
|
61
|
-
.option('
|
|
61
|
+
.option('--diff-context <file>', 'JSON file with diff context for PR-focused code review (optimizes token usage)')
|
|
62
|
+
.option('--diff-max-tokens <n>', 'Max tokens per batch for PR chunking (0 = disabled). Overrides config.')
|
|
63
|
+
.option('--diff-max-batches <n>', 'Max batches per PR run (e.g. 3). Overrides config.')
|
|
64
|
+
.option('--diff-max-files <n>', 'Max files to include in PR review; rest skipped. Overrides config.')
|
|
65
|
+
.option('--diff-exclude <pattern>', 'Exclude path pattern (repeatable). Overrides config.', (v, acc) => { acc.push(v); return acc; }, [])
|
|
62
66
|
.option('-m, --model <model>', 'Claude model to use: sonnet, opus, haiku - default to "sonnet"', 'sonnet')
|
|
67
|
+
.option('-F, --failover', 'Enable failover to OpenAI when Anthropic fails (optional feature, off by default). Overrides FAILOVER_ENABLED env.')
|
|
68
|
+
.option('-K, --openai-api-key <key>', 'OpenAI API key for failover (overrides OPENAI_API_KEY env). Only used when failover is enabled.')
|
|
69
|
+
.option('-U, --openai-base-url <url>', 'OpenAI API base URL for failover (overrides OPENAI_BASE_URL env). Only used when failover is enabled.')
|
|
63
70
|
.option('-l, --list_roles', 'List all available roles')
|
|
64
71
|
.option('-v, --version', 'Program version')
|
|
65
72
|
.option('-V, --verbose', 'Verbose mode');
|
|
@@ -97,13 +104,25 @@ if (options.anthropicApiKey) {
|
|
|
97
104
|
if (options.anthropicBaseUrl) {
|
|
98
105
|
process.env.ANTHROPIC_BASE_URL = options.anthropicBaseUrl;
|
|
99
106
|
}
|
|
107
|
+
// Failover: CLI overrides env. Set env so adapter reads them.
|
|
108
|
+
if (options.failover !== undefined) {
|
|
109
|
+
process.env.FAILOVER_ENABLED = options.failover ? 'true' : 'false';
|
|
110
|
+
}
|
|
111
|
+
if (options.openaiApiKey !== undefined) {
|
|
112
|
+
console.warn('⚠️ SECURITY WARNING: OpenAI API key provided via command line argument.');
|
|
113
|
+
console.warn(' For better security, use the OPENAI_API_KEY environment variable instead.\n');
|
|
114
|
+
process.env.OPENAI_API_KEY = options.openaiApiKey;
|
|
115
|
+
}
|
|
116
|
+
if (options.openaiBaseUrl !== undefined) {
|
|
117
|
+
process.env.OPENAI_BASE_URL = options.openaiBaseUrl;
|
|
118
|
+
}
|
|
100
119
|
// Validate model option
|
|
101
120
|
const validModels = ['sonnet', 'opus', 'haiku'];
|
|
102
121
|
if (!validModels.includes(options.model)) {
|
|
103
122
|
console.error(`Error: Invalid model "${options.model}". Valid options: ${validModels.join(', ')}`);
|
|
104
123
|
process.exit(1);
|
|
105
124
|
}
|
|
106
|
-
// Prepare args
|
|
125
|
+
// Prepare args (chunking: CLI overrides config; main will merge with conf)
|
|
107
126
|
const args = {
|
|
108
127
|
role: options.role,
|
|
109
128
|
environment: options.environment,
|
|
@@ -113,7 +132,11 @@ const args = {
|
|
|
113
132
|
verbose: options.verbose,
|
|
114
133
|
context: options.context,
|
|
115
134
|
diff_context: options.diffContext,
|
|
116
|
-
model: options.model
|
|
135
|
+
model: options.model,
|
|
136
|
+
diff_max_tokens_per_batch: options.diffMaxTokens !== undefined ? parseInt(options.diffMaxTokens, 10) : undefined,
|
|
137
|
+
diff_max_batches: options.diffMaxBatches !== undefined ? parseInt(options.diffMaxBatches, 10) : undefined,
|
|
138
|
+
diff_max_files: options.diffMaxFiles !== undefined ? parseInt(options.diffMaxFiles, 10) : undefined,
|
|
139
|
+
diff_exclude: Array.isArray(options.diffExclude) && options.diffExclude.length > 0 ? options.diffExclude : undefined
|
|
117
140
|
};
|
|
118
141
|
// Log context if provided
|
|
119
142
|
if (args.context) {
|
|
@@ -122,10 +145,10 @@ if (args.context) {
|
|
|
122
145
|
// Log diff context if provided and validate role compatibility
|
|
123
146
|
if (args.diff_context) {
|
|
124
147
|
console.log('Using diff context file:', args.diff_context);
|
|
125
|
-
if (args.role !== 'code_reviewer') {
|
|
126
|
-
console.warn('⚠️ Warning: --diff-context is only used with the code_reviewer role.');
|
|
148
|
+
if (args.role !== 'code_reviewer' && args.role !== 'pr_reviewer') {
|
|
149
|
+
console.warn('⚠️ Warning: --diff-context is only used with the code_reviewer or pr_reviewer role.');
|
|
127
150
|
console.warn(` Current role: ${args.role}. The diff context will be ignored.`);
|
|
128
|
-
console.warn(' Use -r code_reviewer to enable PR diff-focused code review.\n');
|
|
151
|
+
console.warn(' Use -r code_reviewer or -r pr_reviewer to enable PR diff-focused code review.\n');
|
|
129
152
|
}
|
|
130
153
|
}
|
|
131
154
|
// Run main function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run.js","sourceRoot":"","sources":["../../bin/agent-run.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,yCAAoC;AAEpC,yCAAyC;AACzC,0FAA0F;AAC1F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;AAChH,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,gFAAgF,CAAC;KAC7G,MAAM,CAAC,yBAAyB,EAAE,wDAAwD,EAAE,aAAa,CAAC;KAC1G,MAAM,CAAC,mBAAmB,EAAE,0GAA0G,EAAE,oBAAoB,CAAC;KAC7J,MAAM,CAAC,qBAAqB,EAAE,wEAAwE,CAAC;KACvG,MAAM,CAAC,0BAA0B,EAAE,gFAAgF,CAAC;KACpH,MAAM,CAAC,8BAA8B,EAAE,uEAAuE,EAAE,UAAU,CAAC;KAC3H,MAAM,CAAC,+BAA+B,EAAE,sEAAsE,CAAC;KAC/G,MAAM,CAAC,gCAAgC,EAAE,4EAA4E,CAAC;KACtH,MAAM,CAAC,yBAAyB,EAAE,8GAA8G,CAAC;KACjJ,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-run.js","sourceRoot":"","sources":["../../bin/agent-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,16 @@ default: &default
|
|
|
20
20
|
system_prompt: "You are an Application Security (AppSec) expert assistant. You are responsible for performing risk assessment on the source code repository for SOC2 type 2 compliance audit: 1. Start with drawing the ASCII text based Data Flow Diagrm (DFD), with output format as <codebase_data_flow_diagram_text_timestamp>; 2. then proceeding to use STRIDE methodology to perform threat modeling on the DFD, without output report in the format <codebase_threat_model_timestamp>; 3. finally, provide a seperate risk registry report including proposed remediation plan in the format <codebase_risk_registry_text_timestamp>. We're looking for 3 reports in the current working directory as the deliverable."
|
|
21
21
|
output_format: "markdown"
|
|
22
22
|
verbose: True
|
|
23
|
+
pr_reviewer:
|
|
24
|
+
options:
|
|
25
|
+
system_prompt: "You are an Application Security (AppSec) expert assistant specializing in Pull Request security reviews. Analyze ONLY the changed code provided in the diff context. Focus on security implications of the new or modified code, cite specific line numbers from the provided diff, and write the security review report."
|
|
26
|
+
output_format: "markdown"
|
|
27
|
+
verbose: True
|
|
28
|
+
# PR diff chunking (for -d/--diff-context): on by default for pr_reviewer
|
|
29
|
+
diff_review_max_tokens_per_batch: 150000
|
|
30
|
+
diff_review_max_batches: 3
|
|
31
|
+
diff_review_max_files: 80
|
|
32
|
+
# diff_review_exclude_paths: []
|
|
23
33
|
|
|
24
34
|
|
|
25
35
|
development:
|
|
@@ -14,6 +14,10 @@ export interface AgentArgs {
|
|
|
14
14
|
context?: string;
|
|
15
15
|
diff_context?: string;
|
|
16
16
|
model?: string;
|
|
17
|
+
diff_max_tokens_per_batch?: number;
|
|
18
|
+
diff_max_batches?: number;
|
|
19
|
+
diff_max_files?: number;
|
|
20
|
+
diff_exclude?: string[];
|
|
17
21
|
}
|
|
18
22
|
export declare class AgentActions {
|
|
19
23
|
private confDict;
|
|
@@ -36,7 +40,10 @@ export declare class AgentActions {
|
|
|
36
40
|
/**
|
|
37
41
|
* PR diff-focused code reviewer with options
|
|
38
42
|
* Optimized for reviewing only changed code from a pull request
|
|
43
|
+
* @param onResult - Optional callback to collect cost for chunked runs (e.g. aggregate total_cost_usd across batches)
|
|
39
44
|
*/
|
|
40
|
-
diffReviewerWithOptions(userPrompt: string, srcDir?: string | null
|
|
45
|
+
diffReviewerWithOptions(userPrompt: string, srcDir?: string | null, onResult?: (result: {
|
|
46
|
+
total_cost_usd?: number;
|
|
47
|
+
}) => void): Promise<string>;
|
|
41
48
|
}
|
|
42
49
|
//# sourceMappingURL=agent_actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_actions.d.ts","sourceRoot":"","sources":["../../src/agent_actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"agent_actions.d.ts","sourceRoot":"","sources":["../../src/agent_actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,mBAAmB,CAA2B;gBAC1C,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAMtE;;OAEG;IACG,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAiJ/F;;OAEG;IACG,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiElE;;OAEG;IACG,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8DxE;;;;OAIG;IACG,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GACvD,OAAO,CAAC,MAAM,CAAC;CAiEnB"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.AgentActions = void 0;
|
|
9
|
-
const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
|
|
10
9
|
const agent_options_1 = require("./agent_options");
|
|
10
|
+
const llm_query_1 = require("./llm_query");
|
|
11
11
|
const blinking_cursor_1 = require("./blinking_cursor");
|
|
12
12
|
class AgentActions {
|
|
13
13
|
confDict;
|
|
@@ -60,7 +60,7 @@ class AgentActions {
|
|
|
60
60
|
};
|
|
61
61
|
try {
|
|
62
62
|
cursor.start();
|
|
63
|
-
for await (const msg of (0,
|
|
63
|
+
for await (const msg of (0, llm_query_1.llmQuery)({ prompt: fullPrompt, options })) {
|
|
64
64
|
if (this.args.verbose) {
|
|
65
65
|
console.error(`[DEBUG] Message type: ${msg.type}`);
|
|
66
66
|
}
|
|
@@ -175,7 +175,7 @@ class AgentActions {
|
|
|
175
175
|
cursor = new blinking_cursor_1.BlinkingCursor();
|
|
176
176
|
cursor.start();
|
|
177
177
|
try {
|
|
178
|
-
for await (const message of (0,
|
|
178
|
+
for await (const message of (0, llm_query_1.llmQuery)({ prompt: userPrompt, options })) {
|
|
179
179
|
if (message.type === 'stream_event') {
|
|
180
180
|
// Stop cursor when we receive stream events
|
|
181
181
|
if (cursor)
|
|
@@ -248,7 +248,7 @@ class AgentActions {
|
|
|
248
248
|
cursor = new blinking_cursor_1.BlinkingCursor();
|
|
249
249
|
cursor.start();
|
|
250
250
|
try {
|
|
251
|
-
for await (const message of (0,
|
|
251
|
+
for await (const message of (0, llm_query_1.llmQuery)({ prompt: userPrompt, options })) {
|
|
252
252
|
if (message.type === 'stream_event') {
|
|
253
253
|
// Stop cursor when we receive stream events
|
|
254
254
|
if (cursor)
|
|
@@ -311,8 +311,9 @@ class AgentActions {
|
|
|
311
311
|
/**
|
|
312
312
|
* PR diff-focused code reviewer with options
|
|
313
313
|
* Optimized for reviewing only changed code from a pull request
|
|
314
|
+
* @param onResult - Optional callback to collect cost for chunked runs (e.g. aggregate total_cost_usd across batches)
|
|
314
315
|
*/
|
|
315
|
-
async diffReviewerWithOptions(userPrompt, srcDir) {
|
|
316
|
+
async diffReviewerWithOptions(userPrompt, srcDir, onResult) {
|
|
316
317
|
const agentOptions = new agent_options_1.AgentOptions(this.confDict, this.environment, this.args.model);
|
|
317
318
|
const options = agentOptions.getDiffReviewerOptions(this.args.role, srcDir);
|
|
318
319
|
// Declare cursor outside try block so it's accessible in catch
|
|
@@ -322,7 +323,7 @@ class AgentActions {
|
|
|
322
323
|
cursor = new blinking_cursor_1.BlinkingCursor();
|
|
323
324
|
cursor.start();
|
|
324
325
|
try {
|
|
325
|
-
for await (const message of (0,
|
|
326
|
+
for await (const message of (0, llm_query_1.llmQuery)({ prompt: userPrompt, options })) {
|
|
326
327
|
if (message.type === 'stream_event') {
|
|
327
328
|
// Stop cursor when we receive stream events
|
|
328
329
|
if (cursor)
|
|
@@ -357,6 +358,7 @@ class AgentActions {
|
|
|
357
358
|
if (resultMsg.total_cost_usd && resultMsg.total_cost_usd > 0) {
|
|
358
359
|
console.log(`\nCost: $${resultMsg.total_cost_usd.toFixed(4)}`);
|
|
359
360
|
}
|
|
361
|
+
onResult?.({ total_cost_usd: resultMsg.total_cost_usd });
|
|
360
362
|
}
|
|
361
363
|
}
|
|
362
364
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_actions.js","sourceRoot":"","sources":["../../src/agent_actions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent_actions.js","sourceRoot":"","sources":["../../src/agent_actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR diff chunking: token estimation, file filtering, and batching.
|
|
3
|
+
* Kept in a separate module for easier tracking and rework (e.g. if 1M-context models reduce need for chunking).
|
|
4
|
+
*
|
|
5
|
+
* Author: Sam Li
|
|
6
|
+
*/
|
|
7
|
+
import { DiffContext, DiffContextFile } from './diff_context';
|
|
8
|
+
/**
|
|
9
|
+
* Estimate token count for a string (approximate).
|
|
10
|
+
*/
|
|
11
|
+
export declare function estimateTokens(text: string): number;
|
|
12
|
+
export interface ChunkingOptions {
|
|
13
|
+
/** Max tokens per batch (prompt body). 0 = no chunking. */
|
|
14
|
+
maxTokensPerBatch: number;
|
|
15
|
+
/** Max number of batches per run. */
|
|
16
|
+
maxBatches: number;
|
|
17
|
+
/** Optional cap on number of files to include; rest are skipped. */
|
|
18
|
+
maxFiles?: number;
|
|
19
|
+
/** Optional path patterns to exclude (prefix or glob-like *). e.g. "src/analytics/" or "src/analytics/*". */
|
|
20
|
+
excludePaths?: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface ChunkingResult {
|
|
23
|
+
/** Batches to review (each under token limit). */
|
|
24
|
+
batches: DiffContext[];
|
|
25
|
+
/** Files excluded by excludePaths or maxFiles. */
|
|
26
|
+
skippedFiles: DiffContextFile[];
|
|
27
|
+
/** True if more batches would have been needed but maxBatches was reached. */
|
|
28
|
+
skippedDueToBatches: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Filter and batch diff context for chunked PR review.
|
|
32
|
+
* Applies exclude paths, maxFiles, then groups files into batches under maxTokensPerBatch, capped by maxBatches.
|
|
33
|
+
*/
|
|
34
|
+
export declare function splitIntoBatches(context: DiffContext, options: ChunkingOptions): ChunkingResult;
|
|
35
|
+
//# sourceMappingURL=diff_chunking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff_chunking.d.ts","sourceRoot":"","sources":["../../src/diff_chunking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAA8B,MAAM,gBAAgB,CAAC;AAK1F;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6GAA6G;IAC7G,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kDAAkD;IAClD,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,8EAA8E;IAC9E,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAqDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CAiF/F"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PR diff chunking: token estimation, file filtering, and batching.
|
|
4
|
+
* Kept in a separate module for easier tracking and rework (e.g. if 1M-context models reduce need for chunking).
|
|
5
|
+
*
|
|
6
|
+
* Author: Sam Li
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.estimateTokens = estimateTokens;
|
|
10
|
+
exports.splitIntoBatches = splitIntoBatches;
|
|
11
|
+
const diff_context_1 = require("./diff_context");
|
|
12
|
+
/** Approximate chars per token for English/code. Used for prompt size estimation. */
|
|
13
|
+
const CHARS_PER_TOKEN = 4;
|
|
14
|
+
/**
|
|
15
|
+
* Estimate token count for a string (approximate).
|
|
16
|
+
*/
|
|
17
|
+
function estimateTokens(text) {
|
|
18
|
+
if (!text || text.length === 0)
|
|
19
|
+
return 0;
|
|
20
|
+
return Math.ceil(text.length / CHARS_PER_TOKEN);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Check if a file path matches any exclude pattern.
|
|
24
|
+
* Patterns: prefix match (e.g. "src/analytics/") or suffix "*" for prefix (e.g. "src/analytics/*").
|
|
25
|
+
*/
|
|
26
|
+
function pathMatchesExclude(filePath, excludePaths) {
|
|
27
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
28
|
+
for (const pattern of excludePaths) {
|
|
29
|
+
const p = pattern.replace(/\\/g, '/').trim();
|
|
30
|
+
if (p.endsWith('*')) {
|
|
31
|
+
const prefix = p.slice(0, -1);
|
|
32
|
+
if (normalized.startsWith(prefix) || normalized === prefix.slice(0, -1))
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
if (normalized.startsWith(p) || normalized === p)
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Compute total lines added/removed for a list of files from their hunks.
|
|
44
|
+
*/
|
|
45
|
+
function sumLinesForFiles(files) {
|
|
46
|
+
let added = 0;
|
|
47
|
+
let removed = 0;
|
|
48
|
+
for (const file of files) {
|
|
49
|
+
for (const hunk of file.hunks) {
|
|
50
|
+
const code = hunk.changedCode || '';
|
|
51
|
+
const lines = code.split('\n');
|
|
52
|
+
for (const line of lines) {
|
|
53
|
+
if (line.startsWith('+') && !line.startsWith('+++'))
|
|
54
|
+
added += 1;
|
|
55
|
+
else if (line.startsWith('-') && !line.startsWith('---'))
|
|
56
|
+
removed += 1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return { added, removed };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Build a DiffContext with the given files and same metadata as the parent context.
|
|
64
|
+
*/
|
|
65
|
+
function buildBatchContext(parent, files) {
|
|
66
|
+
const { added, removed } = sumLinesForFiles(files);
|
|
67
|
+
return {
|
|
68
|
+
...parent,
|
|
69
|
+
files,
|
|
70
|
+
totalFilesChanged: files.length,
|
|
71
|
+
totalLinesAdded: added,
|
|
72
|
+
totalLinesRemoved: removed
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Filter and batch diff context for chunked PR review.
|
|
77
|
+
* Applies exclude paths, maxFiles, then groups files into batches under maxTokensPerBatch, capped by maxBatches.
|
|
78
|
+
*/
|
|
79
|
+
function splitIntoBatches(context, options) {
|
|
80
|
+
const { maxTokensPerBatch, maxBatches, maxFiles, excludePaths } = options;
|
|
81
|
+
let files = context.files;
|
|
82
|
+
// Apply exclude paths
|
|
83
|
+
const skippedByExclude = [];
|
|
84
|
+
if (excludePaths && excludePaths.length > 0) {
|
|
85
|
+
const included = [];
|
|
86
|
+
for (const f of files) {
|
|
87
|
+
if (pathMatchesExclude(f.filePath, excludePaths)) {
|
|
88
|
+
skippedByExclude.push(f);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
included.push(f);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
files = included;
|
|
95
|
+
}
|
|
96
|
+
// Apply maxFiles
|
|
97
|
+
const skippedByMaxFiles = [];
|
|
98
|
+
if (maxFiles !== undefined && maxFiles > 0 && files.length > maxFiles) {
|
|
99
|
+
skippedByMaxFiles.push(...files.slice(maxFiles));
|
|
100
|
+
files = files.slice(0, maxFiles);
|
|
101
|
+
}
|
|
102
|
+
const allSkippedFiles = [...skippedByExclude, ...skippedByMaxFiles];
|
|
103
|
+
// No chunking: single batch if under limit
|
|
104
|
+
if (maxTokensPerBatch <= 0) {
|
|
105
|
+
const batchCtx = buildBatchContext(context, files);
|
|
106
|
+
const promptText = (0, diff_context_1.formatDiffContextForPrompt)(batchCtx);
|
|
107
|
+
const tokens = estimateTokens(promptText);
|
|
108
|
+
return {
|
|
109
|
+
batches: files.length > 0 ? [batchCtx] : [],
|
|
110
|
+
skippedFiles: allSkippedFiles,
|
|
111
|
+
skippedDueToBatches: false
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// Build batches by adding files until the next would exceed maxTokensPerBatch
|
|
115
|
+
const batches = [];
|
|
116
|
+
let currentFiles = [];
|
|
117
|
+
const promptOverhead = estimateTokens('You are reviewing a Pull Request for security vulnerabilities.\n\n## Review Instructions\n\nAnalyze ONLY the changed code...');
|
|
118
|
+
for (const file of files) {
|
|
119
|
+
const nextFiles = [...currentFiles, file];
|
|
120
|
+
const nextContext = buildBatchContext(context, nextFiles);
|
|
121
|
+
const nextPrompt = (0, diff_context_1.formatDiffContextForPrompt)(nextContext);
|
|
122
|
+
const nextTokens = estimateTokens(nextPrompt) + promptOverhead;
|
|
123
|
+
// If this single file alone exceeds the batch limit, put it in its own batch (graceful degradation)
|
|
124
|
+
if (currentFiles.length === 0 && nextTokens > maxTokensPerBatch) {
|
|
125
|
+
batches.push(buildBatchContext(context, [file]));
|
|
126
|
+
if (batches.length >= maxBatches)
|
|
127
|
+
break;
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (nextTokens > maxTokensPerBatch && currentFiles.length > 0) {
|
|
131
|
+
batches.push(buildBatchContext(context, [...currentFiles]));
|
|
132
|
+
if (batches.length >= maxBatches)
|
|
133
|
+
break;
|
|
134
|
+
currentFiles = [file];
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
currentFiles = nextFiles;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (currentFiles.length > 0 && batches.length < maxBatches) {
|
|
141
|
+
batches.push(buildBatchContext(context, currentFiles));
|
|
142
|
+
}
|
|
143
|
+
const totalFilesInBatches = batches.reduce((sum, b) => sum + b.files.length, 0);
|
|
144
|
+
const skippedDueToBatches = files.length > 0 && totalFilesInBatches < files.length;
|
|
145
|
+
return {
|
|
146
|
+
batches,
|
|
147
|
+
skippedFiles: allSkippedFiles,
|
|
148
|
+
skippedDueToBatches
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=diff_chunking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff_chunking.js","sourceRoot":"","sources":["../../src/diff_chunking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge PR review batch reports into a single output file.
|
|
3
|
+
* Kept in a separate module for easier tracking and rework.
|
|
4
|
+
*
|
|
5
|
+
* Author: Sam Li
|
|
6
|
+
*/
|
|
7
|
+
export interface MergeOptions {
|
|
8
|
+
/** Paths to batch report files in order. */
|
|
9
|
+
batchPaths: string[];
|
|
10
|
+
/** Final output file path. */
|
|
11
|
+
outputPath: string;
|
|
12
|
+
/** Output format: json, markdown, etc. */
|
|
13
|
+
format: string;
|
|
14
|
+
/** Total API cost (sum of batches) for metadata. */
|
|
15
|
+
totalCostUsd?: number;
|
|
16
|
+
/** Per-batch costs for metadata. */
|
|
17
|
+
batchCosts?: number[];
|
|
18
|
+
/** File paths that were skipped (for "Skipped" section). */
|
|
19
|
+
skippedFilePaths?: string[];
|
|
20
|
+
/** Human-readable message for skipped section (e.g. batch limit or size). */
|
|
21
|
+
skippedMessage?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Merge batch report files into a single output file.
|
|
25
|
+
* Format-specific: JSON (merge findings arrays + meta), Markdown (concat with batch headers + Skipped + cost).
|
|
26
|
+
*/
|
|
27
|
+
export declare function mergeBatchReports(options: MergeOptions): void;
|
|
28
|
+
//# sourceMappingURL=diff_report_merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff_report_merge.d.ts","sourceRoot":"","sources":["../../src/diff_report_merge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAmGD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAkC7D"}
|