@llm4ts/core 2.44.1 → 2.46.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/dist/Connector.d.ts +27 -2
- package/dist/Connector.d.ts.map +1 -1
- package/dist/Connector.js +13 -4
- package/dist/Connector.js.map +1 -1
- package/dist/ConnectorConfig.d.ts +8 -0
- package/dist/ConnectorConfig.d.ts.map +1 -1
- package/dist/ConnectorConfig.js +9 -1
- package/dist/ConnectorConfig.js.map +1 -1
- package/dist/ConnectorRegistry.d.ts +2 -0
- package/dist/ConnectorRegistry.d.ts.map +1 -1
- package/dist/ConnectorRegistry.js +1 -0
- package/dist/ConnectorRegistry.js.map +1 -1
- package/dist/Models.d.ts +15 -0
- package/dist/Models.d.ts.map +1 -1
- package/dist/Models.js +15 -1
- package/dist/Models.js.map +1 -1
- package/dist/providers/AntigravityConnector.d.ts.map +1 -1
- package/dist/providers/AntigravityConnector.js +3 -1
- package/dist/providers/AntigravityConnector.js.map +1 -1
- package/dist/providers/ClaudeCliConnector.d.ts +17 -1
- package/dist/providers/ClaudeCliConnector.d.ts.map +1 -1
- package/dist/providers/ClaudeCliConnector.js +45 -4
- package/dist/providers/ClaudeCliConnector.js.map +1 -1
- package/dist/providers/CliSupport.d.ts +5 -0
- package/dist/providers/CliSupport.d.ts.map +1 -1
- package/dist/providers/CliSupport.js +5 -0
- package/dist/providers/CliSupport.js.map +1 -1
- package/dist/providers/CodexConnector.d.ts +7 -1
- package/dist/providers/CodexConnector.d.ts.map +1 -1
- package/dist/providers/CodexConnector.js +14 -1
- package/dist/providers/CodexConnector.js.map +1 -1
- package/dist/providers/CopilotConnector.d.ts.map +1 -1
- package/dist/providers/CopilotConnector.js +3 -0
- package/dist/providers/CopilotConnector.js.map +1 -1
- package/dist/providers/CursorConnector.d.ts +6 -1
- package/dist/providers/CursorConnector.d.ts.map +1 -1
- package/dist/providers/CursorConnector.js +13 -2
- package/dist/providers/CursorConnector.js.map +1 -1
- package/dist/providers/GeminiCliProvider.d.ts +20 -0
- package/dist/providers/GeminiCliProvider.d.ts.map +1 -1
- package/dist/providers/GeminiCliProvider.js +64 -3
- package/dist/providers/GeminiCliProvider.js.map +1 -1
- package/dist/providers/GrokCliConnector.d.ts.map +1 -1
- package/dist/providers/GrokCliConnector.js +1 -0
- package/dist/providers/GrokCliConnector.js.map +1 -1
- package/dist/providers/OpenCodeCliConnector.d.ts.map +1 -1
- package/dist/providers/OpenCodeCliConnector.js +2 -0
- package/dist/providers/OpenCodeCliConnector.js.map +1 -1
- package/dist/providers/PiConnector.d.ts +10 -1
- package/dist/providers/PiConnector.d.ts.map +1 -1
- package/dist/providers/PiConnector.js +31 -2
- package/dist/providers/PiConnector.js.map +1 -1
- package/package.json +1 -1
- package/src/Connector.ts +43 -9
- package/src/ConnectorConfig.ts +9 -1
- package/src/ConnectorRegistry.ts +3 -0
- package/src/Models.ts +18 -0
- package/src/providers/AntigravityConnector.ts +3 -1
- package/src/providers/ClaudeCliConnector.ts +52 -4
- package/src/providers/CliSupport.ts +7 -0
- package/src/providers/CodexConnector.ts +17 -2
- package/src/providers/CopilotConnector.ts +3 -0
- package/src/providers/CursorConnector.ts +15 -2
- package/src/providers/GeminiCliProvider.ts +76 -2
- package/src/providers/GrokCliConnector.ts +1 -0
- package/src/providers/OpenCodeCliConnector.ts +2 -0
- package/src/providers/PiConnector.ts +33 -2
|
@@ -76,6 +76,7 @@ export const makeGrokCliConnector = (config, executor) => {
|
|
|
76
76
|
buildInteractiveArgv: (_context) => ["grok", ...extraArgs],
|
|
77
77
|
complete,
|
|
78
78
|
completeStream,
|
|
79
|
+
// No auth probe: grok offers `login` but no status subcommand; Unknown.
|
|
79
80
|
versionProbe: { executor, binary: "grok", cwd }
|
|
80
81
|
});
|
|
81
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrokCliConnector.js","sourceRoot":"","sources":["../../src/providers/GrokCliConnector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GrokCliConnector.js","sourceRoot":"","sources":["../../src/providers/GrokCliConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;AAcjE,eAAO,MAAM,oBAAoB,GAAI,QAAQ,kBAAkB,KAAG,aAAa,CAAC,MAAM,CAIrF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,QAAQ,CAkE/E,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,QAAQ,kBAAkB,EAC1B,UAAU,oBAAoB,KAC7B,
|
|
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;AAcjE,eAAO,MAAM,oBAAoB,GAAI,QAAQ,kBAAkB,KAAG,aAAa,CAAC,MAAM,CAIrF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,QAAQ,CAkE/E,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,QAAQ,kBAAkB,EAC1B,UAAU,oBAAoB,KAC7B,iBAuDF,CAAA"}
|
|
@@ -101,6 +101,8 @@ export const makeOpenCodeCliConnector = (config, executor) => {
|
|
|
101
101
|
buildInteractiveArgv: (_context) => ["opencode"],
|
|
102
102
|
complete,
|
|
103
103
|
completeStream,
|
|
104
|
+
// No auth probe: `opencode auth list` lists stored credentials by
|
|
105
|
+
// provider, not whether the provider this seat runs has any; Unknown.
|
|
104
106
|
versionProbe: { executor, binary: "opencode", cwd }
|
|
105
107
|
});
|
|
106
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenCodeCliConnector.js","sourceRoot":"","sources":["../../src/providers/OpenCodeCliConnector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenCodeCliConnector.js","sourceRoot":"","sources":["../../src/providers/OpenCodeCliConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
import { type CliConnectorShape } from "../Connector.ts";
|
|
1
|
+
import { type CliAuthProbe, type CliConnectorShape } from "../Connector.ts";
|
|
2
2
|
import type { CliConnectorConfig } from "../ConnectorConfig.ts";
|
|
3
3
|
import { LlmChunk } from "../Models.ts";
|
|
4
4
|
import type { ProcessExecutorShape } from "../ProcessExecutor.ts";
|
|
5
|
+
/**
|
|
6
|
+
* `pi auth check --model <model> --no-refresh --json` says whether pi holds
|
|
7
|
+
* credentials for the provider that model resolves to:
|
|
8
|
+
* `{"status":"ready"}` or `{"status":"not_ready","reason":...}`. pi needs a
|
|
9
|
+
* provider or model to answer, so a seat with no model configured has no
|
|
10
|
+
* probe. `--no-refresh` keeps an expired OAuth token where it is: the check
|
|
11
|
+
* stays offline and reports it as not ready.
|
|
12
|
+
*/
|
|
13
|
+
export declare const piAuthProbe: (model: string) => CliAuthProbe;
|
|
5
14
|
/**
|
|
6
15
|
* The first pi whose `--tools` allowlist can be kept free of MCP tools: from
|
|
7
16
|
* 1.0.4 `--tools read` keeps every MCP tool the user configured in
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"PiConnector.d.ts","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,OAAO,EAAuC,QAAQ,EAAc,MAAM,cAAc,CAAA;AACxF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAsBjE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,YAe1C,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UAAU,CAAA;AAEtC,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,MAAM,GAAG,SAchE,CAAA;AAMD,eAAO,MAAM,WAAW,GAAI,QAAQ,kBAAkB,KAAG,aAAa,CAAC,MAAM,CAwB5E,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,QAAQ,CAgHtE,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,QAAQ,kBAAkB,EAC1B,UAAU,oBAAoB,KAC7B,iBA6FF,CAAA"}
|
|
@@ -3,7 +3,31 @@ import * as Stream from "effect/Stream";
|
|
|
3
3
|
import { makeCliConnector } from "../Connector.js";
|
|
4
4
|
import { InvalidRequestError, ProviderError } from "../Errors.js";
|
|
5
5
|
import { ConnectorCapabilities, ConnectorIds, LlmChunk, TokenUsage } from "../Models.js";
|
|
6
|
-
import { atLeastVersion, effortWord, cumulativeUsage, failClassifiedCliError, jsonBooleanField, jsonField, jsonIntField, jsonStringField, optionalModelArgs, parseJsonLine, sortedFlagArgs, toolEventChunk, toolResultChunk, toolResultText, usageEventChunk, versionTriple, statusChunk } from "./CliSupport.js";
|
|
6
|
+
import { atLeastVersion, effortWord, cumulativeUsage, failClassifiedCliError, jsonBooleanField, jsonField, jsonIntField, jsonStringField, optionalModelArgs, parseJsonLine, parseJsonOutput, sortedFlagArgs, toolEventChunk, toolResultChunk, toolResultText, usageEventChunk, versionTriple, statusChunk } from "./CliSupport.js";
|
|
7
|
+
/**
|
|
8
|
+
* `pi auth check --model <model> --no-refresh --json` says whether pi holds
|
|
9
|
+
* credentials for the provider that model resolves to:
|
|
10
|
+
* `{"status":"ready"}` or `{"status":"not_ready","reason":...}`. pi needs a
|
|
11
|
+
* provider or model to answer, so a seat with no model configured has no
|
|
12
|
+
* probe. `--no-refresh` keeps an expired OAuth token where it is: the check
|
|
13
|
+
* stays offline and reports it as not ready.
|
|
14
|
+
*/
|
|
15
|
+
export const piAuthProbe = (model) => ({
|
|
16
|
+
args: ["auth", "check", "--model", model, "--no-refresh", "--json"],
|
|
17
|
+
interpret: (result) => {
|
|
18
|
+
const json = parseJsonOutput(result.stdout);
|
|
19
|
+
switch (jsonStringField(json, "status")) {
|
|
20
|
+
case "ready":
|
|
21
|
+
return "Valid";
|
|
22
|
+
case "not_ready":
|
|
23
|
+
return jsonStringField(json, "reason") === "credentials_not_configured"
|
|
24
|
+
? "Missing"
|
|
25
|
+
: "Invalid";
|
|
26
|
+
default:
|
|
27
|
+
return "Unknown";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
7
31
|
/**
|
|
8
32
|
* The first pi whose `--tools` allowlist can be kept free of MCP tools: from
|
|
9
33
|
* 1.0.4 `--tools read` keeps every MCP tool the user configured in
|
|
@@ -216,7 +240,12 @@ export const makePiConnector = (config, executor) => {
|
|
|
216
240
|
buildInteractiveArgv: (_context) => ["pi", ...extraArgs],
|
|
217
241
|
complete,
|
|
218
242
|
completeStream,
|
|
219
|
-
versionProbe: {
|
|
243
|
+
versionProbe: {
|
|
244
|
+
executor,
|
|
245
|
+
binary: "pi",
|
|
246
|
+
cwd,
|
|
247
|
+
...(config.model === undefined ? {} : { authProbe: piAuthProbe(config.model) })
|
|
248
|
+
}
|
|
220
249
|
});
|
|
221
250
|
};
|
|
222
251
|
//# sourceMappingURL=PiConnector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"PiConnector.js","sourceRoot":"","sources":["../../src/providers/PiConnector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Connector.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { LlmServiceShape, StructuredResult } from "./LlmService.ts"
|
|
|
10
10
|
import {
|
|
11
11
|
ConnectorCapabilities,
|
|
12
12
|
HealthStatus,
|
|
13
|
+
type AuthStatus,
|
|
13
14
|
type ConnectorId,
|
|
14
15
|
type ConnectorKind,
|
|
15
16
|
type InteractionSupport,
|
|
@@ -19,7 +20,7 @@ import {
|
|
|
19
20
|
type ToolCallResponse,
|
|
20
21
|
type ToolDefinition
|
|
21
22
|
} from "./Models.ts"
|
|
22
|
-
import type { ProcessExecutorShape } from "./ProcessExecutor.ts"
|
|
23
|
+
import type { ProcessExecutorShape, ProcessResult } from "./ProcessExecutor.ts"
|
|
23
24
|
import { parseFromText, withSchemaHint } from "./StructuredOutput.ts"
|
|
24
25
|
|
|
25
26
|
export interface ConnectorShape extends LlmServiceShape {
|
|
@@ -137,25 +138,58 @@ export const flattenHistory = (messages: ReadonlyArray<Message>): string => {
|
|
|
137
138
|
return `${systemBlock.length === 0 ? "" : `${systemBlock}\n\n`}${turns}`
|
|
138
139
|
}
|
|
139
140
|
|
|
141
|
+
/**
|
|
142
|
+
* How a CLI reports its own login without a model call: a subcommand such as
|
|
143
|
+
* `claude auth status --json` or `codex login status`, run right after the
|
|
144
|
+
* version probe, and how its answer maps to an `AuthStatus`. The probe must be
|
|
145
|
+
* cheap and offline-safe — it reads the CLI's credential store, it never
|
|
146
|
+
* refreshes a token or bills a request. `interpret` answers "Unknown" for
|
|
147
|
+
* output it does not recognise (an older CLI without the subcommand).
|
|
148
|
+
*/
|
|
149
|
+
export interface CliAuthProbe {
|
|
150
|
+
/** Arguments after the binary. */
|
|
151
|
+
readonly args: ReadonlyArray<string>
|
|
152
|
+
readonly interpret: (result: ProcessResult) => AuthStatus
|
|
153
|
+
}
|
|
154
|
+
|
|
140
155
|
export interface CliVersionProbe {
|
|
141
156
|
readonly executor: ProcessExecutorShape
|
|
142
157
|
readonly binary: string
|
|
143
158
|
readonly versionArgs?: ReadonlyArray<string>
|
|
144
159
|
readonly cwd?: string
|
|
160
|
+
/**
|
|
161
|
+
* The CLI's own login check, when it offers a cheap one. Without it the
|
|
162
|
+
* health check reports `authStatus: "Unknown"`: a version answer proves the
|
|
163
|
+
* binary is installed, not that its session is alive.
|
|
164
|
+
*/
|
|
165
|
+
readonly authProbe?: CliAuthProbe
|
|
145
166
|
}
|
|
146
167
|
|
|
147
|
-
const cliProbeHealthy = HealthStatus.make({ availability: "Healthy", authStatus: "Valid" })
|
|
148
168
|
const cliProbeUnhealthy = HealthStatus.make({ availability: "Unhealthy", authStatus: "Unknown" })
|
|
149
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Availability from `<binary> --version`, authentication from the CLI's own
|
|
172
|
+
* login check. A version probe alone never yields "Valid": on 2026-10-21
|
|
173
|
+
* doctor called a `claude` healthy whose OAuth session had expired, and the
|
|
174
|
+
* flow died five seconds later on the first turn.
|
|
175
|
+
*/
|
|
150
176
|
export const cliVersionProbeHealthCheck = (
|
|
151
177
|
probe: CliVersionProbe
|
|
152
|
-
): Effect.Effect<HealthStatus, LlmError> =>
|
|
153
|
-
probe.
|
|
154
|
-
|
|
155
|
-
.
|
|
156
|
-
Effect.
|
|
157
|
-
|
|
158
|
-
|
|
178
|
+
): Effect.Effect<HealthStatus, LlmError> => {
|
|
179
|
+
const cwd = probe.cwd ?? "."
|
|
180
|
+
const authStatus: Effect.Effect<AuthStatus> =
|
|
181
|
+
probe.authProbe === undefined
|
|
182
|
+
? Effect.succeed("Unknown")
|
|
183
|
+
: probe.executor.run([probe.binary, ...probe.authProbe.args], cwd, {}).pipe(
|
|
184
|
+
Effect.map(probe.authProbe.interpret),
|
|
185
|
+
Effect.catch(() => Effect.succeed<AuthStatus>("Unknown"))
|
|
186
|
+
)
|
|
187
|
+
return probe.executor.run([probe.binary, ...(probe.versionArgs ?? ["--version"])], cwd, {}).pipe(
|
|
188
|
+
Effect.andThen(authStatus),
|
|
189
|
+
Effect.map((auth) => HealthStatus.make({ availability: "Healthy", authStatus: auth })),
|
|
190
|
+
Effect.catch(() => Effect.succeed(cliProbeUnhealthy))
|
|
191
|
+
)
|
|
192
|
+
}
|
|
159
193
|
|
|
160
194
|
export interface CliConnectorPrimitives {
|
|
161
195
|
readonly id: ConnectorId
|
package/src/ConnectorConfig.ts
CHANGED
|
@@ -92,7 +92,15 @@ export class CliConnectorConfig extends Schema.TaggedClass<CliConnectorConfig>()
|
|
|
92
92
|
* servers, settings, extensions and instruction files (ADR 0029). How
|
|
93
93
|
* completely a connector honours it is `capabilities.isolatedHeadless`.
|
|
94
94
|
*/
|
|
95
|
-
isolated: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(false)))
|
|
95
|
+
isolated: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(false))),
|
|
96
|
+
/**
|
|
97
|
+
* Globs, relative to the working directory, the harness must neither
|
|
98
|
+
* read, modify nor delete (`.llm4ts/**` by default: the run's own
|
|
99
|
+
* state). How a connector honours them is `capabilities.pathDeny`;
|
|
100
|
+
* absent, the runner supplies its default, and an empty list denies
|
|
101
|
+
* nothing.
|
|
102
|
+
*/
|
|
103
|
+
deniedPaths: Schema.optionalKey(Schema.Array(Schema.String))
|
|
96
104
|
}
|
|
97
105
|
) {}
|
|
98
106
|
|
package/src/ConnectorRegistry.ts
CHANGED
|
@@ -25,6 +25,8 @@ export interface ConnectorRegistryShape {
|
|
|
25
25
|
readonly resolveApi: (config: ApiConnectorConfig) => Effect.Effect<ApiConnectorShape, LlmError>
|
|
26
26
|
readonly resolveCli: (config: CliConnectorConfig) => Effect.Effect<CliConnectorShape, LlmError>
|
|
27
27
|
readonly resolveFallback: (chain: FallbackChain) => Effect.Effect<ConnectorShape, LlmError>
|
|
28
|
+
/** The kind a connector id was registered with, or undefined for an unknown id. */
|
|
29
|
+
readonly kindOf: (id: ConnectorId) => ConnectorKind | undefined
|
|
28
30
|
readonly available: Effect.Effect<ReadonlyArray<ConnectorId>>
|
|
29
31
|
readonly healthCheckAll: Effect.Effect<ReadonlyMap<ConnectorId, HealthStatus>>
|
|
30
32
|
}
|
|
@@ -163,6 +165,7 @@ export const makeConnectorRegistry = (
|
|
|
163
165
|
resolveApi,
|
|
164
166
|
resolveCli,
|
|
165
167
|
resolveFallback,
|
|
168
|
+
kindOf: (id) => byId.get(id.value)?.kind,
|
|
166
169
|
available,
|
|
167
170
|
healthCheckAll
|
|
168
171
|
}
|
package/src/Models.ts
CHANGED
|
@@ -293,6 +293,21 @@ export type EffortSupport = typeof EffortSupport.Type
|
|
|
293
293
|
export const IsolationEnforcement = Schema.Literals(["enforced", "partial", "ignored"])
|
|
294
294
|
export type IsolationEnforcement = typeof IsolationEnforcement.Type
|
|
295
295
|
|
|
296
|
+
/**
|
|
297
|
+
* How a CLI connector keeps the harness out of the paths a seat is denied
|
|
298
|
+
* (`CliConnectorConfig.deniedPaths`; by default the run's own state under
|
|
299
|
+
* `.llm4ts/`):
|
|
300
|
+
* - "enforced": the harness denies the path at the filesystem (a sandbox
|
|
301
|
+
* mount, a path check on every tool, the shell included).
|
|
302
|
+
* - "partial": the harness denies what its rule can see — the file tools by
|
|
303
|
+
* path, the shell by matching the command text — so a path spelled
|
|
304
|
+
* another way (`..`, a variable, a glob) can slip past.
|
|
305
|
+
* - "ignored": the harness has no per-path rule; nothing reaches argv and
|
|
306
|
+
* only the contract text in the prompt keeps the model out.
|
|
307
|
+
*/
|
|
308
|
+
export const PathDenyEnforcement = Schema.Literals(["enforced", "partial", "ignored"])
|
|
309
|
+
export type PathDenyEnforcement = typeof PathDenyEnforcement.Type
|
|
310
|
+
|
|
296
311
|
/**
|
|
297
312
|
* How a connector produces the per-label probabilities behind `scoreLabels`:
|
|
298
313
|
* - "logprobs": read off the backend's token log-probabilities in one
|
|
@@ -345,5 +360,8 @@ export class ConnectorCapabilities extends Schema.Class<ConnectorCapabilities>(
|
|
|
345
360
|
),
|
|
346
361
|
isolatedHeadless: IsolationEnforcement.pipe(
|
|
347
362
|
Schema.withConstructorDefault(Effect.succeed<IsolationEnforcement>("ignored"))
|
|
363
|
+
),
|
|
364
|
+
pathDeny: PathDenyEnforcement.pipe(
|
|
365
|
+
Schema.withConstructorDefault(Effect.succeed<PathDenyEnforcement>("ignored"))
|
|
348
366
|
)
|
|
349
367
|
}) {}
|
|
@@ -6,9 +6,11 @@ import { ConnectorCapabilities, ConnectorIds, HealthStatus, LlmChunk } from "../
|
|
|
6
6
|
import type { ProcessExecutorShape } from "../ProcessExecutor.ts"
|
|
7
7
|
import { failClassifiedCliError, optionalModelArgs, sortedFlagArgs } from "./CliSupport.ts"
|
|
8
8
|
|
|
9
|
+
// `agy --version` proves the install, not the login: the CLI offers no offline
|
|
10
|
+
// login check, so the auth status stays Unknown rather than claiming a session.
|
|
9
11
|
const healthy = HealthStatus.make({
|
|
10
12
|
availability: "Healthy",
|
|
11
|
-
authStatus: "
|
|
13
|
+
authStatus: "Unknown"
|
|
12
14
|
})
|
|
13
15
|
|
|
14
16
|
const unhealthy = HealthStatus.make({
|
|
@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect"
|
|
|
2
2
|
import * as Ref from "effect/Ref"
|
|
3
3
|
import type * as Schema from "effect/Schema"
|
|
4
4
|
import * as Stream from "effect/Stream"
|
|
5
|
-
import { makeCliConnector, type CliConnectorShape } from "../Connector.ts"
|
|
5
|
+
import { makeCliConnector, type CliAuthProbe, type CliConnectorShape } from "../Connector.ts"
|
|
6
6
|
import type { CliConnectorConfig } from "../ConnectorConfig.ts"
|
|
7
7
|
import type { LlmError } from "../Errors.ts"
|
|
8
8
|
import type { StructuredResult } from "../LlmService.ts"
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
jsonStringField,
|
|
26
26
|
optionalModelArgs,
|
|
27
27
|
parseJsonLine,
|
|
28
|
+
parseJsonOutput,
|
|
28
29
|
sortedFlagArgs,
|
|
29
30
|
toolEventChunk,
|
|
30
31
|
toolResultChunk,
|
|
@@ -32,9 +33,23 @@ import {
|
|
|
32
33
|
usageEventChunk,
|
|
33
34
|
type JsonValue,
|
|
34
35
|
effortWord,
|
|
36
|
+
jsonBooleanField,
|
|
35
37
|
jsonObjectEntries
|
|
36
38
|
} from "./CliSupport.ts"
|
|
37
39
|
|
|
40
|
+
/**
|
|
41
|
+
* `claude auth status --json` reads the credential store and answers
|
|
42
|
+
* `{"loggedIn": true|false, ...}` without a request to Anthropic. A claude
|
|
43
|
+
* too old for the subcommand prints no JSON, so its login stays Unknown.
|
|
44
|
+
*/
|
|
45
|
+
export const claudeAuthProbe: CliAuthProbe = {
|
|
46
|
+
args: ["auth", "status", "--json"],
|
|
47
|
+
interpret: (result) => {
|
|
48
|
+
const loggedIn = jsonBooleanField(parseJsonOutput(result.stdout), "loggedIn")
|
|
49
|
+
return loggedIn === undefined ? "Unknown" : loggedIn ? "Valid" : "Invalid"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
38
53
|
/**
|
|
39
54
|
* Read-only is a `--tools` ALLOWLIST, not a permission mode or a denylist
|
|
40
55
|
* (ADR 0010). Plan mode removes no tools — the `init` tool list under it is
|
|
@@ -46,6 +61,25 @@ import {
|
|
|
46
61
|
*/
|
|
47
62
|
export const claudeReadOnlyTools = "Read,Grep,Glob,Skill"
|
|
48
63
|
|
|
64
|
+
/** A glob's directory, for the shell rule: `.llm4ts/**` names `.llm4ts`. */
|
|
65
|
+
const deniedDirectory = (glob: string): string => glob.replace(/\/\*\*$/u, "")
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The deny rules that keep the harness out of `deniedPaths`, for
|
|
69
|
+
* `--disallowed-tools`: one per path for the file tools (`Read` covers Glob
|
|
70
|
+
* and Grep and also blocks Edit and Write on the same path; `Edit` covers
|
|
71
|
+
* every built-in tool that edits files) and one for the shell, matched on
|
|
72
|
+
* the command text (`*` can go anywhere in a Bash rule). Deny rules hold
|
|
73
|
+
* in every permission mode, `bypassPermissions` included, and `./` anchors
|
|
74
|
+
* at the current directory. Empty when nothing is denied.
|
|
75
|
+
*/
|
|
76
|
+
export const claudeDenyRules = (deniedPaths: ReadonlyArray<string>): ReadonlyArray<string> =>
|
|
77
|
+
deniedPaths.flatMap((glob) => [
|
|
78
|
+
`Read(./${glob})`,
|
|
79
|
+
`Edit(./${glob})`,
|
|
80
|
+
`Bash(*${deniedDirectory(glob)}*)`
|
|
81
|
+
])
|
|
82
|
+
|
|
49
83
|
export const claudeCliExtraArgs = (config: CliConnectorConfig): ReadonlyArray<string> => {
|
|
50
84
|
const effectiveFlags = config.readOnly
|
|
51
85
|
? {
|
|
@@ -53,6 +87,15 @@ export const claudeCliExtraArgs = (config: CliConnectorConfig): ReadonlyArray<st
|
|
|
53
87
|
...config.flags
|
|
54
88
|
}
|
|
55
89
|
: config.flags
|
|
90
|
+
// The deny rules ride on `--disallowed-tools`, appended to whatever the
|
|
91
|
+
// operator already disallows, so a `--settings` file of theirs never
|
|
92
|
+
// displaces them.
|
|
93
|
+
const denyRules = claudeDenyRules(config.deniedPaths ?? [])
|
|
94
|
+
const disallowed = [effectiveFlags["disallowed-tools"], ...denyRules]
|
|
95
|
+
.filter((rule): rule is string => rule !== undefined && rule.length > 0)
|
|
96
|
+
.join(",")
|
|
97
|
+
const flagsWithDeny =
|
|
98
|
+
disallowed.length === 0 ? effectiveFlags : { ...effectiveFlags, "disallowed-tools": disallowed }
|
|
56
99
|
return [
|
|
57
100
|
...optionalModelArgs(config.model),
|
|
58
101
|
// `--effort` is Claude Code's own vocabulary: low, medium, high, max.
|
|
@@ -61,7 +104,7 @@ export const claudeCliExtraArgs = (config: CliConnectorConfig): ReadonlyArray<st
|
|
|
61
104
|
// auto memory and CLAUDE.md discovery: the documented headless mode for
|
|
62
105
|
// a repository the run does not trust (ADR 0029).
|
|
63
106
|
...(config.isolated ? ["--bare"] : []),
|
|
64
|
-
...sortedFlagArgs(
|
|
107
|
+
...sortedFlagArgs(flagsWithDeny)
|
|
65
108
|
]
|
|
66
109
|
}
|
|
67
110
|
|
|
@@ -291,13 +334,18 @@ export const makeClaudeCliConnector = (
|
|
|
291
334
|
resumableSessions: true,
|
|
292
335
|
readOnlyEnforcement: "enforced",
|
|
293
336
|
effort: "mapped",
|
|
294
|
-
isolatedHeadless: "enforced"
|
|
337
|
+
isolatedHeadless: "enforced",
|
|
338
|
+
// Deny rules (`claudeDenyRules`) hold in every mode: the file tools
|
|
339
|
+
// check the path itself, the shell rule matches the command text
|
|
340
|
+
// (`cat`, `sed`, redirections are recognised; `rm` and a path spelled
|
|
341
|
+
// another way are not), so the grade is partial.
|
|
342
|
+
pathDeny: "partial"
|
|
295
343
|
}),
|
|
296
344
|
buildArgv: (prompt, _context) => ["claude", "--print", ...extraArgs, prompt],
|
|
297
345
|
buildInteractiveArgv: (_context) => ["claude", ...extraArgs],
|
|
298
346
|
complete,
|
|
299
347
|
completeStream,
|
|
300
|
-
versionProbe: { executor, binary: "claude", cwd }
|
|
348
|
+
versionProbe: { executor, binary: "claude", cwd, authProbe: claudeAuthProbe }
|
|
301
349
|
})
|
|
302
350
|
|
|
303
351
|
const executeStructuredWithUsage = <A, E, RD, RE>(
|
|
@@ -24,6 +24,13 @@ export const parseJsonLine = (line: string): JsonValue | undefined => {
|
|
|
24
24
|
)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* A CLI's whole stdout as one JSON value — for subcommands that pretty-print
|
|
29
|
+
* a single object over several lines (`claude auth status --json`).
|
|
30
|
+
*/
|
|
31
|
+
export const parseJsonOutput = (lines: ReadonlyArray<string>): JsonValue | undefined =>
|
|
32
|
+
parseJsonLine(lines.join("\n"))
|
|
33
|
+
|
|
27
34
|
export const jsonField = (value: JsonValue | undefined, name: string): JsonValue | undefined =>
|
|
28
35
|
value !== undefined && isJsonRecord(value) ? value[name] : undefined
|
|
29
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect"
|
|
2
2
|
import type * as Schema from "effect/Schema"
|
|
3
3
|
import * as Stream from "effect/Stream"
|
|
4
|
-
import { makeCliConnector, type CliConnectorShape } from "../Connector.ts"
|
|
4
|
+
import { makeCliConnector, type CliAuthProbe, type CliConnectorShape } from "../Connector.ts"
|
|
5
5
|
import type { CliConnectorConfig } from "../ConnectorConfig.ts"
|
|
6
6
|
import { ProviderError, type LlmError } from "../Errors.ts"
|
|
7
7
|
import type { StructuredResult } from "../LlmService.ts"
|
|
@@ -197,6 +197,21 @@ export const parseCodexStreamLine = (line: string): ReadonlyArray<LlmChunk> => {
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
/**
|
|
201
|
+
* `codex login status` reads `~/.codex/auth.json` and exits 0 with
|
|
202
|
+
* "Logged in using ChatGPT" (or an API key), 1 with "Not logged in". A codex
|
|
203
|
+
* without the subcommand exits with a usage error, which stays Unknown.
|
|
204
|
+
*/
|
|
205
|
+
export const codexAuthProbe: CliAuthProbe = {
|
|
206
|
+
args: ["login", "status"],
|
|
207
|
+
interpret: (result) =>
|
|
208
|
+
result.exitCode === 0
|
|
209
|
+
? "Valid"
|
|
210
|
+
: [...result.stdout, ...result.stderr].join("\n").toLowerCase().includes("not logged in")
|
|
211
|
+
? "Invalid"
|
|
212
|
+
: "Unknown"
|
|
213
|
+
}
|
|
214
|
+
|
|
200
215
|
export const makeCodexConnector = (
|
|
201
216
|
config: CliConnectorConfig,
|
|
202
217
|
executor: ProcessExecutorShape,
|
|
@@ -268,7 +283,7 @@ export const makeCodexConnector = (
|
|
|
268
283
|
buildInteractiveArgv: (_context) => ["codex", ...extraArgs],
|
|
269
284
|
complete,
|
|
270
285
|
completeStream,
|
|
271
|
-
versionProbe: { executor, binary: "codex", cwd }
|
|
286
|
+
versionProbe: { executor, binary: "codex", cwd, authProbe: codexAuthProbe }
|
|
272
287
|
})
|
|
273
288
|
|
|
274
289
|
const executeStructuredWithUsage = <A, E, RD, RE>(
|
|
@@ -52,6 +52,9 @@ export const makeCopilotConnector = (
|
|
|
52
52
|
Stream.fromEffect(complete(prompt)).pipe(
|
|
53
53
|
Stream.map((text) => LlmChunk.make({ delta: text }))
|
|
54
54
|
),
|
|
55
|
+
// No auth probe: `gh auth status` validates every stored token against
|
|
56
|
+
// the GitHub API (and `gh auth token` would print the secret), so there
|
|
57
|
+
// is no offline login check to run; the login stays Unknown.
|
|
55
58
|
versionProbe: { executor, binary: "gh", versionArgs: ["copilot", "--version"], cwd: "." }
|
|
56
59
|
})
|
|
57
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect"
|
|
2
2
|
import * as Stream from "effect/Stream"
|
|
3
|
-
import { makeCliConnector, type CliConnectorShape } from "../Connector.ts"
|
|
3
|
+
import { makeCliConnector, type CliAuthProbe, type CliConnectorShape } from "../Connector.ts"
|
|
4
4
|
import type { CliConnectorConfig } from "../ConnectorConfig.ts"
|
|
5
5
|
import { ConnectorCapabilities, ConnectorIds, LlmChunk } from "../Models.ts"
|
|
6
6
|
import type { ProcessExecutorShape } from "../ProcessExecutor.ts"
|
|
@@ -13,11 +13,24 @@ import {
|
|
|
13
13
|
jsonStringField,
|
|
14
14
|
optionalModelArgs,
|
|
15
15
|
parseJsonLine,
|
|
16
|
+
parseJsonOutput,
|
|
16
17
|
sortedFlagArgs,
|
|
17
18
|
toolEventChunk,
|
|
18
19
|
type JsonValue
|
|
19
20
|
} from "./CliSupport.ts"
|
|
20
21
|
|
|
22
|
+
/**
|
|
23
|
+
* `cursor-agent status --format json` (alias `whoami`) answers
|
|
24
|
+
* `{"isAuthenticated": true|false, ...}` from the stored tokens.
|
|
25
|
+
*/
|
|
26
|
+
export const cursorAuthProbe: CliAuthProbe = {
|
|
27
|
+
args: ["status", "--format", "json"],
|
|
28
|
+
interpret: (result) => {
|
|
29
|
+
const authenticated = jsonBooleanField(parseJsonOutput(result.stdout), "isAuthenticated")
|
|
30
|
+
return authenticated === undefined ? "Unknown" : authenticated ? "Valid" : "Invalid"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
21
34
|
export const cursorExtraArgs = (config: CliConnectorConfig): ReadonlyArray<string> => [
|
|
22
35
|
...optionalModelArgs(config.model),
|
|
23
36
|
...(config.readOnly ? [] : ["--force"]),
|
|
@@ -123,6 +136,6 @@ export const makeCursorConnector = (
|
|
|
123
136
|
buildInteractiveArgv: (_context) => ["cursor-agent", ...extraArgs],
|
|
124
137
|
complete,
|
|
125
138
|
completeStream,
|
|
126
|
-
versionProbe: { executor, binary: "cursor-agent", cwd }
|
|
139
|
+
versionProbe: { executor, binary: "cursor-agent", cwd, authProbe: cursorAuthProbe }
|
|
127
140
|
})
|
|
128
141
|
}
|