158 lines
4.0 KiB
Go
158 lines
4.0 KiB
Go
// Copyright 2025 WIT.COM Inc Licensed GPL 3.0
|
|
|
|
package chatpb
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"go.wit.com/lib/cobol"
|
|
"go.wit.com/lib/gui/shell"
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
func (all *Chats) PrintHumanTable() {
|
|
log.DaemonMode(true)
|
|
|
|
// print the header
|
|
args := []string{"uuid", "name", "age", "master", "devel", "user", "curver", "lasttag", "next", "repo type"}
|
|
sizes := []int{40, 40, 6, 4, 4, 4, 4, 4, 4, 4}
|
|
log.Info(cobol.StandardTableSize10(sizes, args))
|
|
|
|
for chat := range all.IterAll() {
|
|
chat.printChatToTable(sizes)
|
|
}
|
|
log.Infof("Total Chats: %d\n", all.Len())
|
|
}
|
|
|
|
func (c *Chat) printChatToTable(sizes []int) {
|
|
var args []string
|
|
age := c.Ctime.AsTime().String()
|
|
args = []string{c.Uuid, age, c.GetChatName(), "", "", "", "", "", "", ""}
|
|
|
|
start := cobol.StandardTableSize10(sizes, args)
|
|
|
|
log.Info(start)
|
|
}
|
|
|
|
func (c *Chat) PrintChatStatsTable() {
|
|
log.DaemonMode(true)
|
|
|
|
// print the header
|
|
args := []string{"uuid", "name", "age", "master", "devel", "user", "curver", "lasttag", "next", "repo type"}
|
|
sizes := []int{40, 40, 6, 4, 4, 4, 4, 4, 4, 4}
|
|
log.Info(cobol.StandardTableSize10(sizes, args))
|
|
|
|
for _, e := range c.GetSession() {
|
|
var args []string
|
|
args = []string{e.Uuid, "", "", "", "", "", "", "", "", ""}
|
|
|
|
start := cobol.StandardTableSize10(sizes, args)
|
|
|
|
log.Info(start)
|
|
}
|
|
log.Infof("Total Chats: %d\n", len(c.GetEntries()))
|
|
}
|
|
|
|
func (c *Chat) PrintChatEntriesTable() {
|
|
log.DaemonMode(true)
|
|
|
|
// print the header
|
|
args := []string{"uuid", "age", "con file", "Who", "model", "", "", "", "", ""}
|
|
sizes := []int{40, 16, 8, 4, 8, 2, 2, 2, 2, 2}
|
|
log.Info(cobol.StandardTableSize10(sizes, args))
|
|
|
|
for _, e := range c.GetEntries() {
|
|
var args []string
|
|
age := e.Ctime.AsTime().String()
|
|
args = []string{e.Uuid, age, e.GetContentFile(), e.From.String(), "", "", "", "", "", ""}
|
|
|
|
start := cobol.StandardTableSize10(sizes, args)
|
|
log.Info(start)
|
|
}
|
|
log.Infof("Total Chats: %d\n", len(c.GetEntries()))
|
|
}
|
|
|
|
func (c *Chat) PrintChatGeminiTable() {
|
|
log.DaemonMode(true)
|
|
|
|
// print the header
|
|
args := []string{"uuid", "age", "ID", "Who", "model", "", "", "", "", ""}
|
|
sizes := []int{40, 5, 5, 8, 16, 2, 2, 2, 2, 2}
|
|
log.Info(cobol.StandardTableSize10(sizes, args))
|
|
|
|
for _, e := range c.GetEntries() {
|
|
var args []string
|
|
dur := time.Since(e.Ctime.AsTime())
|
|
age := shell.FormatDuration(dur)
|
|
var model string
|
|
var id string
|
|
if e.GeminiRequest == nil {
|
|
model = "nil"
|
|
} else {
|
|
model = e.GeminiRequest.Model
|
|
}
|
|
if e.GetContentFile() != "" {
|
|
parts := strings.Split(e.GetContentFile(), ".")
|
|
if len(parts) < 4 {
|
|
id = "??"
|
|
} else {
|
|
id = parts[3]
|
|
}
|
|
}
|
|
args = []string{e.Uuid, age, id, e.From.String(), model, "", "", "", "", ""}
|
|
|
|
start := cobol.StandardTableSize10(sizes, args)
|
|
log.Info(start, e.GetContentFile())
|
|
}
|
|
log.Infof("Total Chats: %d\n", len(c.GetEntries()))
|
|
}
|
|
|
|
func (gr *GeminiRequest) PrintGeminiTable() {
|
|
if gr == nil {
|
|
return
|
|
}
|
|
log.DaemonMode(true)
|
|
|
|
// print the header
|
|
args := []string{"model", "what", "age", "cId", "partId", "", "", "", "", ""}
|
|
sizes := []int{16, 8, 4, 4, 4, 16, 120, 2, 2, 2}
|
|
log.Info(cobol.StandardTableSize10(sizes, args))
|
|
|
|
var countCONTENTS int
|
|
var countPARTS int
|
|
for x, c := range gr.GetContents() {
|
|
model := gr.Model
|
|
cId := log.Sprintf("%d", x)
|
|
countCONTENTS += 1
|
|
for i, p := range c.GetParts() {
|
|
var args []string
|
|
partId := log.Sprintf("%d", i)
|
|
|
|
// removes newline chars from the text
|
|
parts := strings.Split(p.GetText(), "\n")
|
|
txt := strings.Join(parts, "__")
|
|
|
|
what := "TXT"
|
|
|
|
if fc := p.GetFunctionCall(); fc != nil {
|
|
what = "FuncCall"
|
|
txt = log.Sprintf("%s, %v", fc.Name, fc.Args)
|
|
|
|
}
|
|
if fr := p.GetFunctionResponse(); fr != nil {
|
|
what = "FuncResp"
|
|
txt = fr.Name
|
|
txt = log.Sprintf("%s %s, %v", fr.Id, fr.Name, fr.Response)
|
|
}
|
|
|
|
args = []string{model, what, "", cId, partId, p.ThoughtSignature, txt, "", "", ""}
|
|
|
|
start := cobol.StandardTableSize10(sizes, args)
|
|
log.Info(start)
|
|
countPARTS += 1
|
|
}
|
|
}
|
|
log.Infof("Total Contents (%d) Parts (%d)\n", countCONTENTS, countPARTS)
|
|
}
|