appsec-agent 0.1.2 → 0.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # AppSec Agent (TypeScript)
2
2
 
3
- A TypeScript package that provides AI-powered agents for Application Security (AppSec) tasks, built on top of the Claude Agent SDK. This is a TypeScript reimplementation of the Python AppSec AI Agent toolkit that helps automate mundane security operations and streamline AppSec workflows.
3
+ A TypeScript package that provides AI-powered agents for Application Security (AppSec) tasks, built on top of the Claude Agent SDK. It helps automate mundane application security operations and streamline workflows.
4
4
 
5
5
  **📦 Available on npm**: Install with `npm install appsec-agent`
6
6
 
@@ -37,7 +37,7 @@ A TypeScript package that provides AI-powered agents for Application Security (A
37
37
  - Anthropic API key
38
38
 
39
39
  ### Step 1: Install Claude Code
40
- Our agent toolkit is built on top of Claude Agent SDK (v0.1.58). And the Claude Agent SDK is built on top of Claude Code. So in order to install our toolkit, you would need to start with Claude Code. You may want to install it in the global user space:
40
+ Our agent toolkit is built on top of Claude Agent SDK (v0.1.58), which in turn is built on top of Claude Code. To install our toolkit, you need to start with Claude Code. You may want to install it in the global user space:
41
41
 
42
42
  ```bash
43
43
  $ npm install -g @anthropic-ai/claude-code@2.0.58
@@ -182,8 +182,7 @@ This package is designed to be thread-safe for use in web applications where mul
182
182
  1. **Create New Instances Per Request**: Always create a new `AgentActions` instance for each HTTP request:
183
183
 
184
184
  ```typescript
185
- import { AgentActions, AgentArgs } from 'appsec-agent';
186
- import { loadYaml } from 'appsec-agent';
185
+ import { AgentActions, AgentArgs, loadYaml } from 'appsec-agent';
187
186
 
188
187
  app.post('/api/query', async (req, res) => {
189
188
  const confDict = loadYaml('conf/appsec_agent.yaml');
@@ -252,7 +251,8 @@ appsec-agent/
252
251
  │ ├── concurrency.test.ts # Concurrency and thread-safety tests
253
252
  │ └── ... # Other test files
254
253
  ├── bin/
255
- └── agent-run # Main CLI script
254
+ ├── agent-run.js # Main CLI script (compiled)
255
+ │ └── agent-run.ts # Main CLI script (source)
256
256
  ├── conf/
257
257
  │ └── appsec_agent.yaml # General configuration file
258
258
  ├── package.json
@@ -12,9 +12,9 @@ default: &default
12
12
  verbose: True
13
13
  code_reviewer:
14
14
  options:
15
- system_prompt: "You are an Application Security (AppSec) expert assistant. You are responsible for performing a thorough code review. List out all the potential security and privacy issues found in the code. Then provide security and privacy advice and guidance in the code review report."
16
- output_format: "markdown"
17
- verbose: True
15
+ system_prompt: "You are an Application Security (AppSec) expert assistant. You are responsible for performing a thorough code review. List out all the potential security issues found in the code. Provide affected code snippet and security advice and guidance in the code review report."
16
+ output_format: "markdown"
17
+ verbose: True
18
18
  threat_modeler:
19
19
  options:
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."
@@ -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;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,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IA4N/F;;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"}
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;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;CACnB;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;CA6DzE"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.AgentActions = void 0;
9
9
  const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
10
10
  const agent_options_1 = require("./agent_options");
11
+ const blinking_cursor_1 = require("./blinking_cursor");
11
12
  class AgentActions {
12
13
  confDict;
13
14
  environment;
@@ -25,208 +26,139 @@ class AgentActions {
25
26
  const agentOptions = new agent_options_1.AgentOptions(this.confDict, this.environment);
26
27
  const options = agentOptions.getSimpleQueryAgentOptions(this.args.role, srcDir);
27
28
  // Build prompt with conversation history and source directory context
29
+ const sourceDirContext = srcDir
30
+ ? `\n\nContext: There is a source code directory available at ${srcDir}. You can search and read files within this directory to answer questions. The directory is located in the current working directory.\n`
31
+ : '';
28
32
  let fullPrompt;
29
- let sourceDirContext = '';
30
- // Add source directory context if provided
31
- if (srcDir) {
32
- sourceDirContext = `\n\nContext: There is a source code directory available at ${srcDir}. You can search and read files within this directory to answer questions. The directory is located in the current working directory.\n`;
33
- }
34
33
  if (this.conversationHistory.length > 0) {
35
- // Include previous conversation context
36
- let contextPrompt = 'Previous conversation:\n';
37
- for (const entry of this.conversationHistory) {
38
- if (entry.role === 'user') {
39
- contextPrompt += `User: ${entry.content}\n`;
40
- }
41
- else {
42
- contextPrompt += `Assistant: ${entry.content}\n`;
43
- }
44
- }
45
- fullPrompt = `${contextPrompt}${sourceDirContext}User: ${yourPrompt}`;
34
+ const contextPrompt = this.conversationHistory
35
+ .map(entry => `${entry.role === 'user' ? 'User' : 'Assistant'}: ${entry.content}`)
36
+ .join('\n');
37
+ fullPrompt = `Previous conversation:\n${contextPrompt}${sourceDirContext}User: ${yourPrompt}`;
46
38
  }
47
39
  else {
48
40
  fullPrompt = `${sourceDirContext}${yourPrompt}`;
49
41
  }
42
+ const cursor = new blinking_cursor_1.BlinkingCursor();
43
+ let cursorStopped = false;
44
+ const stopCursor = () => {
45
+ if (!cursorStopped) {
46
+ cursor.stop();
47
+ cursorStopped = true;
48
+ }
49
+ };
50
+ let accumulatedText = '';
51
+ let hasPrintedHeader = false;
52
+ let hasSeenStreamEvents = false;
53
+ let assistantResponseText = '';
54
+ let finalResult = null;
55
+ const printHeader = () => {
56
+ if (!hasPrintedHeader) {
57
+ console.log(`\nClaude:\n`);
58
+ hasPrintedHeader = true;
59
+ }
60
+ };
50
61
  try {
51
- let accumulatedText = '';
52
- let hasPrintedHeader = false;
53
- let hasSeenStreamEvents = false;
54
- let messageCount = 0;
55
- let assistantResponseText = '';
56
- let finalResult = null;
62
+ cursor.start();
57
63
  for await (const msg of (0, claude_agent_sdk_1.query)({ prompt: fullPrompt, options })) {
58
- messageCount++;
59
- // Debug logging (remove in production)
60
64
  if (this.args.verbose) {
61
- console.error(`[DEBUG] Message #${messageCount}: type=${msg.type}`);
65
+ console.error(`[DEBUG] Message type: ${msg.type}`);
62
66
  }
63
- // Handle stream events (streaming deltas) - these come first
64
67
  if (msg.type === 'stream_event') {
65
68
  hasSeenStreamEvents = true;
69
+ stopCursor();
66
70
  const streamMsg = msg;
67
- // Handle content block deltas (streaming text)
68
71
  if (streamMsg.event?.type === 'content_block_delta' && streamMsg.event.delta?.type === 'text_delta') {
69
72
  const deltaText = streamMsg.event.delta.text || '';
70
73
  if (deltaText) {
71
- if (!hasPrintedHeader) {
72
- console.log(`\nClaude:\n`);
73
- hasPrintedHeader = true;
74
- }
75
- // Accumulate and write streaming deltas directly
74
+ printHeader();
76
75
  accumulatedText += deltaText;
77
76
  assistantResponseText += deltaText;
78
77
  process.stdout.write(deltaText);
79
78
  }
80
79
  }
81
- // Handle content block start (beginning of new content block)
82
80
  else if (streamMsg.event?.type === 'content_block_start') {
83
- // Content block is starting - ensure header is printed
84
- if (!hasPrintedHeader) {
85
- console.log(`\nClaude:\n`);
86
- hasPrintedHeader = true;
87
- }
88
- // Don't reset accumulatedText here - we want to accumulate ALL text across all blocks
89
- // Only reset if this is truly a new message (but we can't tell that here)
90
- // Actually, we should keep accumulating to get the full response
91
- }
92
- // Handle message stop (one message/turn is complete, but stream may continue)
93
- else if (streamMsg.event?.type === 'message_stop') {
94
- // One message is complete, but the stream may continue with more messages
95
- // (e.g., after tools execute). Don't treat this as stream end.
96
- if (hasPrintedHeader && accumulatedText) {
97
- // This message is done, but more may come
98
- }
81
+ printHeader();
99
82
  }
100
- // Handle other stream event types we might not be handling
101
- else if (this.args.verbose) {
83
+ else if (this.args.verbose && streamMsg.event?.type !== 'message_stop') {
102
84
  console.error(`[DEBUG] Unhandled stream event type: ${streamMsg.event?.type}`);
103
85
  }
104
86
  }
105
- // Handle assistant messages (complete messages) - only use if no stream events
106
- // Note: If we've seen stream events, the content was already printed incrementally
107
- // BUT: When tools are used, there may be more assistant messages after tools complete
108
- // So we need to handle both cases
109
87
  else if (msg.type === 'assistant') {
88
+ stopCursor();
110
89
  const assistantMsg = msg;
111
- if (assistantMsg.message.content) {
112
- for (const block of assistantMsg.message.content) {
113
- if (block.type === 'text') {
114
- const currentText = block.text || '';
115
- if (currentText && currentText.length > 0) {
116
- // If we haven't seen stream events, print the complete message
117
- if (!hasSeenStreamEvents) {
118
- if (!hasPrintedHeader) {
119
- console.log(`\nClaude:\n`);
120
- hasPrintedHeader = true;
121
- }
122
- console.log(currentText);
123
- accumulatedText = currentText;
124
- assistantResponseText = currentText;
125
- }
126
- else {
127
- // If we've seen stream events, this might be additional content after tools
128
- // Check if this is new content not already accumulated
129
- if (!currentText.startsWith(accumulatedText) && currentText !== accumulatedText) {
130
- // This is additional content (e.g., after tools complete)
131
- const newText = currentText.slice(accumulatedText.length);
132
- if (newText) {
133
- process.stdout.write(newText);
134
- accumulatedText = currentText;
135
- assistantResponseText = currentText;
136
- }
137
- }
138
- else if (currentText.length > accumulatedText.length) {
139
- // More content than we've accumulated
140
- const newText = currentText.slice(accumulatedText.length);
141
- if (newText) {
142
- process.stdout.write(newText);
143
- accumulatedText = currentText;
144
- assistantResponseText = currentText;
145
- }
146
- }
147
- }
90
+ for (const block of assistantMsg.message.content || []) {
91
+ if (block.type === 'text' && block.text) {
92
+ const currentText = block.text;
93
+ if (!hasSeenStreamEvents) {
94
+ // No streaming - print the complete message
95
+ printHeader();
96
+ console.log(currentText);
97
+ accumulatedText = currentText;
98
+ assistantResponseText = currentText;
99
+ }
100
+ else if (currentText.length > accumulatedText.length) {
101
+ // Print only new content not yet streamed
102
+ const newText = currentText.startsWith(accumulatedText)
103
+ ? currentText.slice(accumulatedText.length)
104
+ : currentText; // Fallback: print entire text if mismatch
105
+ if (newText) {
106
+ process.stdout.write(newText);
107
+ accumulatedText = currentText;
108
+ assistantResponseText = currentText;
148
109
  }
149
110
  }
150
111
  }
151
112
  }
152
113
  }
153
- // Handle result messages - collect but don't display until stream completes
154
- // IMPORTANT: The stream may continue after a result message if tools are being used
155
- // We must continue processing until the stream is truly exhausted
156
114
  else if (msg.type === 'result') {
157
- const resultMsg = msg;
158
- // Always update finalResult with the latest result message
159
- // (there may be multiple result messages if tools are used)
160
- finalResult = resultMsg;
161
- // Check for errors in result messages - display errors immediately
162
- if (resultMsg.is_error) {
163
- const errorMsg = resultMsg.errors?.[0] || resultMsg.error_message || 'Unknown error occurred';
115
+ stopCursor();
116
+ finalResult = msg;
117
+ if (finalResult.is_error) {
118
+ const errorMsg = finalResult.errors?.[0] || finalResult.error_message || 'Unknown error occurred';
164
119
  console.error(`\nError: ${errorMsg}`);
165
- if (resultMsg.subtype) {
166
- console.error(`Error subtype: ${resultMsg.subtype}`);
120
+ if (finalResult.subtype) {
121
+ console.error(`Error subtype: ${finalResult.subtype}`);
167
122
  }
168
- // Log max_turns error specifically
169
- if (resultMsg.subtype === 'error_max_turns') {
123
+ if (finalResult.subtype === 'error_max_turns') {
170
124
  console.error(`\nNote: The conversation stopped because max_turns (${options.maxTurns || 1}) was reached.`);
171
125
  console.error(`To allow the agent to use tools and continue, increase max_turns in the configuration or use the code_reviewer role.`);
172
126
  }
173
127
  }
174
- // Debug: log turn count and continue processing (stream may not be done yet)
175
128
  if (this.args.verbose) {
176
- console.error(`[DEBUG] Result: num_turns=${resultMsg.num_turns}, is_error=${resultMsg.is_error}`);
177
- console.error(`[DEBUG] Continuing to process stream (may have more messages after tools)`);
129
+ console.error(`[DEBUG] Result: num_turns=${finalResult.num_turns}, is_error=${finalResult.is_error}`);
178
130
  }
179
131
  }
180
- // Handle tool progress messages (agent might be using tools)
181
132
  else if (msg.type === 'tool_progress') {
182
- // Tool is being executed - this is normal, just continue
183
133
  if (this.args.verbose) {
184
134
  const toolMsg = msg;
185
135
  console.log(`[Tool Progress] ${toolMsg.tool_name}: ${toolMsg.elapsed_time_seconds}s`);
186
136
  }
187
137
  }
188
- // Log other message types - always log to help debug issues
189
- else {
190
- // Unknown message type - log it to help debug
191
- if (this.args.verbose) {
192
- console.error(`[DEBUG] Received unknown message type: ${msg.type}`);
193
- console.error(`[DEBUG] Message content:`, JSON.stringify(msg, null, 2));
194
- }
138
+ else if (this.args.verbose) {
139
+ console.error(`[DEBUG] Unknown message type: ${msg.type}`);
195
140
  }
196
141
  }
197
- // Debug: log total messages processed
198
- if (this.args.verbose) {
199
- console.error(`[DEBUG] Total messages processed: ${messageCount}`);
200
- }
201
- // Now that the stream is complete, ensure all stdout writes are flushed
202
- // Use multiple setImmediate calls to ensure the event loop processes all pending writes
203
- // This is critical when using process.stdout.write() for streaming
204
- await new Promise(resolve => setImmediate(resolve));
205
- await new Promise(resolve => setImmediate(resolve));
206
- // Now that the stream is complete, display the final result (cost, etc.)
207
- if (finalResult) {
208
- // Ensure we flush any partial output and add newline
209
- if (hasPrintedHeader) {
210
- console.log(); // New line after final output
211
- }
212
- // Display cost only after stream is completely done
213
- if (!finalResult.is_error && finalResult.total_cost_usd && finalResult.total_cost_usd > 0) {
214
- console.log(`\nCost: $${finalResult.total_cost_usd.toFixed(4)}`);
215
- }
142
+ }
143
+ finally {
144
+ stopCursor();
145
+ }
146
+ // Flush stdout writes
147
+ await new Promise(resolve => setImmediate(resolve));
148
+ // Display final result
149
+ if (finalResult) {
150
+ if (hasPrintedHeader) {
151
+ console.log();
216
152
  }
217
- // One more flush to ensure cost is written before returning
218
- await new Promise(resolve => setImmediate(resolve));
219
- // Store the current exchange in conversation history
220
- this.conversationHistory.push({ role: 'user', content: yourPrompt });
221
- if (assistantResponseText) {
222
- this.conversationHistory.push({ role: 'assistant', content: assistantResponseText });
153
+ if (!finalResult.is_error && finalResult.total_cost_usd && finalResult.total_cost_usd > 0) {
154
+ console.log(`\nCost: $${finalResult.total_cost_usd.toFixed(4)}`);
223
155
  }
224
156
  }
225
- catch (error) {
226
- console.error('Error during query:', error);
227
- throw error;
157
+ // Store conversation history
158
+ this.conversationHistory.push({ role: 'user', content: yourPrompt });
159
+ if (assistantResponseText) {
160
+ this.conversationHistory.push({ role: 'assistant', content: assistantResponseText });
228
161
  }
229
- // Add newline for spacing after response (matching Python version)
230
162
  console.log();
231
163
  return '';
232
164
  }
@@ -236,27 +168,67 @@ class AgentActions {
236
168
  async codeReviewerWithOptions(userPrompt) {
237
169
  const agentOptions = new agent_options_1.AgentOptions(this.confDict, this.environment);
238
170
  const options = agentOptions.getCodeReviewerOptions(this.args.role);
171
+ // Declare cursor outside try block so it's accessible in catch
172
+ let cursor = null;
239
173
  try {
240
- for await (const message of (0, claude_agent_sdk_1.query)({ prompt: userPrompt, options })) {
241
- if (message.type === 'assistant') {
242
- const assistantMsg = message;
243
- if (assistantMsg.message.content) {
244
- for (const block of assistantMsg.message.content) {
245
- if (block.type === 'text') {
246
- console.log(`Claude: ${block.text}`);
174
+ // Start blinking cursor to show we're waiting for Claude's response
175
+ cursor = new blinking_cursor_1.BlinkingCursor();
176
+ cursor.start();
177
+ try {
178
+ for await (const message of (0, claude_agent_sdk_1.query)({ prompt: userPrompt, options })) {
179
+ if (message.type === 'stream_event') {
180
+ // Stop cursor when we receive stream events
181
+ if (cursor)
182
+ cursor.stop();
183
+ const streamMsg = message;
184
+ // Handle content block deltas (streaming text)
185
+ if (streamMsg.event?.type === 'content_block_delta' && streamMsg.event.delta?.type === 'text_delta') {
186
+ const deltaText = streamMsg.event.delta.text || '';
187
+ if (deltaText) {
188
+ process.stdout.write(deltaText);
247
189
  }
248
190
  }
249
191
  }
250
- }
251
- else if (message.type === 'result') {
252
- const resultMsg = message;
253
- if (resultMsg.total_cost_usd && resultMsg.total_cost_usd > 0) {
254
- console.log(`\nCost: $${resultMsg.total_cost_usd.toFixed(4)}`);
192
+ else if (message.type === 'assistant') {
193
+ // Stop cursor when we receive assistant message
194
+ if (cursor)
195
+ cursor.stop();
196
+ const assistantMsg = message;
197
+ if (assistantMsg.message.content) {
198
+ for (const block of assistantMsg.message.content) {
199
+ if (block.type === 'text') {
200
+ console.log(`Claude: ${block.text}`);
201
+ }
202
+ }
203
+ }
204
+ }
205
+ else if (message.type === 'result') {
206
+ // Stop cursor when we receive result (in case no content was received)
207
+ if (cursor)
208
+ cursor.stop();
209
+ const resultMsg = message;
210
+ if (resultMsg.total_cost_usd && resultMsg.total_cost_usd > 0) {
211
+ console.log(`\nCost: $${resultMsg.total_cost_usd.toFixed(4)}`);
212
+ }
255
213
  }
256
214
  }
257
215
  }
216
+ finally {
217
+ // Always stop the cursor when done, even if there's an error
218
+ if (cursor)
219
+ cursor.stop();
220
+ }
258
221
  }
259
222
  catch (error) {
223
+ // Ensure cursor is stopped on error
224
+ if (cursor) {
225
+ try {
226
+ cursor.stop();
227
+ }
228
+ catch {
229
+ // Ignore if cursor cleanup fails
230
+ }
231
+ }
260
232
  console.error('Error during code review:', error);
261
233
  throw error;
262
234
  }
@@ -269,27 +241,67 @@ class AgentActions {
269
241
  async threatModelerAgentWithOptions(userPrompt) {
270
242
  const agentOptions = new agent_options_1.AgentOptions(this.confDict, this.environment);
271
243
  const options = agentOptions.getThreatModelerOptions(this.args.role);
244
+ // Declare cursor outside try block so it's accessible in catch
245
+ let cursor = null;
272
246
  try {
273
- for await (const message of (0, claude_agent_sdk_1.query)({ prompt: userPrompt, options })) {
274
- if (message.type === 'assistant') {
275
- const assistantMsg = message;
276
- if (assistantMsg.message.content) {
277
- for (const block of assistantMsg.message.content) {
278
- if (block.type === 'text') {
279
- console.log(`Claude: ${block.text}`);
247
+ // Start blinking cursor to show we're waiting for Claude's response
248
+ cursor = new blinking_cursor_1.BlinkingCursor();
249
+ cursor.start();
250
+ try {
251
+ for await (const message of (0, claude_agent_sdk_1.query)({ prompt: userPrompt, options })) {
252
+ if (message.type === 'stream_event') {
253
+ // Stop cursor when we receive stream events
254
+ if (cursor)
255
+ cursor.stop();
256
+ const streamMsg = message;
257
+ // Handle content block deltas (streaming text)
258
+ if (streamMsg.event?.type === 'content_block_delta' && streamMsg.event.delta?.type === 'text_delta') {
259
+ const deltaText = streamMsg.event.delta.text || '';
260
+ if (deltaText) {
261
+ process.stdout.write(deltaText);
280
262
  }
281
263
  }
282
264
  }
283
- }
284
- else if (message.type === 'result') {
285
- const resultMsg = message;
286
- if (resultMsg.total_cost_usd && resultMsg.total_cost_usd > 0) {
287
- console.log(`\nCost: $${resultMsg.total_cost_usd.toFixed(4)}`);
265
+ else if (message.type === 'assistant') {
266
+ // Stop cursor when we receive assistant message
267
+ if (cursor)
268
+ cursor.stop();
269
+ const assistantMsg = message;
270
+ if (assistantMsg.message.content) {
271
+ for (const block of assistantMsg.message.content) {
272
+ if (block.type === 'text') {
273
+ console.log(`Claude: ${block.text}`);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ else if (message.type === 'result') {
279
+ // Stop cursor when we receive result (in case no content was received)
280
+ if (cursor)
281
+ cursor.stop();
282
+ const resultMsg = message;
283
+ if (resultMsg.total_cost_usd && resultMsg.total_cost_usd > 0) {
284
+ console.log(`\nCost: $${resultMsg.total_cost_usd.toFixed(4)}`);
285
+ }
288
286
  }
289
287
  }
290
288
  }
289
+ finally {
290
+ // Always stop the cursor when done, even if there's an error
291
+ if (cursor)
292
+ cursor.stop();
293
+ }
291
294
  }
292
295
  catch (error) {
296
+ // Ensure cursor is stopped on error
297
+ if (cursor) {
298
+ try {
299
+ cursor.stop();
300
+ }
301
+ catch {
302
+ // Ignore if cursor cleanup fails
303
+ }
304
+ }
293
305
  console.error('Error during threat modeling:', error);
294
306
  throw error;
295
307
  }
@@ -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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"}
@@ -33,7 +33,7 @@ export declare class AgentOptions {
33
33
  */
34
34
  getSimpleQueryAgentOptions(role?: string, srcDir?: string | null): Options;
35
35
  /**
36
- * Get options for code reviewer
36
+ * Get options for security code reviewer
37
37
  */
38
38
  getCodeReviewerOptions(role?: string): Options;
39
39
  /**
@@ -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;AAErC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM;IAKrD;;;OAGG;IACH,eAAe,IAAI,YAAY,EAAE;IAIjC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,sBAAsB,EAAE,UAAU,CAqBjC;IAED;;OAEG;IACH,0BAA0B,CAAC,IAAI,GAAE,MAA6B,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAehG;;OAEG;IACH,sBAAsB,CAAC,IAAI,GAAE,MAAwB,GAAG,OAAO;IAkB/D;;OAEG;IACH,uBAAuB,CAAC,IAAI,GAAE,MAAyB,GAAG,OAAO;CAiBlE"}
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;AAErC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM;IAKrD;;;OAGG;IACH,eAAe,IAAI,YAAY,EAAE;IAIjC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,sBAAsB,EAAE,UAAU,CAqBjC;IAED;;OAEG;IACH,0BAA0B,CAAC,IAAI,GAAE,MAA6B,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAgBhG;;OAEG;IACH,sBAAsB,CAAC,IAAI,GAAE,MAAwB,GAAG,OAAO;IAkB/D;;OAEG;IACH,uBAAuB,CAAC,IAAI,GAAE,MAAyB,GAAG,OAAO;CAiBlE"}