diff --git a/src/lib/common/StateModal.svelte b/src/lib/common/StateModal.svelte index 0a6deb2e..271993c2 100644 --- a/src/lib/common/StateModal.svelte +++ b/src/lib/common/StateModal.svelte @@ -196,14 +196,16 @@ {/if} -
- {#if idx !== 0} -
+
+
- remove(idx)} /> + remove(idx)} + />
- {/if}
{/each} diff --git a/src/lib/helpers/http.js b/src/lib/helpers/http.js index e5003153..e82610d6 100644 --- a/src/lib/helpers/http.js +++ b/src/lib/helpers/http.js @@ -108,6 +108,7 @@ function skipLoader(config) { new RegExp('http(s*)://(.*?)/user/(.*?)/details', 'g'), new RegExp('http(s*)://(.*?)/agent/labels', 'g'), new RegExp('http(s*)://(.*?)/conversation/state/keys', 'g'), + new RegExp('http(s*)://(.*?)/logger/instruction/log/keys', 'g') ]; if (config.method === 'post' && postRegexes.some(regex => regex.test(config.url || ''))) { diff --git a/src/lib/helpers/types/conversationTypes.js b/src/lib/helpers/types/conversationTypes.js index 577fe067..76e1ce10 100644 --- a/src/lib/helpers/types/conversationTypes.js +++ b/src/lib/helpers/types/conversationTypes.js @@ -37,6 +37,7 @@ * @property {number?} [keyLimit] - The key limit. * @property {number?} [convLimit] - The conversation limit. * @property {boolean?} [preload] - Whether it is preloading or not. + * @property {string[]?} [agentIds] */ diff --git a/src/lib/helpers/types/instructTypes.js b/src/lib/helpers/types/instructTypes.js index ed7112b6..9538dec6 100644 --- a/src/lib/helpers/types/instructTypes.js +++ b/src/lib/helpers/types/instructTypes.js @@ -42,4 +42,13 @@ * @property {Date} created_time */ +/** + * @typedef {Object} StateSearchQuery + * @property {string} query - The search query. + * @property {number?} [keyLimit] - The key limit. + * @property {number?} [logLimit] - The log limit. + * @property {boolean?} [preload] - Whether it is preloading or not. + * @property {string[]?} [agentIds] + */ + export default {}; \ No newline at end of file diff --git a/src/lib/scss/custom/pages/_chat.scss b/src/lib/scss/custom/pages/_chat.scss index cda9fe5e..3270c7a0 100644 --- a/src/lib/scss/custom/pages/_chat.scss +++ b/src/lib/scss/custom/pages/_chat.scss @@ -671,7 +671,7 @@ .state-delete { flex: 0.1; color: var(--bs-danger); - font-size: 17px; + font-size: 12px; } .invalid { diff --git a/src/lib/services/api-endpoints.js b/src/lib/services/api-endpoints.js index 26cf2212..787690c4 100644 --- a/src/lib/services/api-endpoints.js +++ b/src/lib/services/api-endpoints.js @@ -46,6 +46,7 @@ export const endpoints = { instructCompletionUrl: `${host}/instruct/{agentId}`, chatCompletionUrl: `${host}/instruct/chat-completion`, instructLogUrl: `${host}/logger/instruction/log`, + instructLogSearchKeysUrl: `${host}/logger/instruction/log/keys`, // agent realtime interaction agentInitRealtimeSessionUrl: `${host}/agent/{agentId}/realtime/session`, diff --git a/src/lib/services/conversation-service.js b/src/lib/services/conversation-service.js index d569c41f..0871adf3 100644 --- a/src/lib/services/conversation-service.js +++ b/src/lib/services/conversation-service.js @@ -1,7 +1,8 @@ -import { replaceUrl } from '$lib/helpers/http'; import axios from 'axios'; -import { endpoints } from './api-endpoints.js'; +import qs from 'qs'; +import { replaceUrl } from '$lib/helpers/http'; import { conversationUserStateStore } from '$lib/helpers/store.js'; +import { endpoints } from './api-endpoints.js'; /** * New conversation @@ -44,7 +45,12 @@ export async function getConversationUser(id) { */ export async function getConversations(filter) { let url = endpoints.conversationsUrl; - const response = await axios.post(url, { ...filter}); + const response = await axios.get(url, { + params: { + ...filter + }, + paramsSerializer: (params) => qs.stringify(params, { encode: false, allowDots: true, arrayFormat: "indices" }) + }); return response.data; } @@ -304,6 +310,10 @@ export async function getConversationStateSearchKeys(request) { params: { ...request }, + paramsSerializer: { + dots: true, + indexes: null, + }, signal: controller.signal }); return response.data; diff --git a/src/lib/services/instruct-service.js b/src/lib/services/instruct-service.js index a38f5e85..1c40229c 100644 --- a/src/lib/services/instruct-service.js +++ b/src/lib/services/instruct-service.js @@ -40,3 +40,22 @@ export async function getInstructionLogs(filter) { }); return response.data; } + +/** + * get instruction log search keys + * @param {import('$instructTypes').StateSearchQuery} request + * @returns {Promise} + */ +export async function getInstructionLogSearchKeys(request) { + let url = endpoints.instructLogSearchKeysUrl; + const response = await axios.get(url, { + params: { + ...request + }, + paramsSerializer: { + dots: true, + indexes: null, + } + }); + return response.data; +} \ No newline at end of file diff --git a/src/routes/page/conversation/+page.svelte b/src/routes/page/conversation/+page.svelte index 4ce33247..5ed551cc 100644 --- a/src/routes/page/conversation/+page.svelte +++ b/src/routes/page/conversation/+page.svelte @@ -335,7 +335,8 @@ return new Promise((resolve) => { getConversationStateSearchKeys({ query: query, - keyLimit: 20 + keyLimit: 20, + agentIds: searchOption.agentId ? [searchOption.agentId] : null }).then(res => { resolve(res || []); }).catch(() => resolve([])); diff --git a/src/routes/page/instruction/log/+page.svelte b/src/routes/page/instruction/log/+page.svelte index 9cd5e072..3e7145f8 100644 --- a/src/routes/page/instruction/log/+page.svelte +++ b/src/routes/page/instruction/log/+page.svelte @@ -8,7 +8,7 @@ import TablePagination from '$lib/common/TablePagination.svelte'; import { getAgentOptions } from '$lib/services/agent-service'; import { getLlmConfigs } from '$lib/services/llm-provider-service'; - import { getInstructionLogs } from '$lib/services/instruct-service'; + import { getInstructionLogs, getInstructionLogSearchKeys } from '$lib/services/instruct-service'; import LoadingToComplete from '$lib/common/LoadingToComplete.svelte'; import LogItem from './log-item.svelte'; import { removeDuplicates } from '$lib/helpers/utils/common'; @@ -218,6 +218,19 @@ }; getPagedInstructionLogs(); } + + /** @param {string} query */ + function handleStateSearch(query) { + return new Promise((resolve) => { + getInstructionLogSearchKeys({ + query: query, + keyLimit: 20, + agentIds: searchOption.agentId ? [searchOption.agentId] : null + }).then(res => { + resolve(res || []); + }).catch(() => resolve([])); + }); + } @@ -256,7 +269,7 @@ - + handleStateSearch(query)} />