@llm4ts/core 3.2.6 → 3.4.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 (67) hide show
  1. package/dist/ConnectorConfig.d.ts +3 -1
  2. package/dist/ConnectorConfig.d.ts.map +1 -1
  3. package/dist/ConnectorConfig.js +4 -17
  4. package/dist/ConnectorConfig.js.map +1 -1
  5. package/dist/Models.d.ts +177 -20
  6. package/dist/Models.d.ts.map +1 -1
  7. package/dist/Models.js +151 -98
  8. package/dist/Models.js.map +1 -1
  9. package/dist/eval/Eval.d.ts +4 -1
  10. package/dist/eval/Eval.d.ts.map +1 -1
  11. package/dist/eval/Eval.js.map +1 -1
  12. package/dist/eval/Evaluator.d.ts +2 -6
  13. package/dist/eval/Evaluator.d.ts.map +1 -1
  14. package/dist/eval/Evaluator.js.map +1 -1
  15. package/dist/providers/AntigravityConnector.d.ts.map +1 -1
  16. package/dist/providers/AntigravityConnector.js +5 -4
  17. package/dist/providers/AntigravityConnector.js.map +1 -1
  18. package/dist/providers/ClaudeAgentSession.d.ts.map +1 -1
  19. package/dist/providers/ClaudeAgentSession.js +3 -2
  20. package/dist/providers/ClaudeAgentSession.js.map +1 -1
  21. package/dist/providers/ClaudeCliConnector.d.ts.map +1 -1
  22. package/dist/providers/ClaudeCliConnector.js +7 -6
  23. package/dist/providers/ClaudeCliConnector.js.map +1 -1
  24. package/dist/providers/CodexConnector.d.ts.map +1 -1
  25. package/dist/providers/CodexConnector.js +8 -7
  26. package/dist/providers/CodexConnector.js.map +1 -1
  27. package/dist/providers/ConnectorFactories.d.ts.map +1 -1
  28. package/dist/providers/ConnectorFactories.js +26 -20
  29. package/dist/providers/ConnectorFactories.js.map +1 -1
  30. package/dist/providers/CopilotConnector.d.ts.map +1 -1
  31. package/dist/providers/CopilotConnector.js +5 -4
  32. package/dist/providers/CopilotConnector.js.map +1 -1
  33. package/dist/providers/CursorConnector.d.ts.map +1 -1
  34. package/dist/providers/CursorConnector.js +6 -5
  35. package/dist/providers/CursorConnector.js.map +1 -1
  36. package/dist/providers/GeminiAcpSession.d.ts.map +1 -1
  37. package/dist/providers/GeminiAcpSession.js +3 -1
  38. package/dist/providers/GeminiAcpSession.js.map +1 -1
  39. package/dist/providers/GeminiCliProvider.d.ts.map +1 -1
  40. package/dist/providers/GeminiCliProvider.js +4 -3
  41. package/dist/providers/GeminiCliProvider.js.map +1 -1
  42. package/dist/providers/GrokCliConnector.d.ts.map +1 -1
  43. package/dist/providers/GrokCliConnector.js +11 -5
  44. package/dist/providers/GrokCliConnector.js.map +1 -1
  45. package/dist/providers/OpenCodeCliConnector.d.ts.map +1 -1
  46. package/dist/providers/OpenCodeCliConnector.js +6 -5
  47. package/dist/providers/OpenCodeCliConnector.js.map +1 -1
  48. package/dist/providers/PiConnector.d.ts.map +1 -1
  49. package/dist/providers/PiConnector.js +8 -7
  50. package/dist/providers/PiConnector.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/ConnectorConfig.ts +18 -17
  53. package/src/Models.ts +245 -100
  54. package/src/eval/Eval.ts +4 -1
  55. package/src/eval/Evaluator.ts +2 -5
  56. package/src/providers/AntigravityConnector.ts +12 -4
  57. package/src/providers/ClaudeAgentSession.ts +4 -2
  58. package/src/providers/ClaudeCliConnector.ts +9 -6
  59. package/src/providers/CodexConnector.ts +10 -7
  60. package/src/providers/ConnectorFactories.ts +53 -51
  61. package/src/providers/CopilotConnector.ts +6 -4
  62. package/src/providers/CursorConnector.ts +7 -5
  63. package/src/providers/GeminiAcpSession.ts +4 -1
  64. package/src/providers/GeminiCliProvider.ts +6 -3
  65. package/src/providers/GrokCliConnector.ts +12 -5
  66. package/src/providers/OpenCodeCliConnector.ts +7 -5
  67. package/src/providers/PiConnector.ts +15 -7
