@amigo-ai/sdk 0.50.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -685,7 +685,7 @@ var UserResource = class {
685
685
  }
686
686
  async createUser(body, headers) {
687
687
  return extractData(
688
- this.c.POST("/v1/{organization}/user/invite", {
688
+ this.c.POST("/v1/{organization}/user/", {
689
689
  params: { path: { organization: this.orgId } },
690
690
  body,
691
691
  headers
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/core/errors.ts", "../src/core/utils.ts", "../src/core/openapi-client.ts", "../src/core/auth.ts", "../src/core/retry.ts", "../src/resources/organization.ts", "../src/resources/conversation.ts", "../src/resources/services.ts", "../src/resources/user.ts", "../src/index.ts"],
4
- "sourcesContent": ["import type { Middleware } from 'openapi-fetch'\nimport { isNetworkError, parseResponseBody } from './utils'\n\n/**\n * Base error class for all Amigo SDK errors.\n * Provides common functionality and error identification.\n */\nexport class AmigoError extends Error {\n /**\n * Unique error code for programmatic error handling\n */\n readonly errorCode?: string\n\n /**\n * HTTP status code if applicable\n */\n readonly statusCode?: number\n\n /**\n * Additional context data\n */\n context?: Record<string, unknown>\n\n constructor(message: string, options?: Record<string, unknown>) {\n super(message)\n this.name = this.constructor.name\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype)\n\n // Capture stack trace\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n\n // copies status, code, etc.\n Object.assign(this, options)\n }\n\n /**\n * Returns a JSON-serializable representation of the error\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.errorCode,\n statusCode: this.statusCode,\n context: this.context,\n stack: this.stack,\n }\n }\n}\n\n/* 4xx client errors */\nexport class BadRequestError extends AmigoError {}\nexport class AuthenticationError extends AmigoError {}\nexport class PermissionError extends AmigoError {}\nexport class NotFoundError extends AmigoError {}\nexport class ConflictError extends AmigoError {}\nexport class RateLimitError extends AmigoError {}\n\n/* 5xx server errors */\nexport class ServerError extends AmigoError {}\nexport class ServiceUnavailableError extends ServerError {}\n\n/* Internal SDK errors */\nexport class ConfigurationError extends AmigoError {\n constructor(\n message: string,\n public field?: string\n ) {\n super(message)\n this.context = { field }\n }\n}\n\n/* Validation errors */\nexport class ValidationError extends BadRequestError {\n constructor(\n msg: string,\n public fieldErrors?: Record<string, string>\n ) {\n super(msg)\n }\n}\n\n/* Network-related errors */\nexport class NetworkError extends AmigoError {\n constructor(\n message: string,\n public readonly originalError?: Error,\n public readonly request?: {\n url?: string\n method?: string\n }\n ) {\n super(message, { cause: originalError })\n this.context = { request }\n }\n}\n\n/* Parsing errors */\nexport class ParseError extends AmigoError {\n constructor(\n message: string,\n public readonly parseType: 'json' | 'response' | 'other',\n public readonly originalError?: Error\n ) {\n super(message, { cause: originalError })\n this.context = { parseType }\n }\n}\n\n/* Type guard functions */\nexport function isAmigoError(error: unknown): error is AmigoError {\n return error instanceof AmigoError\n}\n\n/* Error factory to create appropriate error instances from API responses */\nexport function createApiError(response: Response, body?: unknown): AmigoError {\n const map: Record<number, typeof AmigoError> = {\n 400: BadRequestError,\n 401: AuthenticationError,\n 403: PermissionError,\n 404: NotFoundError,\n 409: ConflictError,\n 422: ValidationError,\n 429: RateLimitError,\n 500: ServerError,\n 503: ServiceUnavailableError,\n }\n\n const errorMessageKeys = ['message', 'error', 'detail']\n\n const ErrorClass = map[response.status] ?? AmigoError\n let message = `HTTP ${response.status} ${response.statusText}`\n\n if (body && typeof body === 'object') {\n for (const key of errorMessageKeys) {\n if (key in body) {\n message = String((body as Record<string, unknown>)[key])\n break\n }\n }\n }\n\n const options = {\n status: response.status,\n code:\n body && typeof body === 'object' && 'code' in body\n ? (body as Record<string, unknown>).code\n : undefined,\n response: body,\n }\n\n const error = new ErrorClass(message, options)\n\n return error\n}\n\nexport function createErrorMiddleware(): Middleware {\n return {\n onResponse: async ({ response }) => {\n if (!response.ok) {\n const body = await parseResponseBody(response)\n throw createApiError(response, body)\n }\n },\n onError: async ({ error, request }) => {\n // Handle network-related errors consistently\n if (isNetworkError(error)) {\n throw new NetworkError(\n `Network error: ${error instanceof Error ? error.message : String(error)}`,\n error instanceof Error ? error : new Error(String(error)),\n {\n url: request?.url,\n method: request?.method,\n }\n )\n }\n throw error\n },\n }\n}\n", "import { ParseError } from './errors'\n\n// Type helper to extract the data type from openapi-fetch responses\nexport type ExtractDataType<T> = T extends { data?: infer D } ? NonNullable<D> : never\n\n// Helper function to extract data from openapi-fetch responses\n// Since our middleware throws on errors, successful responses will have data\nexport async function extractData<T extends { data?: unknown }>(\n responsePromise: Promise<T>\n): Promise<ExtractDataType<T>> {\n const result = await responsePromise\n const data = (result as { data?: ExtractDataType<T> }).data\n\n if (data === undefined || data === null) {\n // Invariant: our error middleware throws for non-2xx responses.\n // If we reach here without data, treat as a parse/protocol error.\n throw new ParseError('Expected response data to be present for successful request', 'response')\n }\n\n return data\n}\n\n/**\n * Parse an NDJSON HTTP response body into an async generator of parsed JSON objects.\n * The generator yields one parsed object per line. Empty lines are skipped.\n */\nexport async function* parseNdjsonStream<T = unknown>(response: Response): AsyncGenerator<T> {\n const body = response.body\n if (!body) return\n\n const reader = body.getReader()\n const decoder = new TextDecoder()\n let bufferedText = ''\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n bufferedText += decoder.decode(value, { stream: true })\n\n let newlineIndex: number\n // Process all complete lines in the buffer\n while ((newlineIndex = bufferedText.indexOf('\\n')) !== -1) {\n const line = bufferedText.slice(0, newlineIndex).trim()\n bufferedText = bufferedText.slice(newlineIndex + 1)\n if (!line) continue\n try {\n yield JSON.parse(line) as T\n } catch (err) {\n throw new ParseError('Failed to parse NDJSON line', 'json', err as Error)\n }\n }\n }\n\n // Flush any trailing line without a newline\n const trailing = bufferedText.trim()\n if (trailing) {\n try {\n yield JSON.parse(trailing) as T\n } catch (err) {\n throw new ParseError('Failed to parse trailing NDJSON line', 'json', err as Error)\n }\n }\n } finally {\n reader.releaseLock()\n }\n}\n\n// Utility function to safely parse response bodies without throwing errors\nexport async function parseResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n if (!text) return undefined\n try {\n return JSON.parse(text)\n } catch {\n return text // Return as string if not valid JSON\n }\n } catch {\n return undefined // Return undefined if any error occurs\n }\n}\n\n// Helper to detect network-related errors\nexport function isNetworkError(error: unknown): boolean {\n if (!(error instanceof Error)) return false\n\n return (\n error instanceof TypeError ||\n error.message.includes('fetch') ||\n error.message.includes('Failed to fetch') ||\n error.message.includes('Network request failed') ||\n error.message.includes('ECONNREFUSED') ||\n error.message.includes('ETIMEDOUT') ||\n error.message.includes('ENOTFOUND') ||\n error.message.includes('network')\n )\n}\n", "import createClient, { type Client } from 'openapi-fetch'\nimport { createErrorMiddleware } from './errors'\nimport { createAuthMiddleware } from './auth'\nimport type { paths } from '../generated/api-types'\nimport type { AmigoSdkConfig } from '..'\nimport { createRetryingFetch } from './retry'\n\nexport type AmigoFetch = Client<paths>\n\nexport function createAmigoFetch(config: AmigoSdkConfig, mockFetch?: typeof fetch): AmigoFetch {\n const wrappedFetch = createRetryingFetch(\n config.retry,\n mockFetch ?? (globalThis.fetch as typeof fetch)\n )\n\n const client = createClient<paths>({\n baseUrl: config.baseUrl,\n fetch: wrappedFetch,\n })\n\n // Apply error handling middleware first (to catch all errors)\n client.use(createErrorMiddleware())\n\n // Apply auth middleware after error handling (so auth errors are properly handled)\n client.use(createAuthMiddleware(config))\n\n return client\n}\n", "import type { Middleware } from 'openapi-fetch'\nimport type { components } from '../generated/api-types'\nimport type { AmigoSdkConfig } from '..'\nimport { AmigoError, AuthenticationError, NetworkError, ParseError, createApiError } from './errors'\nimport { isNetworkError, parseResponseBody } from './utils'\n\ntype SignInWithApiKeyResponse = components['schemas']['user__sign_in_with_api_key__Response']\n\n/** Helper function to trade API key for a bearer token */\nexport async function getBearerToken(config: AmigoSdkConfig): Promise<SignInWithApiKeyResponse> {\n const url = `${config.baseUrl}/v1/${config.orgId}/user/signin_with_api_key`\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'x-api-key': config.apiKey,\n 'x-api-key-id': config.apiKeyId,\n 'x-user-id': config.userId,\n },\n })\n\n if (!response.ok) {\n const body = await parseResponseBody(response)\n const apiError = createApiError(response, body)\n\n // Enhance authentication errors with additional context\n if (response.status === 401) {\n throw new AuthenticationError(`Authentication failed: ${apiError.message}`, {\n ...apiError,\n context: { ...apiError.context, endpoint: 'signin_with_api_key' },\n })\n }\n throw apiError\n }\n\n return (await response.json()) as SignInWithApiKeyResponse\n } catch (err) {\n // Re-throw our custom errors as-is\n if (err instanceof AmigoError) {\n throw err\n }\n\n // Handle network errors\n if (isNetworkError(err)) {\n throw new NetworkError('Failed to connect to authentication endpoint', err as Error, {\n url,\n method: 'POST',\n })\n }\n\n // Handle JSON parsing errors\n throw new ParseError(\n 'Failed to parse authentication response',\n 'json',\n err instanceof Error ? err : new Error(String(err))\n )\n }\n}\n\nexport function createAuthMiddleware(config: AmigoSdkConfig): Middleware {\n let token: SignInWithApiKeyResponse | null = null\n let refreshPromise: Promise<SignInWithApiKeyResponse> | null = null\n\n const shouldRefreshToken = (tokenData: SignInWithApiKeyResponse): boolean => {\n if (!tokenData.expires_at) return false\n\n const expiryTime = new Date(tokenData.expires_at).getTime()\n const currentTime = Date.now()\n const timeUntilExpiry = expiryTime - currentTime\n const refreshThreshold = 5 * 60 * 1000 // 5 minutes in milliseconds\n\n return timeUntilExpiry <= refreshThreshold\n }\n\n const ensureValidToken = async (): Promise<SignInWithApiKeyResponse> => {\n if (!token || shouldRefreshToken(token)) {\n if (!refreshPromise) {\n refreshPromise = getBearerToken(config)\n try {\n token = await refreshPromise\n } finally {\n refreshPromise = null\n }\n } else {\n token = await refreshPromise\n }\n }\n return token\n }\n\n return {\n onRequest: async ({ request }) => {\n try {\n const validToken = await ensureValidToken()\n if (validToken?.id_token) {\n request.headers.set('Authorization', `Bearer ${validToken.id_token}`)\n }\n } catch (error) {\n // Clear token and re-throw - getBearerToken already provides proper error types\n token = null\n throw error\n }\n return request\n },\n\n onResponse: async ({ response }) => {\n // Handle 401 responses by clearing token to force refresh on next request\n if (response.status === 401) {\n token = null\n }\n },\n\n onError: async ({ error }) => {\n // Clear token on any error to force refresh\n token = null\n throw error\n },\n }\n}\n", "export type RetryOptions = {\n /** Maximum number of attempts to make (default: 3) */\n maxAttempts?: number\n /** Base delay between attempts (default: 250ms) */\n backoffBaseMs?: number\n /** Maximum delay between attempts (default: 30s) */\n maxDelayMs?: number\n /** Status codes to retry on (default: 408, 429, 500, 502, 503, 504) */\n retryOnStatus?: Set<number>\n /** Methods to retry on (default: GET) */\n retryOnMethods?: Set<string>\n}\n\nconst DEFAULT_RETRYABLE_STATUS = new Set([408, 429, 500, 502, 503, 504])\nconst DEFAULT_RETRYABLE_METHODS = new Set(['GET']) as Set<string>\n\nexport function resolveRetryOptions(options?: RetryOptions): Required<RetryOptions> {\n return {\n maxAttempts: options?.maxAttempts ?? 3,\n backoffBaseMs: options?.backoffBaseMs ?? 250,\n maxDelayMs: options?.maxDelayMs ?? 30_000,\n retryOnStatus: new Set(options?.retryOnStatus ?? DEFAULT_RETRYABLE_STATUS),\n retryOnMethods: new Set(options?.retryOnMethods ?? DEFAULT_RETRYABLE_METHODS),\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction parseRetryAfterMs(headerValue: string | null, maxDelayMs: number): number | null {\n if (!headerValue) return null\n const seconds = Number(headerValue)\n if (Number.isFinite(seconds)) {\n return clamp(seconds * 1000, 0, maxDelayMs)\n }\n const date = new Date(headerValue)\n const ms = date.getTime() - Date.now()\n if (Number.isFinite(ms)) {\n return clamp(ms, 0, maxDelayMs)\n }\n return null\n}\n\nfunction computeBackoffWithJitterMs(\n attemptIndexZeroBased: number,\n baseMs: number,\n capMs: number\n): number {\n const windowMs = Math.min(capMs, baseMs * Math.pow(2, attemptIndexZeroBased))\n return Math.random() * windowMs\n}\n\nfunction isAbortError(err: unknown): boolean {\n return typeof err === 'object' && err !== null && 'name' in err && err['name'] === 'AbortError'\n}\n\nfunction isNetworkError(err: unknown): boolean {\n // Undici & browsers use TypeError for network failures\n return err instanceof TypeError && !isAbortError(err)\n}\n\nasync function abortableSleep(ms: number, signal?: AbortSignal): Promise<void> {\n if (ms <= 0) {\n signal?.throwIfAborted?.()\n return\n }\n await new Promise<void>((resolve, reject) => {\n const rejectWith =\n signal?.reason instanceof Error ? signal.reason : (signal?.reason ?? new Error('AbortError'))\n\n if (signal?.aborted) {\n reject(rejectWith)\n return\n }\n const t = setTimeout(() => {\n off()\n resolve()\n }, ms)\n const onAbort = () => {\n off()\n clearTimeout(t)\n reject(rejectWith)\n }\n const off = () => signal?.removeEventListener('abort', onAbort)\n signal?.addEventListener('abort', onAbort, { once: true })\n })\n}\n\nexport function createRetryingFetch(\n retryOptions?: RetryOptions,\n baseFetch?: typeof fetch\n): typeof fetch {\n const resolved = resolveRetryOptions(retryOptions)\n const underlying: typeof fetch = baseFetch ?? (globalThis.fetch as typeof fetch)\n\n const retryingFetch: typeof fetch = async (\n input: RequestInfo | URL,\n init?: RequestInit\n ): Promise<Response> => {\n const inputMethod =\n typeof Request !== 'undefined' && input instanceof Request ? input.method : undefined\n const method = ((init?.method ?? inputMethod ?? 'GET') as string).toUpperCase()\n const signal = init?.signal\n\n const isMethodRetryableByDefault = resolved.retryOnMethods.has(method)\n const maxAttempts = Math.max(1, resolved.maxAttempts)\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n let response: Response | null = null\n let error: unknown = null\n\n try {\n response = await underlying(input, init)\n } catch (err) {\n error = err\n }\n\n if (!error && response && response.ok) {\n return response\n }\n\n let shouldRetry = false\n let delayMs: number | null = null\n\n if (isNetworkError(error)) {\n shouldRetry = isMethodRetryableByDefault\n if (shouldRetry) {\n delayMs = computeBackoffWithJitterMs(\n attempt - 1,\n resolved.backoffBaseMs,\n resolved.maxDelayMs\n )\n }\n } else if (response) {\n const status = response.status\n if (method === 'POST') {\n if (status === 429) {\n const ra = response.headers.get('Retry-After')\n const parsed = parseRetryAfterMs(ra, resolved.maxDelayMs)\n if (parsed !== null) {\n shouldRetry = true\n delayMs = parsed\n }\n }\n } else if (isMethodRetryableByDefault && resolved.retryOnStatus.has(status)) {\n const ra = response.headers.get('Retry-After')\n delayMs =\n parseRetryAfterMs(ra, resolved.maxDelayMs) ??\n computeBackoffWithJitterMs(attempt - 1, resolved.backoffBaseMs, resolved.maxDelayMs)\n shouldRetry = true\n }\n }\n\n const attemptsRemain = attempt < maxAttempts\n if (!shouldRetry || !attemptsRemain) {\n if (error) throw error\n return response as Response\n }\n\n if (signal?.aborted) {\n if (error) throw error\n return response as Response\n }\n\n await abortableSleep(delayMs ?? 0, signal ?? undefined)\n }\n\n throw new Error('Retry loop exited unexpectedly')\n }\n\n return retryingFetch\n}\n\nexport type { RetryOptions as AmigoRetryOptions }\n", "import type { AmigoFetch } from '../core/openapi-client'\nimport { extractData } from '../core/utils'\nimport type { operations } from '../generated/api-types'\n\nexport class OrganizationResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n /**\n * Get organization details\n * @param headers - The headers\n * @returns The organization details\n */\n async getOrganization(headers?: operations['get-organization']['parameters']['header']) {\n return extractData(\n this.c.GET('/v1/{organization}/organization/', {\n params: { path: { organization: this.orgId } },\n headers,\n })\n )\n }\n}\n", "import { BadRequestError } from '../core/errors'\nimport type { AmigoFetch } from '../core/openapi-client'\nimport { extractData, parseNdjsonStream } from '../core/utils'\nimport type { components, operations } from '../generated/api-types'\n\ntype VoiceData = Blob | Uint8Array | ReadableStream<Uint8Array>\nexport type InteractionInput = string | VoiceData\n\ntype InteractQuery = operations['interact-with-conversation']['parameters']['query']\ntype InteractQuerySerialized = Omit<InteractQuery, 'request_audio_config'> & {\n request_audio_config?: string | null\n}\n\nexport class ConversationResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n async createConversation(\n body: components['schemas']['conversation__create_conversation__Request'],\n queryParams: operations['create-conversation']['parameters']['query'],\n headers?: operations['create-conversation']['parameters']['header'],\n options?: { signal?: AbortSignal }\n ) {\n const resp = await this.c.POST('/v1/{organization}/conversation/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n body,\n headers: {\n Accept: 'application/x-ndjson',\n ...(headers ?? {}),\n } as operations['create-conversation']['parameters']['header'],\n // Ensure we receive a stream for NDJSON\n parseAs: 'stream',\n ...(options?.signal && { signal: options.signal }),\n })\n\n // onResponse middleware throws for non-2xx; if we reach here, it's OK.\n return parseNdjsonStream<components['schemas']['conversation__create_conversation__Response']>(\n resp.response\n )\n }\n\n async interactWithConversation(\n conversationId: string,\n input: InteractionInput,\n queryParams: operations['interact-with-conversation']['parameters']['query'],\n headers?: operations['interact-with-conversation']['parameters']['header'],\n options?: { signal?: AbortSignal }\n ) {\n // Build body based on requested format, then perform a single POST\n let bodyToSend: FormData | VoiceData\n\n // Prepare headers; we'll merge user-supplied headers and adjust per format\n const mergedHeaders: Record<string, unknown> = {\n Accept: 'application/x-ndjson',\n ...(headers ?? {}),\n }\n\n if (queryParams.request_format === 'text') {\n if (typeof input !== 'string') {\n throw new BadRequestError(\"textMessage is required when request_format is 'text'\")\n }\n const form = new FormData()\n const blob = new Blob([input], { type: 'text/plain; charset=utf-8' })\n form.append('recorded_message', blob, 'message.txt')\n bodyToSend = form\n } else if (queryParams.request_format === 'voice') {\n if (typeof input === 'string') {\n throw new BadRequestError(\n \"voice input must be a byte source when request_format is 'voice'\"\n )\n }\n bodyToSend = input\n } else {\n throw new BadRequestError('Unsupported or missing request_format in params')\n }\n\n // For text/FormData, do NOT set Content-Type; fetch will set multipart boundary\n if (queryParams.request_format === 'text') {\n delete mergedHeaders['content-type']\n delete mergedHeaders['Content-Type']\n }\n\n // For voice bytes, allow caller to specify Content-Type; if absent and input is a Blob with a type, use it\n if (queryParams.request_format === 'voice') {\n const hasContentType =\n mergedHeaders['content-type'] !== undefined || mergedHeaders['Content-Type'] !== undefined\n if (!hasContentType && typeof Blob !== 'undefined' && input instanceof Blob && input.type) {\n mergedHeaders['content-type'] = input.type\n }\n }\n\n const headersToSend =\n mergedHeaders as unknown as operations['interact-with-conversation']['parameters']['header']\n\n // Normalize nested object params that must be sent as JSON strings\n const normalizedQuery: InteractQuerySerialized = {\n ...queryParams,\n request_audio_config:\n typeof queryParams.request_audio_config === 'object' &&\n queryParams.request_audio_config !== null\n ? JSON.stringify(queryParams.request_audio_config)\n : (queryParams.request_audio_config ?? undefined),\n }\n\n const resp = await this.c.POST('/v1/{organization}/conversation/{conversation_id}/interact', {\n params: {\n path: { organization: this.orgId, conversation_id: conversationId },\n query: normalizedQuery as unknown as InteractQuery,\n header: headersToSend,\n },\n body: bodyToSend,\n parseAs: 'stream',\n ...(options?.signal && { signal: options.signal }),\n })\n\n return parseNdjsonStream<\n components['schemas']['conversation__interact_with_conversation__Response']\n >(resp.response)\n }\n\n async getConversations(\n queryParams?: operations['get-conversations']['parameters']['query'],\n headers?: operations['get-conversations']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/conversation/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n headers,\n })\n )\n }\n\n async getConversationMessages(\n conversationId: string,\n queryParams?: operations['get-conversation-messages']['parameters']['query'],\n headers?: operations['get-conversation-messages']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/conversation/{conversation_id}/messages/', {\n params: {\n path: { organization: this.orgId, conversation_id: conversationId },\n query: queryParams,\n },\n headers,\n })\n )\n }\n\n async finishConversation(\n conversationId: string,\n headers?: operations['finish-conversation']['parameters']['header']\n ) {\n await this.c.POST('/v1/{organization}/conversation/{conversation_id}/finish/', {\n params: { path: { organization: this.orgId, conversation_id: conversationId } },\n headers,\n // No content is expected; parse as text to access raw Response\n parseAs: 'text',\n })\n return\n }\n\n async recommendResponsesForInteraction(\n conversationId: string,\n interactionId: string,\n headers?: operations['recommend-responses-for-interaction']['parameters']['header']\n ) {\n return extractData(\n this.c.GET(\n '/v1/{organization}/conversation/{conversation_id}/interaction/{interaction_id}/recommend_responses',\n {\n params: {\n path: {\n organization: this.orgId,\n conversation_id: conversationId,\n interaction_id: interactionId,\n },\n },\n headers,\n }\n )\n )\n }\n\n async getInteractionInsights(\n conversationId: string,\n interactionId: string,\n headers?: operations['get-interaction-insights']['parameters']['header']\n ) {\n return extractData(\n this.c.GET(\n '/v1/{organization}/conversation/{conversation_id}/interaction/{interaction_id}/insights',\n {\n params: {\n path: {\n organization: this.orgId,\n conversation_id: conversationId,\n interaction_id: interactionId,\n },\n },\n headers,\n }\n )\n )\n }\n\n // Note: the OpenAPI response schema isn't correct for this endpoint.\n // TODO -- fix response typing.\n async getMessageSource(\n conversationId: string,\n messageId: string,\n headers?: operations['retrieve-message-source']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/conversation/{conversation_id}/messages/{message_id}/source', {\n params: {\n path: {\n organization: this.orgId,\n conversation_id: conversationId,\n message_id: messageId,\n },\n },\n headers,\n })\n )\n }\n\n async generateConversationStarters(\n body: components['schemas']['conversation__generate_conversation_starter__Request'],\n headers?: operations['generate-conversation-starter']['parameters']['header']\n ) {\n return extractData(\n this.c.POST('/v1/{organization}/conversation/conversation_starter', {\n params: { path: { organization: this.orgId } },\n body,\n headers,\n })\n )\n }\n}\n", "import type { AmigoFetch } from '../core/openapi-client'\nimport { extractData } from '../core/utils'\nimport type { operations } from '../generated/api-types'\n\nexport class ServiceResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n /**\n * Get services\n * @param headers - The headers\n * @returns The services\n */\n async getServices(\n queryParams?: operations['get-services']['parameters']['query'],\n headers?: operations['get-services']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/service/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n headers,\n })\n )\n }\n}\n", "import type { AmigoFetch } from '../core/openapi-client'\nimport { extractData } from '../core/utils'\nimport type { components, operations } from '../generated/api-types'\n\nexport class UserResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n async getUsers(\n queryParams?: operations['get-users']['parameters']['query'],\n headers?: operations['get-users']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/user/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n headers,\n })\n )\n }\n\n async createUser(\n body: components['schemas']['user__create_invited_user__Request'],\n headers?: operations['create-invited-user']['parameters']['header']\n ) {\n return extractData(\n this.c.POST('/v1/{organization}/user/invite', {\n params: { path: { organization: this.orgId } },\n body,\n headers,\n })\n )\n }\n\n async deleteUser(userId: string, headers?: operations['delete-user']['parameters']['header']) {\n // DELETE endpoints returns no content (e.g., 204 No Content).\n // Our middleware already throws on non-2xx responses, so simply await the call.\n await this.c.DELETE('/v1/{organization}/user/{requested_user_id}', {\n params: { path: { organization: this.orgId, requested_user_id: userId } },\n headers,\n })\n return\n }\n\n async updateUser(\n userId: string,\n body: components['schemas']['user__update_user_info__Request'],\n headers?: operations['update-user-info']['parameters']['header']\n ) {\n // UPDATE endpoint returns no content (e.g., 204 No Content).\n // Our middleware already throws on non-2xx responses, so simply await the call.\n await this.c.POST('/v1/{organization}/user/{requested_user_id}/user', {\n params: { path: { organization: this.orgId, requested_user_id: userId } },\n body,\n headers,\n })\n return\n }\n}\n", "import { ConfigurationError } from './core/errors'\nimport { createAmigoFetch } from './core/openapi-client'\nimport { OrganizationResource } from './resources/organization'\nimport { ConversationResource } from './resources/conversation'\nimport { ServiceResource } from './resources/services'\nimport { UserResource } from './resources/user'\nimport type { RetryOptions } from './core/retry'\n\nexport interface AmigoSdkConfig {\n /** API key from Amigo dashboard */\n apiKey: string\n /** API-key ID from Amigo dashboard */\n apiKeyId: string\n /** User ID on whose behalf the request is made */\n userId: string\n /** The Organization ID */\n orgId: string\n /** Base URL of the Amigo API */\n baseUrl?: string\n /** Retry configuration for HTTP requests */\n retry?: RetryOptions\n}\n\nconst defaultBaseUrl = 'https://api.amigo.ai'\n\nexport class AmigoClient {\n readonly organizations: OrganizationResource\n readonly conversations: ConversationResource\n readonly services: ServiceResource\n readonly users: UserResource\n readonly config: AmigoSdkConfig\n\n constructor(config: AmigoSdkConfig) {\n this.config = validateConfig(config)\n\n const api = createAmigoFetch(this.config)\n this.organizations = new OrganizationResource(api, this.config.orgId)\n this.conversations = new ConversationResource(api, this.config.orgId)\n this.services = new ServiceResource(api, this.config.orgId)\n this.users = new UserResource(api, this.config.orgId)\n }\n}\n\nfunction validateConfig(config: AmigoSdkConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError('API key is required', 'apiKey')\n }\n if (!config.apiKeyId) {\n throw new ConfigurationError('API key ID is required', 'apiKeyId')\n }\n if (!config.userId) {\n throw new ConfigurationError('User ID is required', 'userId')\n }\n if (!config.orgId) {\n throw new ConfigurationError('Organization ID is required', 'orgId')\n }\n if (!config.baseUrl) {\n config.baseUrl = defaultBaseUrl\n }\n return config\n}\n\n// Export all errors as a namespace to avoid polluting the main import space\nexport * as errors from './core/errors'\n\n// Re-export useful types for consumers\nexport type { components, operations, paths } from './generated/api-types'\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Middleware } from 'openapi-fetch'\nimport { isNetworkError, parseResponseBody } from './utils'\n\n/**\n * Base error class for all Amigo SDK errors.\n * Provides common functionality and error identification.\n */\nexport class AmigoError extends Error {\n /**\n * Unique error code for programmatic error handling\n */\n readonly errorCode?: string\n\n /**\n * HTTP status code if applicable\n */\n readonly statusCode?: number\n\n /**\n * Additional context data\n */\n context?: Record<string, unknown>\n\n constructor(message: string, options?: Record<string, unknown>) {\n super(message)\n this.name = this.constructor.name\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype)\n\n // Capture stack trace\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n\n // copies status, code, etc.\n Object.assign(this, options)\n }\n\n /**\n * Returns a JSON-serializable representation of the error\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.errorCode,\n statusCode: this.statusCode,\n context: this.context,\n stack: this.stack,\n }\n }\n}\n\n/* 4xx client errors */\nexport class BadRequestError extends AmigoError {}\nexport class AuthenticationError extends AmigoError {}\nexport class PermissionError extends AmigoError {}\nexport class NotFoundError extends AmigoError {}\nexport class ConflictError extends AmigoError {}\nexport class RateLimitError extends AmigoError {}\n\n/* 5xx server errors */\nexport class ServerError extends AmigoError {}\nexport class ServiceUnavailableError extends ServerError {}\n\n/* Internal SDK errors */\nexport class ConfigurationError extends AmigoError {\n constructor(\n message: string,\n public field?: string\n ) {\n super(message)\n this.context = { field }\n }\n}\n\n/* Validation errors */\nexport class ValidationError extends BadRequestError {\n constructor(\n msg: string,\n public fieldErrors?: Record<string, string>\n ) {\n super(msg)\n }\n}\n\n/* Network-related errors */\nexport class NetworkError extends AmigoError {\n constructor(\n message: string,\n public readonly originalError?: Error,\n public readonly request?: {\n url?: string\n method?: string\n }\n ) {\n super(message, { cause: originalError })\n this.context = { request }\n }\n}\n\n/* Parsing errors */\nexport class ParseError extends AmigoError {\n constructor(\n message: string,\n public readonly parseType: 'json' | 'response' | 'other',\n public readonly originalError?: Error\n ) {\n super(message, { cause: originalError })\n this.context = { parseType }\n }\n}\n\n/* Type guard functions */\nexport function isAmigoError(error: unknown): error is AmigoError {\n return error instanceof AmigoError\n}\n\n/* Error factory to create appropriate error instances from API responses */\nexport function createApiError(response: Response, body?: unknown): AmigoError {\n const map: Record<number, typeof AmigoError> = {\n 400: BadRequestError,\n 401: AuthenticationError,\n 403: PermissionError,\n 404: NotFoundError,\n 409: ConflictError,\n 422: ValidationError,\n 429: RateLimitError,\n 500: ServerError,\n 503: ServiceUnavailableError,\n }\n\n const errorMessageKeys = ['message', 'error', 'detail']\n\n const ErrorClass = map[response.status] ?? AmigoError\n let message = `HTTP ${response.status} ${response.statusText}`\n\n if (body && typeof body === 'object') {\n for (const key of errorMessageKeys) {\n if (key in body) {\n message = String((body as Record<string, unknown>)[key])\n break\n }\n }\n }\n\n const options = {\n status: response.status,\n code:\n body && typeof body === 'object' && 'code' in body\n ? (body as Record<string, unknown>).code\n : undefined,\n response: body,\n }\n\n const error = new ErrorClass(message, options)\n\n return error\n}\n\nexport function createErrorMiddleware(): Middleware {\n return {\n onResponse: async ({ response }) => {\n if (!response.ok) {\n const body = await parseResponseBody(response)\n throw createApiError(response, body)\n }\n },\n onError: async ({ error, request }) => {\n // Handle network-related errors consistently\n if (isNetworkError(error)) {\n throw new NetworkError(\n `Network error: ${error instanceof Error ? error.message : String(error)}`,\n error instanceof Error ? error : new Error(String(error)),\n {\n url: request?.url,\n method: request?.method,\n }\n )\n }\n throw error\n },\n }\n}\n", "import { ParseError } from './errors'\n\n// Type helper to extract the data type from openapi-fetch responses\nexport type ExtractDataType<T> = T extends { data?: infer D } ? NonNullable<D> : never\n\n// Helper function to extract data from openapi-fetch responses\n// Since our middleware throws on errors, successful responses will have data\nexport async function extractData<T extends { data?: unknown }>(\n responsePromise: Promise<T>\n): Promise<ExtractDataType<T>> {\n const result = await responsePromise\n const data = (result as { data?: ExtractDataType<T> }).data\n\n if (data === undefined || data === null) {\n // Invariant: our error middleware throws for non-2xx responses.\n // If we reach here without data, treat as a parse/protocol error.\n throw new ParseError('Expected response data to be present for successful request', 'response')\n }\n\n return data\n}\n\n/**\n * Parse an NDJSON HTTP response body into an async generator of parsed JSON objects.\n * The generator yields one parsed object per line. Empty lines are skipped.\n */\nexport async function* parseNdjsonStream<T = unknown>(response: Response): AsyncGenerator<T> {\n const body = response.body\n if (!body) return\n\n const reader = body.getReader()\n const decoder = new TextDecoder()\n let bufferedText = ''\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n bufferedText += decoder.decode(value, { stream: true })\n\n let newlineIndex: number\n // Process all complete lines in the buffer\n while ((newlineIndex = bufferedText.indexOf('\\n')) !== -1) {\n const line = bufferedText.slice(0, newlineIndex).trim()\n bufferedText = bufferedText.slice(newlineIndex + 1)\n if (!line) continue\n try {\n yield JSON.parse(line) as T\n } catch (err) {\n throw new ParseError('Failed to parse NDJSON line', 'json', err as Error)\n }\n }\n }\n\n // Flush any trailing line without a newline\n const trailing = bufferedText.trim()\n if (trailing) {\n try {\n yield JSON.parse(trailing) as T\n } catch (err) {\n throw new ParseError('Failed to parse trailing NDJSON line', 'json', err as Error)\n }\n }\n } finally {\n reader.releaseLock()\n }\n}\n\n// Utility function to safely parse response bodies without throwing errors\nexport async function parseResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n if (!text) return undefined\n try {\n return JSON.parse(text)\n } catch {\n return text // Return as string if not valid JSON\n }\n } catch {\n return undefined // Return undefined if any error occurs\n }\n}\n\n// Helper to detect network-related errors\nexport function isNetworkError(error: unknown): boolean {\n if (!(error instanceof Error)) return false\n\n return (\n error instanceof TypeError ||\n error.message.includes('fetch') ||\n error.message.includes('Failed to fetch') ||\n error.message.includes('Network request failed') ||\n error.message.includes('ECONNREFUSED') ||\n error.message.includes('ETIMEDOUT') ||\n error.message.includes('ENOTFOUND') ||\n error.message.includes('network')\n )\n}\n", "import createClient, { type Client } from 'openapi-fetch'\nimport { createErrorMiddleware } from './errors'\nimport { createAuthMiddleware } from './auth'\nimport type { paths } from '../generated/api-types'\nimport type { AmigoSdkConfig } from '..'\nimport { createRetryingFetch } from './retry'\n\nexport type AmigoFetch = Client<paths>\n\nexport function createAmigoFetch(config: AmigoSdkConfig, mockFetch?: typeof fetch): AmigoFetch {\n const wrappedFetch = createRetryingFetch(\n config.retry,\n mockFetch ?? (globalThis.fetch as typeof fetch)\n )\n\n const client = createClient<paths>({\n baseUrl: config.baseUrl,\n fetch: wrappedFetch,\n })\n\n // Apply error handling middleware first (to catch all errors)\n client.use(createErrorMiddleware())\n\n // Apply auth middleware after error handling (so auth errors are properly handled)\n client.use(createAuthMiddleware(config))\n\n return client\n}\n", "import type { Middleware } from 'openapi-fetch'\nimport type { components } from '../generated/api-types'\nimport type { AmigoSdkConfig } from '..'\nimport { AmigoError, AuthenticationError, NetworkError, ParseError, createApiError } from './errors'\nimport { isNetworkError, parseResponseBody } from './utils'\n\ntype SignInWithApiKeyResponse = components['schemas']['user__sign_in_with_api_key__Response']\n\n/** Helper function to trade API key for a bearer token */\nexport async function getBearerToken(config: AmigoSdkConfig): Promise<SignInWithApiKeyResponse> {\n const url = `${config.baseUrl}/v1/${config.orgId}/user/signin_with_api_key`\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'x-api-key': config.apiKey,\n 'x-api-key-id': config.apiKeyId,\n 'x-user-id': config.userId,\n },\n })\n\n if (!response.ok) {\n const body = await parseResponseBody(response)\n const apiError = createApiError(response, body)\n\n // Enhance authentication errors with additional context\n if (response.status === 401) {\n throw new AuthenticationError(`Authentication failed: ${apiError.message}`, {\n ...apiError,\n context: { ...apiError.context, endpoint: 'signin_with_api_key' },\n })\n }\n throw apiError\n }\n\n return (await response.json()) as SignInWithApiKeyResponse\n } catch (err) {\n // Re-throw our custom errors as-is\n if (err instanceof AmigoError) {\n throw err\n }\n\n // Handle network errors\n if (isNetworkError(err)) {\n throw new NetworkError('Failed to connect to authentication endpoint', err as Error, {\n url,\n method: 'POST',\n })\n }\n\n // Handle JSON parsing errors\n throw new ParseError(\n 'Failed to parse authentication response',\n 'json',\n err instanceof Error ? err : new Error(String(err))\n )\n }\n}\n\nexport function createAuthMiddleware(config: AmigoSdkConfig): Middleware {\n let token: SignInWithApiKeyResponse | null = null\n let refreshPromise: Promise<SignInWithApiKeyResponse> | null = null\n\n const shouldRefreshToken = (tokenData: SignInWithApiKeyResponse): boolean => {\n if (!tokenData.expires_at) return false\n\n const expiryTime = new Date(tokenData.expires_at).getTime()\n const currentTime = Date.now()\n const timeUntilExpiry = expiryTime - currentTime\n const refreshThreshold = 5 * 60 * 1000 // 5 minutes in milliseconds\n\n return timeUntilExpiry <= refreshThreshold\n }\n\n const ensureValidToken = async (): Promise<SignInWithApiKeyResponse> => {\n if (!token || shouldRefreshToken(token)) {\n if (!refreshPromise) {\n refreshPromise = getBearerToken(config)\n try {\n token = await refreshPromise\n } finally {\n refreshPromise = null\n }\n } else {\n token = await refreshPromise\n }\n }\n return token\n }\n\n return {\n onRequest: async ({ request }) => {\n try {\n const validToken = await ensureValidToken()\n if (validToken?.id_token) {\n request.headers.set('Authorization', `Bearer ${validToken.id_token}`)\n }\n } catch (error) {\n // Clear token and re-throw - getBearerToken already provides proper error types\n token = null\n throw error\n }\n return request\n },\n\n onResponse: async ({ response }) => {\n // Handle 401 responses by clearing token to force refresh on next request\n if (response.status === 401) {\n token = null\n }\n },\n\n onError: async ({ error }) => {\n // Clear token on any error to force refresh\n token = null\n throw error\n },\n }\n}\n", "export type RetryOptions = {\n /** Maximum number of attempts to make (default: 3) */\n maxAttempts?: number\n /** Base delay between attempts (default: 250ms) */\n backoffBaseMs?: number\n /** Maximum delay between attempts (default: 30s) */\n maxDelayMs?: number\n /** Status codes to retry on (default: 408, 429, 500, 502, 503, 504) */\n retryOnStatus?: Set<number>\n /** Methods to retry on (default: GET) */\n retryOnMethods?: Set<string>\n}\n\nconst DEFAULT_RETRYABLE_STATUS = new Set([408, 429, 500, 502, 503, 504])\nconst DEFAULT_RETRYABLE_METHODS = new Set(['GET']) as Set<string>\n\nexport function resolveRetryOptions(options?: RetryOptions): Required<RetryOptions> {\n return {\n maxAttempts: options?.maxAttempts ?? 3,\n backoffBaseMs: options?.backoffBaseMs ?? 250,\n maxDelayMs: options?.maxDelayMs ?? 30_000,\n retryOnStatus: new Set(options?.retryOnStatus ?? DEFAULT_RETRYABLE_STATUS),\n retryOnMethods: new Set(options?.retryOnMethods ?? DEFAULT_RETRYABLE_METHODS),\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction parseRetryAfterMs(headerValue: string | null, maxDelayMs: number): number | null {\n if (!headerValue) return null\n const seconds = Number(headerValue)\n if (Number.isFinite(seconds)) {\n return clamp(seconds * 1000, 0, maxDelayMs)\n }\n const date = new Date(headerValue)\n const ms = date.getTime() - Date.now()\n if (Number.isFinite(ms)) {\n return clamp(ms, 0, maxDelayMs)\n }\n return null\n}\n\nfunction computeBackoffWithJitterMs(\n attemptIndexZeroBased: number,\n baseMs: number,\n capMs: number\n): number {\n const windowMs = Math.min(capMs, baseMs * Math.pow(2, attemptIndexZeroBased))\n return Math.random() * windowMs\n}\n\nfunction isAbortError(err: unknown): boolean {\n return typeof err === 'object' && err !== null && 'name' in err && err['name'] === 'AbortError'\n}\n\nfunction isNetworkError(err: unknown): boolean {\n // Undici & browsers use TypeError for network failures\n return err instanceof TypeError && !isAbortError(err)\n}\n\nasync function abortableSleep(ms: number, signal?: AbortSignal): Promise<void> {\n if (ms <= 0) {\n signal?.throwIfAborted?.()\n return\n }\n await new Promise<void>((resolve, reject) => {\n const rejectWith =\n signal?.reason instanceof Error ? signal.reason : (signal?.reason ?? new Error('AbortError'))\n\n if (signal?.aborted) {\n reject(rejectWith)\n return\n }\n const t = setTimeout(() => {\n off()\n resolve()\n }, ms)\n const onAbort = () => {\n off()\n clearTimeout(t)\n reject(rejectWith)\n }\n const off = () => signal?.removeEventListener('abort', onAbort)\n signal?.addEventListener('abort', onAbort, { once: true })\n })\n}\n\nexport function createRetryingFetch(\n retryOptions?: RetryOptions,\n baseFetch?: typeof fetch\n): typeof fetch {\n const resolved = resolveRetryOptions(retryOptions)\n const underlying: typeof fetch = baseFetch ?? (globalThis.fetch as typeof fetch)\n\n const retryingFetch: typeof fetch = async (\n input: RequestInfo | URL,\n init?: RequestInit\n ): Promise<Response> => {\n const inputMethod =\n typeof Request !== 'undefined' && input instanceof Request ? input.method : undefined\n const method = ((init?.method ?? inputMethod ?? 'GET') as string).toUpperCase()\n const signal = init?.signal\n\n const isMethodRetryableByDefault = resolved.retryOnMethods.has(method)\n const maxAttempts = Math.max(1, resolved.maxAttempts)\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n let response: Response | null = null\n let error: unknown = null\n\n try {\n response = await underlying(input, init)\n } catch (err) {\n error = err\n }\n\n if (!error && response && response.ok) {\n return response\n }\n\n let shouldRetry = false\n let delayMs: number | null = null\n\n if (isNetworkError(error)) {\n shouldRetry = isMethodRetryableByDefault\n if (shouldRetry) {\n delayMs = computeBackoffWithJitterMs(\n attempt - 1,\n resolved.backoffBaseMs,\n resolved.maxDelayMs\n )\n }\n } else if (response) {\n const status = response.status\n if (method === 'POST') {\n if (status === 429) {\n const ra = response.headers.get('Retry-After')\n const parsed = parseRetryAfterMs(ra, resolved.maxDelayMs)\n if (parsed !== null) {\n shouldRetry = true\n delayMs = parsed\n }\n }\n } else if (isMethodRetryableByDefault && resolved.retryOnStatus.has(status)) {\n const ra = response.headers.get('Retry-After')\n delayMs =\n parseRetryAfterMs(ra, resolved.maxDelayMs) ??\n computeBackoffWithJitterMs(attempt - 1, resolved.backoffBaseMs, resolved.maxDelayMs)\n shouldRetry = true\n }\n }\n\n const attemptsRemain = attempt < maxAttempts\n if (!shouldRetry || !attemptsRemain) {\n if (error) throw error\n return response as Response\n }\n\n if (signal?.aborted) {\n if (error) throw error\n return response as Response\n }\n\n await abortableSleep(delayMs ?? 0, signal ?? undefined)\n }\n\n throw new Error('Retry loop exited unexpectedly')\n }\n\n return retryingFetch\n}\n\nexport type { RetryOptions as AmigoRetryOptions }\n", "import type { AmigoFetch } from '../core/openapi-client'\nimport { extractData } from '../core/utils'\nimport type { operations } from '../generated/api-types'\n\nexport class OrganizationResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n /**\n * Get organization details\n * @param headers - The headers\n * @returns The organization details\n */\n async getOrganization(headers?: operations['get-organization']['parameters']['header']) {\n return extractData(\n this.c.GET('/v1/{organization}/organization/', {\n params: { path: { organization: this.orgId } },\n headers,\n })\n )\n }\n}\n", "import { BadRequestError } from '../core/errors'\nimport type { AmigoFetch } from '../core/openapi-client'\nimport { extractData, parseNdjsonStream } from '../core/utils'\nimport type { components, operations } from '../generated/api-types'\n\ntype VoiceData = Blob | Uint8Array | ReadableStream<Uint8Array>\nexport type InteractionInput = string | VoiceData\n\ntype InteractQuery = operations['interact-with-conversation']['parameters']['query']\ntype InteractQuerySerialized = Omit<InteractQuery, 'request_audio_config'> & {\n request_audio_config?: string | null\n}\n\nexport class ConversationResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n async createConversation(\n body: components['schemas']['conversation__create_conversation__Request'],\n queryParams: operations['create-conversation']['parameters']['query'],\n headers?: operations['create-conversation']['parameters']['header'],\n options?: { signal?: AbortSignal }\n ) {\n const resp = await this.c.POST('/v1/{organization}/conversation/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n body,\n headers: {\n Accept: 'application/x-ndjson',\n ...(headers ?? {}),\n } as operations['create-conversation']['parameters']['header'],\n // Ensure we receive a stream for NDJSON\n parseAs: 'stream',\n ...(options?.signal && { signal: options.signal }),\n })\n\n // onResponse middleware throws for non-2xx; if we reach here, it's OK.\n return parseNdjsonStream<components['schemas']['conversation__create_conversation__Response']>(\n resp.response\n )\n }\n\n async interactWithConversation(\n conversationId: string,\n input: InteractionInput,\n queryParams: operations['interact-with-conversation']['parameters']['query'],\n headers?: operations['interact-with-conversation']['parameters']['header'],\n options?: { signal?: AbortSignal }\n ) {\n // Build body based on requested format, then perform a single POST\n let bodyToSend: FormData | VoiceData\n\n // Prepare headers; we'll merge user-supplied headers and adjust per format\n const mergedHeaders: Record<string, unknown> = {\n Accept: 'application/x-ndjson',\n ...(headers ?? {}),\n }\n\n if (queryParams.request_format === 'text') {\n if (typeof input !== 'string') {\n throw new BadRequestError(\"textMessage is required when request_format is 'text'\")\n }\n const form = new FormData()\n const blob = new Blob([input], { type: 'text/plain; charset=utf-8' })\n form.append('recorded_message', blob, 'message.txt')\n bodyToSend = form\n } else if (queryParams.request_format === 'voice') {\n if (typeof input === 'string') {\n throw new BadRequestError(\n \"voice input must be a byte source when request_format is 'voice'\"\n )\n }\n bodyToSend = input\n } else {\n throw new BadRequestError('Unsupported or missing request_format in params')\n }\n\n // For text/FormData, do NOT set Content-Type; fetch will set multipart boundary\n if (queryParams.request_format === 'text') {\n delete mergedHeaders['content-type']\n delete mergedHeaders['Content-Type']\n }\n\n // For voice bytes, allow caller to specify Content-Type; if absent and input is a Blob with a type, use it\n if (queryParams.request_format === 'voice') {\n const hasContentType =\n mergedHeaders['content-type'] !== undefined || mergedHeaders['Content-Type'] !== undefined\n if (!hasContentType && typeof Blob !== 'undefined' && input instanceof Blob && input.type) {\n mergedHeaders['content-type'] = input.type\n }\n }\n\n const headersToSend =\n mergedHeaders as unknown as operations['interact-with-conversation']['parameters']['header']\n\n // Normalize nested object params that must be sent as JSON strings\n const normalizedQuery: InteractQuerySerialized = {\n ...queryParams,\n request_audio_config:\n typeof queryParams.request_audio_config === 'object' &&\n queryParams.request_audio_config !== null\n ? JSON.stringify(queryParams.request_audio_config)\n : (queryParams.request_audio_config ?? undefined),\n }\n\n const resp = await this.c.POST('/v1/{organization}/conversation/{conversation_id}/interact', {\n params: {\n path: { organization: this.orgId, conversation_id: conversationId },\n query: normalizedQuery as unknown as InteractQuery,\n header: headersToSend,\n },\n body: bodyToSend,\n parseAs: 'stream',\n ...(options?.signal && { signal: options.signal }),\n })\n\n return parseNdjsonStream<\n components['schemas']['conversation__interact_with_conversation__Response']\n >(resp.response)\n }\n\n async getConversations(\n queryParams?: operations['get-conversations']['parameters']['query'],\n headers?: operations['get-conversations']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/conversation/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n headers,\n })\n )\n }\n\n async getConversationMessages(\n conversationId: string,\n queryParams?: operations['get-conversation-messages']['parameters']['query'],\n headers?: operations['get-conversation-messages']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/conversation/{conversation_id}/messages/', {\n params: {\n path: { organization: this.orgId, conversation_id: conversationId },\n query: queryParams,\n },\n headers,\n })\n )\n }\n\n async finishConversation(\n conversationId: string,\n headers?: operations['finish-conversation']['parameters']['header']\n ) {\n await this.c.POST('/v1/{organization}/conversation/{conversation_id}/finish/', {\n params: { path: { organization: this.orgId, conversation_id: conversationId } },\n headers,\n // No content is expected; parse as text to access raw Response\n parseAs: 'text',\n })\n return\n }\n\n async recommendResponsesForInteraction(\n conversationId: string,\n interactionId: string,\n headers?: operations['recommend-responses-for-interaction']['parameters']['header']\n ) {\n return extractData(\n this.c.GET(\n '/v1/{organization}/conversation/{conversation_id}/interaction/{interaction_id}/recommend_responses',\n {\n params: {\n path: {\n organization: this.orgId,\n conversation_id: conversationId,\n interaction_id: interactionId,\n },\n },\n headers,\n }\n )\n )\n }\n\n async getInteractionInsights(\n conversationId: string,\n interactionId: string,\n headers?: operations['get-interaction-insights']['parameters']['header']\n ) {\n return extractData(\n this.c.GET(\n '/v1/{organization}/conversation/{conversation_id}/interaction/{interaction_id}/insights',\n {\n params: {\n path: {\n organization: this.orgId,\n conversation_id: conversationId,\n interaction_id: interactionId,\n },\n },\n headers,\n }\n )\n )\n }\n\n // Note: the OpenAPI response schema isn't correct for this endpoint.\n // TODO -- fix response typing.\n async getMessageSource(\n conversationId: string,\n messageId: string,\n headers?: operations['retrieve-message-source']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/conversation/{conversation_id}/messages/{message_id}/source', {\n params: {\n path: {\n organization: this.orgId,\n conversation_id: conversationId,\n message_id: messageId,\n },\n },\n headers,\n })\n )\n }\n\n async generateConversationStarters(\n body: components['schemas']['conversation__generate_conversation_starter__Request'],\n headers?: operations['generate-conversation-starter']['parameters']['header']\n ) {\n return extractData(\n this.c.POST('/v1/{organization}/conversation/conversation_starter', {\n params: { path: { organization: this.orgId } },\n body,\n headers,\n })\n )\n }\n}\n", "import type { AmigoFetch } from '../core/openapi-client'\nimport { extractData } from '../core/utils'\nimport type { operations } from '../generated/api-types'\n\nexport class ServiceResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n /**\n * Get services\n * @param headers - The headers\n * @returns The services\n */\n async getServices(\n queryParams?: operations['get-services']['parameters']['query'],\n headers?: operations['get-services']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/service/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n headers,\n })\n )\n }\n}\n", "import type { AmigoFetch } from '../core/openapi-client'\nimport { extractData } from '../core/utils'\nimport type { components, operations } from '../generated/api-types'\n\nexport class UserResource {\n constructor(\n private c: AmigoFetch,\n private orgId: string\n ) {}\n\n async getUsers(\n queryParams?: operations['get-users']['parameters']['query'],\n headers?: operations['get-users']['parameters']['header']\n ) {\n return extractData(\n this.c.GET('/v1/{organization}/user/', {\n params: { path: { organization: this.orgId }, query: queryParams },\n headers,\n })\n )\n }\n\n async createUser(\n body: components['schemas']['user__create_invited_user__Request'],\n headers?: operations['create-invited-user']['parameters']['header']\n ) {\n return extractData(\n this.c.POST('/v1/{organization}/user/', {\n params: { path: { organization: this.orgId } },\n body,\n headers,\n })\n )\n }\n\n async deleteUser(userId: string, headers?: operations['delete-user']['parameters']['header']) {\n // DELETE endpoints returns no content (e.g., 204 No Content).\n // Our middleware already throws on non-2xx responses, so simply await the call.\n await this.c.DELETE('/v1/{organization}/user/{requested_user_id}', {\n params: { path: { organization: this.orgId, requested_user_id: userId } },\n headers,\n })\n return\n }\n\n async updateUser(\n userId: string,\n body: components['schemas']['user__update_user_info__Request'],\n headers?: operations['update-user-info']['parameters']['header']\n ) {\n // UPDATE endpoint returns no content (e.g., 204 No Content).\n // Our middleware already throws on non-2xx responses, so simply await the call.\n await this.c.POST('/v1/{organization}/user/{requested_user_id}/user', {\n params: { path: { organization: this.orgId, requested_user_id: userId } },\n body,\n headers,\n })\n return\n }\n}\n", "import { ConfigurationError } from './core/errors'\nimport { createAmigoFetch } from './core/openapi-client'\nimport { OrganizationResource } from './resources/organization'\nimport { ConversationResource } from './resources/conversation'\nimport { ServiceResource } from './resources/services'\nimport { UserResource } from './resources/user'\nimport type { RetryOptions } from './core/retry'\n\nexport interface AmigoSdkConfig {\n /** API key from Amigo dashboard */\n apiKey: string\n /** API-key ID from Amigo dashboard */\n apiKeyId: string\n /** User ID on whose behalf the request is made */\n userId: string\n /** The Organization ID */\n orgId: string\n /** Base URL of the Amigo API */\n baseUrl?: string\n /** Retry configuration for HTTP requests */\n retry?: RetryOptions\n}\n\nconst defaultBaseUrl = 'https://api.amigo.ai'\n\nexport class AmigoClient {\n readonly organizations: OrganizationResource\n readonly conversations: ConversationResource\n readonly services: ServiceResource\n readonly users: UserResource\n readonly config: AmigoSdkConfig\n\n constructor(config: AmigoSdkConfig) {\n this.config = validateConfig(config)\n\n const api = createAmigoFetch(this.config)\n this.organizations = new OrganizationResource(api, this.config.orgId)\n this.conversations = new ConversationResource(api, this.config.orgId)\n this.services = new ServiceResource(api, this.config.orgId)\n this.users = new UserResource(api, this.config.orgId)\n }\n}\n\nfunction validateConfig(config: AmigoSdkConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError('API key is required', 'apiKey')\n }\n if (!config.apiKeyId) {\n throw new ConfigurationError('API key ID is required', 'apiKeyId')\n }\n if (!config.userId) {\n throw new ConfigurationError('User ID is required', 'userId')\n }\n if (!config.orgId) {\n throw new ConfigurationError('Organization ID is required', 'orgId')\n }\n if (!config.baseUrl) {\n config.baseUrl = defaultBaseUrl\n }\n return config\n}\n\n// Export all errors as a namespace to avoid polluting the main import space\nexport * as errors from './core/errors'\n\n// Re-export useful types for consumers\nexport type { components, operations, paths } from './generated/api-types'\n"],
5
+ "mappings": "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",
6
6
  "names": ["isNetworkError"]
7
7
  }
@@ -599,7 +599,8 @@ export interface paths {
599
599
  cookie?: never;
600
600
  };
601
601
  /**
602
- * Recommend responses for interaction
602
+ * Recommend responses for interaction (Deprecated)
603
+ * @deprecated
603
604
  * @description Generate a recommended response for the user to send based on the existing chat history. This should be called when the most recent interaction
604
605
  * had concluded for a while but the user still hasn't responded.
605
606
  *
@@ -607,9 +608,18 @@ export interface paths {
607
608
  * This endpoint requires the following permissions:
608
609
  * * `Conversation:GetRecommendedResponses` on this conversation.
609
610
  */
610
- get: operations["recommend-responses-for-interaction"];
611
+ get: operations["recommend_responses_for_interaction_v1__organization__conversation__conversation_id__interaction__interaction_id__recommend_responses_get"];
611
612
  put?: never;
612
- post?: never;
613
+ /**
614
+ * Recommend responses for interaction
615
+ * @description Generate a recommended response for the user to send based on the existing chat history. This should be called when the most recent interaction
616
+ * had concluded for a while but the user still hasn't responded.
617
+ *
618
+ * #### Permissions:
619
+ * This endpoint requires the following permissions:
620
+ * * `Conversation:GetRecommendedResponses` on this conversation.
621
+ */
622
+ post: operations["recommend-responses-for-interaction"];
613
623
  delete?: never;
614
624
  options?: never;
615
625
  head?: never;
@@ -2329,7 +2339,7 @@ export interface components {
2329
2339
  /** Boundary Constraints */
2330
2340
  boundary_constraints: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"][];
2331
2341
  /** Exit Conditions */
2332
- exit_conditions: components["schemas"]["organization__create_service_hierarchical_state_machine_version__Request__ActionState__ExitCondition"][];
2342
+ exit_conditions: components["schemas"]["organization__create_service_hierarchical_state_machine_version__Request__DecisionState__ExitCondition"][];
2333
2343
  /** Action Tool Call Specs */
2334
2344
  action_tool_call_specs: components["schemas"]["ToolCallSpec-Input"][];
2335
2345
  /** Exit Condition Tool Call Specs */
@@ -2774,7 +2784,7 @@ export interface components {
2774
2784
  type: "decision";
2775
2785
  name: components["schemas"]["StateOrRefName"];
2776
2786
  /** Exit Conditions */
2777
- exit_conditions: components["schemas"]["organization__create_service_hierarchical_state_machine_version__Request__ActionState__ExitCondition"][];
2787
+ exit_conditions: components["schemas"]["organization__create_service_hierarchical_state_machine_version__Request__DecisionState__ExitCondition"][];
2778
2788
  /** Decision Guidelines */
2779
2789
  decision_guidelines: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"][];
2780
2790
  objective: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"];
@@ -3360,9 +3370,9 @@ export interface components {
3360
3370
  type: "jumpback";
3361
3371
  };
3362
3372
  /** @enum {string} */
3363
- LLMLoadBalancingSetType: "o4-mini-2025-04-16" | "gpt-5-2025-08-07" | "gpt-5-mini-2025-08-07" | "gpt-5-nano-2025-08-07" | "claude-sonnet-4-20250514";
3373
+ LLMLoadBalancingSetType: "o4-mini-2025-04-16" | "gpt-5-2025-08-07" | "gpt-5-mini-2025-08-07" | "gpt-5-nano-2025-08-07" | "claude-sonnet-4-5-20250929";
3364
3374
  /** @enum {string} */
3365
- LLMType: "openai_o4-mini-2025-04-16" | "openai_gpt-5-2025-08-07" | "openai_gpt-5-mini-2025-08-07" | "openai_gpt-5-nano-2025-08-07" | "azure_o4-mini-2025-04-16" | "azure_gpt-4.1-2025-04-14" | "azure_gpt-4.1-mini-2025-04-14" | "azure_gpt-5-2025-08-07" | "azure_gpt-5-mini-2025-08-07" | "azure_gpt-5-nano-2025-08-07" | "google_claude-sonnet-4@20250514" | "aws_claude-sonnet-4-20250514" | "anthropic_claude-sonnet-4-20250514" | "google_gemini-2.5-pro" | "google_gemini-2.5-flash";
3375
+ LLMType: "openai_o4-mini-2025-04-16" | "openai_gpt-5-2025-08-07" | "openai_gpt-5-mini-2025-08-07" | "openai_gpt-5-nano-2025-08-07" | "azure_o4-mini-2025-04-16" | "azure_gpt-4.1-2025-04-14" | "azure_gpt-4.1-mini-2025-04-14" | "azure_gpt-5-2025-08-07" | "azure_gpt-5-mini-2025-08-07" | "azure_gpt-5-nano-2025-08-07" | "google_claude-sonnet-4-5@20250929" | "aws_claude-sonnet-4-5-20250929" | "anthropic_claude-sonnet-4-5-20250929" | "google_gemini-2.5-pro" | "google_gemini-2.5-flash";
3366
3376
  /** MP3UserMessageAudioConfig */
3367
3377
  MP3UserMessageAudioConfig: {
3368
3378
  /**
@@ -3516,7 +3526,7 @@ export interface components {
3516
3526
  * Tags
3517
3527
  * @description The tags of the metric.
3518
3528
  */
3519
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
3529
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
3520
3530
  /** @description The user who created the metric. */
3521
3531
  creator: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__UserInfo"];
3522
3532
  /** @description The user who last updated the metric. */
@@ -3621,7 +3631,7 @@ export interface components {
3621
3631
  * Tags
3622
3632
  * @description The tags of the metric.
3623
3633
  */
3624
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
3634
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
3625
3635
  /** @description The user who created the metric. */
3626
3636
  creator: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__UserInfo"];
3627
3637
  /** @description The user who last updated the metric. */
@@ -4485,7 +4495,7 @@ export interface components {
4485
4495
  * Tags
4486
4496
  * @description The tags of the service.
4487
4497
  */
4488
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
4498
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
4489
4499
  };
4490
4500
  /** SimulationConversationInvocationSource */
4491
4501
  SimulationConversationInvocationSource: {
@@ -4695,7 +4705,7 @@ export interface components {
4695
4705
  * Tags
4696
4706
  * @description The tags of the simulation persona.
4697
4707
  */
4698
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
4708
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
4699
4709
  creator: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__UserInfo"];
4700
4710
  updated_by: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__UserInfo"];
4701
4711
  };
@@ -4767,7 +4777,7 @@ export interface components {
4767
4777
  * Tags
4768
4778
  * @description The tags of the simulation persona.
4769
4779
  */
4770
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
4780
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
4771
4781
  creator: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__UserInfo"];
4772
4782
  updated_by: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__UserInfo"];
4773
4783
  };
@@ -4822,7 +4832,7 @@ export interface components {
4822
4832
  * Tags
4823
4833
  * @description The tags of the simulation unit test set.
4824
4834
  */
4825
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
4835
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
4826
4836
  creator: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test_set__SimulationUnitTestSet__UserInfo"];
4827
4837
  updated_by: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test_set__SimulationUnitTestSet__UserInfo"];
4828
4838
  };
@@ -4874,7 +4884,7 @@ export interface components {
4874
4884
  * Tags
4875
4885
  * @description The tags of the simulation unit test set.
4876
4886
  */
4877
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
4887
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
4878
4888
  creator: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test_set__SimulationUnitTestSet__UserInfo"];
4879
4889
  updated_by: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test_set__SimulationUnitTestSet__UserInfo"];
4880
4890
  };
@@ -5390,7 +5400,7 @@ export interface components {
5390
5400
  * Tags
5391
5401
  * @description The tags of the simulation persona.
5392
5402
  */
5393
- tags: components["schemas"]["amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag"][];
5403
+ tags: components["schemas"]["amigo_lib__mongo__collections__metric__Metric__Tag"][];
5394
5404
  };
5395
5405
  /** ToolVersionInstance */
5396
5406
  ToolVersionInstance: {
@@ -5420,7 +5430,7 @@ export interface components {
5420
5430
  */
5421
5431
  tool_id: string;
5422
5432
  /** @description The version of the tool. */
5423
- version: components["schemas"]["amigo_lib__mongo__collections__tool_invocation__ToolInvocation__Version"];
5433
+ version: components["schemas"]["amigo_lib__mongo__collections__tool_version__ToolVersion__Version"];
5424
5434
  /**
5425
5435
  * Required Envvars
5426
5436
  * @description The environment variables that are required to run the tool.
@@ -6005,6 +6015,13 @@ export interface components {
6005
6015
  */
6006
6016
  overrides_instructions: boolean;
6007
6017
  };
6018
+ /** Tag */
6019
+ amigo_lib__mongo__collections__metric__Metric__Tag: {
6020
+ /** Key */
6021
+ key: string;
6022
+ /** Value */
6023
+ value: string | null;
6024
+ };
6008
6025
  /** UserInfo */
6009
6026
  amigo_lib__mongo__collections__metric__Metric__UserInfo: {
6010
6027
  /** Org Id */
@@ -6091,13 +6108,6 @@ export interface components {
6091
6108
  metric_id: string;
6092
6109
  criterion: components["schemas"]["SuccessCriterionDescription-Output"];
6093
6110
  };
6094
- /** Tag */
6095
- amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__Tag: {
6096
- /** Key */
6097
- key: string;
6098
- /** Value */
6099
- value: string | null;
6100
- };
6101
6111
  /** UserInfo */
6102
6112
  amigo_lib__mongo__collections__simulation_unit_test__SimulationUnitTest__UserInfo: {
6103
6113
  /** Org Id */
@@ -6140,15 +6150,6 @@ export interface components {
6140
6150
  /** User Id */
6141
6151
  user_id: string;
6142
6152
  };
6143
- /** Version */
6144
- amigo_lib__mongo__collections__tool_invocation__ToolInvocation__Version: {
6145
- /** Major */
6146
- major: number;
6147
- /** Minor */
6148
- minor: number;
6149
- /** Patch */
6150
- patch: number;
6151
- };
6152
6153
  /** UserInfo */
6153
6154
  amigo_lib__mongo__collections__tool_version__ToolVersion__UserInfo: {
6154
6155
  /**
@@ -6162,6 +6163,15 @@ export interface components {
6162
6163
  */
6163
6164
  user_org_id: string;
6164
6165
  };
6166
+ /** Version */
6167
+ amigo_lib__mongo__collections__tool_version__ToolVersion__Version: {
6168
+ /** Major */
6169
+ major: number;
6170
+ /** Minor */
6171
+ minor: number;
6172
+ /** Patch */
6173
+ patch: number;
6174
+ };
6165
6175
  /**
6166
6176
  * Preferences
6167
6177
  * @description Preferences that the user can set to customize their experience.
@@ -6392,6 +6402,23 @@ export interface components {
6392
6402
  engage_user_tool_call_logs: components["schemas"]["ToolCallLog"][][];
6393
6403
  };
6394
6404
  conversation__interact_with_conversation__Response: components["schemas"]["ConversationEvent"] | components["schemas"]["UserMessageAvailableEvent"] | components["schemas"]["ErrorEvent"];
6405
+ /** Request */
6406
+ conversation__recommend_responses_for_interaction__Request: {
6407
+ /**
6408
+ * @description The context under which the recommended responses should be generated.
6409
+ * @default
6410
+ * PERSONA:
6411
+ * Name: User
6412
+ * Background: A typical person seeking this service.
6413
+ * ---
6414
+ * SCENARIO:
6415
+ * Name: Complete Service
6416
+ * Objective: Successfully complete the service interaction.
6417
+ * Instructions: Engage naturally with the agent to achieve the service objective.
6418
+ *
6419
+ */
6420
+ context?: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"];
6421
+ };
6395
6422
  /** Response */
6396
6423
  conversation__recommend_responses_for_interaction__Response: {
6397
6424
  /**
@@ -6921,7 +6948,7 @@ export interface components {
6921
6948
  * User Dimensions
6922
6949
  * @description User dimensions for the organization.
6923
6950
  */
6924
- user_dimensions: components["schemas"]["organization__create_organization__Request__UserDimension"][];
6951
+ user_dimensions: components["schemas"]["organization__modify_organization__Request__UserDimension"][];
6925
6952
  /**
6926
6953
  * Logo
6927
6954
  * Format: base64
@@ -6991,12 +7018,6 @@ export interface components {
6991
7018
  /** Timezone */
6992
7019
  timezone?: ("Africa/Abidjan" | "Africa/Accra" | "Africa/Addis_Ababa" | "Africa/Algiers" | "Africa/Asmara" | "Africa/Asmera" | "Africa/Bamako" | "Africa/Bangui" | "Africa/Banjul" | "Africa/Bissau" | "Africa/Blantyre" | "Africa/Brazzaville" | "Africa/Bujumbura" | "Africa/Cairo" | "Africa/Casablanca" | "Africa/Ceuta" | "Africa/Conakry" | "Africa/Dakar" | "Africa/Dar_es_Salaam" | "Africa/Djibouti" | "Africa/Douala" | "Africa/El_Aaiun" | "Africa/Freetown" | "Africa/Gaborone" | "Africa/Harare" | "Africa/Johannesburg" | "Africa/Juba" | "Africa/Kampala" | "Africa/Khartoum" | "Africa/Kigali" | "Africa/Kinshasa" | "Africa/Lagos" | "Africa/Libreville" | "Africa/Lome" | "Africa/Luanda" | "Africa/Lubumbashi" | "Africa/Lusaka" | "Africa/Malabo" | "Africa/Maputo" | "Africa/Maseru" | "Africa/Mbabane" | "Africa/Mogadishu" | "Africa/Monrovia" | "Africa/Nairobi" | "Africa/Ndjamena" | "Africa/Niamey" | "Africa/Nouakchott" | "Africa/Ouagadougou" | "Africa/Porto-Novo" | "Africa/Sao_Tome" | "Africa/Timbuktu" | "Africa/Tripoli" | "Africa/Tunis" | "Africa/Windhoek" | "America/Adak" | "America/Anchorage" | "America/Anguilla" | "America/Antigua" | "America/Araguaina" | "America/Argentina/Buenos_Aires" | "America/Argentina/Catamarca" | "America/Argentina/ComodRivadavia" | "America/Argentina/Cordoba" | "America/Argentina/Jujuy" | "America/Argentina/La_Rioja" | "America/Argentina/Mendoza" | "America/Argentina/Rio_Gallegos" | "America/Argentina/Salta" | "America/Argentina/San_Juan" | "America/Argentina/San_Luis" | "America/Argentina/Tucuman" | "America/Argentina/Ushuaia" | "America/Aruba" | "America/Asuncion" | "America/Atikokan" | "America/Atka" | "America/Bahia" | "America/Bahia_Banderas" | "America/Barbados" | "America/Belem" | "America/Belize" | "America/Blanc-Sablon" | "America/Boa_Vista" | "America/Bogota" | "America/Boise" | "America/Buenos_Aires" | "America/Cambridge_Bay" | "America/Campo_Grande" | "America/Cancun" | "America/Caracas" | "America/Catamarca" | "America/Cayenne" | "America/Cayman" | "America/Chicago" | "America/Chihuahua" | "America/Ciudad_Juarez" | "America/Coral_Harbour" | "America/Cordoba" | "America/Costa_Rica" | "America/Coyhaique" | "America/Creston" | "America/Cuiaba" | "America/Curacao" | "America/Danmarkshavn" | "America/Dawson" | "America/Dawson_Creek" | "America/Denver" | "America/Detroit" | "America/Dominica" | "America/Edmonton" | "America/Eirunepe" | "America/El_Salvador" | "America/Ensenada" | "America/Fort_Nelson" | "America/Fort_Wayne" | "America/Fortaleza" | "America/Glace_Bay" | "America/Godthab" | "America/Goose_Bay" | "America/Grand_Turk" | "America/Grenada" | "America/Guadeloupe" | "America/Guatemala" | "America/Guayaquil" | "America/Guyana" | "America/Halifax" | "America/Havana" | "America/Hermosillo" | "America/Indiana/Indianapolis" | "America/Indiana/Knox" | "America/Indiana/Marengo" | "America/Indiana/Petersburg" | "America/Indiana/Tell_City" | "America/Indiana/Vevay" | "America/Indiana/Vincennes" | "America/Indiana/Winamac" | "America/Indianapolis" | "America/Inuvik" | "America/Iqaluit" | "America/Jamaica" | "America/Jujuy" | "America/Juneau" | "America/Kentucky/Louisville" | "America/Kentucky/Monticello" | "America/Knox_IN" | "America/Kralendijk" | "America/La_Paz" | "America/Lima" | "America/Los_Angeles" | "America/Louisville" | "America/Lower_Princes" | "America/Maceio" | "America/Managua" | "America/Manaus" | "America/Marigot" | "America/Martinique" | "America/Matamoros" | "America/Mazatlan" | "America/Mendoza" | "America/Menominee" | "America/Merida" | "America/Metlakatla" | "America/Mexico_City" | "America/Miquelon" | "America/Moncton" | "America/Monterrey" | "America/Montevideo" | "America/Montreal" | "America/Montserrat" | "America/Nassau" | "America/New_York" | "America/Nipigon" | "America/Nome" | "America/Noronha" | "America/North_Dakota/Beulah" | "America/North_Dakota/Center" | "America/North_Dakota/New_Salem" | "America/Nuuk" | "America/Ojinaga" | "America/Panama" | "America/Pangnirtung" | "America/Paramaribo" | "America/Phoenix" | "America/Port-au-Prince" | "America/Port_of_Spain" | "America/Porto_Acre" | "America/Porto_Velho" | "America/Puerto_Rico" | "America/Punta_Arenas" | "America/Rainy_River" | "America/Rankin_Inlet" | "America/Recife" | "America/Regina" | "America/Resolute" | "America/Rio_Branco" | "America/Rosario" | "America/Santa_Isabel" | "America/Santarem" | "America/Santiago" | "America/Santo_Domingo" | "America/Sao_Paulo" | "America/Scoresbysund" | "America/Shiprock" | "America/Sitka" | "America/St_Barthelemy" | "America/St_Johns" | "America/St_Kitts" | "America/St_Lucia" | "America/St_Thomas" | "America/St_Vincent" | "America/Swift_Current" | "America/Tegucigalpa" | "America/Thule" | "America/Thunder_Bay" | "America/Tijuana" | "America/Toronto" | "America/Tortola" | "America/Vancouver" | "America/Virgin" | "America/Whitehorse" | "America/Winnipeg" | "America/Yakutat" | "America/Yellowknife" | "Antarctica/Casey" | "Antarctica/Davis" | "Antarctica/DumontDUrville" | "Antarctica/Macquarie" | "Antarctica/Mawson" | "Antarctica/McMurdo" | "Antarctica/Palmer" | "Antarctica/Rothera" | "Antarctica/South_Pole" | "Antarctica/Syowa" | "Antarctica/Troll" | "Antarctica/Vostok" | "Arctic/Longyearbyen" | "Asia/Aden" | "Asia/Almaty" | "Asia/Amman" | "Asia/Anadyr" | "Asia/Aqtau" | "Asia/Aqtobe" | "Asia/Ashgabat" | "Asia/Ashkhabad" | "Asia/Atyrau" | "Asia/Baghdad" | "Asia/Bahrain" | "Asia/Baku" | "Asia/Bangkok" | "Asia/Barnaul" | "Asia/Beirut" | "Asia/Bishkek" | "Asia/Brunei" | "Asia/Calcutta" | "Asia/Chita" | "Asia/Choibalsan" | "Asia/Chongqing" | "Asia/Chungking" | "Asia/Colombo" | "Asia/Dacca" | "Asia/Damascus" | "Asia/Dhaka" | "Asia/Dili" | "Asia/Dubai" | "Asia/Dushanbe" | "Asia/Famagusta" | "Asia/Gaza" | "Asia/Harbin" | "Asia/Hebron" | "Asia/Ho_Chi_Minh" | "Asia/Hong_Kong" | "Asia/Hovd" | "Asia/Irkutsk" | "Asia/Istanbul" | "Asia/Jakarta" | "Asia/Jayapura" | "Asia/Jerusalem" | "Asia/Kabul" | "Asia/Kamchatka" | "Asia/Karachi" | "Asia/Kashgar" | "Asia/Kathmandu" | "Asia/Katmandu" | "Asia/Khandyga" | "Asia/Kolkata" | "Asia/Krasnoyarsk" | "Asia/Kuala_Lumpur" | "Asia/Kuching" | "Asia/Kuwait" | "Asia/Macao" | "Asia/Macau" | "Asia/Magadan" | "Asia/Makassar" | "Asia/Manila" | "Asia/Muscat" | "Asia/Nicosia" | "Asia/Novokuznetsk" | "Asia/Novosibirsk" | "Asia/Omsk" | "Asia/Oral" | "Asia/Phnom_Penh" | "Asia/Pontianak" | "Asia/Pyongyang" | "Asia/Qatar" | "Asia/Qostanay" | "Asia/Qyzylorda" | "Asia/Rangoon" | "Asia/Riyadh" | "Asia/Saigon" | "Asia/Sakhalin" | "Asia/Samarkand" | "Asia/Seoul" | "Asia/Shanghai" | "Asia/Singapore" | "Asia/Srednekolymsk" | "Asia/Taipei" | "Asia/Tashkent" | "Asia/Tbilisi" | "Asia/Tehran" | "Asia/Tel_Aviv" | "Asia/Thimbu" | "Asia/Thimphu" | "Asia/Tokyo" | "Asia/Tomsk" | "Asia/Ujung_Pandang" | "Asia/Ulaanbaatar" | "Asia/Ulan_Bator" | "Asia/Urumqi" | "Asia/Ust-Nera" | "Asia/Vientiane" | "Asia/Vladivostok" | "Asia/Yakutsk" | "Asia/Yangon" | "Asia/Yekaterinburg" | "Asia/Yerevan" | "Atlantic/Azores" | "Atlantic/Bermuda" | "Atlantic/Canary" | "Atlantic/Cape_Verde" | "Atlantic/Faeroe" | "Atlantic/Faroe" | "Atlantic/Jan_Mayen" | "Atlantic/Madeira" | "Atlantic/Reykjavik" | "Atlantic/South_Georgia" | "Atlantic/St_Helena" | "Atlantic/Stanley" | "Australia/ACT" | "Australia/Adelaide" | "Australia/Brisbane" | "Australia/Broken_Hill" | "Australia/Canberra" | "Australia/Currie" | "Australia/Darwin" | "Australia/Eucla" | "Australia/Hobart" | "Australia/LHI" | "Australia/Lindeman" | "Australia/Lord_Howe" | "Australia/Melbourne" | "Australia/NSW" | "Australia/North" | "Australia/Perth" | "Australia/Queensland" | "Australia/South" | "Australia/Sydney" | "Australia/Tasmania" | "Australia/Victoria" | "Australia/West" | "Australia/Yancowinna" | "Brazil/Acre" | "Brazil/DeNoronha" | "Brazil/East" | "Brazil/West" | "CET" | "CST6CDT" | "Canada/Atlantic" | "Canada/Central" | "Canada/Eastern" | "Canada/Mountain" | "Canada/Newfoundland" | "Canada/Pacific" | "Canada/Saskatchewan" | "Canada/Yukon" | "Chile/Continental" | "Chile/EasterIsland" | "Cuba" | "EET" | "EST" | "EST5EDT" | "Egypt" | "Eire" | "Etc/GMT" | "Etc/GMT+0" | "Etc/GMT+1" | "Etc/GMT+10" | "Etc/GMT+11" | "Etc/GMT+12" | "Etc/GMT+2" | "Etc/GMT+3" | "Etc/GMT+4" | "Etc/GMT+5" | "Etc/GMT+6" | "Etc/GMT+7" | "Etc/GMT+8" | "Etc/GMT+9" | "Etc/GMT-0" | "Etc/GMT-1" | "Etc/GMT-10" | "Etc/GMT-11" | "Etc/GMT-12" | "Etc/GMT-13" | "Etc/GMT-14" | "Etc/GMT-2" | "Etc/GMT-3" | "Etc/GMT-4" | "Etc/GMT-5" | "Etc/GMT-6" | "Etc/GMT-7" | "Etc/GMT-8" | "Etc/GMT-9" | "Etc/GMT0" | "Etc/Greenwich" | "Etc/UCT" | "Etc/UTC" | "Etc/Universal" | "Etc/Zulu" | "Europe/Amsterdam" | "Europe/Andorra" | "Europe/Astrakhan" | "Europe/Athens" | "Europe/Belfast" | "Europe/Belgrade" | "Europe/Berlin" | "Europe/Bratislava" | "Europe/Brussels" | "Europe/Bucharest" | "Europe/Budapest" | "Europe/Busingen" | "Europe/Chisinau" | "Europe/Copenhagen" | "Europe/Dublin" | "Europe/Gibraltar" | "Europe/Guernsey" | "Europe/Helsinki" | "Europe/Isle_of_Man" | "Europe/Istanbul" | "Europe/Jersey" | "Europe/Kaliningrad" | "Europe/Kiev" | "Europe/Kirov" | "Europe/Kyiv" | "Europe/Lisbon" | "Europe/Ljubljana" | "Europe/London" | "Europe/Luxembourg" | "Europe/Madrid" | "Europe/Malta" | "Europe/Mariehamn" | "Europe/Minsk" | "Europe/Monaco" | "Europe/Moscow" | "Europe/Nicosia" | "Europe/Oslo" | "Europe/Paris" | "Europe/Podgorica" | "Europe/Prague" | "Europe/Riga" | "Europe/Rome" | "Europe/Samara" | "Europe/San_Marino" | "Europe/Sarajevo" | "Europe/Saratov" | "Europe/Simferopol" | "Europe/Skopje" | "Europe/Sofia" | "Europe/Stockholm" | "Europe/Tallinn" | "Europe/Tirane" | "Europe/Tiraspol" | "Europe/Ulyanovsk" | "Europe/Uzhgorod" | "Europe/Vaduz" | "Europe/Vatican" | "Europe/Vienna" | "Europe/Vilnius" | "Europe/Volgograd" | "Europe/Warsaw" | "Europe/Zagreb" | "Europe/Zaporozhye" | "Europe/Zurich" | "Factory" | "GB" | "GB-Eire" | "GMT" | "GMT+0" | "GMT-0" | "GMT0" | "Greenwich" | "HST" | "Hongkong" | "Iceland" | "Indian/Antananarivo" | "Indian/Chagos" | "Indian/Christmas" | "Indian/Cocos" | "Indian/Comoro" | "Indian/Kerguelen" | "Indian/Mahe" | "Indian/Maldives" | "Indian/Mauritius" | "Indian/Mayotte" | "Indian/Reunion" | "Iran" | "Israel" | "Jamaica" | "Japan" | "Kwajalein" | "Libya" | "MET" | "MST" | "MST7MDT" | "Mexico/BajaNorte" | "Mexico/BajaSur" | "Mexico/General" | "NZ" | "NZ-CHAT" | "Navajo" | "PRC" | "PST8PDT" | "Pacific/Apia" | "Pacific/Auckland" | "Pacific/Bougainville" | "Pacific/Chatham" | "Pacific/Chuuk" | "Pacific/Easter" | "Pacific/Efate" | "Pacific/Enderbury" | "Pacific/Fakaofo" | "Pacific/Fiji" | "Pacific/Funafuti" | "Pacific/Galapagos" | "Pacific/Gambier" | "Pacific/Guadalcanal" | "Pacific/Guam" | "Pacific/Honolulu" | "Pacific/Johnston" | "Pacific/Kanton" | "Pacific/Kiritimati" | "Pacific/Kosrae" | "Pacific/Kwajalein" | "Pacific/Majuro" | "Pacific/Marquesas" | "Pacific/Midway" | "Pacific/Nauru" | "Pacific/Niue" | "Pacific/Norfolk" | "Pacific/Noumea" | "Pacific/Pago_Pago" | "Pacific/Palau" | "Pacific/Pitcairn" | "Pacific/Pohnpei" | "Pacific/Ponape" | "Pacific/Port_Moresby" | "Pacific/Rarotonga" | "Pacific/Saipan" | "Pacific/Samoa" | "Pacific/Tahiti" | "Pacific/Tarawa" | "Pacific/Tongatapu" | "Pacific/Truk" | "Pacific/Wake" | "Pacific/Wallis" | "Pacific/Yap" | "Poland" | "Portugal" | "ROC" | "ROK" | "Singapore" | "Turkey" | "UCT" | "US/Alaska" | "US/Aleutian" | "US/Arizona" | "US/Central" | "US/East-Indiana" | "US/Eastern" | "US/Hawaii" | "US/Indiana-Starke" | "US/Michigan" | "US/Mountain" | "US/Pacific" | "US/Samoa" | "UTC" | "Universal" | "W-SU" | "WET" | "Zulu" | "localtime") | null;
6993
7020
  };
6994
- /** UserDimension */
6995
- organization__create_organization__Request__UserDimension: {
6996
- description: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"];
6997
- /** Tags */
6998
- tags: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"][];
6999
- };
7000
7021
  /** Response */
7001
7022
  organization__create_organization__Response: {
7002
7023
  /**
@@ -7060,7 +7081,7 @@ export interface components {
7060
7081
  global_boundary_constraints: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"][];
7061
7082
  };
7062
7083
  /** ExitCondition */
7063
- organization__create_service_hierarchical_state_machine_version__Request__ActionState__ExitCondition: {
7084
+ organization__create_service_hierarchical_state_machine_version__Request__DecisionState__ExitCondition: {
7064
7085
  description: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"];
7065
7086
  /** Next State */
7066
7087
  next_state: components["schemas"]["StateOrRefName"] | [
@@ -7348,7 +7369,7 @@ export interface components {
7348
7369
  * User Dimensions
7349
7370
  * @description User dimensions for the organization. If not set or `null`, this field is not updated.
7350
7371
  */
7351
- user_dimensions?: components["schemas"]["organization__create_organization__Request__UserDimension"][] | null;
7372
+ user_dimensions?: components["schemas"]["organization__modify_organization__Request__UserDimension"][] | null;
7352
7373
  /** @description The default user preferences for the organization. If `null`, this field is not updated. */
7353
7374
  default_user_preferences?: components["schemas"]["organization__modify_organization__Request__Preferences"] | null;
7354
7375
  /**
@@ -7382,6 +7403,12 @@ export interface components {
7382
7403
  /** Timezone */
7383
7404
  timezone?: ("Africa/Abidjan" | "Africa/Accra" | "Africa/Addis_Ababa" | "Africa/Algiers" | "Africa/Asmara" | "Africa/Asmera" | "Africa/Bamako" | "Africa/Bangui" | "Africa/Banjul" | "Africa/Bissau" | "Africa/Blantyre" | "Africa/Brazzaville" | "Africa/Bujumbura" | "Africa/Cairo" | "Africa/Casablanca" | "Africa/Ceuta" | "Africa/Conakry" | "Africa/Dakar" | "Africa/Dar_es_Salaam" | "Africa/Djibouti" | "Africa/Douala" | "Africa/El_Aaiun" | "Africa/Freetown" | "Africa/Gaborone" | "Africa/Harare" | "Africa/Johannesburg" | "Africa/Juba" | "Africa/Kampala" | "Africa/Khartoum" | "Africa/Kigali" | "Africa/Kinshasa" | "Africa/Lagos" | "Africa/Libreville" | "Africa/Lome" | "Africa/Luanda" | "Africa/Lubumbashi" | "Africa/Lusaka" | "Africa/Malabo" | "Africa/Maputo" | "Africa/Maseru" | "Africa/Mbabane" | "Africa/Mogadishu" | "Africa/Monrovia" | "Africa/Nairobi" | "Africa/Ndjamena" | "Africa/Niamey" | "Africa/Nouakchott" | "Africa/Ouagadougou" | "Africa/Porto-Novo" | "Africa/Sao_Tome" | "Africa/Timbuktu" | "Africa/Tripoli" | "Africa/Tunis" | "Africa/Windhoek" | "America/Adak" | "America/Anchorage" | "America/Anguilla" | "America/Antigua" | "America/Araguaina" | "America/Argentina/Buenos_Aires" | "America/Argentina/Catamarca" | "America/Argentina/ComodRivadavia" | "America/Argentina/Cordoba" | "America/Argentina/Jujuy" | "America/Argentina/La_Rioja" | "America/Argentina/Mendoza" | "America/Argentina/Rio_Gallegos" | "America/Argentina/Salta" | "America/Argentina/San_Juan" | "America/Argentina/San_Luis" | "America/Argentina/Tucuman" | "America/Argentina/Ushuaia" | "America/Aruba" | "America/Asuncion" | "America/Atikokan" | "America/Atka" | "America/Bahia" | "America/Bahia_Banderas" | "America/Barbados" | "America/Belem" | "America/Belize" | "America/Blanc-Sablon" | "America/Boa_Vista" | "America/Bogota" | "America/Boise" | "America/Buenos_Aires" | "America/Cambridge_Bay" | "America/Campo_Grande" | "America/Cancun" | "America/Caracas" | "America/Catamarca" | "America/Cayenne" | "America/Cayman" | "America/Chicago" | "America/Chihuahua" | "America/Ciudad_Juarez" | "America/Coral_Harbour" | "America/Cordoba" | "America/Costa_Rica" | "America/Coyhaique" | "America/Creston" | "America/Cuiaba" | "America/Curacao" | "America/Danmarkshavn" | "America/Dawson" | "America/Dawson_Creek" | "America/Denver" | "America/Detroit" | "America/Dominica" | "America/Edmonton" | "America/Eirunepe" | "America/El_Salvador" | "America/Ensenada" | "America/Fort_Nelson" | "America/Fort_Wayne" | "America/Fortaleza" | "America/Glace_Bay" | "America/Godthab" | "America/Goose_Bay" | "America/Grand_Turk" | "America/Grenada" | "America/Guadeloupe" | "America/Guatemala" | "America/Guayaquil" | "America/Guyana" | "America/Halifax" | "America/Havana" | "America/Hermosillo" | "America/Indiana/Indianapolis" | "America/Indiana/Knox" | "America/Indiana/Marengo" | "America/Indiana/Petersburg" | "America/Indiana/Tell_City" | "America/Indiana/Vevay" | "America/Indiana/Vincennes" | "America/Indiana/Winamac" | "America/Indianapolis" | "America/Inuvik" | "America/Iqaluit" | "America/Jamaica" | "America/Jujuy" | "America/Juneau" | "America/Kentucky/Louisville" | "America/Kentucky/Monticello" | "America/Knox_IN" | "America/Kralendijk" | "America/La_Paz" | "America/Lima" | "America/Los_Angeles" | "America/Louisville" | "America/Lower_Princes" | "America/Maceio" | "America/Managua" | "America/Manaus" | "America/Marigot" | "America/Martinique" | "America/Matamoros" | "America/Mazatlan" | "America/Mendoza" | "America/Menominee" | "America/Merida" | "America/Metlakatla" | "America/Mexico_City" | "America/Miquelon" | "America/Moncton" | "America/Monterrey" | "America/Montevideo" | "America/Montreal" | "America/Montserrat" | "America/Nassau" | "America/New_York" | "America/Nipigon" | "America/Nome" | "America/Noronha" | "America/North_Dakota/Beulah" | "America/North_Dakota/Center" | "America/North_Dakota/New_Salem" | "America/Nuuk" | "America/Ojinaga" | "America/Panama" | "America/Pangnirtung" | "America/Paramaribo" | "America/Phoenix" | "America/Port-au-Prince" | "America/Port_of_Spain" | "America/Porto_Acre" | "America/Porto_Velho" | "America/Puerto_Rico" | "America/Punta_Arenas" | "America/Rainy_River" | "America/Rankin_Inlet" | "America/Recife" | "America/Regina" | "America/Resolute" | "America/Rio_Branco" | "America/Rosario" | "America/Santa_Isabel" | "America/Santarem" | "America/Santiago" | "America/Santo_Domingo" | "America/Sao_Paulo" | "America/Scoresbysund" | "America/Shiprock" | "America/Sitka" | "America/St_Barthelemy" | "America/St_Johns" | "America/St_Kitts" | "America/St_Lucia" | "America/St_Thomas" | "America/St_Vincent" | "America/Swift_Current" | "America/Tegucigalpa" | "America/Thule" | "America/Thunder_Bay" | "America/Tijuana" | "America/Toronto" | "America/Tortola" | "America/Vancouver" | "America/Virgin" | "America/Whitehorse" | "America/Winnipeg" | "America/Yakutat" | "America/Yellowknife" | "Antarctica/Casey" | "Antarctica/Davis" | "Antarctica/DumontDUrville" | "Antarctica/Macquarie" | "Antarctica/Mawson" | "Antarctica/McMurdo" | "Antarctica/Palmer" | "Antarctica/Rothera" | "Antarctica/South_Pole" | "Antarctica/Syowa" | "Antarctica/Troll" | "Antarctica/Vostok" | "Arctic/Longyearbyen" | "Asia/Aden" | "Asia/Almaty" | "Asia/Amman" | "Asia/Anadyr" | "Asia/Aqtau" | "Asia/Aqtobe" | "Asia/Ashgabat" | "Asia/Ashkhabad" | "Asia/Atyrau" | "Asia/Baghdad" | "Asia/Bahrain" | "Asia/Baku" | "Asia/Bangkok" | "Asia/Barnaul" | "Asia/Beirut" | "Asia/Bishkek" | "Asia/Brunei" | "Asia/Calcutta" | "Asia/Chita" | "Asia/Choibalsan" | "Asia/Chongqing" | "Asia/Chungking" | "Asia/Colombo" | "Asia/Dacca" | "Asia/Damascus" | "Asia/Dhaka" | "Asia/Dili" | "Asia/Dubai" | "Asia/Dushanbe" | "Asia/Famagusta" | "Asia/Gaza" | "Asia/Harbin" | "Asia/Hebron" | "Asia/Ho_Chi_Minh" | "Asia/Hong_Kong" | "Asia/Hovd" | "Asia/Irkutsk" | "Asia/Istanbul" | "Asia/Jakarta" | "Asia/Jayapura" | "Asia/Jerusalem" | "Asia/Kabul" | "Asia/Kamchatka" | "Asia/Karachi" | "Asia/Kashgar" | "Asia/Kathmandu" | "Asia/Katmandu" | "Asia/Khandyga" | "Asia/Kolkata" | "Asia/Krasnoyarsk" | "Asia/Kuala_Lumpur" | "Asia/Kuching" | "Asia/Kuwait" | "Asia/Macao" | "Asia/Macau" | "Asia/Magadan" | "Asia/Makassar" | "Asia/Manila" | "Asia/Muscat" | "Asia/Nicosia" | "Asia/Novokuznetsk" | "Asia/Novosibirsk" | "Asia/Omsk" | "Asia/Oral" | "Asia/Phnom_Penh" | "Asia/Pontianak" | "Asia/Pyongyang" | "Asia/Qatar" | "Asia/Qostanay" | "Asia/Qyzylorda" | "Asia/Rangoon" | "Asia/Riyadh" | "Asia/Saigon" | "Asia/Sakhalin" | "Asia/Samarkand" | "Asia/Seoul" | "Asia/Shanghai" | "Asia/Singapore" | "Asia/Srednekolymsk" | "Asia/Taipei" | "Asia/Tashkent" | "Asia/Tbilisi" | "Asia/Tehran" | "Asia/Tel_Aviv" | "Asia/Thimbu" | "Asia/Thimphu" | "Asia/Tokyo" | "Asia/Tomsk" | "Asia/Ujung_Pandang" | "Asia/Ulaanbaatar" | "Asia/Ulan_Bator" | "Asia/Urumqi" | "Asia/Ust-Nera" | "Asia/Vientiane" | "Asia/Vladivostok" | "Asia/Yakutsk" | "Asia/Yangon" | "Asia/Yekaterinburg" | "Asia/Yerevan" | "Atlantic/Azores" | "Atlantic/Bermuda" | "Atlantic/Canary" | "Atlantic/Cape_Verde" | "Atlantic/Faeroe" | "Atlantic/Faroe" | "Atlantic/Jan_Mayen" | "Atlantic/Madeira" | "Atlantic/Reykjavik" | "Atlantic/South_Georgia" | "Atlantic/St_Helena" | "Atlantic/Stanley" | "Australia/ACT" | "Australia/Adelaide" | "Australia/Brisbane" | "Australia/Broken_Hill" | "Australia/Canberra" | "Australia/Currie" | "Australia/Darwin" | "Australia/Eucla" | "Australia/Hobart" | "Australia/LHI" | "Australia/Lindeman" | "Australia/Lord_Howe" | "Australia/Melbourne" | "Australia/NSW" | "Australia/North" | "Australia/Perth" | "Australia/Queensland" | "Australia/South" | "Australia/Sydney" | "Australia/Tasmania" | "Australia/Victoria" | "Australia/West" | "Australia/Yancowinna" | "Brazil/Acre" | "Brazil/DeNoronha" | "Brazil/East" | "Brazil/West" | "CET" | "CST6CDT" | "Canada/Atlantic" | "Canada/Central" | "Canada/Eastern" | "Canada/Mountain" | "Canada/Newfoundland" | "Canada/Pacific" | "Canada/Saskatchewan" | "Canada/Yukon" | "Chile/Continental" | "Chile/EasterIsland" | "Cuba" | "EET" | "EST" | "EST5EDT" | "Egypt" | "Eire" | "Etc/GMT" | "Etc/GMT+0" | "Etc/GMT+1" | "Etc/GMT+10" | "Etc/GMT+11" | "Etc/GMT+12" | "Etc/GMT+2" | "Etc/GMT+3" | "Etc/GMT+4" | "Etc/GMT+5" | "Etc/GMT+6" | "Etc/GMT+7" | "Etc/GMT+8" | "Etc/GMT+9" | "Etc/GMT-0" | "Etc/GMT-1" | "Etc/GMT-10" | "Etc/GMT-11" | "Etc/GMT-12" | "Etc/GMT-13" | "Etc/GMT-14" | "Etc/GMT-2" | "Etc/GMT-3" | "Etc/GMT-4" | "Etc/GMT-5" | "Etc/GMT-6" | "Etc/GMT-7" | "Etc/GMT-8" | "Etc/GMT-9" | "Etc/GMT0" | "Etc/Greenwich" | "Etc/UCT" | "Etc/UTC" | "Etc/Universal" | "Etc/Zulu" | "Europe/Amsterdam" | "Europe/Andorra" | "Europe/Astrakhan" | "Europe/Athens" | "Europe/Belfast" | "Europe/Belgrade" | "Europe/Berlin" | "Europe/Bratislava" | "Europe/Brussels" | "Europe/Bucharest" | "Europe/Budapest" | "Europe/Busingen" | "Europe/Chisinau" | "Europe/Copenhagen" | "Europe/Dublin" | "Europe/Gibraltar" | "Europe/Guernsey" | "Europe/Helsinki" | "Europe/Isle_of_Man" | "Europe/Istanbul" | "Europe/Jersey" | "Europe/Kaliningrad" | "Europe/Kiev" | "Europe/Kirov" | "Europe/Kyiv" | "Europe/Lisbon" | "Europe/Ljubljana" | "Europe/London" | "Europe/Luxembourg" | "Europe/Madrid" | "Europe/Malta" | "Europe/Mariehamn" | "Europe/Minsk" | "Europe/Monaco" | "Europe/Moscow" | "Europe/Nicosia" | "Europe/Oslo" | "Europe/Paris" | "Europe/Podgorica" | "Europe/Prague" | "Europe/Riga" | "Europe/Rome" | "Europe/Samara" | "Europe/San_Marino" | "Europe/Sarajevo" | "Europe/Saratov" | "Europe/Simferopol" | "Europe/Skopje" | "Europe/Sofia" | "Europe/Stockholm" | "Europe/Tallinn" | "Europe/Tirane" | "Europe/Tiraspol" | "Europe/Ulyanovsk" | "Europe/Uzhgorod" | "Europe/Vaduz" | "Europe/Vatican" | "Europe/Vienna" | "Europe/Vilnius" | "Europe/Volgograd" | "Europe/Warsaw" | "Europe/Zagreb" | "Europe/Zaporozhye" | "Europe/Zurich" | "Factory" | "GB" | "GB-Eire" | "GMT" | "GMT+0" | "GMT-0" | "GMT0" | "Greenwich" | "HST" | "Hongkong" | "Iceland" | "Indian/Antananarivo" | "Indian/Chagos" | "Indian/Christmas" | "Indian/Cocos" | "Indian/Comoro" | "Indian/Kerguelen" | "Indian/Mahe" | "Indian/Maldives" | "Indian/Mauritius" | "Indian/Mayotte" | "Indian/Reunion" | "Iran" | "Israel" | "Jamaica" | "Japan" | "Kwajalein" | "Libya" | "MET" | "MST" | "MST7MDT" | "Mexico/BajaNorte" | "Mexico/BajaSur" | "Mexico/General" | "NZ" | "NZ-CHAT" | "Navajo" | "PRC" | "PST8PDT" | "Pacific/Apia" | "Pacific/Auckland" | "Pacific/Bougainville" | "Pacific/Chatham" | "Pacific/Chuuk" | "Pacific/Easter" | "Pacific/Efate" | "Pacific/Enderbury" | "Pacific/Fakaofo" | "Pacific/Fiji" | "Pacific/Funafuti" | "Pacific/Galapagos" | "Pacific/Gambier" | "Pacific/Guadalcanal" | "Pacific/Guam" | "Pacific/Honolulu" | "Pacific/Johnston" | "Pacific/Kanton" | "Pacific/Kiritimati" | "Pacific/Kosrae" | "Pacific/Kwajalein" | "Pacific/Majuro" | "Pacific/Marquesas" | "Pacific/Midway" | "Pacific/Nauru" | "Pacific/Niue" | "Pacific/Norfolk" | "Pacific/Noumea" | "Pacific/Pago_Pago" | "Pacific/Palau" | "Pacific/Pitcairn" | "Pacific/Pohnpei" | "Pacific/Ponape" | "Pacific/Port_Moresby" | "Pacific/Rarotonga" | "Pacific/Saipan" | "Pacific/Samoa" | "Pacific/Tahiti" | "Pacific/Tarawa" | "Pacific/Tongatapu" | "Pacific/Truk" | "Pacific/Wake" | "Pacific/Wallis" | "Pacific/Yap" | "Poland" | "Portugal" | "ROC" | "ROK" | "Singapore" | "Turkey" | "UCT" | "US/Alaska" | "US/Aleutian" | "US/Arizona" | "US/Central" | "US/East-Indiana" | "US/Eastern" | "US/Hawaii" | "US/Indiana-Starke" | "US/Michigan" | "US/Mountain" | "US/Pacific" | "US/Samoa" | "UTC" | "Universal" | "W-SU" | "WET" | "Zulu" | "localtime") | null;
7384
7405
  };
7406
+ /** UserDimension */
7407
+ organization__modify_organization__Request__UserDimension: {
7408
+ description: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"];
7409
+ /** Tags */
7410
+ tags: components["schemas"]["amigo_lib__pydantic__base_model__StrippedNonemptyString__1"][];
7411
+ };
7385
7412
  /** Request */
7386
7413
  role__assign_role__Request: {
7387
7414
  /**
@@ -7506,7 +7533,7 @@ export interface components {
7506
7533
  is_active: boolean;
7507
7534
  /** @description The `release` version set to use for this service. If not specified, the `release` version set will be the same as the `edge` version set, which uses the
7508
7535
  * latest agent and state machine versions with no model preference. */
7509
- release_version_set?: components["schemas"]["service__create_service__Request__VersionSet"] | null;
7536
+ release_version_set?: components["schemas"]["service__upsert_service_version_set__Request__VersionSet"] | null;
7510
7537
  /**
7511
7538
  * Tags
7512
7539
  * @description The tags of this service.
@@ -7515,22 +7542,24 @@ export interface components {
7515
7542
  [key: string]: components["schemas"]["StrippedNonemptyString___w__s_____"] | null;
7516
7543
  };
7517
7544
  };
7518
- /** VersionSet */
7519
- service__create_service__Request__VersionSet: {
7545
+ /** LLMConfig */
7546
+ service__create_service__Request__VersionSet__LLMConfig: {
7547
+ llm_name: components["schemas"]["LLMType"];
7520
7548
  /**
7521
- * Agent Version Number
7522
- * @description The version number of the agent to be used. If None, the latest agent version will be used.
7549
+ * Top P
7550
+ * @description The preferred `top_p` value.
7523
7551
  */
7524
- agent_version_number: number | null;
7552
+ top_p: number;
7525
7553
  /**
7526
- * Service Hierarchical State Machine Version Number
7527
- * @description The version number of the state machine to be used. If None, the latest state machine version will be used.
7554
+ * Temperature
7555
+ * @description The preferred temperature value.
7528
7556
  */
7529
- service_hierarchical_state_machine_version_number: number | null;
7530
- /** Llm Model Preferences */
7531
- llm_model_preferences: {
7532
- [key: string]: components["schemas"]["service__upsert_service_version_set__Request__VersionSet__LLMConfig"] | components["schemas"]["service__create_service__Request__VersionSet__LLMLoadBalancingSetConfig"];
7533
- };
7557
+ temperature: number;
7558
+ /**
7559
+ * Top K
7560
+ * @description The preferred `top_k` value. Note that not all LLMs support this.
7561
+ */
7562
+ top_k: number;
7534
7563
  };
7535
7564
  /** LLMLoadBalancingSetConfig */
7536
7565
  service__create_service__Request__VersionSet__LLMLoadBalancingSetConfig: {
@@ -7615,26 +7644,24 @@ export interface components {
7615
7644
  /** Request */
7616
7645
  service__upsert_service_version_set__Request: {
7617
7646
  /** @description The version set to upsert. */
7618
- version_set: components["schemas"]["service__create_service__Request__VersionSet"];
7647
+ version_set: components["schemas"]["service__upsert_service_version_set__Request__VersionSet"];
7619
7648
  };
7620
- /** LLMConfig */
7621
- service__upsert_service_version_set__Request__VersionSet__LLMConfig: {
7622
- llm_name: components["schemas"]["LLMType"];
7623
- /**
7624
- * Top P
7625
- * @description The preferred `top_p` value.
7626
- */
7627
- top_p: number;
7649
+ /** VersionSet */
7650
+ service__upsert_service_version_set__Request__VersionSet: {
7628
7651
  /**
7629
- * Temperature
7630
- * @description The preferred temperature value.
7652
+ * Agent Version Number
7653
+ * @description The version number of the agent to be used. If None, the latest agent version will be used.
7631
7654
  */
7632
- temperature: number;
7655
+ agent_version_number: number | null;
7633
7656
  /**
7634
- * Top K
7635
- * @description The preferred `top_k` value. Note that not all LLMs support this.
7657
+ * Service Hierarchical State Machine Version Number
7658
+ * @description The version number of the state machine to be used. If None, the latest state machine version will be used.
7636
7659
  */
7637
- top_k: number;
7660
+ service_hierarchical_state_machine_version_number: number | null;
7661
+ /** Llm Model Preferences */
7662
+ llm_model_preferences: {
7663
+ [key: string]: components["schemas"]["service__create_service__Request__VersionSet__LLMConfig"] | components["schemas"]["service__create_service__Request__VersionSet__LLMLoadBalancingSetConfig"];
7664
+ };
7638
7665
  };
7639
7666
  /** Request */
7640
7667
  simulation__create_simulation_persona__Request: {
@@ -7839,7 +7866,7 @@ export interface components {
7839
7866
  * Unit Test Runs
7840
7867
  * @description The unit test runs that are part of this set.
7841
7868
  */
7842
- unit_test_runs: components["schemas"]["simulation__update_simulation_unit_test_set__Request__UnitTestRunDescriptor"][];
7869
+ unit_test_runs: components["schemas"]["simulation__create_simulation_unit_test_set__Request__UnitTestRunDescriptor"][];
7843
7870
  /**
7844
7871
  * Tags
7845
7872
  * @description The tags of the simulation unit test set.
@@ -7848,6 +7875,16 @@ export interface components {
7848
7875
  [key: string]: string | null;
7849
7876
  };
7850
7877
  };
7878
+ /** UnitTestRunDescriptor */
7879
+ simulation__create_simulation_unit_test_set__Request__UnitTestRunDescriptor: {
7880
+ /** Unit Test Id */
7881
+ unit_test_id: string;
7882
+ /**
7883
+ * Run Count
7884
+ * @description The number of times to run the unit test.
7885
+ */
7886
+ run_count: number;
7887
+ };
7851
7888
  /** Response */
7852
7889
  simulation__create_simulation_unit_test_set__Response: {
7853
7890
  /**
@@ -8344,7 +8381,7 @@ export interface components {
8344
8381
  * Unit Test Runs
8345
8382
  * @description The unit test runs that are part of this set.
8346
8383
  */
8347
- unit_test_runs?: components["schemas"]["simulation__update_simulation_unit_test_set__Request__UnitTestRunDescriptor"][] | null;
8384
+ unit_test_runs?: components["schemas"]["simulation__create_simulation_unit_test_set__Request__UnitTestRunDescriptor"][] | null;
8348
8385
  /**
8349
8386
  * Tags
8350
8387
  * @description The tags of the simulation unit test set.
@@ -8353,16 +8390,6 @@ export interface components {
8353
8390
  [key: string]: string | null;
8354
8391
  } | null;
8355
8392
  };
8356
- /** UnitTestRunDescriptor */
8357
- simulation__update_simulation_unit_test_set__Request__UnitTestRunDescriptor: {
8358
- /** Unit Test Id */
8359
- unit_test_id: string;
8360
- /**
8361
- * Run Count
8362
- * @description The number of times to run the unit test.
8363
- */
8364
- run_count: number;
8365
- };
8366
8393
  /** Request */
8367
8394
  tool__create_tool__Request: {
8368
8395
  /** @description The name of the tool. It must be unique among all non-deprecated tools in the organization. */
@@ -8471,7 +8498,23 @@ export interface components {
8471
8498
  * Inputs
8472
8499
  * @description The list of inputs for the tool invocation.
8473
8500
  */
8474
- inputs: components["schemas"]["tool__test_tool__Request__Input"][];
8501
+ inputs: components["schemas"]["tool__invoke_tool_version__Request__Input"][];
8502
+ };
8503
+ /** Input */
8504
+ tool__invoke_tool_version__Request__Input: {
8505
+ /**
8506
+ * Input Parameters
8507
+ * @description The input parameters for the tool invocation.
8508
+ */
8509
+ input_parameters: {
8510
+ [key: string]: unknown;
8511
+ };
8512
+ /**
8513
+ * Invocation Mode
8514
+ * @description The mode of invocation.
8515
+ * @enum {string}
8516
+ */
8517
+ invocation_mode: "regular" | "conversation-simulation";
8475
8518
  };
8476
8519
  /** Response */
8477
8520
  tool__invoke_tool_version__Response: {
@@ -8584,7 +8627,7 @@ export interface components {
8584
8627
  */
8585
8628
  tool_id: string;
8586
8629
  /** @description The version of the tool that was invoked. */
8587
- tool_version: components["schemas"]["amigo_lib__mongo__collections__tool_invocation__ToolInvocation__Version"];
8630
+ tool_version: components["schemas"]["amigo_lib__mongo__collections__tool_version__ToolVersion__Version"];
8588
8631
  };
8589
8632
  /** Request */
8590
8633
  tool__test_tool__Request: {
@@ -8592,7 +8635,7 @@ export interface components {
8592
8635
  * Inputs
8593
8636
  * @description The list of inputs for the tool invocation.
8594
8637
  */
8595
- inputs: components["schemas"]["tool__test_tool__Request__Input"][];
8638
+ inputs: components["schemas"]["tool__invoke_tool_version__Request__Input"][];
8596
8639
  /**
8597
8640
  * Commit Branch
8598
8641
  * @description The branch in the tools repo whose tip will be tested.
@@ -8618,22 +8661,6 @@ export interface components {
8618
8661
  [key: string]: string;
8619
8662
  };
8620
8663
  };
8621
- /** Input */
8622
- tool__test_tool__Request__Input: {
8623
- /**
8624
- * Input Parameters
8625
- * @description The input parameters for the tool invocation.
8626
- */
8627
- input_parameters: {
8628
- [key: string]: unknown;
8629
- };
8630
- /**
8631
- * Invocation Mode
8632
- * @description The mode of invocation.
8633
- * @enum {string}
8634
- */
8635
- invocation_mode: "regular" | "conversation-simulation";
8636
- };
8637
8664
  /** Response */
8638
8665
  tool__test_tool__Response: {
8639
8666
  /** Invocation Results */
@@ -8740,7 +8767,7 @@ export interface components {
8740
8767
  * Users
8741
8768
  * @description Users in this organization.
8742
8769
  */
8743
- users: components["schemas"]["user__search_users__Response__UserInstance"][];
8770
+ users: components["schemas"]["user__get_users__Response__UserInstance"][];
8744
8771
  /**
8745
8772
  * Has More
8746
8773
  * @description Whether there are more users to retrieve.
@@ -8752,34 +8779,8 @@ export interface components {
8752
8779
  */
8753
8780
  continuation_token: number | null;
8754
8781
  };
8755
- /** UserStats */
8756
- user__get_users__Response__UserInstance__UserStats: {
8757
- /**
8758
- * Num Conversations
8759
- * @description The number of conversations the user has created.
8760
- */
8761
- num_conversations: number;
8762
- /**
8763
- * Num Messages
8764
- * @description The number of messages the user has sent and received.
8765
- */
8766
- num_messages: number;
8767
- /**
8768
- * Last Message Time
8769
- * @description The time of the last message the user sent or received. If `None`, the user hasn't started any conversations.
8770
- */
8771
- last_message_time: string | null;
8772
- };
8773
- /** Response */
8774
- user__search_users__Response: {
8775
- /**
8776
- * Users
8777
- * @description Users in this organization.
8778
- */
8779
- users: components["schemas"]["user__search_users__Response__UserInstance"][];
8780
- };
8781
8782
  /** UserInstance */
8782
- user__search_users__Response__UserInstance: {
8783
+ user__get_users__Response__UserInstance: {
8783
8784
  /**
8784
8785
  * Org Id
8785
8786
  * @description The ID of the organization that this user belongs to.
@@ -8806,7 +8807,7 @@ export interface components {
8806
8807
  */
8807
8808
  email: string;
8808
8809
  /** @description Statistics about the user's usage of the Amigo platform. */
8809
- user_stats: components["schemas"]["user__get_users__Response__UserInstance__UserStats"];
8810
+ user_stats: components["schemas"]["user__search_users__Response__UserInstance__UserStats"];
8810
8811
  /**
8811
8812
  * Role
8812
8813
  * @description The ID of the role of the user.
@@ -8815,6 +8816,32 @@ export interface components {
8815
8816
  /** @description The preferences of the user. */
8816
8817
  preferences: components["schemas"]["amigo_lib__mongo__collections__user__User__Preferences"];
8817
8818
  };
8819
+ /** Response */
8820
+ user__search_users__Response: {
8821
+ /**
8822
+ * Users
8823
+ * @description Users in this organization.
8824
+ */
8825
+ users: components["schemas"]["user__get_users__Response__UserInstance"][];
8826
+ };
8827
+ /** UserStats */
8828
+ user__search_users__Response__UserInstance__UserStats: {
8829
+ /**
8830
+ * Num Conversations
8831
+ * @description The number of conversations the user has created.
8832
+ */
8833
+ num_conversations: number;
8834
+ /**
8835
+ * Num Messages
8836
+ * @description The number of messages the user has sent and received.
8837
+ */
8838
+ num_messages: number;
8839
+ /**
8840
+ * Last Message Time
8841
+ * @description The time of the last message the user sent or received. If `None`, the user hasn't started any conversations.
8842
+ */
8843
+ last_message_time: string | null;
8844
+ };
8818
8845
  /** SigninWithAPIKeyResponse */
8819
8846
  user__sign_in_with_api_key__Response: {
8820
8847
  /**
@@ -11201,6 +11228,89 @@ export interface operations {
11201
11228
  };
11202
11229
  };
11203
11230
  };
11231
+ recommend_responses_for_interaction_v1__organization__conversation__conversation_id__interaction__interaction_id__recommend_responses_get: {
11232
+ parameters: {
11233
+ query?: never;
11234
+ header?: {
11235
+ /** @description The Mongo cluster name to perform this request in. This is usually not needed unless the organization does not exist yet in the Amigo organization infra config database. */
11236
+ "x-mongo-cluster-name"?: string | null;
11237
+ "Sec-WebSocket-Protocol"?: string[];
11238
+ };
11239
+ path: {
11240
+ /** @description The identifier of the conversation. */
11241
+ conversation_id: string;
11242
+ /** @description The identifier of the most recent interaction. */
11243
+ interaction_id: string;
11244
+ organization: string;
11245
+ };
11246
+ cookie?: never;
11247
+ };
11248
+ requestBody?: {
11249
+ content: {
11250
+ "application/json": components["schemas"]["conversation__recommend_responses_for_interaction__Request"];
11251
+ };
11252
+ };
11253
+ responses: {
11254
+ /** @description Succeeded. */
11255
+ 200: {
11256
+ headers: {
11257
+ [name: string]: unknown;
11258
+ };
11259
+ content: {
11260
+ "application/json": components["schemas"]["conversation__recommend_responses_for_interaction__Response"];
11261
+ };
11262
+ };
11263
+ /** @description The conversation is finished, or the supplied interaction ID doesn't correspond to the latest, completed interaction. */
11264
+ 400: {
11265
+ headers: {
11266
+ [name: string]: unknown;
11267
+ };
11268
+ content?: never;
11269
+ };
11270
+ /** @description Invalid authorization credentials. */
11271
+ 401: {
11272
+ headers: {
11273
+ [name: string]: unknown;
11274
+ };
11275
+ content?: never;
11276
+ };
11277
+ /** @description Missing required permissions. */
11278
+ 403: {
11279
+ headers: {
11280
+ [name: string]: unknown;
11281
+ };
11282
+ content?: never;
11283
+ };
11284
+ /** @description Specified organization or conversation is not found. */
11285
+ 404: {
11286
+ headers: {
11287
+ [name: string]: unknown;
11288
+ };
11289
+ content?: never;
11290
+ };
11291
+ /** @description Invalid request path parameter failed validation. */
11292
+ 422: {
11293
+ headers: {
11294
+ [name: string]: unknown;
11295
+ };
11296
+ content?: never;
11297
+ };
11298
+ /** @description The user has exceeded the rate limit of 20 requests per minute for this endpoint. */
11299
+ 429: {
11300
+ headers: {
11301
+ [name: string]: unknown;
11302
+ };
11303
+ content?: never;
11304
+ };
11305
+ /** @description The service is going through temporary maintenance. */
11306
+ 503: {
11307
+ headers: {
11308
+ [name: string]: unknown;
11309
+ };
11310
+ content?: never;
11311
+ };
11312
+ };
11313
+ };
11204
11314
  "recommend-responses-for-interaction": {
11205
11315
  parameters: {
11206
11316
  query?: never;
@@ -11218,7 +11328,11 @@ export interface operations {
11218
11328
  };
11219
11329
  cookie?: never;
11220
11330
  };
11221
- requestBody?: never;
11331
+ requestBody?: {
11332
+ content: {
11333
+ "application/json": components["schemas"]["conversation__recommend_responses_for_interaction__Request"];
11334
+ };
11335
+ };
11222
11336
  responses: {
11223
11337
  /** @description Succeeded. */
11224
11338
  200: {
@@ -5,7 +5,7 @@ export declare class UserResource {
5
5
  private orgId;
6
6
  constructor(c: AmigoFetch, orgId: string);
7
7
  getUsers(queryParams?: operations['get-users']['parameters']['query'], headers?: operations['get-users']['parameters']['header']): Promise<{
8
- users: components["schemas"]["user__search_users__Response__UserInstance"][];
8
+ users: components["schemas"]["user__get_users__Response__UserInstance"][];
9
9
  has_more: boolean;
10
10
  continuation_token: number | null;
11
11
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amigo-ai/sdk",
3
- "version": "0.50.0",
3
+ "version": "0.52.0",
4
4
  "description": "Amigo TypeScript SDK",
5
5
  "publishConfig": {
6
6
  "access": "public"