@reddoorla/maintenance 0.88.3 → 0.89.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.
Files changed (108) hide show
  1. package/dist/{announce-GKD5YJNB.js → announce-OJFAS5JT.js} +6 -6
  2. package/dist/{chunk-7UAYMAKR.js → chunk-3VQWSE3F.js} +4 -4
  3. package/dist/{chunk-XKDCR4UE.js → chunk-5PWB3JHJ.js} +2 -3
  4. package/dist/chunk-5PWB3JHJ.js.map +1 -0
  5. package/dist/{chunk-XSOINOPY.js → chunk-62NYED6E.js} +3 -3
  6. package/dist/{chunk-B23FFWU4.js → chunk-AEXJDCJN.js} +96 -19
  7. package/dist/{chunk-B23FFWU4.js.map → chunk-AEXJDCJN.js.map} +1 -1
  8. package/dist/{chunk-7FFUBF4I.js → chunk-AX22DH6S.js} +2 -2
  9. package/dist/{chunk-CEW5PEHZ.js → chunk-DXKF552B.js} +260 -5
  10. package/dist/chunk-DXKF552B.js.map +1 -0
  11. package/dist/{chunk-6I6L3CMX.js → chunk-KGUKL3CV.js} +2 -2
  12. package/dist/{chunk-ULHPALI5.js → chunk-NDCOOI3V.js} +2 -2
  13. package/dist/{chunk-GQDDWYU2.js → chunk-QBAAZY7W.js} +1 -1
  14. package/dist/{chunk-GQDDWYU2.js.map → chunk-QBAAZY7W.js.map} +1 -1
  15. package/dist/{chunk-6UCVWYDA.js → chunk-QLIUDTY6.js} +4 -4
  16. package/dist/{chunk-XP5WM2LV.js → chunk-SKI23ZZH.js} +4 -4
  17. package/dist/chunk-SVAAONYB.js +21 -0
  18. package/dist/chunk-SVAAONYB.js.map +1 -0
  19. package/dist/{chunk-DGZWFI2G.js → chunk-VBEKL445.js} +17 -8
  20. package/dist/chunk-VBEKL445.js.map +1 -0
  21. package/dist/{chunk-WPL5GERE.js → chunk-ZOCJBJQV.js} +2 -2
  22. package/dist/{chunk-J3WEZGIN.js → chunk-ZRI5VRPG.js} +4 -4
  23. package/dist/cli/bin.js +22 -16
  24. package/dist/cli/bin.js.map +1 -1
  25. package/dist/cli/commands/audit.js +5 -5
  26. package/dist/{db-DXUUAMXT.js → db-DAJX7NNW.js} +50 -9
  27. package/dist/db-DAJX7NNW.js.map +1 -0
  28. package/dist/{digest-NBLECFM7.js → digest-T6TAZNLF.js} +11 -11
  29. package/dist/{digest-collectors-NM7WUWQP.js → digest-collectors-NI2M3UTC.js} +6 -6
  30. package/dist/{dump-EPL7AZFR.js → dump-QK7LNOGC.js} +14 -1
  31. package/dist/{dump-EPL7AZFR.js.map → dump-QK7LNOGC.js.map} +1 -1
  32. package/dist/{email-FMMEUPX6.js → email-LJQT5J7F.js} +6 -7
  33. package/dist/{email-FMMEUPX6.js.map → email-LJQT5J7F.js.map} +1 -1
  34. package/dist/{ensure-site-FU6527OU.js → ensure-site-NSNY2QHN.js} +2 -2
  35. package/dist/{fleet-state-R5LU7IC3.js → fleet-state-3LQUQHYD.js} +2 -2
  36. package/dist/{forms-notify-target-SGDGXXK5.js → forms-notify-target-LYSKME5L.js} +2 -2
  37. package/dist/freeze-A6MUCZU4.js +9 -0
  38. package/dist/{github-signals-DB25UWY4.js → github-signals-4YML6NY5.js} +4 -4
  39. package/dist/{health-mirror-GCDN7BJL.js → health-mirror-7LKC7Q5Z.js} +5 -5
  40. package/dist/index.d.ts +16 -4
  41. package/dist/index.js +22 -22
  42. package/dist/{init-32AWPS7A.js → init-NHKADHB6.js} +6 -6
  43. package/dist/{launch-52WUE4TZ.js → launch-VQJ4Z35C.js} +6 -6
  44. package/dist/{orchestrate-JNKCWU5K.js → orchestrate-6HROYTM6.js} +4 -4
  45. package/dist/{parity-NBYZUBFU.js → parity-623WNFZG.js} +3 -3
  46. package/dist/{pipeline-YIBIQ7XK.js → pipeline-MQJD4CKN.js} +6 -2
  47. package/dist/{preflight-IMTYDDD4.js → preflight-LIN5NCYU.js} +5 -5
  48. package/dist/{prismic-ci-MY2U6NN7.js → prismic-ci-PZ5LCPWT.js} +4 -4
  49. package/dist/{prismic-models-IJWZW2EO.js → prismic-models-6OYYZUR5.js} +3 -3
  50. package/dist/prospect/types.d.ts +8 -0
  51. package/dist/{prospect-audit-WJQI7V5V.js → prospect-audit-DBBXL7EG.js} +8 -6
  52. package/dist/prospect-audit-DBBXL7EG.js.map +1 -0
  53. package/dist/recipes/sync-configs.js +2 -2
  54. package/dist/{render-CVKE7IWC.js → render-P3SBUFVB.js} +3 -3
  55. package/dist/{render-from-row-DOYJDO2L.js → render-from-row-P5CWM3MQ.js} +3 -3
  56. package/dist/{report-2LM2SX67.js → report-2N4PXO3L.js} +30 -14
  57. package/dist/report-2N4PXO3L.js.map +1 -0
  58. package/dist/{report-mirror-AAK3MXHY.js → report-mirror-3ENU6OOK.js} +5 -5
  59. package/dist/{selftest-DIZ5JD2X.js → selftest-CUX2FIQD.js} +6 -6
  60. package/dist/{site-mirror-Q763PLGG.js → site-mirror-RQTEAID5.js} +5 -5
  61. package/dist/{sync-GBFV45WX.js → sync-ESP5ZQUU.js} +3 -3
  62. package/dist/{sync-configs-34JIA6KZ.js → sync-configs-LVBITPLU.js} +3 -3
  63. package/dist/usage-UHKU76VK.js +147 -0
  64. package/dist/usage-UHKU76VK.js.map +1 -0
  65. package/dist/{write-audits-to-airtable-OPBJXGS4.js → write-audits-to-airtable-K352LZQY.js} +3 -3
  66. package/dist/write-audits-to-airtable-K352LZQY.js.map +1 -0
  67. package/package.json +1 -1
  68. package/dist/chunk-CEW5PEHZ.js.map +0 -1
  69. package/dist/chunk-DGZWFI2G.js.map +0 -1
  70. package/dist/chunk-RUPPWAD6.js +0 -7
  71. package/dist/chunk-RUPPWAD6.js.map +0 -1
  72. package/dist/chunk-XKDCR4UE.js.map +0 -1
  73. package/dist/db-DXUUAMXT.js.map +0 -1
  74. package/dist/prospect-audit-WJQI7V5V.js.map +0 -1
  75. package/dist/report-2LM2SX67.js.map +0 -1
  76. /package/dist/{announce-GKD5YJNB.js.map → announce-OJFAS5JT.js.map} +0 -0
  77. /package/dist/{chunk-7UAYMAKR.js.map → chunk-3VQWSE3F.js.map} +0 -0
  78. /package/dist/{chunk-XSOINOPY.js.map → chunk-62NYED6E.js.map} +0 -0
  79. /package/dist/{chunk-7FFUBF4I.js.map → chunk-AX22DH6S.js.map} +0 -0
  80. /package/dist/{chunk-6I6L3CMX.js.map → chunk-KGUKL3CV.js.map} +0 -0
  81. /package/dist/{chunk-ULHPALI5.js.map → chunk-NDCOOI3V.js.map} +0 -0
  82. /package/dist/{chunk-6UCVWYDA.js.map → chunk-QLIUDTY6.js.map} +0 -0
  83. /package/dist/{chunk-XP5WM2LV.js.map → chunk-SKI23ZZH.js.map} +0 -0
  84. /package/dist/{chunk-WPL5GERE.js.map → chunk-ZOCJBJQV.js.map} +0 -0
  85. /package/dist/{chunk-J3WEZGIN.js.map → chunk-ZRI5VRPG.js.map} +0 -0
  86. /package/dist/{digest-NBLECFM7.js.map → digest-T6TAZNLF.js.map} +0 -0
  87. /package/dist/{digest-collectors-NM7WUWQP.js.map → digest-collectors-NI2M3UTC.js.map} +0 -0
  88. /package/dist/{ensure-site-FU6527OU.js.map → ensure-site-NSNY2QHN.js.map} +0 -0
  89. /package/dist/{fleet-state-R5LU7IC3.js.map → fleet-state-3LQUQHYD.js.map} +0 -0
  90. /package/dist/{forms-notify-target-SGDGXXK5.js.map → forms-notify-target-LYSKME5L.js.map} +0 -0
  91. /package/dist/{orchestrate-JNKCWU5K.js.map → freeze-A6MUCZU4.js.map} +0 -0
  92. /package/dist/{github-signals-DB25UWY4.js.map → github-signals-4YML6NY5.js.map} +0 -0
  93. /package/dist/{health-mirror-GCDN7BJL.js.map → health-mirror-7LKC7Q5Z.js.map} +0 -0
  94. /package/dist/{init-32AWPS7A.js.map → init-NHKADHB6.js.map} +0 -0
  95. /package/dist/{launch-52WUE4TZ.js.map → launch-VQJ4Z35C.js.map} +0 -0
  96. /package/dist/{parity-NBYZUBFU.js.map → orchestrate-6HROYTM6.js.map} +0 -0
  97. /package/dist/{pipeline-YIBIQ7XK.js.map → parity-623WNFZG.js.map} +0 -0
  98. /package/dist/{render-CVKE7IWC.js.map → pipeline-MQJD4CKN.js.map} +0 -0
  99. /package/dist/{preflight-IMTYDDD4.js.map → preflight-LIN5NCYU.js.map} +0 -0
  100. /package/dist/{prismic-ci-MY2U6NN7.js.map → prismic-ci-PZ5LCPWT.js.map} +0 -0
  101. /package/dist/{prismic-models-IJWZW2EO.js.map → prismic-models-6OYYZUR5.js.map} +0 -0
  102. /package/dist/{render-from-row-DOYJDO2L.js.map → render-P3SBUFVB.js.map} +0 -0
  103. /package/dist/{write-audits-to-airtable-OPBJXGS4.js.map → render-from-row-P5CWM3MQ.js.map} +0 -0
  104. /package/dist/{report-mirror-AAK3MXHY.js.map → report-mirror-3ENU6OOK.js.map} +0 -0
  105. /package/dist/{selftest-DIZ5JD2X.js.map → selftest-CUX2FIQD.js.map} +0 -0
  106. /package/dist/{site-mirror-Q763PLGG.js.map → site-mirror-RQTEAID5.js.map} +0 -0
  107. /package/dist/{sync-GBFV45WX.js.map → sync-ESP5ZQUU.js.map} +0 -0
  108. /package/dist/{sync-configs-34JIA6KZ.js.map → sync-configs-LVBITPLU.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  REPORT_LIST_COLUMNS
3
- } from "./chunk-GQDDWYU2.js";
3
+ } from "./chunk-QBAAZY7W.js";
4
4
  import {
5
5
  mapReportRecord,
6
6
  mapWebsiteRecord
@@ -129,4 +129,4 @@ export {
129
129
  checkFleetParity,
130
130
  formatParityResult
131
131
  };
132
- //# sourceMappingURL=chunk-7FFUBF4I.js.map
132
+ //# sourceMappingURL=chunk-AX22DH6S.js.map
@@ -950,6 +950,12 @@ async function analyzeSite(url, crawl, checks, deps = defaultAnalyzeDeps()) {
950
950
  return verifyEvidence(parsed, crawl);
951
951
  }
952
952
 
953
+ // src/prospect/claude-code.ts
954
+ import { spawn } from "child_process";
955
+ import os from "os";
956
+ import { StringDecoder } from "string_decoder";
957
+ import { z as z2 } from "zod";
958
+
953
959
  // src/prospect/probes.ts
954
960
  var MAX_QUERIES = 9;
955
961
  var SNIPPET_CHARS = 300;
@@ -1240,14 +1246,250 @@ function claudeWebSearchEngine(createMessage) {
1240
1246
  }
1241
1247
  };
