appsec-agent 0.0.2 → 0.0.3
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/conf/appsec_agent.yaml +1 -1
- package/dist/agent_actions.d.ts +1 -0
- package/dist/agent_actions.d.ts.map +1 -1
- package/dist/agent_actions.js +109 -34
- package/dist/agent_actions.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -6
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/conf/appsec_agent.yaml
CHANGED
|
@@ -7,7 +7,7 @@ default: &default
|
|
|
7
7
|
simple_query_agent:
|
|
8
8
|
options:
|
|
9
9
|
system_prompt: "You are an AppSec expert assistant. You are responsible for providing security advice and guidance to the user."
|
|
10
|
-
max_turns:
|
|
10
|
+
max_turns: 100
|
|
11
11
|
output_format: "stdout"
|
|
12
12
|
verbose: True
|
|
13
13
|
code_reviewer:
|
package/dist/agent_actions.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_actions.d.ts","sourceRoot":"","sources":["../src/agent_actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,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;CACnB;
|
|
1
|
+
{"version":3,"file":"agent_actions.d.ts","sourceRoot":"","sources":["../src/agent_actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,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;CACnB;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,mBAAmB,CAA2B;gBAE1C,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAMtE;;OAEG;IACG,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqNvE;;OAEG;IACG,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BlE;;OAEG;IACG,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BzE"}
|
package/dist/agent_actions.js
CHANGED
|
@@ -12,6 +12,7 @@ class AgentActions {
|
|
|
12
12
|
confDict;
|
|
13
13
|
environment;
|
|
14
14
|
args;
|
|
15
|
+
conversationHistory = []; // Store conversation history for simple_query_agent
|
|
15
16
|
constructor(confDict, environment, args) {
|
|
16
17
|
this.confDict = confDict;
|
|
17
18
|
this.environment = environment;
|
|
@@ -23,12 +24,32 @@ class AgentActions {
|
|
|
23
24
|
async simpleQueryClaudeWithOptions(yourPrompt) {
|
|
24
25
|
const agentOptions = new agent_options_1.AgentOptions(this.confDict, this.environment);
|
|
25
26
|
const options = agentOptions.getSimpleQueryAgentOptions(this.args.role);
|
|
27
|
+
// Build prompt with conversation history
|
|
28
|
+
let fullPrompt;
|
|
29
|
+
if (this.conversationHistory.length > 0) {
|
|
30
|
+
// Include previous conversation context
|
|
31
|
+
let contextPrompt = 'Previous conversation:\n';
|
|
32
|
+
for (const entry of this.conversationHistory) {
|
|
33
|
+
if (entry.role === 'user') {
|
|
34
|
+
contextPrompt += `User: ${entry.content}\n`;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
contextPrompt += `Assistant: ${entry.content}\n`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
fullPrompt = `${contextPrompt}\nUser: ${yourPrompt}`;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
fullPrompt = yourPrompt;
|
|
44
|
+
}
|
|
26
45
|
try {
|
|
27
46
|
let accumulatedText = '';
|
|
28
47
|
let hasPrintedHeader = false;
|
|
29
48
|
let hasSeenStreamEvents = false;
|
|
30
49
|
let messageCount = 0;
|
|
31
|
-
|
|
50
|
+
let assistantResponseText = '';
|
|
51
|
+
let finalResult = null;
|
|
52
|
+
for await (const msg of (0, claude_agent_sdk_1.query)({ prompt: fullPrompt, options })) {
|
|
32
53
|
messageCount++;
|
|
33
54
|
// Debug logging (remove in production)
|
|
34
55
|
if (this.args.verbose) {
|
|
@@ -48,6 +69,7 @@ class AgentActions {
|
|
|
48
69
|
}
|
|
49
70
|
// Accumulate and write streaming deltas directly
|
|
50
71
|
accumulatedText += deltaText;
|
|
72
|
+
assistantResponseText += deltaText;
|
|
51
73
|
process.stdout.write(deltaText);
|
|
52
74
|
}
|
|
53
75
|
}
|
|
@@ -58,53 +80,80 @@ class AgentActions {
|
|
|
58
80
|
console.log(`\nClaude:\n`);
|
|
59
81
|
hasPrintedHeader = true;
|
|
60
82
|
}
|
|
61
|
-
//
|
|
62
|
-
|
|
83
|
+
// Don't reset accumulatedText here - we want to accumulate ALL text across all blocks
|
|
84
|
+
// Only reset if this is truly a new message (but we can't tell that here)
|
|
85
|
+
// Actually, we should keep accumulating to get the full response
|
|
63
86
|
}
|
|
64
|
-
// Handle message stop (
|
|
87
|
+
// Handle message stop (one message/turn is complete, but stream may continue)
|
|
65
88
|
else if (streamMsg.event?.type === 'message_stop') {
|
|
66
|
-
//
|
|
89
|
+
// One message is complete, but the stream may continue with more messages
|
|
90
|
+
// (e.g., after tools execute). Don't treat this as stream end.
|
|
67
91
|
if (hasPrintedHeader && accumulatedText) {
|
|
68
|
-
//
|
|
92
|
+
// This message is done, but more may come
|
|
69
93
|
}
|
|
70
94
|
}
|
|
95
|
+
// Handle other stream event types we might not be handling
|
|
96
|
+
else if (this.args.verbose) {
|
|
97
|
+
console.error(`[DEBUG] Unhandled stream event type: ${streamMsg.event?.type}`);
|
|
98
|
+
}
|
|
71
99
|
}
|
|
72
100
|
// Handle assistant messages (complete messages) - only use if no stream events
|
|
73
101
|
// Note: If we've seen stream events, the content was already printed incrementally
|
|
74
|
-
|
|
102
|
+
// BUT: When tools are used, there may be more assistant messages after tools complete
|
|
103
|
+
// So we need to handle both cases
|
|
104
|
+
else if (msg.type === 'assistant') {
|
|
75
105
|
const assistantMsg = msg;
|
|
76
106
|
if (assistantMsg.message.content) {
|
|
77
107
|
for (const block of assistantMsg.message.content) {
|
|
78
108
|
if (block.type === 'text') {
|
|
79
109
|
const currentText = block.text || '';
|
|
80
|
-
if (currentText.length > 0
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
hasPrintedHeader
|
|
110
|
+
if (currentText && currentText.length > 0) {
|
|
111
|
+
// If we haven't seen stream events, print the complete message
|
|
112
|
+
if (!hasSeenStreamEvents) {
|
|
113
|
+
if (!hasPrintedHeader) {
|
|
114
|
+
console.log(`\nClaude:\n`);
|
|
115
|
+
hasPrintedHeader = true;
|
|
116
|
+
}
|
|
117
|
+
console.log(currentText);
|
|
118
|
+
accumulatedText = currentText;
|
|
119
|
+
assistantResponseText = currentText;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// If we've seen stream events, this might be additional content after tools
|
|
123
|
+
// Check if this is new content not already accumulated
|
|
124
|
+
if (!currentText.startsWith(accumulatedText) && currentText !== accumulatedText) {
|
|
125
|
+
// This is additional content (e.g., after tools complete)
|
|
126
|
+
const newText = currentText.slice(accumulatedText.length);
|
|
127
|
+
if (newText) {
|
|
128
|
+
process.stdout.write(newText);
|
|
129
|
+
accumulatedText = currentText;
|
|
130
|
+
assistantResponseText = currentText;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (currentText.length > accumulatedText.length) {
|
|
134
|
+
// More content than we've accumulated
|
|
135
|
+
const newText = currentText.slice(accumulatedText.length);
|
|
136
|
+
if (newText) {
|
|
137
|
+
process.stdout.write(newText);
|
|
138
|
+
accumulatedText = currentText;
|
|
139
|
+
assistantResponseText = currentText;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
84
142
|
}
|
|
85
|
-
// Print the complete text only if it's different from what we've accumulated
|
|
86
|
-
console.log(currentText);
|
|
87
|
-
accumulatedText = currentText;
|
|
88
143
|
}
|
|
89
144
|
}
|
|
90
145
|
}
|
|
91
146
|
}
|
|
92
147
|
}
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (this.args.verbose) {
|
|
97
|
-
console.error(`[DEBUG] Skipping assistant message (already printed via stream events)`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
// Handle result messages
|
|
148
|
+
// Handle result messages - collect but don't display until stream completes
|
|
149
|
+
// IMPORTANT: The stream may continue after a result message if tools are being used
|
|
150
|
+
// We must continue processing until the stream is truly exhausted
|
|
101
151
|
else if (msg.type === 'result') {
|
|
102
152
|
const resultMsg = msg;
|
|
103
|
-
//
|
|
104
|
-
if
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// Check for errors in result messages
|
|
153
|
+
// Always update finalResult with the latest result message
|
|
154
|
+
// (there may be multiple result messages if tools are used)
|
|
155
|
+
finalResult = resultMsg;
|
|
156
|
+
// Check for errors in result messages - display errors immediately
|
|
108
157
|
if (resultMsg.is_error) {
|
|
109
158
|
const errorMsg = resultMsg.errors?.[0] || resultMsg.error_message || 'Unknown error occurred';
|
|
110
159
|
console.error(`\nError: ${errorMsg}`);
|
|
@@ -117,12 +166,10 @@ class AgentActions {
|
|
|
117
166
|
console.error(`To allow the agent to use tools and continue, increase max_turns in the configuration or use the code_reviewer role.`);
|
|
118
167
|
}
|
|
119
168
|
}
|
|
120
|
-
|
|
121
|
-
console.log(`\nCost: $${resultMsg.total_cost_usd.toFixed(4)}`);
|
|
122
|
-
}
|
|
123
|
-
// Debug: log turn count
|
|
169
|
+
// Debug: log turn count and continue processing (stream may not be done yet)
|
|
124
170
|
if (this.args.verbose) {
|
|
125
171
|
console.error(`[DEBUG] Result: num_turns=${resultMsg.num_turns}, is_error=${resultMsg.is_error}`);
|
|
172
|
+
console.error(`[DEBUG] Continuing to process stream (may have more messages after tools)`);
|
|
126
173
|
}
|
|
127
174
|
}
|
|
128
175
|
// Handle tool progress messages (agent might be using tools)
|
|
@@ -133,20 +180,48 @@ class AgentActions {
|
|
|
133
180
|
console.log(`[Tool Progress] ${toolMsg.tool_name}: ${toolMsg.elapsed_time_seconds}s`);
|
|
134
181
|
}
|
|
135
182
|
}
|
|
136
|
-
// Log other message types
|
|
137
|
-
else
|
|
138
|
-
|
|
183
|
+
// Log other message types - always log to help debug issues
|
|
184
|
+
else {
|
|
185
|
+
// Unknown message type - log it to help debug
|
|
186
|
+
if (this.args.verbose) {
|
|
187
|
+
console.error(`[DEBUG] Received unknown message type: ${msg.type}`);
|
|
188
|
+
console.error(`[DEBUG] Message content:`, JSON.stringify(msg, null, 2));
|
|
189
|
+
}
|
|
139
190
|
}
|
|
140
191
|
}
|
|
141
192
|
// Debug: log total messages processed
|
|
142
193
|
if (this.args.verbose) {
|
|
143
194
|
console.error(`[DEBUG] Total messages processed: ${messageCount}`);
|
|
144
195
|
}
|
|
196
|
+
// Now that the stream is complete, ensure all stdout writes are flushed
|
|
197
|
+
// Use multiple setImmediate calls to ensure the event loop processes all pending writes
|
|
198
|
+
// This is critical when using process.stdout.write() for streaming
|
|
199
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
200
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
201
|
+
// Now that the stream is complete, display the final result (cost, etc.)
|
|
202
|
+
if (finalResult) {
|
|
203
|
+
// Ensure we flush any partial output and add newline
|
|
204
|
+
if (hasPrintedHeader) {
|
|
205
|
+
console.log(); // New line after final output
|
|
206
|
+
}
|
|
207
|
+
// Display cost only after stream is completely done
|
|
208
|
+
if (!finalResult.is_error && finalResult.total_cost_usd && finalResult.total_cost_usd > 0) {
|
|
209
|
+
console.log(`\nCost: $${finalResult.total_cost_usd.toFixed(4)}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// One more flush to ensure cost is written before returning
|
|
213
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
214
|
+
// Store the current exchange in conversation history
|
|
215
|
+
this.conversationHistory.push({ role: 'user', content: yourPrompt });
|
|
216
|
+
if (assistantResponseText) {
|
|
217
|
+
this.conversationHistory.push({ role: 'assistant', content: assistantResponseText });
|
|
218
|
+
}
|
|
145
219
|
}
|
|
146
220
|
catch (error) {
|
|
147
221
|
console.error('Error during query:', error);
|
|
148
222
|
throw error;
|
|
149
223
|
}
|
|
224
|
+
// Add newline for spacing after response (matching Python version)
|
|
150
225
|
console.log();
|
|
151
226
|
return '';
|
|
152
227
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_actions.js","sourceRoot":"","sources":["../src/agent_actions.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qEAA8F;AAC9F,mDAA+C;
|
|
1
|
+
{"version":3,"file":"agent_actions.js","sourceRoot":"","sources":["../src/agent_actions.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAgB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1D,wBAAsB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAgB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1D,wBAAsB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFxE"}
|
package/dist/main.js
CHANGED
|
@@ -46,18 +46,38 @@ async function main(confDict, args) {
|
|
|
46
46
|
const agentActions = new agent_actions_1.AgentActions(confDict, args.environment, args);
|
|
47
47
|
if (args.role === 'simple_query_agent') {
|
|
48
48
|
console.log('Running Simple Query Agent');
|
|
49
|
+
console.log("(Type '/end' to exit the conversation)\n");
|
|
49
50
|
const readline = require('readline');
|
|
50
51
|
const rl = readline.createInterface({
|
|
51
52
|
input: process.stdin,
|
|
52
53
|
output: process.stdout
|
|
53
54
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
// Continuous conversation loop
|
|
56
|
+
while (true) {
|
|
57
|
+
// Wait for Claude's response to complete before showing next prompt
|
|
58
|
+
const yourPrompt = await new Promise((resolve) => {
|
|
59
|
+
rl.question("Your turn (enter '/end' to exit the conversation): ", (answer) => {
|
|
60
|
+
resolve(answer);
|
|
61
|
+
});
|
|
58
62
|
});
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
// Check for exit command
|
|
64
|
+
if (yourPrompt.trim().toLowerCase() === '/end') {
|
|
65
|
+
console.log('\nExiting Simple Query Agent. Goodbye!');
|
|
66
|
+
rl.close();
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
// Skip empty prompts
|
|
70
|
+
if (!yourPrompt.trim()) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
// Process the query and wait for complete response
|
|
74
|
+
// The method will add proper spacing after the response completes
|
|
75
|
+
await agentActions.simpleQueryClaudeWithOptions(yourPrompt);
|
|
76
|
+
// Ensure stdout is fully flushed and event loop processes all writes
|
|
77
|
+
// before showing next prompt. This prevents the prompt from appearing
|
|
78
|
+
// before streaming output completes.
|
|
79
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
80
|
+
}
|
|
61
81
|
}
|
|
62
82
|
else if (args.role === 'code_reviewer') {
|
|
63
83
|
console.log('Running Code Review Agent');
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|