@autonoma-ai/planner 0.1.17 → 0.1.19
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/index.js +77 -48
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -14,11 +14,11 @@ var __export = (target, all) => {
|
|
|
14
14
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
// ../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.3_jiti@2.6.1_postcss@8.5.15_tsx@4.21.0_typescript@
|
|
17
|
+
// ../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.3_jiti@2.6.1_postcss@8.5.15_tsx@4.21.0_typescript@7.0.2_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js
|
|
18
18
|
import path from "path";
|
|
19
19
|
import { fileURLToPath } from "url";
|
|
20
20
|
var init_esm_shims = __esm({
|
|
21
|
-
"../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.3_jiti@2.6.1_postcss@8.5.15_tsx@4.21.0_typescript@
|
|
21
|
+
"../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.15.3_jiti@2.6.1_postcss@8.5.15_tsx@4.21.0_typescript@7.0.2_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"() {
|
|
22
22
|
"use strict";
|
|
23
23
|
}
|
|
24
24
|
});
|
|
@@ -218,6 +218,29 @@ var init_analytics = __esm({
|
|
|
218
218
|
}
|
|
219
219
|
});
|
|
220
220
|
|
|
221
|
+
// src/core/colors.ts
|
|
222
|
+
function fg(hex) {
|
|
223
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
224
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
225
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
226
|
+
return `${ESC}38;2;${r};${g};${b}m`;
|
|
227
|
+
}
|
|
228
|
+
var ESC, RESET, BOLD, DIM, PRIMARY, SUCCESS, ERROR, WARNING;
|
|
229
|
+
var init_colors = __esm({
|
|
230
|
+
"src/core/colors.ts"() {
|
|
231
|
+
"use strict";
|
|
232
|
+
init_esm_shims();
|
|
233
|
+
ESC = "\x1B[";
|
|
234
|
+
RESET = `${ESC}0m`;
|
|
235
|
+
BOLD = `${ESC}1m`;
|
|
236
|
+
DIM = `${ESC}2m`;
|
|
237
|
+
PRIMARY = fg("#CCFF00");
|
|
238
|
+
SUCCESS = fg("#3FB950");
|
|
239
|
+
ERROR = fg("#FF5C5C");
|
|
240
|
+
WARNING = fg("#FFB020");
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
|
|
221
244
|
// src/core/context.ts
|
|
222
245
|
import { readFile, writeFile } from "fs/promises";
|
|
223
246
|
import { join as join5 } from "path";
|
|
@@ -396,7 +419,7 @@ var init_errors = __esm({
|
|
|
396
419
|
phase;
|
|
397
420
|
cause;
|
|
398
421
|
};
|
|
399
|
-
FATAL_STATUS_CODES = /* @__PURE__ */ new Set([400, 401, 403, 404, 422]);
|
|
422
|
+
FATAL_STATUS_CODES = /* @__PURE__ */ new Set([400, 401, 402, 403, 404, 422]);
|
|
400
423
|
RETRYABLE_PROVIDER_QUIRKS = ["corrupted thought signature"];
|
|
401
424
|
TRANSIENT_MESSAGE_PATTERNS = [
|
|
402
425
|
"econnreset",
|
|
@@ -432,13 +455,14 @@ function getProvider() {
|
|
|
432
455
|
function getModel(modelId) {
|
|
433
456
|
return getProvider().languageModel(modelId ?? readEnv().OPENROUTER_MODEL ?? DEFAULT_MODEL);
|
|
434
457
|
}
|
|
435
|
-
var DEFAULT_MODEL, DEFAULT_API_URL, provider;
|
|
458
|
+
var DEFAULT_MODEL, AI_MAX_RETRIES, DEFAULT_API_URL, provider;
|
|
436
459
|
var init_model = __esm({
|
|
437
460
|
"src/core/model.ts"() {
|
|
438
461
|
"use strict";
|
|
439
462
|
init_esm_shims();
|
|
440
463
|
init_env();
|
|
441
464
|
DEFAULT_MODEL = "google/gemini-3-flash-preview";
|
|
465
|
+
AI_MAX_RETRIES = 10;
|
|
442
466
|
DEFAULT_API_URL = "https://autonoma.app";
|
|
443
467
|
}
|
|
444
468
|
});
|
|
@@ -532,7 +556,7 @@ function createStepLogger(agentId, _maxSteps) {
|
|
|
532
556
|
function writeSpinner(message) {
|
|
533
557
|
const frame = SPINNER_FRAMES[frameIdx % SPINNER_FRAMES.length];
|
|
534
558
|
frameIdx++;
|
|
535
|
-
process.stderr.write(`${CLEAR_LINE} ${
|
|
559
|
+
process.stderr.write(`${CLEAR_LINE} ${DIM}${frame} ${message}${RESET}`);
|
|
536
560
|
lastSpinnerLine = true;
|
|
537
561
|
}
|
|
538
562
|
function writePermanent(message) {
|
|
@@ -563,55 +587,49 @@ function createStepLogger(agentId, _maxSteps) {
|
|
|
563
587
|
case "write_file": {
|
|
564
588
|
stats.filesWritten++;
|
|
565
589
|
const path3 = String(tc.input.path ?? tc.input.file_path ?? "");
|
|
566
|
-
writePermanent(` ${
|
|
590
|
+
writePermanent(` ${SUCCESS}\u270E write ${path3}${RESET}`);
|
|
567
591
|
break;
|
|
568
592
|
}
|
|
569
593
|
case "write_test":
|
|
570
594
|
stats.filesWritten++;
|
|
571
|
-
writePermanent(` ${
|
|
595
|
+
writePermanent(` ${SUCCESS}\u270E test ${summary2}${RESET}`);
|
|
572
596
|
break;
|
|
573
597
|
case "finish":
|
|
574
|
-
writePermanent(` ${
|
|
598
|
+
writePermanent(` ${SUCCESS}${BOLD}\u2713 done:${RESET} ${SUCCESS}${agentId}${RESET}`);
|
|
575
599
|
break;
|
|
576
600
|
case "subagent":
|
|
577
601
|
case "spawn_researcher":
|
|
578
|
-
writePermanent(` ${
|
|
602
|
+
writePermanent(` ${PRIMARY}\u2295 subagent: ${summary2}${RESET}`);
|
|
579
603
|
break;
|
|
580
604
|
default:
|
|
581
605
|
writeSpinner(`${tc.name}${summary2 ? " " + summary2 : ""}`);
|
|
582
606
|
}
|
|
583
607
|
}
|
|
584
608
|
for (const te of info.toolErrors) {
|
|
585
|
-
writePermanent(` ${
|
|
609
|
+
writePermanent(` ${ERROR}\u2717 ${te.name}: ${te.error}${RESET}`);
|
|
586
610
|
}
|
|
587
611
|
for (const f of info.writtenFiles) {
|
|
588
|
-
writePermanent(` ${
|
|
612
|
+
writePermanent(` ${SUCCESS}\u{1F4C4} wrote: ${f}${RESET}`);
|
|
589
613
|
}
|
|
590
614
|
}
|
|
591
615
|
function checkpoint(message) {
|
|
592
|
-
writePermanent(` ${
|
|
616
|
+
writePermanent(` ${WARNING}\u25B8 ${message}${RESET}`);
|
|
593
617
|
}
|
|
594
618
|
function summary() {
|
|
595
619
|
clearSpinner();
|
|
596
620
|
if (stats.filesRead > 0 || stats.filesWritten > 0) {
|
|
597
|
-
console.log(` ${
|
|
598
|
-
console.log(` ${
|
|
621
|
+
console.log(` ${DIM}\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500${RESET}`);
|
|
622
|
+
console.log(` ${DIM}files read: ${stats.filesRead} | files written: ${stats.filesWritten}${RESET}`);
|
|
599
623
|
}
|
|
600
624
|
}
|
|
601
625
|
return { log: log9, checkpoint, summary, stats };
|
|
602
626
|
}
|
|
603
|
-
var
|
|
627
|
+
var SPINNER_FRAMES, CLEAR_LINE;
|
|
604
628
|
var init_display = __esm({
|
|
605
629
|
"src/core/display.ts"() {
|
|
606
630
|
"use strict";
|
|
607
631
|
init_esm_shims();
|
|
608
|
-
|
|
609
|
-
RESET2 = "\x1B[0m";
|
|
610
|
-
CYAN = "\x1B[36m";
|
|
611
|
-
GREEN = "\x1B[32m";
|
|
612
|
-
RED = "\x1B[31m";
|
|
613
|
-
YELLOW = "\x1B[33m";
|
|
614
|
-
BOLD = "\x1B[1m";
|
|
632
|
+
init_colors();
|
|
615
633
|
SPINNER_FRAMES = ["\u25D2", "\u25D0", "\u25D3", "\u25D1"];
|
|
616
634
|
CLEAR_LINE = "\x1B[2K\r";
|
|
617
635
|
}
|
|
@@ -673,7 +691,7 @@ async function runAgent(config, prompt, extractResult) {
|
|
|
673
691
|
const msg = err instanceof Error ? err.message : String(err);
|
|
674
692
|
throw new AgentError(`agent "${config.id}" (model ${modelIdOf(model)}) failed: ${msg}`, config.id, err);
|
|
675
693
|
};
|
|
676
|
-
const
|
|
694
|
+
const YELLOW3 = "\x1B[33m";
|
|
677
695
|
const RESET8 = "\x1B[0m";
|
|
678
696
|
for (let retry = 0; retry < MAX_RETRIES; retry++) {
|
|
679
697
|
const heartbeat = () => {
|
|
@@ -681,6 +699,7 @@ async function runAgent(config, prompt, extractResult) {
|
|
|
681
699
|
const tools = typeof config.tools === "function" ? await config.tools(heartbeat) : config.tools;
|
|
682
700
|
const agent = new ToolLoopAgent({
|
|
683
701
|
model,
|
|
702
|
+
maxRetries: AI_MAX_RETRIES,
|
|
684
703
|
instructions: config.systemPrompt,
|
|
685
704
|
tools,
|
|
686
705
|
temperature: config.temperature,
|
|
@@ -697,7 +716,7 @@ async function runAgent(config, prompt, extractResult) {
|
|
|
697
716
|
while (extractResult() === void 0 && nudges < MAX_NUDGES) {
|
|
698
717
|
nudges++;
|
|
699
718
|
console.log(
|
|
700
|
-
` ${
|
|
719
|
+
` ${YELLOW3}[${config.id}] agent stopped without finishing - nudging (${nudges}/${MAX_NUDGES})...${RESET8}`
|
|
701
720
|
);
|
|
702
721
|
track("cli_agent_nudged", { agent: config.id, nudge: nudges });
|
|
703
722
|
messages.push(...generation.response.messages);
|
|
@@ -713,13 +732,13 @@ async function runAgent(config, prompt, extractResult) {
|
|
|
713
732
|
if (errorClass === "fatal") fail(err);
|
|
714
733
|
const msg = err instanceof Error ? err.message : String(err);
|
|
715
734
|
if (errorClass === "timeout") {
|
|
716
|
-
console.log(` ${
|
|
735
|
+
console.log(` ${YELLOW3}[${config.id}] step timed out after ${stepTimeout / 1e3}s${RESET8}`);
|
|
717
736
|
} else {
|
|
718
|
-
console.log(` ${
|
|
737
|
+
console.log(` ${YELLOW3}[${config.id}] provider error: ${msg}${RESET8}`);
|
|
719
738
|
}
|
|
720
739
|
track("cli_agent_retryable_error", { agent: config.id, error_class: errorClass, retry });
|
|
721
740
|
if (retry < MAX_RETRIES - 1) {
|
|
722
|
-
console.log(` ${
|
|
741
|
+
console.log(` ${YELLOW3}[${config.id}] retrying (${retry + 1}/${MAX_RETRIES})...${RESET8}`);
|
|
723
742
|
if (errorClass === "transient") {
|
|
724
743
|
await sleep(Math.min(2e3 * 2 ** retry, 1e4));
|
|
725
744
|
}
|
|
@@ -738,6 +757,7 @@ var init_agent = __esm({
|
|
|
738
757
|
init_analytics();
|
|
739
758
|
init_display();
|
|
740
759
|
init_errors();
|
|
760
|
+
init_model();
|
|
741
761
|
MAX_RETRIES = 3;
|
|
742
762
|
STEP_TIMEOUT_MS = 12e4;
|
|
743
763
|
MAX_NUDGES = 2;
|
|
@@ -1241,6 +1261,7 @@ function buildSubagentTool(model, workingDirectory, onHeartbeat, onFileRead) {
|
|
|
1241
1261
|
let result;
|
|
1242
1262
|
const subagent = new ToolLoopAgent2({
|
|
1243
1263
|
model,
|
|
1264
|
+
maxRetries: AI_MAX_RETRIES,
|
|
1244
1265
|
instructions: SYSTEM_PROMPT,
|
|
1245
1266
|
tools: {
|
|
1246
1267
|
...buildSubagentTools(workingDirectory, onFileRead),
|
|
@@ -1274,6 +1295,7 @@ var init_subagent = __esm({
|
|
|
1274
1295
|
"src/tools/subagent.ts"() {
|
|
1275
1296
|
"use strict";
|
|
1276
1297
|
init_esm_shims();
|
|
1298
|
+
init_model();
|
|
1277
1299
|
init_pick_string();
|
|
1278
1300
|
init_bash();
|
|
1279
1301
|
init_glob();
|
|
@@ -1513,7 +1535,7 @@ async function launchEditor(editor, files) {
|
|
|
1513
1535
|
const proc = spawn(editor.command, args, { stdio: "inherit" });
|
|
1514
1536
|
proc.on("error", (err) => {
|
|
1515
1537
|
p3.log.warn(`Couldn't open ${editor.label} (${err.message}). Review the files manually:`);
|
|
1516
|
-
for (const f of files) console.log(` ${
|
|
1538
|
+
for (const f of files) console.log(` ${CYAN}${f}${RESET3}`);
|
|
1517
1539
|
settle();
|
|
1518
1540
|
});
|
|
1519
1541
|
if (isTerminalEditor) {
|
|
@@ -1527,7 +1549,7 @@ async function openInEditor(files) {
|
|
|
1527
1549
|
const editors = await detectEditors();
|
|
1528
1550
|
if (editors.length === 0) {
|
|
1529
1551
|
p3.log.warn("No editors found. Review the files manually:");
|
|
1530
|
-
for (const f of files) console.log(` ${
|
|
1552
|
+
for (const f of files) console.log(` ${CYAN}${f}${RESET3}`);
|
|
1531
1553
|
return;
|
|
1532
1554
|
}
|
|
1533
1555
|
if (preferredEditor) {
|
|
@@ -1566,7 +1588,7 @@ async function openInEditor(files) {
|
|
|
1566
1588
|
}
|
|
1567
1589
|
async function showResults(result, options) {
|
|
1568
1590
|
console.log("");
|
|
1569
|
-
console.log(` ${
|
|
1591
|
+
console.log(` ${GREEN}[${options.agentId}] Step complete.${RESET3}`);
|
|
1570
1592
|
if (result.artifacts.length === 0) {
|
|
1571
1593
|
const knownFiles = ["AUTONOMA.md", "entity-audit.md", "scenarios.md"];
|
|
1572
1594
|
for (const f of knownFiles) {
|
|
@@ -1585,7 +1607,7 @@ async function showResults(result, options) {
|
|
|
1585
1607
|
for (const a of result.artifacts) {
|
|
1586
1608
|
const fullPath = resolvePath(a, options.outputDir);
|
|
1587
1609
|
resolvedPaths.push(fullPath);
|
|
1588
|
-
console.log(` ${
|
|
1610
|
+
console.log(` ${CYAN}${fullPath}${RESET3}`);
|
|
1589
1611
|
}
|
|
1590
1612
|
}
|
|
1591
1613
|
if (result.summary) {
|
|
@@ -1636,7 +1658,7 @@ async function reviewLoop(result, options) {
|
|
|
1636
1658
|
await showResults(result, options);
|
|
1637
1659
|
}
|
|
1638
1660
|
}
|
|
1639
|
-
var DIM3,
|
|
1661
|
+
var DIM3, CYAN, GREEN, RESET3, EDITORS, cachedEditors, preferredEditor, TERMINAL_EDITORS;
|
|
1640
1662
|
var init_review = __esm({
|
|
1641
1663
|
"src/core/review.ts"() {
|
|
1642
1664
|
"use strict";
|
|
@@ -1644,8 +1666,8 @@ var init_review = __esm({
|
|
|
1644
1666
|
init_debug();
|
|
1645
1667
|
init_notify();
|
|
1646
1668
|
DIM3 = "\x1B[2m";
|
|
1647
|
-
|
|
1648
|
-
|
|
1669
|
+
CYAN = "\x1B[36m";
|
|
1670
|
+
GREEN = "\x1B[32m";
|
|
1649
1671
|
RESET3 = "\x1B[0m";
|
|
1650
1672
|
EDITORS = [
|
|
1651
1673
|
{ command: "cursor", label: "Cursor", args: (f) => f },
|
|
@@ -1709,7 +1731,7 @@ function renderFlowsTable(flows) {
|
|
|
1709
1731
|
const sep = `${DIM4}${"\u2500".repeat(numW + nameW + critW + DESC_MAX + 6)}${RESET4}`;
|
|
1710
1732
|
const body = rows.map((r) => {
|
|
1711
1733
|
const line = `${pad(r.num, numW)} ${pad(r.name, nameW)} ${pad(r.crit, critW)} ${r.desc}`;
|
|
1712
|
-
return r.crit === "core" ? `${
|
|
1734
|
+
return r.crit === "core" ? `${YELLOW}${line}${RESET4}` : line;
|
|
1713
1735
|
}).join("\n");
|
|
1714
1736
|
const caption = `${DIM4}${flows.length} flows \xB7 ${coreCount} marked core${RESET4}`;
|
|
1715
1737
|
return `${header}
|
|
@@ -1717,14 +1739,14 @@ ${sep}
|
|
|
1717
1739
|
${body}
|
|
1718
1740
|
${caption}`;
|
|
1719
1741
|
}
|
|
1720
|
-
var RESET4, DIM4,
|
|
1742
|
+
var RESET4, DIM4, YELLOW, BOLD2;
|
|
1721
1743
|
var init_flows = __esm({
|
|
1722
1744
|
"src/agents/01-kb-generator/flows.ts"() {
|
|
1723
1745
|
"use strict";
|
|
1724
1746
|
init_esm_shims();
|
|
1725
1747
|
RESET4 = "\x1B[0m";
|
|
1726
1748
|
DIM4 = "\x1B[2m";
|
|
1727
|
-
|
|
1749
|
+
YELLOW = "\x1B[33m";
|
|
1728
1750
|
BOLD2 = "\x1B[1m";
|
|
1729
1751
|
}
|
|
1730
1752
|
});
|
|
@@ -2320,7 +2342,7 @@ function renderEntityAuditTable(models) {
|
|
|
2320
2342
|
const sep = `${DIM5}${"\u2500".repeat(numW + nameW + critW + SRC_MAX + 6)}${RESET5}`;
|
|
2321
2343
|
const body = rows.map((r) => {
|
|
2322
2344
|
const line = `${pad2(r.num, numW)} ${pad2(r.name, nameW)} ${pad2(r.creation, critW)} ${r.source}`;
|
|
2323
|
-
return r.creation === "standalone" ? `${
|
|
2345
|
+
return r.creation === "standalone" ? `${YELLOW2}${line}${RESET5}` : line;
|
|
2324
2346
|
}).join("\n");
|
|
2325
2347
|
const caption = `${DIM5}${models.length} models \xB7 ${standalone} standalone \xB7 ${models.length - standalone} side-effect-only${RESET5}`;
|
|
2326
2348
|
return `${header}
|
|
@@ -2328,7 +2350,7 @@ ${sep}
|
|
|
2328
2350
|
${body}
|
|
2329
2351
|
${caption}`;
|
|
2330
2352
|
}
|
|
2331
|
-
var RESET5, DIM5,
|
|
2353
|
+
var RESET5, DIM5, YELLOW2, BOLD3;
|
|
2332
2354
|
var init_audit_table = __esm({
|
|
2333
2355
|
"src/agents/02-entity-audit/audit-table.ts"() {
|
|
2334
2356
|
"use strict";
|
|
@@ -2336,7 +2358,7 @@ var init_audit_table = __esm({
|
|
|
2336
2358
|
init_entity_order();
|
|
2337
2359
|
RESET5 = "\x1B[0m";
|
|
2338
2360
|
DIM5 = "\x1B[2m";
|
|
2339
|
-
|
|
2361
|
+
YELLOW2 = "\x1B[33m";
|
|
2340
2362
|
BOLD3 = "\x1B[1m";
|
|
2341
2363
|
}
|
|
2342
2364
|
});
|
|
@@ -3226,7 +3248,8 @@ async function callRanker(model, prompt) {
|
|
|
3226
3248
|
const result = await generateText({
|
|
3227
3249
|
model,
|
|
3228
3250
|
prompt,
|
|
3229
|
-
output: Output.object({ schema: rankedSchema })
|
|
3251
|
+
output: Output.object({ schema: rankedSchema }),
|
|
3252
|
+
maxRetries: AI_MAX_RETRIES
|
|
3230
3253
|
});
|
|
3231
3254
|
return result.output.ranked;
|
|
3232
3255
|
}
|
|
@@ -3307,6 +3330,7 @@ var init_entity_relevance = __esm({
|
|
|
3307
3330
|
"use strict";
|
|
3308
3331
|
init_esm_shims();
|
|
3309
3332
|
init_errors();
|
|
3333
|
+
init_model();
|
|
3310
3334
|
rankedSchema = z15.object({
|
|
3311
3335
|
ranked: z15.array(z15.string()).describe("Every entity name, ordered most-important first.")
|
|
3312
3336
|
});
|
|
@@ -3825,7 +3849,8 @@ async function classifyFailure(model, args) {
|
|
|
3825
3849
|
const result = await generateText2({
|
|
3826
3850
|
model,
|
|
3827
3851
|
prompt: buildClassifierPrompt(args),
|
|
3828
|
-
output: Output2.object({ schema: classificationSchema })
|
|
3852
|
+
output: Output2.object({ schema: classificationSchema }),
|
|
3853
|
+
maxRetries: AI_MAX_RETRIES
|
|
3829
3854
|
});
|
|
3830
3855
|
return result.output;
|
|
3831
3856
|
} catch (err) {
|
|
@@ -3838,6 +3863,7 @@ var init_failure_classifier = __esm({
|
|
|
3838
3863
|
"use strict";
|
|
3839
3864
|
init_esm_shims();
|
|
3840
3865
|
init_errors();
|
|
3866
|
+
init_model();
|
|
3841
3867
|
classificationSchema = z16.object({
|
|
3842
3868
|
side: z16.enum(["recipe", "implementation", "unclear"]).describe(
|
|
3843
3869
|
"recipe = the test data we sent is wrong and regenerating it could fix the failure; implementation = the developer's handler/factory code is wrong and only a code change fixes it; unclear = cannot confidently attribute the failure to either side."
|
|
@@ -6267,6 +6293,7 @@ function buildSpawnResearcherTool(model, workingDirectory, onHeartbeat) {
|
|
|
6267
6293
|
let result;
|
|
6268
6294
|
const subagent = new ToolLoopAgent3({
|
|
6269
6295
|
model,
|
|
6296
|
+
maxRetries: AI_MAX_RETRIES,
|
|
6270
6297
|
instructions: "You are a code researcher. Read the files specified in your instruction, analyze them, and call finish with a summary of what you found. Focus on: UI elements, forms, buttons, navigation, API calls, state management.",
|
|
6271
6298
|
tools: {
|
|
6272
6299
|
bash: buildBashTool(workingDirectory),
|
|
@@ -6311,6 +6338,7 @@ var init_tools2 = __esm({
|
|
|
6311
6338
|
"src/agents/05-test-generator/tools.ts"() {
|
|
6312
6339
|
"use strict";
|
|
6313
6340
|
init_esm_shims();
|
|
6341
|
+
init_model();
|
|
6314
6342
|
init_tools();
|
|
6315
6343
|
init_graph();
|
|
6316
6344
|
init_validation();
|
|
@@ -7004,6 +7032,7 @@ function loadConfig(args) {
|
|
|
7004
7032
|
|
|
7005
7033
|
// src/index.ts
|
|
7006
7034
|
init_analytics();
|
|
7035
|
+
init_colors();
|
|
7007
7036
|
init_context();
|
|
7008
7037
|
init_errors();
|
|
7009
7038
|
|
|
@@ -7012,10 +7041,10 @@ init_esm_shims();
|
|
|
7012
7041
|
init_debug();
|
|
7013
7042
|
import readline from "readline";
|
|
7014
7043
|
import { settings } from "@clack/core";
|
|
7015
|
-
var
|
|
7016
|
-
var
|
|
7044
|
+
var DIM2 = "\x1B[2m";
|
|
7045
|
+
var RESET2 = "\x1B[0m";
|
|
7017
7046
|
var SHOW_CURSOR = "\x1B[?25h";
|
|
7018
|
-
var EXIT_HINT = `${
|
|
7047
|
+
var EXIT_HINT = `${DIM2}(press Ctrl+C again to exit)${RESET2}`;
|
|
7019
7048
|
var ARM_WINDOW_MS = 3e3;
|
|
7020
7049
|
var FORCE_EXIT_MS = 2500;
|
|
7021
7050
|
var installed = false;
|
|
@@ -7506,14 +7535,14 @@ async function showStatus(outputDir) {
|
|
|
7506
7535
|
}
|
|
7507
7536
|
}
|
|
7508
7537
|
var BANNER = `
|
|
7509
|
-
|
|
7538
|
+
${PRIMARY}${BOLD} \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557
|
|
7510
7539
|
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557
|
|
7511
7540
|
\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2588\u2588\u2554\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551
|
|
7512
7541
|
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551
|
|
7513
7542
|
\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551
|
|
7514
7543
|
\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D
|
|
7515
|
-
|
|
7516
|
-
|
|
7544
|
+
${RESET}
|
|
7545
|
+
${DIM} E2E Test Planner - Generate exhaustive test suites from your codebase${RESET}
|
|
7517
7546
|
`;
|
|
7518
7547
|
function ensureAutonomaAuth() {
|
|
7519
7548
|
if (readEnv().AUTONOMA_API_TOKEN?.trim()) return true;
|