Hansimov commited on
Commit
dd32c33
·
1 Parent(s): 86d9130

:gem: [Feature] Render agent info at sidebar

Browse files
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;" href="#">Agents</a>
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
- <ul id="chat-agents-sidebar-items" class="navbar-nav justify-content-end flex-grow-1">
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-key"></i>
99
  </button>
100
  </div>
101
  <select class="form-select" id="available-models-select" title="Available Models"></select>
102
- <div class="col px-0">
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-weixin"></i>
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
+ }