import { BaseClient, RequestMethod } from '../base-client'; import { Routes } from '../../types/routes.types'; import { PromptTemplate, PromptTemplateVersion, ListPromptTemplateResponse, ListPromptTemplateParams, RenderTemplateRequest, RenderTemplateResponse, RenderTemplateRequestOpenAPI, RenderTemplateResponseOpenAPI, PromptTemplateVersionOpenAPI, PromptTemplateOpenAPI, ListPromptTemplateParamsOpenAPI, ListPromptTemplateResponseOpenAPI, CreatePromptTemplateWithVersionRequestBody, CreatePromptTemplateWithVersionRequestBodyOpenAPI } from '../../types/prompt-template.types'; import { Message } from '../../types/message.types'; export class PromptTemplateService extends BaseClient { private projectId: string; constructor(apiUrl: string, token: string, projectId: string) { super(); this.apiUrl = apiUrl; this.token = token; this.projectId = projectId; this.initializeClient(); } public getPromptTemplates = async (): Promise => { const result = await this.makeRequest( RequestMethod.GET, Routes.promptTemplates, null, { project_id: this.projectId } ); return this.convertToCamelCase( result ); }; public getPromptTemplate = async (id: string): Promise => { const result = await this.makeRequest( RequestMethod.GET, Routes.promptTemplate, null, { project_id: this.projectId, template_id: id } ); return this.convertToCamelCase( result ); }; public getPromptTemplateVersion = async ( id: string, version: number ): Promise => { const result = await this.makeRequest( RequestMethod.GET, Routes.promptTemplateVersion, null, { project_id: this.projectId, template_id: id, version } ); return this.convertToCamelCase< PromptTemplateVersionOpenAPI, PromptTemplateVersion >(result); }; public getPromptTemplateVersionByName = async ( name: string, version?: number ): Promise => { const result = await this.makeRequest( RequestMethod.GET, Routes.promptTemplateVersions, null, { project_id: this.projectId, template_name: name, version: version ?? null } ); return this.convertToCamelCase< PromptTemplateVersionOpenAPI, PromptTemplateVersion >(result); }; public createPromptTemplate = async ({ template, name }: { template: Message[]; name: string; }): Promise => { const result = await this.makeRequest( RequestMethod.POST, Routes.promptTemplates, { template, name }, { project_id: this.projectId } ); return this.convertToCamelCase( result ); }; } export class GlobalPromptTemplateService extends BaseClient { private projectId?: string; constructor(apiUrl: string, token: string, projectId?: string) { super(); this.apiUrl = apiUrl; this.token = token; this.projectId = projectId; this.initializeClient(); } public async createGlobalPromptTemplate( options: CreatePromptTemplateWithVersionRequestBody, projectId?: string ): Promise { const finalProjectId = projectId ?? (this.projectId ? this.projectId : null); return await this.makeRequestWithConversion< CreatePromptTemplateWithVersionRequestBody, CreatePromptTemplateWithVersionRequestBodyOpenAPI, PromptTemplateOpenAPI, PromptTemplate >( RequestMethod.POST, Routes.globalPromptTemplates, options, finalProjectId ? { project_id: finalProjectId } : undefined ); } public listGlobalPromptTemplates = async ( options: ListPromptTemplateParams, limit: number = 100, startingToken: number = 0 ): Promise => { return await this.makeRequestWithConversion< ListPromptTemplateParams, ListPromptTemplateParamsOpenAPI, ListPromptTemplateResponseOpenAPI, ListPromptTemplateResponse >(RequestMethod.POST, Routes.globalPromptTemplateQuery, options, { limit: limit, starting_token: startingToken }); }; public getGlobalPromptTemplate = async ( templateId: string ): Promise => { const result = await this.makeRequest( RequestMethod.GET, Routes.globalPromptTemplate, null, { template_id: templateId } ); return this.convertToCamelCase( result ); }; public getGlobalPromptTemplateVersion = async ( templateId: string, version: number ): Promise => { const result = await this.makeRequest( RequestMethod.GET, Routes.globalPromptTemplateVersion, null, { template_id: templateId, version } ); return this.convertToCamelCase< PromptTemplateVersionOpenAPI, PromptTemplateVersion >(result); }; public deleteGlobalPromptTemplate = async ( template_id: string ): Promise => { return await this.makeRequest( RequestMethod.DELETE, Routes.globalPromptTemplate, null, { template_id } ); }; public updateGlobalPromptTemplate = async ({ templateId, name }: { templateId: string; name: string; }): Promise => { const result = await this.makeRequest( RequestMethod.PATCH, Routes.globalPromptTemplate, { name }, { template_id: templateId } ); return this.convertToCamelCase( result ); }; public renderTemplate = async ( body: RenderTemplateRequest, startingToken: number = 0, limit: number = 100 ): Promise => { return await this.makeRequestWithConversion< typeof body, RenderTemplateRequestOpenAPI, RenderTemplateResponseOpenAPI, RenderTemplateResponse >(RequestMethod.POST, Routes.renderTemplate, body, { starting_token: startingToken, limit }); }; }