@tokenfactory/acc-runner 0.29.4 → 0.33.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.
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -2
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +19 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +169 -8
- package/dist/doctor.js.map +1 -1
- package/dist/engines/claude-code.d.ts +9 -0
- package/dist/engines/claude-code.d.ts.map +1 -0
- package/dist/engines/claude-code.js +95 -0
- package/dist/engines/claude-code.js.map +1 -0
- package/dist/engines/codex.d.ts +27 -0
- package/dist/engines/codex.d.ts.map +1 -0
- package/dist/engines/codex.js +178 -0
- package/dist/engines/codex.js.map +1 -0
- package/dist/engines/registry.d.ts +18 -0
- package/dist/engines/registry.d.ts.map +1 -0
- package/dist/engines/registry.js +26 -0
- package/dist/engines/registry.js.map +1 -0
- package/dist/engines/types.d.ts +73 -0
- package/dist/engines/types.d.ts.map +1 -0
- package/dist/engines/types.js +2 -0
- package/dist/engines/types.js.map +1 -0
- package/dist/failure-classifier.d.ts +32 -1
- package/dist/failure-classifier.d.ts.map +1 -1
- package/dist/failure-classifier.js +193 -1
- package/dist/failure-classifier.js.map +1 -1
- package/dist/git.d.ts +10 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +6 -0
- package/dist/git.js.map +1 -1
- package/dist/login.d.ts +17 -0
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +22 -1
- package/dist/login.js.map +1 -1
- package/dist/pr-body.d.ts +53 -0
- package/dist/pr-body.d.ts.map +1 -0
- package/dist/pr-body.js +154 -0
- package/dist/pr-body.js.map +1 -0
- package/dist/prepr-gate.d.ts +132 -2
- package/dist/prepr-gate.d.ts.map +1 -1
- package/dist/prepr-gate.js +260 -9
- package/dist/prepr-gate.js.map +1 -1
- package/dist/provider-auth.d.ts +120 -0
- package/dist/provider-auth.d.ts.map +1 -0
- package/dist/provider-auth.js +184 -0
- package/dist/provider-auth.js.map +1 -0
- package/dist/review-diff-guard.d.ts +12 -0
- package/dist/review-diff-guard.d.ts.map +1 -0
- package/dist/review-diff-guard.js +52 -0
- package/dist/review-diff-guard.js.map +1 -0
- package/dist/review-worktree-cleanup.d.ts +73 -0
- package/dist/review-worktree-cleanup.d.ts.map +1 -0
- package/dist/review-worktree-cleanup.js +103 -0
- package/dist/review-worktree-cleanup.js.map +1 -0
- package/dist/runtime/reviewer.d.ts.map +1 -1
- package/dist/runtime/reviewer.js +72 -29
- package/dist/runtime/reviewer.js.map +1 -1
- package/dist/runtime/worktree.d.ts.map +1 -1
- package/dist/runtime/worktree.js +8 -3
- package/dist/runtime/worktree.js.map +1 -1
- package/dist/task-runner.d.ts +1 -8
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +65 -66
- package/dist/task-runner.js.map +1 -1
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +30 -3
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
|
@@ -134,6 +134,25 @@ export function parseApiErrorStatus(stdout) {
|
|
|
134
134
|
return null;
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* v0.58 (T-5058, FH-1a): the capacity-exhaustion predicate, factored out of
|
|
139
|
+
* `classifyClaudeExit` so callers can detect a spent capacity window WITHOUT a
|
|
140
|
+
* non-zero exit code to key on. Claude's `--output-format=json` envelope can
|
|
141
|
+
* report `{ is_error: true, api_error_status: 429 }` while the CLI still exits
|
|
142
|
+
* 0 (the exit code and the JSON error are set independently, and the code is
|
|
143
|
+
* version-dependent). The exit-code path in the task-runner only classifies on
|
|
144
|
+
* a non-zero exit, so a 0-exit-with-429 would otherwise be mistaken for a
|
|
145
|
+
* successful build — pushing a partial worktree and opening a PR that burns the
|
|
146
|
+
* scarce reviewer capacity this class exists to protect. The authoritative
|
|
147
|
+
* signal is the JSON `api_error_status` 429; CAPACITY_PATTERNS is the
|
|
148
|
+
* plain-text fallback. Kept disjoint from USAGE_LIMIT_PATTERNS (hard billing
|
|
149
|
+
* walls that stay quarantine-worthy), exactly as `classifyClaudeExit` is.
|
|
150
|
+
*/
|
|
151
|
+
export function isCapacityExhausted(stdout, stderr = "") {
|
|
152
|
+
if (parseApiErrorStatus(stdout) === 429)
|
|
153
|
+
return true;
|
|
154
|
+
return matchesAny(`${stderr}\n${stdout}`, CAPACITY_PATTERNS);
|
|
155
|
+
}
|
|
137
156
|
const RESET_TIME_RE = /resets?\s+(?:at\s+|by\s+)?(\d{1,2})(?::(\d{2}))?\s*(am|pm)?\s*(?:\(([^)]+)\))?/i;
|
|
138
157
|
function tzDateParts(instant, tz) {
|
|
139
158
|
const dtf = new Intl.DateTimeFormat("en-US", {
|
|
@@ -255,7 +274,7 @@ export function classifyClaudeExit(exitCode, stderr, stdout, durationMs) {
|
|
|
255
274
|
// result JSON's api_error_status 429; the message patterns are the
|
|
256
275
|
// plain-text fallback. Disjoint from USAGE_LIMIT_PATTERNS below, which
|
|
257
276
|
// stay quarantine-worthy (hard billing walls).
|
|
258
|
-
if (
|
|
277
|
+
if (isCapacityExhausted(stdout, stderr)) {
|
|
259
278
|
return {
|
|
260
279
|
exitCode,
|
|
261
280
|
class: "capacity_exhausted",
|
|
@@ -350,4 +369,177 @@ export function isGitProvisionContention(message) {
|
|
|
350
369
|
return false;
|
|
351
370
|
return matchesAny(message, GIT_PROVISION_CONTENTION_PATTERNS);
|
|
352
371
|
}
|
|
372
|
+
// ===========================================================================
|
|
373
|
+
// M4 (ENGINE-CODEX): OpenAI Codex CLI failure classification — the P0 surface.
|
|
374
|
+
//
|
|
375
|
+
// The single most dangerous mistake here is mapping a HARD
|
|
376
|
+
// wall (a billing/quota exhaustion that will NOT clear on its own) onto a
|
|
377
|
+
// RETRYABLE/PAUSABLE class, so the runner pause-loops forever against a wall.
|
|
378
|
+
// The pattern ORDER below is chosen so the SAFE class always wins on ambiguity:
|
|
379
|
+
//
|
|
380
|
+
// 1. billing wall → usage_limit (quarantine; never retried)
|
|
381
|
+
// 2. subscription cap → subscription_exhausted (spill to api-key)
|
|
382
|
+
// 3. RPM/TPM 429 → capacity_exhausted (pause until reset)
|
|
383
|
+
// 4. auth failure → auth_expired
|
|
384
|
+
// 5. host env failure → env_broken
|
|
385
|
+
// 6. 5xx / conn / idle → claude_unavailable (engine_unavailable: probe+backoff)
|
|
386
|
+
// 7. everything else → task_error
|
|
387
|
+
//
|
|
388
|
+
// OpenAI returns HTTP 429 for BOTH `rate_limit_exceeded` AND `insufficient_quota`,
|
|
389
|
+
// so 429 alone cannot be routed — the billing check (specific quota/billing
|
|
390
|
+
// signatures) runs BEFORE the generic rate-limit check so a quota wall can
|
|
391
|
+
// never be mistaken for a pausable rate limit. Every set is kept disjoint.
|
|
392
|
+
// Hard billing wall (operator must top up / fix billing). OpenAI's canonical
|
|
393
|
+
// form is `insufficient_quota`: "You exceeded your current quota, please check
|
|
394
|
+
// your plan and billing details." A 402 / suspended account is the same class.
|
|
395
|
+
const CODEX_BILLING_PATTERNS = [
|
|
396
|
+
/insufficient_quota/i,
|
|
397
|
+
/exceeded your current quota/i,
|
|
398
|
+
/check your plan and billing/i,
|
|
399
|
+
/billing (?:hard )?limit/i,
|
|
400
|
+
/monthly (?:spend|budget) limit/i,
|
|
401
|
+
/payment required/i,
|
|
402
|
+
/\b402\b/,
|
|
403
|
+
/account.*(?:deactivated|suspended|disabled)/i,
|
|
404
|
+
];
|
|
405
|
+
// ChatGPT subscription session/plan cap — recoverable by SPILLING to the
|
|
406
|
+
// api-key channel (subscription_first). Distinct from the billing wall (which
|
|
407
|
+
// is on the API account, not the ChatGPT plan) and from an RPM rate limit.
|
|
408
|
+
const CODEX_SUBSCRIPTION_PATTERNS = [
|
|
409
|
+
/chatgpt.*(?:usage|message|rate)?\s*limit/i,
|
|
410
|
+
/subscription.*limit/i,
|
|
411
|
+
/\bplan limit\b/i,
|
|
412
|
+
/reached your (?:usage|message|weekly|daily) limit/i,
|
|
413
|
+
/you've (?:hit|reached) your .*limit/i,
|
|
414
|
+
/upgrade (?:to )?(?:chatgpt )?(?:plus|pro)/i,
|
|
415
|
+
];
|
|
416
|
+
// API-key RPM/TPM rate limit — a resource that resets on a clock. Pause until
|
|
417
|
+
// the reset, then resume (never quarantine, never a task_error).
|
|
418
|
+
const CODEX_CAPACITY_PATTERNS = [
|
|
419
|
+
/rate_?limit_?exceeded/i,
|
|
420
|
+
/rate limit reached/i,
|
|
421
|
+
/requests per (?:min|minute|day)/i,
|
|
422
|
+
/tokens per (?:min|minute)/i,
|
|
423
|
+
/try again in \d/i,
|
|
424
|
+
/too many requests/i,
|
|
425
|
+
];
|
|
426
|
+
// Codex auth failures beyond the shared AUTH_EXPIRED_PATTERNS.
|
|
427
|
+
const CODEX_AUTH_PATTERNS = [
|
|
428
|
+
/not logged in/i,
|
|
429
|
+
/run `?codex login`?/i,
|
|
430
|
+
/missing.*openai_api_key/i,
|
|
431
|
+
/no api key/i,
|
|
432
|
+
/incorrect api key/i,
|
|
433
|
+
];
|
|
434
|
+
// Momentarily-unavailable engine (server-side, not the host): 5xx, overloaded,
|
|
435
|
+
// connection drops, timeouts. Probe + backoff, like claude_unavailable. The 5xx
|
|
436
|
+
// match is anchored on an HTTP/error context so a bare "500" in task content
|
|
437
|
+
// (e.g. "500 files changed") does NOT misroute to this class.
|
|
438
|
+
const CODEX_UNAVAILABLE_PATTERNS = [
|
|
439
|
+
/\bhttp[\s/]?5\d\d\b/i,
|
|
440
|
+
/\b5\d\d\b[^\n]{0,40}(?:server|gateway|unavailable|timeout|overloaded|error)/i,
|
|
441
|
+
/server_?error/i,
|
|
442
|
+
/service unavailable/i,
|
|
443
|
+
/bad gateway/i,
|
|
444
|
+
/gateway time-?out/i,
|
|
445
|
+
/overloaded/i,
|
|
446
|
+
/connection (?:error|reset|refused|closed)/i,
|
|
447
|
+
/econnreset|econnrefused|etimedout|enotfound/i,
|
|
448
|
+
];
|
|
449
|
+
const CODEX_RETRY_AFTER_RE = /(?:retry[- ]after|try again in)\D*(\d+(?:\.\d+)?)\s*(ms|s|sec|seconds|m|min|minutes)?/i;
|
|
450
|
+
/**
|
|
451
|
+
* M4: parse a retry-after hint from a codex rate-limit message ("Please try
|
|
452
|
+
* again in 20s" / "retry-after: 1500ms"). Returns the delay in MILLISECONDS,
|
|
453
|
+
* or null when no hint is present — the caller then applies a fixed default
|
|
454
|
+
* pause (pause-till-reset semantics). Bare numbers are read as seconds, matching
|
|
455
|
+
* OpenAI's Retry-After header contract.
|
|
456
|
+
*/
|
|
457
|
+
export function extractCodexRetryAfterMs(text) {
|
|
458
|
+
if (!text)
|
|
459
|
+
return null;
|
|
460
|
+
const m = CODEX_RETRY_AFTER_RE.exec(text);
|
|
461
|
+
if (!m)
|
|
462
|
+
return null;
|
|
463
|
+
const n = Number(m[1]);
|
|
464
|
+
if (!Number.isFinite(n) || n < 0)
|
|
465
|
+
return null;
|
|
466
|
+
const unit = (m[2] ?? "s").toLowerCase();
|
|
467
|
+
if (unit === "ms")
|
|
468
|
+
return Math.round(n);
|
|
469
|
+
if (unit === "m" || unit === "min" || unit === "minutes")
|
|
470
|
+
return Math.round(n * 60_000);
|
|
471
|
+
return Math.round(n * 1_000);
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* M4 (ENGINE-CODEX): classify a codex CLI exit into the shared taxonomy. Same
|
|
475
|
+
* signature contract as `classifyClaudeExit` (the AgentEngine.classifyFailure
|
|
476
|
+
* shape) so the drive loop is engine-agnostic. See the block comment above for
|
|
477
|
+
* the ordering rationale — the billing-before-rate-limit order is the guard
|
|
478
|
+
* against the pause-loop deadlock.
|
|
479
|
+
*/
|
|
480
|
+
export function classifyCodexExit(exitCode, stderr, stdout, durationMs) {
|
|
481
|
+
if (exitCode === 127) {
|
|
482
|
+
return { exitCode, class: "env_broken", detail: "codex binary not found in PATH (exit 127)" };
|
|
483
|
+
}
|
|
484
|
+
const combined = `${stderr}\n${stdout}`;
|
|
485
|
+
// 1. Hard billing wall FIRST (see rationale above). NEVER retried.
|
|
486
|
+
if (matchesAny(combined, CODEX_BILLING_PATTERNS)) {
|
|
487
|
+
return {
|
|
488
|
+
exitCode,
|
|
489
|
+
class: "usage_limit",
|
|
490
|
+
detail: "codex billing/quota wall (insufficient_quota) — quarantine + operator alert, never retried",
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
// 2. ChatGPT subscription cap → spill to the api-key channel.
|
|
494
|
+
if (matchesAny(combined, CODEX_SUBSCRIPTION_PATTERNS)) {
|
|
495
|
+
return {
|
|
496
|
+
exitCode,
|
|
497
|
+
class: "subscription_exhausted",
|
|
498
|
+
detail: "codex ChatGPT subscription cap reached — spill to api-key before any escalation",
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
// 3. RPM/TPM rate limit → pause until reset.
|
|
502
|
+
if (matchesAny(combined, CODEX_CAPACITY_PATTERNS)) {
|
|
503
|
+
return {
|
|
504
|
+
exitCode,
|
|
505
|
+
class: "capacity_exhausted",
|
|
506
|
+
detail: "codex API rate limit (RPM/TPM) reached — runner will pause until reset",
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
// 4. Auth failure (shared patterns + codex-specific "not logged in" etc.).
|
|
510
|
+
if (matchesAny(combined, AUTH_EXPIRED_PATTERNS) || matchesAny(combined, CODEX_AUTH_PATTERNS)) {
|
|
511
|
+
return {
|
|
512
|
+
exitCode,
|
|
513
|
+
class: "auth_expired",
|
|
514
|
+
detail: "codex authentication failure — OPENAI_API_KEY invalid or no ChatGPT login",
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
// 5. Host environment failure (dyld/OOM/missing libs).
|
|
518
|
+
if (matchesAny(combined, ENV_BROKEN_PATTERNS)) {
|
|
519
|
+
return { exitCode, class: "env_broken", detail: "host environment error detected in codex output" };
|
|
520
|
+
}
|
|
521
|
+
// 6. Momentarily-unavailable engine (5xx / connection) → probe + backoff.
|
|
522
|
+
if (matchesAny(combined, CODEX_UNAVAILABLE_PATTERNS)) {
|
|
523
|
+
return {
|
|
524
|
+
exitCode,
|
|
525
|
+
class: "claude_unavailable",
|
|
526
|
+
detail: "codex engine momentarily unavailable (server/connection) — retrying with backoff",
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
// 7. Silent instant-empty fast-exit — ambiguous, treat as retryable
|
|
530
|
+
// engine_unavailable (never quarantine on silence alone; the health probe
|
|
531
|
+
// is the authoritative tiebreaker), mirroring classifyClaudeExit.
|
|
532
|
+
if (durationMs !== undefined &&
|
|
533
|
+
durationMs < FAST_EXIT_MS &&
|
|
534
|
+
stderr.trim().length === 0 &&
|
|
535
|
+
stdout.trim().length < FAST_EXIT_MAX_OUTPUT_BYTES) {
|
|
536
|
+
return {
|
|
537
|
+
exitCode,
|
|
538
|
+
class: "claude_unavailable",
|
|
539
|
+
detail: `codex exited ${exitCode ?? "signal"} in ${durationMs}ms with empty output (silent instant-empty — momentarily unavailable, retrying)`,
|
|
540
|
+
heuristic: true,
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
return { exitCode, class: "task_error", detail: `codex exited ${exitCode ?? "signal"} — task-level failure` };
|
|
544
|
+
}
|
|
353
545
|
//# sourceMappingURL=failure-classifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-classifier.js","sourceRoot":"","sources":["../src/failure-classifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"failure-classifier.js","sourceRoot":"","sources":["../src/failure-classifier.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
CHANGED
|
@@ -21,6 +21,16 @@ export interface GitRunner {
|
|
|
21
21
|
sha: string;
|
|
22
22
|
ts: string;
|
|
23
23
|
} | null>;
|
|
24
|
+
/**
|
|
25
|
+
* V96 (R4): the unified diff of `head` (default HEAD) against `baseRef`,
|
|
26
|
+
* using a three-dot (merge-base) range so it matches what GitHub renders for
|
|
27
|
+
* the PR. Powers the auto-generated PR-body "Files changed" table
|
|
28
|
+
* (pr-body.ts) at PR-open, so the body can never disagree with the pushed
|
|
29
|
+
* diff. Optional on the interface so existing GitRunner test stubs keep
|
|
30
|
+
* compiling; the PR-open caller guards the call with `?.` and falls back to
|
|
31
|
+
* the raw report body when it's absent or throws.
|
|
32
|
+
*/
|
|
33
|
+
diff?(repoPath: string, baseRef: string, head?: string): Promise<string>;
|
|
24
34
|
}
|
|
25
35
|
export type PushErrorKind = "transient" | "terminal";
|
|
26
36
|
/**
|
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,kBAAkB,QAAsC,CAAC;AAEtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEpE;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C;;;;;;;;;;OAUG;IACH,WAAW,CAAC,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,kBAAkB,QAAsC,CAAC;AAEtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEpE;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C;;;;;;;;;;OAUG;IACH,WAAW,CAAC,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC/C;;;;;;;;OAQG;IACH,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAMD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;AAErD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CA0B7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,wCAAwC;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAQD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,eAAO,MAAM,GAAG,EAAE,SAwCjB,CAAC"}
|
package/dist/git.js
CHANGED
|
@@ -123,5 +123,11 @@ export const git = {
|
|
|
123
123
|
return null;
|
|
124
124
|
return { sha: sha.trim(), ts: (ts ?? "").trim() };
|
|
125
125
|
},
|
|
126
|
+
async diff(repoPath, baseRef, head = "HEAD") {
|
|
127
|
+
// Three-dot range = diff of `head` against the merge-base with `baseRef`,
|
|
128
|
+
// which is exactly the change set GitHub attributes to the PR.
|
|
129
|
+
const { stdout } = await run(repoPath, ["diff", `${baseRef}...${head}`]);
|
|
130
|
+
return stdout;
|
|
131
|
+
},
|
|
126
132
|
};
|
|
127
133
|
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,EAA2C,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,uEAAuE;AACvE,wEAAwE;AACxE,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAEtE,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
package/dist/login.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import type { RunnerCaps } from "./types.js";
|
|
2
2
|
export declare const RUNNER_CAPS: RunnerCaps;
|
|
3
|
+
/**
|
|
4
|
+
* Repo-scoped routing — build the register_runner `p_caps` payload with
|
|
5
|
+
* the runner's served-repo scope folded into the `repos` key. The
|
|
6
|
+
* server reads acc.runners.caps.repos via servedReposFromCaps() to route
|
|
7
|
+
* repo-pinned tasks; including the scope here makes it correct from the
|
|
8
|
+
* very first heartbeat (before watch.ts's set_runner_repos refresh runs),
|
|
9
|
+
* so a freshly-registered runner is never briefly repo-blind. Mirrors the
|
|
10
|
+
* jsonb shape the server expects: a string[] of "owner/name" slugs.
|
|
11
|
+
*
|
|
12
|
+
* An empty / undefined scope yields `repos: []`, which servedReposFromCaps
|
|
13
|
+
* treats identically to "absent" — serve every repo, the single-repo
|
|
14
|
+
* default. The capability booleans are preserved verbatim, so this is a
|
|
15
|
+
* pure superset of the previous RUNNER_CAPS payload.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runnerCapsWithRepos(repos: readonly string[] | undefined): RunnerCaps & {
|
|
18
|
+
repos: string[];
|
|
19
|
+
};
|
|
3
20
|
export declare function machineIdentity(): string;
|
|
4
21
|
export declare function detectInstalledModels(): Promise<string[]>;
|
|
5
22
|
export interface LoginOptions {
|
package/dist/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB,eAAO,MAAM,WAAW,EAAE,UAOzB,CAAC;AAEF,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAGD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAe/D;AAiBD,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB,eAAO,MAAM,WAAW,EAAE,UAOzB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACnC,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAElC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAGD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAe/D;AAiBD,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF5E"}
|
package/dist/login.js
CHANGED
|
@@ -26,6 +26,23 @@ export const RUNNER_CAPS = {
|
|
|
26
26
|
readFiles: true,
|
|
27
27
|
executeQueue: true,
|
|
28
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Repo-scoped routing — build the register_runner `p_caps` payload with
|
|
31
|
+
* the runner's served-repo scope folded into the `repos` key. The
|
|
32
|
+
* server reads acc.runners.caps.repos via servedReposFromCaps() to route
|
|
33
|
+
* repo-pinned tasks; including the scope here makes it correct from the
|
|
34
|
+
* very first heartbeat (before watch.ts's set_runner_repos refresh runs),
|
|
35
|
+
* so a freshly-registered runner is never briefly repo-blind. Mirrors the
|
|
36
|
+
* jsonb shape the server expects: a string[] of "owner/name" slugs.
|
|
37
|
+
*
|
|
38
|
+
* An empty / undefined scope yields `repos: []`, which servedReposFromCaps
|
|
39
|
+
* treats identically to "absent" — serve every repo, the single-repo
|
|
40
|
+
* default. The capability booleans are preserved verbatim, so this is a
|
|
41
|
+
* pure superset of the previous RUNNER_CAPS payload.
|
|
42
|
+
*/
|
|
43
|
+
export function runnerCapsWithRepos(repos) {
|
|
44
|
+
return { ...RUNNER_CAPS, repos: repos ? [...repos] : [] };
|
|
45
|
+
}
|
|
29
46
|
export function machineIdentity() {
|
|
30
47
|
return `${process.platform}-${process.arch}-${os.hostname()}`;
|
|
31
48
|
}
|
|
@@ -120,7 +137,11 @@ export async function loginCommand(options = {}) {
|
|
|
120
137
|
p_owner: exchanged.email ?? exchanged.user_id,
|
|
121
138
|
p_machine: machine,
|
|
122
139
|
p_models: models,
|
|
123
|
-
|
|
140
|
+
// Repo-scoped routing: publish the served-repo scope on the very
|
|
141
|
+
// first register so the server's repo-aware router has it before
|
|
142
|
+
// watch.ts's set_runner_repos refresh runs. cfg.repos is resolved
|
|
143
|
+
// from ACC_RUNNER_REPOS / config.json `repos` by loadConfig().
|
|
144
|
+
p_caps: runnerCapsWithRepos(cfg.repos),
|
|
124
145
|
p_version: PACKAGE_VERSION,
|
|
125
146
|
});
|
|
126
147
|
if (error) {
|
package/dist/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V96 (R4) — PR-body "Files changed" table, auto-generated from the actual diff.
|
|
3
|
+
*
|
|
4
|
+
* The author Claude writes a free-text report that becomes the PR body. When
|
|
5
|
+
* that report hand-lists the files it changed, the list drifts from reality (a
|
|
6
|
+
* file dropped during rework, a stray edit never mentioned) and the reviewer is
|
|
7
|
+
* handed a body that contradicts the diff. This module generates the
|
|
8
|
+
* Files-changed table FROM the diff at PR-open time, so the body and the diff
|
|
9
|
+
* can never disagree: a hand-written "## Files changed" section is replaced with
|
|
10
|
+
* the generated one; if none exists it is appended.
|
|
11
|
+
*
|
|
12
|
+
* Pure + dependency-free: `parseDiffFileStats` turns a unified diff into
|
|
13
|
+
* per-file add/remove counts, `renderFilesChangedTable` renders the markdown,
|
|
14
|
+
* `composePrBody` splices it into the report. The caller (runner PR-open path)
|
|
15
|
+
* supplies the diff it computed for the pushed branch.
|
|
16
|
+
*/
|
|
17
|
+
/** Per-file line delta parsed from a unified diff. */
|
|
18
|
+
export interface FileDiffStat {
|
|
19
|
+
/** Repo-relative path (the post-image path; the old path for a pure delete). */
|
|
20
|
+
path: string;
|
|
21
|
+
/** Count of added content lines (`+`, excluding the `+++` header). */
|
|
22
|
+
added: number;
|
|
23
|
+
/** Count of removed content lines (`-`, excluding the `---` header). */
|
|
24
|
+
removed: number;
|
|
25
|
+
/** True when git rendered this file as binary (no line-level diff). */
|
|
26
|
+
binary: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Heading used for the generated section. Matched case-insensitively on splice. */
|
|
29
|
+
export declare const FILES_CHANGED_HEADING = "## Files changed";
|
|
30
|
+
/**
|
|
31
|
+
* Parse a unified diff into per-file add/remove counts, in first-seen order.
|
|
32
|
+
* Recognizes standard `diff --git a/x b/y` records, `+++`/`---` path markers,
|
|
33
|
+
* binary-file markers, and counts only genuine content lines (`+`/`-`, never the
|
|
34
|
+
* `+++`/`---` headers). Renames/copies with no content change surface as a
|
|
35
|
+
* 0/0 (or binary) row so the table still lists them.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseDiffFileStats(diff: string | null | undefined): FileDiffStat[];
|
|
38
|
+
/**
|
|
39
|
+
* Render the parsed stats as a markdown table under FILES_CHANGED_HEADING.
|
|
40
|
+
* Columns: File | +Added | -Removed. Binary files show `binary` in place of
|
|
41
|
+
* counts. An empty stat list renders a single "_(no file changes detected)_"
|
|
42
|
+
* note so the section is never a bare heading.
|
|
43
|
+
*/
|
|
44
|
+
export declare function renderFilesChangedTable(stats: FileDiffStat[]): string;
|
|
45
|
+
/**
|
|
46
|
+
* Splice the generated Files-changed table into a PR body. Any existing
|
|
47
|
+
* `## Files changed` section (up to the next `## ` heading or end of body) is
|
|
48
|
+
* REPLACED so a hand-written list can never contradict the diff; if there is no
|
|
49
|
+
* such section the generated table is appended. The generated table is always
|
|
50
|
+
* derived from `diff`, so the body and the diff are guaranteed consistent.
|
|
51
|
+
*/
|
|
52
|
+
export declare function composePrBody(report: string | null | undefined, diff: string | null | undefined): string;
|
|
53
|
+
//# sourceMappingURL=pr-body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-body.d.ts","sourceRoot":"","sources":["../src/pr-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAexD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,EAAE,CAqDlF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAkBrE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,CA0BR"}
|
package/dist/pr-body.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V96 (R4) — PR-body "Files changed" table, auto-generated from the actual diff.
|
|
3
|
+
*
|
|
4
|
+
* The author Claude writes a free-text report that becomes the PR body. When
|
|
5
|
+
* that report hand-lists the files it changed, the list drifts from reality (a
|
|
6
|
+
* file dropped during rework, a stray edit never mentioned) and the reviewer is
|
|
7
|
+
* handed a body that contradicts the diff. This module generates the
|
|
8
|
+
* Files-changed table FROM the diff at PR-open time, so the body and the diff
|
|
9
|
+
* can never disagree: a hand-written "## Files changed" section is replaced with
|
|
10
|
+
* the generated one; if none exists it is appended.
|
|
11
|
+
*
|
|
12
|
+
* Pure + dependency-free: `parseDiffFileStats` turns a unified diff into
|
|
13
|
+
* per-file add/remove counts, `renderFilesChangedTable` renders the markdown,
|
|
14
|
+
* `composePrBody` splices it into the report. The caller (runner PR-open path)
|
|
15
|
+
* supplies the diff it computed for the pushed branch.
|
|
16
|
+
*/
|
|
17
|
+
/** Heading used for the generated section. Matched case-insensitively on splice. */
|
|
18
|
+
export const FILES_CHANGED_HEADING = "## Files changed";
|
|
19
|
+
/**
|
|
20
|
+
* Strip a git diff path prefix (`a/`, `b/`) and surrounding quotes. git quotes
|
|
21
|
+
* paths containing unusual bytes; we keep the quoted form readable by dropping
|
|
22
|
+
* the wrapping quotes only (the content is already the reviewer's concern).
|
|
23
|
+
*/
|
|
24
|
+
function cleanDiffPath(raw) {
|
|
25
|
+
let p = raw.trim();
|
|
26
|
+
if (p.startsWith('"') && p.endsWith('"') && p.length >= 2)
|
|
27
|
+
p = p.slice(1, -1);
|
|
28
|
+
if (p === "/dev/null")
|
|
29
|
+
return p;
|
|
30
|
+
if (p.startsWith("a/") || p.startsWith("b/"))
|
|
31
|
+
p = p.slice(2);
|
|
32
|
+
return p;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse a unified diff into per-file add/remove counts, in first-seen order.
|
|
36
|
+
* Recognizes standard `diff --git a/x b/y` records, `+++`/`---` path markers,
|
|
37
|
+
* binary-file markers, and counts only genuine content lines (`+`/`-`, never the
|
|
38
|
+
* `+++`/`---` headers). Renames/copies with no content change surface as a
|
|
39
|
+
* 0/0 (or binary) row so the table still lists them.
|
|
40
|
+
*/
|
|
41
|
+
export function parseDiffFileStats(diff) {
|
|
42
|
+
const text = (diff ?? "").replace(/\r\n/g, "\n");
|
|
43
|
+
const stats = [];
|
|
44
|
+
// Prefer the `b/` (post-image) path from the `diff --git` line; fall back to
|
|
45
|
+
// the `+++`/`---` markers so a diff without a `diff --git` header still parses.
|
|
46
|
+
const push = (path) => {
|
|
47
|
+
const stat = { path, added: 0, removed: 0, binary: false };
|
|
48
|
+
stats.push(stat);
|
|
49
|
+
return stat;
|
|
50
|
+
};
|
|
51
|
+
for (const line of text.split("\n")) {
|
|
52
|
+
const gitHeader = /^diff --git (.+) (.+)$/.exec(line);
|
|
53
|
+
if (gitHeader) {
|
|
54
|
+
// Use the post-image path (second operand) by default.
|
|
55
|
+
push(cleanDiffPath(gitHeader[2]));
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// The file currently being parsed is always the last pushed stat. Read it
|
|
59
|
+
// from the array (not a closure-assigned var) so control-flow narrowing to
|
|
60
|
+
// FileDiffStat survives the push() call.
|
|
61
|
+
const current = stats.length > 0 ? stats[stats.length - 1] : null;
|
|
62
|
+
if (!current) {
|
|
63
|
+
// A bare diff (no `diff --git`) — synthesize a record on the first path
|
|
64
|
+
// marker so `git diff --no-prefix` / partial fixtures still parse.
|
|
65
|
+
if (line.startsWith("+++ ") || line.startsWith("--- ")) {
|
|
66
|
+
const p = cleanDiffPath(line.slice(4));
|
|
67
|
+
if (p !== "/dev/null")
|
|
68
|
+
push(p);
|
|
69
|
+
}
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (line.startsWith("+++ ")) {
|
|
73
|
+
const p = cleanDiffPath(line.slice(4));
|
|
74
|
+
// A real post-image path overrides the `diff --git` guess (handles adds
|
|
75
|
+
// where the `a/` side is /dev/null).
|
|
76
|
+
if (p !== "/dev/null")
|
|
77
|
+
current.path = p;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (line.startsWith("--- ")) {
|
|
81
|
+
const p = cleanDiffPath(line.slice(4));
|
|
82
|
+
// Pure deletion: `+++ /dev/null` follows; keep the old path as the label.
|
|
83
|
+
if (p !== "/dev/null" && current.path === "/dev/null")
|
|
84
|
+
current.path = p;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (/^Binary files .* differ$/.test(line) || /^GIT binary patch$/.test(line)) {
|
|
88
|
+
current.binary = true;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (line.startsWith("+"))
|
|
92
|
+
current.added++;
|
|
93
|
+
else if (line.startsWith("-"))
|
|
94
|
+
current.removed++;
|
|
95
|
+
}
|
|
96
|
+
return stats;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Render the parsed stats as a markdown table under FILES_CHANGED_HEADING.
|
|
100
|
+
* Columns: File | +Added | -Removed. Binary files show `binary` in place of
|
|
101
|
+
* counts. An empty stat list renders a single "_(no file changes detected)_"
|
|
102
|
+
* note so the section is never a bare heading.
|
|
103
|
+
*/
|
|
104
|
+
export function renderFilesChangedTable(stats) {
|
|
105
|
+
const lines = [FILES_CHANGED_HEADING, ""];
|
|
106
|
+
if (stats.length === 0) {
|
|
107
|
+
lines.push("_(no file changes detected in the diff)_");
|
|
108
|
+
return lines.join("\n");
|
|
109
|
+
}
|
|
110
|
+
lines.push("| File | +Added | -Removed |");
|
|
111
|
+
lines.push("| --- | ---: | ---: |");
|
|
112
|
+
for (const s of stats) {
|
|
113
|
+
// Escape the pipe so a path containing `|` can't break the table.
|
|
114
|
+
const path = s.path.replace(/\|/g, "\\|");
|
|
115
|
+
if (s.binary) {
|
|
116
|
+
lines.push(`| \`${path}\` | binary | binary |`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
lines.push(`| \`${path}\` | ${s.added} | ${s.removed} |`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return lines.join("\n");
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Splice the generated Files-changed table into a PR body. Any existing
|
|
126
|
+
* `## Files changed` section (up to the next `## ` heading or end of body) is
|
|
127
|
+
* REPLACED so a hand-written list can never contradict the diff; if there is no
|
|
128
|
+
* such section the generated table is appended. The generated table is always
|
|
129
|
+
* derived from `diff`, so the body and the diff are guaranteed consistent.
|
|
130
|
+
*/
|
|
131
|
+
export function composePrBody(report, diff) {
|
|
132
|
+
const table = renderFilesChangedTable(parseDiffFileStats(diff));
|
|
133
|
+
const body = (report ?? "").replace(/\r\n/g, "\n").trimEnd();
|
|
134
|
+
// Find an existing "## Files changed" heading (case-insensitive, at line start).
|
|
135
|
+
const headingRe = /^##[ \t]+files changed[ \t]*$/im;
|
|
136
|
+
const match = headingRe.exec(body);
|
|
137
|
+
if (!match) {
|
|
138
|
+
const base = body.length > 0 ? `${body}\n\n` : "";
|
|
139
|
+
return `${base}${table}\n`;
|
|
140
|
+
}
|
|
141
|
+
const sectionStart = match.index;
|
|
142
|
+
// The replaced section runs until the next `## ` heading at line start.
|
|
143
|
+
const rest = body.slice(sectionStart + match[0].length);
|
|
144
|
+
const nextHeading = /^##[ \t]+\S/m.exec(rest);
|
|
145
|
+
const sectionEnd = nextHeading != null
|
|
146
|
+
? sectionStart + match[0].length + nextHeading.index
|
|
147
|
+
: body.length;
|
|
148
|
+
const before = body.slice(0, sectionStart).trimEnd();
|
|
149
|
+
const after = body.slice(sectionEnd).trimStart();
|
|
150
|
+
const head = before.length > 0 ? `${before}\n\n` : "";
|
|
151
|
+
const tail = after.length > 0 ? `\n\n${after}` : "";
|
|
152
|
+
return `${head}${table}${tail}\n`;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=pr-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-body.js","sourceRoot":"","sources":["../src/pr-body.ts"],"names":[],"mappings":"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"}
|