@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.
Files changed (35) hide show
  1. package/dist/dashboard/subagent-timeline-store.d.ts.map +1 -1
  2. package/dist/dashboard/subagent-timeline-store.js +17 -11
  3. package/dist/dashboard/subagent-timeline-store.js.map +1 -1
  4. package/dist/hooks/copilot-app-usage-watcher.d.ts.map +1 -1
  5. package/dist/hooks/copilot-app-usage-watcher.js +19 -1
  6. package/dist/hooks/copilot-app-usage-watcher.js.map +1 -1
  7. package/dist/metrics/git-efficiency-tracker.d.ts.map +1 -1
  8. package/dist/metrics/git-efficiency-tracker.js +42 -12
  9. package/dist/metrics/git-efficiency-tracker.js.map +1 -1
  10. package/dist/metrics/git-event-classifier.d.ts +38 -4
  11. package/dist/metrics/git-event-classifier.d.ts.map +1 -1
  12. package/dist/metrics/git-event-classifier.js +319 -8
  13. package/dist/metrics/git-event-classifier.js.map +1 -1
  14. package/dist/metrics/git-workspace-report.d.ts +0 -4
  15. package/dist/metrics/git-workspace-report.d.ts.map +1 -1
  16. package/dist/metrics/git-workspace-report.js +14 -8
  17. package/dist/metrics/git-workspace-report.js.map +1 -1
  18. package/dist/shared/events/factory.d.ts.map +1 -1
  19. package/dist/shared/events/factory.js +6 -10
  20. package/dist/shared/events/factory.js.map +1 -1
  21. package/dist/shared/events/serialize.d.ts.map +1 -1
  22. package/dist/shared/events/serialize.js +4 -10
  23. package/dist/shared/events/serialize.js.map +1 -1
  24. package/dist/shared/pricing-data.d.ts.map +1 -1
  25. package/dist/shared/pricing-data.js +803 -67
  26. package/dist/shared/pricing-data.js.map +1 -1
  27. package/dist/shared/pricing.d.ts +41 -17
  28. package/dist/shared/pricing.d.ts.map +1 -1
  29. package/dist/shared/pricing.js +47 -22
  30. package/dist/shared/pricing.js.map +1 -1
  31. package/dist/shared/tokens.d.ts +14 -5
  32. package/dist/shared/tokens.d.ts.map +1 -1
  33. package/dist/shared/tokens.js +73 -64
  34. package/dist/shared/tokens.js.map +1 -1
  35. 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
- * Conflict and rejection text in `record.error` belongs to the segment that
109
- * ran last, since `&&` stops at the first failure, so only the last git
110
- * segment sees it. The target directory comes from the whole command, so a
111
- * `cd dir &&` in an earlier segment still attributes every git segment.
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":"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"}
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
- * Conflict and rejection text in `record.error` belongs to the segment that
375
- * ran last, since `&&` stops at the first failure, so only the last git
376
- * segment sees it. The target directory comes from the whole command, so a
377
- * `cd dir &&` in an earlier segment still attributes every git segment.
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 segments = splitShellSegments(command).filter((s) => GIT_SEGMENT_RE.test(s));
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.map((segment, i) => {
383
- const forSegment = i === segments.length - 1 ? record : { ...record, error: undefined };
384
- return { segment, event: classifyGitCommand(segment, forSegment, resolveRepo, targetDir) };
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":"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"}
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.includes('--amend')) {
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((e) => e.type === 'push' || e.type === 'force_push' || e.type === 'force_push_lease').length;
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;