:gem: [Feature] Render agent info at sidebar
Browse files- index.html +5 -6
- storages/agent_storage.js +16 -0
- widgets/agent_info_widget.js +52 -0
index.html
CHANGED
@@ -65,7 +65,7 @@
|
|
65 |
<i class="fa fa-close"></i>
|
66 |
</button>
|
67 |
<h5 class="offcanvas-title" id="chat-agents-label">
|
68 |
-
<a style="text-decoration: none; color:inherit;"
|
69 |
</h5>
|
70 |
</div>
|
71 |
<div class="offcanvas-body">
|
@@ -74,8 +74,7 @@
|
|
74 |
<i class="fa fa-plus"></i> New Agent
|
75 |
</button>
|
76 |
</div>
|
77 |
-
<
|
78 |
-
</ul>
|
79 |
</div>
|
80 |
<div class="my-2 row no-gutters justify-content-start">
|
81 |
<div class="col">
|
@@ -95,11 +94,11 @@
|
|
95 |
</div>
|
96 |
<div class="col-auto">
|
97 |
<button id="toggle-endpoint-and-api-key-items-button" class="btn px-0">
|
98 |
-
<i class="fa fa-
|
99 |
</button>
|
100 |
</div>
|
101 |
<select class="form-select" id="available-models-select" title="Available Models"></select>
|
102 |
-
<div class="col px-
|
103 |
<select class="form-select" id="agents-select" title="Agents"></select>
|
104 |
</div>
|
105 |
<div class="col-auto">
|
@@ -109,7 +108,7 @@
|
|
109 |
</div>
|
110 |
<div class="col-auto">
|
111 |
<button id="chat-agents-sidebar-toggle-button" class="btn px-0">
|
112 |
-
<i class="fa fa-
|
113 |
</button>
|
114 |
</div>
|
115 |
</div>
|
|
|
65 |
<i class="fa fa-close"></i>
|
66 |
</button>
|
67 |
<h5 class="offcanvas-title" id="chat-agents-label">
|
68 |
+
<a style="text-decoration: none; color:inherit;"> Agent Info</a>
|
69 |
</h5>
|
70 |
</div>
|
71 |
<div class="offcanvas-body">
|
|
|
74 |
<i class="fa fa-plus"></i> New Agent
|
75 |
</button>
|
76 |
</div>
|
77 |
+
<div id="agent-info"></div>
|
|
|
78 |
</div>
|
79 |
<div class="my-2 row no-gutters justify-content-start">
|
80 |
<div class="col">
|
|
|
94 |
</div>
|
95 |
<div class="col-auto">
|
96 |
<button id="toggle-endpoint-and-api-key-items-button" class="btn px-0">
|
97 |
+
<i class="fa fa-fighter-jet"></i>
|
98 |
</button>
|
99 |
</div>
|
100 |
<select class="form-select" id="available-models-select" title="Available Models"></select>
|
101 |
+
<div class="col px-2">
|
102 |
<select class="form-select" id="agents-select" title="Agents"></select>
|
103 |
</div>
|
104 |
<div class="col-auto">
|
|
|
108 |
</div>
|
109 |
<div class="col-auto">
|
110 |
<button id="chat-agents-sidebar-toggle-button" class="btn px-0">
|
111 |
+
<i class="fa fa-cog"></i>
|
112 |
</button>
|
113 |
</div>
|
114 |
</div>
|
storages/agent_storage.js
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
class AgentStorageItem {
|
2 |
constructor(agent_storage) {
|
3 |
this.agent_storage = agent_storage;
|
@@ -67,6 +69,7 @@ class AgentStorage {
|
|
67 |
});
|
68 |
Promise.all(promises).then(() => {
|
69 |
this.set_default_agent();
|
|
|
70 |
});
|
71 |
});
|
72 |
}
|
@@ -93,6 +96,19 @@ class AgentStorage {
|
|
93 |
);
|
94 |
}
|
95 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
|
98 |
export let agent_storage = new AgentStorage();
|
|
|
1 |
+
import { AgentInfoWidget } from "../widgets/agent_info_widget.js";
|
2 |
+
|
3 |
class AgentStorageItem {
|
4 |
constructor(agent_storage) {
|
5 |
this.agent_storage = agent_storage;
|
|
|
69 |
});
|
70 |
Promise.all(promises).then(() => {
|
71 |
this.set_default_agent();
|
72 |
+
this.set_agent_info();
|
73 |
});
|
74 |
});
|
75 |
}
|
|
|
96 |
);
|
97 |
}
|
98 |
}
|
99 |
+
get_current_agent() {
|
100 |
+
let current_agent_name = $("#agents-select").val();
|
101 |
+
console.log("current_agent_name:", current_agent_name);
|
102 |
+
return this.db.agents.get(current_agent_name);
|
103 |
+
}
|
104 |
+
set_agent_info() {
|
105 |
+
this.get_current_agent().then((agent) => {
|
106 |
+
let agent_info_widget = new AgentInfoWidget({
|
107 |
+
agent: agent,
|
108 |
+
});
|
109 |
+
agent_info_widget.spawn();
|
110 |
+
});
|
111 |
+
}
|
112 |
}
|
113 |
|
114 |
export let agent_storage = new AgentStorage();
|
widgets/agent_info_widget.js
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { RangeNumberWidget } from "./range_number_widget.js";
|
2 |
+
import { AvailableModelsSelectWidget } from "./available_models_select_widget.js";
|
3 |
+
|
4 |
+
export class AgentInfoWidget {
|
5 |
+
constructor({ agent } = {}) {
|
6 |
+
this.agent = agent;
|
7 |
+
this.widget_id = `agent-x-${this.agent.name}-x`;
|
8 |
+
this.name_widget_id = `${this.widget_id}-name`;
|
9 |
+
this.model_widget_id = `${this.widget_id}-model`;
|
10 |
+
this.description_widget_id = `${this.widget_id}-description`;
|
11 |
+
this.temperature_widget_id = `${this.widget_id}-temperature`;
|
12 |
+
this.top_p_widget_id = `${this.widget_id}-top-p`;
|
13 |
+
this.max_output_tokens_widget_id = `${this.widget_id}-max-output-tokens`;
|
14 |
+
this.system_prompt_widget_id = `${this.widget_id}-system-prompt`;
|
15 |
+
}
|
16 |
+
spawn() {
|
17 |
+
this.create_widget();
|
18 |
+
this.append_to_agent_sidebar();
|
19 |
+
}
|
20 |
+
append_to_agent_sidebar() {
|
21 |
+
let agent_info = $("#agent-info");
|
22 |
+
agent_info.empty();
|
23 |
+
agent_info.append(this.widget);
|
24 |
+
}
|
25 |
+
remove() {
|
26 |
+
this.widget.remove();
|
27 |
+
}
|
28 |
+
create_model_widget() {
|
29 |
+
this.model_widget = new AvailableModelsSelectWidget({
|
30 |
+
widget_id: this.model_widget_id,
|
31 |
+
});
|
32 |
+
let model_widget_parent = this.widget.find(`#${this.model_widget_id}`);
|
33 |
+
this.model_widget.spawn_in_parent(model_widget_parent, "prepend");
|
34 |
+
}
|
35 |
+
create_widget() {
|
36 |
+
this.widget_html = `
|
37 |
+
<div id="${this.widget_id}">
|
38 |
+
<!-- name -->
|
39 |
+
<div class="form-floating mb-2">
|
40 |
+
<input id="${this.name_widget_id} " class="form-control" type="text"/>
|
41 |
+
<label class="form-label">Name</label>
|
42 |
+
</div>
|
43 |
+
<!-- model -->
|
44 |
+
<div id="${this.model_widget_id}" class="form-floating mb-2">
|
45 |
+
<label class="form-label">Model</label>
|
46 |
+
</div>
|
47 |
+
</div>
|
48 |
+
`;
|
49 |
+
this.widget = $(this.widget_html);
|
50 |
+
this.create_model_widget();
|
51 |
+
}
|
52 |
+
}
|