@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,8 @@
|
|
|
1
|
+
import { type CliConnectorShape } from "../Connector.ts";
|
|
2
|
+
import type { CliConnectorConfig } from "../ConnectorConfig.ts";
|
|
3
|
+
import { LlmChunk } from "../Models.ts";
|
|
4
|
+
import type { ProcessExecutorShape } from "../ProcessExecutor.ts";
|
|
5
|
+
export declare const openCodeCliExtraArgs: (config: CliConnectorConfig) => ReadonlyArray<string>;
|
|
6
|
+
export declare const parseOpenCodeCliStreamLine: (line: string) => ReadonlyArray<LlmChunk>;
|
|
7
|
+
export declare const makeOpenCodeCliConnector: (config: CliConnectorConfig, executor: ProcessExecutorShape) => CliConnectorShape;
|
|
8
|
+
//# sourceMappingURL=OpenCodeCliConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeCliConnector.d.ts","sourceRoot":"","sources":["../../src/providers/OpenCodeCliConnector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAgB,QAAQ,EAAc,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAajE,eAAO,MAAM,oBAAoB,GAAI,QAAQ,kBAAkB,KAAG,aAAa,CAAC,MAAM,CAIrF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,QAAQ,CAsD/E,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,QAAQ,kBAAkB,EAC1B,UAAU,oBAAoB,KAC7B,iBAmDF,CAAA"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Stream from "effect/Stream";
|
|
3
|
+
import { makeCliConnector } from "../Connector.js";
|
|
4
|
+
import { ConnectorIds, LlmChunk, TokenUsage } from "../Models.js";
|
|
5
|
+
import { failClassifiedCliError, jsonField, jsonIntField, jsonStringField, optionalModelArgs, parseJsonLine, sortedFlagArgs, toolEventChunk, usageEventChunk } from "./CliSupport.js";
|
|
6
|
+
export const openCodeCliExtraArgs = (config) => [
|
|
7
|
+
...optionalModelArgs(config.model),
|
|
8
|
+
...(config.readOnly ? ["--agent", "plan"] : ["--auto"]),
|
|
9
|
+
...sortedFlagArgs(config.flags)
|
|
10
|
+
];
|
|
11
|
+
export const parseOpenCodeCliStreamLine = (line) => {
|
|
12
|
+
const json = parseJsonLine(line);
|
|
13
|
+
if (json === undefined) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const part = jsonField(json, "part");
|
|
17
|
+
switch (jsonStringField(json, "type")) {
|
|
18
|
+
case "text": {
|
|
19
|
+
const text = jsonStringField(part, "text");
|
|
20
|
+
return text === undefined || text.length === 0 ? [] : [LlmChunk.make({ delta: text })];
|
|
21
|
+
}
|
|
22
|
+
case "tool_use":
|
|
23
|
+
return part === undefined
|
|
24
|
+
? []
|
|
25
|
+
: [
|
|
26
|
+
toolEventChunk(jsonStringField(part, "tool") ?? "", jsonField(jsonField(part, "state"), "input"))
|
|
27
|
+
];
|
|
28
|
+
case "step_finish": {
|
|
29
|
+
const tokens = jsonField(part, "tokens");
|
|
30
|
+
if (tokens === undefined) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const prompt = jsonIntField(tokens, "input") ?? 0;
|
|
34
|
+
const completion = jsonIntField(tokens, "output") ?? 0;
|
|
35
|
+
const cached = jsonIntField(jsonField(tokens, "cache"), "read");
|
|
36
|
+
return [
|
|
37
|
+
usageEventChunk(undefined, TokenUsage.make({
|
|
38
|
+
prompt,
|
|
39
|
+
completion,
|
|
40
|
+
total: jsonIntField(tokens, "total") ?? prompt + completion,
|
|
41
|
+
...(cached === undefined ? {} : { cached })
|
|
42
|
+
}))
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
case "error":
|
|
46
|
+
return [
|
|
47
|
+
LlmChunk.make({
|
|
48
|
+
delta: "",
|
|
49
|
+
metadata: {
|
|
50
|
+
opencodeError: jsonStringField(json, "error") ?? jsonStringField(json, "message") ?? "opencode error"
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
];
|
|
54
|
+
default:
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
export const makeOpenCodeCliConnector = (config, executor) => {
|
|
59
|
+
const cwd = config.workingDir ?? ".";
|
|
60
|
+
const extraArgs = openCodeCliExtraArgs(config);
|
|
61
|
+
const buildArgv = (prompt) => [
|
|
62
|
+
"opencode",
|
|
63
|
+
"run",
|
|
64
|
+
...extraArgs,
|
|
65
|
+
prompt
|
|
66
|
+
];
|
|
67
|
+
const complete = Effect.fn("@llm4ts/core/providers/OpenCodeCliConnector.complete")(function* (prompt) {
|
|
68
|
+
const result = yield* executor.run(buildArgv(prompt), cwd, config.envVars);
|
|
69
|
+
if (result.exitCode !== 0) {
|
|
70
|
+
const raw = result.stdout.join("\n");
|
|
71
|
+
return yield* failClassifiedCliError("opencode", `opencode exited with code ${result.exitCode}`, raw);
|
|
72
|
+
}
|
|
73
|
+
return result.stdout.join("\n");
|
|
74
|
+
});
|
|
75
|
+
const completeStream = (prompt) => executor
|
|
76
|
+
.runStreaming(["opencode", "run", "--format", "json", ...extraArgs, prompt], cwd, config.envVars)
|
|
77
|
+
.pipe(Stream.flatMap((line) => Stream.fromIterable(parseOpenCodeCliStreamLine(line))), Stream.mapEffect((chunk) => {
|
|
78
|
+
const message = chunk.metadata.opencodeError;
|
|
79
|
+
return message === undefined
|
|
80
|
+
? Effect.succeed(chunk)
|
|
81
|
+
: failClassifiedCliError("opencode", "opencode error", message);
|
|
82
|
+
}));
|
|
83
|
+
return makeCliConnector({
|
|
84
|
+
id: ConnectorIds.OpenCode,
|
|
85
|
+
interactionSupport: "ContinuationOnly",
|
|
86
|
+
buildArgv: (prompt, _context) => buildArgv(prompt),
|
|
87
|
+
buildInteractiveArgv: (_context) => ["opencode"],
|
|
88
|
+
complete,
|
|
89
|
+
completeStream,
|
|
90
|
+
versionProbe: { executor, binary: "opencode", cwd }
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=OpenCodeCliConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeCliConnector.js","sourceRoot":"","sources":["../../src/providers/OpenCodeCliConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
declare const OpenCodeMessage_base: Schema.Class<OpenCodeMessage, Schema.Struct<{
|
|
3
|
+
readonly role: Schema.String;
|
|
4
|
+
readonly content: Schema.String;
|
|
5
|
+
}>, {}>;
|
|
6
|
+
export declare class OpenCodeMessage extends OpenCodeMessage_base {
|
|
7
|
+
}
|
|
8
|
+
declare const OpenCodeJsonSchemaSpec_base: Schema.Class<OpenCodeJsonSchemaSpec, Schema.Struct<{
|
|
9
|
+
readonly name: Schema.String;
|
|
10
|
+
readonly schema: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
|
|
11
|
+
}>, {}>;
|
|
12
|
+
export declare class OpenCodeJsonSchemaSpec extends OpenCodeJsonSchemaSpec_base {
|
|
13
|
+
}
|
|
14
|
+
declare const OpenCodeResponseFormat_base: Schema.Class<OpenCodeResponseFormat, Schema.Struct<{
|
|
15
|
+
readonly type: Schema.String;
|
|
16
|
+
readonly json_schema: Schema.optionalKey<typeof OpenCodeJsonSchemaSpec>;
|
|
17
|
+
}>, {}>;
|
|
18
|
+
export declare class OpenCodeResponseFormat extends OpenCodeResponseFormat_base {
|
|
19
|
+
}
|
|
20
|
+
declare const OpenCodeCompletionRequest_base: Schema.Class<OpenCodeCompletionRequest, Schema.Struct<{
|
|
21
|
+
readonly model: Schema.String;
|
|
22
|
+
readonly messages: Schema.$Array<typeof OpenCodeMessage>;
|
|
23
|
+
readonly temperature: Schema.optionalKey<Schema.Number>;
|
|
24
|
+
readonly max_tokens: Schema.optionalKey<Schema.Int>;
|
|
25
|
+
readonly max_completion_tokens: Schema.optionalKey<Schema.Int>;
|
|
26
|
+
readonly stream: Schema.optionalKey<Schema.Boolean>;
|
|
27
|
+
readonly response_format: Schema.optionalKey<typeof OpenCodeResponseFormat>;
|
|
28
|
+
}>, {}>;
|
|
29
|
+
export declare class OpenCodeCompletionRequest extends OpenCodeCompletionRequest_base {
|
|
30
|
+
}
|
|
31
|
+
declare const OpenCodeDelta_base: Schema.Class<OpenCodeDelta, Schema.Struct<{
|
|
32
|
+
readonly content: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
33
|
+
}>, {}>;
|
|
34
|
+
export declare class OpenCodeDelta extends OpenCodeDelta_base {
|
|
35
|
+
}
|
|
36
|
+
declare const OpenCodeChoice_base: Schema.Class<OpenCodeChoice, Schema.Struct<{
|
|
37
|
+
readonly index: Schema.optionalKey<Schema.Int>;
|
|
38
|
+
readonly message: Schema.optionalKey<typeof OpenCodeMessage>;
|
|
39
|
+
readonly delta: Schema.optionalKey<typeof OpenCodeDelta>;
|
|
40
|
+
readonly text: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
41
|
+
readonly finish_reason: Schema.optionalKey<Schema.NullOr<Schema.String>>;
|
|
42
|
+
}>, {}>;
|
|
43
|
+
export declare class OpenCodeChoice extends OpenCodeChoice_base {
|
|
44
|
+
}
|
|
45
|
+
declare const OpenCodeTokenUsage_base: Schema.Class<OpenCodeTokenUsage, Schema.Struct<{
|
|
46
|
+
readonly prompt_tokens: Schema.optionalKey<Schema.Int>;
|
|
47
|
+
readonly completion_tokens: Schema.optionalKey<Schema.Int>;
|
|
48
|
+
readonly total_tokens: Schema.optionalKey<Schema.Int>;
|
|
49
|
+
}>, {}>;
|
|
50
|
+
export declare class OpenCodeTokenUsage extends OpenCodeTokenUsage_base {
|
|
51
|
+
}
|
|
52
|
+
declare const OpenCodeCompletionResponse_base: Schema.Class<OpenCodeCompletionResponse, Schema.Struct<{
|
|
53
|
+
readonly id: Schema.optionalKey<Schema.String>;
|
|
54
|
+
readonly choices: Schema.$Array<typeof OpenCodeChoice>;
|
|
55
|
+
readonly usage: Schema.optionalKey<typeof OpenCodeTokenUsage>;
|
|
56
|
+
readonly model: Schema.optionalKey<Schema.String>;
|
|
57
|
+
}>, {}>;
|
|
58
|
+
export declare class OpenCodeCompletionResponse extends OpenCodeCompletionResponse_base {
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=OpenCodeModels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeModels.d.ts","sourceRoot":"","sources":["../../src/providers/OpenCodeModels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;AAGvC,qBAAa,eAAgB,SAAQ,oBAGnC;CAAG;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAK1C;CAAG;;;;;AAEL,qBAAa,sBAAuB,SAAQ,2BAK1C;CAAG;;;;;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAU7C;CAAG;;;;AAEL,qBAAa,aAAc,SAAQ,kBAEjC;CAAG;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAMlC;CAAG;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAItC;CAAG;;;;;;;AAEL,qBAAa,0BAA2B,SAAQ,+BAO9C;CAAG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { JsonSchema } from "../Models.js";
|
|
3
|
+
export class OpenCodeMessage extends Schema.Class("OpenCodeMessage")({
|
|
4
|
+
role: Schema.String,
|
|
5
|
+
content: Schema.String
|
|
6
|
+
}) {
|
|
7
|
+
}
|
|
8
|
+
export class OpenCodeJsonSchemaSpec extends Schema.Class("OpenCodeJsonSchemaSpec")({
|
|
9
|
+
name: Schema.String,
|
|
10
|
+
schema: JsonSchema
|
|
11
|
+
}) {
|
|
12
|
+
}
|
|
13
|
+
export class OpenCodeResponseFormat extends Schema.Class("OpenCodeResponseFormat")({
|
|
14
|
+
type: Schema.String,
|
|
15
|
+
json_schema: Schema.optionalKey(OpenCodeJsonSchemaSpec)
|
|
16
|
+
}) {
|
|
17
|
+
}
|
|
18
|
+
export class OpenCodeCompletionRequest extends Schema.Class("OpenCodeCompletionRequest")({
|
|
19
|
+
model: Schema.String,
|
|
20
|
+
messages: Schema.Array(OpenCodeMessage),
|
|
21
|
+
temperature: Schema.optionalKey(Schema.Number),
|
|
22
|
+
max_tokens: Schema.optionalKey(Schema.Int),
|
|
23
|
+
max_completion_tokens: Schema.optionalKey(Schema.Int),
|
|
24
|
+
stream: Schema.optionalKey(Schema.Boolean),
|
|
25
|
+
response_format: Schema.optionalKey(OpenCodeResponseFormat)
|
|
26
|
+
}) {
|
|
27
|
+
}
|
|
28
|
+
export class OpenCodeDelta extends Schema.Class("OpenCodeDelta")({
|
|
29
|
+
content: Schema.optionalKey(Schema.NullOr(Schema.String))
|
|
30
|
+
}) {
|
|
31
|
+
}
|
|
32
|
+
export class OpenCodeChoice extends Schema.Class("OpenCodeChoice")({
|
|
33
|
+
index: Schema.optionalKey(Schema.Int),
|
|
34
|
+
message: Schema.optionalKey(OpenCodeMessage),
|
|
35
|
+
delta: Schema.optionalKey(OpenCodeDelta),
|
|
36
|
+
text: Schema.optionalKey(Schema.NullOr(Schema.String)),
|
|
37
|
+
finish_reason: Schema.optionalKey(Schema.NullOr(Schema.String))
|
|
38
|
+
}) {
|
|
39
|
+
}
|
|
40
|
+
export class OpenCodeTokenUsage extends Schema.Class("OpenCodeTokenUsage")({
|
|
41
|
+
prompt_tokens: Schema.optionalKey(Schema.Int),
|
|
42
|
+
completion_tokens: Schema.optionalKey(Schema.Int),
|
|
43
|
+
total_tokens: Schema.optionalKey(Schema.Int)
|
|
44
|
+
}) {
|
|
45
|
+
}
|
|
46
|
+
export class OpenCodeCompletionResponse extends Schema.Class("OpenCodeCompletionResponse")({
|
|
47
|
+
id: Schema.optionalKey(Schema.String),
|
|
48
|
+
choices: Schema.Array(OpenCodeChoice),
|
|
49
|
+
usage: Schema.optionalKey(OpenCodeTokenUsage),
|
|
50
|
+
model: Schema.optionalKey(Schema.String)
|
|
51
|
+
}) {
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=OpenCodeModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeModels.js","sourceRoot":"","sources":["../../src/providers/OpenCodeModels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,iBAAiB,CAAC,CAAC;IACpF,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,KAAK,CACtD,wBAAwB,CACzB,CAAC;IACA,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,UAAU;CACnB,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,KAAK,CACtD,wBAAwB,CACzB,CAAC;IACA,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC;CACxD,CAAC;CAAG;AAEL,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,KAAK,CACzD,2BAA2B,CAC5B,CAAC;IACA,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1C,qBAAqB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IACrD,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC;CAC5D,CAAC;CAAG;AAEL,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,KAAK,CAAgB,eAAe,CAAC,CAAC;IAC9E,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC1D,CAAC;CAAG;AAEL,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IACjF,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAAqB,oBAAoB,CAAC,CAAC;IAC7F,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7C,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;CAC7C,CAAC;CAAG;AAEL,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,KAAK,CAC1D,4BAA4B,CAC7B,CAAC;IACA,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { type ApiConnectorShape } from "../Connector.ts";
|
|
3
|
+
import { AuthenticationError, ConfigError, InvalidRequestError, ParseError } from "../Errors.ts";
|
|
4
|
+
import type { HttpClientShape } from "../HttpClient.ts";
|
|
5
|
+
import { LlmChunk, type LlmConfig, type Message } from "../Models.ts";
|
|
6
|
+
import { OpenCodeMessage } from "./OpenCodeModels.ts";
|
|
7
|
+
export declare const openCodeHistory: (messages: ReadonlyArray<Message>) => ReadonlyArray<OpenCodeMessage>;
|
|
8
|
+
export declare const parseOpenCodeSseBody: (config: LlmConfig, raw: string) => Effect.Effect<readonly LlmChunk[], import("../Errors.ts").ProviderError | import("../Errors.ts").UsageLimitError | AuthenticationError | InvalidRequestError | ParseError | import("../Errors.ts").ToolError | ConfigError | import("../Errors.ts").RateLimitError | import("../Errors.ts").TimeoutError | import("../Errors.ts").TurnLimitError, never>;
|
|
9
|
+
export declare const makeOpenCodeProvider: (config: LlmConfig, httpClient: HttpClientShape) => ApiConnectorShape;
|
|
10
|
+
//# sourceMappingURL=OpenCodeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenCodeProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,UAAU,EAEX,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAEL,QAAQ,EAGR,KAAK,SAAS,EACd,KAAK,OAAO,EAEb,MAAM,cAAc,CAAA;AAErB,OAAO,EAIL,eAAe,EAEhB,MAAM,qBAAqB,CAAA;AAoB5B,eAAO,MAAM,eAAe,GAAI,UAAU,aAAa,CAAC,OAAO,CAAC,KAAG,aAAa,CAAC,eAAe,CAM7F,CAAA;AA+CH,eAAO,MAAM,oBAAoB,8XAsBhC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,EACjB,YAAY,eAAe,KAC1B,iBAmJF,CAAA"}
|
|
@@ -0,0 +1,154 @@
|
|
|
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, InvalidRequestError, ParseError } from "../Errors.js";
|
|
7
|
+
import { ConnectorIds, LlmChunk, TokenUsage } from "../Models.js";
|
|
8
|
+
import { parseFromText } from "../StructuredOutput.js";
|
|
9
|
+
import { OpenCodeCompletionRequest, OpenCodeCompletionResponse, OpenCodeJsonSchemaSpec, OpenCodeMessage, OpenCodeResponseFormat } from "./OpenCodeModels.js";
|
|
10
|
+
const roleName = (role) => {
|
|
11
|
+
switch (role) {
|
|
12
|
+
case "System":
|
|
13
|
+
return "system";
|
|
14
|
+
case "User":
|
|
15
|
+
return "user";
|
|
16
|
+
case "Assistant":
|
|
17
|
+
return "assistant";
|
|
18
|
+
case "Tool":
|
|
19
|
+
return "tool";
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export const openCodeHistory = (messages) => messages.map((message) => OpenCodeMessage.make({
|
|
23
|
+
role: roleName(message.role),
|
|
24
|
+
content: message.content
|
|
25
|
+
}));
|
|
26
|
+
const usage = (response) => response.usage === undefined
|
|
27
|
+
? undefined
|
|
28
|
+
: TokenUsage.make({
|
|
29
|
+
prompt: response.usage.prompt_tokens ?? 0,
|
|
30
|
+
completion: response.usage.completion_tokens ?? 0,
|
|
31
|
+
total: response.usage.total_tokens ?? 0
|
|
32
|
+
});
|
|
33
|
+
const metadata = (config, response) => ({
|
|
34
|
+
provider: "opencode",
|
|
35
|
+
model: config.model,
|
|
36
|
+
...(response.id === undefined ? {} : { id: response.id }),
|
|
37
|
+
...(response.model === undefined ? {} : { response_model: response.model })
|
|
38
|
+
});
|
|
39
|
+
const decodeResponse = (raw, context) => Schema.decodeUnknownEffect(Schema.fromJsonString(OpenCodeCompletionResponse))(raw).pipe(Effect.mapError((error) => ParseError.make({
|
|
40
|
+
message: `${context}: ${String(error)}`,
|
|
41
|
+
raw
|
|
42
|
+
})));
|
|
43
|
+
const toChunk = (config, response) => {
|
|
44
|
+
const choice = response.choices[0];
|
|
45
|
+
const delta = choice?.delta?.content ?? choice?.message?.content ?? choice?.text ?? "";
|
|
46
|
+
const finishReason = choice?.finish_reason ?? undefined;
|
|
47
|
+
const tokenUsage = usage(response);
|
|
48
|
+
return LlmChunk.make({
|
|
49
|
+
delta,
|
|
50
|
+
metadata: metadata(config, response),
|
|
51
|
+
...(finishReason === undefined || finishReason === null ? {} : { finishReason }),
|
|
52
|
+
...(tokenUsage === undefined ? {} : { usage: tokenUsage })
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
export const parseOpenCodeSseBody = Effect.fn("@llm4ts/core/OpenCodeProvider.parseSseBody")(function* (config, raw) {
|
|
56
|
+
const payloads = raw
|
|
57
|
+
.split(/\r?\n/)
|
|
58
|
+
.map((line) => line.trim())
|
|
59
|
+
.filter((line) => line.startsWith("data:"))
|
|
60
|
+
.map((line) => line.slice("data:".length).trim())
|
|
61
|
+
.filter((payload) => payload.length > 0 && payload !== "[DONE]");
|
|
62
|
+
const chunks = yield* Effect.forEach(payloads, (payload) => Effect.map(decodeResponse(payload, "Failed to parse OpenCode SSE payload"), (response) => toChunk(config, response)));
|
|
63
|
+
return chunks.length === 0
|
|
64
|
+
? yield* Effect.fail(ParseError.make({
|
|
65
|
+
message: "No stream chunks parsed from OpenCode SSE response",
|
|
66
|
+
raw
|
|
67
|
+
}))
|
|
68
|
+
: chunks;
|
|
69
|
+
});
|
|
70
|
+
export const makeOpenCodeProvider = (config, httpClient) => {
|
|
71
|
+
const requiredConfig = config.baseUrl === undefined
|
|
72
|
+
? Effect.fail(ConfigError.make({
|
|
73
|
+
message: "Missing baseUrl for OpenCode provider"
|
|
74
|
+
}))
|
|
75
|
+
: config.apiKey === undefined
|
|
76
|
+
? Effect.fail(AuthenticationError.make({
|
|
77
|
+
message: "Missing API key for OpenCode provider (pass apiKey in the connector config)"
|
|
78
|
+
}))
|
|
79
|
+
: Effect.succeed({
|
|
80
|
+
baseUrl: config.baseUrl.replace(/\/+$/, ""),
|
|
81
|
+
apiKey: Redacted.value(config.apiKey)
|
|
82
|
+
});
|
|
83
|
+
const request = (messages, stream, responseFormat) => OpenCodeCompletionRequest.make({
|
|
84
|
+
model: config.model,
|
|
85
|
+
messages,
|
|
86
|
+
temperature: config.temperature ?? 0.7,
|
|
87
|
+
stream,
|
|
88
|
+
...(config.maxTokens === undefined ? {} : { max_tokens: config.maxTokens }),
|
|
89
|
+
...(responseFormat === undefined ? {} : { response_format: responseFormat })
|
|
90
|
+
});
|
|
91
|
+
const post = (messages, stream, responseFormat) => Effect.flatMap(requiredConfig, ({ apiKey, baseUrl }) => httpClient.postJson(`${baseUrl}/chat/completions`, JSON.stringify(request(messages, stream, responseFormat)), {
|
|
92
|
+
Authorization: `Bearer ${apiKey}`
|
|
93
|
+
}, config.timeout));
|
|
94
|
+
const executeResponse = (messages, responseFormat) => Effect.gen(function* () {
|
|
95
|
+
const raw = yield* post(messages, false, responseFormat);
|
|
96
|
+
const response = yield* decodeResponse(raw, "Failed to decode OpenCode response");
|
|
97
|
+
return [response, raw];
|
|
98
|
+
});
|
|
99
|
+
const responseContent = (response, raw) => {
|
|
100
|
+
const content = (response.choices[0]?.message?.content ?? response.choices[0]?.text)?.trim();
|
|
101
|
+
return content === undefined || content === null || content.length === 0
|
|
102
|
+
? Effect.fail(ParseError.make({
|
|
103
|
+
message: "OpenCode response missing choices[0].message.content",
|
|
104
|
+
raw
|
|
105
|
+
}))
|
|
106
|
+
: Effect.succeed(content);
|
|
107
|
+
};
|
|
108
|
+
const executeStructuredWithUsage = (prompt, schema, jsonSchema) => Effect.gen(function* () {
|
|
109
|
+
const responseFormat = OpenCodeResponseFormat.make({
|
|
110
|
+
type: "json_schema",
|
|
111
|
+
json_schema: OpenCodeJsonSchemaSpec.make({
|
|
112
|
+
name: "response",
|
|
113
|
+
schema: jsonSchema
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
const [response, raw] = yield* executeResponse([
|
|
117
|
+
OpenCodeMessage.make({
|
|
118
|
+
role: "user",
|
|
119
|
+
content: prompt
|
|
120
|
+
})
|
|
121
|
+
], responseFormat);
|
|
122
|
+
const content = yield* responseContent(response, raw);
|
|
123
|
+
const value = yield* parseFromText(content, schema, jsonSchema);
|
|
124
|
+
const result = [value, undefined, undefined];
|
|
125
|
+
return result;
|
|
126
|
+
});
|
|
127
|
+
const stream = (messages) => Stream.flatMap(Stream.fromEffect(Effect.flatMap(post(messages, true), (raw) => parseOpenCodeSseBody(config, raw))), Stream.fromIterable);
|
|
128
|
+
const isAvailable = config.baseUrl === undefined || config.apiKey === undefined
|
|
129
|
+
? Effect.succeed(false)
|
|
130
|
+
: httpClient
|
|
131
|
+
.get(`${config.baseUrl.replace(/\/+$/, "")}/models`, {
|
|
132
|
+
Authorization: `Bearer ${Redacted.value(config.apiKey)}`
|
|
133
|
+
}, config.timeout)
|
|
134
|
+
.pipe(Effect.match({
|
|
135
|
+
onFailure: () => false,
|
|
136
|
+
onSuccess: () => true
|
|
137
|
+
}));
|
|
138
|
+
return makeApiConnector({
|
|
139
|
+
id: ConnectorIds.OpenCode,
|
|
140
|
+
executeStream: (prompt) => stream([
|
|
141
|
+
OpenCodeMessage.make({
|
|
142
|
+
role: "user",
|
|
143
|
+
content: prompt
|
|
144
|
+
})
|
|
145
|
+
]),
|
|
146
|
+
executeStreamWithHistory: (messages) => stream(openCodeHistory(messages)),
|
|
147
|
+
executeWithTools: () => Effect.fail(InvalidRequestError.make({
|
|
148
|
+
message: "OpenCode provider does not yet support tool calling in this implementation"
|
|
149
|
+
})),
|
|
150
|
+
executeStructuredWithUsage,
|
|
151
|
+
isAvailable
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=OpenCodeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeProvider.js","sourceRoot":"","sources":["../../src/providers/OpenCodeProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CliConnectorShape } from "../Connector.ts";
|
|
2
|
+
import type { CliConnectorConfig } from "../ConnectorConfig.ts";
|
|
3
|
+
import { LlmChunk } from "../Models.ts";
|
|
4
|
+
import type { ProcessExecutorShape } from "../ProcessExecutor.ts";
|
|
5
|
+
export declare const piExtraArgs: (config: CliConnectorConfig) => ReadonlyArray<string>;
|
|
6
|
+
export declare const parsePiStreamLine: (line: string) => ReadonlyArray<LlmChunk>;
|
|
7
|
+
export declare const makePiConnector: (config: CliConnectorConfig, executor: ProcessExecutorShape) => CliConnectorShape;
|
|
8
|
+
//# sourceMappingURL=PiConnector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PiConnector.d.ts","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,OAAO,EAAgB,QAAQ,EAAc,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAajE,eAAO,MAAM,WAAW,GAAI,QAAQ,kBAAkB,KAAG,aAAa,CAAC,MAAM,CAI5E,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,QAAQ,CA2DtE,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,QAAQ,kBAAkB,EAC1B,UAAU,oBAAoB,KAC7B,iBAoDF,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Stream from "effect/Stream";
|
|
3
|
+
import { makeCliConnector } from "../Connector.js";
|
|
4
|
+
import { ProviderError } from "../Errors.js";
|
|
5
|
+
import { ConnectorIds, LlmChunk, TokenUsage } from "../Models.js";
|
|
6
|
+
import { jsonBooleanField, jsonField, jsonIntField, jsonStringField, optionalModelArgs, parseJsonLine, sortedFlagArgs, toolEventChunk, usageEventChunk } from "./CliSupport.js";
|
|
7
|
+
export const piExtraArgs = (config) => [
|
|
8
|
+
...optionalModelArgs(config.model),
|
|
9
|
+
...(config.readOnly ? ["--tools", "read"] : []),
|
|
10
|
+
...sortedFlagArgs(config.flags)
|
|
11
|
+
];
|
|
12
|
+
export const parsePiStreamLine = (line) => {
|
|
13
|
+
const json = parseJsonLine(line);
|
|
14
|
+
if (json === undefined) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
switch (jsonStringField(json, "type")) {
|
|
18
|
+
case "message_update": {
|
|
19
|
+
const event = jsonField(json, "assistantMessageEvent");
|
|
20
|
+
const delta = jsonStringField(event, "type") === "text_delta"
|
|
21
|
+
? jsonStringField(event, "delta")
|
|
22
|
+
: undefined;
|
|
23
|
+
return delta === undefined || delta.length === 0 ? [] : [LlmChunk.make({ delta })];
|
|
24
|
+
}
|
|
25
|
+
case "tool_execution_start":
|
|
26
|
+
return [toolEventChunk(jsonStringField(json, "toolName") ?? "", jsonField(json, "args"))];
|
|
27
|
+
case "message_end":
|
|
28
|
+
case "agent_end": {
|
|
29
|
+
const usage = jsonField(jsonField(json, "message"), "usage");
|
|
30
|
+
if (usage === undefined) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const prompt = jsonIntField(usage, "input") ?? 0;
|
|
34
|
+
const completion = jsonIntField(usage, "output") ?? 0;
|
|
35
|
+
return [
|
|
36
|
+
usageEventChunk(undefined, TokenUsage.make({
|
|
37
|
+
prompt,
|
|
38
|
+
completion,
|
|
39
|
+
total: prompt + completion
|
|
40
|
+
}))
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
case "auto_retry_end":
|
|
44
|
+
return jsonBooleanField(json, "success") === false
|
|
45
|
+
? [
|
|
46
|
+
LlmChunk.make({
|
|
47
|
+
delta: "",
|
|
48
|
+
metadata: {
|
|
49
|
+
piError: jsonStringField(json, "finalError") ?? "pi retry failed"
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
]
|
|
53
|
+
: [];
|
|
54
|
+
case "extension_error":
|
|
55
|
+
return [
|
|
56
|
+
LlmChunk.make({
|
|
57
|
+
delta: "",
|
|
58
|
+
metadata: {
|
|
59
|
+
piError: jsonStringField(json, "error") ?? "pi extension error"
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
];
|
|
63
|
+
default:
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export const makePiConnector = (config, executor) => {
|
|
68
|
+
const cwd = config.workingDir ?? ".";
|
|
69
|
+
const extraArgs = piExtraArgs(config);
|
|
70
|
+
const complete = Effect.fn("@llm4ts/core/providers/PiConnector.complete")(function* (prompt) {
|
|
71
|
+
const result = yield* executor.runWithStdin(["pi", "-p", ...extraArgs], cwd, config.envVars, prompt);
|
|
72
|
+
if (result.exitCode !== 0) {
|
|
73
|
+
return yield* ProviderError.make({
|
|
74
|
+
message: `pi exited with code ${result.exitCode}: ${result.stdout.join("\n")}`
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return result.stdout.join("\n");
|
|
78
|
+
});
|
|
79
|
+
const completeStream = (prompt) => executor
|
|
80
|
+
.runStreamingWithStdin(["pi", "-p", "--mode", "json", ...extraArgs], cwd, config.envVars, prompt)
|
|
81
|
+
.pipe(Stream.flatMap((line) => Stream.fromIterable(parsePiStreamLine(line))), Stream.mapEffect((chunk) => {
|
|
82
|
+
const message = chunk.metadata.piError;
|
|
83
|
+
return message === undefined
|
|
84
|
+
? Effect.succeed(chunk)
|
|
85
|
+
: Effect.fail(ProviderError.make({
|
|
86
|
+
message: `pi error: ${message}`
|
|
87
|
+
}));
|
|
88
|
+
}));
|
|
89
|
+
return makeCliConnector({
|
|
90
|
+
id: ConnectorIds.Pi,
|
|
91
|
+
interactionSupport: "InteractiveStdin",
|
|
92
|
+
buildArgv: (prompt, _context) => ["pi", "-p", ...extraArgs, prompt],
|
|
93
|
+
buildInteractiveArgv: (_context) => ["pi", ...extraArgs],
|
|
94
|
+
complete,
|
|
95
|
+
completeStream,
|
|
96
|
+
versionProbe: { executor, binary: "pi", cwd }
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=PiConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import { type Capability } from "../Capability.ts";
|
|
4
|
+
import { ToolDefinition, type JsonSchema, type LlmProvider } from "../Models.ts";
|
|
5
|
+
import { type JsonValue } from "../providers/CliSupport.ts";
|
|
6
|
+
declare const InvalidToolSchema_base: Schema.Class<InvalidToolSchema, Schema.TaggedStruct<"InvalidSchema", {
|
|
7
|
+
readonly message: Schema.String;
|
|
8
|
+
}>, import("effect/Cause").YieldableError>;
|
|
9
|
+
export declare class InvalidToolSchema extends InvalidToolSchema_base {
|
|
10
|
+
}
|
|
11
|
+
declare const InvalidToolParameters_base: Schema.Class<InvalidToolParameters, Schema.TaggedStruct<"InvalidParameters", {
|
|
12
|
+
readonly message: Schema.String;
|
|
13
|
+
}>, import("effect/Cause").YieldableError>;
|
|
14
|
+
export declare class InvalidToolParameters extends InvalidToolParameters_base {
|
|
15
|
+
}
|
|
16
|
+
declare const DuplicateToolName_base: Schema.Class<DuplicateToolName, Schema.TaggedStruct<"DuplicateToolName", {
|
|
17
|
+
readonly name: Schema.String;
|
|
18
|
+
}>, import("effect/Cause").YieldableError>;
|
|
19
|
+
export declare class DuplicateToolName extends DuplicateToolName_base {
|
|
20
|
+
get message(): string;
|
|
21
|
+
}
|
|
22
|
+
declare const ToolSandboxViolation_base: Schema.Class<ToolSandboxViolation, Schema.TaggedStruct<"SandboxViolation", {
|
|
23
|
+
readonly message: Schema.String;
|
|
24
|
+
}>, import("effect/Cause").YieldableError>;
|
|
25
|
+
export declare class ToolSandboxViolation extends ToolSandboxViolation_base {
|
|
26
|
+
}
|
|
27
|
+
declare const ToolExecutionFailed_base: Schema.Class<ToolExecutionFailed, Schema.TaggedStruct<"ExecutionFailed", {
|
|
28
|
+
readonly message: Schema.String;
|
|
29
|
+
}>, import("effect/Cause").YieldableError>;
|
|
30
|
+
export declare class ToolExecutionFailed extends ToolExecutionFailed_base {
|
|
31
|
+
}
|
|
32
|
+
declare const ToolSchemaGenerationFailed_base: Schema.Class<ToolSchemaGenerationFailed, Schema.TaggedStruct<"SchemaGenerationFailed", {
|
|
33
|
+
readonly message: Schema.String;
|
|
34
|
+
}>, import("effect/Cause").YieldableError>;
|
|
35
|
+
export declare class ToolSchemaGenerationFailed extends ToolSchemaGenerationFailed_base {
|
|
36
|
+
}
|
|
37
|
+
export declare const ToolExecutionError: Schema.Union<readonly [typeof InvalidToolSchema, typeof InvalidToolParameters, typeof DuplicateToolName, typeof ToolSandboxViolation, typeof ToolExecutionFailed, typeof ToolSchemaGenerationFailed]>;
|
|
38
|
+
export type ToolExecutionError = typeof ToolExecutionError.Type;
|
|
39
|
+
export declare const ToolSandbox: Schema.Literals<readonly ["WorkspaceReadWrite", "WorkspaceReadOnly", "Unrestricted"]>;
|
|
40
|
+
export type ToolSandbox = typeof ToolSandbox.Type;
|
|
41
|
+
declare const ToolDescriptor_base: Schema.Class<ToolDescriptor, Schema.Struct<{
|
|
42
|
+
readonly name: Schema.String;
|
|
43
|
+
readonly description: Schema.String;
|
|
44
|
+
readonly parameters: Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>;
|
|
45
|
+
readonly tags: Schema.withConstructorDefault<Schema.$ReadonlySet<Schema.String>>;
|
|
46
|
+
readonly sandbox: Schema.withConstructorDefault<Schema.Literals<readonly ["WorkspaceReadWrite", "WorkspaceReadOnly", "Unrestricted"]>>;
|
|
47
|
+
readonly requires: Schema.withConstructorDefault<Schema.$Array<Schema.Union<readonly [typeof import("../Capability.ts").GitRead, typeof import("../Capability.ts").GitWrite, typeof import("../Capability.ts").GitPush, typeof import("../Capability.ts").GhRead, typeof import("../Capability.ts").GhWrite, typeof import("../Capability.ts").AdoRead, typeof import("../Capability.ts").AdoWrite, typeof import("../Capability.ts").Exec, typeof import("../Capability.ts").UseCoder, typeof import("../Capability.ts").UseReasoning, typeof import("../Capability.ts").Declassify]>>>;
|
|
48
|
+
}>, {}>;
|
|
49
|
+
export declare class ToolDescriptor extends ToolDescriptor_base {
|
|
50
|
+
}
|
|
51
|
+
export interface Tool {
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly description: string;
|
|
54
|
+
readonly parameters: JsonSchema;
|
|
55
|
+
readonly execute: (parameters: JsonValue) => Effect.Effect<JsonValue, ToolExecutionError>;
|
|
56
|
+
readonly tags: ReadonlySet<string>;
|
|
57
|
+
readonly sandbox: ToolSandbox;
|
|
58
|
+
readonly requires: ReadonlyArray<Capability>;
|
|
59
|
+
}
|
|
60
|
+
export interface ToolOptions {
|
|
61
|
+
readonly name: string;
|
|
62
|
+
readonly description: string;
|
|
63
|
+
readonly parameters: JsonSchema;
|
|
64
|
+
readonly execute: Tool["execute"];
|
|
65
|
+
readonly tags?: Iterable<string>;
|
|
66
|
+
readonly sandbox?: ToolSandbox;
|
|
67
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
68
|
+
}
|
|
69
|
+
export declare const makeTool: (options: ToolOptions) => Tool;
|
|
70
|
+
export declare const toolDefinition: (tool: Tool) => ToolDefinition;
|
|
71
|
+
export declare const schemaFromMethodSignature: (signature: string) => Effect.Effect<JsonSchema, ToolSchemaGenerationFailed>;
|
|
72
|
+
export declare const toolFromMethodSignature: (options: Omit<ToolOptions, "parameters"> & {
|
|
73
|
+
readonly signature: string;
|
|
74
|
+
}) => Effect.Effect<Tool, ToolSchemaGenerationFailed, never>;
|
|
75
|
+
export declare const validateToolParameters: (schema: {
|
|
76
|
+
readonly [x: string]: Schema.Json;
|
|
77
|
+
}, parameters: Schema.Json) => Effect.Effect<void, InvalidToolSchema | InvalidToolParameters | DuplicateToolName | ToolSandboxViolation | ToolExecutionFailed | ToolSchemaGenerationFailed, never>;
|
|
78
|
+
export declare const toolsToOpenAI: (tools: ReadonlyArray<Tool>) => JsonValue;
|
|
79
|
+
export declare const toolsToAnthropic: (tools: ReadonlyArray<Tool>) => JsonValue;
|
|
80
|
+
export declare const toolsToGemini: (tools: ReadonlyArray<Tool>) => JsonValue;
|
|
81
|
+
export declare const toolsToProviderFormat: (provider: LlmProvider, tools: ReadonlyArray<Tool>) => JsonValue;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=Tool.d.ts.map
|