@@ -16,9 +16,8 @@ import { TelemetryService } from "@roo-code/telemetry"
1616import { Task } from "../Task"
1717import { ClineProvider } from "../../webview/ClineProvider"
1818import { ContextProxy } from "../../config/ContextProxy"
19- import { UsageRecorder } from "../../../services/stats/UsageRecorder"
19+ import { UsageRecorder , type UsageEventSink } from "../../../services/stats/UsageRecorder"
2020import type { UsageRecordingContext } from "../../../services/stats/UsageRecorder"
21- import { UsageEventStore } from "../../../services/stats/UsageEventStore"
2221
2322// Mock @roo -code/core
2423vi . mock ( "@roo-code/core" , ( ) => ( {
@@ -281,7 +280,7 @@ describe("Usage Stats Recording", () => {
281280 const mockStore = {
282281 append : vi . fn ( ) . mockResolvedValue ( true ) ,
283282 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
284- } as unknown as UsageEventStore
283+ } as unknown as UsageEventSink
285284 const recorder = new UsageRecorder ( mockStore )
286285
287286 const ctx = makeRecordingContext ( )
@@ -303,7 +302,7 @@ describe("Usage Stats Recording", () => {
303302 const mockStore = {
304303 append : vi . fn ( ) . mockResolvedValue ( true ) ,
305304 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
306- } as unknown as UsageEventStore
305+ } as unknown as UsageEventSink
307306 const recorder = new UsageRecorder ( mockStore )
308307
309308 const ctx = makeRecordingContext ( )
@@ -326,7 +325,7 @@ describe("Usage Stats Recording", () => {
326325 const mockStore = {
327326 append : vi . fn ( ) . mockResolvedValue ( true ) ,
328327 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
329- } as unknown as UsageEventStore
328+ } as unknown as UsageEventSink
330329 const recorder = new UsageRecorder ( mockStore )
331330
332331 const ctx0 = makeRecordingContext ( { attempt : 0 } )
@@ -347,7 +346,7 @@ describe("Usage Stats Recording", () => {
347346 const mockStore = {
348347 append : vi . fn ( ) . mockRejectedValue ( new Error ( "disk full" ) ) ,
349348 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
350- } as unknown as UsageEventStore
349+ } as unknown as UsageEventSink
351350 const recorder = new UsageRecorder ( mockStore )
352351
353352 const ctx = makeRecordingContext ( )
@@ -361,7 +360,7 @@ describe("Usage Stats Recording", () => {
361360 const mockStore = {
362361 append : vi . fn ( ) . mockResolvedValue ( true ) ,
363362 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
364- } as unknown as UsageEventStore
363+ } as unknown as UsageEventSink
365364 const recorder = new UsageRecorder ( mockStore )
366365
367366 const ctx = makeRecordingContext ( {
@@ -386,7 +385,7 @@ describe("Usage Stats Recording", () => {
386385 const mockStore = {
387386 append : vi . fn ( ) . mockResolvedValue ( true ) ,
388387 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
389- } as unknown as UsageEventStore
388+ } as unknown as UsageEventSink
390389 const recorder = new UsageRecorder ( mockStore )
391390
392391 const ctx = makeRecordingContext ( { parentTaskId : "parent-task-001" } )
@@ -400,7 +399,7 @@ describe("Usage Stats Recording", () => {
400399 const mockStore = {
401400 append : vi . fn ( ) . mockResolvedValue ( true ) ,
402401 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
403- } as unknown as UsageEventStore
402+ } as unknown as UsageEventSink
404403 const recorder = new UsageRecorder ( mockStore )
405404
406405 const ctx = makeRecordingContext ( )
@@ -416,7 +415,7 @@ describe("Usage Stats Recording", () => {
416415 const mockStore = {
417416 append : vi . fn ( ) . mockResolvedValue ( true ) ,
418417 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
419- } as unknown as UsageEventStore
418+ } as unknown as UsageEventSink
420419 const recorder = new UsageRecorder ( mockStore )
421420
422421 const ctx = makeRecordingContext ( )
@@ -430,7 +429,7 @@ describe("Usage Stats Recording", () => {
430429 const mockStore = {
431430 append : vi . fn ( ) . mockResolvedValue ( true ) ,
432431 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
433- } as unknown as UsageEventStore
432+ } as unknown as UsageEventSink
434433 const recorder = new UsageRecorder ( mockStore )
435434
436435 const ctx = makeRecordingContext ( )
@@ -445,7 +444,7 @@ describe("Usage Stats Recording", () => {
445444 const mockStore = {
446445 append : vi . fn ( ) . mockResolvedValue ( true ) ,
447446 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
448- } as unknown as UsageEventStore
447+ } as unknown as UsageEventSink
449448 const recorder = new UsageRecorder ( mockStore )
450449
451450 const ctx = makeRecordingContext ( {
@@ -466,9 +465,9 @@ describe("Usage Stats Recording", () => {
466465
467466 describe ( "Task integration" , ( ) => {
468467 it ( "should construct usageRecorder as non-null when globalStoragePath is valid" , ( ) => {
469- // The Task constructor wraps UsageEventStore/UsageRecorder initialization
470- // in a try-catch . With a valid globalStoragePath, the recorder should be
471- // successfully constructed (store initialization is deferred to first append).
468+ // The Task constructor injects the provider's shared UsageStatsService as the
469+ // UsageRecorder sink . With a valid globalStoragePath and service , the recorder
470+ // should be successfully constructed (store initialization is deferred to first append).
472471 const task = new Task ( {
473472 provider : mockProvider ,
474473 apiConfiguration : mockApiConfig ,
@@ -493,7 +492,7 @@ describe("Usage Stats Recording", () => {
493492 expect ( ( task as any ) . usageRecorder ) . toBeDefined ( )
494493 } )
495494
496- it ( "should construct UsageRecorder with globalStoragePath from provider context " , ( ) => {
495+ it ( "should construct UsageRecorder with the provider's shared append sink " , ( ) => {
497496 const task = new Task ( {
498497 provider : mockProvider ,
499498 apiConfiguration : mockApiConfig ,
@@ -503,8 +502,8 @@ describe("Usage Stats Recording", () => {
503502
504503 const recorder = ( task as any ) . usageRecorder
505504 expect ( recorder ) . toBeInstanceOf ( UsageRecorder )
506- // The recorder should have a store that was constructed with the globalStoragePath
507- expect ( recorder . store ) . toBeDefined ( )
505+ // The recorder should be wired to the provider's UsageStatsService append sink.
506+ expect ( recorder . sink ) . toBe ( mockProvider . getUsageStatsService ( ) )
508507 } )
509508 } )
510509
@@ -515,7 +514,7 @@ describe("Usage Stats Recording", () => {
515514 const mockStore = {
516515 append : vi . fn ( ) . mockResolvedValue ( true ) ,
517516 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
518- } as unknown as UsageEventStore
517+ } as unknown as UsageEventSink
519518 const recorder = new UsageRecorder ( mockStore )
520519
521520 const ctx = makeRecordingContext ( { taskId : "abc-123" , attempt : 5 } )
@@ -532,7 +531,7 @@ describe("Usage Stats Recording", () => {
532531 const mockStore = {
533532 append : vi . fn ( ) . mockResolvedValue ( true ) ,
534533 initialize : vi . fn ( ) . mockResolvedValue ( undefined ) ,
535- } as unknown as UsageEventStore
534+ } as unknown as UsageEventSink
536535 const recorder = new UsageRecorder ( mockStore )
537536
538537 const ctx = makeRecordingContext ( )
0 commit comments