@runcofactor/cli 0.23.0 → 0.25.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 (118) hide show
  1. package/README.md +15 -0
  2. package/dist/{account-HWN3W3DJ.js → account-LF73VDLD.js} +3 -3
  3. package/dist/{alert-2XQKWLXV.js → alert-YDCWKNLG.js} +4 -4
  4. package/dist/{api-catalog-3DNTXLUR.js → api-catalog-SUJ4DUAW.js} +3 -3
  5. package/dist/{attachment-EKI6FME3.js → attachment-ZOWURGCW.js} +3 -3
  6. package/dist/{augmentor-WVDFIJVN.js → augmentor-7JFSE344.js} +3 -3
  7. package/dist/{chunk-5XJARJVW.js → chunk-4O7KUIYE.js} +2 -2
  8. package/dist/{chunk-UAF5JTY6.js → chunk-EPMDUCEA.js} +2 -2
  9. package/dist/{chunk-C6GFGMMI.js → chunk-IC3HQSRW.js} +2 -2
  10. package/dist/{chunk-5H5LE7ZJ.js → chunk-LNX22N2L.js} +2 -2
  11. package/dist/{chunk-XFESXI7N.js → chunk-LQ5IBELB.js} +2 -2
  12. package/dist/{chunk-JWPQUDTG.js → chunk-OCT6HQZK.js} +2 -2
  13. package/dist/{chunk-JNBZKVZE.js → chunk-QX7RZ5CZ.js} +1 -1
  14. package/dist/chunk-QX7RZ5CZ.js.map +1 -0
  15. package/dist/{chunk-FZKJERAJ.js → chunk-SL5GDAWL.js} +2 -2
  16. package/dist/{chunk-AHVGWPO3.js → chunk-SZOPRIBA.js} +18 -2
  17. package/dist/chunk-SZOPRIBA.js.map +1 -0
  18. package/dist/{chunk-HXM3JXCX.js → chunk-TVM3VEAP.js} +2 -2
  19. package/dist/{chunk-2RGTNVYR.js → chunk-YI4LFJFK.js} +36 -11
  20. package/dist/{chunk-2RGTNVYR.js.map → chunk-YI4LFJFK.js.map} +1 -1
  21. package/dist/{credential-YCLLYSXW.js → credential-DAK26ZN5.js} +3 -3
  22. package/dist/{credential-template-ILUYGLUZ.js → credential-template-2S4IKKWH.js} +3 -3
  23. package/dist/{dist-FC2BFYMX.js → dist-MQMO6WA3.js} +3 -3
  24. package/dist/{docs-UGJPGZOR.js → docs-SX5RFWWF.js} +3 -3
  25. package/dist/{environment-TENLRRC3.js → environment-2OAJCTFK.js} +3 -3
  26. package/dist/{feature-flag-5EBZJD43.js → feature-flag-2HRNJ6Z6.js} +3 -3
  27. package/dist/index.js +47 -37
  28. package/dist/index.js.map +1 -1
  29. package/dist/{init-YCS4OZFP.js → init-U2Z4ZJCC.js} +3 -3
  30. package/dist/{install-AVD4R5KA.js → install-VYXTJJVC.js} +3 -3
  31. package/dist/{issues-TRD5CQ4R.js → issues-QTX3YE5G.js} +3 -3
  32. package/dist/{knobs-DKAVOTMC.js → knobs-HMONFFHZ.js} +3 -3
  33. package/dist/{list-W3ONQTUH.js → list-46W2OU5D.js} +3 -3
  34. package/dist/{local-LLQFYBF3.js → local-4Y75MUYQ.js} +5 -5
  35. package/dist/{login-X72OFYMF.js → login-GCEIQ5FN.js} +3 -3
  36. package/dist/{mcp-KGMDCJJO.js → mcp-SLYY6DQL.js} +4 -4
  37. package/dist/{metrics-IRO7NK4L.js → metrics-3S4ZEA3B.js} +3 -3
  38. package/dist/{product-FAEOC2BC.js → product-2NW74HNE.js} +3 -3
  39. package/dist/prompts-NKJEQ62J.js +186 -0
  40. package/dist/prompts-NKJEQ62J.js.map +1 -0
  41. package/dist/{property-X6NPV2VK.js → property-E675NNFW.js} +3 -3
  42. package/dist/{record-CJIEUF2Z.js → record-HELPASIE.js} +4 -4
  43. package/dist/{release-PGLSKZCM.js → release-ZZIANCH7.js} +3 -3
  44. package/dist/{sandbox-PBRWVF4Y.js → sandbox-TTFAKM63.js} +82 -7
  45. package/dist/sandbox-TTFAKM63.js.map +1 -0
  46. package/dist/{scenarios-5TJ76A5P.js → scenarios-FWFSTCTV.js} +3 -3
  47. package/dist/{schedule-FRAVS3RH.js → schedule-QIXBH2HF.js} +4 -4
  48. package/dist/{session-E4PFQPBF.js → session-4RB4TRRU.js} +5 -5
  49. package/dist/skills/debug-run/SKILL.md +1 -1
  50. package/dist/{spec-ZNOLW4JR.js → spec-7LGJ4H5W.js} +3 -3
  51. package/dist/{src-OLQ7ZFHS.js → src-F4UX4PMP.js} +140 -8
  52. package/dist/src-F4UX4PMP.js.map +1 -0
  53. package/dist/{src-GEMLVCW4.js → src-FW7TIXEQ.js} +3 -3
  54. package/dist/{start-EV7J2TEF.js → start-IEUE53KY.js} +3 -3
  55. package/dist/{tag-UXKWRACA.js → tag-J5SX224K.js} +4 -4
  56. package/dist/{task-VDLJQKUB.js → task-ONZVZQAQ.js} +3 -3
  57. package/dist/{test-suite-SOM2MTNH.js → test-suite-STGE6IAV.js} +5 -5
  58. package/dist/{trace-DZCJO27U.js → trace-O5BVV7ZU.js} +4 -4
  59. package/dist/{triage-UQAB5HGG.js → triage-VS3S7GXN.js} +4 -4
  60. package/dist/{utilities-D7EYIATI.js → utilities-ARHQATQ6.js} +3 -3
  61. package/dist/{workflow-X7QNGJJ2.js → workflow-5FJ4D62D.js} +29 -32
  62. package/dist/workflow-5FJ4D62D.js.map +1 -0
  63. package/dist/{workflow-cache-ZMYUGEPB.js → workflow-cache-PDLY7XLW.js} +6 -6
  64. package/dist/{workflow-debug-LQKP27VI.js → workflow-debug-6IJQ5C3X.js} +6 -6
  65. package/dist/{workflow-proposals-NEXXWL3O.js → workflow-proposals-MTHYBJGV.js} +3 -3
  66. package/package.json +1 -1
  67. package/dist/chunk-AHVGWPO3.js.map +0 -1
  68. package/dist/chunk-JNBZKVZE.js.map +0 -1
  69. package/dist/sandbox-PBRWVF4Y.js.map +0 -1
  70. package/dist/src-OLQ7ZFHS.js.map +0 -1
  71. package/dist/workflow-X7QNGJJ2.js.map +0 -1
  72. /package/dist/{account-HWN3W3DJ.js.map → account-LF73VDLD.js.map} +0 -0
  73. /package/dist/{alert-2XQKWLXV.js.map → alert-YDCWKNLG.js.map} +0 -0
  74. /package/dist/{api-catalog-3DNTXLUR.js.map → api-catalog-SUJ4DUAW.js.map} +0 -0
  75. /package/dist/{attachment-EKI6FME3.js.map → attachment-ZOWURGCW.js.map} +0 -0
  76. /package/dist/{augmentor-WVDFIJVN.js.map → augmentor-7JFSE344.js.map} +0 -0
  77. /package/dist/{chunk-5XJARJVW.js.map → chunk-4O7KUIYE.js.map} +0 -0
  78. /package/dist/{chunk-UAF5JTY6.js.map → chunk-EPMDUCEA.js.map} +0 -0
  79. /package/dist/{chunk-C6GFGMMI.js.map → chunk-IC3HQSRW.js.map} +0 -0
  80. /package/dist/{chunk-5H5LE7ZJ.js.map → chunk-LNX22N2L.js.map} +0 -0
  81. /package/dist/{chunk-XFESXI7N.js.map → chunk-LQ5IBELB.js.map} +0 -0
  82. /package/dist/{chunk-JWPQUDTG.js.map → chunk-OCT6HQZK.js.map} +0 -0
  83. /package/dist/{chunk-FZKJERAJ.js.map → chunk-SL5GDAWL.js.map} +0 -0
  84. /package/dist/{chunk-HXM3JXCX.js.map → chunk-TVM3VEAP.js.map} +0 -0
  85. /package/dist/{credential-YCLLYSXW.js.map → credential-DAK26ZN5.js.map} +0 -0
  86. /package/dist/{credential-template-ILUYGLUZ.js.map → credential-template-2S4IKKWH.js.map} +0 -0
  87. /package/dist/{dist-FC2BFYMX.js.map → dist-MQMO6WA3.js.map} +0 -0
  88. /package/dist/{docs-UGJPGZOR.js.map → docs-SX5RFWWF.js.map} +0 -0
  89. /package/dist/{environment-TENLRRC3.js.map → environment-2OAJCTFK.js.map} +0 -0
  90. /package/dist/{feature-flag-5EBZJD43.js.map → feature-flag-2HRNJ6Z6.js.map} +0 -0
  91. /package/dist/{init-YCS4OZFP.js.map → init-U2Z4ZJCC.js.map} +0 -0
  92. /package/dist/{install-AVD4R5KA.js.map → install-VYXTJJVC.js.map} +0 -0
  93. /package/dist/{issues-TRD5CQ4R.js.map → issues-QTX3YE5G.js.map} +0 -0
  94. /package/dist/{knobs-DKAVOTMC.js.map → knobs-HMONFFHZ.js.map} +0 -0
  95. /package/dist/{list-W3ONQTUH.js.map → list-46W2OU5D.js.map} +0 -0
  96. /package/dist/{local-LLQFYBF3.js.map → local-4Y75MUYQ.js.map} +0 -0
  97. /package/dist/{login-X72OFYMF.js.map → login-GCEIQ5FN.js.map} +0 -0
  98. /package/dist/{mcp-KGMDCJJO.js.map → mcp-SLYY6DQL.js.map} +0 -0
  99. /package/dist/{metrics-IRO7NK4L.js.map → metrics-3S4ZEA3B.js.map} +0 -0
  100. /package/dist/{product-FAEOC2BC.js.map → product-2NW74HNE.js.map} +0 -0
  101. /package/dist/{property-X6NPV2VK.js.map → property-E675NNFW.js.map} +0 -0
  102. /package/dist/{record-CJIEUF2Z.js.map → record-HELPASIE.js.map} +0 -0
  103. /package/dist/{release-PGLSKZCM.js.map → release-ZZIANCH7.js.map} +0 -0
  104. /package/dist/{scenarios-5TJ76A5P.js.map → scenarios-FWFSTCTV.js.map} +0 -0
  105. /package/dist/{schedule-FRAVS3RH.js.map → schedule-QIXBH2HF.js.map} +0 -0
  106. /package/dist/{session-E4PFQPBF.js.map → session-4RB4TRRU.js.map} +0 -0
  107. /package/dist/{spec-ZNOLW4JR.js.map → spec-7LGJ4H5W.js.map} +0 -0
  108. /package/dist/{src-GEMLVCW4.js.map → src-FW7TIXEQ.js.map} +0 -0
  109. /package/dist/{start-EV7J2TEF.js.map → start-IEUE53KY.js.map} +0 -0
  110. /package/dist/{tag-UXKWRACA.js.map → tag-J5SX224K.js.map} +0 -0
  111. /package/dist/{task-VDLJQKUB.js.map → task-ONZVZQAQ.js.map} +0 -0
  112. /package/dist/{test-suite-SOM2MTNH.js.map → test-suite-STGE6IAV.js.map} +0 -0
  113. /package/dist/{trace-DZCJO27U.js.map → trace-O5BVV7ZU.js.map} +0 -0
  114. /package/dist/{triage-UQAB5HGG.js.map → triage-VS3S7GXN.js.map} +0 -0
  115. /package/dist/{utilities-D7EYIATI.js.map → utilities-ARHQATQ6.js.map} +0 -0
  116. /package/dist/{workflow-cache-ZMYUGEPB.js.map → workflow-cache-PDLY7XLW.js.map} +0 -0
  117. /package/dist/{workflow-debug-LQKP27VI.js.map → workflow-debug-6IJQ5C3X.js.map} +0 -0
  118. /package/dist/{workflow-proposals-NEXXWL3O.js.map → workflow-proposals-MTHYBJGV.js.map} +0 -0
