@bluecopa/harness 0.1.0-snapshot.25 → 0.1.0-snapshot.27
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/package.json +1 -1
- package/src/arc/arc-loop.ts +5 -4
- package/src/arc/tools.ts +1 -1
package/package.json
CHANGED
package/src/arc/arc-loop.ts
CHANGED
|
@@ -422,9 +422,10 @@ export class ArcLoop {
|
|
|
422
422
|
this.trace({ type: 'turn_end', turn });
|
|
423
423
|
yield { type: 'turn_end', turn };
|
|
424
424
|
|
|
425
|
-
// Wait for
|
|
426
|
-
//
|
|
427
|
-
//
|
|
425
|
+
// Wait for all processes dispatched this turn to reach a terminal state.
|
|
426
|
+
// When the orchestrator dispatches N parallel threads, there's no useful
|
|
427
|
+
// work it can do with partial results — giving it a turn early just wastes
|
|
428
|
+
// an LLM call on empty Check loops.
|
|
428
429
|
const active = [...this.processes.values()].filter(
|
|
429
430
|
p => p.status === 'running' || p.status === 'pending',
|
|
430
431
|
);
|
|
@@ -432,7 +433,7 @@ export class ArcLoop {
|
|
|
432
433
|
const deadline = Date.now() + (this.config.processTimeout ?? 120_000);
|
|
433
434
|
await new Promise<void>(resolve => {
|
|
434
435
|
const check = () => {
|
|
435
|
-
if (active.
|
|
436
|
+
if (active.every(p => p.status !== 'running' && p.status !== 'pending') || Date.now() > deadline) {
|
|
436
437
|
resolve();
|
|
437
438
|
} else {
|
|
438
439
|
setTimeout(check, 10);
|
package/src/arc/tools.ts
CHANGED
|
@@ -11,7 +11,7 @@ export const Thread = tool({
|
|
|
11
11
|
model: z.enum(['fast', 'medium', 'strong']).optional().describe('Model tier (default: medium)'),
|
|
12
12
|
maxSteps: z.number().optional().describe('Max tool-call steps'),
|
|
13
13
|
label: z.string().optional().describe('Human-readable label'),
|
|
14
|
-
profile: z.string().optional().describe('Named process profile (e.g. "
|
|
14
|
+
profile: z.string().optional().describe('Named process profile (e.g. "readonly", "generalist")'),
|
|
15
15
|
}),
|
|
16
16
|
});
|
|
17
17
|
|