{
  "version": 3,
  "sources": ["../../src/index.ts", "../../src/fetch-client.ts", "../../src/functions/chunks/index.ts", "../../src/functions/message/index.ts", "../../src/functions/groups/index.ts", "../../src/functions/analytics/index.ts", "../../src/functions/topic/index.ts", "../../src/functions/file/index.ts", "../../src/functions/events/index.ts", "../../src/functions/datasets/index.ts", "../../src/functions/user/index.ts", "../../src/functions/organization/index.ts", "../../src/functions/crawl/index.ts", "../../src/functions/stripe/index.ts", "../../src/functions/experiments/index.ts", "../../src/functions/index.ts", "../../src/sdk.ts", "../../src/functions/analytics/AnalyticsQueryBuilder.ts"],
  "sourcesContent": ["export { TrieveFetchClient } from \"./fetch-client\";\nexport { TrieveSDK } from \"./sdk\";\nexport * from \"./types.gen\";\nexport * from \"./functions/analytics/AnalyticsQueryBuilder\";", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { $OpenApiTs } from \"./types.gen\";\nexport type * from \"./types.gen\";\n\ntype HttpMethod = \"get\" | \"post\" | \"put\" | \"delete\" | \"patch\";\ntype Paths = keyof $OpenApiTs;\ntype MethodsForPath<P extends Paths> = keyof $OpenApiTs[P];\n\ntype SuccessStatusCode =\n  | 200\n  | 201\n  | 202\n  | 203\n  | 204\n  | 205\n  | 206\n  | 207\n  | 208\n  | 226;\n\ntype RenameFields<T> = {\n  [K in keyof T as K extends \"trDataset\"\n    ? \"datasetId\"\n    : K extends \"trOrganization\"\n      ? \"organizationId\"\n      : K extends \"requestBody\"\n        ? \"data\"\n        : K]: T[K];\n};\n\ntype RequestParams<\n  P extends Paths,\n  M extends MethodsForPath<P>,\n> = $OpenApiTs[P][M] extends { req: infer R } ? RenameFields<R> : never;\n\nexport type RequestBody<\n  P extends Paths,\n  M extends MethodsForPath<P>,\n> = $OpenApiTs[P][M] extends {\n  req: {\n    requestBody: infer R;\n  };\n}\n  ? R\n  : never;\n\nexport type ResponseBody<\n  P extends Paths,\n  M extends MethodsForPath<P>,\n> = $OpenApiTs[P][M] extends { res: infer R }\n  ? R extends { [K in SuccessStatusCode]?: any }\n    ? R[Extract<keyof R, SuccessStatusCode>]\n    : never\n  : never;\n\ntype EjectOption = \"eject\" | false;\n\ntype EjectedRequestBase<T> = {\n  datasetId?: string;\n  organizationId?: string;\n  data?: T;\n  [key: string]: any;\n};\n\nfunction camelcaseToSnakeCase(str: string) {\n  return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\n// Convert camelcase to snake case and replace\nfunction replacePathParams(\n  path: string,\n  params: Record<string, string>,\n): string {\n  for (const [key, value] of Object.entries(params)) {\n    path = path.replaceAll(`{${camelcaseToSnakeCase(key)}}`, value);\n  }\n  return path;\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null;\n}\n\ninterface TrieveOpts {\n  apiKey?: string;\n  baseUrl: string;\n  debug?: boolean;\n  organizationId?: string;\n  omitCredentials?: boolean;\n}\n\nexport class TrieveFetchClient {\n  apiKey?: string;\n  baseUrl: string;\n  debug: boolean = false;\n  organizationId?: string;\n  omitCredentials?: boolean;\n\n  constructor(opts: TrieveOpts) {\n    this.apiKey = opts.apiKey;\n    this.baseUrl = opts.baseUrl;\n    this.debug = opts.debug || false;\n    this.organizationId = opts.organizationId;\n    this.omitCredentials = opts.omitCredentials;\n  }\n\n  async fetch<\n    EJECT extends EjectOption = false,\n    URQ = EJECT extends \"eject\" ? EjectedRequestBase<any> : never,\n    URE = EJECT extends \"eject\" ? unknown : never,\n    P extends Paths = Paths,\n    M extends EJECT extends false\n      ? MethodsForPath<P> & HttpMethod\n      : any = MethodsForPath<P> & HttpMethod,\n  >(\n    path: P,\n    method: EJECT extends false ? M : HttpMethod,\n    params?: EJECT extends false ? RequestParams<P, M> : URQ,\n    signal?: AbortSignal,\n    parseHeaders?: (headers: Record<string, string>) => void,\n  ): Promise<EJECT extends false ? ResponseBody<P, M> : URE> {\n    let requestBody: unknown;\n\n    const headers: Record<string, string> = {\n      \"Content-Type\": \"application/json\",\n    };\n    if (this.apiKey) {\n      headers[\"Authorization\"] = `Bearer ${this.apiKey}`;\n    }\n\n    const pathParams: Record<string, string> = {};\n\n    if (isObject(params)) {\n      if (\"data\" in params && isObject(params.data)) {\n        requestBody = params.data;\n      }\n\n      for (const [key, value] of Object.entries(params)) {\n        if (key === \"datasetId\" && typeof value === \"string\") {\n          headers[\"TR-Dataset\"] = value;\n        } else if (key === \"organizationId\" && typeof value === \"string\") {\n          headers[\"TR-Organization\"] = value;\n        } else if (key === \"xApiVersion\" && typeof value === \"string\") {\n          headers[\"X-API-VERSION\"] = value;\n        } else if (key === \"xShopifyAuthorization\" && typeof value === \"string\") {\n          headers[\"X-Shopify-Authorization\"] = value;\n        }\n        // Check if the key is in the path as path params\n        const snakedKey = camelcaseToSnakeCase(key);\n        if (\n          path.includes(`{${snakedKey}}`) &&\n          (typeof value === \"string\" || typeof value === \"number\")\n        ) {\n          pathParams[key] = value.toLocaleString();\n        }\n      }\n\n      if (!headers[\"TR-Organization\"] && this.organizationId) {\n        headers[\"TR-Organization\"] = this.organizationId;\n      }\n    }\n\n    const updatedPath = replacePathParams(path, pathParams);\n\n    if (this.debug) {\n      console.info(\"Sending request: \", {\n        url: this.baseUrl + updatedPath,\n        method,\n        headers,\n        body: requestBody,\n      });\n    }\n\n    const response = await fetch(this.baseUrl + updatedPath, {\n      credentials: this.omitCredentials ? \"omit\" : \"include\",\n      method,\n      headers: headers,\n      body: requestBody ? JSON.stringify(requestBody) : undefined,\n      signal: signal,\n    });\n\n    if (!response.ok) {\n      throw new Error(\n        `HTTP error! status: ${await response.text()} \\nPayload ${JSON.stringify(\n          requestBody,\n        )} \\nroute: ${method} ${this.baseUrl + updatedPath}`,\n      );\n    }\n    let responseObject: unknown;\n\n    try {\n      if (parseHeaders) {\n        parseHeaders(Object.fromEntries(response.headers.entries()));\n      }\n      responseObject = await response.clone().json();\n    } catch {\n      if (parseHeaders) {\n        parseHeaders(Object.fromEntries(response.headers.entries()));\n      }\n      responseObject = await response.clone().text();\n    }\n    if (this.debug) {\n      console.info(\"Response: \", responseObject);\n    }\n    return responseObject as unknown as EJECT extends false\n      ? ResponseBody<P, M>\n      : URE;\n  }\n}\n", "/**\n * This includes all the functions you can use to communicate with our chunks API\n *\n * @module Chunk Methods\n */\n\nimport {\n  AutocompleteReqPayload,\n  ChunkHtmlContentReqPayload,\n  CountChunksReqPayload,\n  CreateChunkReqPayloadEnum,\n  DeleteChunkByTrackingIdData,\n  DeleteChunkData,\n  GenerateOffChunksReqPayload,\n  GetChunkByIdData,\n  GetChunkByTrackingIdData,\n  GetChunksData,\n  GetTrackingChunksData,\n  RecommendChunksRequest,\n  RecommendChunksResponseBody,\n  ScrollChunksReqPayload,\n  SearchChunksReqPayload,\n  SearchResponseBody,\n  SuggestedQueriesReqPayload,\n  UpdateChunkByTrackingIdData,\n  UpdateChunkReqPayload,\n  BulkDeleteChunkPayload\n} from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\nimport { getCleanFetch } from \"../message\";\n\n/**\n * Function that provides the primary search functionality for the API. It can be used to search for chunks by semantic similarity, full-text similarity, or a combination of both. Results\u2019 chunk_html values will be modified with <b><mark> tags for sub-sentence highlighting.\n * \n * Example:\n * ```js\n *const data = await trieve.search({\n  page: 1,\n  page_size: 10,\n  query: \"Some search query\",\n });\n * ```\n */\nexport async function search(\n  /** @hidden */\n  this: TrieveSDK,\n  props: SearchChunksReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n  return this.trieve.fetch(\n    \"/api/chunk/search\",\n    \"post\",\n    {\n      xApiVersion: \"V2\",\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n    parseHeaders,\n  ) as Promise<SearchResponseBody>;\n}\n\n/**\n * Function that create new chunk(s). If the chunk has the same tracking_id as an existing chunk, the request will fail. Once a chunk is created, it can be searched for using the search endpoint. If uploading in bulk, the maximum amount of chunks that can be uploaded at once is 120 chunks. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.createChunk({\n  chunk_html: \"<p>Some HTML content</p>\",\n  metadata: {\n    key1: \"value1\",\n    key2: \"value2\",\n  },\n});\n * ```\n */\nexport async function createChunk(\n  /** @hidden */\n  this: TrieveSDK,\n  props: CreateChunkReqPayloadEnum,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function provides the primary autocomplete functionality for the API. This prioritize prefix matching with semantic or full-text search.\n * \n * Example:\n * ```js\n *const data = await trieve.autocomplete({\n  page: 1,\n  page_size: 10,\n  query: \"Some search query\",\n  search_type: \"semantic\",\n});\n * ```\n */\nexport async function autocomplete(\n  /** @hidden */\n  this: TrieveSDK,\n  props: AutocompleteReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/autocomplete\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n      xApiVersion: \"V2\",\n    },\n    signal,\n    parseHeaders,\n  ) as Promise<SearchResponseBody>;\n}\n\n/**\n * Function that allows you to recommendations of chunks similar to the positive samples in the request and dissimilar to the negative.\n * \n * Example:\n * ```js\n *const data = await trieve.getRecommendedChunks({\n  positive_chunk_ids: [\n    \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n  ],\n});\n * ```\n */\nexport async function getRecommendedChunks(\n  /** @hidden */\n  this: TrieveSDK,\n  props: RecommendChunksRequest,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/recommend\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n      xApiVersion: \"V2\",\n    },\n    signal,\n  ) as Promise<RecommendChunksResponseBody>;\n}\n\n/**\n * This function exists as an alternative to the topic+message resource pattern where our Trieve handles chat memory. With this endpoint, the user is responsible for providing the context window and the prompt and the conversation is ephemeral.\n * \n * Example:\n * ```js\n *const data = await trieve.ragOnChunk({\n  chunk_ids: [\"d290f1ee-6c54-4b01-90e6-d701748f0851\"],\n  prev_messages: [\n    {\n      content: \"How do I setup RAG with Trieve?\",\n      role: \"user\",\n    },\n  ],\n  prompt:\n    \"Respond to the instruction and include the doc numbers that you used in square brackets at the end of the sentences that you used the docs for:\",\n  stream_response: true,\n});\n * ```\n */\nexport async function ragOnChunk(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GenerateOffChunksReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/generate\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * This function is just like ragOnChunk but it returns a reader to parse the stream easier.\n * This function exists as an alternative to the topic+message resource pattern where our Trieve handles chat memory. With this endpoint, the user is responsible for providing the context window and the prompt and the conversation is ephemeral.\n * \n * \n * Example:\n * ```js\n *const reader = await trieve.ragOnChunkReader({\n  chunk_ids: [\"d290f1ee-6c54-4b01-90e6-d701748f0851\"],\n  prev_messages: [\n    {\n      content: \"How do I setup RAG with Trieve?\",\n      role: \"user\",\n    },\n  ],\n  prompt:\n    \"Respond to the instruction and include the doc numbers that you used in square brackets at the end of the sentences that you used the docs for:\",\n  stream_response: true,\n});\n * ```\n */\nexport async function ragOnChunkReader(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GenerateOffChunksReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  const response = await fetch(this.trieve.baseUrl + \"/api/chunk/generate\", {\n    method: \"post\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(props),\n    signal,\n  });\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  return reader;\n}\n\n/**\n * This function is just like ragOnChunk but it returns a reader to parse the stream easier.\n * This function exists as an alternative to the topic+message resource pattern where our Trieve handles chat memory. With this endpoint, the user is responsible for providing the context window and the prompt and the conversation is ephemeral.\n * \n * \n * Example:\n * ```js\n *const { reader, queryId } = await trieve.ragOnChunkReader({\n  chunk_ids: [\"d290f1ee-6c54-4b01-90e6-d701748f0851\"],\n  prev_messages: [\n    {\n      content: \"How do I setup RAG with Trieve?\",\n      role: \"user\",\n    },\n  ],\n  prompt:\n    \"Respond to the instruction and include the doc numbers that you used in square brackets at the end of the sentences that you used the docs for:\",\n  stream_response: true,\n});\n * ```\n */\nexport async function ragOnChunkReaderWithQueryId(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GenerateOffChunksReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void,\n  overrideFetch: boolean = false\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  let fetchToUse = fetch;\n  if (overrideFetch) {\n    const cleanFetch = getCleanFetch();\n    fetchToUse = cleanFetch as typeof fetch ?? fetch;\n  }\n\n  const response = await fetchToUse(\n    this.trieve.baseUrl + \"/api/chunk/generate\",\n    {\n      method: \"post\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"TR-Dataset\": this.datasetId,\n        Authorization: `Bearer ${this.trieve.apiKey}`,\n      },\n      body: JSON.stringify(props),\n      signal,\n    }\n  );\n\n  if (parseHeaders) {\n    parseHeaders(Object.fromEntries(response.headers.entries()));\n  }\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  const queryId = response.headers.get(\"TR-QueryID\");\n\n  return {\n    reader,\n    queryId,\n  };\n}\n\n/**\n * This function will generate 3 suggested queries based off a hybrid search using RAG with the query provided in the request body and return them as a JSON object.\n * \n * Example:\n * ```js\n *const data = await trieve.suggestedQueries({\n  query: \"Some search query\",\n});\n * ```\n */\nexport async function suggestedQueries(\n  /** @hidden */\n  this: TrieveSDK,\n  props: SuggestedQueriesReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/suggestions\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * This function can be used to determine the number of chunk results that match a search query including score threshold and filters. It may be high latency for large limits. There is a dataset configuration imposed restriction on the maximum limit value (default 10,000) which is used to prevent DDOS attacks. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.countChunksAboveThreshold({\n  query: \"Some search query\",\n  score_threshold: 0.5,\n  search_type: \"semantic\",\n});\n * ```\n */\nexport async function countChunksAboveThreshold(\n  /** @hidden */\n  this: TrieveSDK,\n  props: CountChunksReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/count\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Get paginated chunks from your dataset with filters and custom sorting. If sort by is not specified, the results will sort by the id\u2019s of the chunks in ascending order. Sort by and offset_chunk_id cannot be used together; if you want to scroll with a sort by then you need to use a must_not filter with the ids you have already seen. There is a limit of 1000 id\u2019s in a must_not filter at a time.\n * \n * Example:\n * ```js\n *const data = await trieve.scroll({\n  page_size: 10\n});\n * ```\n */\nexport async function scroll(\n  /** @hidden */\n  this: TrieveSDK,\n  props: ScrollChunksReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunks/scroll\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Update a chunk. If you try to change the tracking_id of the chunk to have the same tracking_id as an existing chunk, the request will fail. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.autocomplete({\n  chunk_html: \"<p>Some HTML content</p>\",\n  chunk_id: \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n});\n * ```\n */\nexport async function updateChunk(\n  /** @hidden */\n  this: TrieveSDK,\n  props: UpdateChunkReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk\",\n    \"put\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Update a chunk by tracking_id. This is useful for when you are coordinating with an external system and want to use the tracking_id to identify the chunk. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.updateChunkByTrackingId({\n  chunk_html: \"New text\",\n  tracking_id: \"128ABC\",\n});\n * ```\n */\nexport async function updateChunkByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  props: UpdateChunkByTrackingIdData,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/tracking_id/update\",\n    \"put\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Get a singular chunk by tracking_id. This is useful for when you are coordinating with an external system and want to use your own id as the primary reference for a chunk.\n * \n * Example:\n * ```js\n *const data = await trieve.getChunkByTrackingId({\n  tracking_id: \"128ABC\",\n});\n * ```\n */\nexport async function getChunkByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  props: Omit<GetChunkByTrackingIdData, \"trDataset\">,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/tracking_id/{tracking_id}\",\n    \"get\",\n    {\n      trackingId: props.trackingId,\n      datasetId: this.datasetId,\n      xApiVersion: props.xApiVersion ?? \"V2\",\n    },\n    signal,\n  );\n}\n\n/**\n * Delete a chunk by tracking_id. This is useful for when you are coordinating with an external system and want to use the tracking_id to identify the chunk. If deleting a root chunk which has a collision, the most recently created collision will become a new root chunk. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.deleteChunkByTrackingId({\n  tracking_id: \"128ABC\",\n});\n * ```\n */\nexport async function deleteChunkByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  props: Omit<DeleteChunkByTrackingIdData, \"trDataset\">,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/tracking_id/{tracking_id}\",\n    \"delete\",\n    {\n      trackingId: props.trackingId,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Get a singular chunk by id.\n * \n * Example:\n * ```js\n *const data = await trieve.getChunkById({\n  chunkId: \"128ABC\",\n});\n * ```\n */\nexport async function getChunkById(\n  /** @hidden */\n  this: TrieveSDK,\n  props: Omit<GetChunkByIdData, \"trDataset\">,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/{chunk_id}\",\n    \"get\",\n    {\n      chunkId: props.chunkId,\n      xApiVersion: props.xApiVersion ?? \"V2\",\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Delete a singular chunk by id.\n * \n * Example:\n * ```js\n *const data = await trieve.deleteChunkById({\n  chunkId: \"128ABC\",\n});\n * ```\n */\nexport async function deleteChunkById(\n  /** @hidden */\n  this: TrieveSDK,\n  props: DeleteChunkData,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk/{chunk_id}\",\n    \"delete\",\n    {\n      chunkId: props.chunkId,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\nexport async function bulkDeleteChunks(\n  /** @hidden */\n  this: TrieveSDK,\n  props: BulkDeleteChunkPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\"/api/chunk\", \"delete\", {\n    data: props,\n    datasetId: this.datasetId,\n  }, signal);\n}\n\n/**\n * Get multiple chunks by multiple ids.\n * \n * Example:\n * ```js\n *const data = await trieve.getChunksByIds( {\n  ids: [\"3c90c3cc-0d44-4b50-8888-8dd25736052a\"],\n});\n * ```\n */\nexport async function getChunksByIds(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GetChunksData,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunks\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Get multiple chunks by multiple tracking ids.\n * \n * Example:\n * ```js\n *const data = await trieve.getChunksByIds( {\n  tracking_ids: [\"3c90c3cc-0d44-4b50-8888-8dd25736052a\"],\n});\n * ```\n */\nexport async function getChunksByTrackingIds(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GetTrackingChunksData,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunks/tracking\",\n    \"post\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that splits an html string into chunks.\n * The html string will be split into chunks based on the number of characters in the string and header tags.\n *\n * Example:\n * ```js\n *const data = await trieve.splitChunkHtml({\n *    chunk_html: \"<p>Some HTML content</p>\",\n *});\n * ```\n */\nexport async function splitChunkHtml(\n  /** @hidden */\n  this: TrieveSDK,\n  props: ChunkHtmlContentReqPayload,\n  signal?: AbortSignal,\n) {\n  return this.trieve.fetch(\n    \"/api/chunk/split\",\n    \"post\",\n    {\n      data: props,\n    },\n    signal,\n  );\n}\n", "/**\n * This includes all the functions you can use to communicate with our messages API\n *\n * @module Messages Methods\n */\nimport {\n  CreateMessageReqPayload,\n  EditImageReqPayload,\n  EditMessageReqPayload,\n  GenerateMessageCompletionsReqPayload,\n  GetAllTopicMessagesData,\n  GetMessageByIdData,\n  GetToolFunctionParamsReqPayload,\n  RegenerateMessageReqPayload,\n  TranscribeAudioReqPayload,\n} from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\n\n/**\n * Create a message. Messages are attached to topics in order to coordinate memory of gen-AI chat sessions.Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.createMessage({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  new_message_content: \"a new message\"\n});\n * ```\n */\nexport async function createMessage(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CreateMessageReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n    parseHeaders\n  );\n}\n\nexport const getCleanFetch = () => {\n  const iframe = document.createElement(\"iframe\");\n  iframe.style.display = \"none\";\n  document.body.appendChild(iframe);\n  const cleanFetch = iframe.contentWindow?.fetch.bind(window);\n  document.body.removeChild(iframe);\n  return cleanFetch;\n};\n\n/**\n * Create a message as a stream and returns a reader. Messages are attached to topics in order to coordinate memory of gen-AI chat sessions.Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const reader = await trieve.createMessageReader({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  new_message_content: \"a new message\"\n});\n * ```\n */\nexport async function createMessageReader(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CreateMessageReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void,\n  overrideFetch: boolean = false\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  let fetchToUse = fetch;\n  if (overrideFetch) {\n    const cleanFetch = getCleanFetch();\n    fetchToUse = cleanFetch as typeof fetch ?? fetch;\n  }\n\n  const response = await fetchToUse(this.trieve.baseUrl + \"/api/message\", {\n    method: \"post\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(data),\n    signal,\n  });\n\n  if (parseHeaders) {\n    parseHeaders(Object.fromEntries(response.headers.entries()));\n  }\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  return reader;\n}\n\n/**\n * Create a message as a stream and returns a reader with the message id. Messages are attached to topics in order to coordinate memory of gen-AI chat sessions.Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const { reader, queryId } = await trieve.createMessageReader({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  new_message_content: \"a new message\"\n});\n * ```\n */\nexport async function createMessageReaderWithQueryId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CreateMessageReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void,\n  overrideFetch: boolean = false,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  let fetchToUse = fetch;\n  if (overrideFetch) {\n    const cleanFetch = getCleanFetch();\n    fetchToUse = cleanFetch as typeof fetch ?? fetch;\n  }\n\n  const response = await fetchToUse(this.trieve.baseUrl + \"/api/message\", {\n    method: \"post\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(data),\n    signal,\n  });\n\n  if (parseHeaders) {\n    parseHeaders(Object.fromEntries(response.headers.entries()));\n  }\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  const queryId = response.headers.get(\"TR-QueryID\");\n\n  return {\n    reader,\n    queryId,\n  };\n}\n\n/**\n * Edit message which exists within the topic\u2019s chat history. This will delete the message and replace it with a new message. The new message will be generated by the AI based on the new content provided in the request body. The response will include Chunks first on the stream if the topic is using RAG. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.editMessage({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  new_message_content: \"a new message\",\n  message_sort_order: 1\n});\n * ```\n */\nexport async function editMessage(\n  /** @hidden */\n  this: TrieveSDK,\n  data: EditMessageReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Edit message which exists within the topic\u2019s chat history as a stream and returns a reader. This will delete the message and replace it with a new message. The new message will be generated by the AI based on the new content provided in the request body. The response will include Chunks first on the stream if the topic is using RAG. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const reader = await trieve.editMessageReader({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  new_message_content: \"a new message\",\n  message_sort_order: 1\n});\n * ```\n */\nexport async function editMessageReader(\n  /** @hidden */\n  this: TrieveSDK,\n  data: EditMessageReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  const response = await fetch(this.trieve.baseUrl + \"/api/message\", {\n    method: \"put\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(data),\n    signal,\n  });\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  return reader;\n}\n\n/**\n * Edit message which exists within the topic\u2019s chat history as a stream and returns a reader along with the queryID. This will delete the message and replace it with a new message. The new message will be generated by the AI based on the new content provided in the request body. The response will include Chunks first on the stream if the topic is using RAG. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization. The queryID is used for adding tracking events to the message\n * \n * Example:\n * ```js\n *const { reader, queryId } = await trieve.editMessageReader({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  new_message_content: \"a new message\",\n  message_sort_order: 1\n});\n * ```\n */\nexport async function editMessageReaderWithQueryId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: EditMessageReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  const response = await fetch(this.trieve.baseUrl + \"/api/message\", {\n    method: \"put\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(data),\n    signal,\n  });\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  const queryId = response.headers.get(\"TR-QueryID\");\n\n  return {\n    reader,\n    queryId,\n  };\n}\n\n/**\n * Regenerate the assistant response to the last user message of a topic. This will delete the last message and replace it with a new message. The response will include Chunks first on the stream if the topic is using RAG. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.regenerateMessage({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function regenerateMessage(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RegenerateMessageReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message\",\n    \"delete\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Regenerate the assistant response to the last user message of a topic as a stream and returns a reader. This will delete the last message and replace it with a new message. The response will include Chunks first on the stream if the topic is using RAG. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const reader = await trieve.regenerateMessageReader({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function regenerateMessageReader(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RegenerateMessageReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  const response = await fetch(this.trieve.baseUrl + \"/api/message\", {\n    method: \"delete\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(data),\n    signal,\n  });\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  return reader;\n}\n\n/**\n * Regenerate the assistant response to the last user message of a topic as a stream and returns a reader. This will delete the last message and replace it with a new message. The response will include Chunks first on the stream if the topic is using RAG. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const { reader, queryId } = await trieve.regenerateMessageReader({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function regenerateMessageReaderWithQueryId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RegenerateMessageReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  const response = await fetch(this.trieve.baseUrl + \"/api/message\", {\n    method: \"delete\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"TR-Dataset\": this.datasetId,\n      Authorization: `Bearer ${this.trieve.apiKey}`,\n    },\n    body: JSON.stringify(data),\n    signal,\n  });\n\n  const reader = response.body?.getReader();\n\n  if (!reader) {\n    throw new Error(\"Failed to get reader from response body\");\n  }\n\n  const queryId = response.headers.get(\"TR-QueryID\");\n\n  return {\n    reader,\n    queryId,\n  };\n}\n\n/**\n * Get all messages for a given topic. If the topic is a RAG topic then the response will include Chunks first on each message. The structure will look like [chunks]||mesage. See docs.trieve.ai for more information.\n * \n * Example:\n * ```js\n *const data = await trieve.getAllMessagesForTopic({\n  messagesTopicId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function getAllMessagesForTopic(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetAllTopicMessagesData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/messages/{messages_topic_id}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Quickly get the full object for a given message. From the message, you can get the topic and all messages which exist on that topic.\n * \n * Example:\n * ```js\n *const data = await trieve.getMessageById({\n  messageId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function getMessageById(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetMessageByIdData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message/{message_id}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\nexport async function getToolCallFunctionParams(\n  /** @hidden */\n  this: TrieveSDK,\n  data: GetToolFunctionParamsReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message/get_tool_function_params\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n    parseHeaders\n  );\n}\n\nexport async function editImage(\n  this: TrieveSDK,\n  data: EditImageReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message/edit_image\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\nexport async function transcribeAudio(\n  this: TrieveSDK,\n  data: TranscribeAudioReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message/transcribe_audio\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\nexport async function generateMessageCompletions(\n  this: TrieveSDK,\n  data: GenerateMessageCompletionsReqPayload,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/message/generate_message_completions\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    }\n  );\n}\n", "/**\n * This includes all the functions you can use to communicate with our groups API\n *\n * @module Group Methods\n */\n\nimport {\n  AddChunkToGroupReqPayload,\n  AutocompleteSearchOverGroupsReqPayload,\n  CreateChunkGroupReqPayloadEnum,\n  DeleteChunkGroupData,\n  DeleteGroupByTrackingIdData,\n  GetChunkGroupData,\n  GetChunksInGroupByTrackingIdData,\n  GetChunksInGroupData,\n  GetGroupByTrackingIdData,\n  GetGroupsForChunksReqPayload,\n  GetGroupsForDatasetData,\n  RecommendGroupsReqPayload,\n  RecommendGroupsResponseBody,\n  RemoveChunkFromGroupReqPayload,\n  SearchOverGroupsReqPayload,\n  SearchOverGroupsResponseBody,\n  SearchWithinGroupReqPayload,\n  SearchWithinGroupResponseBody,\n  UpdateChunkGroupReqPayload,\n} from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\n\n/**\n * Create new chunk_group(s). This is a way to group chunks together. If you try to create a chunk_group with the same tracking_id as an existing chunk_group, this operation will fail. Only 1000 chunk groups can be created at a time. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.createChunkGroup({\n  description: \"All versions and colorways of the oversized t-shirt\",\n  metadata: {\n    color: \"black\",\n    size: \"large\",\n  },\n  name: \"Versions of Oversized T-Shirt\",\n  tag_set: [\"tshirt\", \"oversized\", \"clothing\"],\n  tracking_id: \"SNOVERSIZEDTSHIRT\",\n  upsert_by_tracking_id: false,\n});\n * ```\n */\nexport async function createChunkGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<CreateChunkGroupReqPayloadEnum, \"datasetId\">\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\"/api/chunk_group\", \"post\", {\n    data,\n    datasetId: this.datasetId,\n  });\n}\n\n/**\n * This function allows you to get groups as results instead of chunks. Each group returned will have the matching chunks sorted by similarity within the group. This is useful for when you want to get groups of chunks which are similar to the search query. If choosing hybrid search, the results will be re-ranked using scores from a cross encoder model. Compatible with semantic, fulltext, or hybrid search modes.\n * \n * Example:\n * ```js\n *const data = await trieve.searchOverGroups({\n  query: \"a query\",\n});\n * ```\n */\nexport async function searchOverGroups(\n  /** @hidden */\n  this: TrieveSDK,\n  data: SearchOverGroupsReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/group_oriented_search\",\n    \"post\",\n    {\n      data,\n      xApiVersion: \"V2\",\n      datasetId: this.datasetId,\n    },\n    signal,\n    parseHeaders\n  ) as Promise<SearchOverGroupsResponseBody>;\n}\n\n/**\n * This function allows you to search only within a group. This is useful for when you only want search results to contain chunks which are members of a specific group. If choosing hybrid search, the results will be re-ranked using scores from a cross encoder model.\n * \n * Example:\n * ```js\n *const data = await trieve.searchInGroup({\n  query: \"a query\",\n});\n * ```\n */\nexport async function searchInGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: SearchWithinGroupReqPayload,\n  signal?: AbortSignal,\n  parseHeaders?: (headers: Record<string, string>) => void\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/search\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n      xApiVersion: \"V2\",\n    },\n    signal,\n    parseHeaders\n  ) as Promise<SearchWithinGroupResponseBody>;\n}\n\n/**\n * Function to get recommended groups. This route will return groups which are similar to the groups in the request body. You must provide at least one positive group id or group tracking id.\n * \n * Example:\n * ```js\n *const data = await trieve.recommendedGroups({\n  positive_group_ids: [\"3c90c3cc-0d44-4b50-8888-8dd25736052a\"],\n});\n * ```\n */\nexport async function recommendedGroups(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RecommendGroupsReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/recommend\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n      xApiVersion: \"V2\",\n    },\n    signal\n  ) as Promise<RecommendGroupsResponseBody>;\n}\n\n/**\n * Update a chunk_group. One of group_id or tracking_id must be provided. If you try to change the tracking_id to one that already exists, this operation will fail. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.updateGroup({\n  group_id: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function updateGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: UpdateChunkGroupReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Add a chunk to a group. One of chunk_id or chunk_tracking_id must be provided. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.addChunkToGroup({\n  chunk_id: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function addChunkToGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: AddChunkToGroupReqPayload & { group_id: string },\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/chunk/{group_id}\",\n    \"post\",\n    {\n      data,\n      groupId: data.group_id,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Remove a chunk from a group. Auth\u2019ed user or api key must be an admin or owner of the dataset\u2019s organization to remove a chunk from a group.\n * \n * Example:\n * ```js\n *const data = await trieve.removeChunkFromGroup({\n  chunk_id: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n  groupId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function removeChunkFromGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RemoveChunkFromGroupReqPayload & { group_id: string },\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/chunk/{group_id}\",\n    \"delete\",\n    {\n      data,\n      groupId: data.group_id,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Function to get the groups that a chunk is in.\n * \n * Example:\n * ```js\n *const data = await trieve.getGroupsForChunks({\n  chunk_ids: [\"3c90c3cc-0d44-4b50-8888-8dd25736052a\"],\n});\n * ```\n */\nexport async function getGroupsForChunks(\n  /** @hidden */\n  this: TrieveSDK,\n  data: GetGroupsForChunksReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/chunks\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Function to get all chunks for a group. The response is paginated, with each page containing 10 chunks. Support for custom page size is coming soon. Page is 1-indexed.\n * \n * Example:\n * ```js\n *const data = await trieve.getChunksGroupByTrackingId({\n  page: 1,\n  groupTrackingId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function getChunksGroupByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetChunksInGroupByTrackingIdData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/tracking_id/{group_tracking_id}/{page}\",\n    \"get\",\n    {\n      ...data,\n      xApiVersion: data.xApiVersion || \"V2\",\n\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Fetch the group with the given tracking id. get_group_by_tracking_id\n * \n * Example:\n * ```js\n *const data = await trieve.getGroupByTrackingId({\n  trackingId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function getGroupByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetGroupByTrackingIdData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/tracking_id/{tracking_id}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Add a chunk to a group by tracking id. One of chunk_id or chunk_tracking_id must be provided. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.addChunkToGroupByTrackingId({\n  tracking_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n  chunk_tracking_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function addChunkToGroupByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: AddChunkToGroupReqPayload & { tracking_id: string },\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/tracking_id/{tracking_id}\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n      trackingId: data.tracking_id,\n    },\n    signal\n  );\n}\n\n/**\n * Delete a chunk_group with the given tracking id. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.deleteGroupByTrackingId({\n  tracking_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function deleteGroupByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  data: DeleteGroupByTrackingIdData & { tracking_id: string },\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/tracking_id/{tracking_id}\",\n    \"delete\",\n    {\n      ...data,\n      trackingId: data.tracking_id,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Fetch the group with the given id. get_group\n * \n * Example:\n * ```js\n *const data = await trieve.getGroup({\n  groupId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function getGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetChunkGroupData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/{group_id}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * This will delete a chunk_group. If you set delete_chunks to true, it will also delete the chunks within the group. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.deleteGroup({\n  groupId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function deleteGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: DeleteChunkGroupData,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/{group_id}\",\n    \"delete\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Get all chunks for a group. The response is paginated, with each page containing 10 chunks. Page is 1-indexed.\n * \n * Example:\n * ```js\n *const data = await trieve.getChunksInGroup({\n  groupId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  page: 1\n});\n * ```\n */\nexport async function getChunksInGroup(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetChunksInGroupData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/{group_id}/{page}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Fetch the groups which belong to a dataset specified by its id.\n * \n * Example:\n * ```js\n *const data = await trieve.getGroupsForDataset({\n  page: 1\n});\n * ```\n */\nexport async function getGroupsForDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<Omit<GetGroupsForDatasetData, \"datasetId\">, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/dataset/groups/{dataset_id}/{page}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Provides autocomplete suggestions for group-oriented searches. This function returns suggested completions based on partial queries that can be used to search over groups. Useful for implementing search-as-you-type functionality for group searches.\n *\n * @deprecated Use groupOrientedAutocomplete instead (correct spelling)\n *\n * Example:\n * ```js\n * const data = await trieve.groupOrientedAutcomplete({\n *   query: \"partial search ter\",\n *   size: 10,\n * });\n * ```\n */\nexport async function groupOrientedAutcomplete(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<AutocompleteSearchOverGroupsReqPayload, \"datasetId\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/group_oriented_autocomplete\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Provides autocomplete suggestions for group-oriented searches. This function returns suggested completions based on partial queries that can be used to search over groups. Useful for implementing search-as-you-type functionality for group searches.\n *\n * Example:\n * ```js\n * const data = await trieve.groupOrientedAutcomplete({\n *   query: \"partial search ter\",\n *   size: 10,\n * });\n * ```\n */\nexport async function groupOrientedAutocomplete(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<AutocompleteSearchOverGroupsReqPayload, \"datasetId\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/chunk_group/group_oriented_autocomplete\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n", "/**\n * This includes all the functions you can use to communicate with our analytics API\n *\n * @module Analytics Methods\n */\n\nimport {\n  AnalyticsQuery,\n  ClusterAnalytics,\n  ComponentAnalytics,\n  CTRAnalytics,\n  CTRDataRequestBody,\n  EventTypes,\n  GetEventsRequestBody,\n  GetTopDatasetsRequestBody,\n  RAGAnalytics,\n  RateQueryRequest,\n  RecommendationAnalytics,\n  SearchAnalytics,\n} from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\n\n/**\n * Function that allows you to view the CTR analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getCTRAnalytics({\n  filter: {\n    date_range: {\n      gt: \"2021-01-01 00:00:00.000\",\n      gte: \"2021-01-01 00:00:00.000\",\n      lt: \"2021-01-01 00:00:00.000\",\n      lte: \"2021-01-01 00:00:00.000\"\n    },\n    search_method: \"fulltext\",\n    search_type: \"search\"\n  },\n  type: \"search_ctr_metrics\"\n});\n * ```\n */\nexport async function getCTRAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CTRAnalytics,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/analytics/events/ctr\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you too send CTR data to the system.\n * \n * Example:\n * ```js\n *const data = await trieve.sendCTRAnalytics({\n  clicked_chunk_id: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n  ctr_type: \"search\",\n  position: 123,\n  request_id: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function sendCTRAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CTRDataRequestBody,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/analytics/ctr\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to send analytics events to the system.\n *\n * Example:\n * ```js\n * const data = await trieve.sendAnalyticsEvent({\n *  event_type: \"view\",\n * metadata: {\n *    \"test\": \"test\"\n * },\n * user_id: \"user1\"\n * });\n * ```\n */\nexport async function sendAnalyticsEvent(\n  /** @hidden */\n  this: TrieveSDK,\n  data: EventTypes,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/analytics/events\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to view the RAG analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getRagAnalytics({\n  filter: {\n    date_range: {\n      gt: \"2021-01-01 00:00:00.000\",\n      gte: \"2021-01-01 00:00:00.000\",\n      lt: \"2021-01-01 00:00:00.000\",\n      lte: \"2021-01-01 00:00:00.000\",\n    },\n    rag_type: \"chosen_chunks\",\n  },\n  page: 1,\n  sort_by: \"created_at\",\n  sort_order: \"desc\",\n  type: \"rag_queries\",\n});\n * ```\n */\nexport async function getRagAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RAGAnalytics,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/rag\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to view the recommendation analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getRecommendationAnalytics({\n  filter: {\n    date_range: {\n      gt: \"2021-01-01 00:00:00.000\",\n      gte: \"2021-01-01 00:00:00.000\",\n      lt: \"2021-01-01 00:00:00.000\",\n      lte: \"2021-01-01 00:00:00.000\",\n    },\n    recommendation_type: \"Chunk\",\n  },\n  page: 1,\n  threshold: 123,\n  type: \"low_confidence_recommendations\",\n});\n * ```\n */\nexport async function getRecommendationAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RecommendationAnalytics,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/recommendations\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to view the search analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getSearchAnalytics({\n  filter: {\n    date_range: {\n      gt: \"2021-01-01 00:00:00.000\",\n      gte: \"2021-01-01 00:00:00.000\",\n      lt: \"2021-01-01 00:00:00.000\",\n      lte: \"2021-01-01 00:00:00.000\",\n    },\n    search_method: \"fulltext\",\n    search_type: \"search\",\n  },\n  granularity: \"minute\",\n  type: \"latency_graph\",\n});\n * ```\n */\nexport async function getSearchAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: SearchAnalytics,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/search\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to view the cluster analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getClusterAnalytics({\n  filter: {\n    date_range: {\n      gt: \"2021-01-01 00:00:00.000\",\n      gte: \"2021-01-01 00:00:00.000\",\n      lt: \"2021-01-01 00:00:00.000\",\n      lte: \"2021-01-01 00:00:00.000\",\n    },\n  },\n  type: \"cluster_topics\",\n});\n * ```\n */\nexport async function getClusterAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: ClusterAnalytics,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/search/cluster\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/** \n * Function that allows you to view the component analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getComponentAnalytics({\n  filter: {\n    date_range: {\n      gt: \"2021-01-01 00:00:00.000\",\n      gte: \"2021-01-01 00:00:00.000\",\n      lt: \"2021-01-01 00:00:00.000\",\n      lte: \"2021-01-01 00:00:00.000\",\n    },\n  },\n  granularity: \"minute\",\n  type: \"total_unique_visitors\",\n});\n * ```\n */\nexport async function getComponentAnalytics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: ComponentAnalytics,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/events/component\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you  to rate a RAG query.\n * \n * Example:\n * ```js\n *const data = await trieve.rateRagQuery({\n  query_id: 123,\n  rating: 1,\n});\n * ```\n */\nexport async function rateRagQuery(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RateQueryRequest,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/rag\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you  to rate a search query.\n * \n * Example:\n * ```js\n *const data = await trieve.rateSearchQuery({\n  query_id: 123,\n  rating: 1,\n});\n * ```\n */\nexport async function rateSearchQuery(\n  /** @hidden */\n  this: TrieveSDK,\n  data: RateQueryRequest,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/analytics/search\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to fetch the top datasets for an organization\n * \n * Example:\n * ```js\n *const data = await trieve.getTopDatasets({\n  organizationId: 123,\n  type: \"search\"\n});\n * ```\n */\nexport async function getTopDatasets(\n  /** @hidden */\n  this: TrieveSDK,\n  data: GetTopDatasetsRequestBody & { organizationId: string },\n  signal?: AbortSignal,\n) {\n  return this.trieve.fetch(\n    \"/api/analytics/top\",\n    \"post\",\n    {\n      data,\n      organizationId: data.organizationId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to view the CTR analytics for a dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getAllAnalyticsEvents({\n  filter: {\n    \"date_range\": {\n      \"gt\": \"2021-08-10T00:00:00Z\",\n      \"lt\": \"2021-08-11T00:00:00Z\"\n    },\n    \"event_type\": \"view\",\n    \"is_conversion\": true,\n    \"metadata_filter\": \"path = \\\"value\\\"\",\n    \"user_id\": \"user1\"\n  },\n});\n * ```\n */\nexport async function getAllAnalyticsEvents(\n  /** @hidden */\n  this: TrieveSDK,\n  data: GetEventsRequestBody,\n  signal?: AbortSignal,\n) {\n  return await this.trieve.fetch(\n    \"/api/analytics/events/all\",\n    \"post\",\n    {\n      data,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to run a custom clickhouse query\n * \n * Example:\n * ```js\n *const data = await trieve.getAnalytics({\n  query: new AnalyticsQueryBuilder()\n    .select('event_type')\n    .from('events')\n    .where(AnalyticsQueryBuilder.and([\n      AnalyticsQueryBuilder.eq('event_type', 'view'),\n      AnalyticsQueryBuilder.eq('user_id', 'user1')\n    ]))\n});\n * ```\n */\nexport async function getAnalytics<T>(\n  /** @hidden */\n  this: TrieveSDK,\n  data: AnalyticsQuery,\n  signal?: AbortSignal,\n): Promise<T> {\n  return this.trieve.fetch(\n    \"/api/analytics\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId || \"\",\n    },\n    signal,\n  ) as Promise<T>;\n}\n", "/**\n * This includes all the functions you can use to communicate with our topics API\n *\n * @module Topic Methods\n */\nimport {\n  CreateTopicReqPayload,\n  DeleteTopicData2,\n  GetAllTopicsForOwnerIdData,\n  UpdateTopicReqPayload,\n  CloneTopicReqPayload,\n} from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\n\n/**\n * Create a new chat topic. Topics are attached to a owner_id\u2019s and act as a coordinator for conversation message history of gen-AI chat sessions. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.createTopic({\n  first_user_message: \"hello\",\n  name: \"Test\",\n  owner_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function createTopic(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CreateTopicReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/topic\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Clone a chat topic and all its messages to a new topic. Topics are attached to a owner_id\u2019s and act as a coordinator for conversation message history of gen-AI chat sessions. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.cloneTopic({\n  first_user_message: \"hello\",\n  name: \"Test\",\n  owner_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n});\n * ```\n */\nexport async function cloneTopic(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CloneTopicReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/topic/clone\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Update an existing chat topic. Currently, only the name of the topic can be updated. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.updateTopic({\n  topic_id: \"3c90c3cc-1d76-27198-8888-8dd25736052a\",\n  name: \"NewName\"\n});\n * ```\n */\nexport async function updateTopic(\n  /** @hidden */\n  this: TrieveSDK,\n  data: UpdateTopicReqPayload,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/topic\",\n    \"put\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Get all topics belonging to an arbitary owner_id. This is useful for managing message history and chat sessions. It is common to use a browser fingerprint or your user\u2019s id as the owner_id. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.getAllTopics({\n  ownerId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function getAllTopics(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetAllTopicsForOwnerIdData, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/topic/owner/{owner_id}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n\n/**\n * Delete an existing chat topic. When a topic is deleted, all associated chat messages are also deleted. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.deleteTopic({\n  topicId: \"3c90c3cc-1d76-27198-8888-8dd25736052a\"\n});\n * ```\n */\nexport async function deleteTopic(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<DeleteTopicData2, \"trDataset\">,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/topic/{topic_id}\",\n    \"delete\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n", "/**\n * This includes all the functions you can use to communicate with our file API\n *\n * @module File Methods\n */\n\nimport {\n  $OpenApiTs,\n  CreatePresignedUrlForCsvJsonlReqPayload,\n  DeleteFileHandlerData,\n  DeleteFileHandlerResponse,\n  FileDTO,\n  GetDatasetFilesAndGroupIdsHandlerData,\n  GetFileHandlerData,\n  GetFilesCursorHandlerData,\n  UploadFileReqPayload,\n} from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\n\n/**\n * Upload a file to S3 attached to the server. The file will be converted to HTML with tika and chunked algorithmically, images will be OCR\u2019ed with tesseract. The resulting chunks will be indexed and searchable. Optionally, you can only upload the file and manually create chunks associated to the file after. See docs.trieve.ai and/or contact us for more details and tips. Auth\u2019ed user must be an admin or owner of the dataset\u2019s organization to upload a file.\n * \n * Example:\n * ```js\n *const data = await trieve.uploadFile({\n    base64_file: \"base64_encoded_file\",\n    create_chunks: true,\n    description: \"This is an example file\",\n    file_mime_type: \"application/pdf\",\n    file_name: \"example.pdf\",\n    link: \"https://example.com\",\n    metadata: {\n      key1: \"value1\",\n      key2: \"value2\",\n    },\n  });\n * ```\n */\nexport async function uploadFile(\n  /** @hidden */\n  this: TrieveSDK,\n  data: UploadFileReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/file\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\nexport async function createPresignedUrlForCsvJsonl(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CreatePresignedUrlForCsvJsonlReqPayload,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/file/csv_or_jsonl\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Scroll through the files along with their groups in a dataset. This is useful for paginating through files. The cursor is used to fetch the next page of files. The page size is used to specify how many files to fetch per page. The default page size is 10.\n * \n * Example:\n * ```js\n  *const data = await trieve.getFilesForDataset({\n    cursor: \"a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8\",\n  });\n * ```\n */\nexport async function scrollFiles(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<Omit<GetFilesCursorHandlerData, \"datasetId\">, \"trDataset\">,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/dataset/scroll_files\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Get all files and their group ids which belong to a given dataset specified by the dataset_id parameter. 10 files and group ids are returned per page. This route may return the same file multiple times if the file is associated with multiple groups.\n * \n * Example:\n * ```js\n  *const data = await trieve.getFilesForDataset({\n    page:1,\n  });\n * ```\n */\nexport async function getFilesForDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<\n    Omit<GetDatasetFilesAndGroupIdsHandlerData, \"datasetId\">,\n    \"trDataset\"\n  >,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/dataset/files/{dataset_id}/{page}\",\n    \"get\",\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Get a signed s3 url corresponding to the file_id requested such that you can download the file.\n * \n * Example:\n * ```js\n *const data = await trieve.getFile({\n    fileId: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n  });\n * ```\n */\nexport async function getFile(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<GetFileHandlerData, \"trDataset\">,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return (await this.trieve.fetch(\n    `/api/file/{file_id}${\n      data.contentType\n        ? `?content_type=${encodeURIComponent(data.contentType)}`\n        : \"\"\n    }` as unknown as keyof $OpenApiTs,\n    \"get\" as unknown as never,\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  )) as FileDTO;\n}\n\n/**\n * Delete a file from S3 attached to the server based on its id. This will disassociate chunks from the file, but only delete them all together if you specify delete_chunks to be true. Auth\u2019ed user or api key must have an admin or owner role for the specified dataset\u2019s organization.\n * \n * Example:\n * ```js\n *const data = await trieve.deleteFile({\n    fileId: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n  });\n * ```\n */\nexport async function deleteFile(\n  /** @hidden */\n  this: TrieveSDK,\n  data: Omit<DeleteFileHandlerData, \"trDataset\">,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return (await this.trieve.fetch(\n    `/api/file/{file_id}${\n      data.deleteChunks ? `?delete_chunks=${data.deleteChunks}` : \"\"\n    }` as unknown as keyof $OpenApiTs,\n    \"delete\" as unknown as never,\n    {\n      ...data,\n      datasetId: this.datasetId,\n    },\n    signal,\n  )) as DeleteFileHandlerResponse;\n}\n", "/**\n * This includes all the functions you can use to communicate with our Events API\n *\n * @module Event Methods\n */\n\nimport { GetEventsData } from \"../../fetch-client\";\nimport { TrieveSDK } from \"../../sdk\";\n\n/**\n * Get events for the dataset.\n * \n * Example:\n * ```js\n *const data = await trieve.getEventsForDataset({\n  page: 1,\n  page_size: 10,\n  type: [\"chunk_action_failed\"],\n});\n * ```\n */\nexport async function getEventsForDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  data: GetEventsData,\n  signal?: AbortSignal\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/dataset/events\",\n    \"post\",\n    {\n      data,\n      datasetId: this.datasetId,\n    },\n    signal\n  );\n}\n", "/**\n * This includes all the functions you can use to communicate with our datasets endpoint\n *\n * @module Dataset Methods\n */\n\nimport { TrieveSDK } from \"../../sdk\";\nimport {\n  CreateDatasetBatchReqPayload,\n  CreateDatasetReqPayload,\n  Dataset,\n  DatasetAndUsage,\n  DatasetQueueLengthsResponse,\n  DatasetUsageCount,\n  EventReturn,\n  FileData,\n  GetAllTagsReqPayload,\n  GetAllTagsResponse,\n  GetEventsData,\n  GetPagefindIndexResponse,\n  UpdateDatasetReqPayload,\n} from \"../../types.gen\";\n\n/**\n * Function that provides the ability to create a dataset. This function is used to create a new dataset in the organization.\n *\n * Example:\n * ```js\n * const dataset = await trieve.createDataset({\n *  dataset_name: \"My Dataset\",\n * });\n * ```\n */\nexport async function createDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  props: CreateDatasetReqPayload,\n  signal?: AbortSignal\n): Promise<Dataset> {\n  if (!this.organizationId) {\n    throw new Error(\"Organization ID is required to create a dataset\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/dataset\",\n    \"post\",\n    {\n      data: props,\n      organizationId: this.organizationId,\n    },\n    signal\n  ) as Promise<Dataset>;\n}\n\n/**\n * Function that provides the ability to update a dataset. This function is used to update an existing dataset in the organization by ID or Tracking ID.\n *\n * Example:\n * ```js\n * const dataset = await trieve.updateDataset({\n *   tracking_id: \"123456\",\n *   dataset_name: \"change to this name\",\n * });\n * ```\n */\nexport async function updateDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  props: UpdateDatasetReqPayload,\n  signal?: AbortSignal\n): Promise<Dataset> {\n  if (!this.organizationId) {\n    throw new Error(\"Organization ID is required to update a dataset\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/dataset\",\n    \"put\",\n    {\n      data: props,\n      organizationId: this.organizationId,\n    },\n    signal\n  ) as Promise<Dataset>;\n}\n\n/**\n * Function that provides the ability to create datasets in batch. This function is used to create multiple datasets in the organization.\n *\n * Example:\n * ```js\n * const datasets = await trieve.batchCreateDatasets({\n *  datasets: [\n *    {\n *       dataset_name: \"My Dataset 1\",\n *    },\n *  ]});\n * ```\n */\nexport async function batchCreateDatasets(\n  /** @hidden */\n  this: TrieveSDK,\n  props: CreateDatasetBatchReqPayload,\n  signal?: AbortSignal\n): Promise<Dataset[]> {\n  if (!this.organizationId) {\n    throw new Error(\"Organization ID is required to create a dataset\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/dataset/batch_create_datasets\",\n    \"post\",\n    {\n      data: props,\n      organizationId: this.organizationId,\n    },\n    signal\n  ) as Promise<Dataset[]>;\n}\n\n/**\n * Function that provides the ability to remove all data from a dataset. This function is used to clear all data from a dataset.\n *\n * Example:\n * ```js\n * await trieve.clearDataset(\"1111-2222-3333-4444\");\n */\nexport async function clearDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<void> {\n  return this.trieve.fetch(\n    \"/api/dataset/clear/{dataset_id}\",\n    \"put\",\n    {\n      datasetId,\n    },\n    signal\n  ) as Promise<void>;\n}\n\nexport async function getDatasetEvents(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GetEventsData,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<EventReturn> {\n  return this.trieve.fetch(\n    \"/api/dataset/events\",\n    \"post\",\n    {\n      datasetId,\n      data: props,\n    },\n    signal\n  ) as Promise<EventReturn>;\n}\n\nexport async function getDatasetFiles(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  page: number,\n  signal?: AbortSignal\n): Promise<FileData> {\n  return this.trieve.fetch(\n    \"/api/dataset/files/{dataset_id}/{page}\",\n    \"get\",\n    {\n      datasetId,\n      page,\n    },\n    signal\n  ) as Promise<FileData>;\n}\n\nexport async function getAllDatasetTags(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GetAllTagsReqPayload,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<GetAllTagsResponse> {\n  return this.trieve.fetch(\n    \"/api/dataset/get_all_tags\",\n    \"post\",\n    {\n      data: props,\n      datasetId,\n    },\n    signal\n  ) as Promise<GetAllTagsResponse>;\n}\n\nexport async function getDatasetsFromOrganization(\n  /** @hidden */\n  this: TrieveSDK,\n  organizationId: string,\n  limit?: number,\n  offset?: number,\n  signal?: AbortSignal\n): Promise<DatasetAndUsage[]> {\n  return this.trieve.fetch(\n    \"/api/dataset/organization/{organization_id}\",\n    \"get\",\n    {\n      organizationId,\n      limit,\n      offset,\n    },\n    signal\n  ) as Promise<DatasetAndUsage[]>;\n}\n\nexport async function getDatasetByTrackingId(\n  /** @hidden */\n  this: TrieveSDK,\n  trackingId: string,\n  signal?: AbortSignal\n): Promise<Dataset> {\n  if (!this.organizationId) {\n    throw new Error(\n      \"Organization ID is required to get a dataset by tracking ID\"\n    );\n  }\n\n  return this.trieve.fetch(\n    \"/api/dataset/tracking_id/{tracking_id}\",\n    \"get\",\n    {\n      organizationId: this.organizationId,\n      trackingId,\n    },\n    signal\n  ) as Promise<Dataset>;\n}\n\nexport async function getDatasetUsageById(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<DatasetUsageCount> {\n  return this.trieve.fetch(\n    \"/api/dataset/usage/{dataset_id}\",\n    \"get\",\n    {\n      datasetId,\n    },\n    signal\n  ) as Promise<DatasetUsageCount>;\n}\n\nexport async function getDatasetById(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<Dataset> {\n  return this.trieve.fetch(\n    \"/api/dataset/{dataset_id}\",\n    \"get\",\n    {\n      datasetId,\n    },\n    signal\n  ) as Promise<Dataset>;\n}\n\nexport async function deleteDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<void> {\n  return this.trieve.fetch(\n    \"/api/dataset/{dataset_id}\",\n    \"delete\",\n    {\n      datasetId,\n    },\n    signal\n  ) as Promise<void>;\n}\n\nexport async function getPagefindUrl(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<GetPagefindIndexResponse> {\n  return this.trieve.fetch(\n    \"/api/dataset/pagefind\",\n    \"get\",\n    {\n      datasetId,\n    },\n    signal\n  ) as Promise<GetPagefindIndexResponse>;\n}\n\nexport async function getDatasetQueueLengths(\n  /** @hidden */\n  this: TrieveSDK,\n  datasetId: string,\n  signal?: AbortSignal\n): Promise<DatasetQueueLengthsResponse> {\n  return this.trieve.fetch(\n    \"/api/dataset/get_dataset_queue_lengths\",\n    \"get\",\n    {\n      datasetId,\n    },\n    signal\n  ) as Promise<DatasetQueueLengthsResponse>;\n}\n", "/**\n * This includes all the functions you can use to communicate with our user endpoint\n *\n * @module User Methods\n */\n\nimport { TrieveSDK } from \"../../sdk\";\nimport {\n  UpdateUserReqPayload,\n} from \"../../types.gen\";\n\nexport async function updateUserRole(\n  /** @hidden */\n  this: TrieveSDK,\n  props: UpdateUserReqPayload,\n  signal?: AbortSignal\n): Promise<void> {\n  if (!this.organizationId) {\n    throw new Error(\"Organization ID is required to update user role\");\n  }\n\n  return this.trieve.fetch(\n    \"/api/user\",\n    \"put\",\n    {\n      data: props,\n      organizationId: this.organizationId,\n    },\n    signal\n  );\n}\n\n", "/**\n * This includes all the functions you can use to communicate with our organization endpoint\n *\n * @module Organization Methods\n */\n\nimport { TrieveSDK } from \"../../sdk\";\nimport {\n  CreateApiKeyReqPayload,\n  CreateApiKeyResponse,\n  ExtendedOrganizationUsageCount,\n  OrganizationWithSubAndPlan,\n} from \"../../types.gen\";\n\nexport async function createOrganizationApiKey(\n  /** @hidden */\n  this: TrieveSDK,\n  props: CreateApiKeyReqPayload,\n  signal?: AbortSignal\n): Promise<CreateApiKeyResponse> {\n  if (!this.organizationId) {\n    throw new Error(\n      \"Organization ID is required to create Organization API key\"\n    );\n  }\n\n  return this.trieve.fetch(\n    \"/api/organization/api_key\",\n    \"post\",\n    {\n      data: props,\n      organizationId: this.organizationId,\n    },\n    signal\n  );\n}\n\nexport async function deleteOrganizationApiKey(\n  /** @hidden */\n  this: TrieveSDK,\n  apiKeyId: string,\n  signal?: AbortSignal\n): Promise<void> {\n  if (!this.organizationId) {\n    throw new Error(\n      \"Organization ID is required to delete Organization API key\"\n    );\n  }\n  return this.trieve.fetch(\n    \"/api/organization/api_key/{api_key_id}\",\n    \"delete\",\n    {\n      apiKeyId,\n      organizationId: this.organizationId,\n    },\n    signal\n  );\n}\n\nexport async function getOrganizationById(\n  /** @hidden */\n  this: TrieveSDK,\n  organizationId: string,\n  signal?: AbortSignal\n): Promise<OrganizationWithSubAndPlan> {\n  return this.trieve.fetch(\n    `/api/organization/{organization_id}`,\n    \"get\",\n    {\n      organizationId,\n    },\n    signal\n  );\n}\n\nexport const formatDateForApi = (date: Date) => {\n  return date\n    .toLocaleString(\"en-CA\", {\n      year: \"numeric\",\n      month: \"2-digit\",\n      day: \"2-digit\",\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n      second: \"2-digit\",\n      hour12: false,\n      timeZone: \"UTC\",\n    })\n    .replace(\",\", \"\");\n};\n\nexport async function getOrganizationUsage(\n  /** @hidden */\n  this: TrieveSDK,\n  organizationId: string,\n  signal?: AbortSignal\n): Promise<ExtendedOrganizationUsageCount> {\n  return this.trieve.fetch(\n    \"/api/organization/usage/{organization_id}\",\n    \"post\",\n    {\n      organizationId,\n      data: {\n        v1_usage: false,\n        date_range: {\n          gte: formatDateForApi(new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)),\n          lte: formatDateForApi(new Date()),\n        },\n      },\n    },\n    signal\n  );\n}", "/**\n * This includes all the functions you can use to communicate with our crawl endpoint\n *\n * @module Crawl Methods\n */\n\nimport { TrieveSDK } from \"../../sdk\";\nimport {\n  $OpenApiTs,\n  Dataset,\n  GetCrawlRequestsForDatasetData,\n} from \"../../types.gen\";\n\n/**\n * Function that provides the ability to create a dataset. This function is used to create a new dataset in the organization.\n *\n * Example:\n * ```js\n * const dataset = await trieve.createDataset({\n *  dataset_name: \"My Dataset\",\n * });\n * ```\n */\nexport async function getCrawlsForDataset(\n  /** @hidden */\n  this: TrieveSDK,\n  props: GetCrawlRequestsForDatasetData,\n  signal?: AbortSignal,\n): Promise<Dataset> {\n  if (!this.datasetId) {\n    throw new Error(\"Dataset ID is required to create a crawl\");\n  }\n\n  return this.trieve.fetch<\"eject\">(\n    `/api/crawl?limit=${props.limit ?? 10}&page=${\n      props.page ?? 1\n    }` as keyof $OpenApiTs,\n    \"get\",\n    {\n      data: props,\n      datasetId: this.datasetId,\n    },\n    signal,\n  ) as Promise<Dataset>;\n}\n", "/**\n * This includes all the functions you can use to communicate with our stripe endpoint\n *\n * @module Stripe Methods\n *\n */\n\nimport { TrieveSDK } from \"../../sdk\";\nimport { ShopifyPlanChangePayload, StripePlan } from \"../../types.gen\";\n\nexport async function getStripePlans(\n  /** @hidden */\n  this: TrieveSDK\n): Promise<StripePlan[] | null> {\n  if (!this.organizationId) {\n    throw new Error(\"Organization ID is required to get Stripe Customer\");\n  }\n  return this.trieve.fetch(\"/api/stripe/plans\", \"get\");\n}\n\nexport async function startStripeCheckout(\n  /** @hidden */\n  this: TrieveSDK,\n  planId: string\n): Promise<string> {\n  if (!this.organizationId) {\n    throw new Error(\"Organization ID is required to start Stripe Checkout\");\n  }\n  return this.trieve.fetch(\n    \"/api/stripe/payment_link/{plan_id}/{organization_id}\",\n    \"get\",\n    {\n      planId,\n      organizationId: this.organizationId,\n    }\n  );\n}\n\n\nexport async function handleShopifyPlanChange(\n  /** @hidden */\n  this: TrieveSDK,\n  payload: ShopifyPlanChangePayload,\n  shopifySecretKey: string\n) {\n  return this.trieve.fetch<\"eject\">(\"/api/shopify/plan_change\", \"post\", {\n    data: payload,\n    xShopifyAuthorization: shopifySecretKey,\n  });\n}", "import { TrieveSDK } from \"../../sdk\";\nimport {\n  AbTestReqBody,\n  CreateExperimentReqBody,\n  UpdateExperimentReqBody,\n} from \"../../types.gen\";\n\n/**\n * Function that allows you to view the experiments for a dataset.\n *\n * Example:\n * ```js\n * const experiments = await trieve.getExperiments();\n * ```\n */\nexport async function getExperiments(\n  /** @hidden */\n  this: TrieveSDK,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/experiment\",\n    \"get\",\n    {\n      datasetId: this.datasetId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to create an experiment for a dataset.\n *\n * Example:\n * ```js\n * const experiment = await trieve.createExperiment({\n *   name: \"My Experiment\",\n *   controlName: \"Original\",\n *   treatmentName: \"New\",\n *   controlSplit: 0.5,\n *   treatmentSplit: 0.5,\n * });\n * ```\n */\nexport async function createExperiment(\n  /** @hidden */\n  this: TrieveSDK,\n  data: CreateExperimentReqBody,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/experiment\",\n    \"post\",\n    {\n      datasetId: this.datasetId,\n      data,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to update an experiment for a dataset.\n *\n * Example:\n * ```js\n * const experiment = await trieve.updateExperiment({\n *   id: \"123\",\n *   name: \"My Experiment\",\n *   controlName: \"Original\",\n *   treatmentName: \"New\",\n *   controlSplit: 0.5,\n *   treatmentSplit: 0.5,\n * });\n * ```\n */\nexport async function updateExperiment(\n  /** @hidden */\n  this: TrieveSDK,\n  data: UpdateExperimentReqBody,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    \"/api/experiment\",\n    \"put\",\n    {\n      datasetId: this.datasetId,\n      data,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to delete an experiment for a dataset.\n *\n * Example:\n * ```js\n * const experiment = await trieve.deleteExperiment(\"123\");\n * ```\n */\nexport async function deleteExperiment(\n  /** @hidden */\n  this: TrieveSDK,\n  experimentId: string,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    `/api/experiment/{experiment_id}`,\n    \"delete\",\n    {\n      datasetId: this.datasetId,\n      experimentId,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to get the treatment for a user for an experiment.\n *\n * Example:\n * ```js\n * const treatment = await trieve.getTreatment({\n *   experimentId: \"123\",\n *   userId: \"123\",\n * });\n * ```\n */\nexport async function getTreatment(\n  /** @hidden */\n  this: TrieveSDK,\n  data: AbTestReqBody,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    `/api/experiment/ab-test`,\n    \"post\",\n    {\n      datasetId: this.datasetId,\n      data,\n    },\n    signal,\n  );\n}\n\n/**\n * Function that allows you to get an experiment by ID.\n *\n * Example:\n * ```js\n * const experiment = await trieve.getExperiment(\"123\");\n * ```\n */\nexport async function getExperiment(\n  /** @hidden */\n  this: TrieveSDK,\n  experimentId: string,\n  signal?: AbortSignal,\n) {\n  if (!this.datasetId) {\n    throw new Error(\"datasetId is required\");\n  }\n\n  return await this.trieve.fetch(\n    `/api/experiment/{experiment_id}`,\n    \"get\",\n    {\n      datasetId: this.datasetId,\n      experimentId,\n    },\n    signal,\n  );\n}\n", "import * as chunkMethods from \"./chunks/index\";\nimport * as groupsMethods from \"./groups/index\";\nimport * as analyticsMethods from \"./analytics/index\";\nimport * as topicMethods from \"./topic/index\";\nimport * as messageMethods from \"./message/index\";\nimport * as fileMethods from \"./file/index\";\nimport * as eventsMethods from \"./events/index\";\nimport * as datasetsMethods from \"./datasets/index\";\nimport * as userMethods from \"./user/index\";\nimport * as organizationMethods from \"./organization/index\";\nimport * as crawlMethods from \"./crawl/index.ts\";\nimport * as stripeMethods from \"./stripe/index\";\nimport * as experimentMethods from \"./experiments/index\";\nexport default {\n  ...chunkMethods,\n  ...groupsMethods,\n  ...analyticsMethods,\n  ...topicMethods,\n  ...messageMethods,\n  ...fileMethods,\n  ...eventsMethods,\n  ...datasetsMethods,\n  ...userMethods,\n  ...organizationMethods,\n  ...crawlMethods,\n  ...stripeMethods,\n  ...experimentMethods,\n};", "import methods from \"./functions/index\";\nimport { TrieveFetchClient } from \"./fetch-client\";\n\nexport class TrieveSDK {\n  trieve: TrieveFetchClient;\n  datasetId?: string;\n  organizationId?: string;\n  constructor({\n    apiKey,\n    baseUrl = \"https://api.trieve.ai\",\n    debug = false,\n    datasetId,\n    organizationId,\n    omitCredentials,\n  }: {\n    apiKey: string;\n    baseUrl?: string;\n    debug?: boolean;\n    datasetId?: string;\n    organizationId?: string;\n    omitCredentials?: boolean;\n  }) {\n    this.trieve = new TrieveFetchClient({\n      apiKey,\n      baseUrl,\n      debug,\n      organizationId,\n      omitCredentials,\n    });\n    this.datasetId = datasetId;\n    this.organizationId = organizationId;\n  }\n}\n\ntype Methods = typeof methods;\nObject.entries(methods).forEach(([name, method]) => {\n  // @ts-expect-error string should be used to index in this case\n  TrieveSDK.prototype[name] = method;\n});\n\ndeclare module \"./sdk\" {\n  interface TrieveSDK extends Methods {}\n}\n", "import {\n  AggregationType,\n  AnalyticsQuery,\n  Direction,\n  FilterCondition,\n  JoinType,\n  TableName,\n  FilterOperator,\n  JoinCondition,\n  ExpressionType,\n  Expression,\n  HavingCondition,\n  JoinClause,\n  GroupBy,\n  Column,\n  FilterValue,\n} from \"../../types.gen\";\n\nexport class AnalyticsQueryBuilder {\n  private query: AnalyticsQuery;\n\n  constructor() {\n    this.query = {\n      columns: [],\n      table: \"events\",\n    };\n  }\n\n  /**\n   * Add a column to select\n   */\n  select(\n    name: string,\n    options: {\n      alias?: string;\n      aggregation?: AggregationType;\n      distinct?: boolean;\n    } = {},\n  ): AnalyticsQueryBuilder {\n    this.query.columns.push({\n      name,\n      alias: options.alias,\n      aggregation: options.aggregation,\n      distinct: options.distinct,\n    });\n    return this;\n  }\n\n  /**\n   * Add a structured expression to select\n   */\n  selectExpression(\n    expression: ExpressionType,\n    alias?: string,\n  ): AnalyticsQueryBuilder {\n    if (!this.query.expressions) {\n      this.query.expressions = [];\n    }\n\n    this.query.expressions.push({\n      expression,\n      alias,\n    });\n    return this;\n  }\n\n  /**\n   * Set the table to query from\n   */\n  from(table: TableName): AnalyticsQueryBuilder {\n    this.query.table = table;\n    return this;\n  }\n\n  /**\n   * Add a structured join clause\n   */\n  join(\n    table: TableName,\n    condition: JoinCondition,\n    options: {\n      type?: JoinType;\n    } = {\n      type: \"inner\",\n    },\n  ): AnalyticsQueryBuilder {\n    if (!this.query.joins) {\n      this.query.joins = [];\n    }\n\n    this.query.joins.push({\n      table,\n      join_type: options.type,\n      condition,\n    });\n    return this;\n  }\n\n  /**\n   * Add a join with column equality condition\n   */\n  joinOn(\n    table: TableName,\n    leftColumn: string,\n    rightColumn: string,\n    type: JoinType = \"inner\",\n  ): AnalyticsQueryBuilder {\n    return this.join(\n      table,\n      {\n        type: \"column_equals\",\n        left_column: leftColumn,\n        right_column: rightColumn,\n      },\n      { type },\n    );\n  }\n\n  /**\n   * Add a join with USING clause\n   */\n  joinUsing(\n    table: TableName,\n    columns: string[],\n    type: JoinType = \"inner\",\n  ): AnalyticsQueryBuilder {\n    return this.join(\n      table,\n      {\n        type: \"using\",\n        columns,\n      },\n      { type },\n    );\n  }\n\n  /**\n   * Add a complex filter condition\n   */\n  where(condition: FilterCondition): AnalyticsQueryBuilder {\n    if (!this.query.filter_conditions) {\n      this.query.filter_conditions = [];\n    }\n    this.query.filter_conditions.push(condition);\n    return this;\n  }\n\n  /**\n   * Create a nested 'AND' filter condition\n   */\n  static and(conditions: FilterCondition[]): FilterCondition {\n    return {\n      column: conditions[0].column,\n      operator: conditions[0].operator,\n      value: conditions[0].value,\n      and_filter: conditions.slice(1),\n    };\n  }\n\n  /**\n   * Create a nested 'OR' filter condition\n   */\n  static or(conditions: FilterCondition[]): FilterCondition {\n    return {\n      column: conditions[0].column,\n      operator: conditions[0].operator,\n      value: conditions[0].value,\n      or_filter: conditions.slice(1),\n    };\n  }\n\n  /**\n   * Add a GROUP BY clause with optional structured HAVING condition\n   */\n  groupBy(\n    columns: string[],\n    having?: HavingCondition | string,\n  ): AnalyticsQueryBuilder {\n    if (typeof having === \"string\") {\n      throw new Error(\n        \"String HAVING clauses are no longer supported. Use structured having conditions.\",\n      );\n    }\n\n    this.query.group_by = {\n      columns,\n      having,\n    };\n    return this;\n  }\n\n  /**\n   * Helper to create an aggregate HAVING condition\n   */\n  static having(\n    func: AggregationType,\n    column: string,\n    operator: FilterOperator,\n    value: FilterValue,\n  ): HavingCondition {\n    return {\n      type: \"aggregate\",\n      function: func,\n      column,\n      operator,\n      value,\n    };\n  }\n\n  /**\n   * Helper to create an AND HAVING condition\n   */\n  static havingAnd(...conditions: HavingCondition[]): HavingCondition {\n    return {\n      type: \"and\",\n      conditions,\n    };\n  }\n\n  /**\n   * Helper to create an OR HAVING condition\n   */\n  static havingOr(...conditions: HavingCondition[]): HavingCondition {\n    return {\n      type: \"or\",\n      conditions,\n    };\n  }\n\n  /**\n   * Add an ORDER BY clause\n   */\n  orderBy(\n    columns: string[],\n    direction: Direction = \"desc\",\n  ): AnalyticsQueryBuilder {\n    this.query.order_by = { columns, direction };\n    return this;\n  }\n\n  /**\n   * Set a LIMIT clause\n   */\n  limit(limit: number): AnalyticsQueryBuilder {\n    this.query.limit = limit;\n    return this;\n  }\n\n  /**\n   * Set an OFFSET clause\n   */\n  offset(offset: number): AnalyticsQueryBuilder {\n    this.query.offset = offset;\n    return this;\n  }\n\n  /**\n   * Add a Common Table Expression (CTE)\n   */\n  withCte(alias: string, query: AnalyticsQuery): AnalyticsQueryBuilder {\n    this.query.cte_query = { alias, query };\n    return this;\n  }\n\n  /**\n   * Build the final query object\n   */\n  build(): AnalyticsQuery {\n    return this.query;\n  }\n\n  /**\n   * Helper to create a function expression\n   */\n  static func(name: string, ...args: ExpressionType[]): ExpressionType {\n    return {\n      type: \"function\",\n      name,\n      args,\n    };\n  }\n\n  /**\n   * Helper to create a column expression\n   */\n  static col(name: string): ExpressionType {\n    return {\n      type: \"column\",\n      name,\n    };\n  }\n\n  /**\n   * Helper to create a literal expression\n   */\n  static lit(value: FilterValue): ExpressionType {\n    return {\n      type: \"literal\",\n      value,\n    };\n  }\n}\n\n// Export helper types\nexport type {\n  FilterCondition,\n  JoinType,\n  TableName,\n  AggregationType,\n  Direction,\n  FilterOperator,\n  FilterValue,\n  JoinCondition,\n  ExpressionType,\n  Expression,\n  HavingCondition,\n  JoinClause,\n  GroupBy,\n  Column,\n};\n"],
  "mappings": "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",
  "names": []
}
