SimpleChatTCRV:ChatMessage: UniqId, Delete logic, edit popover ui
This commit is contained in:
parent
dc71a9be4c
commit
1d2ef9dddb
|
|
@ -44,6 +44,11 @@
|
||||||
<p> You need to have javascript enabled.</p>
|
<p> You need to have javascript enabled.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="popover-edit" popover="auto">
|
||||||
|
<button id="popover-edit-del"> ❌ </button>
|
||||||
|
<button id="popover-edit-copy"> 📋 </button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="tool-div">
|
<div id="tool-div">
|
||||||
<hr>
|
<hr>
|
||||||
<div class="sameline">
|
<div class="sameline">
|
||||||
|
|
|
||||||
|
|
@ -743,13 +743,16 @@ sliding window based drop off or even before they kick in, this can help in many
|
||||||
* add open, transact, put and get. Use for chat session save and load
|
* add open, transact, put and get. Use for chat session save and load
|
||||||
* getKeys used to show Restore/Load button wrt chat sessions.
|
* getKeys used to show Restore/Load button wrt chat sessions.
|
||||||
|
|
||||||
|
* ChatMessage
|
||||||
|
* assign a globally unique (ie across sessions) id to each chat message instance.
|
||||||
|
* add support for deleting chat message based on its uniquie id in SimpleChat.
|
||||||
|
* add a popover div block in html, which contains the edit menu wrt chat messages
|
||||||
|
|
||||||
|
|
||||||
#### ToDo
|
#### ToDo
|
||||||
|
|
||||||
Is the tool call promise land trap deep enough, need to think through and explore around this once later.
|
Is the tool call promise land trap deep enough, need to think through and explore around this once later.
|
||||||
|
|
||||||
Handle multimodal handshaking with ai models [WIP].
|
|
||||||
|
|
||||||
Add fetch_rss and may be different document formats processing related tool calling, in turn through
|
Add fetch_rss and may be different document formats processing related tool calling, in turn through
|
||||||
the simpleproxy.py if and where needed.
|
the simpleproxy.py if and where needed.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,15 @@
|
||||||
max-width: 20vmin;
|
max-width: 20vmin;
|
||||||
max-height: 20vmin;
|
max-height: 20vmin;
|
||||||
}
|
}
|
||||||
|
#popover-edit {
|
||||||
|
position:absolute;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0;
|
||||||
|
border-width: 0;
|
||||||
|
}
|
||||||
|
#popover-edit button {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.gridx2 {
|
.gridx2 {
|
||||||
|
|
|
||||||
|
|
@ -257,6 +257,16 @@ class NSChatMessage {
|
||||||
|
|
||||||
class ChatMessageEx {
|
class ChatMessageEx {
|
||||||
|
|
||||||
|
static uniqCounter = 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a globally (ie across chat sessions) unique id wrt chat messages.
|
||||||
|
*/
|
||||||
|
static getUniqId() {
|
||||||
|
this.uniqCounter += 1
|
||||||
|
return this.uniqCounter
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represent a Message in the Chat.
|
* Represent a Message in the Chat.
|
||||||
* @param {NSChatMessage|undefined} nsChatMsg - will create a default NSChatMessage instance, if undefined
|
* @param {NSChatMessage|undefined} nsChatMsg - will create a default NSChatMessage instance, if undefined
|
||||||
|
|
@ -268,6 +278,7 @@ class ChatMessageEx {
|
||||||
} else {
|
} else {
|
||||||
this.ns = new NSChatMessage()
|
this.ns = new NSChatMessage()
|
||||||
}
|
}
|
||||||
|
this.uniqId = ChatMessageEx.getUniqId()
|
||||||
this.trimmedContent = trimmedContent;
|
this.trimmedContent = trimmedContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -651,6 +662,22 @@ class SimpleChat {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a chat message in place using chat message uniqId.
|
||||||
|
* @param {number} uniqId
|
||||||
|
*/
|
||||||
|
delete(uniqId) {
|
||||||
|
let index = this.xchat.findIndex((msg)=>{
|
||||||
|
if (msg.uniqId == uniqId) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
if (index >= 0) {
|
||||||
|
this.xchat.splice(index, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the last message in the chat history is a ToolTemp role based one.
|
* Check if the last message in the chat history is a ToolTemp role based one.
|
||||||
* If so, then
|
* If so, then
|
||||||
|
|
@ -1000,6 +1027,7 @@ class MultiChatUI {
|
||||||
this.elBtnTool = /** @type{HTMLButtonElement} */(document.getElementById("tool-btn"));
|
this.elBtnTool = /** @type{HTMLButtonElement} */(document.getElementById("tool-btn"));
|
||||||
this.elInToolName = /** @type{HTMLInputElement} */(document.getElementById("toolname-in"));
|
this.elInToolName = /** @type{HTMLInputElement} */(document.getElementById("toolname-in"));
|
||||||
this.elInToolArgs = /** @type{HTMLInputElement} */(document.getElementById("toolargs-in"));
|
this.elInToolArgs = /** @type{HTMLInputElement} */(document.getElementById("toolargs-in"));
|
||||||
|
this.elPopoverEdit = /** @type{HTMLElement} */(document.getElementById("popover-edit"));
|
||||||
|
|
||||||
// Save any placeholder set by default like through html, to restore where needed
|
// Save any placeholder set by default like through html, to restore where needed
|
||||||
this.elInUser.dataset.placeholder = this.elInUser.placeholder
|
this.elInUser.dataset.placeholder = this.elInUser.placeholder
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue