more changes to make import from gemini-cli work

This commit is contained in:
Jeff Carr 2025-09-02 15:18:41 -05:00
parent aebfe325d6
commit aa2483e255
5 changed files with 156 additions and 106 deletions

View File

@ -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.*

View File

@ -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
} }

24
book.proto Normal file
View File

@ -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
}

View File

@ -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
} }

View File

@ -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
} }