import { Schema } from "effect"; const ControllerTotalsSchema = Schema.Struct({ total_requests: Schema.Number, successful_requests: Schema.Number, failed_requests: Schema.Number, success_rate: Schema.Number,}); const ControllerLatencySchema = Schema.Struct({ avg_ms: Schema.NullOr(Schema.Number), max_ms: Schema.NullOr(Schema.Number),}); const ControllerRecentActivitySchema = Schema.Struct({ last_hour_requests: Schema.Number, last_24h_requests: Schema.Number, last_24h_failed_requests: Schema.Number,}); const ControllerPathSchema = Schema.Struct({ method: Schema.String, path: Schema.String, requests: Schema.Number, successful: Schema.Number, failed: Schema.Number, success_rate: Schema.Number, avg_duration_ms: Schema.NullOr(Schema.Number), max_duration_ms: Schema.NullOr(Schema.Number),}); const ControllerStatusSchema = Schema.Struct({ status: Schema.Number, requests: Schema.Number,}); const ControllerErrorSchema = Schema.Struct({ method: Schema.String, path: Schema.String, status: Schema.Number, error_class: Schema.NullOr(Schema.String), error_message: Schema.NullOr(Schema.String), created_at: Schema.String,}); const FunctionTotalsSchema = Schema.Struct({ total_calls: Schema.Number, successful_calls: Schema.Number, failed_calls: Schema.Number, success_rate: Schema.Number,}); const FunctionUsageSchema = Schema.Struct({ function_name: Schema.String, calls: Schema.Number, successful: Schema.Number, failed: Schema.Number, success_rate: Schema.Number, avg_duration_ms: Schema.NullOr(Schema.Number), max_duration_ms: Schema.NullOr(Schema.Number),}); const FunctionErrorSchema = Schema.Struct({ function_name: Schema.String, error_class: Schema.NullOr(Schema.String), error_message: Schema.NullOr(Schema.String), created_at: Schema.String,}); const FunctionCallsSchema = Schema.Struct({ totals: FunctionTotalsSchema, latency: ControllerLatencySchema, by_function: Schema.mutable(Schema.Array(FunctionUsageSchema)), recent_errors: Schema.mutable(Schema.Array(FunctionErrorSchema)),}); export const ControllerUsageStatsSchema = Schema.Struct({ totals: ControllerTotalsSchema, latency: ControllerLatencySchema, recent_activity: ControllerRecentActivitySchema, by_path: Schema.mutable(Schema.Array(ControllerPathSchema)), by_status: Schema.mutable(Schema.Array(ControllerStatusSchema)), recent_errors: Schema.mutable(Schema.Array(ControllerErrorSchema)), function_calls: Schema.optionalKey(FunctionCallsSchema),}); const UsageTotalsSchema = Schema.Struct({ total_tokens: Schema.Number, prompt_tokens: Schema.Number, completion_tokens: Schema.Number, total_requests: Schema.Number, successful_requests: Schema.Number, failed_requests: Schema.Number, success_rate: Schema.Number, unique_sessions: Schema.Number, unique_users: Schema.Number,}); const UsageLatencySchema = Schema.Struct({ avg_ms: Schema.NullOr(Schema.Number), p50_ms: Schema.NullOr(Schema.Number), p95_ms: Schema.NullOr(Schema.Number), p99_ms: Schema.NullOr(Schema.Number), min_ms: Schema.NullOr(Schema.Number), max_ms: Schema.NullOr(Schema.Number),}); const UsageTtftSchema = Schema.Struct({ avg_ms: Schema.NullOr(Schema.Number), p50_ms: Schema.NullOr(Schema.Number), p95_ms: Schema.NullOr(Schema.Number), p99_ms: Schema.NullOr(Schema.Number),}); const TokensPerRequestSchema = Schema.Struct({ avg: Schema.Number, avg_prompt: Schema.Number, avg_completion: Schema.Number, max: Schema.Number, p50: Schema.Number, p95: Schema.Number,}); const CacheSchema = Schema.Struct({ hits: Schema.Number, misses: Schema.Number, hit_tokens: Schema.Number, miss_tokens: Schema.Number, hit_rate: Schema.Number,}); const WeekSchema = Schema.Struct({ requests: Schema.Number, tokens: Schema.Number, successful: Schema.Number,}); const WeekOverWeekSchema = Schema.Struct({ this_week: WeekSchema, last_week: WeekSchema, change_pct: Schema.Struct({ requests: Schema.NullOr(Schema.Number), tokens: Schema.NullOr(Schema.Number), }),}); const RecentActivitySchema = Schema.Struct({ last_hour_requests: Schema.Number, last_24h_requests: Schema.Number, prev_24h_requests: Schema.Number, last_24h_tokens: Schema.Number, change_24h_pct: Schema.NullOr(Schema.Number),}); const PeakDaySchema = Schema.Struct({ date: Schema.String, requests: Schema.Number, tokens: Schema.Number,}); const PeakHourSchema = Schema.Struct({ hour: Schema.Number, requests: Schema.Number,}); const ModelUsageSchema = Schema.Struct({ model: Schema.String, requests: Schema.Number, successful: Schema.Number, success_rate: Schema.Number, total_tokens: Schema.Number, prompt_tokens: Schema.Number, completion_tokens: Schema.Number, avg_tokens: Schema.Number, avg_latency_ms: Schema.NullOr(Schema.Number), p50_latency_ms: Schema.NullOr(Schema.Number), avg_ttft_ms: Schema.NullOr(Schema.Number), tokens_per_sec: Schema.NullOr(Schema.Number), prefill_tps: Schema.NullOr(Schema.Number), generation_tps: Schema.NullOr(Schema.Number),}); const DailyUsageSchema = Schema.Struct({ date: Schema.String, requests: Schema.Number, successful: Schema.Number, success_rate: Schema.Number, total_tokens: Schema.Number, prompt_tokens: Schema.Number, completion_tokens: Schema.Number, avg_latency_ms: Schema.Number,}); const DailyModelUsageSchema = Schema.Struct({ date: Schema.String, model: Schema.String, requests: Schema.Number, successful: Schema.Number, success_rate: Schema.Number, total_tokens: Schema.Number, prompt_tokens: Schema.Number, completion_tokens: Schema.Number,}); const HourlyUsageSchema = Schema.Struct({ hour: Schema.Number, requests: Schema.Number, successful: Schema.Number, tokens: Schema.Number,}); export const UsageStatsSchema = Schema.Struct({ totals: UsageTotalsSchema, latency: UsageLatencySchema, ttft: UsageTtftSchema, tokens_per_request: TokensPerRequestSchema, cache: CacheSchema, week_over_week: WeekOverWeekSchema, recent_activity: RecentActivitySchema, peak_days: Schema.mutable(Schema.Array(PeakDaySchema)), peak_hours: Schema.mutable(Schema.Array(PeakHourSchema)), by_model: Schema.mutable(Schema.Array(ModelUsageSchema)), daily: Schema.mutable(Schema.Array(DailyUsageSchema)), daily_by_model: Schema.optionalKey(Schema.mutable(Schema.Array(DailyModelUsageSchema))), hourly_pattern: Schema.mutable(Schema.Array(HourlyUsageSchema)), controller: Schema.optionalKey(ControllerUsageStatsSchema),}); const isUsageStats = Schema.is(UsageStatsSchema); export const validateUsageStats = (value: unknown): typeof UsageStatsSchema.Type => { if (!isUsageStats(value)) throw new TypeError("Invalid normalized usage projection"); return value;};
import { Schema } from "effect";
const ControllerTotalsSchema = Schema.Struct({
total_requests: Schema.Number,
successful_requests: Schema.Number,
failed_requests: Schema.Number,
success_rate: Schema.Number,
});
const ControllerLatencySchema = Schema.Struct({
avg_ms: Schema.NullOr(Schema.Number),
max_ms: Schema.NullOr(Schema.Number),
});
const ControllerRecentActivitySchema = Schema.Struct({
last_hour_requests: Schema.Number,
last_24h_requests: Schema.Number,
last_24h_failed_requests: Schema.Number,
});
const ControllerPathSchema = Schema.Struct({
method: Schema.String,
path: Schema.String,
requests: Schema.Number,
successful: Schema.Number,
failed: Schema.Number,
success_rate: Schema.Number,
avg_duration_ms: Schema.NullOr(Schema.Number),
max_duration_ms: Schema.NullOr(Schema.Number),
});
const ControllerStatusSchema = Schema.Struct({
status: Schema.Number,
requests: Schema.Number,
});
const ControllerErrorSchema = Schema.Struct({
method: Schema.String,
path: Schema.String,
status: Schema.Number,
error_class: Schema.NullOr(Schema.String),
error_message: Schema.NullOr(Schema.String),
created_at: Schema.String,
});
const FunctionTotalsSchema = Schema.Struct({
total_calls: Schema.Number,
successful_calls: Schema.Number,
failed_calls: Schema.Number,
success_rate: Schema.Number,
});
const FunctionUsageSchema = Schema.Struct({
function_name: Schema.String,
calls: Schema.Number,
successful: Schema.Number,
failed: Schema.Number,
success_rate: Schema.Number,
avg_duration_ms: Schema.NullOr(Schema.Number),
max_duration_ms: Schema.NullOr(Schema.Number),
});
const FunctionErrorSchema = Schema.Struct({
function_name: Schema.String,
error_class: Schema.NullOr(Schema.String),
error_message: Schema.NullOr(Schema.String),
created_at: Schema.String,
});
const FunctionCallsSchema = Schema.Struct({
totals: FunctionTotalsSchema,
latency: ControllerLatencySchema,
by_function: Schema.mutable(Schema.Array(FunctionUsageSchema)),
recent_errors: Schema.mutable(Schema.Array(FunctionErrorSchema)),
});
export const ControllerUsageStatsSchema = Schema.Struct({
totals: ControllerTotalsSchema,
latency: ControllerLatencySchema,
recent_activity: ControllerRecentActivitySchema,
by_path: Schema.mutable(Schema.Array(ControllerPathSchema)),
by_status: Schema.mutable(Schema.Array(ControllerStatusSchema)),
recent_errors: Schema.mutable(Schema.Array(ControllerErrorSchema)),
function_calls: Schema.optionalKey(FunctionCallsSchema),
});
const UsageTotalsSchema = Schema.Struct({
total_tokens: Schema.Number,
prompt_tokens: Schema.Number,
completion_tokens: Schema.Number,
total_requests: Schema.Number,
successful_requests: Schema.Number,
failed_requests: Schema.Number,
success_rate: Schema.Number,
unique_sessions: Schema.Number,
unique_users: Schema.Number,
});
const UsageLatencySchema = Schema.Struct({
avg_ms: Schema.NullOr(Schema.Number),
p50_ms: Schema.NullOr(Schema.Number),
p95_ms: Schema.NullOr(Schema.Number),
p99_ms: Schema.NullOr(Schema.Number),
min_ms: Schema.NullOr(Schema.Number),
max_ms: Schema.NullOr(Schema.Number),
});
const UsageTtftSchema = Schema.Struct({
avg_ms: Schema.NullOr(Schema.Number),
p50_ms: Schema.NullOr(Schema.Number),
p95_ms: Schema.NullOr(Schema.Number),
p99_ms: Schema.NullOr(Schema.Number),
});
const TokensPerRequestSchema = Schema.Struct({
avg: Schema.Number,
avg_prompt: Schema.Number,
avg_completion: Schema.Number,
max: Schema.Number,
p50: Schema.Number,
p95: Schema.Number,
});
const CacheSchema = Schema.Struct({
hits: Schema.Number,
misses: Schema.Number,
hit_tokens: Schema.Number,
miss_tokens: Schema.Number,
hit_rate: Schema.Number,
});
const WeekSchema = Schema.Struct({
requests: Schema.Number,
tokens: Schema.Number,
successful: Schema.Number,
});
const WeekOverWeekSchema = Schema.Struct({
this_week: WeekSchema,
last_week: WeekSchema,
change_pct: Schema.Struct({
requests: Schema.NullOr(Schema.Number),
tokens: Schema.NullOr(Schema.Number),
}),
});
const RecentActivitySchema = Schema.Struct({
last_hour_requests: Schema.Number,
last_24h_requests: Schema.Number,
prev_24h_requests: Schema.Number,
last_24h_tokens: Schema.Number,
change_24h_pct: Schema.NullOr(Schema.Number),
});
const PeakDaySchema = Schema.Struct({
date: Schema.String,
requests: Schema.Number,
tokens: Schema.Number,
});
const PeakHourSchema = Schema.Struct({
hour: Schema.Number,
requests: Schema.Number,
});
const ModelUsageSchema = Schema.Struct({
model: Schema.String,
requests: Schema.Number,
successful: Schema.Number,
success_rate: Schema.Number,
total_tokens: Schema.Number,
prompt_tokens: Schema.Number,
completion_tokens: Schema.Number,
avg_tokens: Schema.Number,
avg_latency_ms: Schema.NullOr(Schema.Number),
p50_latency_ms: Schema.NullOr(Schema.Number),
avg_ttft_ms: Schema.NullOr(Schema.Number),
tokens_per_sec: Schema.NullOr(Schema.Number),
prefill_tps: Schema.NullOr(Schema.Number),
generation_tps: Schema.NullOr(Schema.Number),
});
const DailyUsageSchema = Schema.Struct({
date: Schema.String,
requests: Schema.Number,
successful: Schema.Number,
success_rate: Schema.Number,
total_tokens: Schema.Number,
prompt_tokens: Schema.Number,
completion_tokens: Schema.Number,
avg_latency_ms: Schema.Number,
});
const DailyModelUsageSchema = Schema.Struct({
date: Schema.String,
model: Schema.String,
requests: Schema.Number,
successful: Schema.Number,
success_rate: Schema.Number,
total_tokens: Schema.Number,
prompt_tokens: Schema.Number,
completion_tokens: Schema.Number,
});
const HourlyUsageSchema = Schema.Struct({
hour: Schema.Number,
requests: Schema.Number,
successful: Schema.Number,
tokens: Schema.Number,
});
export const UsageStatsSchema = Schema.Struct({
totals: UsageTotalsSchema,
latency: UsageLatencySchema,
ttft: UsageTtftSchema,
tokens_per_request: TokensPerRequestSchema,
cache: CacheSchema,
week_over_week: WeekOverWeekSchema,
recent_activity: RecentActivitySchema,
peak_days: Schema.mutable(Schema.Array(PeakDaySchema)),
peak_hours: Schema.mutable(Schema.Array(PeakHourSchema)),
by_model: Schema.mutable(Schema.Array(ModelUsageSchema)),
daily: Schema.mutable(Schema.Array(DailyUsageSchema)),
daily_by_model: Schema.optionalKey(Schema.mutable(Schema.Array(DailyModelUsageSchema))),
hourly_pattern: Schema.mutable(Schema.Array(HourlyUsageSchema)),
controller: Schema.optionalKey(ControllerUsageStatsSchema),
});
const isUsageStats = Schema.is(UsageStatsSchema);
export const validateUsageStats = (value: unknown): typeof UsageStatsSchema.Type => {
if (!isUsageStats(value)) throw new TypeError("Invalid normalized usage projection");
return value;
};