@workermill/agent 0.7.0 → 0.7.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/dist/planner.js +58 -11
- package/package.json +1 -1
package/dist/planner.js
CHANGED
|
@@ -154,10 +154,45 @@ function runClaudeCli(claudePath, model, prompt, env, taskId, startTime) {
|
|
|
154
154
|
continue;
|
|
155
155
|
try {
|
|
156
156
|
const event = JSON.parse(trimmed);
|
|
157
|
-
|
|
157
|
+
// Claude CLI stream-json wraps content in assistant message events
|
|
158
|
+
if (event.type === "assistant" && event.message?.content) {
|
|
159
|
+
const content = event.message.content;
|
|
160
|
+
if (Array.isArray(content)) {
|
|
161
|
+
for (const block of content) {
|
|
162
|
+
if (block.type === "text" && block.text) {
|
|
163
|
+
fullText += block.text;
|
|
164
|
+
charsReceived += block.text.length;
|
|
165
|
+
if (!firstTextSeen) {
|
|
166
|
+
firstTextSeen = true;
|
|
167
|
+
if (toolCallCount > 0 && !milestoneSent.analyzing) {
|
|
168
|
+
transitionPhase("analyzing");
|
|
169
|
+
milestoneSent.analyzing = true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (charsReceived > 500 && !milestoneSent.generating) {
|
|
173
|
+
transitionPhase("generating_plan");
|
|
174
|
+
milestoneSent.generating = true;
|
|
175
|
+
lastProgressLogAt = Math.round((Date.now() - startTime) / 1000);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else if (block.type === "tool_use") {
|
|
179
|
+
toolCallCount++;
|
|
180
|
+
if (!milestoneSent.reading) {
|
|
181
|
+
transitionPhase("reading_repo");
|
|
182
|
+
milestoneSent.reading = true;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if (typeof content === "string" && content) {
|
|
188
|
+
fullText += content;
|
|
189
|
+
charsReceived += content.length;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else if (event.type === "content_block_delta" && event.delta?.text) {
|
|
193
|
+
// Fallback: raw API streaming format
|
|
158
194
|
fullText += event.delta.text;
|
|
159
195
|
charsReceived += event.delta.text.length;
|
|
160
|
-
// Phase: first text after tool calls → analyzing
|
|
161
196
|
if (!firstTextSeen) {
|
|
162
197
|
firstTextSeen = true;
|
|
163
198
|
if (toolCallCount > 0 && !milestoneSent.analyzing) {
|
|
@@ -165,7 +200,6 @@ function runClaudeCli(claudePath, model, prompt, env, taskId, startTime) {
|
|
|
165
200
|
milestoneSent.analyzing = true;
|
|
166
201
|
}
|
|
167
202
|
}
|
|
168
|
-
// Phase: substantial text → generating_plan
|
|
169
203
|
if (charsReceived > 500 && !milestoneSent.generating) {
|
|
170
204
|
transitionPhase("generating_plan");
|
|
171
205
|
milestoneSent.generating = true;
|
|
@@ -179,13 +213,6 @@ function runClaudeCli(claudePath, model, prompt, env, taskId, startTime) {
|
|
|
179
213
|
milestoneSent.reading = true;
|
|
180
214
|
}
|
|
181
215
|
}
|
|
182
|
-
else if (event.type === "assistant" && event.message?.content) {
|
|
183
|
-
const text = typeof event.message.content === "string" ? event.message.content : "";
|
|
184
|
-
if (text) {
|
|
185
|
-
fullText += text;
|
|
186
|
-
charsReceived += text.length;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
216
|
else if (event.type === "result" && event.result) {
|
|
190
217
|
resultText = typeof event.result === "string" ? event.result : "";
|
|
191
218
|
}
|
|
@@ -340,7 +367,27 @@ function runAnalyst(name, claudePath, model, prompt, repoPath, env, timeoutMs =
|
|
|
340
367
|
continue;
|
|
341
368
|
try {
|
|
342
369
|
const event = JSON.parse(trimmed);
|
|
343
|
-
|
|
370
|
+
// Claude CLI stream-json wraps content in assistant message events
|
|
371
|
+
if (event.type === "assistant" && event.message?.content) {
|
|
372
|
+
const content = event.message.content;
|
|
373
|
+
if (Array.isArray(content)) {
|
|
374
|
+
for (const block of content) {
|
|
375
|
+
if (block.type === "text" && block.text) {
|
|
376
|
+
fullText += block.text;
|
|
377
|
+
}
|
|
378
|
+
else if (block.type === "tool_use") {
|
|
379
|
+
toolCalls++;
|
|
380
|
+
const toolName = block.name || "unknown";
|
|
381
|
+
console.log(`${ts()} ${label} ${chalk.dim(`Tool: ${toolName}`)} (${toolCalls} total)`);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
else if (typeof content === "string") {
|
|
386
|
+
fullText += content;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
else if (event.type === "content_block_delta" && event.delta?.text) {
|
|
390
|
+
// Fallback: raw API streaming format (may appear in some CLI versions)
|
|
344
391
|
fullText += event.delta.text;
|
|
345
392
|
}
|
|
346
393
|
else if (event.type === "content_block_start" && event.content_block?.type === "tool_use") {
|