@newrelic/preflight 1.71.0 → 1.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/dashboard/routes/api-handler.d.ts.map +1 -1
  2. package/dist/dashboard/routes/api-handler.js +2 -9
  3. package/dist/dashboard/routes/api-handler.js.map +1 -1
  4. package/dist/dashboard/subagent-timeline-store.d.ts +12 -1
  5. package/dist/dashboard/subagent-timeline-store.d.ts.map +1 -1
  6. package/dist/dashboard/subagent-timeline-store.js +32 -4
  7. package/dist/dashboard/subagent-timeline-store.js.map +1 -1
  8. package/dist/dashboard/workflow-store.d.ts.map +1 -1
  9. package/dist/dashboard/workflow-store.js +2 -3
  10. package/dist/dashboard/workflow-store.js.map +1 -1
  11. package/dist/hooks/event-processor.d.ts +20 -5
  12. package/dist/hooks/event-processor.d.ts.map +1 -1
  13. package/dist/hooks/event-processor.js +135 -39
  14. package/dist/hooks/event-processor.js.map +1 -1
  15. package/dist/hooks/index.d.ts +1 -1
  16. package/dist/hooks/index.d.ts.map +1 -1
  17. package/dist/hooks/index.js +1 -1
  18. package/dist/hooks/index.js.map +1 -1
  19. package/dist/hooks/parent-transcript-watcher.d.ts +1 -1
  20. package/dist/hooks/parent-transcript-watcher.d.ts.map +1 -1
  21. package/dist/hooks/parent-transcript-watcher.js +6 -2
  22. package/dist/hooks/parent-transcript-watcher.js.map +1 -1
  23. package/dist/hooks/session-resolver.d.ts.map +1 -1
  24. package/dist/hooks/session-resolver.js +2 -1
  25. package/dist/hooks/session-resolver.js.map +1 -1
  26. package/dist/hooks/subagent-watcher.d.ts +3 -1
  27. package/dist/hooks/subagent-watcher.d.ts.map +1 -1
  28. package/dist/hooks/subagent-watcher.js +6 -4
  29. package/dist/hooks/subagent-watcher.js.map +1 -1
  30. package/dist/hooks/workflow-watcher.d.ts.map +1 -1
  31. package/dist/hooks/workflow-watcher.js +2 -2
  32. package/dist/hooks/workflow-watcher.js.map +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +53 -60
  35. package/dist/index.js.map +1 -1
  36. package/dist/install/cli.d.ts.map +1 -1
  37. package/dist/install/cli.js +81 -7
  38. package/dist/install/cli.js.map +1 -1
  39. package/dist/install/copilot-install-helper.d.ts +1 -0
  40. package/dist/install/copilot-install-helper.d.ts.map +1 -1
  41. package/dist/install/copilot-install-helper.js +82 -26
  42. package/dist/install/copilot-install-helper.js.map +1 -1
  43. package/dist/install/diagnostics.d.ts.map +1 -1
  44. package/dist/install/diagnostics.js +6 -3
  45. package/dist/install/diagnostics.js.map +1 -1
  46. package/dist/install/install-helper.d.ts +9 -0
  47. package/dist/install/install-helper.d.ts.map +1 -1
  48. package/dist/install/install-helper.js +42 -17
  49. package/dist/install/install-helper.js.map +1 -1
  50. package/dist/install/schedule.d.ts.map +1 -1
  51. package/dist/install/schedule.js +4 -1
  52. package/dist/install/schedule.js.map +1 -1
  53. package/dist/install/target-user.d.ts +33 -0
  54. package/dist/install/target-user.d.ts.map +1 -0
  55. package/dist/install/target-user.js +121 -0
  56. package/dist/install/target-user.js.map +1 -0
  57. package/dist/lib/claude-config-dir.d.ts +3 -0
  58. package/dist/lib/claude-config-dir.d.ts.map +1 -0
  59. package/dist/lib/claude-config-dir.js +10 -0
  60. package/dist/lib/claude-config-dir.js.map +1 -0
  61. package/dist/lib/claude-settings-env.d.ts +18 -0
  62. package/dist/lib/claude-settings-env.d.ts.map +1 -0
  63. package/dist/lib/claude-settings-env.js +78 -0
  64. package/dist/lib/claude-settings-env.js.map +1 -0
  65. package/dist/lib/date.d.ts +7 -0
  66. package/dist/lib/date.d.ts.map +1 -1
  67. package/dist/lib/date.js +11 -1
  68. package/dist/lib/date.js.map +1 -1
  69. package/dist/lib/subagent-transcript-parser.d.ts +2 -0
  70. package/dist/lib/subagent-transcript-parser.d.ts.map +1 -1
  71. package/dist/lib/subagent-transcript-parser.js +5 -0
  72. package/dist/lib/subagent-transcript-parser.js.map +1 -1
  73. package/dist/lib/transcript-types.d.ts +4 -0
  74. package/dist/lib/transcript-types.d.ts.map +1 -1
  75. package/dist/metrics/cost-forecast.d.ts +2 -0
  76. package/dist/metrics/cost-forecast.d.ts.map +1 -1
  77. package/dist/metrics/cost-forecast.js +46 -24
  78. package/dist/metrics/cost-forecast.js.map +1 -1
  79. package/dist/metrics/cost-tracker.d.ts +3 -3
  80. package/dist/metrics/cost-tracker.js +3 -3
  81. package/dist/metrics/efficiency-score.d.ts +2 -2
  82. package/dist/metrics/efficiency-score.js +2 -2
  83. package/dist/metrics/first-save-baselines.d.ts +60 -0
  84. package/dist/metrics/first-save-baselines.d.ts.map +1 -0
  85. package/dist/metrics/first-save-baselines.js +77 -0
  86. package/dist/metrics/first-save-baselines.js.map +1 -0
  87. package/dist/metrics/local-session-aggregator.d.ts +2 -1
  88. package/dist/metrics/local-session-aggregator.d.ts.map +1 -1
  89. package/dist/metrics/local-session-aggregator.js +21 -0
  90. package/dist/metrics/local-session-aggregator.js.map +1 -1
  91. package/dist/metrics/model-pricing.d.ts +1 -1
  92. package/dist/metrics/model-pricing.d.ts.map +1 -1
  93. package/dist/metrics/model-pricing.js +2 -2
  94. package/dist/metrics/model-pricing.js.map +1 -1
  95. package/dist/metrics/model-usage-tracker.d.ts +2 -2
  96. package/dist/metrics/model-usage-tracker.js +2 -2
  97. package/dist/metrics/pricing-init.d.ts.map +1 -1
  98. package/dist/metrics/pricing-init.js +5 -3
  99. package/dist/metrics/pricing-init.js.map +1 -1
  100. package/dist/metrics/pricing-overlay.d.ts.map +1 -1
  101. package/dist/metrics/pricing-overlay.js +1 -4
  102. package/dist/metrics/pricing-overlay.js.map +1 -1
  103. package/dist/metrics/pricing-refresh.d.ts +16 -4
  104. package/dist/metrics/pricing-refresh.d.ts.map +1 -1
  105. package/dist/metrics/pricing-refresh.js +47 -1
  106. package/dist/metrics/pricing-refresh.js.map +1 -1
  107. package/dist/metrics/quality-proxy-tracker.d.ts +2 -2
  108. package/dist/metrics/quality-proxy-tracker.js +2 -2
  109. package/dist/metrics/session-tracker.d.ts +5 -1
  110. package/dist/metrics/session-tracker.d.ts.map +1 -1
  111. package/dist/metrics/session-tracker.js +58 -17
  112. package/dist/metrics/session-tracker.js.map +1 -1
  113. package/dist/metrics/task-detector.d.ts +2 -2
  114. package/dist/metrics/task-detector.js +2 -2
  115. package/dist/metrics/token-usage.d.ts +6 -0
  116. package/dist/metrics/token-usage.d.ts.map +1 -0
  117. package/dist/metrics/token-usage.js +34 -0
  118. package/dist/metrics/token-usage.js.map +1 -0
  119. package/dist/metrics/turn-cost-attributor.d.ts.map +1 -1
  120. package/dist/metrics/turn-cost-attributor.js +3 -0
  121. package/dist/metrics/turn-cost-attributor.js.map +1 -1
  122. package/dist/platforms/copilot-adapter.d.ts.map +1 -1
  123. package/dist/platforms/copilot-adapter.js +3 -0
  124. package/dist/platforms/copilot-adapter.js.map +1 -1
  125. package/dist/platforms/copilot-sdk-adapter.d.ts.map +1 -1
  126. package/dist/platforms/copilot-sdk-adapter.js +3 -0
  127. package/dist/platforms/copilot-sdk-adapter.js.map +1 -1
  128. package/dist/storage/drain-claims.d.ts +33 -10
  129. package/dist/storage/drain-claims.d.ts.map +1 -1
  130. package/dist/storage/drain-claims.js +78 -13
  131. package/dist/storage/drain-claims.js.map +1 -1
  132. package/dist/storage/local-store.d.ts +21 -0
  133. package/dist/storage/local-store.d.ts.map +1 -1
  134. package/dist/storage/local-store.js +118 -19
  135. package/dist/storage/local-store.js.map +1 -1
  136. package/dist/storage/retention.d.ts.map +1 -1
  137. package/dist/storage/retention.js +7 -6
  138. package/dist/storage/retention.js.map +1 -1
  139. package/dist/storage/session-store.d.ts +16 -2
  140. package/dist/storage/session-store.d.ts.map +1 -1
  141. package/dist/storage/session-store.js +242 -37
  142. package/dist/storage/session-store.js.map +1 -1
  143. package/dist/storage/types.d.ts +7 -0
  144. package/dist/storage/types.d.ts.map +1 -1
  145. package/dist/storage/types.js +4 -0
  146. package/dist/storage/types.js.map +1 -1
  147. package/dist/tools/cost-tools.d.ts.map +1 -1
  148. package/dist/tools/cost-tools.js +1 -0
  149. package/dist/tools/cost-tools.js.map +1 -1
  150. package/dist/web/assets/{index-U9DPZ-Tb.js → index-CZvLy2Qy.js} +2 -2
  151. package/dist/web/index.html +1 -1
  152. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAmBvB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAmElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAyBzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMhF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBhD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,CAAC;AAMnB,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAmBD;;;;;GAKG;AACH,KAAK,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;AAEzF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GAAG;IACtF,UAAU,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACjD,CAmBA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1E;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,qBAAqB,CAevB;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAED;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAE1D,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,SAAU,CAAC;AAE3D,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAmBhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAMnF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC/D;AAKD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA4BlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAK1E;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,uJAAuJ;IACvJ,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACvC,IAAI,EAAE,qBAAqB,GAC1B,IAAI,CAiBN;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC5D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC7D,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAiCjF;AAmCD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyL/E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4CpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ import { WorkflowStore } from './dashboard/workflow-store.js';
