more changes to make import from gemini-cli work
This commit is contained in:
parent
aebfe325d6
commit
aa2483e255
5
Makefile
5
Makefile
|
@ -1,4 +1,4 @@
|
||||||
all: clean chat.pb.go goimports vet
|
all: clean chat.pb.go book.pb.go goimports vet
|
||||||
|
|
||||||
goimports:
|
goimports:
|
||||||
goimports -w *.go
|
goimports -w *.go
|
||||||
|
@ -6,6 +6,9 @@ goimports:
|
||||||
chat.pb.go: chat.proto
|
chat.pb.go: chat.proto
|
||||||
autogenpb --proto chat.proto
|
autogenpb --proto chat.proto
|
||||||
|
|
||||||
|
book.pb.go: book.proto
|
||||||
|
autogenpb --proto book.proto
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.pb.go *.patch
|
rm -f *.pb.go *.patch
|
||||||
-rm -f go.*
|
-rm -f go.*
|
||||||
|
|
17
addChat.go
17
addChat.go
|
@ -6,6 +6,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
|
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
|
||||||
)
|
)
|
||||||
|
|
||||||
// returns true if the pb was added
|
// returns true if the pb was added
|
||||||
|
@ -23,14 +24,12 @@ func (c *Chat) AddGeminiRequest(fname string, age time.Time, pb *GeminiRequest)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Info("not sure if c.Entries == pb for real. need to read Content & Parts")
|
log.Info("Adding new ChatEntry for", "/tmp/"+fname)
|
||||||
/*
|
e := new(ChatEntry)
|
||||||
e := new(ChatEntry)
|
e.Ctime = timestamppb.New(age)
|
||||||
e.Ctime = timestamppb.New(age)
|
e.From = Who_USER
|
||||||
e.From = Who_USER
|
e.ContentFile = fname
|
||||||
e.ContentFile = fname
|
e.GeminiRequest = pb
|
||||||
e.GeminiRequest = pb
|
c.AppendEntry(e)
|
||||||
c.AppendEntry(e)
|
|
||||||
*/
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package chatpb;
|
||||||
|
|
||||||
|
import "google/protobuf/timestamp.proto";
|
||||||
|
import "google/protobuf/struct.proto";
|
||||||
|
import "chat.proto";
|
||||||
|
|
||||||
|
message Book {
|
||||||
|
string uuid = 1; // `autogenpb:unique` `autogenpb:sort`
|
||||||
|
google.protobuf.Timestamp ctime = 2;
|
||||||
|
string Title = 3;
|
||||||
|
int32 version = 4;
|
||||||
|
Who from = 5;
|
||||||
|
string content = 6;
|
||||||
|
Table table = 7;
|
||||||
|
GeminiRequest GeminiRequest = 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Books { // `autogenpb:marshal` `autogenpb:mutex` `autogenpb:gui`
|
||||||
|
string uuid = 1; // `autogenpb:uuid:8b6409ad-4498-43a6-b09a-7835c00dcb9a`
|
||||||
|
string version = 2; // `autogenpb:version:v0.0.1`
|
||||||
|
repeated Book Books = 3; // THIS MUST BE Chat and then Chats
|
||||||
|
}
|
214
chat.proto
214
chat.proto
|
@ -7,10 +7,10 @@ import "google/protobuf/struct.proto";
|
||||||
|
|
||||||
// Main request structure
|
// Main request structure
|
||||||
|
|
||||||
message GeminiRequest { // `autogenpb:marshal` `autogenpb:mutex`
|
message GeminiRequest { // `autogenpb:marshal` `autogenpb:mutex`
|
||||||
string model = 1;
|
string model = 1;
|
||||||
Config config = 2;
|
Config config = 2;
|
||||||
repeated Content contents = 3;
|
repeated Content contents = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abort signal for the request
|
// Abort signal for the request
|
||||||
|
@ -18,72 +18,95 @@ message AbortSignal {
|
||||||
}
|
}
|
||||||
|
|
||||||
message Schema {
|
message Schema {
|
||||||
string type = 1;
|
string type = 1;
|
||||||
map<string, Schema> properties = 2;
|
map<string, Schema> properties = 2;
|
||||||
repeated string required = 3;
|
repeated string required = 3;
|
||||||
string description = 4;
|
string description = 4;
|
||||||
Schema items = 5;
|
Schema items = 5;
|
||||||
repeated string enum = 6;
|
repeated string enum = 6;
|
||||||
int32 minimum = 7;
|
int32 minimum = 7;
|
||||||
int32 minLength = 8;
|
int32 minLength = 8;
|
||||||
int32 minItems = 9;
|
int32 minItems = 9;
|
||||||
google.protobuf.Value default_value = 10 [json_name = "default"];
|
google.protobuf.Value default_value = 10 [json_name = "default"];
|
||||||
}
|
}
|
||||||
|
|
||||||
message FunctionDeclaration {
|
message FunctionDeclaration {
|
||||||
string name = 1;
|
string name = 1;
|
||||||
string description = 2;
|
string description = 2;
|
||||||
Schema parameters_json_schema = 3;
|
Schema parameters_json_schema = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GoogleSearch {
|
||||||
}
|
}
|
||||||
|
|
||||||
message Tool {
|
message Tool {
|
||||||
repeated FunctionDeclaration functionDeclarations = 1;
|
repeated FunctionDeclaration functionDeclarations = 1;
|
||||||
|
GoogleSearch googleSearch = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configuration for the request
|
// Configuration for the request
|
||||||
message Config {
|
message Config {
|
||||||
message ThinkingConfig {
|
message ThinkingConfig {
|
||||||
bool includeThoughts = 1;
|
bool includeThoughts = 1;
|
||||||
|
int32 thinkingBudget = 2;
|
||||||
}
|
}
|
||||||
double temperature = 2;
|
double temperature = 2;
|
||||||
double topP = 3;
|
double topP = 3;
|
||||||
string systemInstruction = 4;
|
string systemInstruction = 4;
|
||||||
ResponseJsonSchema responseJsonSchema = 5;
|
ResponseJsonSchema responseJsonSchema = 5;
|
||||||
string responseMimeType = 6;
|
string responseMimeType = 6;
|
||||||
AbortSignal abort_signal = 7;
|
AbortSignal abort_signal = 7;
|
||||||
ThinkingConfig thinkingConfig = 8;
|
ThinkingConfig thinkingConfig = 8;
|
||||||
repeated Tool tools = 9;
|
repeated Tool tools = 9;
|
||||||
}
|
}
|
||||||
// JSON schema for the response
|
// JSON schema for the response
|
||||||
message ResponseJsonSchema {
|
message ResponseJsonSchema {
|
||||||
string type = 1;
|
string type = 1;
|
||||||
Properties properties = 2;
|
Properties properties = 2;
|
||||||
repeated string required = 3;
|
repeated string required = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Properties within the JSON schema
|
// Properties within the JSON schema
|
||||||
message Properties {
|
message Properties {
|
||||||
Reasoning reasoning = 1;
|
Reasoning reasoning = 1;
|
||||||
NextSpeaker next_speaker = 2;
|
NextSpeaker next_speaker = 2;
|
||||||
|
CorrectedNewStringEscaping corrected_new_string_escaping = 3;
|
||||||
|
CorrectedTargetSnippet corrected_target_snippet = 4;
|
||||||
|
Confidence confidence = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Confidence {
|
||||||
|
string type = 1;
|
||||||
|
string description = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CorrectedTargetSnippet {
|
||||||
|
string type = 1;
|
||||||
|
string description = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reasoning property
|
// Reasoning property
|
||||||
|
message CorrectedNewStringEscaping {
|
||||||
|
string type = 1;
|
||||||
|
string description = 2;
|
||||||
|
}
|
||||||
|
|
||||||
message Reasoning {
|
message Reasoning {
|
||||||
string type = 1;
|
string type = 1;
|
||||||
string description = 2;
|
string description = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next speaker property
|
// Next speaker property
|
||||||
message NextSpeaker {
|
message NextSpeaker {
|
||||||
string type = 1;
|
string type = 1;
|
||||||
repeated string enum = 2;
|
repeated string enum = 2;
|
||||||
string description = 3;
|
string description = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Content of the chat
|
// Content of the chat
|
||||||
message Content {
|
message Content {
|
||||||
string role = 1;
|
string role = 1;
|
||||||
repeated Part parts = 2;
|
repeated Part parts = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Part of the content
|
// Part of the content
|
||||||
|
@ -93,51 +116,52 @@ message Part {
|
||||||
FunctionCall functionCall = 2;
|
FunctionCall functionCall = 2;
|
||||||
FunctionResponse functionResponse = 3;
|
FunctionResponse functionResponse = 3;
|
||||||
}
|
}
|
||||||
string thoughtSignature = 4;
|
string thoughtSignature = 4;
|
||||||
}
|
}
|
||||||
// Function call
|
// Function call
|
||||||
message FunctionCall {
|
message FunctionCall {
|
||||||
string name = 1;
|
string name = 1;
|
||||||
argsInfo args = 3;
|
argsInfo args = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message argsInfo {
|
message argsInfo {
|
||||||
string absolute_path = 1;
|
string absolute_path = 1;
|
||||||
string description = 2;
|
string description = 2;
|
||||||
string command = 3;
|
string command = 3;
|
||||||
string new_string = 4;
|
string new_string = 4;
|
||||||
string old_string = 5;
|
string old_string = 5;
|
||||||
int32 expected_replacements = 6;
|
int32 expected_replacements = 6;
|
||||||
string file_path = 7;
|
string file_path = 7;
|
||||||
string directory = 8;
|
string directory = 8;
|
||||||
string path = 9;
|
string path = 9;
|
||||||
string thinkingConfig = 10;
|
string thinkingConfig = 10;
|
||||||
string pattern = 11;
|
string pattern = 11;
|
||||||
string content = 12;
|
string content = 12;
|
||||||
string fact = 13;
|
string fact = 13;
|
||||||
repeated string paths = 14;
|
repeated string paths = 14;
|
||||||
|
string query = 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function response
|
// Function response
|
||||||
message FunctionResponse {
|
message FunctionResponse {
|
||||||
string id = 1;
|
string id = 1;
|
||||||
string name = 2;
|
string name = 2;
|
||||||
Response response = 3;
|
Response response = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Response from a function call
|
// Response from a function call
|
||||||
message Response {
|
message Response {
|
||||||
string output = 1;
|
string output = 1;
|
||||||
string error = 2;
|
string error = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Row {
|
message Row {
|
||||||
repeated string fields = 1;
|
repeated string fields = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Table {
|
message Table {
|
||||||
int32 columns = 1;
|
int32 columns = 1;
|
||||||
repeated Row rows = 2;
|
repeated Row rows = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Who {
|
enum Who {
|
||||||
|
@ -147,48 +171,48 @@ enum Who {
|
||||||
}
|
}
|
||||||
|
|
||||||
message ToolCall {
|
message ToolCall {
|
||||||
string name = 1;
|
string name = 1;
|
||||||
string input = 2;
|
string input = 2;
|
||||||
string description = 3;
|
string description = 3;
|
||||||
string output_stdout = 4;
|
string output_stdout = 4;
|
||||||
string output_stderr = 5;
|
string output_stderr = 5;
|
||||||
int32 exit_code = 6;
|
int32 exit_code = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CodeSnippet {
|
message CodeSnippet {
|
||||||
string filename = 1;
|
string filename = 1;
|
||||||
string content = 2;
|
string content = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ChatEntry { // `autogenpb:marshal`
|
message ChatEntry { // `autogenpb:marshal`
|
||||||
Who from = 1;
|
Who from = 1;
|
||||||
google.protobuf.Timestamp ctime = 2;
|
google.protobuf.Timestamp ctime = 2;
|
||||||
string content = 3;
|
string content = 3;
|
||||||
Table table = 4;
|
Table table = 4;
|
||||||
repeated ToolCall ToolCalls = 5;
|
repeated ToolCall ToolCalls = 5;
|
||||||
string ContentFile = 6;
|
string ContentFile = 6;
|
||||||
string uuid = 7;
|
string uuid = 7;
|
||||||
repeated CodeSnippet Snippets = 8;
|
repeated CodeSnippet Snippets = 8;
|
||||||
repeated Part parts = 9;
|
repeated Part parts = 9;
|
||||||
GeminiRequest GeminiRequest = 10;
|
GeminiRequest GeminiRequest = 10;
|
||||||
int32 RequestCounter = 11;
|
int32 RequestCounter = 11;
|
||||||
repeated string paths = 12;
|
repeated string paths = 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionStats {
|
message SessionStats {
|
||||||
string uuid = 1;
|
string uuid = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Chat {
|
message Chat {
|
||||||
string uuid = 1; // `autogenpb:unique` `autogenpb:sort`
|
string uuid = 1; // `autogenpb:unique` `autogenpb:sort`
|
||||||
google.protobuf.Timestamp ctime = 2;
|
google.protobuf.Timestamp ctime = 2;
|
||||||
string ChatName = 3;
|
string ChatName = 3;
|
||||||
repeated ChatEntry Entries = 4;
|
repeated ChatEntry Entries = 4;
|
||||||
repeated SessionStats Session = 5;
|
repeated SessionStats Session = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Chats { // `autogenpb:marshal` `autogenpb:mutex` `autogenpb:gui`
|
message Chats { // `autogenpb:marshal` `autogenpb:mutex` `autogenpb:gui`
|
||||||
string uuid = 1; // `autogenpb:uuid:9fd31f10-c25d-4d66-bc8d-5f6eb7c79057` `autogenpb:primary`
|
string uuid = 1; // `autogenpb:uuid:9fd31f10-c25d-4d66-bc8d-5f6eb7c79057` `autogenpb:primary`
|
||||||
string version = 2; // `autogenpb:version:v0.0.1`
|
string version = 2; // `autogenpb:version:v0.0.1`
|
||||||
repeated Chat Chats = 3; // THIS MUST BE Chat and then Chats
|
repeated Chat Chats = 3; // THIS MUST BE Chat and then Chats
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ func (all *Chats) ConfigSave() error {
|
||||||
log.Infof("chatpb.ConfigSave() failed len(Chats)=%d bytes=%d", len(cleanChats.Chats), len(data))
|
log.Infof("chatpb.ConfigSave() failed len(Chats)=%d bytes=%d", len(cleanChats.Chats), len(data))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
configWrite("regex.text", []byte(cleanChats.FormatTEXT()))
|
// configWrite("regex.text", []byte(cleanChats.FormatTEXT()))
|
||||||
// log.Infof("chatpb.ConfigSave() worked len(Chats)=%d bytes=%d", len(cleanChats.Chats), len(data))
|
// log.Infof("chatpb.ConfigSave() worked len(Chats)=%d bytes=%d", len(cleanChats.Chats), len(data))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue