@newrelic/preflight 1.28.0 → 1.30.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 (34) hide show
  1. package/dist/hooks/collector-script.d.ts.map +1 -1
  2. package/dist/hooks/collector-script.js +38 -0
  3. package/dist/hooks/collector-script.js.map +1 -1
  4. package/dist/hooks/event-processor.d.ts +27 -0
  5. package/dist/hooks/event-processor.d.ts.map +1 -1
  6. package/dist/hooks/event-processor.js +61 -0
  7. package/dist/hooks/event-processor.js.map +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +36 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/install/install-helper.d.ts +6 -4
  12. package/dist/install/install-helper.d.ts.map +1 -1
  13. package/dist/install/install-helper.js +54 -9
  14. package/dist/install/install-helper.js.map +1 -1
  15. package/dist/metrics/model-usage-tracker.d.ts +37 -1
  16. package/dist/metrics/model-usage-tracker.d.ts.map +1 -1
  17. package/dist/metrics/model-usage-tracker.js +35 -2
  18. package/dist/metrics/model-usage-tracker.js.map +1 -1
  19. package/dist/metrics/session-resume-tracker.d.ts +42 -0
  20. package/dist/metrics/session-resume-tracker.d.ts.map +1 -0
  21. package/dist/metrics/session-resume-tracker.js +30 -0
  22. package/dist/metrics/session-resume-tracker.js.map +1 -0
  23. package/dist/storage/types.d.ts +42 -2
  24. package/dist/storage/types.d.ts.map +1 -1
  25. package/dist/tools/analytics-tools.js +1 -1
  26. package/dist/tools/analytics-tools.js.map +1 -1
  27. package/dist/tools/cost-tools.d.ts +3 -1
  28. package/dist/tools/cost-tools.d.ts.map +1 -1
  29. package/dist/tools/cost-tools.js +11 -4
  30. package/dist/tools/cost-tools.js.map +1 -1
  31. package/dist/tools/session-stats.d.ts +2 -0
  32. package/dist/tools/session-stats.d.ts.map +1 -1
  33. package/dist/tools/session-stats.js.map +1 -1
  34. package/package.json +1 -1
@@ -41,16 +41,21 @@ const HOOK_SUBCOMMANDS = {
41
41
  * uninstaller and diagnostics recognizing it.
42
42
  */
43
43
  export const HOOK_SUBCOMMAND_PATTERN = Object.values(HOOK_SUBCOMMANDS).join('|');
44
- // InstructionsLoaded is deliberately kept out of HOOK_SUBCOMMANDS/HOOK_EVENT_TYPES
45
- // (see the areHooksInstalled comment below) but still needs to be recognized here.
44
+ // InstructionsLoaded, PostModelSwitch, and SessionStart are deliberately kept
45
+ // out of HOOK_SUBCOMMANDS/HOOK_EVENT_TYPES (see the areHooksInstalled comment
46
+ // below) but still need to be recognized here.
46
47
  const INSTRUCTIONS_LOADED_SUBCOMMAND = 'instructions-loaded';
48
+ const MODEL_SWITCH_SUBCOMMAND = 'model-switch';
49
+ const SESSION_START_SUBCOMMAND = 'session-start';
47
50
  // Matches the hook commands this installer writes, in both bare-name and
48
51
  // absolute-path forms (quoted or unquoted):
49
52
  // preflight-collector pre-tool
50
53
  // /abs/path/preflight-collector permission-request
51
54
  // "/quoted/path/preflight-collector" post-tool
52
55
  // preflight-collector instructions-loaded
53
- export const NR_HOOK_RE = new RegExp(`preflight-collector"?\\s+(?:${HOOK_SUBCOMMAND_PATTERN}|${INSTRUCTIONS_LOADED_SUBCOMMAND})`);
56
+ // preflight-collector model-switch
57
+ // preflight-collector session-start
58
+ export const NR_HOOK_RE = new RegExp(`preflight-collector"?\\s+(?:${HOOK_SUBCOMMAND_PATTERN}|${INSTRUCTIONS_LOADED_SUBCOMMAND}|${MODEL_SWITCH_SUBCOMMAND}|${SESSION_START_SUBCOMMAND})`);
54
59
  // ---------------------------------------------------------------------------
55
60
  // Generators
56
61
  // ---------------------------------------------------------------------------
@@ -99,6 +104,34 @@ export function generateHookEntries(binPath, options) {
99
104
  ],
100
105
  },
101
106
  ],