18
18
  import { isCopilotSdkExtensionMissing } from './hooks/copilot-sdk-extension-health.js';
19
19
  import { CopilotAppUsageWatcher } from './hooks/copilot-app-usage-watcher.js';
20
20
  import { CopilotUsageWatcher } from './hooks/copilot-usage-watcher.js';
21
- import { HookEventProcessor } from './hooks/index.js';
21
+ import { DEFAULT_MAX_PENDING, HookEventProcessor } from './hooks/index.js';
22
22
  import { isPlatformDetectionFellBack } from './hooks/platform-detection-health.js';
23
23
  import { ParentTranscriptWatcher } from './hooks/parent-transcript-watcher.js';
24
24
  import { BilledTurnLedger, pruneBilledTurns } from './hooks/billed-turn-ledger.js';
@@ -45,10 +45,10 @@ import { ContextWindowTracker } from './metrics/context-window-tracker.js';
45
45
  import { initModelPricing } from './metrics/pricing-init.js';
46
46
  import { buildCostForecastFromInputs } from './metrics/cost-forecast.js';
47
47
  import { CostPerOutcomeAnalyzer } from './metrics/cost-per-outcome.js';
48
- import { buildCostTrackerSeed } from './metrics/cost-tracker-seed.js';
49
48
  import { CostTracker } from './metrics/cost-tracker.js';