@@ -1387,6 +1387,11 @@ var capScreencastFrames = (frames, cap) => {
1387
1387
  import * as fs10 from "fs/promises";
1388
1388
  var MAX_NOTABLE_EVENTS = 5;
1389
1389
  var MAX_HISTORY_LOOKBACK = 10;
1390
+ var MAX_DIVERGENCE_CANDIDATES = 5;
1391
+ var MAX_INTENDED_INPUTS = 4;
1392
+ var CHURN_MIN_THOUGHTS = 8;
1393
+ var CHURN_MEDIAN_MULTIPLE = 1.5;
1394
+ var CHURN_MIN_DOM_PROBES = 2;
1390
1395
  var isCleanPassStatus = (s) => s === "passed" || s === "success";
1391
1396
  var isFlakyPassStatus = (s) => s === "flaky_success";
1392
1397
  var isPassStatus = (s) => isCleanPassStatus(s) || isFlakyPassStatus(s);
@@ -1435,6 +1440,7 @@ var writeSummary = async (input) => {
1435
1440
  lines.push("**Hypothesis. Verify before trusting \u2014 root cause may be upstream.**");
1436
1441
  lines.push("");
1437
1442
  }
1443
+ for (const l of buildDivergenceSection(input)) lines.push(l);
1438
1444
  const seedRuns = input.seedRuns ?? [];
1439
1445
  if (seedRuns.length > 0) {
1440
1446
  lines.push("## Seed flows");
@@ -1623,6 +1629,70 @@ var buildHistoryHint = (runs, currentRunId, lastGreenComparison, greenRunAccess)
1623
1629
  return out;
1624
1630
  };
1625
1631
  var formatRelativePrefix = (timestampMs, baselineMs) => baselineMs !== null ? `[${formatRelative(timestampMs - baselineMs)}]` : "[T+?]";
1632
+ var computeCandidateUpstreamDivergences = (input) => {
1633
+ if (isCleanPassStatus(input.runStatus)) return [];
1634
+ const steps = input.steps;
1635
+ if (steps.length === 0) return [];
1636
+ const anchor = input.reportedFailure.failedStepOrderIndex;
1637
+ const referencedVars = new Set(input.failedStepReferencedVars ?? []);
1638
+ const allCounts = steps.map((s) => s.thoughtCount ?? 0).sort((a, b) => a - b);
1639
+ const median = allCounts.length === 0 ? 0 : allCounts[Math.floor((allCounts.length - 1) / 2)];
1640
+ const churnThreshold = Math.max(CHURN_MIN_THOUGHTS, median * CHURN_MEDIAN_MULTIPLE);
1641
+ const maxThoughts = allCounts.length > 0 ? allCounts[allCounts.length - 1] : 0;
1642
+ const candidates = [];
1643
+ for (const s of steps) {
1644
+ if (s.status === "failed") continue;
1645
+ if (anchor !== null && s.orderIndex >= anchor) continue;
1646
+ const reasons = [];
1647
+ let highSignal = false;
1648
+ if (s.cacheOutcome === "fallback") {
1649
+ const why = s.cacheFailureCategory ?? s.cacheOutcomeReason;
1650
+ reasons.push(`ejected cache\u2192live${why ? ` (${why})` : ""}; post-state never cache-verified`);
1651
+ }
1652
+ const thoughts = s.thoughtCount ?? 0;
1653
+ const probes = s.domProbeCount ?? 0;
1654
+ if (thoughts >= churnThreshold && probes >= CHURN_MIN_DOM_PROBES) {
1655
+ const lead = thoughts === maxThoughts ? "highest churn in run" : "high agent churn";
1656
+ reasons.push(`${lead} (${thoughts} thoughts, ${probes} DOM probes) yet marked ${s.status}`);
1657
+ highSignal = true;
1658
+ }
1659
+ for (const v of s.variablesSet ?? []) {
1660
+ if (v.extracted && referencedVars.has(v.key)) {
1661
+ reasons.push(
1662
+ `produced $var.${v.key} (extracted), which the failing step depends on \u2014 confirm that value is valid before treating the current page state as external behavior`
1663
+ );
1664
+ highSignal = true;
1665
+ }
1666
+ }
1667
+ if (reasons.length === 0) continue;
1668
+ const intendedInputs = (s.variablesSet ?? []).filter((v) => v.source === "inputValue" && v.value !== null).slice(0, MAX_INTENDED_INPUTS);
1669
+ candidates.push({ step: s, reasons, intendedInputs, highSignal });
1670
+ }
1671
+ candidates.sort(
1672
+ (a, b) => a.highSignal !== b.highSignal ? a.highSignal ? -1 : 1 : a.step.orderIndex - b.step.orderIndex
1673
+ );
1674
+ const selected = candidates.slice(0, MAX_DIVERGENCE_CANDIDATES);
1675
+ selected.sort((a, b) => a.step.orderIndex - b.step.orderIndex);
1676
+ return selected;
1677
+ };
1678
+ var buildDivergenceSection = (input) => {
1679
+ const candidates = computeCandidateUpstreamDivergences(input);
1680
+ if (candidates.length === 0) return [];
1681
+ const out = [];
1682
+ out.push("## \u26A0 Candidate upstream divergences");
1683
+ out.push(
1684
+ "Heuristic candidates only \u2014 each is a place to START, not a root cause. Confirm or rule out every one by walking backwards and verifying the step's EFFECT (the value selected, the field populated, the record created) from its screenshot/DOM \u2014 not its success flag. This list is NOT exhaustive; an upstream cause can exist with no hint here."
1685
+ );
1686
+ for (const c of candidates) {
1687
+ const name = c.step.name ?? "(unnamed)";
1688
+ const reasons = c.reasons.join("; ");
1689
+ const inputs = c.intendedInputs.length > 0 ? ` [configured inputs: ${c.intendedInputs.map((v) => `${v.key}=${truncate(oneLine(String(v.value)), 40)}`).join(", ")}]` : "";
1690
+ const ref = ` \`${stepRollupRelativePath(c.step.orderIndex, c.step.id)}\``;
1691
+ out.push(`- Step ${c.step.orderIndex} "${name}": ${reasons}.${inputs}${ref}`);
1692
+ }
1693
+ out.push("");
1694
+ return out;
1695
+ };
1626
1696
 
1627
1697
  // ../diagnostic-workspace/src/assemble-workspace.ts
1628
1698
  var assembleWorkspace = async (input) => {
@@ -1736,8 +1806,18 @@ var assembleWorkspace = async (input) => {
1736
1806
  durationMs: s.durationMs,
1737
1807
  cacheOutcome: s.cacheOutcome,
1738
1808
  cacheHitSource: s.cacheHitSource,
1809
+ cacheOutcomeReason: s.cacheOutcomeReason,
1810
+ cacheFailureCategory: s.cacheFailureCategory,
1811
+ variablesSet: s.variablesSet,
1812
+ thoughtCount: s.thoughtCount,
1813
+ domProbeCount: s.domProbeCount,
1739
1814
  errorMessage: s.errorMessage
1740
1815
  })),
