d146e45e2f
Add a Bun script to apply and normalize AGPL copyright headers across the default frontend source files. The script keeps headers idempotent, upgrades existing headers to the 2023-2026 QuantumNous range, and is exposed through `bun run copyright` for future maintenance.
103 lines
2.8 KiB
TypeScript
Vendored
103 lines
2.8 KiB
TypeScript
Vendored
/*
|
|
Copyright (C) 2023-2026 QuantumNous
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as
|
|
published by the Free Software Foundation, either version 3 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
For commercial licensing, please contact support@quantumnous.com
|
|
*/
|
|
import type { RatioType } from '../types'
|
|
import { RATIO_TYPE_OPTIONS } from './constants'
|
|
|
|
export type RatioDifferenceEntry = {
|
|
current: number | string | null
|
|
upstreams: Record<string, number | string | 'same'>
|
|
confidence: Record<string, boolean>
|
|
}
|
|
|
|
export type ModelRow = {
|
|
key: string
|
|
model: string
|
|
ratioTypes: Partial<Record<RatioType, RatioDifferenceEntry>>
|
|
billingConflict: boolean
|
|
}
|
|
|
|
export type ResolutionsMap = Record<string, Record<string, number | string>>
|
|
|
|
export const RATIO_SYNC_FIELDS: RatioType[] = [
|
|
'model_ratio',
|
|
'completion_ratio',
|
|
'cache_ratio',
|
|
'create_cache_ratio',
|
|
'image_ratio',
|
|
'audio_ratio',
|
|
'audio_completion_ratio',
|
|
]
|
|
|
|
export const SYNC_FIELD_ORDER: RatioType[] = [
|
|
...RATIO_SYNC_FIELDS,
|
|
'model_price',
|
|
'billing_mode',
|
|
'billing_expr',
|
|
]
|
|
|
|
export const NUMERIC_SYNC_FIELDS = new Set<string>([
|
|
...RATIO_SYNC_FIELDS,
|
|
'model_price',
|
|
])
|
|
|
|
export function getSyncFieldLabel(
|
|
ratioType: string,
|
|
t: (key: string) => string
|
|
): string {
|
|
const opt = RATIO_TYPE_OPTIONS.find((o) => o.value === ratioType)
|
|
if (opt) return t(opt.label)
|
|
return ratioType
|
|
}
|
|
|
|
export function getOrderedRatioTypes(
|
|
ratioTypes: Partial<Record<RatioType, RatioDifferenceEntry>>,
|
|
filter?: string
|
|
): RatioType[] {
|
|
const keys = Object.keys(ratioTypes) as RatioType[]
|
|
const ordered = [
|
|
...SYNC_FIELD_ORDER.filter((f) => keys.includes(f)),
|
|
...keys.filter((f) => !SYNC_FIELD_ORDER.includes(f)),
|
|
]
|
|
if (!filter || filter === '__all__') return ordered
|
|
return ordered.filter((f) => f === filter)
|
|
}
|
|
|
|
export function getPreferredSyncField(
|
|
ratioTypes: Partial<Record<RatioType, RatioDifferenceEntry>>,
|
|
ratioType: RatioType,
|
|
sourceName: string
|
|
): RatioType {
|
|
const exprValue = ratioTypes.billing_expr?.upstreams?.[sourceName]
|
|
if (
|
|
ratioType !== 'billing_expr' &&
|
|
exprValue !== null &&
|
|
exprValue !== undefined &&
|
|
exprValue !== 'same'
|
|
) {
|
|
return 'billing_expr'
|
|
}
|
|
return ratioType
|
|
}
|
|
|
|
export function isSelectableUpstreamValue(
|
|
value: number | string | 'same' | null | undefined
|
|
): boolean {
|
|
return value !== null && value !== undefined && value !== 'same'
|
|
}
|