@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.
Files changed (284) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/AgentSession.d.ts +66 -0
  4. package/dist/AgentSession.d.ts.map +1 -0
  5. package/dist/AgentSession.js +53 -0
  6. package/dist/AgentSession.js.map +1 -0
  7. package/dist/Capability.d.ts +101 -0
  8. package/dist/Capability.d.ts.map +1 -0
  9. package/dist/Capability.js +210 -0
  10. package/dist/Capability.js.map +1 -0
  11. package/dist/Connector.d.ts +69 -0
  12. package/dist/Connector.d.ts.map +1 -0
  13. package/dist/Connector.js +86 -0
  14. package/dist/Connector.js.map +1 -0
  15. package/dist/ConnectorConfig.d.ts +70 -0
  16. package/dist/ConnectorConfig.d.ts.map +1 -0
  17. package/dist/ConnectorConfig.js +110 -0
  18. package/dist/ConnectorConfig.js.map +1 -0
  19. package/dist/ConnectorRegistry.d.ts +28 -0
  20. package/dist/ConnectorRegistry.d.ts.map +1 -0
  21. package/dist/ConnectorRegistry.js +87 -0
  22. package/dist/ConnectorRegistry.js.map +1 -0
  23. package/dist/ContextManagement.d.ts +78 -0
  24. package/dist/ContextManagement.d.ts.map +1 -0
  25. package/dist/ContextManagement.js +221 -0
  26. package/dist/ContextManagement.js.map +1 -0
  27. package/dist/Conversation.d.ts +18 -0
  28. package/dist/Conversation.d.ts.map +1 -0
  29. package/dist/Conversation.js +17 -0
  30. package/dist/Conversation.js.map +1 -0
  31. package/dist/Errors.d.ts +64 -0
  32. package/dist/Errors.d.ts.map +1 -0
  33. package/dist/Errors.js +76 -0
  34. package/dist/Errors.js.map +1 -0
  35. package/dist/HttpClient.d.ts +43 -0
  36. package/dist/HttpClient.d.ts.map +1 -0
  37. package/dist/HttpClient.js +99 -0
  38. package/dist/HttpClient.js.map +1 -0
  39. package/dist/LlmService.d.ts +24 -0
  40. package/dist/LlmService.d.ts.map +1 -0
  41. package/dist/LlmService.js +4 -0
  42. package/dist/LlmService.js.map +1 -0
  43. package/dist/Models.d.ts +138 -0
  44. package/dist/Models.d.ts.map +1 -0
  45. package/dist/Models.js +209 -0
  46. package/dist/Models.js.map +1 -0
  47. package/dist/ProcessExecutor.d.ts +57 -0
  48. package/dist/ProcessExecutor.d.ts.map +1 -0
  49. package/dist/ProcessExecutor.js +71 -0
  50. package/dist/ProcessExecutor.js.map +1 -0
  51. package/dist/RateLimiter.d.ts +44 -0
  52. package/dist/RateLimiter.d.ts.map +1 -0
  53. package/dist/RateLimiter.js +155 -0
  54. package/dist/RateLimiter.js.map +1 -0
  55. package/dist/Streaming.d.ts +17 -0
  56. package/dist/Streaming.d.ts.map +1 -0
  57. package/dist/Streaming.js +65 -0
  58. package/dist/Streaming.js.map +1 -0
  59. package/dist/StructuredOutput.d.ts +10 -0
  60. package/dist/StructuredOutput.d.ts.map +1 -0
  61. package/dist/StructuredOutput.js +97 -0
  62. package/dist/StructuredOutput.js.map +1 -0
  63. package/dist/TemporaryFiles.d.ts +20 -0
  64. package/dist/TemporaryFiles.d.ts.map +1 -0
  65. package/dist/TemporaryFiles.js +18 -0
  66. package/dist/TemporaryFiles.js.map +1 -0
  67. package/dist/UsageLimits.d.ts +5 -0
  68. package/dist/UsageLimits.d.ts.map +1 -0
  69. package/dist/UsageLimits.js +187 -0
  70. package/dist/UsageLimits.js.map +1 -0
  71. package/dist/eval/Checks.d.ts +6 -0
  72. package/dist/eval/Checks.d.ts.map +1 -0
  73. package/dist/eval/Checks.js +39 -0
  74. package/dist/eval/Checks.js.map +1 -0
  75. package/dist/eval/Eval.d.ts +57 -0
  76. package/dist/eval/Eval.d.ts.map +1 -0
  77. package/dist/eval/Eval.js +91 -0
  78. package/dist/eval/Eval.js.map +1 -0
  79. package/dist/eval/EvalSuite.d.ts +21 -0
  80. package/dist/eval/EvalSuite.d.ts.map +1 -0
  81. package/dist/eval/EvalSuite.js +30 -0
  82. package/dist/eval/EvalSuite.js.map +1 -0
  83. package/dist/eval/Evaluator.d.ts +10 -0
  84. package/dist/eval/Evaluator.d.ts.map +1 -0
  85. package/dist/eval/Evaluator.js +14 -0
  86. package/dist/eval/Evaluator.js.map +1 -0
  87. package/dist/eval/Judge.d.ts +15 -0
  88. package/dist/eval/Judge.d.ts.map +1 -0
  89. package/dist/eval/Judge.js +73 -0
  90. package/dist/eval/Judge.js.map +1 -0
  91. package/dist/observability/MeteredLlmService.d.ts +16 -0
  92. package/dist/observability/MeteredLlmService.d.ts.map +1 -0
  93. package/dist/observability/MeteredLlmService.js +66 -0
  94. package/dist/observability/MeteredLlmService.js.map +1 -0
  95. package/dist/observability/Metrics.d.ts +71 -0
  96. package/dist/observability/Metrics.d.ts.map +1 -0
  97. package/dist/observability/Metrics.js +147 -0
  98. package/dist/observability/Metrics.js.map +1 -0
  99. package/dist/observability/Redaction.d.ts +8 -0
  100. package/dist/observability/Redaction.d.ts.map +1 -0
  101. package/dist/observability/Redaction.js +38 -0
  102. package/dist/observability/Redaction.js.map +1 -0
  103. package/dist/observability/StreamRecorder.d.ts +9 -0
  104. package/dist/observability/StreamRecorder.d.ts.map +1 -0
  105. package/dist/observability/StreamRecorder.js +10 -0
  106. package/dist/observability/StreamRecorder.js.map +1 -0
  107. package/dist/observability/StructuredLogger.d.ts +31 -0
  108. package/dist/observability/StructuredLogger.d.ts.map +1 -0
  109. package/dist/observability/StructuredLogger.js +34 -0
  110. package/dist/observability/StructuredLogger.js.map +1 -0
  111. package/dist/observability/Tracing.d.ts +38 -0
  112. package/dist/observability/Tracing.d.ts.map +1 -0
  113. package/dist/observability/Tracing.js +75 -0
  114. package/dist/observability/Tracing.js.map +1 -0
  115. package/dist/providers/AnthropicModels.d.ts +95 -0
  116. package/dist/providers/AnthropicModels.d.ts.map +1 -0
  117. package/dist/providers/AnthropicModels.js +83 -0
  118. package/dist/providers/AnthropicModels.js.map +1 -0
  119. package/dist/providers/AnthropicProvider.d.ts +13 -0
  120. package/dist/providers/AnthropicProvider.d.ts.map +1 -0
  121. package/dist/providers/AnthropicProvider.js +177 -0
  122. package/dist/providers/AnthropicProvider.js.map +1 -0
  123. package/dist/providers/AntigravityConnector.d.ts +7 -0
  124. package/dist/providers/AntigravityConnector.d.ts.map +1 -0
  125. package/dist/providers/AntigravityConnector.js +52 -0
  126. package/dist/providers/AntigravityConnector.js.map +1 -0
  127. package/dist/providers/ClaudeAgentSession.d.ts +11 -0
  128. package/dist/providers/ClaudeAgentSession.d.ts.map +1 -0
  129. package/dist/providers/ClaudeAgentSession.js +158 -0
  130. package/dist/providers/ClaudeAgentSession.js.map +1 -0
  131. package/dist/providers/ClaudeCliConnector.d.ts +9 -0
  132. package/dist/providers/ClaudeCliConnector.d.ts.map +1 -0
  133. package/dist/providers/ClaudeCliConnector.js +123 -0
  134. package/dist/providers/ClaudeCliConnector.js.map +1 -0
  135. package/dist/providers/CliSupport.d.ts +21 -0
  136. package/dist/providers/CliSupport.d.ts.map +1 -0
  137. package/dist/providers/CliSupport.js +62 -0
  138. package/dist/providers/CliSupport.js.map +1 -0
  139. package/dist/providers/CodexConnector.d.ts +12 -0
  140. package/dist/providers/CodexConnector.d.ts.map +1 -0
  141. package/dist/providers/CodexConnector.js +175 -0
  142. package/dist/providers/CodexConnector.js.map +1 -0
  143. package/dist/providers/ConnectorFactories.d.ts +15 -0
  144. package/dist/providers/ConnectorFactories.d.ts.map +1 -0
  145. package/dist/providers/ConnectorFactories.js +74 -0
  146. package/dist/providers/ConnectorFactories.js.map +1 -0
  147. package/dist/providers/CopilotConnector.d.ts +6 -0
  148. package/dist/providers/CopilotConnector.d.ts.map +1 -0
  149. package/dist/providers/CopilotConnector.js +35 -0
  150. package/dist/providers/CopilotConnector.js.map +1 -0
  151. package/dist/providers/CursorConnector.d.ts +8 -0
  152. package/dist/providers/CursorConnector.d.ts.map +1 -0
  153. package/dist/providers/CursorConnector.js +82 -0
  154. package/dist/providers/CursorConnector.js.map +1 -0
  155. package/dist/providers/GeminiApiProvider.d.ts +9 -0
  156. package/dist/providers/GeminiApiProvider.d.ts.map +1 -0
  157. package/dist/providers/GeminiApiProvider.js +181 -0
  158. package/dist/providers/GeminiApiProvider.js.map +1 -0
  159. package/dist/providers/GeminiCliProvider.d.ts +106 -0
  160. package/dist/providers/GeminiCliProvider.d.ts.map +1 -0
  161. package/dist/providers/GeminiCliProvider.js +596 -0
  162. package/dist/providers/GeminiCliProvider.js.map +1 -0
  163. package/dist/providers/GeminiModels.d.ts +92 -0
  164. package/dist/providers/GeminiModels.d.ts.map +1 -0
  165. package/dist/providers/GeminiModels.js +80 -0
  166. package/dist/providers/GeminiModels.js.map +1 -0
  167. package/dist/providers/GrokCliConnector.d.ts +8 -0
  168. package/dist/providers/GrokCliConnector.d.ts.map +1 -0
  169. package/dist/providers/GrokCliConnector.js +82 -0
  170. package/dist/providers/GrokCliConnector.js.map +1 -0
  171. package/dist/providers/LmStudioModels.d.ts +114 -0
  172. package/dist/providers/LmStudioModels.d.ts.map +1 -0
  173. package/dist/providers/LmStudioModels.js +102 -0
  174. package/dist/providers/LmStudioModels.js.map +1 -0
  175. package/dist/providers/LmStudioProvider.d.ts +13 -0
  176. package/dist/providers/LmStudioProvider.d.ts.map +1 -0
  177. package/dist/providers/LmStudioProvider.js +158 -0
  178. package/dist/providers/LmStudioProvider.js.map +1 -0
  179. package/dist/providers/MockProvider.d.ts +6 -0
  180. package/dist/providers/MockProvider.d.ts.map +1 -0
  181. package/dist/providers/MockProvider.js +271 -0
  182. package/dist/providers/MockProvider.js.map +1 -0
  183. package/dist/providers/OllamaModels.d.ts +68 -0
  184. package/dist/providers/OllamaModels.d.ts.map +1 -0
  185. package/dist/providers/OllamaModels.js +59 -0
  186. package/dist/providers/OllamaModels.js.map +1 -0
  187. package/dist/providers/OllamaProvider.d.ts +7 -0
  188. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  189. package/dist/providers/OllamaProvider.js +134 -0
  190. package/dist/providers/OllamaProvider.js.map +1 -0
  191. package/dist/providers/OpenAIModels.d.ts +139 -0
  192. package/dist/providers/OpenAIModels.d.ts.map +1 -0
  193. package/dist/providers/OpenAIModels.js +123 -0
  194. package/dist/providers/OpenAIModels.js.map +1 -0
  195. package/dist/providers/OpenAIProvider.d.ts +9 -0
  196. package/dist/providers/OpenAIProvider.d.ts.map +1 -0
  197. package/dist/providers/OpenAIProvider.js +185 -0
  198. package/dist/providers/OpenAIProvider.js.map +1 -0
  199. package/dist/providers/OpenCodeCliConnector.d.ts +8 -0
  200. package/dist/providers/OpenCodeCliConnector.d.ts.map +1 -0
  201. package/dist/providers/OpenCodeCliConnector.js +93 -0
  202. package/dist/providers/OpenCodeCliConnector.js.map +1 -0
  203. package/dist/providers/OpenCodeModels.d.ts +61 -0
  204. package/dist/providers/OpenCodeModels.d.ts.map +1 -0
  205. package/dist/providers/OpenCodeModels.js +53 -0
  206. package/dist/providers/OpenCodeModels.js.map +1 -0
  207. package/dist/providers/OpenCodeProvider.d.ts +10 -0
  208. package/dist/providers/OpenCodeProvider.d.ts.map +1 -0
  209. package/dist/providers/OpenCodeProvider.js +154 -0
  210. package/dist/providers/OpenCodeProvider.js.map +1 -0
  211. package/dist/providers/PiConnector.d.ts +8 -0
  212. package/dist/providers/PiConnector.d.ts.map +1 -0
  213. package/dist/providers/PiConnector.js +99 -0
  214. package/dist/providers/PiConnector.js.map +1 -0
  215. package/dist/tools/Tool.d.ts +83 -0
  216. package/dist/tools/Tool.d.ts.map +1 -0
  217. package/dist/tools/Tool.js +278 -0
  218. package/dist/tools/Tool.js.map +1 -0
  219. package/dist/tools/ToolCallingExecutor.d.ts +18 -0
  220. package/dist/tools/ToolCallingExecutor.d.ts.map +1 -0
  221. package/dist/tools/ToolCallingExecutor.js +64 -0
  222. package/dist/tools/ToolCallingExecutor.js.map +1 -0
  223. package/dist/tools/ToolRegistry.d.ts +45 -0
  224. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  225. package/dist/tools/ToolRegistry.js +133 -0
  226. package/dist/tools/ToolRegistry.js.map +1 -0
  227. package/package.json +105 -0
  228. package/src/.gitkeep +1 -0
  229. package/src/AgentSession.ts +69 -0
  230. package/src/Capability.ts +240 -0
  231. package/src/Connector.ts +220 -0
  232. package/src/ConnectorConfig.ts +146 -0
  233. package/src/ConnectorRegistry.ts +184 -0
  234. package/src/ContextManagement.ts +372 -0
  235. package/src/Conversation.ts +21 -0
  236. package/src/Errors.ts +87 -0
  237. package/src/HttpClient.ts +202 -0
  238. package/src/LlmService.ts +45 -0
  239. package/src/Models.ts +250 -0
  240. package/src/ProcessExecutor.ts +157 -0
  241. package/src/RateLimiter.ts +238 -0
  242. package/src/Streaming.ts +164 -0
  243. package/src/StructuredOutput.ts +138 -0
  244. package/src/TemporaryFiles.ts +51 -0
  245. package/src/UsageLimits.ts +242 -0
  246. package/src/eval/Checks.ts +68 -0
  247. package/src/eval/Eval.ts +112 -0
  248. package/src/eval/EvalSuite.ts +63 -0
  249. package/src/eval/Evaluator.ts +31 -0
  250. package/src/eval/Judge.ts +92 -0
  251. package/src/observability/MeteredLlmService.ts +156 -0
  252. package/src/observability/Metrics.ts +195 -0
  253. package/src/observability/Redaction.ts +55 -0
  254. package/src/observability/StreamRecorder.ts +32 -0
  255. package/src/observability/StructuredLogger.ts +62 -0
  256. package/src/observability/Tracing.ts +141 -0
  257. package/src/providers/AnthropicModels.ts +96 -0
  258. package/src/providers/AnthropicProvider.ts +320 -0
  259. package/src/providers/AntigravityConnector.ts +77 -0
  260. package/src/providers/ClaudeAgentSession.ts +226 -0
  261. package/src/providers/ClaudeCliConnector.ts +201 -0
  262. package/src/providers/CliSupport.ts +100 -0
  263. package/src/providers/CodexConnector.ts +251 -0
  264. package/src/providers/ConnectorFactories.ts +142 -0
  265. package/src/providers/CopilotConnector.ts +47 -0
  266. package/src/providers/CursorConnector.ts +120 -0
  267. package/src/providers/GeminiApiProvider.ts +337 -0
  268. package/src/providers/GeminiCliProvider.ts +793 -0
  269. package/src/providers/GeminiModels.ts +97 -0
  270. package/src/providers/GrokCliConnector.ts +117 -0
  271. package/src/providers/LmStudioModels.ts +117 -0
  272. package/src/providers/LmStudioProvider.ts +260 -0
  273. package/src/providers/MockProvider.ts +322 -0
  274. package/src/providers/OllamaModels.ts +64 -0
  275. package/src/providers/OllamaProvider.ts +236 -0
  276. package/src/providers/OpenAIModels.ts +152 -0
  277. package/src/providers/OpenAIProvider.ts +331 -0
  278. package/src/providers/OpenCodeCliConnector.ts +135 -0
  279. package/src/providers/OpenCodeModels.ts +60 -0
  280. package/src/providers/OpenCodeProvider.ts +278 -0
  281. package/src/providers/PiConnector.ts +142 -0
  282. package/src/tools/Tool.ts +379 -0
  283. package/src/tools/ToolCallingExecutor.ts +106 -0
  284. 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":"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"}