@newrelic/preflight 1.63.1 → 1.63.3
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/dashboard/subagent-timeline-store.d.ts.map +1 -1
- package/dist/dashboard/subagent-timeline-store.js +17 -11
- package/dist/dashboard/subagent-timeline-store.js.map +1 -1
- package/dist/hooks/copilot-app-usage-watcher.d.ts.map +1 -1
- package/dist/hooks/copilot-app-usage-watcher.js +19 -1
- package/dist/hooks/copilot-app-usage-watcher.js.map +1 -1
- package/dist/metrics/git-efficiency-tracker.d.ts.map +1 -1
- package/dist/metrics/git-efficiency-tracker.js +42 -12
- package/dist/metrics/git-efficiency-tracker.js.map +1 -1
- package/dist/metrics/git-event-classifier.d.ts +38 -4
- package/dist/metrics/git-event-classifier.d.ts.map +1 -1
- package/dist/metrics/git-event-classifier.js +319 -8
- package/dist/metrics/git-event-classifier.js.map +1 -1
- package/dist/metrics/git-workspace-report.d.ts +0 -4
- package/dist/metrics/git-workspace-report.d.ts.map +1 -1
- package/dist/metrics/git-workspace-report.js +14 -8
- package/dist/metrics/git-workspace-report.js.map +1 -1
- package/dist/shared/events/factory.d.ts.map +1 -1
- package/dist/shared/events/factory.js +6 -10
- package/dist/shared/events/factory.js.map +1 -1
- package/dist/shared/events/serialize.d.ts.map +1 -1
- package/dist/shared/events/serialize.js +4 -10
- package/dist/shared/events/serialize.js.map +1 -1
- package/dist/shared/pricing-data.d.ts.map +1 -1
- package/dist/shared/pricing-data.js +803 -67
- package/dist/shared/pricing-data.js.map +1 -1
- package/dist/shared/pricing.d.ts +41 -17
- package/dist/shared/pricing.d.ts.map +1 -1
- package/dist/shared/pricing.js +47 -22
- package/dist/shared/pricing.js.map +1 -1
- package/dist/shared/tokens.d.ts +14 -5
- package/dist/shared/tokens.d.ts.map +1 -1
- package/dist/shared/tokens.js +73 -64
- package/dist/shared/tokens.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,10 @@ export interface GitEvent {
|
|
|
4
4
|
readonly timestamp: number;
|
|
5
5
|
readonly type: GitEventType;
|
|
6
6
|
readonly command?: string;
|
|
7
|
+
/** For one segment of a chained command that failed, true only when the
|
|
8
|
+
* shell's `&&` grouping shows the segment succeeded, and otherwise the
|
|
9
|
+
* command's own `false`. Always false for a segment `&` ran in the
|
|
10
|
+
* background (see `classifyGitSegments`). */
|
|
7
11
|
readonly success: boolean;
|
|
8
12
|
readonly durationMs: number | null;
|
|
9
13
|
/** `owner/name` of the repo this event belongs to, when known. */
|
|
@@ -27,6 +31,18 @@ export interface GitEvent {
|
|
|
27
31
|
readonly files?: readonly string[];
|
|
28
32
|
}
|
|
29
33
|
export type GitEventType = 'merge_conflict' | 'rebase_conflict' | 'merge_abort' | 'rebase_abort' | 'cherry_pick_abort' | 'force_push' | 'force_push_lease' | 'reset_hard' | 'discard_changes' | 'pull' | 'fetch' | 'push' | 'push_rejected' | 'merge' | 'rebase' | 'stash' | 'branch' | 'commit' | 'status' | 'diff' | 'log' | 'worktree' | 'other_git';
|
|
34
|
+
/** Whether a commit segment is `git commit --amend`. */
|
|
35
|
+
export declare function isAmendCommit(command: string): boolean;
|
|
36
|
+
/** A commit that added history: it succeeded and was not an amend, which
|
|
37
|
+
* rewrites a commit instead of adding one. Hydrated commits always qualify.
|
|
38
|
+
* The weekly/30-day report and the per-session `GitEfficiencyTracker` both
|
|
39
|
+
* count commits with this, so the two views agree. */
|
|
40
|
+
export declare function isCountedCommit(event: GitEvent): boolean;
|
|
41
|
+
/** A plain or force push that succeeded. A failed push keeps its push type
|
|
42
|
+
* when its error shows no rejection, as when it fails on auth or exits a
|
|
43
|
+
* `;` list after another step's conflict. Both reducers count pushes with
|
|
44
|
+
* this, as they do commits with `isCountedCommit`. */
|
|
45
|
+
export declare function isCountedPush(event: GitEvent): boolean;
|
|
30
46
|
/**
|
|
31
47
|
* Classify a git command into its event type. The logic is the exact same as
|
|
32
48
|
* the private classifyGitCommand method from GitEfficiencyTracker, extracted
|
|
@@ -105,10 +121,28 @@ export interface ClassifiedGitSegment {
|
|
|
105
121
|
* chained `git commit -m x && git push` yields a commit AND a push instead
|
|
106
122
|
* of whichever verb `classifyGitCommand` ranks first.
|
|
107
123
|
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
124
|
+
* The hook reports one success/error pair for the whole command, so for a
|
|
125
|
+
* failed command each segment's outcome is read off bash's grouping. The
|
|
126
|
+
* failure goes to the segment the error text names (see `errorSegmentIndex`),
|
|
127
|
+
* and the segments `&&` then kept from running are dropped. Rejection text
|
|
128
|
+
* also names the last push that ran and may have failed when other text
|
|
129
|
+
* names another segment, as the pull's conflict does in `git pull; git
|
|
130
|
+
* push`. When the text names none, the failure is taken to be the last
|
|
131
|
+
* command's, but any step of the final `&&` run may be the one that failed,
|
|
132
|
+
* so the steps after its first are dropped as possibly never run. A segment
|
|
133
|
+
* is marked succeeded only when the step the failure goes to running proves
|
|
134
|
+
* it did (see `chainRunBefore`), so a commit before a rejected push or a
|
|
135
|
+
* failing `gh pr create` still counts. That proof needs the quotes to
|
|
136
|
+
* balance: bash refuses a command whose quote never closes, so the `&&` may
|
|
137
|
+
* be quoted text and nothing may have run. Dropping needs no such check,
|
|
138
|
+
* since a dropped step counts nowhere, while a kept one that never ran would
|
|
139
|
+
* still count in the totals that ignore `success`, such as `pullCount` and
|
|
140
|
+
* `forcePushes`. Every other segment keeps the command's `success`, which
|
|
141
|
+
* for a failed command counts no commit or push (see `isCountedCommit` and
|
|
142
|
+
* `isCountedPush`), except that a segment `&` runs in the background is
|
|
143
|
+
* never marked succeeded. The target directory comes from the whole
|
|
144
|
+
* command, so a `cd dir &&` in an earlier segment still attributes every
|
|
145
|
+
* git segment.
|
|
112
146
|
*/
|
|
113
147
|
export declare function classifyGitSegments(command: string, record: ToolCallRecord, resolveRepo: (dir: string | null) => string | null): ClassifiedGitSegment[];
|
|
114
148
|
//# sourceMappingURL=git-event-classifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-event-classifier.d.ts","sourceRoot":"","sources":["../../src/metrics/git-event-classifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"git-event-classifier.d.ts","sourceRoot":"","sources":["../../src/metrics/git-event-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,21 @@ const REJECT_INDICATORS = [
|
|
|
40
40
|
/failed to push/i,
|
|
41
41
|
/Updates were rejected/i,
|
|
42
42
|
];
|
|
43
|
+
// What only a failed `git commit` prints: its own refusals, or a hook failure
|
|
44
|
+
// (husky prints "husky - pre-commit script failed (code 1)").
|
|
45
|
+
const OWN_COMMIT_FAILURE_INDICATORS = [
|
|
46
|
+
/nothing to commit/i,
|
|
47
|
+
/Committing is not possible/i,
|
|
48
|
+
/Aborting commit/i,
|
|
49
|
+
/\b(?:pre-commit|commit-msg)\b.*\b(?:failed|exited)\b/i,
|
|
50
|
+
];
|
|
51
|
+
// What a failed `git commit` prints. The last two also end the status block
|
|
52
|
+
// a conflicting `git stash pop` or `git merge` prints.
|
|
53
|
+
const COMMIT_FAILURE_INDICATORS = [
|
|
54
|
+
...OWN_COMMIT_FAILURE_INDICATORS,
|
|
55
|
+
/nothing added to commit/i,
|
|
56
|
+
/no changes added to commit/i,
|
|
57
|
+
];
|
|
43
58
|
// Conflict file path extraction: "CONFLICT (content): Merge conflict in <path>"
|
|
44
59
|
const CONFLICT_FILE_RE = /Merge conflict in (.+)/g;
|
|
45
60
|
/**
|
|
@@ -58,6 +73,28 @@ function extractConflictFiles(errorOutput) {
|
|
|
58
73
|
}
|
|
59
74
|
return files;
|
|
60
75
|
}
|
|
76
|
+
const AMEND_RE = /\s--amend\b/;
|
|
77
|
+
// A commit message is quoted, so `-m "fix --amend handling"` is no amend.
|
|
78
|
+
const QUOTED_TEXT_RE = /"(?:[^"\\]|\\.)*"|'[^']*'/g;
|
|
79
|
+
/** Whether a commit segment is `git commit --amend`. */
|
|
80
|
+
export function isAmendCommit(command) {
|
|
81
|
+
return AMEND_RE.test(command.replace(QUOTED_TEXT_RE, ''));
|
|
82
|
+
}
|
|
83
|
+
/** A commit that added history: it succeeded and was not an amend, which
|
|
84
|
+
* rewrites a commit instead of adding one. Hydrated commits always qualify.
|
|
85
|
+
* The weekly/30-day report and the per-session `GitEfficiencyTracker` both
|
|
86
|
+
* count commits with this, so the two views agree. */
|
|
87
|
+
export function isCountedCommit(event) {
|
|
88
|
+
return event.type === 'commit' && event.success && !isAmendCommit(event.command ?? '');
|
|
89
|
+
}
|
|
90
|
+
/** A plain or force push that succeeded. A failed push keeps its push type
|
|
91
|
+
* when its error shows no rejection, as when it fails on auth or exits a
|
|
92
|
+
* `;` list after another step's conflict. Both reducers count pushes with
|
|
93
|
+
* this, as they do commits with `isCountedCommit`. */
|
|
94
|
+
export function isCountedPush(event) {
|
|
95
|
+
return (event.success &&
|
|
96
|
+
(event.type === 'push' || event.type === 'force_push' || event.type === 'force_push_lease'));
|
|
97
|
+
}
|
|
61
98
|
// ---------------------------------------------------------------------------
|
|
62
99
|
// Classifier
|
|
63
100
|
// ---------------------------------------------------------------------------
|
|
@@ -366,22 +403,296 @@ export function cdSegmentTarget(segment) {
|
|
|
366
403
|
export function segmentAssignsGhRepo(segment) {
|
|
367
404
|
return GH_REPO_ASSIGNMENT_RE.test(segment);
|
|
368
405
|
}
|
|
406
|
+
// Git verbs whose own output can report a merge/rebase conflict. A plain
|
|
407
|
+
// `git stash` or `git checkout <branch>` cannot, nor can `git merge-base` or
|
|
408
|
+
// `git mergetool`, which `(?![\w-])` keeps from matching as `git merge`. Nor
|
|
409
|
+
// can a `--abort` or `--quit` right after the verb, where `MERGE_ABORT_RE`
|
|
410
|
+
// reads one, since it applies nothing, or `git merge --continue`, which only
|
|
411
|
+
// commits the resolved merge. A rebase, cherry-pick, revert or am's
|
|
412
|
+
// `--continue` or `--skip` applies the next commit or patch, which can
|
|
413
|
+
// conflict.
|
|
414
|
+
const GIT_CONFLICT_CAPABLE_RE = /\bgit\s+(?:merge(?!\s+--continue\b)|rebase|pull|cherry-pick|revert|am|apply|stash\s+(?:pop|apply|branch)|(?:checkout|switch)\b.*\s(?:-m|--merge))(?![\w-])(?!\s+--(?:abort|quit)\b)/;
|
|
415
|
+
// How bash reads a `ShellChain`. `;`, newline and `&` end an and-or list.
|
|
416
|
+
// Within one, `&&` and `||` join pipelines left to right with equal
|
|
417
|
+
// precedence, so `a || b && c` is `(a || b) && c`. `|` joins the commands of
|
|
418
|
+
// one pipeline, whose exit status is its last command's.
|
|
419
|
+
/** Whether `op` joins two commands of one pipeline. `splitShellChain`
|
|
420
|
+
* reports `|&` as `|`. */
|
|
421
|
+
function isPipe(op) {
|
|
422
|
+
return op === '|';
|
|
423
|
+
}
|
|
424
|
+
/** Whether segment `i` sits in an and-or list that `&` runs in the
|
|
425
|
+
* background, whose exit status never reaches the command's. */
|
|
426
|
+
function inBackground(operators, i) {
|
|
427
|
+
let end = i;
|
|
428
|
+
while (operators[end] === '&&' || operators[end] === '||' || isPipe(operators[end]))
|
|
429
|
+
end++;
|
|
430
|
+
return operators[end] === '&';
|
|
431
|
+
}
|
|
432
|
+
/** First segment of the `&&` run holding segment `i`: the pipelines `&&`
|
|
433
|
+
* joins to it, back to a `||` or the start of its and-or list. */
|
|
434
|
+
function andRunStart(operators, i) {
|
|
435
|
+
let start = i;
|
|
436
|
+
while (start > 0 && (operators[start - 1] === '&&' || isPipe(operators[start - 1])))
|
|
437
|
+
start--;
|
|
438
|
+
return start;
|
|
439
|
+
}
|
|
440
|
+
/** Last segment of the pipeline that starts at segment `start`. */
|
|
441
|
+
function pipelineEnd(operators, start) {
|
|
442
|
+
let end = start;
|
|
443
|
+
while (isPipe(operators[end]))
|
|
444
|
+
end++;
|
|
445
|
+
return end;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* The commands `&&` runs segment `target` after, as a chain of their own,
|
|
449
|
+
* or null when `target` follows another operator. `target` ran only if that
|
|
450
|
+
* chain succeeded, so "did `target` running prove segment `i` succeeded" is
|
|
451
|
+
* `segmentSuccessFollowsCommand` asked of it, with that function's handling
|
|
452
|
+
* of `||` fallbacks, groups, pipelines and unbalanced quotes. A `target`
|
|
453
|
+
* piped from another command is taken to prove nothing before it, the
|
|
454
|
+
* reading that counts less in the case it decides: a failure that names no
|
|
455
|
+
* step with a pipeline last, as in `git commit -m x && git log | head -1`,
|
|
456
|
+
* where the commit may be the step that failed.
|
|
457
|
+
*/
|
|
458
|
+
function chainRunBefore(chain, target) {
|
|
459
|
+
if (target < 1 || chain.operators[target - 1] !== '&&')
|
|
460
|
+
return null;
|
|
461
|
+
return {
|
|
462
|
+
segments: chain.segments.slice(0, target),
|
|
463
|
+
operators: chain.operators.slice(0, target - 1),
|
|
464
|
+
quotesBalanced: chain.quotesBalanced,
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
/** Last segment that `&&` kept from running after segment `failed` failed;
|
|
468
|
+
* `failed` itself when the next segment runs anyway, as it does when
|
|
469
|
+
* `failed` is piped into another command. */
|
|
470
|
+
function lastSkippedSegment(operators, failed) {
|
|
471
|
+
if (isPipe(operators[failed]))
|
|
472
|
+
return failed;
|
|
473
|
+
let last = failed;
|
|
474
|
+
while (operators[last] === '&&' || isPipe(operators[last]))
|
|
475
|
+
last++;
|
|
476
|
+
return last;
|
|
477
|
+
}
|
|
478
|
+
/** Last segment that runs a command: the one the command's exit status
|
|
479
|
+
* comes from, if it ran. */
|
|
480
|
+
function lastCommandSegment(segments) {
|
|
481
|
+
let last = segments.length - 1;
|
|
482
|
+
while (last > 0 && segmentRunsNoCommand(segments[last]))
|
|
483
|
+
last--;
|
|
484
|
+
return last;
|
|
485
|
+
}
|
|
486
|
+
/** Index of the last git segment matching `re`, or -1. */
|
|
487
|
+
function lastGitSegment(segments, isGit, re) {
|
|
488
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
489
|
+
if (isGit[i] && re.test(segments[i]))
|
|
490
|
+
return i;
|
|
491
|
+
}
|
|
492
|
+
return -1;
|
|
493
|
+
}
|
|
494
|
+
/** Index of the last `git push` that `skip` doesn't rule out when `error`
|
|
495
|
+
* holds rejection text, or -1. */
|
|
496
|
+
function rejectedPushIndex(segments, isGit, error, skip = () => false) {
|
|
497
|
+
if (!REJECT_INDICATORS.some((re) => re.test(error)))
|
|
498
|
+
return -1;
|
|
499
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
500
|
+
if (isGit[i] && !skip(i) && GIT_PUSH_RE.test(segments[i]))
|
|
501
|
+
return i;
|
|
502
|
+
}
|
|
503
|
+
return -1;
|
|
504
|
+
}
|
|
505
|
+
/** The lines of `error` that any of `indicators` match. */
|
|
506
|
+
function linesMatching(error, indicators) {
|
|
507
|
+
return error
|
|
508
|
+
.split('\n')
|
|
509
|
+
.filter((line) => indicators.some((re) => re.test(line)))
|
|
510
|
+
.join('\n');
|
|
511
|
+
}
|
|
512
|
+
/** The lines of `error` that report a rejected push, so a push classified on
|
|
513
|
+
* them is not typed by the conflict text beside them. */
|
|
514
|
+
function rejectionText(error) {
|
|
515
|
+
return linesMatching(error, REJECT_INDICATORS);
|
|
516
|
+
}
|
|
517
|
+
// What a conflict-capable step prints when it conflicts, unlike the unmerged
|
|
518
|
+
// paths a `git status` lists.
|
|
519
|
+
const STEP_CONFLICT_INDICATORS = [
|
|
520
|
+
/CONFLICT\s*\(/i,
|
|
521
|
+
/Automatic merge failed/i,
|
|
522
|
+
REBASE_CONFLICT_RE,
|
|
523
|
+
];
|
|
524
|
+
const CONFLICT_TEXT_INDICATORS = [
|
|
525
|
+
...MERGE_CONFLICT_INDICATORS,
|
|
526
|
+
REBASE_CONFLICT_RE,
|
|
527
|
+
];
|
|
528
|
+
/** A commit's refusal to run over unmerged files, which neither a stash
|
|
529
|
+
* pop's status block nor a usual commit subject prints. */
|
|
530
|
+
const UNMERGED_COMMIT_RE = /Committing is not possible/i;
|
|
531
|
+
// Lines that carry a commit's subject rather than a failure: the summary a
|
|
532
|
+
// commit that landed prints, and a rebase or revert conflict's echoes of the
|
|
533
|
+
// one it stopped at (`error: could not apply …`, then `Could not apply …`).
|
|
534
|
+
const COMMIT_SUBJECT_LINE_RE = /^\[[^\]\n]+ [0-9a-f]{7,}\]|^(?:error: )?could not (?:apply|revert) /i;
|
|
535
|
+
/** `error` without the lines that echo a commit subject, so a subject such as
|
|
536
|
+
* "Fix pre-commit hook failed on CI" doesn't read as a commit failure. */
|
|
537
|
+
function commitOutputLines(error) {
|
|
538
|
+
return error
|
|
539
|
+
.split('\n')
|
|
540
|
+
.filter((line) => !COMMIT_SUBJECT_LINE_RE.test(line))
|
|
541
|
+
.join('\n');
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* The git segment whose output `error` is. The hook payload carries one error
|
|
545
|
+
* for the whole command, not one per segment, but conflict, rejection and
|
|
546
|
+
* commit-failure text names the kind of git command that printed it.
|
|
547
|
+
* Conflict and commit-failure text go to the earliest segment that can print
|
|
548
|
+
* them in the last `&&` run holding one: the failure stops the run, and any
|
|
549
|
+
* of those segments may be the one it stopped at, so the earliest counts no
|
|
550
|
+
* step as run that may not have. `git pull && git commit && git checkout
|
|
551
|
+
* other` hands a conflict to the pull, and `git commit -m a && git commit -m
|
|
552
|
+
* b` hands a failed hook to the first commit. When a conflict-capable step
|
|
553
|
+
* before the conflict's run can have printed the conflict text, a commit in
|
|
554
|
+
* that run, before the step that can conflict, that printed a failure of its
|
|
555
|
+
* own is what stopped the run, as in `git stash pop; git commit -m x && git
|
|
556
|
+
* pull` or `git merge x; git add -A && git commit -m m && git rebase main`,
|
|
557
|
+
* so it takes the failure. Otherwise rejection text goes to the last `git
|
|
558
|
+
* push`, or commit-failure text to its commit, whichever comes later.
|
|
559
|
+
*/
|
|
560
|
+
function errorSegmentIndex({ segments, operators }, isGit, error) {
|
|
561
|
+
const earliestInLastRun = (re) => {
|
|
562
|
+
const last = lastGitSegment(segments, isGit, re);
|
|
563
|
+
if (last === -1)
|
|
564
|
+
return -1;
|
|
565
|
+
for (let i = andRunStart(operators, last); i < last; i++) {
|
|
566
|
+
if (isGit[i] && re.test(segments[i]))
|
|
567
|
+
return i;
|
|
568
|
+
}
|
|
569
|
+
return last;
|
|
570
|
+
};
|
|
571
|
+
const conflictText = CONFLICT_TEXT_INDICATORS.some((re) => re.test(error));
|
|
572
|
+
if (conflictText) {
|
|
573
|
+
const conflict = earliestInLastRun(GIT_CONFLICT_CAPABLE_RE);
|
|
574
|
+
if (conflict !== -1) {
|
|
575
|
+
const run = andRunStart(operators, conflict);
|
|
576
|
+
const conflictBeforeRun = lastGitSegment(segments.slice(0, run), isGit, GIT_CONFLICT_CAPABLE_RE) !== -1;
|
|
577
|
+
// The refusal is the commit's whatever printed the conflict text, unless
|
|
578
|
+
// the conflict-capable step printed it and a commit that can still run
|
|
579
|
+
// after it fails may be the one that refused. Unmerged paths with no
|
|
580
|
+
// text a conflicting step prints may predate the command, so they don't
|
|
581
|
+
// show the step ran. The cost: `git checkout -m` and `git apply --3way`
|
|
582
|
+
// print no such text, so a commit landed before them can take a later
|
|
583
|
+
// commit's refusal and go uncounted. Every proxy tried for "the step
|
|
584
|
+
// ran" (a status after it, a landed commit's summary line) also fit a
|
|
585
|
+
// command where it never ran. Other commit-only text counts when an
|
|
586
|
+
// earlier step can own the conflict.
|
|
587
|
+
const output = commitOutputLines(error);
|
|
588
|
+
const laterCommit = STEP_CONFLICT_INDICATORS.some((re) => re.test(error)) &&
|
|
589
|
+
lastGitSegment(segments, isGit, GIT_COMMIT_RE) > lastSkippedSegment(operators, conflict);
|
|
590
|
+
const commitStopped = (UNMERGED_COMMIT_RE.test(output) && !laterCommit) ||
|
|
591
|
+
(conflictBeforeRun && OWN_COMMIT_FAILURE_INDICATORS.some((re) => re.test(output)));
|
|
592
|
+
if (commitStopped) {
|
|
593
|
+
for (let i = run; i < conflict; i++) {
|
|
594
|
+
if (isGit[i] && GIT_COMMIT_RE.test(segments[i])) {
|
|
595
|
+
return { owner: i, commitOverConflict: true };
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
return { owner: conflict, commitOverConflict: false };
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
const push = rejectedPushIndex(segments, isGit, error);
|
|
603
|
+
const output = commitOutputLines(error);
|
|
604
|
+
const commit = COMMIT_FAILURE_INDICATORS.some((re) => re.test(output))
|
|
605
|
+
? earliestInLastRun(GIT_COMMIT_RE)
|
|
606
|
+
: -1;
|
|
607
|
+
const owner = Math.max(push, commit);
|
|
608
|
+
// No step here can conflict, so a commit refusing over unmerged files saw
|
|
609
|
+
// conflict text another command left, as `git status` prints it.
|
|
610
|
+
const refusedOverUnmerged = owner !== -1 && owner === commit && conflictText && UNMERGED_COMMIT_RE.test(output);
|
|
611
|
+
return { owner, commitOverConflict: refusedOverUnmerged };
|
|
612
|
+
}
|
|
369
613
|
/**
|
|
370
614
|
* Classifies every git segment of a heredoc-stripped shell command, so a
|
|
371
615
|
* chained `git commit -m x && git push` yields a commit AND a push instead
|
|
372
616
|
* of whichever verb `classifyGitCommand` ranks first.
|
|
373
617
|
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
*
|
|
618
|
+
* The hook reports one success/error pair for the whole command, so for a
|
|
619
|
+
* failed command each segment's outcome is read off bash's grouping. The
|
|
620
|
+
* failure goes to the segment the error text names (see `errorSegmentIndex`),
|
|
621
|
+
* and the segments `&&` then kept from running are dropped. Rejection text
|
|
622
|
+
* also names the last push that ran and may have failed when other text
|
|
623
|
+
* names another segment, as the pull's conflict does in `git pull; git
|
|
624
|
+
* push`. When the text names none, the failure is taken to be the last
|
|
625
|
+
* command's, but any step of the final `&&` run may be the one that failed,
|
|
626
|
+
* so the steps after its first are dropped as possibly never run. A segment
|
|
627
|
+
* is marked succeeded only when the step the failure goes to running proves
|
|
628
|
+
* it did (see `chainRunBefore`), so a commit before a rejected push or a
|
|
629
|
+
* failing `gh pr create` still counts. That proof needs the quotes to
|
|
630
|
+
* balance: bash refuses a command whose quote never closes, so the `&&` may
|
|
631
|
+
* be quoted text and nothing may have run. Dropping needs no such check,
|
|
632
|
+
* since a dropped step counts nowhere, while a kept one that never ran would
|
|
633
|
+
* still count in the totals that ignore `success`, such as `pullCount` and
|
|
634
|
+
* `forcePushes`. Every other segment keeps the command's `success`, which
|
|
635
|
+
* for a failed command counts no commit or push (see `isCountedCommit` and
|
|
636
|
+
* `isCountedPush`), except that a segment `&` runs in the background is
|
|
637
|
+
* never marked succeeded. The target directory comes from the whole
|
|
638
|
+
* command, so a `cd dir &&` in an earlier segment still attributes every
|
|
639
|
+
* git segment.
|
|
378
640
|
*/
|
|
379
641
|
export function classifyGitSegments(command, record, resolveRepo) {
|
|
380
|
-
const
|
|
642
|
+
const chain = splitShellChain(command);
|
|
643
|
+
const { segments, operators } = chain;
|
|
644
|
+
const isGit = segments.map((s) => GIT_SEGMENT_RE.test(s));
|
|
645
|
+
const error = record.error ?? '';
|
|
646
|
+
const errorOwner = errorSegmentIndex(chain, isGit, error);
|
|
647
|
+
let owner = errorOwner.owner;
|
|
648
|
+
// Segments (dropFrom, dropThrough] did not, or may not, have run.
|
|
649
|
+
let failedAt = -1;
|
|
650
|
+
let dropFrom = -1;
|
|
651
|
+
let dropThrough = -1;
|
|
652
|
+
if (!record.success && owner !== -1) {
|
|
653
|
+
failedAt = owner;
|
|
654
|
+
dropFrom = owner;
|
|
655
|
+
dropThrough = lastSkippedSegment(operators, owner);
|
|
656
|
+
}
|
|
657
|
+
else if (!record.success) {
|
|
658
|
+
failedAt = lastCommandSegment(segments);
|
|
659
|
+
dropFrom = pipelineEnd(operators, andRunStart(operators, failedAt));
|
|
660
|
+
dropThrough = failedAt;
|
|
661
|
+
if (dropFrom === failedAt && isGit[failedAt])
|
|
662
|
+
owner = failedAt;
|
|
663
|
+
}
|
|
664
|
+
const dropped = (i) => i > dropFrom && i <= dropThrough;
|
|
665
|
+
const before = chainRunBefore(chain, failedAt);
|
|
666
|
+
const provenSucceeded = (i) => before !== null && i < failedAt && segmentSuccessFollowsCommand(before, i);
|
|
667
|
+
// Rejection text names the last push that ran and may have failed: not one
|
|
668
|
+
// `&&` kept from running, nor one `&&` proves succeeded.
|
|
669
|
+
const rejected = rejectedPushIndex(segments, isGit, error, (i) => dropped(i) || provenSucceeded(i));
|
|
670
|
+
// A commit that took the failure over conflict text (see errorSegmentIndex)
|
|
671
|
+
// gets only its own lines, and the conflict goes to the conflict-capable
|
|
672
|
+
// step before it that printed it, such as the `git stash pop` in
|
|
673
|
+
// `git stash pop; git commit -m x && git pull`.
|
|
674
|
+
const { commitOverConflict } = errorOwner;
|
|
675
|
+
const conflictAt = commitOverConflict
|
|
676
|
+
? lastGitSegment(segments.slice(0, owner), isGit, GIT_CONFLICT_CAPABLE_RE)
|
|
677
|
+
: -1;
|
|
381
678
|
const targetDir = gitCommandTargetDir(command, record.cwd);
|
|
382
|
-
return segments.
|
|
383
|
-
|
|
384
|
-
|
|
679
|
+
return segments.flatMap((segment, i) => {
|
|
680
|
+
if (!isGit[i] || dropped(i))
|
|
681
|
+
return [];
|
|
682
|
+
const forSegment = i === owner
|
|
683
|
+
? commitOverConflict
|
|
684
|
+
? { ...record, error: linesMatching(error, COMMIT_FAILURE_INDICATORS) }
|
|
685
|
+
: record
|
|
686
|
+
: i === conflictAt
|
|
687
|
+
? { ...record, success: false, error: linesMatching(error, CONFLICT_TEXT_INDICATORS) }
|
|
688
|
+
: i === rejected
|
|
689
|
+
? { ...record, success: false, error: rejectionText(error) }
|
|
690
|
+
: {
|
|
691
|
+
...record,
|
|
692
|
+
success: (record.success || provenSucceeded(i)) && !inBackground(operators, i),
|
|
693
|
+
error: undefined,
|
|
694
|
+
};
|
|
695
|
+
return [{ segment, event: classifyGitCommand(segment, forSegment, resolveRepo, targetDir) }];
|
|
385
696
|
});
|
|
386
697
|
}
|
|
387
698
|
//# sourceMappingURL=git-event-classifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-event-classifier.js","sourceRoot":"","sources":["../../src/metrics/git-event-classifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-event-classifier.js","sourceRoot":"","sources":["../../src/metrics/git-event-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type GitActivityRecord } from './git-activity-recorder.js';
|
|
2
|
-
import type { GitEvent } from './git-event-classifier.js';
|
|
3
2
|
import type { GitEfficiencyMetrics } from './git-efficiency-tracker.js';
|
|
4
3
|
import { type WorktreeIdentity } from './git-workspace-identity.js';
|
|
5
4
|
/**
|
|
@@ -101,9 +100,6 @@ export interface GitWorkspaceReport {
|
|
|
101
100
|
} | null;
|
|
102
101
|
}
|
|
103
102
|
export declare const COMMIT_RECONCILE_WINDOW_MS = 60000;
|
|
104
|
-
/** A commit that added history: it succeeded and was not an amend, which
|
|
105
|
-
* rewrites a commit instead of adding one. Hydrated commits always qualify. */
|
|
106
|
-
export declare function isCountedCommit(event: GitEvent): boolean;
|
|
107
103
|
/**
|
|
108
104
|
* Reconciles hook-observed commits against commits hydrated from `git log`
|
|
109
105
|
* for the same underlying repo, so a commit both sources saw is counted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-workspace-report.d.ts","sourceRoot":"","sources":["../../src/metrics/git-workspace-report.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"git-workspace-report.d.ts","sourceRoot":"","sources":["../../src/metrics/git-workspace-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '../shared/index.js';
|
|
2
2
|
import { GIT_LOG_SESSION_ID } from './git-activity-recorder.js';
|
|
3
|
+
import { isAmendCommit, isCountedCommit, isCountedPush, } from './git-event-classifier.js';
|
|
3
4
|
import { UNATTRIBUTED_WORKSPACE_KEY, isPlaceholderIdentity, } from './git-workspace-identity.js';
|
|
4
5
|
const logger = createLogger('git-workspace-report');
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
@@ -550,12 +551,6 @@ function countStaleBranchPulls(events) {
|
|
|
550
551
|
// commits have independent clocks. One-to-one nearest matching keeps two
|
|
551
552
|
// distinct rapid commits from collapsing into one despite the wide window.
|
|
552
553
|
export const COMMIT_RECONCILE_WINDOW_MS = 60_000;
|
|
553
|
-
const AMEND_RE = /\s--amend\b/;
|
|
554
|
-
/** A commit that added history: it succeeded and was not an amend, which
|
|
555
|
-
* rewrites a commit instead of adding one. Hydrated commits always qualify. */
|
|
556
|
-
export function isCountedCommit(event) {
|
|
557
|
-
return event.type === 'commit' && event.success && !AMEND_RE.test(event.command ?? '');
|
|
558
|
-
}
|
|
559
554
|
function isHookCommit(r) {
|
|
560
555
|
return isCountedCommit(r.gitEvent) && !r.gitEvent.hash;
|
|
561
556
|
}
|
|
@@ -793,9 +788,12 @@ nowMs = Date.now()) {
|
|
|
793
788
|
break;
|
|
794
789
|
}
|
|
795
790
|
case 'commit': {
|
|
791
|
+
// A failed commit resolved nothing; see GitEfficiencyTracker.
|
|
792
|
+
if (!event.success)
|
|
793
|
+
break;
|
|
796
794
|
// git commit --amend fixes a prior commit, not a merge conflict —
|
|
797
795
|
// drop the oldest pending conflict without recording a resolution.
|
|
798
|
-
if (command
|
|
796
|
+
if (isAmendCommit(command)) {
|
|
799
797
|
pendingConflicts.shift();
|
|
800
798
|
}
|
|
801
799
|
else {
|
|
@@ -837,6 +835,9 @@ nowMs = Date.now()) {
|
|
|
837
835
|
commitsSinceLastSync = 0;
|
|
838
836
|
break;
|
|
839
837
|
case 'push':
|
|
838
|
+
// A failed push changed nothing on the remote; see GitEfficiencyTracker.
|
|
839
|
+
if (!event.success)
|
|
840
|
+
break;
|
|
840
841
|
lastPushTimestamp = event.timestamp;
|
|
841
842
|
buildBeforePush = computeBuildBeforePush(lastBuildOrTestTimestamp, commitTimestamps);
|
|
842
843
|
break;
|
|
@@ -862,11 +863,16 @@ nowMs = Date.now()) {
|
|
|
862
863
|
event.timestamp - lastPushRejectedTimestamp < 300_000) {
|
|
863
864
|
forceAfterReject++;
|
|
864
865
|
}
|
|
866
|
+
// The checks above judge the command run; see GitEfficiencyTracker.
|
|
867
|
+
if (!event.success)
|
|
868
|
+
break;
|
|
865
869
|
lastPushTimestamp = event.timestamp;
|
|
866
870
|
buildBeforePush = computeBuildBeforePush(lastBuildOrTestTimestamp, commitTimestamps);
|
|
867
871
|
break;
|
|
868
872
|
case 'force_push_lease':
|
|
869
873
|
hasUsedForceWithLease = true;
|
|
874
|
+
if (!event.success)
|
|
875
|
+
break;
|
|
870
876
|
lastPushTimestamp = event.timestamp;
|
|
871
877
|
buildBeforePush = computeBuildBeforePush(lastBuildOrTestTimestamp, commitTimestamps);
|
|
872
878
|
break;
|
|
@@ -888,7 +894,7 @@ nowMs = Date.now()) {
|
|
|
888
894
|
const resetHards = events.filter((e) => e.type === 'reset_hard').length;
|
|
889
895
|
const discardedChanges = events.filter((e) => e.type === 'discard_changes').length;
|
|
890
896
|
const pullCount = events.filter((e) => e.type === 'pull').length;
|
|
891
|
-
const pushCount = events.filter(
|
|
897
|
+
const pushCount = events.filter(isCountedPush).length;
|
|
892
898
|
const commitCount = events.filter(isCountedCommit).length;
|
|
893
899
|
const branchOperations = events.filter((e) => e.type === 'branch').length;
|
|
894
900
|
const mergeEventCount = events.filter((e) => e.type === 'merge').length;
|