diff options
| -rw-r--r-- | chat.proto | 219 | 
1 files changed, 219 insertions, 0 deletions
diff --git a/chat.proto b/chat.proto new file mode 100644 index 00000000..cdf53549 --- /dev/null +++ b/chat.proto @@ -0,0 +1,219 @@ +syntax = "proto3"; + +package chatpb; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/struct.proto"; + +// Main request structure + +message GeminiRequest {                                                                    // `autogenpb:marshal` `autogenpb:mutex` +        string                                     model                             = 1; +        Config                                     config                            = 2; +        repeated Content                           contents                          = 3; +} + +// Abort signal for the request +message AbortSignal { +} + +message Schema { +        string                                     type                              = 1; +        map<string, Schema>                        properties                        = 2; +        repeated string                            required                          = 3; +        string                                     description                       = 4; +        Schema                                     items                             = 5; +        repeated string                            enum                              = 6; +        int32                                      minimum                           = 7; +        int32                                      minLength                         = 8; +        int32                                      minItems                          = 9; +        google.protobuf.Value default_value = 10   [json_name                        = "default"]; +} + +message FunctionDeclaration { +        string                                     name                              = 1; +        string                                     description                       = 2; +        Schema                                     parameters_json_schema            = 3; +} + +message GoogleSearch { +} + +message Tool { +        repeated FunctionDeclaration               functionDeclarations              = 1; +        GoogleSearch                               googleSearch                      = 2; +} + +// Configuration for the request +message Config { +        message ThinkingConfig { +                bool    includeThoughts     = 1; +                int32   thinkingBudget      = 2; +        } +        double                                     temperature                       = 2; +        double                                     topP                              = 3; +        string                                     systemInstruction                 = 4; +        ResponseJsonSchema                         responseJsonSchema                = 5; +        string                                     responseMimeType                  = 6; +        AbortSignal                                abort_signal                      = 7; +        ThinkingConfig                             thinkingConfig                    = 8; +        repeated Tool                              tools                             = 9; +} +// JSON schema for the response +message ResponseJsonSchema { +        string                                     type                              = 1; +        Properties                                 properties                        = 2; +        repeated string                            required                          = 3; +} + +// Properties within the JSON schema +message Properties { +        Reasoning                                  reasoning                         = 1; +        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 +message CorrectedNewStringEscaping { +        string                                     type                              = 1; +        string                                     description                       = 2; +} + +message Reasoning { +        string                                     type                              = 1; +        string                                     description                       = 2; +} + +// Next speaker property +message NextSpeaker { +        string                                     type                              = 1; +        repeated string                            enum                              = 2; +        string                                     description                       = 3; +} + +// Content of the chat +message Content { +        string                                     role                              = 1; +        repeated Part                              parts                             = 2; +} + +// Part of the content +message Part { +        oneof part_type { +                string             text                 = 1; +                FunctionCall       functionCall         = 2; +                FunctionResponse   functionResponse     = 3; +        } +        string                                     thoughtSignature                  = 4; +} +// Function call +message FunctionCall { +        string                                     name                              = 1; +        argsInfo                                   args                              = 3; +} + +message argsInfo { +        string                                     absolute_path                     = 1; +        string                                     description                       = 2; +        string                                     command                           = 3; +        string                                     new_string                        = 4; +        string                                     old_string                        = 5; +        int32                                      expected_replacements             = 6; +        string                                     file_path                         = 7; +        string                                     directory                         = 8; +        string                                     path                              = 9; +        string                                     thinkingConfig                    = 10; +        string                                     pattern                           = 11; +        string                                     content                           = 12; +        string                                     fact                              = 13; +        repeated string                            paths                             = 14; +        string                                     query                             = 15; +} + +// Function response +message FunctionResponse { +        string                                     id                                = 1; +        string                                     name                              = 2; +        Response                                   response                          = 3; +} + +// Response from a function call +message Response { +        string                                     output                            = 1; +        string                                     error                             = 2; +} + +message Row { +        repeated string                            fields                            = 1; +} + +message Table { +        int32                                      columns                           = 1; +        repeated Row                               rows                              = 2; +} + +enum Who { +        NOONE = 0; +        REGEX = 1; +        USER = 2; +} + +message ToolCall { +        string                                     name                              = 1; +        string                                     input                             = 2; +        string                                     description                       = 3; +        string                                     output_stdout                     = 4; +        string                                     output_stderr                     = 5; +        int32                                      exit_code                         = 6; +} + +message CodeSnippet { +        string                                     filename                          = 1; +        string                                     content                           = 2; +} + +message ChatEntry {                                                                        // `autogenpb:marshal` +        Who                                        from                              = 1; +        google.protobuf.Timestamp                  ctime                             = 2; +        string                                     content                           = 3; +        Table                                      table                             = 4; +        repeated ToolCall                          ToolCalls                         = 5; +        string                                     ContentFile                       = 6; +        string                                     uuid                              = 7; +        repeated CodeSnippet                       Snippets                          = 8; +        repeated Part                              parts                             = 9; +        GeminiRequest                              GeminiRequest                     = 10; +        int32                                      RequestCounter                    = 11; +        repeated string                            paths                             = 12; +} + +message SessionStats { +        string                                     uuid                              = 1; +} + +message Chat { +        string                                     uuid                              = 1;  // `autogenpb:unique` `autogenpb:sort` +        google.protobuf.Timestamp                  ctime                             = 2; +        string                                     ChatName                          = 3; +        repeated ChatEntry                         Entries                           = 4; +        repeated SessionStats                      Session                           = 5; +} + +message Chats {                                                                            // `autogenpb:marshal` `autogenpb:mutex` `autogenpb:gui` +        string                                     uuid                              = 1;  // `autogenpb:uuid:9fd31f10-c25d-4d66-bc8d-5f6eb7c79057` `autogenpb:primary` +        string                                     version                           = 2;  // `autogenpb:version:v0.0.1` +        repeated Chat                              Chats                             = 3;  // THIS MUST BE  Chat  and then  Chats +        string                                     filename                          = 4;  // `autogenpb:save` -- this enables autogenerated pb.Load() and pb.Save() +}  | 
