@ainetwork/adk-provider-model-gemini 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -37,20 +37,20 @@ var GeminiModel = class extends import_modules.BaseModel {
37
37
  }
38
38
  getMessageRole(role) {
39
39
  switch (role) {
40
- case import_memory.ChatRole.USER:
40
+ case import_memory.MessageRole.USER:
41
41
  return "user";
42
- case import_memory.ChatRole.MODEL:
43
- case import_memory.ChatRole.SYSTEM:
42
+ case import_memory.MessageRole.MODEL:
43
+ case import_memory.MessageRole.SYSTEM:
44
44
  return "model";
45
45
  default:
46
46
  return "model";
47
47
  }
48
48
  }
49
49
  generateMessages(params) {
50
- const { query, sessionHistory, systemPrompt } = params;
50
+ const { query, thread, systemPrompt } = params;
51
51
  const messages = !systemPrompt ? [] : [{ role: "model", parts: [{ text: systemPrompt.trim() }] }];
52
- const sessionContent = !sessionHistory ? [] : Object.keys(sessionHistory.chats).map((chatId) => {
53
- const chat = sessionHistory.chats[chatId];
52
+ const sessionContent = !thread ? [] : Object.keys(thread.messages).map((chatId) => {
53
+ const chat = thread.messages[chatId];
54
54
  return {
55
55
  role: this.getMessageRole(chat.role),
56
56
  parts: [{ text: chat.content.parts[0] }]
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts"],"sourcesContent":["import { BaseModel } from \"@ainetwork/adk/modules\";\nimport { ChatRole, type SessionObject } from \"@ainetwork/adk/types/memory\";\nimport type {\n\tLLMStream,\n\tStreamChunk,\n\tToolCallDelta,\n} from \"@ainetwork/adk/types/stream\";\nimport type {\n\tFetchResponse,\n\tIA2ATool,\n\tIAgentTool,\n\tIMCPTool,\n\tToolCall,\n} from \"@ainetwork/adk/types/tool\";\nimport { TOOL_PROTOCOL_TYPE } from \"@ainetwork/adk/types/tool\";\nimport {\n\ttype Content,\n\ttype FunctionCall,\n\ttype FunctionDeclaration,\n\ttype GenerateContentResponse,\n\tGoogleGenAI,\n} from \"@google/genai\";\n\nexport class GeminiModel extends BaseModel<Content, FunctionDeclaration> {\n\tprivate client: GoogleGenAI;\n\tprivate modelName: string;\n\n\tconstructor(apiKey: string, modelName: string) {\n\t\tsuper();\n\t\tthis.client = new GoogleGenAI({ apiKey });\n\t\tthis.modelName = modelName;\n\t}\n\n\tprivate getMessageRole(role: ChatRole) {\n\t\tswitch (role) {\n\t\t\tcase ChatRole.USER:\n\t\t\t\treturn \"user\";\n\t\t\tcase ChatRole.MODEL:\n\t\t\tcase ChatRole.SYSTEM:\n\t\t\t\treturn \"model\";\n\t\t\tdefault:\n\t\t\t\treturn \"model\"; /*FIXME*/\n\t\t}\n\t}\n\n\tgenerateMessages(params: {\n\t\tquery: string;\n\t\tsessionHistory?: SessionObject;\n\t\tsystemPrompt?: string;\n\t}): Content[] {\n\t\tconst { query, sessionHistory, systemPrompt } = params;\n\t\tconst messages: Content[] = !systemPrompt\n\t\t\t? []\n\t\t\t: [{ role: \"model\", parts: [{ text: systemPrompt.trim() }] }];\n\t\tconst sessionContent: Content[] = !sessionHistory\n\t\t\t? []\n\t\t\t: Object.keys(sessionHistory.chats).map((chatId: string) => {\n\t\t\t\t\tconst chat = sessionHistory.chats[chatId];\n\t\t\t\t\t// TODO: check message.content.type\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: this.getMessageRole(chat.role),\n\t\t\t\t\t\tparts: [{ text: chat.content.parts[0] }],\n\t\t\t\t\t};\n\t\t\t\t});\n\t\tconst userContent: Content = { role: \"user\", parts: [{ text: query }] };\n\t\treturn messages.concat(sessionContent).concat(userContent);\n\t}\n\n\tappendMessages(messages: Content[], message: string): void {\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tparts: [{ text: message }],\n\t\t});\n\t}\n\n\tasync fetch(messages: Content[]): Promise<FetchResponse> {\n\t\tconst response = await this.client.models.generateContent({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t});\n\n\t\treturn { content: response.text };\n\t}\n\n\tasync fetchWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<FetchResponse> {\n\t\tif (functions.length > 0) {\n\t\t\tconst response = await this.client.models.generateContent({\n\t\t\t\tmodel: this.modelName,\n\t\t\t\tcontents: messages,\n\t\t\t\tconfig: {\n\t\t\t\t\ttools: [{ functionDeclarations: functions }],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst { text, functionCalls } = response;\n\t\t\tconst hasName = (\n\t\t\t\tvalue: FunctionCall,\n\t\t\t): value is FunctionCall & { name: string } => {\n\t\t\t\treturn value.name !== undefined;\n\t\t\t};\n\t\t\tconst toolCalls: ToolCall[] | undefined = functionCalls\n\t\t\t\t?.filter(hasName)\n\t\t\t\t.map((value) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: value.name,\n\t\t\t\t\t\targuments: value.args,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tcontent: text,\n\t\t\t\ttoolCalls,\n\t\t\t};\n\t\t}\n\t\treturn await this.fetch(messages);\n\t}\n\n\tasync fetchStreamWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<LLMStream> {\n\t\tconst stream = await this.client.models.generateContentStream({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t\tconfig: { tools: [{ functionDeclarations: functions }] },\n\t\t});\n\n\t\treturn await this.createGeminiStreamAdapter(stream);\n\t}\n\n\t// NOTE(yoojin): Need to switch API Stream type to LLMStream.\n\tprivate createGeminiStreamAdapter(\n\t\tgeminiStream: AsyncIterable<GenerateContentResponse>,\n\t): LLMStream {\n\t\tconst hasName = (\n\t\t\tvalue: FunctionCall,\n\t\t): value is FunctionCall & { name: string } => {\n\t\t\treturn value.name !== undefined;\n\t\t};\n\n\t\treturn {\n\t\t\tasync *[Symbol.asyncIterator](): AsyncIterator<StreamChunk> {\n\t\t\t\tfor await (const geminiChunk of geminiStream) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tdelta: {\n\t\t\t\t\t\t\trole: geminiChunk.candidates?.[0]?.content?.role,\n\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]?.text ||\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\ttool_calls: hasName(\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t?.functionCall || {},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t? ([\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\t\t\t\t\tid:\n\t\t\t\t\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.id || \"id\",\n\t\t\t\t\t\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\t\t\t\t\t\tname: geminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.name,\n\t\t\t\t\t\t\t\t\t\t\t\targuments:\n JSON.stringify(geminiChunk.candidates?.[0]?.content?.parts?.[0]\n ?.functionCall?.args),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfinish_reason: geminiChunk.candidates?.[0]?.finishReason as any,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tprovider: \"gemini\",\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tconvertToolsToFunctions(tools: IAgentTool[]): FunctionDeclaration[] {\n\t\tconst functions: FunctionDeclaration[] = [];\n\t\tfor (const tool of tools) {\n\t\t\tif (!tool.enabled) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (tool.protocol === TOOL_PROTOCOL_TYPE.MCP) {\n\t\t\t\tconst { mcpTool, id } = tool as IMCPTool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: mcpTool.description,\n\t\t\t\t\tparametersJsonSchema: mcpTool.inputSchema,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// PROTOCOL_TYPE.A2A\n\t\t\t\tconst { id, card } = tool as IA2ATool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: card.description,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn functions;\n\t}\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../index.ts"],"sourcesContent":["import { BaseModel } from \"@ainetwork/adk/modules\";\nimport { MessageRole, type ThreadObject } from \"@ainetwork/adk/types/memory\";\nimport type {\n\tLLMStream,\n\tStreamChunk,\n} from \"@ainetwork/adk/types/stream\";\nimport type {\n\tFetchResponse,\n\tIA2ATool,\n\tIAgentTool,\n\tIMCPTool,\n\tToolCall,\n} from \"@ainetwork/adk/types/tool\";\nimport { TOOL_PROTOCOL_TYPE } from \"@ainetwork/adk/types/tool\";\nimport {\n\ttype Content,\n\ttype FunctionCall,\n\ttype FunctionDeclaration,\n\ttype GenerateContentResponse,\n\tGoogleGenAI,\n} from \"@google/genai\";\n\nexport class GeminiModel extends BaseModel<Content, FunctionDeclaration> {\n\tprivate client: GoogleGenAI;\n\tprivate modelName: string;\n\n\tconstructor(apiKey: string, modelName: string) {\n\t\tsuper();\n\t\tthis.client = new GoogleGenAI({ apiKey });\n\t\tthis.modelName = modelName;\n\t}\n\n\tprivate getMessageRole(role: MessageRole) {\n\t\tswitch (role) {\n\t\t\tcase MessageRole.USER:\n\t\t\t\treturn \"user\";\n\t\t\tcase MessageRole.MODEL:\n\t\t\tcase MessageRole.SYSTEM:\n\t\t\t\treturn \"model\";\n\t\t\tdefault:\n\t\t\t\treturn \"model\"; /*FIXME*/\n\t\t}\n\t}\n\n\tgenerateMessages(params: {\n\t\tquery: string;\n\t\tthread?: ThreadObject;\n\t\tsystemPrompt?: string;\n\t}): Content[] {\n\t\tconst { query, thread, systemPrompt } = params;\n\t\tconst messages: Content[] = !systemPrompt\n\t\t\t? []\n\t\t\t: [{ role: \"model\", parts: [{ text: systemPrompt.trim() }] }];\n\t\tconst sessionContent: Content[] = !thread\n\t\t\t? []\n\t\t\t: Object.keys(thread.messages).map((chatId: string) => {\n\t\t\t\t\tconst chat = thread.messages[chatId];\n\t\t\t\t\t// TODO: check message.content.type\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: this.getMessageRole(chat.role),\n\t\t\t\t\t\tparts: [{ text: chat.content.parts[0] }],\n\t\t\t\t\t};\n\t\t\t\t});\n\t\tconst userContent: Content = { role: \"user\", parts: [{ text: query }] };\n\t\treturn messages.concat(sessionContent).concat(userContent);\n\t}\n\n\tappendMessages(messages: Content[], message: string): void {\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tparts: [{ text: message }],\n\t\t});\n\t}\n\n\tasync fetch(messages: Content[]): Promise<FetchResponse> {\n\t\tconst response = await this.client.models.generateContent({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t});\n\n\t\treturn { content: response.text };\n\t}\n\n\tasync fetchWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<FetchResponse> {\n\t\tif (functions.length > 0) {\n\t\t\tconst response = await this.client.models.generateContent({\n\t\t\t\tmodel: this.modelName,\n\t\t\t\tcontents: messages,\n\t\t\t\tconfig: {\n\t\t\t\t\ttools: [{ functionDeclarations: functions }],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst { text, functionCalls } = response;\n\t\t\tconst hasName = (\n\t\t\t\tvalue: FunctionCall,\n\t\t\t): value is FunctionCall & { name: string } => {\n\t\t\t\treturn value.name !== undefined;\n\t\t\t};\n\t\t\tconst toolCalls: ToolCall[] | undefined = functionCalls\n\t\t\t\t?.filter(hasName)\n\t\t\t\t.map((value) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: value.name,\n\t\t\t\t\t\targuments: value.args,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tcontent: text,\n\t\t\t\ttoolCalls,\n\t\t\t};\n\t\t}\n\t\treturn await this.fetch(messages);\n\t}\n\n\tasync fetchStreamWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<LLMStream> {\n\t\tconst stream = await this.client.models.generateContentStream({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t\tconfig: { tools: [{ functionDeclarations: functions }] },\n\t\t});\n\n\t\treturn await this.createGeminiStreamAdapter(stream);\n\t}\n\n\t// NOTE(yoojin): Need to switch API Stream type to LLMStream.\n\tprivate createGeminiStreamAdapter(\n\t\tgeminiStream: AsyncIterable<GenerateContentResponse>,\n\t): LLMStream {\n\t\tconst hasName = (\n\t\t\tvalue: FunctionCall,\n\t\t): value is FunctionCall & { name: string } => {\n\t\t\treturn value.name !== undefined;\n\t\t};\n\n\t\treturn {\n\t\t\tasync *[Symbol.asyncIterator](): AsyncIterator<StreamChunk> {\n\t\t\t\tfor await (const geminiChunk of geminiStream) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tdelta: {\n\t\t\t\t\t\t\trole: geminiChunk.candidates?.[0]?.content?.role,\n\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]?.text ||\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\ttool_calls: hasName(\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t?.functionCall || {},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t? ([\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\t\t\t\t\tid:\n\t\t\t\t\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.id || \"id\",\n\t\t\t\t\t\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\t\t\t\t\t\tname: geminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.name,\n\t\t\t\t\t\t\t\t\t\t\t\targuments:\n JSON.stringify(geminiChunk.candidates?.[0]?.content?.parts?.[0]\n ?.functionCall?.args),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfinish_reason: geminiChunk.candidates?.[0]?.finishReason as any,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tprovider: \"gemini\",\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tconvertToolsToFunctions(tools: IAgentTool[]): FunctionDeclaration[] {\n\t\tconst functions: FunctionDeclaration[] = [];\n\t\tfor (const tool of tools) {\n\t\t\tif (!tool.enabled) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (tool.protocol === TOOL_PROTOCOL_TYPE.MCP) {\n\t\t\t\tconst { mcpTool, id } = tool as IMCPTool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: mcpTool.description,\n\t\t\t\t\tparametersJsonSchema: mcpTool.inputSchema,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// PROTOCOL_TYPE.A2A\n\t\t\t\tconst { id, card } = tool as IA2ATool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: card.description,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn functions;\n\t}\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BaseModel } from '@ainetwork/adk/modules';
2
- import { SessionObject } from '@ainetwork/adk/types/memory';
2
+ import { ThreadObject } from '@ainetwork/adk/types/memory';
3
3
  import { LLMStream } from '@ainetwork/adk/types/stream';
4
4
  import { FetchResponse, IAgentTool } from '@ainetwork/adk/types/tool';
5
5
  import { Content, FunctionDeclaration } from '@google/genai';
@@ -11,7 +11,7 @@ declare class GeminiModel extends BaseModel<Content, FunctionDeclaration> {
11
11
  private getMessageRole;
12
12
  generateMessages(params: {
13
13
  query: string;
14
- sessionHistory?: SessionObject;
14
+ thread?: ThreadObject;
15
15
  systemPrompt?: string;
16
16
  }): Content[];
17
17
  appendMessages(messages: Content[], message: string): void;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BaseModel } from '@ainetwork/adk/modules';
2
- import { SessionObject } from '@ainetwork/adk/types/memory';
2
+ import { ThreadObject } from '@ainetwork/adk/types/memory';
3
3
  import { LLMStream } from '@ainetwork/adk/types/stream';
4
4
  import { FetchResponse, IAgentTool } from '@ainetwork/adk/types/tool';
5
5
  import { Content, FunctionDeclaration } from '@google/genai';
@@ -11,7 +11,7 @@ declare class GeminiModel extends BaseModel<Content, FunctionDeclaration> {
11
11
  private getMessageRole;
12
12
  generateMessages(params: {
13
13
  query: string;
14
- sessionHistory?: SessionObject;
14
+ thread?: ThreadObject;
15
15
  systemPrompt?: string;
16
16
  }): Content[];
17
17
  appendMessages(messages: Content[], message: string): void;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // index.ts
2
2
  import { BaseModel } from "@ainetwork/adk/modules";
3
- import { ChatRole } from "@ainetwork/adk/types/memory";
3
+ import { MessageRole } from "@ainetwork/adk/types/memory";
4
4
  import { TOOL_PROTOCOL_TYPE } from "@ainetwork/adk/types/tool";
5
5
  import {
6
6
  GoogleGenAI
@@ -15,20 +15,20 @@ var GeminiModel = class extends BaseModel {
15
15
  }
16
16
  getMessageRole(role) {
17
17
  switch (role) {
18
- case ChatRole.USER:
18
+ case MessageRole.USER:
19
19
  return "user";
20
- case ChatRole.MODEL:
21
- case ChatRole.SYSTEM:
20
+ case MessageRole.MODEL:
21
+ case MessageRole.SYSTEM:
22
22
  return "model";
23
23
  default:
24
24
  return "model";
25
25
  }
26
26
  }
27
27
  generateMessages(params) {
28
- const { query, sessionHistory, systemPrompt } = params;
28
+ const { query, thread, systemPrompt } = params;
29
29
  const messages = !systemPrompt ? [] : [{ role: "model", parts: [{ text: systemPrompt.trim() }] }];
30
- const sessionContent = !sessionHistory ? [] : Object.keys(sessionHistory.chats).map((chatId) => {
31
- const chat = sessionHistory.chats[chatId];
30
+ const sessionContent = !thread ? [] : Object.keys(thread.messages).map((chatId) => {
31
+ const chat = thread.messages[chatId];
32
32
  return {
33
33
  role: this.getMessageRole(chat.role),
34
34
  parts: [{ text: chat.content.parts[0] }]
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts"],"sourcesContent":["import { BaseModel } from \"@ainetwork/adk/modules\";\nimport { ChatRole, type SessionObject } from \"@ainetwork/adk/types/memory\";\nimport type {\n\tLLMStream,\n\tStreamChunk,\n\tToolCallDelta,\n} from \"@ainetwork/adk/types/stream\";\nimport type {\n\tFetchResponse,\n\tIA2ATool,\n\tIAgentTool,\n\tIMCPTool,\n\tToolCall,\n} from \"@ainetwork/adk/types/tool\";\nimport { TOOL_PROTOCOL_TYPE } from \"@ainetwork/adk/types/tool\";\nimport {\n\ttype Content,\n\ttype FunctionCall,\n\ttype FunctionDeclaration,\n\ttype GenerateContentResponse,\n\tGoogleGenAI,\n} from \"@google/genai\";\n\nexport class GeminiModel extends BaseModel<Content, FunctionDeclaration> {\n\tprivate client: GoogleGenAI;\n\tprivate modelName: string;\n\n\tconstructor(apiKey: string, modelName: string) {\n\t\tsuper();\n\t\tthis.client = new GoogleGenAI({ apiKey });\n\t\tthis.modelName = modelName;\n\t}\n\n\tprivate getMessageRole(role: ChatRole) {\n\t\tswitch (role) {\n\t\t\tcase ChatRole.USER:\n\t\t\t\treturn \"user\";\n\t\t\tcase ChatRole.MODEL:\n\t\t\tcase ChatRole.SYSTEM:\n\t\t\t\treturn \"model\";\n\t\t\tdefault:\n\t\t\t\treturn \"model\"; /*FIXME*/\n\t\t}\n\t}\n\n\tgenerateMessages(params: {\n\t\tquery: string;\n\t\tsessionHistory?: SessionObject;\n\t\tsystemPrompt?: string;\n\t}): Content[] {\n\t\tconst { query, sessionHistory, systemPrompt } = params;\n\t\tconst messages: Content[] = !systemPrompt\n\t\t\t? []\n\t\t\t: [{ role: \"model\", parts: [{ text: systemPrompt.trim() }] }];\n\t\tconst sessionContent: Content[] = !sessionHistory\n\t\t\t? []\n\t\t\t: Object.keys(sessionHistory.chats).map((chatId: string) => {\n\t\t\t\t\tconst chat = sessionHistory.chats[chatId];\n\t\t\t\t\t// TODO: check message.content.type\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: this.getMessageRole(chat.role),\n\t\t\t\t\t\tparts: [{ text: chat.content.parts[0] }],\n\t\t\t\t\t};\n\t\t\t\t});\n\t\tconst userContent: Content = { role: \"user\", parts: [{ text: query }] };\n\t\treturn messages.concat(sessionContent).concat(userContent);\n\t}\n\n\tappendMessages(messages: Content[], message: string): void {\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tparts: [{ text: message }],\n\t\t});\n\t}\n\n\tasync fetch(messages: Content[]): Promise<FetchResponse> {\n\t\tconst response = await this.client.models.generateContent({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t});\n\n\t\treturn { content: response.text };\n\t}\n\n\tasync fetchWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<FetchResponse> {\n\t\tif (functions.length > 0) {\n\t\t\tconst response = await this.client.models.generateContent({\n\t\t\t\tmodel: this.modelName,\n\t\t\t\tcontents: messages,\n\t\t\t\tconfig: {\n\t\t\t\t\ttools: [{ functionDeclarations: functions }],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst { text, functionCalls } = response;\n\t\t\tconst hasName = (\n\t\t\t\tvalue: FunctionCall,\n\t\t\t): value is FunctionCall & { name: string } => {\n\t\t\t\treturn value.name !== undefined;\n\t\t\t};\n\t\t\tconst toolCalls: ToolCall[] | undefined = functionCalls\n\t\t\t\t?.filter(hasName)\n\t\t\t\t.map((value) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: value.name,\n\t\t\t\t\t\targuments: value.args,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tcontent: text,\n\t\t\t\ttoolCalls,\n\t\t\t};\n\t\t}\n\t\treturn await this.fetch(messages);\n\t}\n\n\tasync fetchStreamWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<LLMStream> {\n\t\tconst stream = await this.client.models.generateContentStream({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t\tconfig: { tools: [{ functionDeclarations: functions }] },\n\t\t});\n\n\t\treturn await this.createGeminiStreamAdapter(stream);\n\t}\n\n\t// NOTE(yoojin): Need to switch API Stream type to LLMStream.\n\tprivate createGeminiStreamAdapter(\n\t\tgeminiStream: AsyncIterable<GenerateContentResponse>,\n\t): LLMStream {\n\t\tconst hasName = (\n\t\t\tvalue: FunctionCall,\n\t\t): value is FunctionCall & { name: string } => {\n\t\t\treturn value.name !== undefined;\n\t\t};\n\n\t\treturn {\n\t\t\tasync *[Symbol.asyncIterator](): AsyncIterator<StreamChunk> {\n\t\t\t\tfor await (const geminiChunk of geminiStream) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tdelta: {\n\t\t\t\t\t\t\trole: geminiChunk.candidates?.[0]?.content?.role,\n\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]?.text ||\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\ttool_calls: hasName(\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t?.functionCall || {},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t? ([\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\t\t\t\t\tid:\n\t\t\t\t\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.id || \"id\",\n\t\t\t\t\t\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\t\t\t\t\t\tname: geminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.name,\n\t\t\t\t\t\t\t\t\t\t\t\targuments:\n JSON.stringify(geminiChunk.candidates?.[0]?.content?.parts?.[0]\n ?.functionCall?.args),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfinish_reason: geminiChunk.candidates?.[0]?.finishReason as any,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tprovider: \"gemini\",\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tconvertToolsToFunctions(tools: IAgentTool[]): FunctionDeclaration[] {\n\t\tconst functions: FunctionDeclaration[] = [];\n\t\tfor (const tool of tools) {\n\t\t\tif (!tool.enabled) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (tool.protocol === TOOL_PROTOCOL_TYPE.MCP) {\n\t\t\t\tconst { mcpTool, id } = tool as IMCPTool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: mcpTool.description,\n\t\t\t\t\tparametersJsonSchema: mcpTool.inputSchema,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// PROTOCOL_TYPE.A2A\n\t\t\t\tconst { id, card } = tool as IA2ATool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: card.description,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn functions;\n\t}\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../index.ts"],"sourcesContent":["import { BaseModel } from \"@ainetwork/adk/modules\";\nimport { MessageRole, type ThreadObject } from \"@ainetwork/adk/types/memory\";\nimport type {\n\tLLMStream,\n\tStreamChunk,\n} from \"@ainetwork/adk/types/stream\";\nimport type {\n\tFetchResponse,\n\tIA2ATool,\n\tIAgentTool,\n\tIMCPTool,\n\tToolCall,\n} from \"@ainetwork/adk/types/tool\";\nimport { TOOL_PROTOCOL_TYPE } from \"@ainetwork/adk/types/tool\";\nimport {\n\ttype Content,\n\ttype FunctionCall,\n\ttype FunctionDeclaration,\n\ttype GenerateContentResponse,\n\tGoogleGenAI,\n} from \"@google/genai\";\n\nexport class GeminiModel extends BaseModel<Content, FunctionDeclaration> {\n\tprivate client: GoogleGenAI;\n\tprivate modelName: string;\n\n\tconstructor(apiKey: string, modelName: string) {\n\t\tsuper();\n\t\tthis.client = new GoogleGenAI({ apiKey });\n\t\tthis.modelName = modelName;\n\t}\n\n\tprivate getMessageRole(role: MessageRole) {\n\t\tswitch (role) {\n\t\t\tcase MessageRole.USER:\n\t\t\t\treturn \"user\";\n\t\t\tcase MessageRole.MODEL:\n\t\t\tcase MessageRole.SYSTEM:\n\t\t\t\treturn \"model\";\n\t\t\tdefault:\n\t\t\t\treturn \"model\"; /*FIXME*/\n\t\t}\n\t}\n\n\tgenerateMessages(params: {\n\t\tquery: string;\n\t\tthread?: ThreadObject;\n\t\tsystemPrompt?: string;\n\t}): Content[] {\n\t\tconst { query, thread, systemPrompt } = params;\n\t\tconst messages: Content[] = !systemPrompt\n\t\t\t? []\n\t\t\t: [{ role: \"model\", parts: [{ text: systemPrompt.trim() }] }];\n\t\tconst sessionContent: Content[] = !thread\n\t\t\t? []\n\t\t\t: Object.keys(thread.messages).map((chatId: string) => {\n\t\t\t\t\tconst chat = thread.messages[chatId];\n\t\t\t\t\t// TODO: check message.content.type\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: this.getMessageRole(chat.role),\n\t\t\t\t\t\tparts: [{ text: chat.content.parts[0] }],\n\t\t\t\t\t};\n\t\t\t\t});\n\t\tconst userContent: Content = { role: \"user\", parts: [{ text: query }] };\n\t\treturn messages.concat(sessionContent).concat(userContent);\n\t}\n\n\tappendMessages(messages: Content[], message: string): void {\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tparts: [{ text: message }],\n\t\t});\n\t}\n\n\tasync fetch(messages: Content[]): Promise<FetchResponse> {\n\t\tconst response = await this.client.models.generateContent({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t});\n\n\t\treturn { content: response.text };\n\t}\n\n\tasync fetchWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<FetchResponse> {\n\t\tif (functions.length > 0) {\n\t\t\tconst response = await this.client.models.generateContent({\n\t\t\t\tmodel: this.modelName,\n\t\t\t\tcontents: messages,\n\t\t\t\tconfig: {\n\t\t\t\t\ttools: [{ functionDeclarations: functions }],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst { text, functionCalls } = response;\n\t\t\tconst hasName = (\n\t\t\t\tvalue: FunctionCall,\n\t\t\t): value is FunctionCall & { name: string } => {\n\t\t\t\treturn value.name !== undefined;\n\t\t\t};\n\t\t\tconst toolCalls: ToolCall[] | undefined = functionCalls\n\t\t\t\t?.filter(hasName)\n\t\t\t\t.map((value) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: value.name,\n\t\t\t\t\t\targuments: value.args,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tcontent: text,\n\t\t\t\ttoolCalls,\n\t\t\t};\n\t\t}\n\t\treturn await this.fetch(messages);\n\t}\n\n\tasync fetchStreamWithContextMessage(\n\t\tmessages: Content[],\n\t\tfunctions: FunctionDeclaration[],\n\t): Promise<LLMStream> {\n\t\tconst stream = await this.client.models.generateContentStream({\n\t\t\tmodel: this.modelName,\n\t\t\tcontents: messages,\n\t\t\tconfig: { tools: [{ functionDeclarations: functions }] },\n\t\t});\n\n\t\treturn await this.createGeminiStreamAdapter(stream);\n\t}\n\n\t// NOTE(yoojin): Need to switch API Stream type to LLMStream.\n\tprivate createGeminiStreamAdapter(\n\t\tgeminiStream: AsyncIterable<GenerateContentResponse>,\n\t): LLMStream {\n\t\tconst hasName = (\n\t\t\tvalue: FunctionCall,\n\t\t): value is FunctionCall & { name: string } => {\n\t\t\treturn value.name !== undefined;\n\t\t};\n\n\t\treturn {\n\t\t\tasync *[Symbol.asyncIterator](): AsyncIterator<StreamChunk> {\n\t\t\t\tfor await (const geminiChunk of geminiStream) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\tdelta: {\n\t\t\t\t\t\t\trole: geminiChunk.candidates?.[0]?.content?.role,\n\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]?.text ||\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\ttool_calls: hasName(\n\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t?.functionCall || {},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t? ([\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\t\t\t\t\tid:\n\t\t\t\t\t\t\t\t\t\t\t\tgeminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.id || \"id\",\n\t\t\t\t\t\t\t\t\t\t\tfunction: {\n\t\t\t\t\t\t\t\t\t\t\t\tname: geminiChunk.candidates?.[0]?.content?.parts?.[0]\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.functionCall?.name,\n\t\t\t\t\t\t\t\t\t\t\t\targuments:\n JSON.stringify(geminiChunk.candidates?.[0]?.content?.parts?.[0]\n ?.functionCall?.args),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfinish_reason: geminiChunk.candidates?.[0]?.finishReason as any,\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tprovider: \"gemini\",\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tconvertToolsToFunctions(tools: IAgentTool[]): FunctionDeclaration[] {\n\t\tconst functions: FunctionDeclaration[] = [];\n\t\tfor (const tool of tools) {\n\t\t\tif (!tool.enabled) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (tool.protocol === TOOL_PROTOCOL_TYPE.MCP) {\n\t\t\t\tconst { mcpTool, id } = tool as IMCPTool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: mcpTool.description,\n\t\t\t\t\tparametersJsonSchema: mcpTool.inputSchema,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// PROTOCOL_TYPE.A2A\n\t\t\t\tconst { id, card } = tool as IA2ATool;\n\t\t\t\tfunctions.push({\n\t\t\t\t\tname: id,\n\t\t\t\t\tdescription: card.description,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn functions;\n\t}\n}\n"],"mappings":"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","names":[]}
package/index.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import { BaseModel } from "@ainetwork/adk/modules";
2
- import { ChatRole, type SessionObject } from "@ainetwork/adk/types/memory";
2
+ import { MessageRole, type ThreadObject } from "@ainetwork/adk/types/memory";
3
3
  import type {
4
4
  LLMStream,
5
5
  StreamChunk,
6
- ToolCallDelta,
7
6
  } from "@ainetwork/adk/types/stream";
8
7
  import type {
9
8
  FetchResponse,
@@ -31,12 +30,12 @@ export class GeminiModel extends BaseModel<Content, FunctionDeclaration> {
31
30
  this.modelName = modelName;
32
31
  }
33
32
 
34
- private getMessageRole(role: ChatRole) {
33
+ private getMessageRole(role: MessageRole) {
35
34
  switch (role) {
36
- case ChatRole.USER:
35
+ case MessageRole.USER:
37
36
  return "user";
38
- case ChatRole.MODEL:
39
- case ChatRole.SYSTEM:
37
+ case MessageRole.MODEL:
38
+ case MessageRole.SYSTEM:
40
39
  return "model";
41
40
  default:
42
41
  return "model"; /*FIXME*/
@@ -45,17 +44,17 @@ export class GeminiModel extends BaseModel<Content, FunctionDeclaration> {
45
44
 
46
45
  generateMessages(params: {
47
46
  query: string;
48
- sessionHistory?: SessionObject;
47
+ thread?: ThreadObject;
49
48
  systemPrompt?: string;
50
49
  }): Content[] {
51
- const { query, sessionHistory, systemPrompt } = params;
50
+ const { query, thread, systemPrompt } = params;
52
51
  const messages: Content[] = !systemPrompt
53
52
  ? []
54
53
  : [{ role: "model", parts: [{ text: systemPrompt.trim() }] }];
55
- const sessionContent: Content[] = !sessionHistory
54
+ const sessionContent: Content[] = !thread
56
55
  ? []
57
- : Object.keys(sessionHistory.chats).map((chatId: string) => {
58
- const chat = sessionHistory.chats[chatId];
56
+ : Object.keys(thread.messages).map((chatId: string) => {
57
+ const chat = thread.messages[chatId];
59
58
  // TODO: check message.content.type
60
59
  return {
61
60
  role: this.getMessageRole(chat.role),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainetwork/adk-provider-model-gemini",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "author": "AI Network (https://ainetwork.ai)",
5
5
  "type": "module",
6
6
  "engines": {
@@ -21,7 +21,7 @@
21
21
  "clean": "rm -rf dist"
22
22
  },
23
23
  "dependencies": {
24
- "@ainetwork/adk": "^0.1.9",
24
+ "@ainetwork/adk": "^0.1.13",
25
25
  "@google/genai": "^1.11.0"
26
26
  },
27
27
  "devDependencies": {
@@ -31,5 +31,5 @@
31
31
  "publishConfig": {
32
32
  "access": "public"
33
33
  },
34
- "gitHead": "e0c0ad6b5d60c854c2df08b1eb6836370d1dac06"
34
+ "gitHead": "d27f9542cbc4049593be4015b78e607e19ac22e6"
35
35
  }