@@ -2,8 +2,9 @@ import * as Effect from "effect/Effect";
2
2
  import * as Stream from "effect/Stream";
3
3
  import { makeCliConnector } from "../Connector.js";
4
4
  import { InvalidRequestError, ProviderError } from "../Errors.js";
5
- import { ConnectorCapabilities, ConnectorIds, LlmChunk, TokenUsage } from "../Models.js";
5
+ import { ConnectorCapabilities, ConnectorIds, LlmChunk, TokenUsage, cliExecutable } from "../Models.js";
6
6
  import { atLeastVersion, effortWord, cumulativeUsage, failClassifiedCliError, jsonBooleanField, jsonField, jsonIntField, jsonStringField, optionalModelArgs, parseJsonLine, parseJsonOutput, sortedFlagArgs, toolEventChunk, toolResultChunk, toolResultText, usageEventChunk, versionTriple, statusChunk } from "./CliSupport.js";
7
+ const executable = cliExecutable("Pi");
7
8
  /**
8
9
  * `pi auth check --model <model> --no-refresh --json` says whether pi holds
9
10
  * credentials for the provider that model resolves to:
@@ -189,7 +190,7 @@ export const makePiConnector = (config, executor) => {
189
190
  let floorChecked = !config.readOnly;
190
191
  const checkFloorOnce = Effect.suspend(() => floorChecked
191
192
  ? Effect.void
192
- : Effect.flatMap(executor.run(["pi", "--version"], cwd, config.envVars), (result) => {
193
+ : Effect.flatMap(executor.run([executable, "--version"], cwd, config.envVars), (result) => {
193
194
  const problem = piReadOnlyProblem([...result.stdout, ...result.stderr].join("\n"));
194
195
  return problem === undefined
195
196
  ? Effect.sync(() => {
@@ -199,7 +200,7 @@ export const makePiConnector = (config, executor) => {
199
200
  }));
200
201
  const complete = Effect.fn("@llm4ts/core/providers/PiConnector.complete")(function* (prompt) {
201
202
  yield* checkFloorOnce;
202
- const result = yield* executor.runWithStdin(["pi", "-p", ...extraArgs], cwd, config.envVars, prompt);
203
+ const result = yield* executor.runWithStdin([executable, "-p", ...extraArgs], cwd, config.envVars, prompt);
203
204
  if (result.exitCode !== 0) {
204
205
  // pi explains a refusal on stderr (a usage error, a missing model, an
205
206
  // auth failure); stdout is empty then, so both streams are reported.
@@ -212,7 +213,7 @@ export const makePiConnector = (config, executor) => {
212
213
  }
213
214
  return result.stdout.join("\n");
214
215
  });
215
- const completeStream = (prompt) => Stream.fromEffect(checkFloorOnce).pipe(Stream.drain, Stream.concat(executor.runStreamingWithStdin(["pi", "-p", "--mode", "json", ...extraArgs], cwd, config.envVars, prompt)), Stream.flatMap((line) => Stream.fromIterable(parsePiStreamLine(line))),
216
+ const completeStream = (prompt) => Stream.fromEffect(checkFloorOnce).pipe(Stream.drain, Stream.concat(executor.runStreamingWithStdin([executable, "-p", "--mode", "json", ...extraArgs], cwd, config.envVars, prompt)), Stream.flatMap((line) => Stream.fromIterable(parsePiStreamLine(line))),
216
217
  // pi reports usage per assistant message; a turn is all of them.
217
218
  cumulativeUsage, Stream.mapEffect((chunk) => {
218
219
  const message = chunk.metadata.piError;
@@ -236,13 +237,13 @@ export const makePiConnector = (config, executor) => {
236
237
  }),
237
238
  // `--` ends the options (pi >= 0.84.3): a prompt starting with a dash
238
239
  // is a prompt, not a flag. Stdin paths need no separator.
239
- buildArgv: (prompt, _context) => ["pi", "-p", ...extraArgs, "--", prompt],
240
- buildInteractiveArgv: (_context) => ["pi", ...extraArgs],
240
+ buildArgv: (prompt, _context) => [executable, "-p", ...extraArgs, "--", prompt],
241
+ buildInteractiveArgv: (_context) => [executable, ...extraArgs],
241
242
  complete,
242
243
  completeStream,
243
244
  versionProbe: {
244
245
  executor,
245
- binary: "pi",
246
+ binary: executable,
246
247
  cwd,
247
248
  ...(config.model === undefined ? {} : { authProbe: piAuthProbe(config.model) })
248
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/core",
3
- "version": "3.2.6",
3
+ "version": "3.4.0",
4
4
  "description": "Effect-native LLM contracts, providers, evaluation, and observability",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,7 +1,16 @@
1
1
  import * as Duration from "effect/Duration"
2
2
  import * as Effect from "effect/Effect"
3
3
  import * as Schema from "effect/Schema"
4
- import { ConnectorId, ConnectorIds, Effort, LlmConfig, type LlmProvider } from "./Models.ts"
4
+ import {
5
+ ConnectorId,
6
+ ConnectorIds,
7
+ Effort,
8
+ LlmConfig,
9
+ connectorRow,
10
+ type CliConnectorName,
11
+ type ConnectorName,
12
+ type LlmProvider
13
+ } from "./Models.ts"
5
14
 
6
15
  export class DockerSandbox extends Schema.TaggedClass<DockerSandbox>()("Docker", {
7
16
  image: Schema.String,
@@ -107,23 +116,15 @@ export class CliConnectorConfig extends Schema.TaggedClass<CliConnectorConfig>()
107
116
  export const ConnectorConfig = Schema.Union([ApiConnectorConfig, CliConnectorConfig])
108
117
  export type ConnectorConfig = typeof ConnectorConfig.Type
109
118
 
119
+ /** The config class the connector named `K` takes, by its kind in `connectorTable`. */
120
+ export type ConnectorConfigOf<K extends ConnectorName> = K extends CliConnectorName
121
+ ? CliConnectorConfig
122
+ : ApiConnectorConfig
123
+
124
+ // An id that names no API connector reads as OpenAI, the wire most servers speak.
110
125
  const providerForConnector = (connectorId: ConnectorId): LlmProvider => {
111
- switch (connectorId.value) {
112
- case "anthropic":
113
- return "Anthropic"
114
- case "gemini-api":
115
- return "GeminiApi"
116
- case "lm-studio":
117
- return "LmStudio"
118
- case "ollama":
119
- return "Ollama"
120
- case "mlx-lm":
121
- return "MlxLm"
122
- case "mock":
123
- return "Mock"
124
- default:
125
- return "OpenAI"
126
- }
126
+ const row = connectorRow(connectorId)
127
+ return row?.kind === "Api" ? (row.provider ?? "OpenAI") : "OpenAI"
127
128
  }
