@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.d.mts +108 -1
- package/dist/index.d.ts +108 -1
- package/dist/index.js +99 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +99 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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) {
|