feat(prompts-core): resolve prompt variants by declaration order

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-24 17:23:41 +09:00
parent 5e156e50b2
commit ada4092ea1
9 changed files with 147 additions and 3 deletions
+27 -3
View File
@@ -1,5 +1,29 @@
import type { ResolveVariantInput } from "./types"
import {
NoMatchingVariantError,
type ResolveVariantInput,
type VariantDefinition,
type VariantFallback,
} from "./types"
export function resolveVariant(_input: ResolveVariantInput): string {
return "__red__"
function isVariantFallback(definition: VariantDefinition): definition is VariantFallback {
return "fallback" in definition && definition.fallback === true
}
export function resolveVariant(input: ResolveVariantInput): string {
const entries = Object.entries(input.variants)
const testInput = {
...(input.modelID === undefined ? {} : { modelID: input.modelID }),
...(input.agentName === undefined ? {} : { agentName: input.agentName }),
}
for (const [variantKey, definition] of entries) {
if (isVariantFallback(definition)) continue
if (definition.test(testInput)) return variantKey
}
const fallbackEntry = entries.find(([, definition]) => isVariantFallback(definition))
if (fallbackEntry !== undefined) return fallbackEntry[0]
const variantKeys = entries.map(([variantKey]) => variantKey).join(", ")
throw new NoMatchingVariantError(`No matching prompt variant found among: ${variantKeys}`)
}