128
129
 
129
130
  export const toLlmConfig = (config: ApiConnectorConfig): LlmConfig =>
package/src/Models.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as Duration from "effect/Duration"
2
2
  import * as Effect from "effect/Effect"
3
+ import * as Record from "effect/Record"
3
4
  import * as Schema from "effect/Schema"
4
5
 
5
6
  export const LlmProvider = Schema.Literals([
@@ -19,119 +20,263 @@ export class ConnectorId extends Schema.Class<ConnectorId>("ConnectorId")({
19
20
  value: Schema.String
20
21
  }) {}
21
22
 
22
- export const ConnectorIds = Object.freeze({
23
- OpenAI: new ConnectorId({ value: "openai" }),
24
- Anthropic: new ConnectorId({ value: "anthropic" }),
25
- GeminiApi: new ConnectorId({ value: "gemini-api" }),
26
- LmStudio: new ConnectorId({ value: "lm-studio" }),
27
- Ollama: new ConnectorId({ value: "ollama" }),
28
- MlxLm: new ConnectorId({ value: "mlx-lm" }),
29
- ClaudeCli: new ConnectorId({ value: "claude-cli" }),
30
- GeminiCli: new ConnectorId({ value: "gemini-cli" }),
31
- OpenCode: new ConnectorId({ value: "opencode" }),
32
- Codex: new ConnectorId({ value: "codex" }),
33
- Copilot: new ConnectorId({ value: "copilot" }),
34
- Pi: new ConnectorId({ value: "pi" }),
35
- AntigravityCli: new ConnectorId({ value: "antigravity-cli" }),
36
- Grok: new ConnectorId({ value: "grok" }),
37
- Cursor: new ConnectorId({ value: "cursor" }),
38
- Mock: new ConnectorId({ value: "mock" })
39
- })
40
-
41
- export const apiConnectorIds: ReadonlyArray<ConnectorId> = Object.freeze([
42
- ConnectorIds.OpenAI,
43
- ConnectorIds.Anthropic,
44
- ConnectorIds.GeminiApi,
45
- ConnectorIds.LmStudio,
46
- ConnectorIds.Ollama,
47
- ConnectorIds.MlxLm
48
- ])
23
+ export const ConnectorKind = Schema.Literals(["Api", "Cli"])
24
+ export type ConnectorKind = typeof ConnectorKind.Type
49
25
 
50
- export const cliConnectorIds: ReadonlyArray<ConnectorId> = Object.freeze([
51
- ConnectorIds.ClaudeCli,
52
- ConnectorIds.GeminiCli,
53
- ConnectorIds.OpenCode,
54
- ConnectorIds.Codex,
55
- ConnectorIds.Copilot,
56
- ConnectorIds.Pi,
57
- ConnectorIds.AntigravityCli,
58
- ConnectorIds.Grok,
59
- ConnectorIds.Cursor
60
- ])
26
+ interface ConnectorIdentity {
27
+ readonly id: string
28
+ /** The `LlmConfig` provider it serves. Such a row sits under the provider's own name. */
29
+ readonly provider?: LlmProvider
30
+ readonly baseUrl?: string
31
+ /**
32
+ * What an operator may write for it: a coder name on a CLI row
33
+ * (`LLM4TS_CODER`, `LLM4TS_REASONER`), a provider name on an API row
34
+ * (`LLM4TS_PROVIDER`). The first is the one help and menus show. Empty
35
+ * means it is not offered under any name.
36
+ */
37
+ readonly names: ReadonlyArray<string>
38
+ }
39
+
40
+ export interface ApiConnectorRow extends ConnectorIdentity {
41
+ readonly kind: "Api"
42
+ /** Environment variables that may hold its key; the first one set wins. */
43
+ readonly credentialVariables: ReadonlyArray<string>
44
+ /** Answers without a backend, so it is no part of `apiConnectorIds`. */
45
+ readonly simulated?: true
46
+ }
47
+
48
+ export interface CliConnectorRow extends ConnectorIdentity {
49
+ readonly kind: "Cli"
50
+ /** The program it spawns, and the one looked for on `PATH`. */
51
+ readonly executable: string
52
+ }
53
+
54
+ export type ConnectorRow = ApiConnectorRow | CliConnectorRow
55
+
56
+ /**
57
+ * Every connector's identity, one row each. The id lists, the provider
58
+ * mappings and the names an operator may write are all read from here; the
59
+ * factories (`providers/ConnectorFactories.ts`) and the runner's presets are
60
+ * records keyed by these names, so a row without either does not compile.
61
+ */
62
+ export const connectorTable = {
63
+ OpenAI: {
64
+ id: "openai",
65
+ kind: "Api",
66
+ provider: "OpenAI",
67
+ baseUrl: "https://api.openai.com/v1",
68
+ credentialVariables: ["OPENAI_API_KEY"],
69
+ names: ["openai"]
70
+ },
71
+ Anthropic: {
72
+ id: "anthropic",
73
+ kind: "Api",
74
+ provider: "Anthropic",
75
+ baseUrl: "https://api.anthropic.com",
76
+ credentialVariables: ["ANTHROPIC_API_KEY"],
77
+ names: ["anthropic"]
78
+ },
79
+ GeminiApi: {
80
+ id: "gemini-api",
81
+ kind: "Api",
82
+ provider: "GeminiApi",
83
+ baseUrl: "https://generativelanguage.googleapis.com",
84
+ credentialVariables: ["GEMINI_API_KEY", "GOOGLE_API_KEY"],
85
+ names: ["gemini", "gemini-api"]
86
+ },
87
+ LmStudio: {
88
+ id: "lm-studio",
89
+ kind: "Api",
90
+ provider: "LmStudio",
91
+ baseUrl: "http://localhost:1234/v1",
92
+ credentialVariables: [],
93
+ names: ["lm-studio", "lmstudio"]
94
+ },
95
+ Ollama: {
96
+ id: "ollama",
97
+ kind: "Api",
98
+ provider: "Ollama",
99
+ baseUrl: "http://localhost:11434",
100
+ credentialVariables: [],
101
+ names: ["ollama"]
102
+ },
103
+ MlxLm: {
104
+ id: "mlx-lm",
105
+ kind: "Api",
106
+ provider: "MlxLm",
107
+ baseUrl: "http://localhost:8080",
108
+ credentialVariables: [],
109
+ names: ["mlx-lm", "mlxlm", "mlx"]
110
+ },
111
+ ClaudeCli: {
112
+ id: "claude-cli",
113
+ kind: "Cli",
114
+ executable: "claude",
115
+ names: ["claude", "claude-cli"]
116
+ },
117
+ GeminiCli: {
118
+ id: "gemini-cli",
119
+ kind: "Cli",
120
+ provider: "GeminiCli",
121
+ executable: "gemini",
122
+ names: ["gemini", "gemini-cli"]
123
+ },
124
+ OpenCode: {
125
+ id: "opencode",
126
+ kind: "Cli",
127
+ provider: "OpenCode",
128
+ baseUrl: "http://localhost:4096",
129
+ executable: "opencode",
130
+ names: ["opencode"]
131
+ },
132
+ Codex: { id: "codex", kind: "Cli", executable: "codex", names: ["codex"] },
133
+ Copilot: { id: "copilot", kind: "Cli", executable: "gh", names: [] },
134
+ Pi: { id: "pi", kind: "Cli", executable: "pi", names: ["pi"] },
135
+ AntigravityCli: {
136
+ id: "antigravity-cli",
137
+ kind: "Cli",
138
+ executable: "agy",
139
+ names: ["agy", "antigravity", "antigravity-cli"]
140
+ },
141
+ Grok: { id: "grok", kind: "Cli", executable: "grok", names: ["grok"] },
142
+ Cursor: { id: "cursor", kind: "Cli", executable: "cursor-agent", names: ["cursor"] },
143
+ Mock: {
144
+ id: "mock",
145
+ kind: "Api",
146
+ provider: "Mock",
147
+ credentialVariables: [],
148
+ simulated: true,
149
+ names: ["mock"]
150
+ }
151
+ } as const satisfies Readonly<Record<string, ConnectorRow>>
152
+
153
+ export type ConnectorName = keyof typeof connectorTable
154
+ type RowOf<K extends ConnectorName> = (typeof connectorTable)[K]
155
+
156
+ export type CliConnectorName = {
157
+ [K in ConnectorName]: RowOf<K>["kind"] extends "Cli" ? K : never
158
+ }[ConnectorName]
159
+ export type ApiConnectorName = Exclude<ConnectorName, CliConnectorName>
160
+
161
+ /** Every name `LLM4TS_CODER` and `LLM4TS_REASONER` read. */
162
+ export type CoderName = RowOf<CliConnectorName>["names"][number]
163
+ /** Every name `LLM4TS_PROVIDER` and `LLM4TS_JUDGMENT_PROVIDER` read. */
164
+ export type ApiProviderName = RowOf<ApiConnectorName>["names"][number]
165
+
166
+ type OfferedCoder = {
167
+ [K in CliConnectorName]: RowOf<K>["names"] extends readonly [] ? never : K
168
+ }[CliConnectorName]
169
+
170
+ const rows: Readonly<Record<ConnectorName, ConnectorRow>> = connectorTable
171
+ const providerRows: { readonly [P in LlmProvider]: ConnectorRow & { readonly provider: P } } =
172
+ connectorTable
173
+ const names = Record.keys(connectorTable)
174
+
175
+ export const isCliConnectorName = (name: ConnectorName): name is CliConnectorName =>
176
+ rows[name].kind === "Cli"
177
+
178
+ export const ConnectorIds: Readonly<Record<ConnectorName, ConnectorId>> = Object.freeze(
179
+ Record.map(connectorTable, (row) => new ConnectorId({ value: row.id }))
180
+ )
181
+
182
+ const idsWhere = (keep: (row: ConnectorRow) => boolean): ReadonlyArray<ConnectorId> =>
183
+ Object.freeze(names.filter((name) => keep(rows[name])).map((name) => ConnectorIds[name]))
184
+
185
+ export const apiConnectorIds: ReadonlyArray<ConnectorId> = idsWhere(
186
+ (row) => row.kind === "Api" && row.simulated !== true
187
+ )
188
+
189
+ export const cliConnectorIds: ReadonlyArray<ConnectorId> = idsWhere((row) => row.kind === "Cli")
61
190
 
62
191
  export const connectorIds: ReadonlyArray<ConnectorId> = Object.freeze([
63
192
  ...apiConnectorIds,
64
193
  ...cliConnectorIds,
65
- ConnectorIds.Mock
194
+ ...idsWhere((row) => row.kind === "Api" && row.simulated === true)
66
195
  ])
67
196
 
68
- export const defaultBaseUrl = (provider: LlmProvider): string | undefined => {
69
- switch (provider) {
70
- case "GeminiCli":
71
- case "Mock":
72
- return undefined
73
- case "GeminiApi":
74
- return "https://generativelanguage.googleapis.com"
75
- case "OpenAI":
76
- return "https://api.openai.com/v1"
77
- case "Anthropic":
78
- return "https://api.anthropic.com"
79
- case "LmStudio":
80
- return "http://localhost:1234/v1"
81
- case "Ollama":
82
- return "http://localhost:11434"
83
- case "MlxLm":
84
- return "http://localhost:8080"
85
- case "OpenCode":
86
- return "http://localhost:4096"
87
- }
88
- }
197
+ const rowsById = new Map<string, ConnectorRow>(names.map((name) => [rows[name].id, rows[name]]))
89
198
 
90
- const connectorProviderTable: Readonly<Record<string, LlmProvider>> = {
91
- openai: "OpenAI",
92
- anthropic: "Anthropic",
93
- "gemini-api": "GeminiApi",
94
- "lm-studio": "LmStudio",
95
- ollama: "Ollama",
96
- "mlx-lm": "MlxLm",
97
- opencode: "OpenCode",
98
- "gemini-cli": "GeminiCli",
99
- mock: "Mock"
100
- }
199
+ export const connectorRow = (id: ConnectorId): ConnectorRow | undefined => rowsById.get(id.value)
200
+
201
+ export const defaultBaseUrl = (provider: LlmProvider): string | undefined =>
202
+ providerRows[provider].baseUrl
101
203
 
102
204
  export const connectorProvider = (id: ConnectorId): LlmProvider | undefined =>
103
- connectorProviderTable[id.value]
205
+ connectorRow(id)?.provider
104
206
 
105
- export const connectorDefaultBaseUrl = (id: ConnectorId): string | undefined => {
106
- const provider = connectorProvider(id)
107
- return provider === undefined ? undefined : defaultBaseUrl(provider)
108
- }
207
+ export const connectorDefaultBaseUrl = (id: ConnectorId): string | undefined =>
208
+ connectorRow(id)?.baseUrl
109
209
 
110
- export const providerConnectorId = (provider: LlmProvider): ConnectorId => {
111
- switch (provider) {
112
- case "GeminiCli":
113
- return ConnectorIds.GeminiCli
114
- case "GeminiApi":
115
- return ConnectorIds.GeminiApi
116
- case "OpenAI":
117
- return ConnectorIds.OpenAI
118
- case "Anthropic":
119
- return ConnectorIds.Anthropic
120
- case "LmStudio":
121
- return ConnectorIds.LmStudio
122
- case "Ollama":
123
- return ConnectorIds.Ollama
124
- case "MlxLm":
125
- return ConnectorIds.MlxLm
126
- case "OpenCode":
127
- return ConnectorIds.OpenCode
128
- case "Mock":
129
- return ConnectorIds.Mock
130
- }
131
- }
210
+ export const providerConnectorId = (provider: LlmProvider): ConnectorId => ConnectorIds[provider]
132
211
 
133
- export const ConnectorKind = Schema.Literals(["Api", "Cli"])
134
- export type ConnectorKind = typeof ConnectorKind.Type
212
+ const namedConnectors = <K extends ConnectorName>(keys: ReadonlyArray<K>): ReadonlyMap<string, K> =>
213
+ new Map(keys.flatMap((key) => rows[key].names.map((name) => [name, key] as const)))
214
+
215
+ const cliNames = names.filter(isCliConnectorName)
216
+ const apiNames = names.filter((name) => !isCliConnectorName(name))
217
+ const coderConnectors = namedConnectors(cliNames)
218
+ const apiProviderConnectors = namedConnectors(apiNames)
219
+
220
+ /** The CLI connector a coder name stands for; the name as written, lower case. */
221
+ export const coderConnector = (name: string): CliConnectorName | undefined =>
222
+ coderConnectors.get(name)
223
+
224
+ /** The API connector a provider name stands for; the name as written, lower case. */
225
+ export const apiProviderConnector = (name: string): ApiConnectorName | undefined =>
226
+ apiProviderConnectors.get(name)
227
+
228
+ export const coderNames: ReadonlyArray<CoderName> = cliNames.flatMap(
229
+ (name) => connectorTable[name].names
230
+ )
231
+
232
+ export const apiProviderNames: ReadonlyArray<ApiProviderName> = apiNames.flatMap(
233
+ (name) => connectorTable[name].names
234
+ )
235
+
236
+ /** Every variable an API connector reads its key from. Names only, never a value. */
237
+ export const credentialVariables: ReadonlyArray<string> = apiNames.flatMap(
238
+ (name) => connectorTable[name].credentialVariables
239
+ )
240
+
241
+ export const cliExecutable = <K extends CliConnectorName>(name: K): RowOf<K>["executable"] =>
242
+ connectorTable[name].executable
243
+
244
+ const inOrder =
245
+ <All extends string>() =>
246
+ <const L extends ReadonlyArray<All>>(
247
+ list: L,
248
+ ..._missing: [Exclude<All, L[number]>] extends [never] ? [] : [missing: Exclude<All, L[number]>]
249
+ ): L =>
250
+ list
251
+
252
+ /** The coding agents help and menus offer, in the order they show them. */
253
+ export const offeredCoders = inOrder<OfferedCoder>()([
254
+ "ClaudeCli",
255
+ "Codex",
256
+ "GeminiCli",
257
+ "Pi",
258
+ "AntigravityCli",
259
+ "Grok",
260
+ "Cursor",
261
+ "OpenCode"
262
+ ])
263
+
264
+ /** The API providers help and errors offer, in the order they show them. */
265
+ export const offeredApiProviders = inOrder<ApiConnectorName>()([
266
+ "Mock",
267
+ "OpenAI",
268
+ "Anthropic",
269
+ "GeminiApi",
270
+ "LmStudio",
271
+ "Ollama",
272
+ "MlxLm"
273
+ ])
274
+
275
+ export const offeredCoderNames = offeredCoders.map((name) => connectorTable[name].names[0])
276
+
277
+ export const offeredApiProviderNames = offeredApiProviders.map(
278
+ (name) => connectorTable[name].names[0]
279
+ )
135
280
 
136
281
  export const MessageRole = Schema.Literals(["System", "User", "Assistant", "Tool"])
137
282
  export type MessageRole = typeof MessageRole.Type
package/src/eval/Eval.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import * as Effect from "effect/Effect"
2
2
  import * as Schema from "effect/Schema"
3
3
  import type { LlmError } from "../Errors.ts"
4
- import type { Evaluator } from "./Evaluator.ts"
5
4
 
6
5
  export class Dimension extends Schema.Class<Dimension>("Dimension")({
7
6
  name: Schema.String,
@@ -87,6 +86,10 @@ export class RepeatedEval extends Schema.Class<RepeatedEval>("RepeatedEval")({
87
86
  const median = (sorted: ReadonlyArray<number>): number =>
88
87
  sorted.length === 0 ? 0 : (sorted[Math.floor((sorted.length - 1) / 2)] ?? 0)
89
88
 
89
+ export interface Evaluator<in In> {
90
+ readonly evaluate: (input: In) => Effect.Effect<EvalResult, LlmError>
91
+ }
92
+
90
93
  export const repeat = Effect.fn("@llm4ts/core/eval/Eval.repeat")(function* <In>(
91
94
  evaluator: Evaluator<In>,
92
95
  input: In,
@@ -1,10 +1,7 @@
1
1
  import * as Effect from "effect/Effect"
2
- import type { LlmError } from "../Errors.ts"
3
- import { EvalResult } from "./Eval.ts"
2
+ import { EvalResult, type Evaluator } from "./Eval.ts"
4
3
 
5
- export interface Evaluator<in In> {
6
- readonly evaluate: (input: In) => Effect.Effect<EvalResult, LlmError>
7
- }
4
+ export type { Evaluator }
8
5
 
9
6
  export const makeEvaluator = <In>(evaluate: Evaluator<In>["evaluate"]): Evaluator<In> => ({
10
7
  evaluate
@@ -2,10 +2,18 @@ import * as Effect from "effect/Effect"
2
2
  import * as Stream from "effect/Stream"
3
3
  import { makeCliConnector, type CliConnectorShape } from "../Connector.ts"
4
4
  import type { CliConnectorConfig } from "../ConnectorConfig.ts"
5
- import { ConnectorCapabilities, ConnectorIds, HealthStatus, LlmChunk } from "../Models.ts"
5
+ import {
6
+ ConnectorCapabilities,
7
+ ConnectorIds,
8
+ HealthStatus,
9
+ LlmChunk,
10
+ cliExecutable
11
+ } from "../Models.ts"
6
12
  import type { ProcessExecutorShape } from "../ProcessExecutor.ts"
7
13
  import { failClassifiedCliError, optionalModelArgs, sortedFlagArgs } from "./CliSupport.ts"
8
14
 
15
+ const executable = cliExecutable("AntigravityCli")
16
+
9
17
  // `agy --version` proves the install, not the login: the CLI offers no offline
10
18
  // login check, so the auth status stays Unknown rather than claiming a session.
11
19
  const healthy = HealthStatus.make({
@@ -33,14 +41,14 @@ export const antigravityExtraArgs = (config: CliConnectorConfig): ReadonlyArray<
33
41
  export const buildAntigravityArgv = (
34
42
  config: CliConnectorConfig,
35
43
  prompt: string
36
- ): ReadonlyArray<string> => ["agy", ...antigravityExtraArgs(config), "--print", prompt]
44
+ ): ReadonlyArray<string> => [executable, ...antigravityExtraArgs(config), "--print", prompt]
37
45
 
38
46
  export const makeAntigravityConnector = (
39
47
  config: CliConnectorConfig,
40
48
  executor: ProcessExecutorShape
41
49
  ): CliConnectorShape => {
42
50
  const cwd = config.workingDir ?? "."
43
- const healthCheck = executor.run(["agy", "--version"], cwd, {}).pipe(
51
+ const healthCheck = executor.run([executable, "--version"], cwd, {}).pipe(
44
52
  Effect.map((result) => (result.exitCode === 0 ? healthy : unhealthy)),
45
53
  Effect.catch(() => Effect.succeed(unhealthy))
46
54
  )
@@ -75,7 +83,7 @@ export const makeAntigravityConnector = (
75
83
  // therefore cost summaries and budgets) cannot include it.
76
84
  capabilities: ConnectorCapabilities.make({ interactiveSessions: true, usageReporting: false }),
77
85
  buildArgv: (prompt, _context) => buildAntigravityArgv(config, prompt),
78
- buildInteractiveArgv: (_context) => ["agy", ...antigravityExtraArgs(config)],
86
+ buildInteractiveArgv: (_context) => [executable, ...antigravityExtraArgs(config)],
79
87
  complete,
80
88
  completeStream,
81
89
  healthCheck
@@ -16,7 +16,7 @@ import {
16
16
  type SessionEvent
17
17
  } from "../AgentSession.ts"
18
18
  import { ProviderError, type LlmError } from "../Errors.ts"
19
- import { TokenUsage } from "../Models.ts"
19
+ import { TokenUsage, cliExecutable } from "../Models.ts"
20
20
  import type { ProcessExecutorShape } from "../ProcessExecutor.ts"
21
21
  import {
22
22
  jsonArray,
@@ -30,11 +30,13 @@ import {
30
30
  type JsonValue
31
31
  } from "./CliSupport.ts"
32
32
 
33
+ const executable = cliExecutable("ClaudeCli")
34
+
33
35
  export const claudeSessionArgv = (
34
36
  model: string | undefined,
35
37
  extraFlags: ReadonlyArray<string>
36
38
  ): ReadonlyArray<string> => [
37
- "claude",
39
+ executable,
38
40
  "--print",
39
41
  "--input-format",
40
42
  "stream-json",