diff --git a/packages/prompts/src/index.ts b/packages/prompts/src/index.ts index 97d4627..cf5cc74 100644 --- a/packages/prompts/src/index.ts +++ b/packages/prompts/src/index.ts @@ -767,3 +767,36 @@ export const group = async ( return results; }; + +class PromptBuilder = {}> { + private results = {} as TResults; + + add>( + key: TKey extends keyof TResults ? never : TKey, + prompt: (data: { results: Prettify> }) => TResult + ): PromptBuilder< + { + [Key in keyof TResults]: Key extends TKey ? TResult : TResults[Key]; + } & { + [Key in TKey]: TResult; + } + > { + // @ts-ignore + this.results[key] = prompt; + // @ts-ignore + return this; + } + + async run(): Promise>> { + for (const [key, prompt] of Object.entries(this.results)) { + // @ts-ignore + this.results[key] = await prompt({ results: this.results }); + } + // @ts-ignore + return this.results; + } +} + +export const builder = () => { + return new PromptBuilder(); +};