1816
+ // Variable keys the failing step's node config references (`$var.X`) — drives the
1817
+ // upstream-divergence lineage heuristic. Empty when no failed node / no references.
1818
+ failedStepReferencedVars: runData.failedNodeId ? extractReferencedVarKeys(
1819
+ runData.nodes.find((n) => n.id === runData.failedNodeId)?.configJson
1820
+ ) : [],
1741
1821
  network: eventProjection.network,
1742
1822
  consoleLogs: eventProjection.consoleLogs,
1743
1823
  navigation: eventProjection.navigation,
@@ -1778,6 +1858,26 @@ var assembleWorkspace = async (input) => {
1778
1858
  };
1779
1859
  };
1780
1860
  var isPlainObject = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
1861
+ var VAR_REFERENCE_RE = /\$var\.(\w+(?:\.\w+)*)/g;
1862
+ var extractReferencedVarKeys = (configJson) => {
1863
+ if (configJson === null || configJson === void 0) return [];
1864
+ let serialized;
1865
+ try {
1866
+ serialized = typeof configJson === "string" ? configJson : JSON.stringify(configJson);
1867
+ } catch {
1868
+ return [];
1869
+ }
1870
+ if (!serialized) return [];
1871
+ const keys = /* @__PURE__ */ new Set();
1872
+ for (const m of serialized.matchAll(VAR_REFERENCE_RE)) {
1873
+ const path2 = m[1];
1874
+ if (!path2) continue;
1875
+ for (const segment of path2.split(".")) {
1876
+ if (segment) keys.add(segment);
1877
+ }
1878
+ }
1879
+ return [...keys];
1880
+ };
1781
1881
  var stringField = (v) => typeof v === "string" && v.length > 0 ? v : null;
