@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,158 @@
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 { ConfigError, InvalidRequestError, ParseError } from "../Errors.js";
7
+ import { ConnectorIds, LlmChunk } from "../Models.js";
8
+ import { parseFromText } from "../StructuredOutput.js";
9
+ import { LmStudioChatRequest, LmStudioChatResponse, LmStudioMessage } from "./LmStudioModels.js";
10
+ import { OpenAIChatChunk, OpenAIChatCompletionRequest, OpenAIChatMessage } from "./OpenAIModels.js";
11
+ const emptyHeaders = Object.freeze({});
12
+ export const normalizeLmStudioBaseUrl = (raw) => {
13
+ const trimmed = raw.trim().replace(/\/+$/, "");
14
+ return trimmed.endsWith("/v1") ? trimmed.slice(0, -"/v1".length) : trimmed;
15
+ };
16
+ const roleName = (role) => {
17
+ switch (role) {
18
+ case "System":
19
+ return "system";
20
+ case "User":
21
+ return "user";
22
+ case "Assistant":
23
+ return "assistant";
24
+ case "Tool":
25
+ return "tool";
26
+ }
27
+ };
28
+ export const lmStudioHistory = (messages) => messages.map((message) => LmStudioMessage.make({
29
+ role: roleName(message.role),
30
+ content: message.content
31
+ }));
32
+ export const renderLmStudioNativeInput = (messages) => {
33
+ const nonSystem = messages.filter((message) => message.role !== "system");
34
+ const inputMessages = nonSystem.length > 0 ? nonSystem : messages;
35
+ const system = messages
36
+ .filter((message) => message.role === "system")
37
+ .map((message) => message.content.trim())
38
+ .filter((content) => content.length > 0);
39
+ return {
40
+ input: inputMessages.map((message) => `${message.role}: ${message.content}`).join("\n"),
41
+ systemPrompt: system.length === 0 ? undefined : system.join("\n")
42
+ };
43
+ };
44
+ const decodeNativeResponse = (raw) => Schema.decodeUnknownEffect(Schema.fromJsonString(LmStudioChatResponse))(raw).pipe(Effect.mapError((error) => ParseError.make({
45
+ message: `Failed to decode LmStudio native API response: ${String(error)}`,
46
+ raw
47
+ })));
48
+ const decodeStreamChunk = (raw) => Schema.decodeUnknownEffect(Schema.fromJsonString(OpenAIChatChunk))(raw).pipe(Effect.mapError((error) => ParseError.make({
49
+ message: `Failed to parse LmStudio stream chunk: ${String(error)}`,
50
+ raw
51
+ })));
52
+ const nativeContent = (response, raw) => {
53
+ const content = response.output
54
+ .find((item) => item.type === "message" &&
55
+ item.content !== undefined &&
56
+ item.content !== null &&
57
+ item.content.trim().length > 0)
58
+ ?.content?.trim();
59
+ return content === undefined || content === null
60
+ ? Effect.fail(ParseError.make({
61
+ message: "LmStudio response missing choices[0].message.content",
62
+ raw
63
+ }))
64
+ : Effect.succeed(content);
65
+ };
66
+ export const makeLmStudioProvider = (config, httpClient) => {
67
+ const baseUrl = config.baseUrl === undefined
68
+ ? Effect.fail(ConfigError.make({
69
+ message: "Missing baseUrl for LmStudio provider"
70
+ }))
71
+ : Effect.succeed(normalizeLmStudioBaseUrl(config.baseUrl));
72
+ const authHeaders = () => config.apiKey === undefined
73
+ ? emptyHeaders
74
+ : {
75
+ Authorization: `Bearer ${Redacted.value(config.apiKey)}`
76
+ };
77
+ const streamRequest = (messages) => Stream.unwrap(Effect.map(baseUrl, (normalized) => {
78
+ const request = OpenAIChatCompletionRequest.make({
79
+ model: config.model,
80
+ messages: messages.map((message) => OpenAIChatMessage.make({
81
+ role: message.role,
82
+ content: message.content
83
+ })),
84
+ temperature: config.temperature ?? 0.7,
85
+ stream: true,
86
+ ...(config.maxTokens === undefined ? {} : { max_tokens: config.maxTokens })
87
+ });
88
+ return httpClient
89
+ .postJsonStreamSSE(`${normalized}/v1/chat/completions`, JSON.stringify(request), authHeaders(), config.timeout)
90
+ .pipe(Stream.mapEffect(decodeStreamChunk), Stream.flatMap((chunk) => {
91
+ const choice = chunk.choices[0];
92
+ const delta = choice?.delta?.content ?? "";
93
+ const finishReason = choice?.finish_reason ?? undefined;
94
+ return delta.length > 0 || finishReason !== undefined
95
+ ? Stream.succeed(LlmChunk.make({
96
+ delta,
97
+ metadata: {
98
+ provider: "lmstudio",
99
+ model: config.model
100
+ },
101
+ ...(finishReason === undefined ? {} : { finishReason })
102
+ }))
103
+ : Stream.empty;
104
+ }));
105
+ }));
106
+ const nativeRequest = (messages) => Effect.gen(function* () {
107
+ const normalized = yield* baseUrl;
108
+ const rendered = renderLmStudioNativeInput(messages);
109
+ const request = LmStudioChatRequest.make({
110
+ model: config.model,
111
+ input: rendered.input,
112
+ temperature: config.temperature ?? 0.7,
113
+ stream: false,
114
+ ...(rendered.systemPrompt === undefined ? {} : { system_prompt: rendered.systemPrompt }),
115
+ ...(config.maxTokens === undefined ? {} : { max_output_tokens: config.maxTokens })
116
+ });
117
+ const raw = yield* httpClient.postJson(`${normalized}/api/v1/chat`, JSON.stringify(request), authHeaders(), config.timeout);
118
+ const response = yield* decodeNativeResponse(raw);
119
+ return [response, raw];
120
+ });
121
+ const executeStructuredWithUsage = (prompt, schema, jsonSchema) => Effect.gen(function* () {
122
+ const [response, raw] = yield* nativeRequest([
123
+ LmStudioMessage.make({
124
+ role: "user",
125
+ content: `${prompt}\n\n` +
126
+ "Please respond with valid JSON only, no additional text or markdown formatting."
127
+ })
128
+ ]);
129
+ const content = yield* nativeContent(response, raw);
130
+ const value = yield* parseFromText(content, schema, jsonSchema);
131
+ const result = [value, undefined, undefined];
132
+ return result;
133
+ });
134
+ const isAvailable = config.baseUrl === undefined
135
+ ? Effect.succeed(false)
136
+ : httpClient
137
+ .get(`${normalizeLmStudioBaseUrl(config.baseUrl)}/api/v1/models`, emptyHeaders, config.timeout)
138
+ .pipe(Effect.match({
139
+ onFailure: () => false,
140
+ onSuccess: () => true
141
+ }));
142
+ return makeApiConnector({
143
+ id: ConnectorIds.LmStudio,
144
+ executeStream: (prompt) => streamRequest([
145
+ LmStudioMessage.make({
146
+ role: "user",
147
+ content: prompt
148
+ })
149
+ ]),
150
+ executeStreamWithHistory: (messages) => streamRequest(lmStudioHistory(messages)),
151
+ executeWithTools: () => Effect.fail(InvalidRequestError.make({
152
+ message: "LmStudio provider does not yet support tool calling in this implementation"
153
+ })),
154
+ executeStructuredWithUsage,
155
+ isAvailable
156
+ });
157
+ };
158
+ //# sourceMappingURL=LmStudioProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LmStudioProvider.js","sourceRoot":"","sources":["../../src/providers/LmStudioProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ApiConnectorShape } from "../Connector.ts";
2
+ import { type JsonSchema, type LlmConfig } from "../Models.ts";
3
+ export declare const mockResponse: () => string;
4
+ export declare const mockStructuredResponse: (prompt: string, schema: JsonSchema) => string;
5
+ export declare const makeMockProvider: (config: LlmConfig) => ApiConnectorShape;
6
+ //# sourceMappingURL=MockProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MockProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGlF,OAAO,EAML,KAAK,UAAU,EACf,KAAK,SAAS,EAEf,MAAM,cAAc,CAAA;AAGrB,eAAO,MAAM,YAAY,QAAO,MAGiE,CAAA;AA0MjG,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,EAAE,QAAQ,UAAU,KAAG,MAY3E,CAAA;AAYD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,KAAG,iBAwEpD,CAAA"}
@@ -0,0 +1,271 @@
1
+ import * as Duration from "effect/Duration";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Schedule from "effect/Schedule";
4
+ import * as Stream from "effect/Stream";
5
+ import { apiConnectorCapabilities } from "../Connector.js";
6
+ import { ConnectorIds, HealthStatus, LlmChunk, TokenUsage, ToolCallResponse } from "../Models.js";
7
+ import { parseFromText } from "../StructuredOutput.js";
8
+ export const mockResponse = () => "This is a mock response from the demo AI provider. " +
9
+ "The mock provider simulates LLM output without making any real API calls. " +
10
+ "All features work normally except AI-generated content is replaced with pre-canned responses.";
11
+ const issueTemplates = [
12
+ {
13
+ title: "Set up Spring Boot project scaffold",
14
+ tags: ["setup", "bootstrap"],
15
+ capabilities: ["java", "spring-boot"],
16
+ criteria: [
17
+ "Maven/Gradle build compiles",
18
+ "Application starts on port 8080",
19
+ "Health endpoint returns 200"
20
+ ],
21
+ body: "Initialize the Spring Boot 3.x project with Java 21, configure build tool, " +
22
+ "and add Actuator health endpoint."
23
+ },
24
+ {
25
+ title: "Implement REST controller for orders",
26
+ tags: ["rest", "api"],
27
+ capabilities: ["java", "spring-boot", "rest"],
28
+ criteria: [
29
+ "GET /api/orders returns list",
30
+ "POST /api/orders creates order",
31
+ "Validation errors return 400"
32
+ ],
33
+ body: "Create OrderController with CRUD endpoints, request validation, and proper HTTP status codes."
34
+ },
35
+ {
36
+ title: "Add JPA entity and repository for Order",
37
+ tags: ["database", "jpa"],
38
+ capabilities: ["java", "spring-data"],
39
+ criteria: [
40
+ "Order entity maps to orders table",
41
+ "Repository supports findByStatus",
42
+ "Flyway migration creates schema"
43
+ ],
44
+ body: "Define Order JPA entity with audit fields, OrderRepository interface, and initial Flyway migration script."
45
+ },
46
+ {
47
+ title: "Configure Spring Security with JWT authentication",
48
+ tags: ["security", "auth"],
49
+ capabilities: ["java", "spring-security"],
50
+ criteria: [
51
+ "Unauthenticated requests return 401",
52
+ "Valid JWT grants access",
53
+ "Tokens expire after configured TTL"
54
+ ],
55
+ body: "Set up Spring Security filter chain with JWT validation, configure public and protected endpoints."
56
+ },
57
+ {
58
+ title: "Write unit tests for OrderService",
59
+ tags: ["testing", "unit-test"],
60
+ capabilities: ["java", "testing"],
61
+ criteria: [
62
+ "Service methods have test coverage",
63
+ "Edge cases tested",
64
+ "Mocks used for repository layer"
65
+ ],
66
+ body: "Create JUnit 5 tests for OrderService using Mockito for repository dependencies."
67
+ },
68
+ {
69
+ title: "Add pagination and sorting to list endpoints",
70
+ tags: ["rest", "api"],
71
+ capabilities: ["java", "spring-boot"],
72
+ criteria: [
73
+ "GET /api/orders supports page and size params",
74
+ "Sort by createdAt default",
75
+ "Response includes total count"
76
+ ],
77
+ body: "Implement Spring Data Pageable support in OrderController with proper response envelope."
78
+ },
79
+ {
80
+ title: "Set up Docker container and Compose file",
81
+ tags: ["devops", "docker"],
82
+ capabilities: ["docker", "devops"],
83
+ criteria: [
84
+ "Dockerfile builds multi-stage image",
85
+ "docker-compose starts app with PostgreSQL",
86
+ "Container health check passes"
87
+ ],
88
+ body: "Create optimized multi-stage Dockerfile and docker-compose.yml with PostgreSQL service."
89
+ },
90
+ {
91
+ title: "Implement global exception handler",
92
+ tags: ["rest", "error-handling"],
93
+ capabilities: ["java", "spring-boot"],
94
+ criteria: [
95
+ "Validation errors return structured response",
96
+ "404 returns proper body",
97
+ "500 errors are logged"
98
+ ],
99
+ body: "Create @ControllerAdvice with handlers for common exceptions, returning consistent error response format."
100
+ },
101
+ {
102
+ title: "Add integration tests with TestContainers",
103
+ tags: ["testing", "integration"],
104
+ capabilities: ["java", "testing", "docker"],
105
+ criteria: [
106
+ "Tests run against real PostgreSQL",
107
+ "Database is reset between tests",
108
+ "CI pipeline can run tests"
109
+ ],
110
+ body: "Set up TestContainers with PostgreSQL for integration testing, create base test class with shared container."
111
+ },
112
+ {
113
+ title: "Configure structured logging with correlation IDs",
114
+ tags: ["observability", "logging"],
115
+ capabilities: ["java", "observability"],
116
+ criteria: [
117
+ "Logs include correlationId header",
118
+ "JSON log format in production",
119
+ "Request/response logged at DEBUG"
120
+ ],
121
+ body: "Set up Logback with JSON encoder, MDC-based correlation ID propagation via servlet filter."
122
+ },
123
+ {
124
+ title: "Create OpenAPI specification",
125
+ tags: ["documentation", "api"],
126
+ capabilities: ["java", "documentation"],
127
+ criteria: [
128
+ "Swagger UI accessible at /swagger-ui",
129
+ "All endpoints documented",
130
+ "Schema examples included"
131
+ ],
132
+ body: "Add springdoc-openapi dependency, annotate controllers with OpenAPI annotations."
133
+ },
134
+ {
135
+ title: "Implement rate limiting middleware",
136
+ tags: ["security", "performance"],
137
+ capabilities: ["java", "spring-boot"],
138
+ criteria: [
139
+ "Rate limit headers in response",
140
+ "429 returned when exceeded",
141
+ "Configurable per-endpoint limits"
142
+ ],
143
+ body: "Add Bucket4j-based rate limiting filter with configurable limits per endpoint."
144
+ },
145
+ {
146
+ title: "Set up GitHub Actions CI pipeline",
147
+ tags: ["devops", "ci"],
148
+ capabilities: ["devops", "ci"],
149
+ criteria: [
150
+ "Build runs on push to main",
151
+ "Tests execute in CI",
152
+ "Docker image pushed on release"
153
+ ],
154
+ body: "Create GitHub Actions workflow for build, test, and Docker image publishing."
155
+ },
156
+ {
157
+ title: "Add Actuator metrics and custom health indicators",
158
+ tags: ["observability", "monitoring"],
159
+ capabilities: ["java", "observability"],
160
+ criteria: [
161
+ "Custom health check for database",
162
+ "Business metrics exposed",
163
+ "Prometheus endpoint available"
164
+ ],
165
+ body: "Configure Actuator with Prometheus exporter, add custom HealthIndicator and MeterBinder implementations."
166
+ },
167
+ {
168
+ title: "Implement order status workflow",
169
+ tags: ["business-logic", "workflow"],
170
+ capabilities: ["java", "spring-boot"],
171
+ criteria: [
172
+ "Status transitions are validated",
173
+ "Invalid transitions return 422",
174
+ "Status history is tracked"
175
+ ],
176
+ body: "Create OrderStatusMachine with allowed transitions, persist status change events."
177
+ }
178
+ ];
179
+ const mockIssue = (index) => {
180
+ const template = issueTemplates[(index - 1) % issueTemplates.length];
181
+ return {
182
+ id: `demo-issue-${index}`,
183
+ title: template?.title ?? "",
184
+ priority: index <= 3 ? "high" : index <= 7 ? "medium" : "low",
185
+ assignedAgent: null,
186
+ requiredCapabilities: template?.capabilities ?? [],
187
+ blockedBy: [],
188
+ tags: template?.tags ?? [],
189
+ acceptanceCriteria: template?.criteria ?? [],
190
+ estimate: "2h",
191
+ proofOfWork: ["diff-stat"],
192
+ body: template?.body ?? ""
193
+ };
194
+ };
195
+ const requestedIssueCount = (prompt) => {
196
+ const matched = /(\d+)\s*issue/i.exec(prompt)?.[1];
197
+ return Math.min(matched === undefined ? 10 : Number(matched), 100);
198
+ };
199
+ export const mockStructuredResponse = (prompt, schema) => {
200
+ const schemaText = JSON.stringify(schema);
201
+ if (schemaText.includes('"summary"') && schemaText.includes('"issues"')) {
202
+ const count = requestedIssueCount(prompt);
203
+ return JSON.stringify({
204
+ summary: `Generated ${count} issue drafts for Spring Boot microservice demo.`,
205
+ issues: Array.from({ length: count }, (_, index) => mockIssue(index + 1))
206
+ });
207
+ }
208
+ return JSON.stringify({
209
+ result: "mock structured response"
210
+ });
211
+ };
212
+ const lastUserPrompt = (messages) => {
213
+ for (let index = messages.length - 1; index >= 0; index -= 1) {
214
+ const message = messages[index];
215
+ if (message?.role === "User") {
216
+ return message.content;
217
+ }
218
+ }
219
+ return "";
220
+ };
221
+ export const makeMockProvider = (config) => {
222
+ const executeStructuredWithUsage = (prompt, schema, jsonSchema) => Effect.gen(function* () {
223
+ const value = yield* parseFromText(mockStructuredResponse(prompt, jsonSchema), schema, jsonSchema);
224
+ const result = [value, undefined, undefined];
225
+ return result;
226
+ });
227
+ const executeStream = (_prompt) => {
228
+ const words = mockResponse().split(" ");
229
+ return Stream.fromIterable(words.map((word, index) => {
230
+ const last = index === words.length - 1;
231
+ return LlmChunk.make({
232
+ delta: `${index === 0 ? "" : " "}${word}`,
233
+ metadata: {
234
+ provider: "mock",
235
+ model: config.model
236
+ },
237
+ ...(last ? { finishReason: "stop" } : {}),
238
+ ...(last
239
+ ? {
240
+ usage: TokenUsage.make({
241
+ prompt: 10,
242
+ completion: words.length,
243
+ total: 10 + words.length
244
+ })
245
+ }
246
+ : {})
247
+ });
248
+ })).pipe(Stream.schedule(Schedule.spaced(Duration.millis(50))));
249
+ };
250
+ return {
251
+ id: ConnectorIds.Mock,
252
+ kind: "Api",
253
+ capabilities: apiConnectorCapabilities(),
254
+ healthCheck: Effect.succeed(HealthStatus.make({
255
+ availability: "Healthy",
256
+ authStatus: "Valid",
257
+ latency: Duration.zero
258
+ })),
259
+ executeStream,
260
+ executeStreamWithHistory: (messages) => executeStream(lastUserPrompt(messages)),
261
+ executeWithTools: (_prompt) => Effect.succeed(ToolCallResponse.make({
262
+ content: mockResponse(),
263
+ toolCalls: [],
264
+ finishReason: "stop"
265
+ })),
266
+ executeStructured: (prompt, schema, jsonSchema) => Effect.map(executeStructuredWithUsage(prompt, schema, jsonSchema), ([value]) => value),
267
+ executeStructuredWithUsage,
268
+ isAvailable: Effect.succeed(true)
269
+ };
270
+ };
271
+ //# sourceMappingURL=MockProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockProvider.js","sourceRoot":"","sources":["../../src/providers/MockProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare const OllamaOptions_base: Schema.Class<OllamaOptions, Schema.Struct<{
3
+ readonly temperature: Schema.optionalKey<Schema.Number>;
4
+ readonly num_predict: Schema.optionalKey<Schema.Int>;
5
+ }>, {}>;
6
+ export declare class OllamaOptions extends OllamaOptions_base {
7
+ }
8
+ declare const OllamaGenerateRequest_base: Schema.Class<OllamaGenerateRequest, Schema.Struct<{
9
+ readonly model: Schema.String;
10
+ readonly prompt: Schema.String;
11
+ readonly stream: Schema.Boolean;
12
+ readonly format: Schema.optionalKey<Schema.String>;
13
+ readonly options: Schema.optionalKey<typeof OllamaOptions>;
14
+ }>, {}>;
15
+ export declare class OllamaGenerateRequest extends OllamaGenerateRequest_base {
16
+ }
17
+ declare const OllamaMessage_base: Schema.Class<OllamaMessage, Schema.Struct<{
18
+ readonly role: Schema.String;
19
+ readonly content: Schema.String;
20
+ }>, {}>;
21
+ export declare class OllamaMessage extends OllamaMessage_base {
22
+ }
23
+ declare const OllamaChatRequest_base: Schema.Class<OllamaChatRequest, Schema.Struct<{
24
+ readonly model: Schema.String;
25
+ readonly messages: Schema.$Array<typeof OllamaMessage>;
26
+ readonly stream: Schema.Boolean;
27
+ readonly format: Schema.optionalKey<Schema.String>;
28
+ readonly options: Schema.optionalKey<typeof OllamaOptions>;
29
+ }>, {}>;
30
+ export declare class OllamaChatRequest extends OllamaChatRequest_base {
31
+ }
32
+ declare const OllamaGenerateResponse_base: Schema.Class<OllamaGenerateResponse, Schema.Struct<{
33
+ readonly model: Schema.String;
34
+ readonly response: Schema.String;
35
+ readonly done: Schema.Boolean;
36
+ readonly context: Schema.optionalKey<Schema.$Array<Schema.Int>>;
37
+ readonly total_duration: Schema.optionalKey<Schema.Int>;
38
+ readonly load_duration: Schema.optionalKey<Schema.Int>;
39
+ readonly prompt_eval_count: Schema.optionalKey<Schema.Int>;
40
+ readonly eval_count: Schema.optionalKey<Schema.Int>;
41
+ }>, {}>;
42
+ export declare class OllamaGenerateResponse extends OllamaGenerateResponse_base {
43
+ }
44
+ declare const OllamaChatResponse_base: Schema.Class<OllamaChatResponse, Schema.Struct<{
45
+ readonly model: Schema.String;
46
+ readonly message: typeof OllamaMessage;
47
+ readonly done: Schema.Boolean;
48
+ readonly total_duration: Schema.optionalKey<Schema.Int>;
49
+ readonly load_duration: Schema.optionalKey<Schema.Int>;
50
+ readonly prompt_eval_count: Schema.optionalKey<Schema.Int>;
51
+ readonly eval_count: Schema.optionalKey<Schema.Int>;
52
+ }>, {}>;
53
+ export declare class OllamaChatResponse extends OllamaChatResponse_base {
54
+ }
55
+ declare const OllamaModelInfo_base: Schema.Class<OllamaModelInfo, Schema.Struct<{
56
+ readonly name: Schema.String;
57
+ readonly modified_at: Schema.String;
58
+ readonly size: Schema.Int;
59
+ }>, {}>;
60
+ export declare class OllamaModelInfo extends OllamaModelInfo_base {
61
+ }
62
+ declare const OllamaModelsResponse_base: Schema.Class<OllamaModelsResponse, Schema.Struct<{
63
+ readonly models: Schema.$Array<typeof OllamaModelInfo>;
64
+ }>, {}>;
65
+ export declare class OllamaModelsResponse extends OllamaModelsResponse_base {
66
+ }
67
+ export {};
68
+ //# sourceMappingURL=OllamaModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaModels.d.ts","sourceRoot":"","sources":["../../src/providers/OllamaModels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;AAEvC,qBAAa,aAAc,SAAQ,kBAGjC;CAAG;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAQzC;CAAG;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAGjC;CAAG;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAMrC;CAAG;;;;;;;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAW1C;CAAG;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAQtC;CAAG;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAInC;CAAG;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAIxC;CAAG"}
@@ -0,0 +1,59 @@
1
+ import * as Schema from "effect/Schema";
2
+ export class OllamaOptions extends Schema.Class("OllamaOptions")({
3
+ temperature: Schema.optionalKey(Schema.Number),
4
+ num_predict: Schema.optionalKey(Schema.Int)
5
+ }) {
6
+ }
7
+ export class OllamaGenerateRequest extends Schema.Class("OllamaGenerateRequest")({
8
+ model: Schema.String,
9
+ prompt: Schema.String,
10
+ stream: Schema.Boolean,
11
+ format: Schema.optionalKey(Schema.String),
12
+ options: Schema.optionalKey(OllamaOptions)
13
+ }) {
14
+ }
15
+ export class OllamaMessage extends Schema.Class("OllamaMessage")({
16
+ role: Schema.String,
17
+ content: Schema.String
18
+ }) {
19
+ }
20
+ export class OllamaChatRequest extends Schema.Class("OllamaChatRequest")({
21
+ model: Schema.String,
22
+ messages: Schema.Array(OllamaMessage),
23
+ stream: Schema.Boolean,
24
+ format: Schema.optionalKey(Schema.String),
25
+ options: Schema.optionalKey(OllamaOptions)
26
+ }) {
27
+ }
28
+ export class OllamaGenerateResponse extends Schema.Class("OllamaGenerateResponse")({
29
+ model: Schema.String,
30
+ response: Schema.String,
31
+ done: Schema.Boolean,
32
+ context: Schema.optionalKey(Schema.Array(Schema.Int)),
33
+ total_duration: Schema.optionalKey(Schema.Int),
34
+ load_duration: Schema.optionalKey(Schema.Int),
35
+ prompt_eval_count: Schema.optionalKey(Schema.Int),
36
+ eval_count: Schema.optionalKey(Schema.Int)
37
+ }) {
38
+ }
39
+ export class OllamaChatResponse extends Schema.Class("OllamaChatResponse")({
40
+ model: Schema.String,
41
+ message: OllamaMessage,
42
+ done: Schema.Boolean,
43
+ total_duration: Schema.optionalKey(Schema.Int),
44
+ load_duration: Schema.optionalKey(Schema.Int),
45
+ prompt_eval_count: Schema.optionalKey(Schema.Int),
46
+ eval_count: Schema.optionalKey(Schema.Int)
47
+ }) {
48
+ }
49
+ export class OllamaModelInfo extends Schema.Class("OllamaModelInfo")({
50
+ name: Schema.String,
51
+ modified_at: Schema.String,
52
+ size: Schema.Int
53
+ }) {
54
+ }
55
+ export class OllamaModelsResponse extends Schema.Class("OllamaModelsResponse")({
56
+ models: Schema.Array(OllamaModelInfo)
57
+ }) {
58
+ }
59
+ //# sourceMappingURL=OllamaModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaModels.js","sourceRoot":"","sources":["../../src/providers/OllamaModels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ApiConnectorShape } from "../Connector.ts";
2
+ import type { HttpClientShape } from "../HttpClient.ts";
3
+ import { type LlmConfig, type Message } from "../Models.ts";
4
+ import { OllamaMessage } from "./OllamaModels.ts";
5
+ export declare const ollamaHistory: (messages: ReadonlyArray<Message>) => ReadonlyArray<OllamaMessage>;
6
+ export declare const makeOllamaProvider: (config: LlmConfig, httpClient: HttpClientShape) => ApiConnectorShape;
7
+ //# sourceMappingURL=OllamaProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OllamaProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,OAAO,EACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAKL,aAAa,EAEd,MAAM,mBAAmB,CAAA;AAmB1B,eAAO,MAAM,aAAa,GAAI,UAAU,aAAa,CAAC,OAAO,CAAC,KAAG,aAAa,CAAC,aAAa,CAOzF,CAAA;AA6CH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EACjB,YAAY,eAAe,KAC1B,iBA0IF,CAAA"}