1242
1248
  }
1243
- function defaultEngines() {
1249
+ function defaultEngines(claude = claudeWebSearchEngine()) {
1244
1250
  const engines = [];
1245
1251
  const key = process.env.PERPLEXITY_API_KEY?.trim();
1246
1252
  if (key) engines.push(perplexityEngine(key));
1247
- engines.push(claudeWebSearchEngine());
1253
+ engines.push(claude);
1248
1254
  return engines;
1249
1255
  }
1250
1256
 
1257
+ // src/prospect/claude-code.ts
1258
+ function llmAuthMode(env = process.env) {
1259
+ const raw = (env.PROSPECT_LLM_AUTH ?? "").trim();
1260
+ if (raw === "" || raw === "api") return "api";
1261
+ if (raw === "subscription") return "subscription";
1262
+ throw new Error(`PROSPECT_LLM_AUTH must be "api" or "subscription", got "${raw}"`);
1263
+ }
1264
+ function childEnv(env = process.env) {
1265
+ const out = { ...env };
1266
+ delete out.ANTHROPIC_API_KEY;
1267
+ delete out.ANTHROPIC_AUTH_TOKEN;
1268
+ delete out.CLAUDE_CODE_USE_BEDROCK;
1269
+ delete out.CLAUDE_CODE_USE_VERTEX;
1270
+ delete out.ANTHROPIC_BASE_URL;
1271
+ if (!out.CLAUDE_CODE_OAUTH_TOKEN && env.CLAUDE_OAUTH) {
1272
+ out.CLAUDE_CODE_OAUTH_TOKEN = env.CLAUDE_OAUTH;
1273
+ }
1274
+ return out;
1275
+ }
1276
+ var BASE_DISALLOWED = "Bash,Edit,Write,Read,Glob,Grep,Task,TodoWrite,NotebookEdit,WebFetch,Skill,SlashCommand";
1277
+ var ANALYZE_DISALLOWED = `${BASE_DISALLOWED},WebSearch`;
1278
+ var ISOLATION_ARGS = ["--setting-sources", "project", "--strict-mcp-config"];
1279
+ var PROBE_SYSTEM_PROMPT = "You are an answer engine. Answer the user's question directly and concisely, searching the web when it helps.";
1280
+ var ANALYZE_TIMEOUT_MS = 10 * 6e4;
1281
+ var PROBE_TIMEOUT_MS = 4 * 6e4;
1282
+ var MAX_OUTPUT_BYTES = 64 * 1024 * 1024;
1283
+ function makeClaudeCodeRun(binary = "claude") {
1284
+ return ({ args, stdin, env, timeoutMs }) => new Promise((resolve, reject) => {
1285
+ const child = spawn(binary, args, { env, cwd: os.tmpdir(), stdio: ["pipe", "pipe", "pipe"] });
1286
+ const outDecoder = new StringDecoder("utf8");
1287
+ const errDecoder = new StringDecoder("utf8");
1288
+ let stdout = "";
1289
+ let stderr = "";
1290
+ let settled = false;
1291
+ const timer = setTimeout(() => {
1292
+ settled = true;
1293
+ child.kill("SIGKILL");
1294
+ reject(new Error(`claude -p timed out after ${timeoutMs}ms`));
1295
+ }, timeoutMs);
1296
+ const guard = () => {
1297
+ if (stdout.length + stderr.length <= MAX_OUTPUT_BYTES) return;
1298
+ settled = true;
1299
+ clearTimeout(timer);
1300
+ child.kill("SIGKILL");
1301
+ reject(new Error("claude -p produced more output than any real run should"));
1302
+ };
1303
+ child.stdout.on("data", (d) => {
1304
+ stdout += outDecoder.write(d);
1305
+ guard();
1306
+ });
1307
+ child.stderr.on("data", (d) => {
1308
+ stderr += errDecoder.write(d);
1309
+ guard();
1310
+ });
1311
+ child.stdin.on("error", () => {
1312
+ });
1313
+ child.on("error", (err) => {
1314
+ if (settled) return;
1315
+ settled = true;
1316
+ clearTimeout(timer);
1317
+ reject(err);
1318
+ });
1319
+ child.on("close", (code) => {
1320
+ if (settled) return;
1321
+ settled = true;
1322
+ clearTimeout(timer);
1323
+ resolve({ stdout: stdout + outDecoder.end(), stderr: stderr + errDecoder.end(), code });
1324
+ });
1325
+ child.stdin.end(stdin);
1326
+ });
1327
+ }
1328
+ var defaultClaudeCodeRun = makeClaudeCodeRun();
1329
+ function contentBlocks(ev) {
1330
+ const content = ev.message?.content;
1331
+ if (!Array.isArray(content)) return [];
1332
+ return content.filter((b) => typeof b === "object" && b !== null);
1333
+ }
1334
+ function analyzeJsonSchema() {
1335
+ const { $schema: _meta, ...schema } = z2.toJSONSchema(AnalyzeSchema);
1336
+ return JSON.stringify(schema);
1337
+ }
1338
+ function claudeCodeAnalyzeDeps(run = defaultClaudeCodeRun) {
1339
+ return {
1340
+ async run({ system, user }) {
1341
+ const args = [
1342
+ "-p",
1343
+ "--output-format",
1344
+ "json",
1345
+ "--json-schema",
1346
+ analyzeJsonSchema(),
1347
+ "--system-prompt",
1348
+ system,
1349
+ "--model",
1350
+ "claude-opus-5",
1351
+ "--no-session-persistence",
1352
+ "--disallowedTools",
1353
+ ANALYZE_DISALLOWED,
1354
+ ...ISOLATION_ARGS,
1355
+ // Spend bound: a real analyze measured ~$0.20-equivalent; this is a
1356
+ // runaway backstop, not a working ceiling.
1357
+ "--max-budget-usd",
1358
+ "5"
1359
+ ];
1360
+ const res = await run({ args, stdin: user, env: childEnv(), timeoutMs: ANALYZE_TIMEOUT_MS });
1361
+ if (res.code !== 0) {
1362
+ throw new Error(`claude -p (analyze) exited ${res.code}: ${res.stderr.slice(0, 400)}`);
1363
+ }
1364
+ let envelope;
1365
+ try {
1366
+ envelope = JSON.parse(res.stdout);
1367
+ } catch {
1368
+ throw new Error(
1369
+ `claude -p (analyze) printed something other than the JSON envelope: ${res.stdout.slice(0, 200)}`
1370
+ );
1371
+ }
1372
+ if (envelope.is_error || envelope.subtype !== "success") {
1373
+ throw new Error(
1374
+ `claude -p (analyze) failed (${envelope.subtype ?? "unknown"}): ${String(envelope.result ?? "").slice(0, 400)}`
1375
+ );
1376
+ }
1377
+ if (envelope.structured_output === void 0) {
1378
+ throw new Error("claude -p (analyze) returned no structured_output");
1379
+ }
1380
+ return envelope.structured_output;
1381
+ }
1382
+ };
1383
+ }
1384
+ function extractLinksArray(text) {
1385
+ const at = text.indexOf("Links:");
1386
+ if (at < 0) return null;
1387
+ const start = text.indexOf("[", at);
1388
+ if (start < 0) return null;
1389
+ let depth = 0;
1390
+ let inString = false;
1391
+ let escaped = false;
1392
+ for (let i = start; i < text.length; i++) {
1393
+ const ch = text[i];
1394
+ if (escaped) {
1395
+ escaped = false;
1396
+ continue;
1397
+ }
1398
+ if (ch === "\\") {
1399
+ escaped = true;
1400
+ continue;
1401
+ }
1402
+ if (ch === '"') {
1403
+ inString = !inString;
1404
+ continue;
1405
+ }
1406
+ if (inString) continue;
1407
+ if (ch === "[") depth++;
1408
+ else if (ch === "]" && --depth === 0) {
1409
+ try {
1410
+ const parsed = JSON.parse(text.slice(start, i + 1));
1411
+ return Array.isArray(parsed) ? parsed : null;
1412
+ } catch {
1413
+ return null;
1414
+ }
1415
+ }
1416
+ }
1417
+ return null;
1418
+ }
1419
+ function urlsFromSearchResult(text) {
1420
+ const links = extractLinksArray(text);
1421
+ if (links) {
1422
+ return links.map((l) => l.url).filter((u) => typeof u === "string");
1423
+ }
1424
+ return [...text.matchAll(/https?:\/\/[^\s"'<>\])]+/g)].map((m) => m[0]);
1425
+ }
1426
+ function claudeCodeEngine(run = defaultClaudeCodeRun) {
1427
+ return {
1428
+ name: "claude-code",
1429
+ async ask(query) {
1430
+ const args = [
1431
+ "-p",
1432
+ // stream-json is refused in print mode without --verbose.
1433
+ "--verbose",
1434
+ "--output-format",
1435
+ "stream-json",
1436
+ "--allowedTools",
1437
+ "WebSearch",
1438
+ "--disallowedTools",
1439
+ BASE_DISALLOWED,
1440
+ "--model",
1441
+ PROBE_MODEL,
1442
+ "--no-session-persistence",
1443
+ "--system-prompt",
1444
+ PROBE_SYSTEM_PROMPT,
1445
+ ...ISOLATION_ARGS,
1446
+ // The API engine bounds its loop (4 turns, 4 searches); the CLI has no
1447
+ // turn flag on this build, so bound by computed spend instead — a real
1448
+ // probe measured ~$0.40-equivalent.
1449
+ "--max-budget-usd",
1450
+ "2"
1451
+ ];
1452
+ const res = await run({ args, stdin: query, env: childEnv(), timeoutMs: PROBE_TIMEOUT_MS });
1453
+ if (res.code !== 0) {
1454
+ throw new Error(`claude -p (probe) exited ${res.code}: ${res.stderr.slice(0, 400)}`);
1455
+ }
1456
+ const events = res.stdout.split("\n").filter(Boolean).flatMap((line) => {
1457
+ try {
1458
+ return [JSON.parse(line)];
1459
+ } catch {
1460
+ return [];
1461
+ }
1462
+ });
1463
+ const searchIds = /* @__PURE__ */ new Set();
1464
+ for (const ev of events) {
1465
+ if (ev.type !== "assistant") continue;
1466
+ for (const block of contentBlocks(ev)) {
1467
+ if (block.type === "tool_use" && block.name === "WebSearch") searchIds.add(block.id);
1468
+ }
1469
+ }
1470
+ const citedDomains = [];
1471
+ for (const ev of events) {
1472
+ if (ev.type !== "user") continue;
1473
+ for (const block of contentBlocks(ev)) {
1474
+ if (block.type !== "tool_result" || typeof block.content !== "string") continue;
1475
+ if (!searchIds.has(block.tool_use_id) || block.is_error === true) continue;
1476
+ citedDomains.push(...urlsFromSearchResult(block.content).map(domainOf));
1477
+ }
1478
+ }
1479
+ const result = events.find((ev) => ev.type === "result");
1480
+ if (!result) {
1481
+ throw new Error("claude -p (probe) produced no result event");
1482
+ }
1483
+ if (result.is_error || result.subtype !== "success") {
1484
+ throw new Error(
1485
+ `claude -p (probe) failed (${result.subtype ?? "unknown"}): ${String(result.result ?? "").slice(0, 400)}`
1486
+ );
1487
+ }
1488
+ return { answer: typeof result.result === "string" ? result.result : "", citedDomains };
1489
+ }
1490
+ };
1491
+ }
1492
+
1251
1493
  // src/prospect/lighthouse.ts
1252
1494
  function defaultLighthouseDeps() {
1253
1495
  return {
@@ -1282,6 +1524,15 @@ async function runLighthouse(url, deps = defaultLighthouseDeps()) {
1282
1524
  }
1283
1525
 
1284
1526
  // src/prospect/pipeline.ts
1527
+ function envAnalyzeDeps(factories = {
1528
+ api: defaultAnalyzeDeps,
1529
+ subscription: claudeCodeAnalyzeDeps
1530
+ }) {
1531
+ return llmAuthMode() === "subscription" ? factories.subscription() : factories.api();
1532
+ }
1533
+ function envEngines() {
1534
+ return llmAuthMode() === "subscription" ? defaultEngines(claudeCodeEngine()) : defaultEngines();
1535
+ }
1285
1536
  var PROBES_SKIPPED = "skipped (--no-probes)";
1286
1537
  var ANALYZE_SKIPPED = "skipped \u2014 the checks stage failed";
1287
1538
  async function stage(name, deps, fn) {
@@ -1297,6 +1548,7 @@ async function stage(name, deps, fn) {
1297
1548
  }
1298
1549
  }
1299
1550
  async function runProspectAudit(url, opts, deps = {}) {
1551
+ const llmAuth = llmAuthMode();
1300
1552
  const crawlDeps = deps.crawl ?? defaultCrawlDeps();
1301
1553
  deps.onStage?.("crawl", "start");
1302
1554
  let crawlData;
@@ -1322,7 +1574,7 @@ async function runProspectAudit(url, opts, deps = {}) {
1322
1574
  const analyze = checks.ok ? await stage(
1323
1575
  "analyze",
1324
1576
  deps,
1325
- async () => analyzeSite(url, crawlData, checks.data, deps.analyze ?? defaultAnalyzeDeps())
1577
+ async () => analyzeSite(url, crawlData, checks.data, deps.analyze ?? envAnalyzeDeps())
1326
1578
  ) : { ok: false, error: ANALYZE_SKIPPED };
1327
1579
  const businessName = opts.business?.trim() || (analyze.ok ? analyze.data.businessName : "") || null;
1328
1580
  const probeOpts = {
@@ -1343,7 +1595,7 @@ async function runProspectAudit(url, opts, deps = {}) {
1343
1595
  categoryQueries: analyze.ok ? analyze.data.categoryQueries : [],
1344
1596
  competitors: opts.competitors ?? []
1345
1597
  },
1346
- deps.engines ?? defaultEngines(),
1598
+ deps.engines ?? envEngines(),
1347
1599
  probeOpts
1348
1600
  )
1349
1601
  );
@@ -1351,6 +1603,7 @@ async function runProspectAudit(url, opts, deps = {}) {
1351
1603
  return {
1352
1604
  url,
1353
1605
  businessName,
1606
+ llmAuth,
1354
1607
  generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
1355
1608
  scores: computeScores({
1356
1609
  checks: checks.ok ? checks.data : null,
@@ -1368,8 +1621,10 @@ async function runProspectAudit(url, opts, deps = {}) {
1368
1621
 
1369
1622
  export {
1370
1623
  resolveBusinessName,
1624
+ envAnalyzeDeps,
1625
+ envEngines,
1371
1626
  PROBES_SKIPPED,
1372
1627
  ANALYZE_SKIPPED,
1373
1628
  runProspectAudit
1374
1629
  };
1375
- //# sourceMappingURL=chunk-CEW5PEHZ.js.map
1630
+ //# sourceMappingURL=chunk-DXKF552B.js.map