appsec-agent 2.8.0 → 3.0.1
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 +0 -18
- package/dist/bin/agent-run.js +14 -17
- package/dist/bin/agent-run.js.map +1 -1
- package/dist/src/__tests__/mocks/codex_sdk.d.ts +53 -0
- package/dist/src/__tests__/mocks/codex_sdk.d.ts.map +1 -0
- package/dist/src/__tests__/mocks/codex_sdk.js +8 -0
- package/dist/src/__tests__/mocks/codex_sdk.js.map +1 -0
- package/dist/src/agent_actions.d.ts +1 -1
- package/dist/src/agent_actions.d.ts.map +1 -1
- package/dist/src/agent_actions.js +41 -27
- package/dist/src/agent_actions.js.map +1 -1
- package/dist/src/agent_options.d.ts +17 -93
- package/dist/src/agent_options.d.ts.map +1 -1
- package/dist/src/agent_options.js +191 -310
- package/dist/src/agent_options.js.map +1 -1
- package/dist/src/llm_query.d.ts +4 -43
- package/dist/src/llm_query.d.ts.map +1 -1
- package/dist/src/llm_query.js +4 -145
- package/dist/src/llm_query.js.map +1 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +1 -7
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp_internal.d.ts +13 -0
- package/dist/src/mcp_internal.d.ts.map +1 -0
- package/dist/src/mcp_internal.js +34 -0
- package/dist/src/mcp_internal.js.map +1 -0
- package/dist/src/providers/claude_provider.d.ts +18 -0
- package/dist/src/providers/claude_provider.d.ts.map +1 -0
- package/dist/src/providers/claude_provider.js +27 -0
- package/dist/src/providers/claude_provider.js.map +1 -0
- package/dist/src/providers/claude_role_spec.d.ts +10 -0
- package/dist/src/providers/claude_role_spec.d.ts.map +1 -0
- package/dist/src/providers/claude_role_spec.js +85 -0
- package/dist/src/providers/claude_role_spec.js.map +1 -0
- package/dist/src/providers/codex_model.d.ts +12 -0
- package/dist/src/providers/codex_model.d.ts.map +1 -0
- package/dist/src/providers/codex_model.js +45 -0
- package/dist/src/providers/codex_model.js.map +1 -0
- package/dist/src/providers/codex_provider.d.ts +30 -0
- package/dist/src/providers/codex_provider.d.ts.map +1 -0
- package/dist/src/providers/codex_provider.js +170 -0
- package/dist/src/providers/codex_provider.js.map +1 -0
- package/dist/src/providers/codex_role_spec.d.ts +16 -0
- package/dist/src/providers/codex_role_spec.d.ts.map +1 -0
- package/dist/src/providers/codex_role_spec.js +63 -0
- package/dist/src/providers/codex_role_spec.js.map +1 -0
- package/dist/src/providers/query_message.d.ts +45 -0
- package/dist/src/providers/query_message.d.ts.map +1 -0
- package/dist/src/providers/query_message.js +8 -0
- package/dist/src/providers/query_message.js.map +1 -0
- package/dist/src/providers/resolve_provider.d.ts +10 -0
- package/dist/src/providers/resolve_provider.d.ts.map +1 -0
- package/dist/src/providers/resolve_provider.js +29 -0
- package/dist/src/providers/resolve_provider.js.map +1 -0
- package/dist/src/providers/role_spec.d.ts +39 -0
- package/dist/src/providers/role_spec.d.ts.map +1 -0
- package/dist/src/providers/role_spec.js +8 -0
- package/dist/src/providers/role_spec.js.map +1 -0
- package/dist/src/providers/structured_output.d.ts +21 -0
- package/dist/src/providers/structured_output.d.ts.map +1 -0
- package/dist/src/providers/structured_output.js +61 -0
- package/dist/src/providers/structured_output.js.map +1 -0
- package/dist/src/providers/types.d.ts +18 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +15 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/openai_tools.d.ts +0 -26
- package/dist/src/openai_tools.d.ts.map +0 -1
- package/dist/src/openai_tools.js +0 -194
- package/dist/src/openai_tools.js.map +0 -1
|
@@ -5,52 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Options, CanUseTool } from '@anthropic-ai/claude-agent-sdk';
|
|
7
7
|
import { ConfigDict } from './utils';
|
|
8
|
+
import type { RoleSpec } from './providers/role_spec';
|
|
9
|
+
import { DEFAULT_MCP_SERVER_NAME, MCP_INTERNAL_SERVER_NAME, MCP_INTERNAL_TOOL_NAMES, buildMcpInternalToolNames } from './mcp_internal';
|
|
10
|
+
export { DEFAULT_MCP_SERVER_NAME, MCP_INTERNAL_SERVER_NAME, MCP_INTERNAL_TOOL_NAMES, buildMcpInternalToolNames, };
|
|
8
11
|
export interface ToolUsageLog {
|
|
9
12
|
tool: string;
|
|
10
13
|
input: any;
|
|
11
14
|
suggestions: string;
|
|
12
15
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Default identifier the agent uses to register a parent-app-managed MCP
|
|
15
|
-
* server with the Claude Agent SDK. The resulting tool names exposed to
|
|
16
|
-
* the LLM follow the SDK convention `mcp__<server>__<tool>`, so this
|
|
17
|
-
* value becomes the literal prefix the model sees on its tool list.
|
|
18
|
-
*
|
|
19
|
-
* The default is intentionally generic (`appsec-internal`) so the
|
|
20
|
-
* `appsec-agent` package is reusable across parent apps. Callers that
|
|
21
|
-
* need a different identifier — e.g. to keep an existing prompt-nudge or
|
|
22
|
-
* counter contract stable — pass `--mcp-server-name <name>` on the CLI
|
|
23
|
-
* (or `mcpServerName` to the role builders directly), and the override
|
|
24
|
-
* threads through to both `Options.mcpServers[<name>]` and the namespaced
|
|
25
|
-
* tool names in the subagent whitelist.
|
|
26
|
-
*/
|
|
27
|
-
export declare const DEFAULT_MCP_SERVER_NAME = "appsec-internal";
|
|
28
|
-
/**
|
|
29
|
-
* @deprecated since v2.4.2 — historical alias for the default server name.
|
|
30
|
-
* Kept exported so existing imports keep type-checking; new code should
|
|
31
|
-
* read `DEFAULT_MCP_SERVER_NAME` (and pass an override via
|
|
32
|
-
* `mcpServerName` when a specific identifier is required).
|
|
33
|
-
*/
|
|
34
|
-
export declare const MCP_INTERNAL_SERVER_NAME = "appsec-internal";
|
|
35
|
-
/**
|
|
36
|
-
* Tools exposed by the per-scan in-process MCP server the parent app
|
|
37
|
-
* stands up. Pinned at this set (`queryFindingsHistory`,
|
|
38
|
-
* `queryImportGraph`, `queryRuntimeEnrichment`, `queryCodebaseGraph`) so
|
|
39
|
-
* the agent's tool whitelist is deterministic at the current version;
|
|
40
|
-
* parent apps that expose a different surface should fork or extend this
|
|
41
|
-
* list rather than rely on dynamic discovery (the SDK would otherwise have
|
|
42
|
-
* to round-trip the server before constructing the whitelist).
|
|
43
|
-
*/
|
|
44
|
-
export declare const MCP_INTERNAL_TOOL_NAMES: readonly ["queryFindingsHistory", "queryImportGraph", "queryRuntimeEnrichment", "queryCodebaseGraph"];
|
|
45
|
-
/**
|
|
46
|
-
* SDK-namespaced tool names the LLM sees on its tool list when the server
|
|
47
|
-
* is wired up. Exposed as a helper rather than a constant so callers in
|
|
48
|
-
* `agent_options.ts` and the test suite share one source of truth.
|
|
49
|
-
*
|
|
50
|
-
* @param serverName - Override for the MCP server identifier. Defaults
|
|
51
|
-
* to `DEFAULT_MCP_SERVER_NAME` (`appsec-internal`).
|
|
52
|
-
*/
|
|
53
|
-
export declare function buildMcpInternalToolNames(serverName?: string): string[];
|
|
54
16
|
/**
|
|
55
17
|
* System-prompt suffix for `pr_reviewer` / `code_reviewer` when
|
|
56
18
|
* `--mcp-server-url` is set. Steers the model toward all live parent-app
|
|
@@ -90,6 +52,7 @@ export declare class AgentOptions {
|
|
|
90
52
|
/**
|
|
91
53
|
* Get options for simple query agent
|
|
92
54
|
*/
|
|
55
|
+
getSimpleQueryAgentRoleSpec(role?: string, srcDir?: string | null): RoleSpec;
|
|
93
56
|
getSimpleQueryAgentOptions(role?: string, srcDir?: string | null): Options;
|
|
94
57
|
/**
|
|
95
58
|
* Get options for security code reviewer
|
|
@@ -110,7 +73,12 @@ export declare class AgentOptions {
|
|
|
110
73
|
* @param mcpServerName - Override for the MCP server identifier
|
|
111
74
|
* @param mcpServerBearer - Bearer token for MCP HTTP requests
|
|
112
75
|
*/
|
|
76
|
+
getCodeReviewerRoleSpec(role?: string, outputFormat?: string, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string, workingDirectory?: string): RoleSpec;
|
|
113
77
|
getCodeReviewerOptions(role?: string, outputFormat?: string, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): Options;
|
|
78
|
+
/**
|
|
79
|
+
* Provider-neutral spec for threat modeler (Phase 3 RoleSpec spike).
|
|
80
|
+
*/
|
|
81
|
+
getThreatModelerRoleSpec(role?: string, outputFormat?: string, workingDirectory?: string): RoleSpec;
|
|
114
82
|
/**
|
|
115
83
|
* Get options for threat modeler
|
|
116
84
|
* @param role - The role configuration key
|
|
@@ -125,65 +93,21 @@ export declare class AgentOptions {
|
|
|
125
93
|
* @param srcDir - Optional source directory path
|
|
126
94
|
* @param outputFormat - Output format (json, markdown, etc.)
|
|
127
95
|
*/
|
|
96
|
+
getDiffReviewerRoleSpec(role?: string, srcDir?: string | null, outputFormat?: string, maxTurns?: number, noTools?: boolean, experimentEnabled?: boolean, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): RoleSpec;
|
|
128
97
|
getDiffReviewerOptions(role?: string, srcDir?: string | null, outputFormat?: string, maxTurns?: number, noTools?: boolean, experimentEnabled?: boolean, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): Options;
|
|
129
|
-
|
|
130
|
-
* Get options for code fixer agent
|
|
131
|
-
* Uses structured JSON output to guarantee a well-formed fix response.
|
|
132
|
-
* Has Read and Grep tools to explore the source directory for additional context.
|
|
133
|
-
* @param role - The role configuration key
|
|
134
|
-
* @param srcDir - Optional source directory path for additional context
|
|
135
|
-
*/
|
|
98
|
+
getCodeFixerRoleSpec(role?: string, srcDir?: string | null, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): RoleSpec;
|
|
136
99
|
getCodeFixerOptions(role?: string, srcDir?: string | null, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): Options;
|
|
137
|
-
|
|
138
|
-
* Get options for the QA verifier agent
|
|
139
|
-
* Uses Read, Grep, and Bash tools for test execution and analysis
|
|
140
|
-
*/
|
|
100
|
+
getQaVerifierRoleSpec(role?: string, srcDir?: string | null): RoleSpec;
|
|
141
101
|
getQaVerifierOptions(role?: string, srcDir?: string | null): Options;
|
|
142
|
-
|
|
143
|
-
* Get options for the finding validator agent
|
|
144
|
-
* Uses Read and Grep tools (read-only) to analyze code for vulnerability presence.
|
|
145
|
-
*/
|
|
102
|
+
getContextExtractorRoleSpec(role?: string): RoleSpec;
|
|
146
103
|
getContextExtractorOptions(role?: string): Options;
|
|
104
|
+
getFindingValidatorRoleSpec(role?: string, srcDir?: string | null, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): RoleSpec;
|
|
147
105
|
getFindingValidatorOptions(role?: string, srcDir?: string | null, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): Options;
|
|
148
|
-
|
|
149
|
-
* learned_guidance_synthesizer (v2.5.0 / parent-app plan §3.8): pure-transform
|
|
150
|
-
* role that condenses bucketed dismissal/outcome/feedback signals into a short
|
|
151
|
-
* list of class-level policy bullets the pr_reviewer reads next scan.
|
|
152
|
-
*
|
|
153
|
-
* Tools: NONE — the agent must work from the provided buckets only. No
|
|
154
|
-
* source-tree access, no MCP server. The parent app's `runSynthesizerAgent`
|
|
155
|
-
* spawns this from a temp working directory anyway, so even if a tool were
|
|
156
|
-
* attached it would have nothing to read.
|
|
157
|
-
*
|
|
158
|
-
* Output schema (LEARNED_GUIDANCE_OUTPUT_SCHEMA):
|
|
159
|
-
* { bullets: [{ cwe, bullet (≤300 chars), confidence (0..1) }] }
|
|
160
|
-
*
|
|
161
|
-
* Confidence floor and active-bullet cap are enforced by the parent app
|
|
162
|
-
* (`MIN_CONFIDENCE = 0.6`, `MAX_ACTIVE_BULLETS_PER_PROJECT = 12`); this
|
|
163
|
-
* role is allowed to return up to 50 bullets and the parent ranks +
|
|
164
|
-
* truncates.
|
|
165
|
-
*/
|
|
106
|
+
getLearnedGuidanceSynthesizerRoleSpec(role?: string): RoleSpec;
|
|
166
107
|
getLearnedGuidanceSynthesizerOptions(role?: string): Options;
|
|
167
|
-
|
|
168
|
-
* pr_adversary: second pass that filters pr_reviewer findings using failure-path skepticism.
|
|
169
|
-
* Output: same SECURITY_REPORT_SCHEMA with only surviving findings.
|
|
170
|
-
*/
|
|
108
|
+
getPrAdversaryRoleSpec(role?: string, srcDir?: string | null, maxTurns?: number, experimentEnabled?: boolean, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): RoleSpec;
|
|
171
109
|
getPrAdversaryOptions(role?: string, srcDir?: string | null, maxTurns?: number, experimentEnabled?: boolean, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): Options;
|
|
172
|
-
|
|
173
|
-
* fp_adversary (v2.8.0 / parent app full-repo Phase 2.5): second pass that
|
|
174
|
-
* filters first-pass `code_reviewer` findings on full-repo scans by emitting
|
|
175
|
-
* per-finding `(fingerprint, verdict, confidence, rationale)` verdicts. Output
|
|
176
|
-
* is constrained to FP_ADVERSARY_REPORT_SCHEMA so the verdict contract stays
|
|
177
|
-
* model-independent across Claude upgrades.
|
|
178
|
-
*
|
|
179
|
-
* Differences from `getPrAdversaryOptions`:
|
|
180
|
-
* - Output schema is the dedicated `fp_adversary_report` (not
|
|
181
|
-
* SECURITY_REPORT_SCHEMA) — verdicts round-trip on `fingerprint`, not `id`.
|
|
182
|
-
* - No `experiment_enabled` plumbing (Lane-2 deliberately omits A/B per M4).
|
|
183
|
-
* - System prompt references the four structured posture fields and
|
|
184
|
-
* `similar_dismissed` precedent that the parent app threads in via
|
|
185
|
-
* `--adversarial-context`.
|
|
186
|
-
*/
|
|
110
|
+
getFpAdversaryRoleSpec(role?: string, srcDir?: string | null, maxTurns?: number, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): RoleSpec;
|
|
187
111
|
getFpAdversaryOptions(role?: string, srcDir?: string | null, maxTurns?: number, mcpServerUrl?: string, mcpServerName?: string, mcpServerBearer?: string): Options;
|
|
188
112
|
}
|
|
189
113
|
//# sourceMappingURL=agent_options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_options.d.ts","sourceRoot":"","sources":["../../src/agent_options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAqC,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent_options.d.ts","sourceRoot":"","sources":["../../src/agent_options.ts"],"names":[],"mappings":"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"}
|