From 6add5de0f1beeba6087f3eed4765dc86be38a9d2 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 24 May 2026 17:22:56 +0900 Subject: [PATCH] feat(prompts-core): add public prompt loader types Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- packages/prompts-core/src/types.ts | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 packages/prompts-core/src/types.ts diff --git a/packages/prompts-core/src/types.ts b/packages/prompts-core/src/types.ts new file mode 100644 index 000000000..ecb41febe --- /dev/null +++ b/packages/prompts-core/src/types.ts @@ -0,0 +1,51 @@ +export interface VariantTest { + test: (input: { modelID?: string; agentName?: string }) => boolean +} + +export interface VariantFallback { + fallback: true +} + +export type VariantDefinition = VariantTest | VariantFallback + +export interface VariantTable { + [variantKey: string]: VariantDefinition +} + +export interface ResolveVariantInput { + modelID?: string + agentName?: string + variants: VariantTable +} + +export interface RuntimeInjection { + placeholder: string + resolver: () => string +} + +export interface LoadPromptInput { + source: string + name: string + variant: string + inject?: readonly RuntimeInjection[] +} + +export interface LoadedPrompt { + body: string + frontmatter: Record + resolvedPath: string +} + +export class PromptNotFoundError extends Error { + constructor(message: string) { + super(message) + this.name = "PromptNotFoundError" + } +} + +export class NoMatchingVariantError extends Error { + constructor(message: string) { + super(message) + this.name = "NoMatchingVariantError" + } +}