import {z} from 'zod' export type CreatePlaygroundPromptRequest = {playground_prompt_id?: (unknown | null) | undefined}; export type CreateApiProjectsProjectIdPlaygroundsPlaygroundIdPromptsArgs = {project_id: unknown, playground_id: unknown, body: CreatePlaygroundPromptRequest}; export type CreateApiProjectsProjectIdPlaygroundsPlaygroundIdPromptsOptions = {baseUrl?: string | undefined, APIKeyHeader?: string | undefined, fetch?: typeof fetch | undefined}; export const userAction = z.enum(["update", "delete", "read_api_keys", "change_role_to_admin", "change_role_to_manager", "change_role_to_user", "change_role_to_read_only", "change_role_to_org_annotator", "change_role_to_capability_based"]); export const groupAction = z.enum(["update", "list_members", "join", "request_to_join"]); export const groupMemberAction = z.enum(["update_role", "delete"]); export const projectAction = z.enum(["read_all_logs", "read_filtered_logs", "delete", "rename", "share", "create_run", "delete_run", "rename_run", "move_run", "export_data", "configure_human_feedback", "record_human_feedback", "log_data", "toggle_metric", "edit_alert", "create_stage", "edit_stage", "configure_crown_logic", "configure_rate_limit", "delete_data", "set_metric", "edit_run_tags", "dismiss_alert", "edit_slice", "edit_edit", "update_control_bindings", "use_control_runtime"]); export const scorerAction = z.enum(["create_shared", "create_global", "update", "delete", "share", "export", "autotune_apply"]); export const registeredScorerAction = z.enum(["update", "delete"]); export const apiKeyAction = z.enum(["update", "delete"]); export const generatedScorerAction = z.enum(["update", "delete"]); export const fineTunedScorerAction = z.enum(["update", "delete"]); export const datasetAction = z.enum(["update", "delete", "share", "export", "rename"]); export const integrationAction = z.enum(["update", "delete", "share", "read_secrets"]); export const organizationAction = z.enum(["rename", "delete", "delete_log_data", "read_settings", "update_settings", "read_cost_settings", "read_ai_usage", "read_ai_usage_organization", "read_unredacted_data"]); export const annotationQueueAction = z.enum(["update", "delete", "share", "record_annotation"]); export const controlResourceAction = z.enum(["create", "read", "update", "delete"]); export const permission = z.object({action: z.union([userAction, groupAction, groupMemberAction, projectAction, scorerAction, registeredScorerAction, apiKeyAction, generatedScorerAction, fineTunedScorerAction, datasetAction, integrationAction, organizationAction, annotationQueueAction, controlResourceAction]), allowed: z.boolean(), message: z.string().nullable().optional()}); export const openAIFunction = z.object({name: z.string()}); export const openAIToolChoice = z.object({type: z.string().optional(), function: openAIFunction}); export const promptRunSettingsOutput = z.object({logprobs: z.boolean().optional(), top_logprobs: z.number().int().optional(), echo: z.boolean().optional(), n: z.number().int().optional(), reasoning_effort: z.string().optional(), verbosity: z.string().optional(), deployment_name: z.string().nullable().optional(), model_alias: z.string().optional(), temperature: z.number().nullable().optional(), max_tokens: z.number().int().optional(), stop_sequences: z.array(z.string()).nullable().optional(), top_p: z.number().optional(), top_k: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), tools: z.string().nullable().optional(), tool_choice: z.union([z.string(), openAIToolChoice]).nullable().optional(), response_format: z.record(z.string(), z.string()).nullable().optional()}); export const basePrompt = z.object({id: z.string(), permissions: z.array(permission).optional(), version: z.number().int(), version_id: z.string(), name: z.string(), template: z.string(), settings: promptRunSettingsOutput.optional(), raw: z.boolean().optional()}); export const playgroundPromptResponse = z.object({id: z.string(), base_prompt: basePrompt.nullable(), template: z.string().nullable().optional(), settings: promptRunSettingsOutput.optional(), raw: z.boolean(), position: z.number().int(), run_id: z.string().nullable().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Create Playground Prompt * * POST /projects/{project_id}/playgrounds/{playground_id}/prompts * * Also accepts auth: ClassicAPIKeyHeader, OAuth2PasswordBearer, HTTPBasic */ export const createApiProjectsProjectIdPlaygroundsPlaygroundIdPrompts = async (args: CreateApiProjectsProjectIdPlaygroundsPlaygroundIdPromptsArgs, options?: CreateApiProjectsProjectIdPlaygroundsPlaygroundIdPromptsOptions) => { const {baseUrl = "https://api.galileo.ai", fetch: fetchFn = fetch, APIKeyHeader} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (APIKeyHeader !== undefined) headers.set("Splunk-AO-API-Key", APIKeyHeader) const url = `${baseUrl.replace(/\/+$/, '')}/projects/${encodeURIComponent(String(args.project_id))}/playgrounds/${encodeURIComponent(String(args.playground_id))}/prompts${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(playgroundPromptResponse, await res.json()) };