1782
1882
  var normalizeTs = (ts) => {
1783
1883
  if (ts === null || ts === void 0) return null;
@@ -1785,12 +1885,45 @@ var normalizeTs = (ts) => {
1785
1885
  const parsed = Date.parse(ts);
1786
1886
  return Number.isFinite(parsed) ? parsed : null;
1787
1887
  };
1888
+ var DOM_PROBE_TOOL_NAMES = /* @__PURE__ */ new Set(["browser_run_code", "browser_evaluate"]);
1889
+ var projectVariablesSet = (meta) => {
1890
+ const raw = Array.isArray(meta.variablesSet) ? meta.variablesSet : [];
1891
+ const out = [];
1892
+ for (const c of raw) {
1893
+ if (!isPlainObject(c)) continue;
1894
+ const key = stringField(c.key) ?? stringField(c.name);
1895
+ if (!key) continue;
1896
+ const source = stringField(c.source);
1897
+ out.push({
1898
+ key,
1899
+ value: typeof c.value === "string" ? c.value : null,
1900
+ source,
1901
+ extracted: source === "extracted" || typeof c.extractorExpression === "string"
1902
+ });
1903
+ }
1904
+ return out;
1905
+ };
1788
1906
  var projectEvents = (runData) => {
1789
1907
  const baselineMs = runData.timeline.startTimestamp ? Date.parse(runData.timeline.startTimestamp) : null;
1908
+ const thoughts = runData.thoughts.map((t) => ({
1909
+ stepId: t.stepId,
1910
+ timestampMs: Date.parse(t.createdAt),
1911
+ toolName: t.toolName,
1912
+ content: t.content
1913
+ }));
1914
+ const thoughtStatsByStep = /* @__PURE__ */ new Map();
1915
+ for (const t of thoughts) {
1916
+ if (!t.stepId) continue;
1917
+ const cur = thoughtStatsByStep.get(t.stepId) ?? { thoughtCount: 0, domProbeCount: 0 };
1918
+ cur.thoughtCount += 1;
1919
+ if (t.toolName && DOM_PROBE_TOOL_NAMES.has(t.toolName)) cur.domProbeCount += 1;
1920
+ thoughtStatsByStep.set(t.stepId, cur);
1921
+ }
1790
1922
  const steps = runData.steps.map((s) => {
1791
1923
  const meta = isPlainObject(s.metadataJson) ? s.metadataJson : {};
1792
1924
  const startedAtMs = s.startedAt ? Date.parse(s.startedAt) : null;
1793
1925
  const finishedAtMs = s.finishedAt ? Date.parse(s.finishedAt) : null;
1926
+ const churn = thoughtStatsByStep.get(s.id) ?? { thoughtCount: 0, domProbeCount: 0 };
1794
1927
  return {
1795
1928
  id: s.id,
1796
1929
  nodeId: s.nodeId,
@@ -1803,15 +1936,14 @@ var projectEvents = (runData) => {
1803
1936
  durationMs: startedAtMs !== null && finishedAtMs !== null ? finishedAtMs - startedAtMs : null,
1804
1937
  errorMessage: s.errorMessage,
1805
1938
  cacheOutcome: stringField(meta.cacheOutcome),
1806
- cacheHitSource: stringField(meta.cacheHitSource)
1939
+ cacheHitSource: stringField(meta.cacheHitSource),
1940
+ cacheOutcomeReason: stringField(meta.cacheOutcomeReason),
1941
+ cacheFailureCategory: stringField(meta.cacheFailureCategory),
1942
+ variablesSet: projectVariablesSet(meta),
1943
+ thoughtCount: churn.thoughtCount,
1944
+ domProbeCount: churn.domProbeCount
1807
1945
  };
1808
1946
  });
1809
- const thoughts = runData.thoughts.map((t) => ({
1810
- stepId: t.stepId,
1811
- timestampMs: Date.parse(t.createdAt),
1812
- toolName: t.toolName,
1813
- content: t.content
1814
- }));
1815
1947
  const actions = runData.timeline.entries.map((e) => ({
1816
1948
  action: e.action,
1817
1949
  target: e.target ?? null,
@@ -1887,4 +2019,4 @@ export {
1887
2019
  writeStepRollups,
1888
2020
  writeSummary
1889
2021
  };
1890
- //# sourceMappingURL=src-OLQ7ZFHS.js.map
2022
+ //# sourceMappingURL=src-F4UX4PMP.js.map