@lpextend/node-sdk 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2048,6 +2048,105 @@ var KnowledgeBasesAPI = class {
2048
2048
  async getDefaultPrompt() {
2049
2049
  return this.cb.request("cbKb", "/default-prompt");
2050
2050
  }
2051
+ /**
2052
+ * Get consumer query metrics for a knowledge base
2053
+ *
2054
+ * Retrieves answered and/or unanswered query metrics within a date range.
2055
+ * Note: The API only supports 7-day ranges. For longer ranges, use getConsumerQueryMetricsExtended().
2056
+ *
2057
+ * @param params - Query parameters including kbId, startTime, endTime, and eventType
2058
+ * @returns Promise resolving to consumer query metrics
2059
+ *
2060
+ * @example
2061
+ * ```typescript
2062
+ * const metrics = await sdk.conversationBuilder.knowledgeBases.getConsumerQueryMetrics({
2063
+ * kbId: 'kb-123',
2064
+ * startTime: Date.now() - 7 * 24 * 60 * 60 * 1000, // 7 days ago
2065
+ * endTime: Date.now(),
2066
+ * eventType: ['EVENT_KB_UN_ANSWERED'],
2067
+ * });
2068
+ * ```
2069
+ */
2070
+ async getConsumerQueryMetrics(params) {
2071
+ const body = {
2072
+ startTime: String(params.startTime),
2073
+ endTime: String(params.endTime),
2074
+ eventType: params.eventType,
2075
+ kbId: params.kbId
2076
+ };
2077
+ return this.cb.request("cbKb", "/kb/consumerQueryMetrics", {
2078
+ method: "POST",
2079
+ body
2080
+ });
2081
+ }
2082
+ /**
2083
+ * Get consumer query metrics for extended date ranges (up to 3 months)
2084
+ *
2085
+ * Automatically iterates through 7-day chunks to retrieve all metrics within
2086
+ * the specified date range. Useful for historical analysis beyond the 7-day API limit.
2087
+ *
2088
+ * @param params - Extended query parameters including startDate, endDate, kbId, and eventType
2089
+ * @returns Promise resolving to aggregated consumer query metrics from all chunks
2090
+ *
2091
+ * @example
2092
+ * ```typescript
2093
+ * const metrics = await sdk.conversationBuilder.knowledgeBases.getConsumerQueryMetricsExtended({
2094
+ * kbId: 'kb-123',
2095
+ * startDate: new Date('2024-01-01'),
2096
+ * endDate: new Date('2024-03-01'),
2097
+ * eventType: ['EVENT_KB_ANSWERED', 'EVENT_KB_UN_ANSWERED'],
2098
+ * onProgress: (completed, total) => console.log(`${completed}/${total} chunks processed`),
2099
+ * });
2100
+ * ```
2101
+ */
2102
+ async getConsumerQueryMetricsExtended(params) {
2103
+ const { startDate, endDate, eventType, kbId, onProgress } = params;
2104
+ const startMs = typeof startDate === "number" ? startDate : startDate.getTime();
2105
+ const endMs = typeof endDate === "number" ? endDate : endDate.getTime();
2106
+ const maxRangeMs = 90 * 24 * 60 * 60 * 1e3;
2107
+ if (endMs - startMs > maxRangeMs) {
2108
+ throw new LPExtendSDKError(
2109
+ "Date range exceeds maximum of 90 days. Please use a smaller range.",
2110
+ ErrorCodes.INVALID_CONFIG
2111
+ );
2112
+ }
2113
+ const chunkSizeMs = 7 * 24 * 60 * 60 * 1e3;
2114
+ const chunks = [];
2115
+ let chunkStart = startMs;
2116
+ while (chunkStart < endMs) {
2117
+ const chunkEnd = Math.min(chunkStart + chunkSizeMs, endMs);
2118
+ chunks.push({ start: chunkStart, end: chunkEnd });
2119
+ chunkStart = chunkEnd;
2120
+ }
2121
+ const allMetrics = [];
2122
+ for (let i = 0; i < chunks.length; i++) {
2123
+ const chunk = chunks[i];
2124
+ try {
2125
+ const response = await this.getConsumerQueryMetrics({
2126
+ kbId,
2127
+ startTime: chunk.start,
2128
+ endTime: chunk.end,
2129
+ eventType
2130
+ });
2131
+ if (response.data && Array.isArray(response.data)) {
2132
+ allMetrics.push(...response.data);
2133
+ }
2134
+ } catch (error) {
2135
+ console.warn(`Failed to fetch metrics for chunk ${i + 1}/${chunks.length}:`, error);
2136
+ }
2137
+ if (onProgress) {
2138
+ onProgress(i + 1, chunks.length);
2139
+ }
2140
+ }
2141
+ const seen = /* @__PURE__ */ new Set();
2142
+ const uniqueMetrics = allMetrics.filter((metric) => {
2143
+ const key = metric.id || `${metric.consumerQuery}-${metric.timestamp}`;
2144
+ if (seen.has(key)) return false;
2145
+ seen.add(key);
2146
+ return true;
2147
+ });
2148
+ return uniqueMetrics;
2149
+ }
2051
2150
  };
2052
2151
  var BotAgentsAPI = class {
2053
2152
  constructor(cb) {