50
49
  import { DecisionTracker } from './metrics/decision-tracker.js';
51
50
  import { EfficiencyScorer } from './metrics/efficiency-score.js';
51
+ import { FirstSaveBaselines } from './metrics/first-save-baselines.js';
52
52
  import { GitEfficiencyTracker, parseDefaultBranchFromSymbolicRef, } from './metrics/git-efficiency-tracker.js';
53
53
  import { WorktreeIdentityResolver } from './metrics/git-workspace-identity.js';
54
54
  import { GitWorkspaceReporter, replaySessionToActivityRecords, } from './metrics/git-workspace-reporter.js';
@@ -65,11 +65,11 @@ import { RetryDetector } from './metrics/retry-detector.js';
65
65
  import { SessionTracker } from './metrics/session-tracker.js';
66
66
  import { SkillActivationTracker } from './metrics/skill-activation-tracker.js';
67
67
  import { TaskCompletionTracker } from './metrics/task-completion-tracker.js';
68
- import { buildTaskDetectorSeed } from './metrics/task-detector-seed.js';
69
68
  import { TaskDetector } from './metrics/task-detector.js';
70
69
  import { ToolSelectionScorer } from './metrics/tool-selection-scorer.js';
71
70
  import { TranscriptMessageTracker } from './metrics/transcript-message-tracker.js';