107
+ // Only PostModelSwitch — PreModelSwitch exists to block/confirm a switch,
108
+ // which Preflight has no reason to do, and every field it needs is also
109
+ // on PostModelSwitch's own input.
110
+ PostModelSwitch: [
111
+ {
112
+ matcher: HOOK_MATCHER,
113
+ hooks: [
114
+ {
115
+ type: 'command',
116
+ command: `${collectorInvocation} ${MODEL_SWITCH_SUBCOMMAND}`,
117
+ },
118
+ ],
119
+ },
120
+ ],
121
+ // SessionStart fires on every session (startup/resume/clear/compact/fork)
122
+ // — this collector only acts on the resume-cost fields, present for a
123
+ // subset of those; every other case is a fast no-op.
124
+ SessionStart: [
125
+ {
126
+ matcher: HOOK_MATCHER,
127
+ hooks: [
128
+ {
129
+ type: 'command',
130
+ command: `${collectorInvocation} ${SESSION_START_SUBCOMMAND}`,
131
+ },
132
+ ],
133
+ },
134
+ ],
102
135
  };
103
136
  }
104
137
  export function generateMcpServerEntry(binPath, options) {
@@ -191,10 +224,10 @@ function filterNrObserveEntries(entries) {
191
224
  * this re-run their merge and add the missing permission hooks.
192
225
  * Pure — no file I/O.
193
226
  *
194
- * Deliberately does NOT check StopFailure or InstructionsLoaded: broadening
195
- * what counts as "hooks installed" would change behavior for existing users,
196
- * which is a scope cut for this PR, not an oversight — don't "fix" this
197
- * without re-reading why.
227
+ * Deliberately does NOT check StopFailure, InstructionsLoaded,
228
+ * PostModelSwitch, or SessionStart: broadening what counts as "hooks
229
+ * installed" would change behavior for existing users, which is a scope cut
230
+ * for this PR, not an oversight — don't "fix" this without re-reading why.
198
231
  */
199
232
  export function areHooksInstalled(settingsContent) {
200
233
  const hooks = settingsContent.hooks;
@@ -233,6 +266,8 @@ const HooksFieldSchema = z
233
266
  PermissionDenied: z.array(z.unknown()).optional(),
234
267
  StopFailure: z.array(z.unknown()).optional(),
235
268
  InstructionsLoaded: z.array(z.unknown()).optional(),
269
+ PostModelSwitch: z.array(z.unknown()).optional(),
270
+ SessionStart: z.array(z.unknown()).optional(),
236
271
  })
237
272
  .passthrough();
238
273
  const SettingsSchema = z.object({ hooks: HooksFieldSchema.optional() }).passthrough();
@@ -258,7 +293,12 @@ export function mergeSettings(existing, binPath, options) {
258
293
  const hooks = typeof result.hooks === 'object' && result.hooks !== null
259
294
  ? { ...result.hooks }
260
295
  : {};
261
- for (const hookType of [...HOOK_EVENT_TYPES, 'InstructionsLoaded']) {
296
+ for (const hookType of [
297
+ ...HOOK_EVENT_TYPES,
298
+ 'InstructionsLoaded',
299
+ 'PostModelSwitch',
300
+ 'SessionStart',
301
+ ]) {
262
302
  const existingArr = Array.isArray(hooks[hookType]) ? [...hooks[hookType]] : [];
263
303
  if (binPath !== null && binPath !== undefined) {
264
304
  // Resolved path available: remove stale entry and re-add with the current
@@ -320,7 +360,12 @@ export function removeSettings(existing) {
320
360
  // --- Hooks ---
321
361
  if (typeof result.hooks === 'object' && result.hooks !== null) {
322
362
  const hooks = { ...result.hooks };
323
- for (const hookType of [...HOOK_EVENT_TYPES, 'InstructionsLoaded']) {
363
+ for (const hookType of [
364
+ ...HOOK_EVENT_TYPES,
365
+ 'InstructionsLoaded',
366
+ 'PostModelSwitch',
367
+ 'SessionStart',
368
+ ]) {
324
369
  if (Array.isArray(hooks[hookType])) {
325
370
  const filtered = filterNrObserveEntries(hooks[hookType]);
326
371
  if (filtered.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"install-helper.js","sourceRoot":"","sources":["../../src/install/install-helper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC5C,MAAM,kBAAkB,GAAG,WAAW,CAAC;AACvC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;CACL,CAAC;AAGX,yEAAyE;AACzE,6EAA6E;AAC7E,kEAAkE;AAClE,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,WAAW;IACxB,iBAAiB,EAAE,oBAAoB;IACvC,gBAAgB,EAAE,mBAAmB;IACrC,WAAW,EAAE,cAAc;CACqB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjF,mFAAmF;AACnF,mFAAmF;AACnF,MAAM,8BAA8B,GAAG,qBAAqB,CAAC;AAE7D,yEAAyE;AACzE,4CAA4C;AAC5C,iCAAiC;AACjC,qDAAqD;AACrD,iDAAiD;AACjD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,MAAM,CAClC,+BAA+B,uBAAuB,IAAI,8BAA8B,GAAG,CAC5F,CAAC;AAgCF,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,OAAuC;IAEvC,IAAI,mBAA2B,CAAC;IAEhC,IAAI,OAAO,EAAE,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAC3C,oFAAoF;QACpF,+EAA+E;QAC/E,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC9F,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7E,mBAAmB,GAAG,eAAe,UAAU,GAAG,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,wFAAwF;QACxF,oEAAoE;QACpE,mBAAmB,GAAG,OAAO;YAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;YAC9F,CAAC,CAAC,iBAAiB,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,QAAuB,EAAe,EAAE,CAAC;QACzD;YACE,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,mBAAmB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;SAC9F;KACF,CAAC;IACF,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;QAClC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;QACpC,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB,CAAC;QAChD,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;QAC9C,0EAA0E;QAC1E,iEAAiE;QACjE,4EAA4E;QAC5E,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;QACpC,0EAA0E;QAC1E,wEAAwE;QACxE,+DAA+D;QAC/D,kBAAkB,EAAE;YAClB;gBACE,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,GAAG,mBAAmB,IAAI,8BAA8B,EAAE;qBACpE;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAuB,EACvB,OAAuC;IAEvC,IAAI,OAAO,EAAE,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAC3C,uFAAuF;QACvF,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC7F,OAAO;YACL,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;SAC9E,CAAC;IACJ,CAAC;IACD,6CAA6C;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC1F,OAAO;QACL,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,SAAiB;IACpE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAAC,KAAyB,EAAE,WAA2B;IACvF,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAyB,EACzB,WAA2B;IAE3B,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,sDAAsD;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CACnB,CAAC,CAAU,EAAE,EAAE,CACb,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACV,SAAS,IAAK,CAA6B;YAC3C,OAAQ,CAA6B,CAAC,OAAO,KAAK,QAAQ;YAC1D,UAAU,CAAC,IAAI,CAAE,CAA6B,CAAC,OAAiB,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,sDAAsD;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CACnB,CAAC,CAAU,EAAE,EAAE,CACb,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACV,SAAS,IAAK,CAA6B;YAC3C,OAAQ,CAA6B,CAAC,OAAO,KAAK,QAAQ;YACzD,CAA6B,CAAC,OAAO,KAAK,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAkB;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAAwC;IACxE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAqB;IACrD,MAAM,IAAI,GAAG,YAAY,IAAI,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,qEAAqE;AACrE,yEAAyE;AACzE,iBAAiB;AACjB,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC;KACD,WAAW,EAAE,CAAC;AACjB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAEtF,4EAA4E;AAC5E,6EAA6E;AAC7E,8BAA8B;AAC9B,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,UAAU,aAAa,CAC3B,QAAiC,EACjC,OAAuB,EACvB,OAAuC;IAEvC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,uFAAuF,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAC9G,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1D,gBAAgB;IAChB,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;QACvD,CAAC,CAAC,EAAE,GAAI,MAAM,CAAC,KAAiC,EAAE;QAClD,CAAC,CAAC,EAAE,CAAC;IAET,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,gBAAgB,EAAE,oBAAoB,CAAU,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,KAAK,CAAC,QAAQ,CAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9F,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,0EAA0E;YAC1E,6EAA6E;YAC7E,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACtD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,4EAA4E;YAC5E,oEAAoE;YACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAC9C,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,KAAK,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAErB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAC5B,QAAiC,EACjC,OAAuB,EACvB,OAAuC;IAEvC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,yFAAyF,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAChH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,MAAM,UAAU,GACd,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;QACjE,CAAC,CAAC,EAAE,GAAI,MAAM,CAAC,UAAsC,EAAE;QACvD,CAAC,CAAC,EAAE,CAAC;IAET,6EAA6E;IAC7E,4CAA4C;IAC5C,KAAK,MAAM,QAAQ,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC5D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9C,uEAAuE;QACvE,yDAAyD;QACzD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,aAAa,GACjB,OAAO,UAAU,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI;YACnF,CAAC,CAAE,UAAU,CAAC,cAAc,CAA6B;YACzD,CAAC,CAAC,EAAE,CAAC;QACT,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IACjF,CAAC;SAAM,IAAI,CAAC,CAAC,cAAc,IAAI,UAAU,CAAC,EAAE,CAAC;QAC3C,wEAAwE;QACxE,oCAAoC;QACpC,UAAU,CAAC,cAAc,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,QAAiC;IAC9D,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,gBAAgB;IAChB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,EAAE,GAAI,MAAM,CAAC,KAAiC,EAAE,CAAC;QAE/D,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,gBAAgB,EAAE,oBAAoB,CAAU,EAAE,CAAC;YAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAc,CAAC,CAAC;gBACtE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAE9E,MAAM,UAAU,eAAe,CAAC,QAAiC;IAC/D,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACxE,MAAM,UAAU,GAAG,EAAE,GAAI,MAAM,CAAC,UAAsC,EAAE,CAAC;QACzE,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;QAClC,2EAA2E;QAC3E,+DAA+D;QAC/D,KAAK,MAAM,QAAQ,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,EAAE,CAAC;YAC5D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"install-helper.js","sourceRoot":"","sources":["../../src/install/install-helper.ts"],"names":[],"mappings":"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"}
@@ -15,15 +15,38 @@ export interface ModelStats extends ModelBreakdownEntry {
15
15
  readonly costPerMillionTokens: number | null;
16
16
  readonly avgOutputTokensPerRequest: number | null;
17
17
  }
18
- export interface ModelUsageMetrics {
18
+ /**
19
+ * A discrete model switch, from Claude Code's PostModelSwitch hook. `source`
20
+ * is `'command'`/`'picker'`/`'sdk'` for a deliberate switch, `'auto'` for a
21
+ * persistent automatic change, or `'resume'` for the model restored on
22
+ * session resume — see `ModelSwitchHookEvent`'s doc comment (storage/types.ts)
23
+ * for what this does and doesn't cover.
24
+ */
25
+ export interface ModelSwitchEvent {
26
+ readonly timestamp: number;
27
+ readonly fromModel: string;
28
+ readonly toModel: string;
29
+ readonly source: string;
30
+ readonly requestedModel: string | null;
31
+ }
32
+ interface DerivedModelStats {
19
33
  readonly byModel: Readonly<Record<string, ModelStats>>;
20
34
  readonly mostUsedModel: string | null;
21
35
  readonly mostEfficientModel: string | null;
22
36
  readonly totalModelsUsed: number;
23
37
  }
38
+ export interface ModelUsageMetrics extends DerivedModelStats {
39
+ /** Total PostModelSwitch events seen this process/session. */
40
+ readonly switchCount: number;
41
+ /** Subset of switchCount where source === 'auto' (a persistent automatic change, not a one-turn fallback). */
42
+ readonly automaticSwitchCount: number;
43
+ /** Most recent switches, newest last, bounded to MAX_SWITCH_EVENTS. */
44
+ readonly recentSwitches: readonly ModelSwitchEvent[];
45
+ }
24
46
  import type { Resettable } from './tracker-contracts.js';
25
47
  export declare class ModelUsageTracker implements Resettable {
26
48
  private byModel;
49
+ private switches;
27
50
  recordUsage(model: string, inputTokens: number, outputTokens: number, costUsd: number): void;
28
51
  /**
29
52
  * Seeds cumulative per-model counters from a previous process's last
@@ -42,9 +65,22 @@ export declare class ModelUsageTracker implements Resettable {
42
65
  * activity for that id has reached this tracker.
43
66
  */
44
67
  seedFromPersisted(breakdown: Readonly<Record<string, ModelBreakdownEntry>>): void;
68
+ /**
69
+ * Records a discrete model switch from Claude Code's PostModelSwitch hook.
70
+ * Bounded FIFO — oldest dropped past MAX_SWITCH_EVENTS, mirroring
71
+ * ApiFailureTracker's event-list pattern.
72
+ */
73
+ recordModelSwitch(event: {
74
+ fromModel: string;
75
+ toModel: string;
76
+ source?: string;
77
+ requestedModel?: string | null;
78
+ timestampMs?: number;
79
+ }): void;
45
80
  getRawBreakdown(): Readonly<Record<string, ModelBreakdownEntry>>;
46
81
  getMetrics(): ModelUsageMetrics;
47
82
  combineBreakdowns(breakdowns: ReadonlyArray<Readonly<Record<string, ModelBreakdownEntry>>>): ModelUsageMetrics;
48
83
  reset(_sessionId: string): void;
49
84
  }
85
+ export {};
50
86
  //# sourceMappingURL=model-usage-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-usage-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/model-usage-tracker.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAW,SAAQ,mBAAmB;IACrD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AASD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgEzD,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,OAAO,CAAwC;IAEvD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAY5F;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,GAAG,IAAI;IAkBjF,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAQhE,UAAU,IAAI,iBAAiB;IAS/B,iBAAiB,CACf,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACvE,iBAAiB;IAoBpB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"model-usage-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/model-usage-tracker.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAW,SAAQ,mBAAmB;IACrD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8GAA8G;IAC9G,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACtD;AASD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkEzD,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,QAAQ,CAA0B;IAE1C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAY5F;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,GAAG,IAAI;IAcjF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAiBR,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAQhE,UAAU,IAAI,iBAAiB;IAc/B,iBAAiB,CACf,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACvE,iBAAiB;IA4BpB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAIhC"}
@@ -47,8 +47,10 @@ function deriveModelUsageMetrics(byModelRaw) {
47
47
  totalModelsUsed: Object.keys(byModelRaw).length,
48
48
  };
49
49
  }
50
+ const MAX_SWITCH_EVENTS = 100;
50
51
  export class ModelUsageTracker {
51
52
  byModel = new Map();
53
+ switches = [];
52
54
  recordUsage(model, inputTokens, outputTokens, costUsd) {
53
55
  let stats = this.byModel.get(model);
54
56
  if (!stats) {
@@ -89,6 +91,23 @@ export class ModelUsageTracker {
89
91
  stats.totalCostUsd += entry.totalCostUsd;
90
92
  }
91
93
  }
94
+ /**
95
+ * Records a discrete model switch from Claude Code's PostModelSwitch hook.
96
+ * Bounded FIFO — oldest dropped past MAX_SWITCH_EVENTS, mirroring
97
+ * ApiFailureTracker's event-list pattern.
98
+ */
99
+ recordModelSwitch(event) {
100
+ this.switches.push({
101
+ timestamp: event.timestampMs ?? Date.now(),
102
+ fromModel: event.fromModel,
103
+ toModel: event.toModel,
104
+ source: event.source ?? 'unknown',
105
+ requestedModel: event.requestedModel ?? null,
106
+ });
107
+ if (this.switches.length > MAX_SWITCH_EVENTS) {
108
+ this.switches.shift();
109
+ }
110
+ }
92
111
  // Raw per-model counters only — no derived ratios. This is the shape
93
112
  // persisted onto FullSessionSummary.modelBreakdown (session-store.ts) so a
94
113
  // session file never stores a stale derived ratio; ratios are always
@@ -101,7 +120,12 @@ export class ModelUsageTracker {
101
120
  return out;
102
121
  }
103
122
  getMetrics() {
104
- return deriveModelUsageMetrics(this.getRawBreakdown());
123
+ return {
124
+ ...deriveModelUsageMetrics(this.getRawBreakdown()),
125
+ switchCount: this.switches.length,
126
+ automaticSwitchCount: this.switches.filter((s) => s.source === 'auto').length,
127
+ recentSwitches: [...this.switches],
128
+ };
105
129
  }
106
130
  // Combines raw per-model counters from multiple sources (e.g. this
107
131
  // process's own live counters plus every other today session's persisted
@@ -125,10 +149,19 @@ export class ModelUsageTracker {
125
149
  summed[model] = existing;
126
150
  }
127
151
  }
128
- return deriveModelUsageMetrics(summed);
152
+ // Switch history is this process's own live in-memory state, not part of
153
+ // any persisted per-model breakdown — nothing to combine, so these
154
+ // fields are always empty here regardless of input.
155
+ return {
156
+ ...deriveModelUsageMetrics(summed),
157
+ switchCount: 0,
158
+ automaticSwitchCount: 0,
159
+ recentSwitches: [],
160
+ };
129
161
  }
130
162
  reset(_sessionId) {
131
163
  this.byModel.clear();
164
+ this.switches = [];
132
165
  }
133
166
  }
134
167
  //# sourceMappingURL=model-usage-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-usage-tracker.js","sourceRoot":"","sources":["../../src/metrics/model-usage-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-usage-tracker.js","sourceRoot":"","sources":["../../src/metrics/model-usage-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Session Resume Cost Tracking — records what Claude Code's own SessionStart
3
+ * hook reported about resuming a stale conversation: how long it had been
4
+ * since the last response, and Claude Code's own estimate of what re-caching
5
+ * the conversation will cost. Feeds CostForecastTracker's forecast tool so a
6
+ * resume-driven cost spike has an explanation attached instead of showing up
7
+ * as an unexplained cache-hit dip after the fact.
8
+ *
9
+ * Only ever fed for `source: 'resume'`/`'fork'` SessionStart events that
10
+ * carry the resume-cost fields — a plain 'startup'/'clear'/'compact' start
11
+ * has nothing to report, and `recordResume()` is simply never called for
12
+ * those (see the `onSessionStart` callback wiring in index.ts).
13
+ */
14
+ import type { Resettable } from './tracker-contracts.js';
15
+ export interface SessionResumeEvent {
16
+ readonly timestamp: number;
17
+ readonly secondsSinceLastResponse: number;
18
+ readonly contextTokens: number;
19
+ readonly promptCacheLikelyExpired: boolean;
20
+ readonly estimatedCacheWriteUsd: number;
21
+ }
22
+ export interface SessionResumeMetrics {
23
+ readonly resumeCount: number;
24
+ /** Sum of estimatedCacheWriteUsd across every resume this tracker has seen. */
25
+ readonly totalEstimatedCacheWriteUsd: number;
26
+ readonly lastResume: SessionResumeEvent | null;
27
+ }
28
+ export declare class SessionResumeTracker implements Resettable {
29
+ private resumeCount;
30
+ private totalEstimatedCacheWriteUsd;
31
+ private lastResume;
32
+ recordResume(event: {
33
+ secondsSinceLastResponse: number;
34
+ contextTokens: number;
35
+ promptCacheLikelyExpired: boolean;
36
+ estimatedCacheWriteUsd: number;
37
+ timestampMs?: number;
38
+ }): void;
39
+ getMetrics(): SessionResumeMetrics;
40
+ reset(_sessionId: string): void;
41
+ }
42
+ //# sourceMappingURL=session-resume-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-resume-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/session-resume-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAChD;AAED,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,2BAA2B,CAAK;IACxC,OAAO,CAAC,UAAU,CAAmC;IAErD,YAAY,CAAC,KAAK,EAAE;QAClB,wBAAwB,EAAE,MAAM,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC;QACtB,wBAAwB,EAAE,OAAO,CAAC;QAClC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAaR,UAAU,IAAI,oBAAoB;IAQlC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAKhC"}
@@ -0,0 +1,30 @@
1
+ export class SessionResumeTracker {
2
+ resumeCount = 0;
3
+ totalEstimatedCacheWriteUsd = 0;
4
+ lastResume = null;
5
+ recordResume(event) {
6
+ const resume = {
7
+ timestamp: event.timestampMs ?? Date.now(),
8
+ secondsSinceLastResponse: event.secondsSinceLastResponse,
9
+ contextTokens: event.contextTokens,
10
+ promptCacheLikelyExpired: event.promptCacheLikelyExpired,
11
+ estimatedCacheWriteUsd: event.estimatedCacheWriteUsd,
12
+ };
13
+ this.resumeCount++;
14
+ this.totalEstimatedCacheWriteUsd += event.estimatedCacheWriteUsd;
15
+ this.lastResume = resume;
16
+ }
17
+ getMetrics() {
18
+ return {
19
+ resumeCount: this.resumeCount,
20
+ totalEstimatedCacheWriteUsd: this.totalEstimatedCacheWriteUsd,
21
+ lastResume: this.lastResume,
22
+ };
23
+ }
24
+ reset(_sessionId) {
25
+ this.resumeCount = 0;
26
+ this.totalEstimatedCacheWriteUsd = 0;
27
+ this.lastResume = null;
28
+ }
29
+ }
30
+ //# sourceMappingURL=session-resume-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-resume-tracker.js","sourceRoot":"","sources":["../../src/metrics/session-resume-tracker.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,oBAAoB;IACvB,WAAW,GAAG,CAAC,CAAC;IAChB,2BAA2B,GAAG,CAAC,CAAC;IAChC,UAAU,GAA8B,IAAI,CAAC;IAErD,YAAY,CAAC,KAMZ;QACC,MAAM,MAAM,GAAuB;YACjC,SAAS,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;YAC1C,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;YACxD,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;YACxD,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;SACrD,CAAC;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,2BAA2B,IAAI,KAAK,CAAC,sBAAsB,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;YAC7D,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAkB;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -135,6 +135,23 @@ export interface ApiFailureHookEvent extends HookEventBase {
135
135
  readonly errorDetails?: string;
136
136
  readonly lastAssistantMessage?: string;
137
137
  }
138
+ /**
139
+ * Emitted by Claude Code's SessionStart hook (code.claude.com/docs/en/hooks.md).
140
+ * Fires on every session (startup/resume/clear/compact/fork) — `source`
141
+ * distinguishes which. Only a `source` of `'resume'`/`'fork'` with a
142
+ * transcript that already has a response carries the four resume-cost
143
+ * fields below (Claude Code v2.1.251+); they're `undefined` for every other
144
+ * `source`, and this event is only actionable when they're present.
145
+ */
146
+ export interface SessionStartHookEvent extends HookEventBase {
147
+ readonly mode: 'session_start';
148
+ readonly sessionId?: string;
149
+ readonly source?: string;
150
+ readonly secondsSinceLastResponse?: number;
151
+ readonly contextTokens?: number;
152
+ readonly promptCacheLikelyExpired?: boolean;
153
+ readonly estimatedCacheWriteUsd?: number;
154
+ }
138
155
  /**
139
156
  * Emitted by Claude Code's InstructionsLoaded hook, which fires each time a
140
157
  * `CLAUDE.md` or `.claude/rules/*.md` file is loaded into context —
@@ -150,15 +167,38 @@ export interface InstructionsLoadedHookEvent extends HookEventBase {
150
167
  readonly memoryType?: string;
151
168
  readonly loadReason?: string;
152
169
  }
170
+ /**
171
+ * Emitted by Claude Code's PostModelSwitch hook after the session's model
172
+ * changes (code.claude.com/docs/en/hooks.md). Only `PostModelSwitch` is
173
+ * installed — `PreModelSwitch` exists to block/confirm a switch, which
174
+ * Preflight has no reason to do, and every field here is also present on
175
+ * PostModelSwitch's own input.
176
+ *
177
+ * `source` is `'command'`/`'picker'`/`'sdk'` for a deliberate switch,
178
+ * `'auto'` for a persistent automatic change (e.g. a sustained fallback),
179
+ * or `'resume'` for the model restored on session resume. Claude Code does
180
+ * NOT fire this hook for a single-turn fallback-model-chain substitution
181
+ * that leaves the session's nominal model unchanged — that specific case
182
+ * stays invisible, `source: 'auto'` only covers a persistent switch.
183
+ */
184
+ export interface ModelSwitchHookEvent extends HookEventBase {
185
+ readonly mode: 'model_switch';
186
+ readonly sessionId?: string;
187
+ readonly fromModel: string;
188
+ readonly toModel: string;
189
+ readonly requestedModel?: string | null;
190
+ readonly source?: string;
191
+ }
153
192
  /**
154
193
  * Buffer line discriminated union. `pre`/`post`/`token` are the original
155
194
  * collector modes; `permission_request`/`permission_denied` are collector
156
195
  * modes for Claude Code's permission hooks. `subagent_token`, `workflow_run`,
157
196
  * and `observability_health` are emitted by the SubagentWatcher / WorkflowWatcher.
158
197
  * `api_failure` is emitted by the collector for Claude Code's StopFailure
159
- * hook, `instructions_loaded` for its InstructionsLoaded hook.
198
+ * hook, `session_start` for its SessionStart hook, `instructions_loaded` for
199
+ * its InstructionsLoaded hook, `model_switch` for its PostModelSwitch hook.
160
200
  */
161
- export type HookEvent = PreHookEvent | PostHookEvent | PermissionRequestHookEvent | PermissionDeniedHookEvent | TokenHookEvent | SubagentTokenHookEvent | WorkflowRunEvent | ObservabilityHealthHookEvent | ApiFailureHookEvent | InstructionsLoadedHookEvent;
201
+ export type HookEvent = PreHookEvent | PostHookEvent | PermissionRequestHookEvent | PermissionDeniedHookEvent | TokenHookEvent | SubagentTokenHookEvent | WorkflowRunEvent | ObservabilityHealthHookEvent | ApiFailureHookEvent | SessionStartHookEvent | InstructionsLoadedHookEvent | ModelSwitchHookEvent;
162
202
  export interface TokenEvent {
163
203
  readonly mode: 'token';
164
204
  readonly timestamp: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export const TASK_COMPLETION_TOOL = {
32
32
  };
33
33
  export const MODEL_USAGE_TOOL = {
34
34
  name: 'nr_observe_get_model_usage',
35
- description: 'Get per-model usage statistics: request counts, token totals, cost, and cost-per-output-token efficiency ratios. Identifies the most-used and most cost-efficient model.',
35
+ description: 'Get per-model usage statistics: request counts, token totals, cost, and cost-per-output-token efficiency ratios. Identifies the most-used and most cost-efficient model, plus any PostModelSwitch events (deliberate /model changes, automatic fallbacks, or resume) recorded this session.',
36
36
  inputSchema: { type: 'object', properties: {} },
37
37
  annotations: { readOnlyHint: true },
38
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-tools.js","sourceRoot":"","sources":["../../src/tools/analytics-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics-tools.js","sourceRoot":"","sources":["../../src/tools/analytics-tools.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import type { CostTracker } from '../metrics/cost-tracker.js';
12
12
  import type { TaskDetector } from '../metrics/task-detector.js';
13
13
  import type { BudgetTracker } from '../metrics/budget-tracker.js';
14
14
  import type { ModelUsageTracker } from '../metrics/model-usage-tracker.js';
15
+ import type { SessionResumeTracker } from '../metrics/session-resume-tracker.js';
15
16
  import { type RegisteredToolSet } from './tool-registry.js';
16
17
  export interface TokenReport {
17
18
  input_tokens: number;
@@ -116,7 +117,7 @@ export declare function handleGetBudgetStatus(budgetTracker: BudgetTracker): {
116
117
  text: string;
117
118
  }>;
118
119
  };
119
- export declare function handleGetCostForecast(costTracker: CostTracker, sessionStartMs: number): {
120
+ export declare function handleGetCostForecast(costTracker: CostTracker, sessionStartMs: number, sessionResumeTracker?: SessionResumeTracker): {
120
121
  content: Array<{
121
122
  type: 'text';
122
123
  text: string;
@@ -144,6 +145,7 @@ export interface CostToolsDeps {
144
145
  budgetTracker?: BudgetTracker;
145
146
  taskDetector?: TaskDetector;
146
147
  modelUsageTracker?: ModelUsageTracker;
148
+ sessionResumeTracker?: SessionResumeTracker;
147
149
  sessionStartMs?: number;
148
150
  }
149
151
  export declare function registerCostTools(deps: CostToolsDeps): RegisteredToolSet;
@@ -1 +1 @@
1
- {"version":3,"file":"cost-tools.d.ts","sourceRoot":"","sources":["../../src/tools/cost-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAI3E,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwB9B,CAAC;AAYF,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,WAAW,EACjB,iBAAiB,CAAC,EAAE,iBAAiB;;;;;;;;;;;;EAuDtC;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;CAS/B,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,YAAY;;;;;EA8B3F;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;CAS9B,CAAC;AAMF,eAAO,MAAM,kBAAkB;;;;;;;;;;CAS9B,CAAC;AAMF,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG;IACnE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAGA;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,MAAM,GACrB;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAUpD;AAMD,eAAO,MAAM,wBAAwB;;;;;;;;;;CAUpC,CAAC;AAwBF,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG;IACpE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAkCA;AAeD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CA4DxE"}
1
+ {"version":3,"file":"cost-tools.d.ts","sourceRoot":"","sources":["../../src/tools/cost-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAIjF,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwB9B,CAAC;AAYF,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,WAAW,EACjB,iBAAiB,CAAC,EAAE,iBAAiB;;;;;;;;;;;;EAuDtC;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;CAS/B,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,YAAY;;;;;EA8B3F;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;CAS9B,CAAC;AAMF,eAAO,MAAM,kBAAkB;;;;;;;;;;CAU9B,CAAC;AAMF,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG;IACnE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAGA;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,MAAM,EACtB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAgBpD;AAMD,eAAO,MAAM,wBAAwB;;;;;;;;;;CAUpC,CAAC;AAwBF,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG;IACpE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAkCA;AAeD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAgExE"}
@@ -152,7 +152,8 @@ export const BUDGET_STATUS_TOOL = {
152
152
  // ---------------------------------------------------------------------------
153
153
  export const COST_FORECAST_TOOL = {
154
154
  name: 'nr_observe_get_cost_forecast',
155
- description: 'Project AI spending forward based on current session rate. Returns forecast cost for end-of-day, end-of-week, and end-of-session (8h), with a confidence note.',
155
+ description: 'Project AI spending forward based on current session rate. Returns forecast cost for end-of-day, end-of-week, and end-of-session (8h), with a confidence note. ' +
156
+ "When this session was resumed after being stale, also includes resumeContext: Claude Code's own report of how long it had been and its estimated cost to re-warm the prompt cache — context for a cost spike the rate-based forecast alone would not explain.",
156
157
  inputSchema: {
157
158
  type: 'object',
158
159
  properties: {},
@@ -166,7 +167,7 @@ export function handleGetBudgetStatus(budgetTracker) {
166
167
  const status = budgetTracker.getStatus();
167
168
  return { content: [{ type: 'text', text: JSON.stringify(status, null, 2) }] };
168
169
  }
169
- export function handleGetCostForecast(costTracker, sessionStartMs) {
170
+ export function handleGetCostForecast(costTracker, sessionStartMs, sessionResumeTracker) {
170
171
  const metrics = costTracker.getMetrics();
171
172
  const todayKey = localDateKey();
172
173
  const forecast = buildCostForecastFromInputs({
@@ -175,7 +176,13 @@ export function handleGetCostForecast(costTracker, sessionStartMs) {
175
176
  dailySpentUsd: costTracker.getCostForDay(todayKey),
176
177
  dailyFirstActivityMs: costTracker.getFirstActivityMsForDay(todayKey),
177
178
  });
178
- return { content: [{ type: 'text', text: JSON.stringify(forecast, null, 2) }] };
179
+ // resumeContext rides alongside the forecast as extra informational JSON —
180
+ // the forecast math itself (buildCostForecastFromInputs) is untouched, so
181
+ // this can never perturb its well-tested rate/confidence calculations.
182
+ const response = sessionResumeTracker
183
+ ? { ...forecast, resumeContext: sessionResumeTracker.getMetrics() }
184
+ : forecast;
185
+ return { content: [{ type: 'text', text: JSON.stringify(response, null, 2) }] };
179
186
  }
180
187
  // ---------------------------------------------------------------------------
181
188
  // Prompt Cache Health tool
@@ -307,7 +314,7 @@ export function registerCostTools(deps) {
307
314
  const missing = requireAvailable(!!deps.costTracker && deps.sessionStartMs !== undefined, 'CostTracker or sessionStartMs not available');
308
315
  if (missing)
309
316
  return missing;
310
- return handleGetCostForecast(deps.costTracker, deps.sessionStartMs);
317
+ return handleGetCostForecast(deps.costTracker, deps.sessionStartMs, deps.sessionResumeTracker);
311
318
  },
312
319
  },
313
320
  ]);