Skip to content

Commit b1abede

Browse files
author
roary.yao
committed
Merge branch 'main' of https://github.com/SciSharp/BotSharp-UI into roary-features/chat-window
2 parents f1496fb + 4a1481d commit b1abede

File tree

13 files changed

+105
-81
lines changed

13 files changed

+105
-81
lines changed

src/lib/scss/custom/pages/_agent.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@
2424
}
2525
}
2626

27+
.agent-reset-container {
28+
position: absolute;
29+
left: 10px;
30+
top: 5px;
31+
font-size: 15px;
32+
}
33+
2734
.agent-prop-list-container {
2835
width: 95%;
2936
max-width: 100%;

src/lib/scss/custom/pages/_conversation.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,10 @@
2828
-webkit-box-orient: vertical;
2929
-webkit-line-clamp: 10;
3030
max-height: 300px;
31+
}
32+
33+
.state-search-container {
34+
display: flex;
35+
gap: 10px;
36+
justify-content: flex-end;
3137
}

src/routes/chat/[agentId]/[conversationId]/chat-box.svelte

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
const chatWidthThreshold = 300;
9292
const maxTextLength = 64000;
9393
const duration = 2000;
94+
const MESSAGE_STORAGE_KEY = 'message_draft_';
9495
9596
/** @type {import('$agentTypes').AgentModel} */
9697
export let agent;
@@ -224,9 +225,7 @@
224225
initUserSentMessages(dialogs);
225226
initChatView();
226227
const messageDraft = getMessageDraft();
227-
if (messageDraft) {
228-
text = messageDraft;
229-
}
228+
text = messageDraft || '';
230229
handlePaneResize();
231230
232231
signalr.onMessageReceivedFromClient = onMessageReceivedFromClient;
@@ -1333,26 +1332,24 @@
13331332
});
13341333
}
13351334
1336-
/** @param {any} e */
1335+
/** @param {any} e */
13371336
function handleInputBigText(e) {
13381337
saveMessageDraft(e.target.value);
13391338
}
13401339
1341-
const MESSAGE_STORAGE_KEY = 'message_draft_';
13421340
function getMessageDraft() {
13431341
return messageStorage.get(MESSAGE_STORAGE_KEY + params.conversationId);
1344-
}
1342+
}
13451343
1346-
/**
1347-
* @param {any} message
1348-
*/
1349-
function saveMessageDraft(message) {
1344+
/** @param {any} message */
1345+
function saveMessageDraft(message) {
13501346
messageStorage.set(MESSAGE_STORAGE_KEY + params.conversationId, message, 24 * 60 * 60 * 1000);
1351-
}
1347+
}
13521348
1353-
function deleteMessageDraft() {
1349+
function deleteMessageDraft() {
13541350
messageStorage.remove(MESSAGE_STORAGE_KEY + params.conversationId);
1355-
}
1351+
}
1352+
13561353
function handlePaneResize() {
13571354
const header = document.querySelector('.chat-head');
13581355
if (!header) return;

src/routes/page/agent/[agentId]/+page.svelte

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
let agentPromptCmp = null;
2929
/** @type {any} */
3030
let agentTabsCmp = null;
31+
/** @type {import('$agentTypes').AgentModel} */
32+
let originalAgent;
33+
/** @type {any} */
34+
let agentDraft = null;
3135
3236
/** @type {boolean} */
3337
let isLoading = false;
@@ -37,18 +41,16 @@
3741
const duration = 3000;
3842
const params = $page.params;
3943
const agentStorage = new LocalStorageManager();
40-
let agentDraft = getAgentDraft();
41-
/** @type {import('$agentTypes').AgentModel} */
42-
let originalAgent;
44+
4345
4446
onMount(() => {
4547
isLoading = true;
48+
agentDraft = getAgentDraft();
4649
getAgent(params.agentId).then(data => {
4750
originalAgent = {
4851
...data,
4952
llm_config: data.llm_config || {}
5053
};
51-
const agentDraft = getAgentDraft();
5254
if (agentDraft) {
5355
agent = agentDraft;
5456
} else {
@@ -226,8 +228,6 @@
226228
agentTabsCmp?.reinit();
227229
});
228230
}
229-
230-
231231
</script>
232232
233233
<HeadTitle title="{$_('Agent Overview')}" />
@@ -236,24 +236,40 @@
236236
237237
{#if agent}
238238
<div>
239-
{#if agentDraft}
240-
<button type="button" class="btn btn-sm btn-primary" on:click={agentDraftReset}>{$_('Reset')}</button>
241-
{/if}
242239
<Row class="agent-detail-sections">
243240
<Col class="section-min-width agent-col" style="flex: 40%;">
244241
<div class="agent-detail-section">
245-
<AgentOverview agent={agent} profiles={agent.profiles || []} labels={agent.labels || []} {handleAgentChange} />
242+
<AgentOverview
243+
agent={agent}
244+
profiles={agent.profiles || []}
245+
labels={agent.labels || []}
246+
resetable={!!agentDraft}
247+
resetAgent={() => agentDraftReset()}
248+
{handleAgentChange}
249+
/>
246250
</div>
247251
<div class="agent-detail-section">
248-
<AgentTabs bind:this={agentTabsCmp} agent={agent} {handleAgentChange} />
252+
<AgentTabs
253+
bind:this={agentTabsCmp}
254+
agent={agent}
255+
{handleAgentChange}
256+
/>
249257
</div>
250258
</Col>
251259
<Col class="section-min-width agent-col" style="flex: 60%;">
252260
<div class="agent-detail-section">
253-
<AgentPrompt bind:this={agentPromptCmp} agent={agent} {handleAgentChange} />
261+
<AgentPrompt
262+
bind:this={agentPromptCmp}
263+
agent={agent}
264+
{handleAgentChange}
265+
/>
254266
</div>
255267
<div class="agent-detail-section">
256-
<AgentFunction bind:this={agentFunctionCmp} agent={agent} {handleAgentChange} />
268+
<AgentFunction
269+
bind:this={agentFunctionCmp}
270+
agent={agent}
271+
{handleAgentChange}
272+
/>
257273
</div>
258274
</Col>
259275
</Row>

src/routes/page/agent/[agentId]/agent-components/agent-function.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
return content;
1313
}
1414
15+
export const reinit = () => init();
16+
1517
/** @type {import('svelte-jsoneditor').Content} */
1618
let content = {
1719
json: {}
@@ -31,8 +33,6 @@
3133
};
3234
}
3335
34-
export const reinit = () => init();
35-
3636
/**
3737
* @param {import('svelte-jsoneditor').Content} updatedContent
3838
* @param {import('svelte-jsoneditor').Content} previousContent

src/routes/page/agent/[agentId]/agent-components/agent-knowledge-base.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
return innerKnowledgeBases;
4040
}
4141
42+
export const reinit = () => init();
43+
4244
/** @type {any[]} */
4345
let knowledgeBaseOptions = [];
4446
@@ -73,8 +75,6 @@
7375
refresh(list);
7476
}
7577
76-
export const reinit = () => init();
77-
7878
/** @param {import('$agentTypes').AgentKnowledgeBase | any} b */
7979
function getDisplayOption(b) {
8080
return `${b.name} ${!!KnowledgeCollectionDisplayType[b.type]

src/routes/page/agent/[agentId]/agent-components/agent-llm-config.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
}
5555
5656
config.is_inherit = false;
57-
handleAgentChange();
57+
// handleAgentChange();
5858
models = await getLlmProviderModels(provider);
5959
config.model = models[0]?.name;
6060
handleAgentChange();

src/routes/page/agent/[agentId]/agent-components/agent-overview.svelte

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script>
22
import { onMount } from 'svelte';
33
import { Button, Card, CardBody, CardHeader, Input, Table } from '@sveltestrap/sveltestrap';
4+
import { _ } from 'svelte-i18n'
45
import InPlaceEdit from '$lib/common/InPlaceEdit.svelte'
56
import { format } from '$lib/helpers/datetime';
67
import { AgentType } from '$lib/helpers/enums';
@@ -20,6 +21,12 @@
2021
2122
/** @type {() => void} */
2223
export let handleAgentChange;
24+
25+
/** @type {boolean} */
26+
export let resetable = false;
27+
28+
/** @type {() => void} */
29+
export let resetAgent = () => {};
2330
2431
onMount(() => {});
2532
@@ -62,6 +69,19 @@
6269
6370
<Card>
6471
<CardHeader>
72+
{#if resetable}
73+
<!-- svelte-ignore a11y-click-events-have-key-events -->
74+
<!-- svelte-ignore a11y-no-static-element-interactions -->
75+
<div
76+
class="agent-reset-container"
77+
data-bs-toggle="tooltip"
78+
data-bs-placement="bottom"
79+
title={$_('Reset')}
80+
on:click={() => resetAgent()}
81+
>
82+
<i class="mdi mdi-refresh text-primary clickable" />
83+
</div>
84+
{/if}
6585
<div class="text-center">
6686
<div class="agent-overview-header">
6787
<img
@@ -80,7 +100,9 @@
80100
</Button>
81101
{/if}
82102
</div>
83-
<h5 class="mt-1 mb-1 div-center"><InPlaceEdit bind:value={agent.name} /></h5>
103+
<h5 class="mt-1 mb-1 div-center">
104+
<InPlaceEdit bind:value={agent.name} on:input={handleAgentChange} />
105+
</h5>
84106
<p class="text-muted mb-0">{`Updated at ${format(agent.updated_datetime, 'time')}`}</p>
85107
</div>
86108
</CardHeader>

src/routes/page/agent/[agentId]/agent-components/agent-prompt.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import { v4 as uuidv4 } from 'uuid';
77
import util from "lodash";
88
import { _ } from 'svelte-i18n';
9+
10+
const defaultChannel = "default";
911
1012
/** @type {import('$agentTypes').AgentModel} */
1113
export let agent;
@@ -44,8 +46,6 @@
4446
4547
export const refreshChannelPrompts = () => init();
4648
47-
const defaultChannel = "default";
48-
4949
/** @type {import('$agentTypes').ChannelInstruction} */
5050
const defaultInstruction = {
5151
channel: defaultChannel,

src/routes/page/agent/[agentId]/agent-components/agent-rule.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
return innerRules;
4040
}
4141
42+
export const reinit = () => init();
43+
4244
/** @type {any[]} */
4345
let ruleOptions = [];
4446
@@ -70,9 +72,7 @@
7072
}) || [];
7173
refresh(list);
7274
}
73-
74-
export const reinit = () => init();
75-
75+
7676
/**
7777
* @param {any} e
7878
* @param {number} idx

0 commit comments

Comments
 (0)