72
71
  import { TrendAnalyzer } from './metrics/trend-analyzer.js';
72
+ import { tokenUsageFromSubagentTurn, tokenUsageFromTokenEvent } from './metrics/token-usage.js';
73
73
  import { TurnCostAttributor } from './metrics/turn-cost-attributor.js';
74
74
  import { TurnTracker } from './metrics/turn-tracker.js';
75
75
  import { WorkflowRunTracker } from './metrics/workflow-run-tracker.js';
@@ -82,6 +82,7 @@ import { LocalStore } from './storage/index.js';
82
82
  import { computeHistoricalCosts } from './storage/historical-costs.js';
83
83
  import { purgeOldSessions, purgeOldWeeklySummaries } from './storage/retention.js';
84
84
  import { buildSessionSummary, SessionStore, sessionSummaryToDriftRecord, } from './storage/session-store.js';
85
+ import { amendRecord } from './storage/types.js';
85
86
  import { WeeklySummaryGenerator } from './storage/weekly-summary.js';
86
87
  import { registerPendingTools, registerTools } from './tools/session-stats.js';
87
88
  import { FeedbackCollector } from './tools/workflow-tools.js';
@@ -262,6 +263,7 @@ export function runMaintenanceGcPass(deps) {
262
263
  try {
263
264
  localStore.gcStaleBreadcrumbs();
264
265
  localStore.gcDeadLocalInstances();
266
+ localStore.gcCountedToolUseIds();
265
267
  const live = localStore.getActiveSessionIdsFromHeartbeats();
266
268
  if (liveSessionRegistry) {
267
269
  for (const id of liveSessionRegistry.getLiveSessions({ includeSynthetic: true })) {
@@ -716,6 +718,7 @@ async function main() {
716
718
  ppidCorrectionAbort?.abort();
717
719
  logger.info('Shutting down...');
718
720
  try {
721
+ eventProcessor?.stop();
719
722
  persistSession?.();
720
723
  if (config?.otlp?.transport !== 'nr-events-api' &&
721
724
  sessionTracker &&
@@ -763,7 +766,6 @@ async function main() {
763
766
  }
764
767
  alertRulesWatcher = undefined;
765
768
  }
766
- eventProcessor?.stop();
767
769
  activeSubagentWatcher?.stop();
768
770
  activeWorkflowWatcher?.stop();
769
771
  activeParentTranscriptWatcher?.stop();
@@ -965,7 +967,7 @@ async function main() {
965
967
  storagePath: config.storagePath,
966
968
  retainSessionsDays: config.retainSessionsDays,
967
969
  }) ?? undefined;
968
- sessionTracker = new SessionTracker(sessionTraceId);
970
+ sessionTracker = new SessionTracker(sessionTraceId, DEFAULT_MAX_PENDING);
969
971
  // Combine the two independent correction factors here so CostTracker only
970
972
  // ever deals with one number (see its constructor doc comment) — the raw
971
973
  // config fields (costRateMultiplier, dataResidencyPremium) stay unmerged
@@ -1167,6 +1169,19 @@ async function main() {
1167
1169
  // below can call this again for a *different* id after a pending->real
1168
1170
  // transition or a PPID correction.
1169
1171
  const rehydratedTrackerSessionIds = new Set();
1172
+ const firstSaveBaselines = new FirstSaveBaselines();
1173
+ const saveSessionRememberingBaseline = (summary) => {
1174
+ const saved = sessionStore.saveSession(summary);
1175
+ // Only a --stdio engine ever adopts a real session id and seeds it.
1176
+ if (saved && options.stdio && !rehydratedTrackerSessionIds.has(summary.sessionId)) {
1177
+ firstSaveBaselines.recordSave({
1178
+ sessionId: summary.sessionId,
1179
+ previous: saved.previous,
1180
+ ownSession: summary.sessionId === sessionTraceId,
1181
+ });
1182
+ }
1183
+ return saved !== null;
1184
+ };
1170
1185
  const rehydrateTrackersIfResumed = (sessionId) => {
1171
1186
  if (isSyntheticSessionId(sessionId))
1172
1187
  return;
@@ -1174,36 +1189,25 @@ async function main() {
1174
1189
  return;
1175
1190
  rehydratedTrackerSessionIds.add(sessionId);
1176
1191
  try {
1177
- const persisted = sessionStore.loadSession(sessionId);
1178
- if (!persisted)
1179
- return;
1180
- costTracker.seedFromPersisted(buildCostTrackerSeed(persisted));
1181
- sessionTracker.seedFromPersisted({
1182
- toolCallCount: persisted.toolCallCount,
1183
- bashCommandCount: persisted.bashCommandCount,
1184
- });
1185
- budgetTracker.seedFiredThresholdsFromSessionTotal(costTracker.getMetrics().sessionTotalCostUsd ?? 0);
1186
- modelUsageTracker.seedFromPersisted(persisted.modelBreakdown);
1187
- qualityProxyTracker.seedFromPersisted(persisted.qualityProxy);
1188
- // Non-null: taskDetector is assigned unconditionally earlier in this
1189
- // same setup path (see line ~980), before rehydrateTrackersIfResumed
1190
- // can be invoked — same pattern as the other `taskDetector!` use
1191
- // below, needed because its declared type stays `| undefined` for
1192
- // callers outside this path.
1193
- taskDetector.seedFromPersisted(buildTaskDetectorSeed(persisted));
1194
- if (persisted.efficiencyScore !== null &&
1195
- persisted.efficiencyScoreComponents &&
1196
- (persisted.efficiencyScoreSampleCount ?? 0) > 0) {
1197
- efficiencyScorer.seedFromPersisted({
1198
- score: persisted.efficiencyScore,
1199
- components: persisted.efficiencyScoreComponents,
1200
- sampleCount: persisted.efficiencyScoreSampleCount ?? 0,
1192
+ const { cost, toolCalls } = firstSaveBaselines.take(sessionId, () => sessionStore.loadSession(sessionId));
1193
+ if (cost) {
1194
+ costTracker.seedFromPersisted(cost.costTracker);
1195
+ budgetTracker.seedFiredThresholdsFromSessionTotal(cost.estimatedCostUsd ?? 0);
1196
+ modelUsageTracker.seedFromPersisted(cost.modelBreakdown);
1197
+ }
1198
+ if (toolCalls) {
1199
+ sessionTracker.seedFromPersisted(toolCalls.sessionTracker);
1200
+ qualityProxyTracker.seedFromPersisted(toolCalls.qualityProxy);
1201
+ taskDetector.seedFromPersisted(toolCalls.taskDetector);
1202
+ if (toolCalls.efficiency)
1203
+ efficiencyScorer.seedFromPersisted(toolCalls.efficiency);
1204
+ }
1205
+ if (cost || toolCalls) {
1206
+ logger.info('Rehydrated trackers from a prior checkpoint for this session', {
1207
+ sessionId,
1208
+ estimatedCostUsd: cost?.estimatedCostUsd ?? null,
1201
1209
  });
1202
1210
  }
1203
- logger.info('Rehydrated trackers from a prior checkpoint for this session', {
1204
- sessionId,
1205
- estimatedCostUsd: persisted.estimatedCostUsd,
1206
- });
1207
1211
  }
1208
1212
  catch (err) {
1209
1213
  logger.warn('Failed to rehydrate trackers from a prior checkpoint', {
@@ -1811,6 +1815,14 @@ async function main() {
1811
1815
  // live sessions' events. After real session ID resolution the processor
1812
1816
  // is hot-swapped to the scoped store via replaceStore().
1813
1817
  drainAllSessions: !options.stdio || isProvisional,
1818
+ onRecordAmend: (record) => {
1819
+ sessionTracker?.amendToolCall(record);
1820
+ localSessionAggregator.amendToolCall(record);
1821
+ subagentAttribution.recordAgentToolCall(record);
1822
+ const index = toolCallBuffer.findIndex((r) => r.id === record.id);
1823
+ if (index >= 0)
1824
+ toolCallBuffer[index] = amendRecord(toolCallBuffer[index], record);
1825
+ },
1814
1826
  onRecord: (incomingRecord) => {
1815
1827
  // Attributed before any consumer (notably auditTrail below) sees the
1816
1828
  // record, so audit/security events carry agentId and agentType.
@@ -2064,14 +2076,7 @@ async function main() {
2064
2076
  const closedTurn = turnCostAttributor.recordTokenEvent(tokenEvent);
2065
2077
  if (isOwnEvent)
2066
2078
  capturedNrIngest?.ingestTurnCost(closedTurn);
2067
- const usage = {
2068
- inputTokens: tokenEvent.inputTokens,
2069
- outputTokens: tokenEvent.outputTokens,
2070
- thinkingTokens: 0,
2071
- cacheReadTokens: tokenEvent.cacheReadTokens,
2072
- cacheCreationTokens: tokenEvent.cacheCreationTokens,
2073
- totalTokens: tokenEvent.inputTokens + tokenEvent.outputTokens,
2074
- };
2079
+ const usage = tokenUsageFromTokenEvent(tokenEvent);
2075
2080
  let breakdown;
2076
2081
  if (!isOwnEvent) {
2077
2082
  breakdown = costTracker.priceUsage(usage, tokenEvent.model);
@@ -2172,21 +2177,7 @@ async function main() {
2172
2177
  // the buffer.
2173
2178
  subagentAttribution.recordSubagentTurn(turn);
2174
2179
  const agentType = subagentAttribution.agentTypeFor(turn.agentId);
2175
- const usage = {
2176
- inputTokens: turn.inputTokens,
2177
- outputTokens: turn.outputTokens,
2178
- // Subagent reasoning tokens (extended thinking) live under
2179
- // `output_tokens_details.reasoning_tokens`; map to `thinkingTokens`
2180
- // so the existing `thinkingPerMTok` rate column charges correctly.
2181
- thinkingTokens: turn.reasoningTokens,
2182
- cacheReadTokens: turn.cacheReadTokens,
2183
- cacheCreationTokens: turn.cacheCreationTokens,
2184
- totalTokens: turn.inputTokens +
2185
- turn.outputTokens +
2186
- turn.reasoningTokens +
2187
- turn.cacheReadTokens +
2188
- turn.cacheCreationTokens,
2189
- };
2180
+ const usage = tokenUsageFromSubagentTurn(turn);
2190
2181
  const breakdown = costTracker.recordTokenUsage(usage, turn.model, {
2191
2182
  timestampMs: turn.timestampMs,
2192
2183
  workflowRunId: turn.workflowRunId,
@@ -2379,9 +2370,8 @@ async function main() {
2379
2370
  toolSelectionScorer,
2380
2371
  repoResolver: repoNameResolver,
2381
2372
  });
2382
- for (const rollup of rollups) {
2383
- sessionStore.saveSession(rollup);
2384
- }
2373
+ const saved = rollups.filter((rollup) => saveSessionRememberingBaseline(rollup));
2374
+ eventProcessor?.persistCountedIdsOfSavedSessions(saved.map((r) => String(r.sessionId)));
2385
2375
  if (!opts?.periodic) {
2386
2376
  logger.info('Persisted observed sessions on behalf of synthetic owner', {
2387
2377
  sessionId: summary.sessionId,
@@ -2390,7 +2380,9 @@ async function main() {
2390
2380
  }
2391
2381
  return;
2392
2382
  }
2393
- sessionStore.saveSession(summary);
2383
+ if (saveSessionRememberingBaseline(summary)) {
2384
+ eventProcessor?.persistCountedIdsOfSavedSessions([summary.sessionId]);
2385
+ }
2394
2386
  // checkAndGenerateLastWeek() is idempotent (existsSync check before
2395
2387
  // any real work), so calling it on every periodic checkpoint too is
2396
2388
  // cheap — and necessary: it otherwise only ran on the clean-shutdown
@@ -2653,6 +2645,7 @@ async function main() {
2653
2645
  // path, which is keyed by whatever id the hook collector script
2654
2646
  // wrote — never the wrong guess — so toolCallCount/timeline stay
2655
2647
  // clean through the whole unconfirmed window regardless.
2648
+ firstSaveBaselines.forget(sessionTraceId);
2656
2649
  costTracker.reset(realId);
2657
2650
  modelUsageTracker.reset(realId);
2658
2651
  contextCompositionTracker.reset(realId);