@llm4ts/core 0.1.0
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/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/AgentSession.d.ts +66 -0
- package/dist/AgentSession.d.ts.map +1 -0
- package/dist/AgentSession.js +53 -0
- package/dist/AgentSession.js.map +1 -0
- package/dist/Capability.d.ts +101 -0
- package/dist/Capability.d.ts.map +1 -0
- package/dist/Capability.js +210 -0
- package/dist/Capability.js.map +1 -0
- package/dist/Connector.d.ts +69 -0
- package/dist/Connector.d.ts.map +1 -0
- package/dist/Connector.js +86 -0
- package/dist/Connector.js.map +1 -0
- package/dist/ConnectorConfig.d.ts +70 -0
- package/dist/ConnectorConfig.d.ts.map +1 -0
- package/dist/ConnectorConfig.js +110 -0
- package/dist/ConnectorConfig.js.map +1 -0
- package/dist/ConnectorRegistry.d.ts +28 -0
- package/dist/ConnectorRegistry.d.ts.map +1 -0
- package/dist/ConnectorRegistry.js +87 -0
- package/dist/ConnectorRegistry.js.map +1 -0
- package/dist/ContextManagement.d.ts +78 -0
- package/dist/ContextManagement.d.ts.map +1 -0
- package/dist/ContextManagement.js +221 -0
- package/dist/ContextManagement.js.map +1 -0
- package/dist/Conversation.d.ts +18 -0
- package/dist/Conversation.d.ts.map +1 -0
- package/dist/Conversation.js +17 -0
- package/dist/Conversation.js.map +1 -0
- package/dist/Errors.d.ts +64 -0
- package/dist/Errors.d.ts.map +1 -0
- package/dist/Errors.js +76 -0
- package/dist/Errors.js.map +1 -0
- package/dist/HttpClient.d.ts +43 -0
- package/dist/HttpClient.d.ts.map +1 -0
- package/dist/HttpClient.js +99 -0
- package/dist/HttpClient.js.map +1 -0
- package/dist/LlmService.d.ts +24 -0
- package/dist/LlmService.d.ts.map +1 -0
- package/dist/LlmService.js +4 -0
- package/dist/LlmService.js.map +1 -0
- package/dist/Models.d.ts +138 -0
- package/dist/Models.d.ts.map +1 -0
- package/dist/Models.js +209 -0
- package/dist/Models.js.map +1 -0
- package/dist/ProcessExecutor.d.ts +57 -0
- package/dist/ProcessExecutor.d.ts.map +1 -0
- package/dist/ProcessExecutor.js +71 -0
- package/dist/ProcessExecutor.js.map +1 -0
- package/dist/RateLimiter.d.ts +44 -0
- package/dist/RateLimiter.d.ts.map +1 -0
- package/dist/RateLimiter.js +155 -0
- package/dist/RateLimiter.js.map +1 -0
- package/dist/Streaming.d.ts +17 -0
- package/dist/Streaming.d.ts.map +1 -0
- package/dist/Streaming.js +65 -0
- package/dist/Streaming.js.map +1 -0
- package/dist/StructuredOutput.d.ts +10 -0
- package/dist/StructuredOutput.d.ts.map +1 -0
- package/dist/StructuredOutput.js +97 -0
- package/dist/StructuredOutput.js.map +1 -0
- package/dist/TemporaryFiles.d.ts +20 -0
- package/dist/TemporaryFiles.d.ts.map +1 -0
- package/dist/TemporaryFiles.js +18 -0
- package/dist/TemporaryFiles.js.map +1 -0
- package/dist/UsageLimits.d.ts +5 -0
- package/dist/UsageLimits.d.ts.map +1 -0
- package/dist/UsageLimits.js +187 -0
- package/dist/UsageLimits.js.map +1 -0
- package/dist/eval/Checks.d.ts +6 -0
- package/dist/eval/Checks.d.ts.map +1 -0
- package/dist/eval/Checks.js +39 -0
- package/dist/eval/Checks.js.map +1 -0
- package/dist/eval/Eval.d.ts +57 -0
- package/dist/eval/Eval.d.ts.map +1 -0
- package/dist/eval/Eval.js +91 -0
- package/dist/eval/Eval.js.map +1 -0
- package/dist/eval/EvalSuite.d.ts +21 -0
- package/dist/eval/EvalSuite.d.ts.map +1 -0
- package/dist/eval/EvalSuite.js +30 -0
- package/dist/eval/EvalSuite.js.map +1 -0
- package/dist/eval/Evaluator.d.ts +10 -0
- package/dist/eval/Evaluator.d.ts.map +1 -0
- package/dist/eval/Evaluator.js +14 -0
- package/dist/eval/Evaluator.js.map +1 -0
- package/dist/eval/Judge.d.ts +15 -0
- package/dist/eval/Judge.d.ts.map +1 -0
- package/dist/eval/Judge.js +73 -0
- package/dist/eval/Judge.js.map +1 -0
- package/dist/observability/MeteredLlmService.d.ts +16 -0
- package/dist/observability/MeteredLlmService.d.ts.map +1 -0
- package/dist/observability/MeteredLlmService.js +66 -0
- package/dist/observability/MeteredLlmService.js.map +1 -0
- package/dist/observability/Metrics.d.ts +71 -0
- package/dist/observability/Metrics.d.ts.map +1 -0
- package/dist/observability/Metrics.js +147 -0
- package/dist/observability/Metrics.js.map +1 -0
- package/dist/observability/Redaction.d.ts +8 -0
- package/dist/observability/Redaction.d.ts.map +1 -0
- package/dist/observability/Redaction.js +38 -0
- package/dist/observability/Redaction.js.map +1 -0
- package/dist/observability/StreamRecorder.d.ts +9 -0
- package/dist/observability/StreamRecorder.d.ts.map +1 -0
- package/dist/observability/StreamRecorder.js +10 -0
- package/dist/observability/StreamRecorder.js.map +1 -0
- package/dist/observability/StructuredLogger.d.ts +31 -0
- package/dist/observability/StructuredLogger.d.ts.map +1 -0
- package/dist/observability/StructuredLogger.js +34 -0
- package/dist/observability/StructuredLogger.js.map +1 -0
- package/dist/observability/Tracing.d.ts +38 -0
- package/dist/observability/Tracing.d.ts.map +1 -0
- package/dist/observability/Tracing.js +75 -0
- package/dist/observability/Tracing.js.map +1 -0
- package/dist/providers/AnthropicModels.d.ts +95 -0
- package/dist/providers/AnthropicModels.d.ts.map +1 -0
- package/dist/providers/AnthropicModels.js +83 -0
- package/dist/providers/AnthropicModels.js.map +1 -0
- package/dist/providers/AnthropicProvider.d.ts +13 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/providers/AnthropicProvider.js +177 -0
- package/dist/providers/AnthropicProvider.js.map +1 -0
- package/dist/providers/AntigravityConnector.d.ts +7 -0
- package/dist/providers/AntigravityConnector.d.ts.map +1 -0
- package/dist/providers/AntigravityConnector.js +52 -0
- package/dist/providers/AntigravityConnector.js.map +1 -0
- package/dist/providers/ClaudeAgentSession.d.ts +11 -0
- package/dist/providers/ClaudeAgentSession.d.ts.map +1 -0
- package/dist/providers/ClaudeAgentSession.js +158 -0
- package/dist/providers/ClaudeAgentSession.js.map +1 -0
- package/dist/providers/ClaudeCliConnector.d.ts +9 -0
- package/dist/providers/ClaudeCliConnector.d.ts.map +1 -0
- package/dist/providers/ClaudeCliConnector.js +123 -0
- package/dist/providers/ClaudeCliConnector.js.map +1 -0
- package/dist/providers/CliSupport.d.ts +21 -0
- package/dist/providers/CliSupport.d.ts.map +1 -0
- package/dist/providers/CliSupport.js +62 -0
- package/dist/providers/CliSupport.js.map +1 -0
- package/dist/providers/CodexConnector.d.ts +12 -0
- package/dist/providers/CodexConnector.d.ts.map +1 -0
- package/dist/providers/CodexConnector.js +175 -0
- package/dist/providers/CodexConnector.js.map +1 -0
- package/dist/providers/ConnectorFactories.d.ts +15 -0
- package/dist/providers/ConnectorFactories.d.ts.map +1 -0
- package/dist/providers/ConnectorFactories.js +74 -0
- package/dist/providers/ConnectorFactories.js.map +1 -0
- package/dist/providers/CopilotConnector.d.ts +6 -0
- package/dist/providers/CopilotConnector.d.ts.map +1 -0
- package/dist/providers/CopilotConnector.js +35 -0
- package/dist/providers/CopilotConnector.js.map +1 -0
- package/dist/providers/CursorConnector.d.ts +8 -0
- package/dist/providers/CursorConnector.d.ts.map +1 -0
- package/dist/providers/CursorConnector.js +82 -0
- package/dist/providers/CursorConnector.js.map +1 -0
- package/dist/providers/GeminiApiProvider.d.ts +9 -0
- package/dist/providers/GeminiApiProvider.d.ts.map +1 -0
- package/dist/providers/GeminiApiProvider.js +181 -0
- package/dist/providers/GeminiApiProvider.js.map +1 -0
- package/dist/providers/GeminiCliProvider.d.ts +106 -0
- package/dist/providers/GeminiCliProvider.d.ts.map +1 -0
- package/dist/providers/GeminiCliProvider.js +596 -0
- package/dist/providers/GeminiCliProvider.js.map +1 -0
- package/dist/providers/GeminiModels.d.ts +92 -0
- package/dist/providers/GeminiModels.d.ts.map +1 -0
- package/dist/providers/GeminiModels.js +80 -0
- package/dist/providers/GeminiModels.js.map +1 -0
- package/dist/providers/GrokCliConnector.d.ts +8 -0
- package/dist/providers/GrokCliConnector.d.ts.map +1 -0
- package/dist/providers/GrokCliConnector.js +82 -0
- package/dist/providers/GrokCliConnector.js.map +1 -0
- package/dist/providers/LmStudioModels.d.ts +114 -0
- package/dist/providers/LmStudioModels.d.ts.map +1 -0
- package/dist/providers/LmStudioModels.js +102 -0
- package/dist/providers/LmStudioModels.js.map +1 -0
- package/dist/providers/LmStudioProvider.d.ts +13 -0
- package/dist/providers/LmStudioProvider.d.ts.map +1 -0
- package/dist/providers/LmStudioProvider.js +158 -0
- package/dist/providers/LmStudioProvider.js.map +1 -0
- package/dist/providers/MockProvider.d.ts +6 -0
- package/dist/providers/MockProvider.d.ts.map +1 -0
- package/dist/providers/MockProvider.js +271 -0
- package/dist/providers/MockProvider.js.map +1 -0
- package/dist/providers/OllamaModels.d.ts +68 -0
- package/dist/providers/OllamaModels.d.ts.map +1 -0
- package/dist/providers/OllamaModels.js +59 -0
- package/dist/providers/OllamaModels.js.map +1 -0
- package/dist/providers/OllamaProvider.d.ts +7 -0
- package/dist/providers/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/OllamaProvider.js +134 -0
- package/dist/providers/OllamaProvider.js.map +1 -0
- package/dist/providers/OpenAIModels.d.ts +139 -0
- package/dist/providers/OpenAIModels.d.ts.map +1 -0
- package/dist/providers/OpenAIModels.js +123 -0
- package/dist/providers/OpenAIModels.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts +9 -0
- package/dist/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/providers/OpenAIProvider.js +185 -0
- package/dist/providers/OpenAIProvider.js.map +1 -0
- package/dist/providers/OpenCodeCliConnector.d.ts +8 -0
- package/dist/providers/OpenCodeCliConnector.d.ts.map +1 -0
- package/dist/providers/OpenCodeCliConnector.js +93 -0
- package/dist/providers/OpenCodeCliConnector.js.map +1 -0
- package/dist/providers/OpenCodeModels.d.ts +61 -0
- package/dist/providers/OpenCodeModels.d.ts.map +1 -0
- package/dist/providers/OpenCodeModels.js +53 -0
- package/dist/providers/OpenCodeModels.js.map +1 -0
- package/dist/providers/OpenCodeProvider.d.ts +10 -0
- package/dist/providers/OpenCodeProvider.d.ts.map +1 -0
- package/dist/providers/OpenCodeProvider.js +154 -0
- package/dist/providers/OpenCodeProvider.js.map +1 -0
- package/dist/providers/PiConnector.d.ts +8 -0
- package/dist/providers/PiConnector.d.ts.map +1 -0
- package/dist/providers/PiConnector.js +99 -0
- package/dist/providers/PiConnector.js.map +1 -0
- package/dist/tools/Tool.d.ts +83 -0
- package/dist/tools/Tool.d.ts.map +1 -0
- package/dist/tools/Tool.js +278 -0
- package/dist/tools/Tool.js.map +1 -0
- package/dist/tools/ToolCallingExecutor.d.ts +18 -0
- package/dist/tools/ToolCallingExecutor.d.ts.map +1 -0
- package/dist/tools/ToolCallingExecutor.js +64 -0
- package/dist/tools/ToolCallingExecutor.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts +45 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -0
- package/dist/tools/ToolRegistry.js +133 -0
- package/dist/tools/ToolRegistry.js.map +1 -0
- package/package.json +105 -0
- package/src/.gitkeep +1 -0
- package/src/AgentSession.ts +69 -0
- package/src/Capability.ts +240 -0
- package/src/Connector.ts +220 -0
- package/src/ConnectorConfig.ts +146 -0
- package/src/ConnectorRegistry.ts +184 -0
- package/src/ContextManagement.ts +372 -0
- package/src/Conversation.ts +21 -0
- package/src/Errors.ts +87 -0
- package/src/HttpClient.ts +202 -0
- package/src/LlmService.ts +45 -0
- package/src/Models.ts +250 -0
- package/src/ProcessExecutor.ts +157 -0
- package/src/RateLimiter.ts +238 -0
- package/src/Streaming.ts +164 -0
- package/src/StructuredOutput.ts +138 -0
- package/src/TemporaryFiles.ts +51 -0
- package/src/UsageLimits.ts +242 -0
- package/src/eval/Checks.ts +68 -0
- package/src/eval/Eval.ts +112 -0
- package/src/eval/EvalSuite.ts +63 -0
- package/src/eval/Evaluator.ts +31 -0
- package/src/eval/Judge.ts +92 -0
- package/src/observability/MeteredLlmService.ts +156 -0
- package/src/observability/Metrics.ts +195 -0
- package/src/observability/Redaction.ts +55 -0
- package/src/observability/StreamRecorder.ts +32 -0
- package/src/observability/StructuredLogger.ts +62 -0
- package/src/observability/Tracing.ts +141 -0
- package/src/providers/AnthropicModels.ts +96 -0
- package/src/providers/AnthropicProvider.ts +320 -0
- package/src/providers/AntigravityConnector.ts +77 -0
- package/src/providers/ClaudeAgentSession.ts +226 -0
- package/src/providers/ClaudeCliConnector.ts +201 -0
- package/src/providers/CliSupport.ts +100 -0
- package/src/providers/CodexConnector.ts +251 -0
- package/src/providers/ConnectorFactories.ts +142 -0
- package/src/providers/CopilotConnector.ts +47 -0
- package/src/providers/CursorConnector.ts +120 -0
- package/src/providers/GeminiApiProvider.ts +337 -0
- package/src/providers/GeminiCliProvider.ts +793 -0
- package/src/providers/GeminiModels.ts +97 -0
- package/src/providers/GrokCliConnector.ts +117 -0
- package/src/providers/LmStudioModels.ts +117 -0
- package/src/providers/LmStudioProvider.ts +260 -0
- package/src/providers/MockProvider.ts +322 -0
- package/src/providers/OllamaModels.ts +64 -0
- package/src/providers/OllamaProvider.ts +236 -0
- package/src/providers/OpenAIModels.ts +152 -0
- package/src/providers/OpenAIProvider.ts +331 -0
- package/src/providers/OpenCodeCliConnector.ts +135 -0
- package/src/providers/OpenCodeModels.ts +60 -0
- package/src/providers/OpenCodeProvider.ts +278 -0
- package/src/providers/PiConnector.ts +142 -0
- package/src/tools/Tool.ts +379 -0
- package/src/tools/ToolCallingExecutor.ts +106 -0
- package/src/tools/ToolRegistry.ts +224 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Redacted from "effect/Redacted";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
import * as Stream from "effect/Stream";
|
|
5
|
+
import { makeApiConnector } from "../Connector.js";
|
|
6
|
+
import { AuthenticationError, ConfigError, ParseError } from "../Errors.js";
|
|
7
|
+
import { ConnectorIds, LlmChunk, TokenUsage, ToolCall, ToolCallResponse } from "../Models.js";
|
|
8
|
+
import { collect } from "../Streaming.js";
|
|
9
|
+
import { parseFromText } from "../StructuredOutput.js";
|
|
10
|
+
import { GeminiContent, GeminiFunctionDeclaration, GeminiGenerateContentRequest, GeminiGenerateContentRequestWithTools, GeminiGenerateContentResponse, GeminiGenerateContentResponseFull, GeminiGenerationConfig, GeminiPart, GeminiToolDef } from "./GeminiModels.js";
|
|
11
|
+
const normalizeBaseUrl = (baseUrl) => baseUrl.replace(/\/+$/, "");
|
|
12
|
+
export const geminiContents = (messages) => messages.map((message) => GeminiContent.make({
|
|
13
|
+
parts: [
|
|
14
|
+
GeminiPart.make({
|
|
15
|
+
text: message.content
|
|
16
|
+
})
|
|
17
|
+
]
|
|
18
|
+
}));
|
|
19
|
+
const promptContents = (prompt) => [
|
|
20
|
+
GeminiContent.make({
|
|
21
|
+
parts: [
|
|
22
|
+
GeminiPart.make({
|
|
23
|
+
text: prompt
|
|
24
|
+
})
|
|
25
|
+
]
|
|
26
|
+
})
|
|
27
|
+
];
|
|
28
|
+
export const buildGeminiRequest = (contents, jsonSchema) => GeminiGenerateContentRequest.make({
|
|
29
|
+
contents,
|
|
30
|
+
...(jsonSchema === undefined
|
|
31
|
+
? {}
|
|
32
|
+
: {
|
|
33
|
+
generationConfig: GeminiGenerationConfig.make({
|
|
34
|
+
responseMimeType: "application/json",
|
|
35
|
+
responseSchema: jsonSchema
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
export const buildGeminiToolRequest = (prompt, tools) => GeminiGenerateContentRequestWithTools.make({
|
|
40
|
+
contents: promptContents(prompt),
|
|
41
|
+
tools: [
|
|
42
|
+
GeminiToolDef.make({
|
|
43
|
+
functionDeclarations: tools.map((tool) => GeminiFunctionDeclaration.make({
|
|
44
|
+
name: tool.name,
|
|
45
|
+
description: tool.description,
|
|
46
|
+
parameters: tool.parameters
|
|
47
|
+
}))
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
const decodeResponse = (raw, context) => Schema.decodeUnknownEffect(Schema.fromJsonString(GeminiGenerateContentResponse))(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
52
|
+
message: `${context}: ${String(error)}`,
|
|
53
|
+
raw
|
|
54
|
+
})));
|
|
55
|
+
const decodeToolResponse = (raw) => Schema.decodeUnknownEffect(Schema.fromJsonString(GeminiGenerateContentResponseFull))(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
56
|
+
message: `Failed to decode Gemini tool response: ${String(error)}`,
|
|
57
|
+
raw
|
|
58
|
+
})));
|
|
59
|
+
const usageFromResponse = (response) => {
|
|
60
|
+
const usage = response.usageMetadata;
|
|
61
|
+
return usage === undefined
|
|
62
|
+
? undefined
|
|
63
|
+
: TokenUsage.make({
|
|
64
|
+
prompt: usage.promptTokenCount ?? 0,
|
|
65
|
+
completion: usage.candidatesTokenCount ?? 0,
|
|
66
|
+
total: usage.totalTokenCount ?? 0
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
const metadataFromResponse = (config, response) => {
|
|
70
|
+
const usage = response.usageMetadata;
|
|
71
|
+
return {
|
|
72
|
+
provider: "gemini-api",
|
|
73
|
+
model: config.model,
|
|
74
|
+
...(usage?.promptTokenCount === undefined
|
|
75
|
+
? {}
|
|
76
|
+
: { promptTokenCount: String(usage.promptTokenCount) }),
|
|
77
|
+
...(usage?.candidatesTokenCount === undefined
|
|
78
|
+
? {}
|
|
79
|
+
: { candidatesTokenCount: String(usage.candidatesTokenCount) }),
|
|
80
|
+
...(usage?.totalTokenCount === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: { totalTokenCount: String(usage.totalTokenCount) })
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
const responseText = (response, raw) => {
|
|
86
|
+
const text = response.candidates[0]?.content.parts
|
|
87
|
+
.map((part) => part.text?.trim())
|
|
88
|
+
.find((part) => part !== undefined && part !== null && part.length > 0);
|
|
89
|
+
return text === undefined || text === null
|
|
90
|
+
? Effect.fail(ParseError.make({
|
|
91
|
+
message: "Gemini API response has no text content in candidates. " +
|
|
92
|
+
"The response may be safety-filtered or malformed.",
|
|
93
|
+
raw
|
|
94
|
+
}))
|
|
95
|
+
: Effect.succeed(text);
|
|
96
|
+
};
|
|
97
|
+
export const makeGeminiApiProvider = (config, httpClient) => {
|
|
98
|
+
const requiredConfig = config.baseUrl === undefined
|
|
99
|
+
? Effect.fail(ConfigError.make({
|
|
100
|
+
message: "Missing baseUrl for Gemini API provider"
|
|
101
|
+
}))
|
|
102
|
+
: config.apiKey === undefined
|
|
103
|
+
? Effect.fail(AuthenticationError.make({
|
|
104
|
+
message: "Missing API key for Gemini API provider (set GEMINI_API_KEY or GOOGLE_API_KEY, or pass apiKey in the connector config)"
|
|
105
|
+
}))
|
|
106
|
+
: Effect.succeed({
|
|
107
|
+
baseUrl: normalizeBaseUrl(config.baseUrl),
|
|
108
|
+
apiKey: Redacted.value(config.apiKey)
|
|
109
|
+
});
|
|
110
|
+
const endpoint = (baseUrl, operation) => `${baseUrl}/v1beta/models/${config.model}:${operation}`;
|
|
111
|
+
const headers = (apiKey) => ({
|
|
112
|
+
"x-goog-api-key": apiKey
|
|
113
|
+
});
|
|
114
|
+
const executeRequest = (prompt, jsonSchema) => Effect.gen(function* () {
|
|
115
|
+
const { apiKey, baseUrl } = yield* requiredConfig;
|
|
116
|
+
const raw = yield* httpClient.postJson(endpoint(baseUrl, "generateContent"), JSON.stringify(buildGeminiRequest(promptContents(prompt), jsonSchema)), headers(apiKey), config.timeout);
|
|
117
|
+
const response = yield* decodeResponse(raw, "Failed to decode Gemini API response");
|
|
118
|
+
return [response, raw];
|
|
119
|
+
});
|
|
120
|
+
const executeStreamWithContents = (contents) => Stream.unwrap(Effect.map(requiredConfig, ({ apiKey, baseUrl }) => httpClient
|
|
121
|
+
.postJsonStream(endpoint(baseUrl, "streamGenerateContent"), JSON.stringify(buildGeminiRequest(contents)), headers(apiKey), config.timeout)
|
|
122
|
+
.pipe(Stream.map((line) => line.trim()), Stream.filter((line) => line.length > 0), Stream.map((line) => line.startsWith("data:") ? line.slice("data:".length).trim() : line), Stream.filter((payload) => payload.length > 0 && payload !== "[DONE]"), Stream.mapEffect((payload) => decodeResponse(payload, "Failed to decode Gemini stream chunk")), Stream.map((response) => {
|
|
123
|
+
const delta = response.candidates[0]?.content.parts.map((part) => part.text ?? "").join("") ?? "";
|
|
124
|
+
const finishReason = response.candidates[0]?.finishReason?.toLowerCase();
|
|
125
|
+
const usage = usageFromResponse(response);
|
|
126
|
+
return LlmChunk.make({
|
|
127
|
+
delta,
|
|
128
|
+
metadata: metadataFromResponse(config, response),
|
|
129
|
+
...(finishReason === undefined || finishReason === null ? {} : { finishReason }),
|
|
130
|
+
...(usage === undefined ? {} : { usage })
|
|
131
|
+
});
|
|
132
|
+
}), Stream.filter((chunk) => chunk.delta.length > 0 ||
|
|
133
|
+
chunk.finishReason !== undefined ||
|
|
134
|
+
chunk.usage !== undefined))));
|
|
135
|
+
const executeStructuredWithUsage = (prompt, schema, jsonSchema) => Effect.gen(function* () {
|
|
136
|
+
const [response, raw] = yield* executeRequest(prompt, jsonSchema);
|
|
137
|
+
const content = yield* responseText(response, raw);
|
|
138
|
+
const value = yield* parseFromText(content, schema, jsonSchema);
|
|
139
|
+
const result = [value, undefined, undefined];
|
|
140
|
+
return result;
|
|
141
|
+
});
|
|
142
|
+
const executeWithTools = (prompt, tools) => Effect.gen(function* () {
|
|
143
|
+
const { apiKey, baseUrl } = yield* requiredConfig;
|
|
144
|
+
const raw = yield* httpClient.postJson(endpoint(baseUrl, "generateContent"), JSON.stringify(buildGeminiToolRequest(prompt, tools)), headers(apiKey), config.timeout);
|
|
145
|
+
const response = yield* decodeToolResponse(raw);
|
|
146
|
+
const candidate = response.candidates[0];
|
|
147
|
+
if (candidate === undefined) {
|
|
148
|
+
return yield* Effect.fail(ParseError.make({
|
|
149
|
+
message: "Gemini tool response has no candidates",
|
|
150
|
+
raw
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
const calls = candidate.content.parts.flatMap((part) => part.functionCall === undefined ? [] : [part.functionCall]);
|
|
154
|
+
const text = candidate.content.parts
|
|
155
|
+
.map((part) => part.text)
|
|
156
|
+
.find((part) => part !== undefined && part !== null);
|
|
157
|
+
return ToolCallResponse.make({
|
|
158
|
+
toolCalls: calls.map((call, index) => ToolCall.make({
|
|
159
|
+
id: `gemini_call_${index}`,
|
|
160
|
+
name: call.name,
|
|
161
|
+
arguments: JSON.stringify(call.args) ?? "{}"
|
|
162
|
+
})),
|
|
163
|
+
finishReason: candidate.finishReason ?? "STOP",
|
|
164
|
+
...(text === undefined || text === null ? {} : { content: text })
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
const executeStream = (prompt) => executeStreamWithContents(promptContents(prompt));
|
|
168
|
+
const isAvailable = collect(executeStream("health check")).pipe(Effect.match({
|
|
169
|
+
onFailure: () => false,
|
|
170
|
+
onSuccess: () => true
|
|
171
|
+
}));
|
|
172
|
+
return makeApiConnector({
|
|
173
|
+
id: ConnectorIds.GeminiApi,
|
|
174
|
+
executeStream,
|
|
175
|
+
executeStreamWithHistory: (messages) => executeStreamWithContents(geminiContents(messages)),
|
|
176
|
+
executeWithTools,
|
|
177
|
+
executeStructuredWithUsage,
|
|
178
|
+
isAvailable
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=GeminiApiProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeminiApiProvider.js","sourceRoot":"","sources":["../../src/providers/GeminiApiProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
import * as Stream from "effect/Stream";
|
|
5
|
+
import { type CliConnectorShape } from "../Connector.ts";
|
|
6
|
+
import type { CliConnectorConfig } from "../ConnectorConfig.ts";
|
|
7
|
+
import { type LlmError } from "../Errors.ts";
|
|
8
|
+
import { type LlmConfig } from "../Models.ts";
|
|
9
|
+
declare const GeminiCliLogLine_base: Schema.Class<GeminiCliLogLine, Schema.TaggedStruct<"LogLine", {
|
|
10
|
+
readonly line: Schema.String;
|
|
11
|
+
}>, {}>;
|
|
12
|
+
export declare class GeminiCliLogLine extends GeminiCliLogLine_base {
|
|
13
|
+
}
|
|
14
|
+
declare const GeminiCliInit_base: Schema.Class<GeminiCliInit, Schema.TaggedStruct<"Init", {
|
|
15
|
+
readonly model: Schema.optionalKey<Schema.String>;
|
|
16
|
+
readonly sessionId: Schema.optionalKey<Schema.String>;
|
|
17
|
+
}>, {}>;
|
|
18
|
+
export declare class GeminiCliInit extends GeminiCliInit_base {
|
|
19
|
+
}
|
|
20
|
+
declare const GeminiCliMessage_base: Schema.Class<GeminiCliMessage, Schema.TaggedStruct<"Message", {
|
|
21
|
+
readonly role: Schema.optionalKey<Schema.String>;
|
|
22
|
+
readonly content: Schema.optionalKey<Schema.String>;
|
|
23
|
+
readonly delta: Schema.Boolean;
|
|
24
|
+
}>, {}>;
|
|
25
|
+
export declare class GeminiCliMessage extends GeminiCliMessage_base {
|
|
26
|
+
}
|
|
27
|
+
declare const GeminiCliToolUse_base: Schema.Class<GeminiCliToolUse, Schema.TaggedStruct<"ToolUse", {
|
|
28
|
+
readonly toolName: Schema.optionalKey<Schema.String>;
|
|
29
|
+
readonly toolId: Schema.optionalKey<Schema.String>;
|
|
30
|
+
readonly input: Schema.optionalKey<Schema.String>;
|
|
31
|
+
}>, {}>;
|
|
32
|
+
export declare class GeminiCliToolUse extends GeminiCliToolUse_base {
|
|
33
|
+
}
|
|
34
|
+
declare const GeminiCliToolResult_base: Schema.Class<GeminiCliToolResult, Schema.TaggedStruct<"ToolResult", {
|
|
35
|
+
readonly toolId: Schema.optionalKey<Schema.String>;
|
|
36
|
+
readonly status: Schema.optionalKey<Schema.String>;
|
|
37
|
+
readonly content: Schema.optionalKey<Schema.String>;
|
|
38
|
+
}>, {}>;
|
|
39
|
+
export declare class GeminiCliToolResult extends GeminiCliToolResult_base {
|
|
40
|
+
}
|
|
41
|
+
declare const GeminiCliError_base: Schema.Class<GeminiCliError, Schema.TaggedStruct<"Error", {
|
|
42
|
+
readonly message: Schema.optionalKey<Schema.String>;
|
|
43
|
+
readonly code: Schema.optionalKey<Schema.Int>;
|
|
44
|
+
readonly errorType: Schema.optionalKey<Schema.String>;
|
|
45
|
+
}>, {}>;
|
|
46
|
+
export declare class GeminiCliError extends GeminiCliError_base {
|
|
47
|
+
}
|
|
48
|
+
declare const GeminiStreamStats_base: Schema.Class<GeminiStreamStats, Schema.Struct<{
|
|
49
|
+
readonly totalTokens: Schema.optionalKey<Schema.Int>;
|
|
50
|
+
readonly inputTokens: Schema.optionalKey<Schema.Int>;
|
|
51
|
+
readonly outputTokens: Schema.optionalKey<Schema.Int>;
|
|
52
|
+
readonly cached: Schema.optionalKey<Schema.Int>;
|
|
53
|
+
}>, {}>;
|
|
54
|
+
export declare class GeminiStreamStats extends GeminiStreamStats_base {
|
|
55
|
+
}
|
|
56
|
+
declare const GeminiCliResult_base: Schema.Class<GeminiCliResult, Schema.TaggedStruct<"Result", {
|
|
57
|
+
readonly status: Schema.optionalKey<Schema.String>;
|
|
58
|
+
readonly errorMessage: Schema.optionalKey<Schema.String>;
|
|
59
|
+
readonly stats: Schema.optionalKey<typeof GeminiStreamStats>;
|
|
60
|
+
}>, {}>;
|
|
61
|
+
export declare class GeminiCliResult extends GeminiCliResult_base {
|
|
62
|
+
}
|
|
63
|
+
export declare const GeminiCliStreamEvent: Schema.Union<readonly [typeof GeminiCliLogLine, typeof GeminiCliInit, typeof GeminiCliMessage, typeof GeminiCliToolUse, typeof GeminiCliToolResult, typeof GeminiCliError, typeof GeminiCliResult]>;
|
|
64
|
+
export type GeminiCliStreamEvent = typeof GeminiCliStreamEvent.Type;
|
|
65
|
+
export declare const GeminiSandbox: Schema.Literals<readonly ["Docker", "Podman", "SeatbeltMacOS", "Runsc", "Lxc", "Default"]>;
|
|
66
|
+
export type GeminiSandbox = typeof GeminiSandbox.Type;
|
|
67
|
+
declare const GeminiCliExecutionContext_base: Schema.Class<GeminiCliExecutionContext, Schema.Struct<{
|
|
68
|
+
readonly cwd: Schema.optionalKey<Schema.String>;
|
|
69
|
+
readonly includeDirectories: Schema.withConstructorDefault<Schema.$Array<Schema.String>>;
|
|
70
|
+
readonly sandbox: Schema.optionalKey<Schema.Literals<readonly ["Docker", "Podman", "SeatbeltMacOS", "Runsc", "Lxc", "Default"]>>;
|
|
71
|
+
readonly turnLimit: Schema.optionalKey<Schema.Int>;
|
|
72
|
+
readonly readOnly: Schema.withConstructorDefault<Schema.Boolean>;
|
|
73
|
+
}>, {}>;
|
|
74
|
+
export declare class GeminiCliExecutionContext extends GeminiCliExecutionContext_base {
|
|
75
|
+
}
|
|
76
|
+
export declare const geminiCliExecutionContextFrom: (config: CliConnectorConfig) => GeminiCliExecutionContext;
|
|
77
|
+
export interface GeminiCliExecutorShape {
|
|
78
|
+
readonly checkGeminiInstalled: Effect.Effect<void, LlmError>;
|
|
79
|
+
readonly runGeminiProcess: (prompt: string, config: LlmConfig, context: GeminiCliExecutionContext) => Effect.Effect<string, LlmError>;
|
|
80
|
+
readonly runGeminiProcessStream: (prompt: string, config: LlmConfig, context: GeminiCliExecutionContext) => Stream.Stream<GeminiCliStreamEvent, LlmError>;
|
|
81
|
+
}
|
|
82
|
+
declare const GeminiCliExecutor_base: Context.ServiceClass<GeminiCliExecutor, "@llm4ts/core/providers/GeminiCliExecutor", GeminiCliExecutorShape>;
|
|
83
|
+
export declare class GeminiCliExecutor extends GeminiCliExecutor_base {
|
|
84
|
+
}
|
|
85
|
+
export declare const geminiSandboxEnvValue: (sandbox: GeminiSandbox) => string | undefined;
|
|
86
|
+
export declare const buildGeminiArgs: (config: LlmConfig, context: GeminiCliExecutionContext, outputFormat: string) => ReadonlyArray<string>;
|
|
87
|
+
export declare const geminiTurnLimitSettingsJson: (turns: number) => string;
|
|
88
|
+
export declare const geminiProcessEnv: (context: GeminiCliExecutionContext, turnLimitSettingsPath?: string) => Readonly<Record<string, string>>;
|
|
89
|
+
export declare const geminiQuotaDiagnostic: (stderr: ReadonlyArray<string>) => string | undefined;
|
|
90
|
+
export declare const withGeminiStderrDiagnostic: (event: GeminiCliStreamEvent, stderr: ReadonlyArray<string>) => GeminiCliStreamEvent;
|
|
91
|
+
export declare const validateGeminiExitCode: (exitCode: number, stderr: string, turnLimit?: number) => Effect.Effect<void, LlmError>;
|
|
92
|
+
export declare const validateGeminiStreamExit: (exitCode: number, stderr: ReadonlyArray<string>, sawAssistantText: boolean, turnLimit?: number) => Effect.Effect<void, LlmError>;
|
|
93
|
+
export type GeminiResponseExtraction = {
|
|
94
|
+
readonly ok: true;
|
|
95
|
+
readonly value: string;
|
|
96
|
+
} | {
|
|
97
|
+
readonly ok: false;
|
|
98
|
+
readonly error: string;
|
|
99
|
+
};
|
|
100
|
+
export declare const isGeminiPreambleLine: (line: string) => boolean;
|
|
101
|
+
export declare const isKnownGeminiStderrNoise: (line: string) => boolean;
|
|
102
|
+
export declare const extractGeminiCliResponse: (output: string) => GeminiResponseExtraction;
|
|
103
|
+
export declare const parseGeminiCliStreamEvent: (line: string) => GeminiCliStreamEvent;
|
|
104
|
+
export declare const makeGeminiCliProvider: (config: LlmConfig, executor: GeminiCliExecutorShape, executionContext?: GeminiCliExecutionContext) => CliConnectorShape;
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=GeminiCliProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeminiCliProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GeminiCliProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,cAAc,CAAA;AAErB,OAAO,EAML,KAAK,SAAS,EAEf,MAAM,cAAc,CAAA;;;;AAYrB,qBAAa,gBAAiB,SAAQ,qBAEpC;CAAG;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAGjC;CAAG;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAIpC;CAAG;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAIpC;CAAG;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAIvC;CAAG;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAInC;CAAG;AAEL,eAAO,MAAM,oBAAoB,qMAQ/B,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,eAAO,MAAM,aAAa,4FAOxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;;;AAIrD,qBAAa,yBAA0B,SAAQ,8BAU7C;CAAG;AAEL,eAAO,MAAM,6BAA6B,GACxC,QAAQ,kBAAkB,KACzB,yBAUC,CAAA;AAEJ,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,yBAAyB,KAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACpC,QAAQ,CAAC,sBAAsB,EAAE,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,yBAAyB,KAC/B,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAA;CACnD;;AAED,qBAAa,iBAAkB,SAAQ,sBAEtC;CAAG;AAEJ,eAAO,MAAM,qBAAqB,GAAI,SAAS,aAAa,KAAG,MAAM,GAAG,SAevE,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,QAAQ,SAAS,EACjB,SAAS,yBAAyB,EAClC,cAAc,MAAM,KACnB,aAAa,CAAC,MAAM,CActB,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,OAAO,MAAM,KAAG,MAKxD,CAAA;AAEJ,eAAO,MAAM,gBAAgB,GAC3B,SAAS,yBAAyB,EAClC,wBAAwB,MAAM,KAC7B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWjC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,QAAQ,aAAa,CAAC,MAAM,CAAC,KAAG,MAAM,GAAG,SAanE,CAAA;AAEZ,eAAO,MAAM,0BAA0B,GACrC,OAAO,oBAAoB,EAC3B,QAAQ,aAAa,CAAC,MAAM,CAAC,KAC5B,oBAiCF,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,YAAY,MAAM,KACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAe9B,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,UAAU,MAAM,EAChB,QAAQ,aAAa,CAAC,MAAM,CAAC,EAC7B,kBAAkB,OAAO,EACzB,YAAY,MAAM,KACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAsB9B,CAAA;AAeD,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAUL,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,OACI,CAAA;AAExD,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,OAiBvD,CAAA;AAmCD,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,KAAG,wBAmCzD,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,KAAG,oBAsGxD,CAAA;AA4CD,eAAO,MAAM,qBAAqB,GAChC,QAAQ,SAAS,EACjB,UAAU,sBAAsB,EAChC,mBAAkB,yBAA8D,KAC/E,iBA+MF,CAAA"}
|