agent-trace 0.2.9 → 0.2.10
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/agent-trace.cjs +71 -5
- package/package.json +1 -1
package/agent-trace.cjs
CHANGED
|
@@ -24122,6 +24122,10 @@ th{color:var(--text-dim);font-size:10px;text-transform:uppercase;letter-spacing:
|
|
|
24122
24122
|
.outcome-prs{border-top:1px solid var(--panel-border);padding-top:6px;margin-top:4px}
|
|
24123
24123
|
.outcome-pr{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px}
|
|
24124
24124
|
.pr-badge{font-size:10px;padding:1px 5px;border-radius:3px;font-weight:600;text-transform:uppercase;border:1px solid rgba(74,222,128,.3);color:var(--green)}
|
|
24125
|
+
.pr-badge.open{border-color:rgba(34,211,238,.3);color:var(--cyan)}
|
|
24126
|
+
.pr-badge.merged{border-color:rgba(192,132,252,.3);color:var(--purple)}
|
|
24127
|
+
.pr-badge.closed{border-color:rgba(248,113,113,.3);color:var(--red)}
|
|
24128
|
+
.pr-badge.draft{border-color:rgba(102,102,102,.3);color:var(--text-muted)}
|
|
24125
24129
|
.pr-label{color:var(--cyan);font-weight:600}
|
|
24126
24130
|
.pr-repo{color:var(--text-muted)}
|
|
24127
24131
|
.pr-link{color:var(--text-dim);text-decoration:none;font-size:11px}
|
|
@@ -24470,7 +24474,7 @@ function renderReplay() {
|
|
|
24470
24474
|
}
|
|
24471
24475
|
if (replay.pullRequests.length > 0) {
|
|
24472
24476
|
h += '<div class="outcome-prs">';
|
|
24473
|
-
replay.pullRequests.forEach(function(pr){ h += '<div class="outcome-pr"><span class="pr-badge">' + esc(pr.state) + '</span><span class="pr-label">PR #' + pr.prNumber + '</span><span class="pr-repo">' + esc(pr.repo) + '</span>' + (pr.url ? '<a class="pr-link" href="' + esc(pr.url) + '" target="_blank" rel="noopener noreferrer">' + esc(pr.url) + '</a>' : '') + '</div>'; });
|
|
24477
|
+
replay.pullRequests.forEach(function(pr){ h += '<div class="outcome-pr"><span class="pr-badge ' + esc(pr.state) + '">' + esc(pr.state) + '</span><span class="pr-label">PR #' + pr.prNumber + '</span><span class="pr-repo">' + esc(pr.repo) + '</span>' + (pr.url ? '<a class="pr-link" href="' + esc(pr.url) + '" target="_blank" rel="noopener noreferrer">' + esc(pr.url) + '</a>' : '') + '</div>'; });
|
|
24474
24478
|
h += '</div>';
|
|
24475
24479
|
}
|
|
24476
24480
|
h += '</div>';
|
|
@@ -28545,15 +28549,35 @@ function toUpdatedTrace(existing, envelope) {
|
|
|
28545
28549
|
const prUrl = readString4(payload, ["pr_url", "prUrl"]);
|
|
28546
28550
|
const prRepo = readString4(payload, ["pr_repo", "prRepo"]);
|
|
28547
28551
|
const prNumberRaw = readNumber3(payload, ["pr_number", "prNumber"]);
|
|
28552
|
+
const prState = readString4(payload, ["pr_state", "prState"]) ?? "open";
|
|
28553
|
+
const prMergedAt = readString4(payload, ["pr_merged_at", "prMergedAt"]);
|
|
28548
28554
|
if (prUrl !== void 0 && prRepo !== void 0 && prNumberRaw !== void 0) {
|
|
28549
|
-
const
|
|
28550
|
-
if (
|
|
28555
|
+
const trackedIndex = existingPullRequests.findIndex((pr) => pr.prNumber === prNumberRaw && pr.repo === prRepo);
|
|
28556
|
+
if (trackedIndex === -1) {
|
|
28551
28557
|
existingPullRequests.push({
|
|
28552
28558
|
repo: prRepo,
|
|
28553
28559
|
prNumber: prNumberRaw,
|
|
28554
|
-
state:
|
|
28555
|
-
url: prUrl
|
|
28560
|
+
state: prState,
|
|
28561
|
+
url: prUrl,
|
|
28562
|
+
...prState === "merged" && prMergedAt !== void 0 ? { mergedAt: prMergedAt } : {}
|
|
28556
28563
|
});
|
|
28564
|
+
} else if (prState !== "open") {
|
|
28565
|
+
const tracked = existingPullRequests[trackedIndex];
|
|
28566
|
+
existingPullRequests[trackedIndex] = {
|
|
28567
|
+
...tracked,
|
|
28568
|
+
state: prState,
|
|
28569
|
+
...prState === "merged" && prMergedAt !== void 0 ? { mergedAt: prMergedAt } : {}
|
|
28570
|
+
};
|
|
28571
|
+
}
|
|
28572
|
+
} else if (prState !== "open" && prRepo !== void 0 && prNumberRaw !== void 0) {
|
|
28573
|
+
const trackedIndex = existingPullRequests.findIndex((pr) => pr.prNumber === prNumberRaw && pr.repo === prRepo);
|
|
28574
|
+
if (trackedIndex !== -1) {
|
|
28575
|
+
const tracked = existingPullRequests[trackedIndex];
|
|
28576
|
+
existingPullRequests[trackedIndex] = {
|
|
28577
|
+
...tracked,
|
|
28578
|
+
state: prState,
|
|
28579
|
+
...prState === "merged" && prMergedAt !== void 0 ? { mergedAt: prMergedAt } : {}
|
|
28580
|
+
};
|
|
28557
28581
|
}
|
|
28558
28582
|
}
|
|
28559
28583
|
return {
|
|
@@ -29426,6 +29450,40 @@ function extractPrUrl(payload) {
|
|
|
29426
29450
|
if (prUrlMatch !== null && prUrlMatch[0] !== void 0) return prUrlMatch[0];
|
|
29427
29451
|
return void 0;
|
|
29428
29452
|
}
|
|
29453
|
+
function extractPrState(payload) {
|
|
29454
|
+
const record = payload;
|
|
29455
|
+
const explicit = readString5(record, "pr_state") ?? readString5(record, "prState");
|
|
29456
|
+
if (explicit !== void 0) return explicit;
|
|
29457
|
+
const output = readString5(record, "tool_response") ?? readString5(record, "toolResponse") ?? readString5(record, "stdout") ?? readString5(record, "output");
|
|
29458
|
+
const command = pickCommand2(payload);
|
|
29459
|
+
const combined = [command, output].filter((s) => s !== void 0).join("\n");
|
|
29460
|
+
if (combined.length === 0) return void 0;
|
|
29461
|
+
const isGhPr = /\bgh\s+pr\b/.test(combined);
|
|
29462
|
+
if (!isGhPr) return void 0;
|
|
29463
|
+
const jsonState = combined.match(/"state"\s*:\s*"(MERGED|CLOSED|OPEN|DRAFT)"/i);
|
|
29464
|
+
if (jsonState?.[1] !== void 0) {
|
|
29465
|
+
const s = jsonState[1].toLowerCase();
|
|
29466
|
+
return s === "open" ? "open" : s;
|
|
29467
|
+
}
|
|
29468
|
+
const isDraft = /"isDraft"\s*:\s*true/i.test(combined);
|
|
29469
|
+
if (isDraft) return "draft";
|
|
29470
|
+
if (/\bgh\s+pr\s+merge\b/.test(combined) && output !== void 0 && !/error|failed|not merged/i.test(output)) {
|
|
29471
|
+
return "merged";
|
|
29472
|
+
}
|
|
29473
|
+
if (/\bMerged\b/.test(combined)) return "merged";
|
|
29474
|
+
if (/\bClosed\b/.test(combined)) return "closed";
|
|
29475
|
+
if (/\bDraft\b/.test(combined)) return "draft";
|
|
29476
|
+
return void 0;
|
|
29477
|
+
}
|
|
29478
|
+
function extractPrMergedAt(payload) {
|
|
29479
|
+
const record = payload;
|
|
29480
|
+
const explicit = readString5(record, "pr_merged_at") ?? readString5(record, "prMergedAt");
|
|
29481
|
+
if (explicit !== void 0) return explicit;
|
|
29482
|
+
const output = readString5(record, "tool_response") ?? readString5(record, "toolResponse") ?? readString5(record, "stdout") ?? readString5(record, "output");
|
|
29483
|
+
if (output === void 0) return void 0;
|
|
29484
|
+
const match = output.match(/"mergedAt"\s*:\s*"([^"]+)"/);
|
|
29485
|
+
return match?.[1] ?? void 0;
|
|
29486
|
+
}
|
|
29429
29487
|
function parsePrFromUrl(url) {
|
|
29430
29488
|
const match = url.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);
|
|
29431
29489
|
if (match === null || match[1] === void 0 || match[2] === void 0) return void 0;
|
|
@@ -29831,6 +29889,14 @@ function enrichHookPayloadWithGitContext(payload, provider, baselineStore, now)
|
|
|
29831
29889
|
}
|
|
29832
29890
|
}
|
|
29833
29891
|
}
|
|
29892
|
+
const prState = extractPrState(payload);
|
|
29893
|
+
if (prState !== void 0) {
|
|
29894
|
+
patch["pr_state"] = prState;
|
|
29895
|
+
}
|
|
29896
|
+
const prMergedAt = extractPrMergedAt(payload);
|
|
29897
|
+
if (prMergedAt !== void 0) {
|
|
29898
|
+
patch["pr_merged_at"] = prMergedAt;
|
|
29899
|
+
}
|
|
29834
29900
|
if (Object.keys(patch).length === 0) {
|
|
29835
29901
|
return {
|
|
29836
29902
|
payload,
|