Files
stack/apps/api/src/mosaic-telemetry/mosaic-telemetry.module.ts
Jason Woltje ed23293e1a feat(#373): prediction integration for cost estimation
- Create PredictionService for pre-task cost/token estimates
- Refresh common predictions on startup
- Integrate predictions into LLM telemetry tracker
- Add GET /api/telemetry/estimate endpoint
- Graceful degradation when no prediction data available
- Add unit tests for prediction service

Refs #373

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 02:10:22 -06:00

42 lines
1.5 KiB
TypeScript

import { Module, Global } from "@nestjs/common";
import { ConfigModule } from "@nestjs/config";
import { AuthModule } from "../auth/auth.module";
import { MosaicTelemetryService } from "./mosaic-telemetry.service";
import { PredictionService } from "./prediction.service";
import { MosaicTelemetryController } from "./mosaic-telemetry.controller";
/**
* Global module providing Mosaic Telemetry integration via @mosaicstack/telemetry-client.
*
* Tracks task completion events and provides crowd-sourced predictions for
* token usage, cost estimation, and quality metrics.
*
* **This is separate from the OpenTelemetry (OTEL) TelemetryModule** which
* handles distributed request tracing. This module is specifically for
* Mosaic Stack's own telemetry aggregation service.
*
* Configuration via environment variables:
* - MOSAIC_TELEMETRY_ENABLED (boolean, default: true)
* - MOSAIC_TELEMETRY_SERVER_URL (string)
* - MOSAIC_TELEMETRY_API_KEY (string, 64-char hex)
* - MOSAIC_TELEMETRY_INSTANCE_ID (string, UUID)
* - MOSAIC_TELEMETRY_DRY_RUN (boolean, default: false)
*
* @example
* ```typescript
* // In any service (no need to import module — it's global):
* @Injectable()
* export class MyService {
* constructor(private readonly telemetry: MosaicTelemetryService) {}
* }
* ```
*/
@Global()
@Module({
imports: [ConfigModule, AuthModule],
controllers: [MosaicTelemetryController],
providers: [MosaicTelemetryService, PredictionService],
exports: [MosaicTelemetryService, PredictionService],
})
export class MosaicTelemetryModule {}