@lpextend/node-sdk 1.1.3 → 1.1.5

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,156 @@ 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
+ }
2150
+ /**
2151
+ * Get KB search events (real customer queries)
2152
+ *
2153
+ * Retrieves actual customer queries made to knowledge bases and their outcomes.
2154
+ * This API returns the raw questions customers asked, whether they were answered,
2155
+ * and which KB/articles were involved.
2156
+ *
2157
+ * @param request - Search events request parameters
2158
+ * @returns Promise resolving to search events with pagination
2159
+ *
2160
+ * @example
2161
+ * ```typescript
2162
+ * // Get unanswered questions from the last 7 days
2163
+ * const events = await sdk.conversationBuilder.knowledgeBases.getSearchEvents({
2164
+ * startTime: String(Date.now() - 7 * 24 * 60 * 60 * 1000),
2165
+ * endTime: String(Date.now()),
2166
+ * eventType: ['EVENT_KB_UN_ANSWERED'],
2167
+ * pageSize: 50,
2168
+ * });
2169
+ *
2170
+ * // Get all events for a specific KB
2171
+ * const kbEvents = await sdk.conversationBuilder.knowledgeBases.getSearchEvents({
2172
+ * startTime: String(Date.now() - 7 * 24 * 60 * 60 * 1000),
2173
+ * endTime: String(Date.now()),
2174
+ * kbId: 'kb-123',
2175
+ * eventType: ['EVENT_KB_ANSWERED', 'EVENT_KB_UN_ANSWERED'],
2176
+ * });
2177
+ * ```
2178
+ */
2179
+ async getSearchEvents(request) {
2180
+ const body = {
2181
+ startTime: request.startTime,
2182
+ endTime: request.endTime
2183
+ };
2184
+ if (request.pageNumber !== void 0) {
2185
+ body.pageNumber = request.pageNumber;
2186
+ }
2187
+ if (request.pageSize !== void 0) {
2188
+ body.pageSize = request.pageSize;
2189
+ }
2190
+ if (request.eventType !== void 0) {
2191
+ body.eventType = request.eventType;
2192
+ }
2193
+ if (request.kbId !== void 0) {
2194
+ body.kbId = request.kbId;
2195
+ }
2196
+ return this.cb.request("cbKb", "/kb/searchEvents", {
2197
+ method: "POST",
2198
+ body
2199
+ });
2200
+ }
2051
2201
  };
2052
2202
  var BotAgentsAPI = class {
2053
2203
  constructor(cb) {