MCPcopy Create free account
hub / github.com/anomalyco/opencode / mergeCost

Function mergeCost

packages/core/src/plugin/models-dev.ts:52–70  ·  view source on GitHub ↗
(base: ModelV2Info["cost"], override: ModelsDev.Model["cost"] | undefined)

Source from the content-addressed store, hash-verified

50}
51
52function mergeCost(base: ModelV2Info["cost"], override: ModelsDev.Model["cost"] | undefined) {
53 if (!override) return base
54 const next = cost(override)
55 const [baseDefault, ...baseTiers] = base
56 const [nextDefault, ...nextTiers] = next
57 const tierKey = (item: ModelV2Info["cost"][number]) => `${item.tier?.type ?? "base"}:${item.tier?.size ?? 0}`
58 const merge = (left: ModelV2Info["cost"][number], right: ModelV2Info["cost"][number]) => ({
59 ...left,
60 ...right,
61 tier: right.tier ?? left.tier,
62 cache: { ...left.cache, ...right.cache },
63 })
64 const tiers = new Map(baseTiers.map((item) => [tierKey(item), item]))
65 for (const item of nextTiers) {
66 const current = tiers.get(tierKey(item))
67 tiers.set(tierKey(item), current ? merge(current, item) : item)
68 }
69 return [merge(baseDefault ?? { input: 0, output: 0, cache: { read: 0, write: 0 } }, nextDefault), ...tiers.values()]
70}
71
72function modeName(model: ModelsDev.Model, mode: string) {
73 return `${model.name} ${mode.charAt(0).toUpperCase()}${mode.slice(1)}`

Callers 1

models-dev.tsFile · 0.85

Calls 6

tierKeyFunction · 0.85
costFunction · 0.70
mergeFunction · 0.70
getMethod · 0.65
setMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected