@knpkv/ai-claude 0.2.1 → 0.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.
package/README.md CHANGED
@@ -5,7 +5,7 @@ An Effect AI `LanguageModel` backed by a local Claude CLI process.
5
5
  ```ts
6
6
  import { NodeServices } from "@effect/platform-node"
7
7
  import { Effect } from "effect"
8
- import { LanguageModel } from "effect/unstable/ai"
8
+ import { LanguageModel } from "effect/ai"
9
9
  import { model } from "@knpkv/ai-claude"
10
10
 
11
11
  const program = LanguageModel.generateText({ prompt: "Review the current change." }).pipe(
@@ -14,8 +14,26 @@ const program = LanguageModel.generateText({ prompt: "Review the current change.
14
14
  )
15
15
  ```
16
16
 
17
- The default access mode is read-only. It starts Claude in non-interactive plan mode with only read-oriented tools. Set `access: "workspace-write"` to allow `Edit` and `Write`; shell execution remains disabled in both modes.
17
+ The default access mode is read-only. It starts Claude in non-interactive plan mode with only read-oriented tools. Set `access: "prompt-only"` to disable all model-invocable tools, deny built-in and MCP tool names, and isolate ordinary settings without replacing enterprise-managed MCP configuration, or `access: "workspace-write"` to allow `Edit` and `Write`; shell execution remains disabled in every mode.
18
18
 
19
19
  Requests time out after two minutes by default. Output is bounded, prompts are sent over stdin, sessions are not persisted, and Claude's JSON response is schema-decoded before it enters the Effect AI response model. Effect toolkits and file prompt parts are rejected.
20
+ Fixed and rest-tail tuple schemas are lowered to draft-07 positional `items` and `additionalItems`
21
+ before they reach the CLI. Positions, item types and length bounds are retained; unsupported
22
+ conflicting tuple forms fail as typed schema errors rather than being sent with changed meaning.
20
23
 
21
- The child process does not inherit the full host environment. It receives only `PATH`, home/config locations (`HOME`, `USERPROFILE`, `XDG_CONFIG_HOME`, and `CLAUDE_CONFIG_DIR`), and direct Anthropic authentication/gateway settings (`ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, and `ANTHROPIC_BASE_URL`) when those values are present. Other provider credentials and session-scoped variables are not forwarded.
24
+ Set `effort` to `low`, `medium`, `high`, `xhigh` or `max` to pass an explicit
25
+ `--effort` override. Omitting it preserves the CLI-configured default.
26
+
27
+ The child process does not inherit the full host environment. It receives only `PATH`, home, account and config locations (`HOME`, `USER`, `USERPROFILE`, `XDG_CONFIG_HOME`, and `CLAUDE_CONFIG_DIR`), and direct Anthropic authentication/gateway settings (`ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, and `ANTHROPIC_BASE_URL`) when those values are present. Other provider credentials and session-scoped variables are not forwarded.
28
+
29
+ Pass `onActivity` to `model` to receive live `ClaudeActivity` events during a call,
30
+ including `generateObject`. This enables CLI partial-message output and reports
31
+ the supplied request prompt, process milestones, visible assistant text,
32
+ `StructuredOutput` JSON fragments and the final response, even without partial
33
+ messages. Request events contain caller-supplied prompt content; consumers must
34
+ keep them within the same authorization boundary as that prompt.
35
+ System events, reasoning and other tool inputs are excluded. The callback applies
36
+ backpressure; cancellation stops the same scoped process. The stdout byte limit
37
+ covers all events, and the final result still passes schema validation. Without
38
+ this option, output remains buffered, including the `LanguageModel.streamText`
39
+ adapter.
@@ -0,0 +1,9 @@
1
+ import { Effect, Stream } from "effect";
2
+ /** Caller-supplied request, visible output, final response or a milestone. Excludes system events and reasoning. */
3
+ export interface ClaudeActivity {
4
+ readonly kind: "status" | "text" | "request" | "response";
5
+ readonly text: string;
6
+ }
7
+ /** Consume bounded NDJSON as it arrives; only the authoritative result is retained for final decoding. */
8
+ export declare const collectActivity: (source: Stream.Stream<Uint8Array<ArrayBufferLike>, unknown, never>, maximumBytes: number, method: string, report: (activity: ClaudeActivity) => Effect.Effect<void>) => Effect.Effect<string, import("effect/ai/AiError").AiError | import("./errors.js").ClaudeTransportError, never>;
9
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/C,oHAAoH;AACpH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAiBD,0GAA0G;AAC1G,eAAO,MAAM,eAAe,gIAIP,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mHAyDzD,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { Effect, Schema, Stream } from "effect";
2
+ import { ClaudeFailureCause, invalidOutput, transportFailure } from "./errors.js";
3
+ const Event = Schema.Struct({
4
+ type: Schema.String,
5
+ event: Schema.optional(Schema.Struct({
6
+ type: Schema.String,
7
+ index: Schema.optional(Schema.Number),
8
+ content_block: Schema.optional(Schema.Struct({ type: Schema.String, name: Schema.optional(Schema.String) })),
9
+ delta: Schema.optional(Schema.Struct({
10
+ type: Schema.optional(Schema.String),
11
+ text: Schema.optional(Schema.String),
12
+ partial_json: Schema.optional(Schema.String)
13
+ }))
14
+ }))
15
+ });
16
+ const decode = Schema.decodeUnknownEffect(Schema.fromJsonString(Event));
17
+ /** Consume bounded NDJSON as it arrives; only the authoritative result is retained for final decoding. */
18
+ export const collectActivity = Effect.fn("ClaudeCli.collectActivity")(function* (source, maximumBytes, method, report) {
19
+ let bytes = 0;
20
+ let result = "";
21
+ const structuredBlocks = new Set();
22
+ yield* source.pipe(Stream.mapError((cause) => transportFailure("process", "Failed reading Claude CLI stdout", cause)), Stream.mapEffect((chunk) => {
23
+ bytes += chunk.byteLength;
24
+ return bytes > maximumBytes
25
+ ? Effect.fail(transportFailure("process", `Claude CLI stdout exceeded ${maximumBytes} bytes for ${method}`, new ClaudeFailureCause({ reason: "stdout-limit-exceeded" })))
26
+ : Effect.succeed(chunk);
27
+ }), Stream.decodeText(), Stream.splitLines, Stream.filter((line) => line.trim().length > 0), Stream.runForEach((line) => Effect.gen(function* () {
28
+ const envelope = yield* decode(line).pipe(Effect.mapError(() => invalidOutput("Claude CLI emitted malformed stream JSON", method)));
29
+ if (envelope.type === "result") {
30
+ result = line;
31
+ return;
32
+ }
33
+ if (envelope.type !== "stream_event" || envelope.event === undefined)
34
+ return;
35
+ const event = envelope.event;
36
+ if (event.type === "message_start") {
37
+ structuredBlocks.clear();
38
+ yield* report({ kind: "status", text: "Agent responding" });
39
+ }
40
+ if (event.type === "content_block_start" && event.index !== undefined &&
41
+ event.content_block?.name === "StructuredOutput") {
42
+ structuredBlocks.add(event.index);
43
+ yield* report({ kind: "status", text: "Writing structured answer" });
44
+ }
45
+ if (event.type !== "content_block_delta")
46
+ return;
47
+ const delta = event.delta;
48
+ const text = delta?.type === "text_delta"
49
+ ? delta.text
50
+ : delta?.type === "input_json_delta" && event.index !== undefined && structuredBlocks.has(event.index)
51
+ ? delta.partial_json
52
+ : undefined;
53
+ if (text !== undefined && text.length > 0)
54
+ yield* report({ kind: "text", text });
55
+ })));
56
+ if (result.length === 0)
57
+ return yield* invalidOutput("Claude CLI emitted no result event", method);
58
+ return result;
59
+ });
60
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Schema } from "effect";
2
- import { AiError } from "effect/unstable/ai";
2
+ import { AiError } from "effect/ai";
3
3
  declare const ClaudeTransportError_base: Schema.Class<ClaudeTransportError, Schema.TaggedStruct<"ClaudeTransportError", {
4
4
  readonly cause: Schema.Defect;
5
5
  readonly diagnostic: Schema.String;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;;;;;;AAI5C,qBAAa,oBAAqB,SAAQ,yBAOzC;CAAG;;;;AAEJ,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAC;CAAG;AAEL,eAAO,MAAM,YAAY,gBAAiB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,OAKvE,CAAA;AAEJ,eAAO,MAAM,aAAa,gBAAiB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,OAKxE,CAAA;AAEJ,eAAO,MAAM,oBAAoB,UAAW,OAAO,UAAU,MAAM,KAAG,OAAO,CAAC,OAa1E,CAAA;AAEJ,eAAO,MAAM,iBAAiB,UAAW,OAAO,UAAU,MAAM,KAAG,OAAO,CAAC,OAOvE,CAAA;AAEJ,eAAO,MAAM,gBAAgB,UACpB,oBAAoB,CAAC,OAAO,CAAC,cACxB,MAAM,SACX,OAAO,KACb,oBAA8E,CAAA;AAEjF,eAAO,MAAM,kBAAkB,UAAW,oBAAoB,UAAU,MAAM,KAAG,OAAO,CAAC,OAarF,CAAA"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;;;;;;AAInC,qBAAa,oBAAqB,SAAQ,yBAOzC;CAAG;;;;AAEJ,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAC;CAAG;AAEL,eAAO,MAAM,YAAY,gBAAiB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,OAKvE,CAAA;AAEJ,eAAO,MAAM,aAAa,gBAAiB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,OAKxE,CAAA;AAEJ,eAAO,MAAM,oBAAoB,UAAW,OAAO,UAAU,MAAM,KAAG,OAAO,CAAC,OAa1E,CAAA;AAEJ,eAAO,MAAM,iBAAiB,UAAW,OAAO,UAAU,MAAM,KAAG,OAAO,CAAC,OAOvE,CAAA;AAEJ,eAAO,MAAM,gBAAgB,UACpB,oBAAoB,CAAC,OAAO,CAAC,cACxB,MAAM,SACX,OAAO,KACb,oBAA8E,CAAA;AAEjF,eAAO,MAAM,kBAAkB,UAAW,oBAAoB,UAAU,MAAM,KAAG,OAAO,CAAC,OAarF,CAAA"}
package/dist/errors.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Data, Predicate, Schema } from "effect";
2
- import { AiError } from "effect/unstable/ai";
2
+ import { AiError } from "effect/ai";
3
3
  const MODULE = "ClaudeCliLanguageModel";
4
4
  export class ClaudeTransportError extends Schema.TaggedError()("ClaudeTransportError", {
5
5
  cause: Schema.Defect(),
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * @since 0.0.0
5
5
  */
6
+ export type { ClaudeActivity } from "./activity.js";
6
7
  export { model } from "./model.js";
7
8
  export type { ClaudeModelOptions } from "./model.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
package/dist/model.d.ts CHANGED
@@ -1,16 +1,29 @@
1
+ import { Effect } from "effect";
1
2
  import type { Duration } from "effect";
2
- import { LanguageModel, Model } from "effect/unstable/ai";
3
- import { ChildProcessSpawner } from "effect/unstable/process";
3
+ import { LanguageModel, Model } from "effect/ai";
4
+ import { ChildProcessSpawner } from "effect/process";
5
+ import type { ClaudeActivity } from "./activity.js";
4
6
  /** Options for a local Claude CLI-backed Effect AI model. */
5
7
  export interface ClaudeModelOptions {
6
8
  /** Working directory exposed to Claude. */
7
9
  readonly cwd: string;
10
+ /** Receives live visible output and process status. Backpressure and cancellation follow the call. */
11
+ readonly onActivity?: ((activity: ClaudeActivity) => Effect.Effect<void>) | undefined;
8
12
  /** Claude executable name or absolute path. Defaults to `claude`. */
9
13
  readonly executable?: string;
10
14
  /** Claude model identifier. Defaults to the CLI-configured model. */
11
- readonly model?: string;
12
- /** Workspace access granted to Claude. Defaults to `read-only`. */
13
- readonly access?: "read-only" | "workspace-write";
15
+ readonly model?: string | undefined;
16
+ /** Optional CLI effort override. Omission preserves the configured default. */
17
+ readonly effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
18
+ /**
19
+ * Workspace access granted to Claude. Defaults to `read-only`.
20
+ *
21
+ * `prompt-only` withholds every tool. Use it for self-contained prompts: given file tools, the CLI
22
+ * will often go exploring before answering, which costs turns and wall clock for nothing. Measured
23
+ * on a classification prompt that needed no files at all — 42s over 6 turns with `Read,Glob,Grep`
24
+ * against 15s over 2 turns with no tools.
25
+ */
26
+ readonly access?: "prompt-only" | "read-only" | "workspace-write";
14
27
  /** Maximum duration of one CLI invocation. Defaults to two minutes. */
15
28
  readonly timeout?: Duration.Input;
16
29
  /** Maximum captured stdout bytes. Defaults to 4 MiB. */
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAsC7D,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAA;IACjD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;IACjC,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAgID,uFAAuF;AACvF,eAAO,MAAM,KAAK,YACP,kBAAkB,KAC1B,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,aAAa,EAAE,mBAAmB,CAAC,mBAAmB,CAK9F,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAA4C,MAAM,QAAQ,CAAA;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAwDnD,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,sGAAsG;IACtG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;IACrF,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAA;IACzE;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAA;IACjE,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;IACjC,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAoOD,uFAAuF;AACvF,eAAO,MAAM,KAAK,YACP,kBAAkB,KAC1B,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,aAAa,EAAE,mBAAmB,CAAC,mBAAmB,CAK9F,CAAA"}
package/dist/model.js CHANGED
@@ -1,7 +1,7 @@
1
- import { Config, Effect, Layer, Option, Schema, Stream } from "effect";
2
- import { LanguageModel, Model } from "effect/unstable/ai";
3
- import { ChildProcessSpawner } from "effect/unstable/process";
4
- import { configurationFailure, invalidInput, invalidOutput, unsupportedSchema } from "./errors.js";
1
+ import { Cause, Config, Effect, Layer, Option, Predicate, Schema, Stream } from "effect";
2
+ import { LanguageModel, Model } from "effect/ai";
3
+ import { ChildProcessSpawner } from "effect/process";
4
+ import { configurationFailure, invalidInput, invalidOutput, transportFailure, transportToAiError, unsupportedSchema } from "./errors.js";
5
5
  import { renderPrompt } from "./prompt.js";
6
6
  import { runClaude } from "./runner.js";
7
7
  const DEFAULT_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
@@ -9,7 +9,16 @@ const DEFAULT_MAX_STDERR_BYTES = 256 * 1024;
9
9
  const DEFAULT_TIMEOUT = "2 minutes";
10
10
  const STREAM_TEXT_ID = "claude-cli-output";
11
11
  const JsonString = Schema.fromJsonString(Schema.Json);
12
- const optionalEnvironmentValue = (name) => Config.option(Config.string(name));
12
+ const optionalEnvironmentValue = (name) => Config.option(Config.String(name));
13
+ /**
14
+ * The reviewed environment handed to the Claude CLI. Deliberately an allowlist: the child gets
15
+ * what it needs to find its own configuration and credentials, and nothing else.
16
+ *
17
+ * `USER` is load-bearing on macOS. Credentials live in the login Keychain, whose items are scoped
18
+ * to the account name, so without `USER` the CLI reports "Not logged in · Please run /login" and
19
+ * every call fails — even though the user is signed in. It carries no secret; it is the account
20
+ * name the process already runs as.
21
+ */
13
22
  const childEnvironment = Config.all({
14
23
  anthropicApiKey: optionalEnvironmentValue("ANTHROPIC_API_KEY"),
15
24
  anthropicAuthToken: optionalEnvironmentValue("ANTHROPIC_AUTH_TOKEN"),
@@ -17,6 +26,7 @@ const childEnvironment = Config.all({
17
26
  claudeConfigDirectory: optionalEnvironmentValue("CLAUDE_CONFIG_DIR"),
18
27
  home: optionalEnvironmentValue("HOME"),
19
28
  path: optionalEnvironmentValue("PATH"),
29
+ user: optionalEnvironmentValue("USER"),
20
30
  userProfile: optionalEnvironmentValue("USERPROFILE"),
21
31
  xdgConfigHome: optionalEnvironmentValue("XDG_CONFIG_HOME")
22
32
  }).pipe(Config.map((configured) => ({
@@ -28,6 +38,7 @@ const childEnvironment = Config.all({
28
38
  { CLAUDE_CONFIG_DIR: configured.claudeConfigDirectory.value }),
29
39
  ...((Option.isSome(configured.home)) && { HOME: configured.home.value }),
30
40
  ...((Option.isSome(configured.path)) && { PATH: configured.path.value }),
41
+ ...((Option.isSome(configured.user)) && { USER: configured.user.value }),
31
42
  ...((Option.isSome(configured.userProfile)) && { USERPROFILE: configured.userProfile.value }),
32
43
  ...((Option.isSome(configured.xdgConfigHome)) && { XDG_CONFIG_HOME: configured.xdgConfigHome.value })
33
44
  })));
@@ -49,21 +60,97 @@ const usageFrom = (usage) => ({
49
60
  }
50
61
  });
51
62
  const encodeJson = (value, method) => Schema.encodeUnknownEffect(JsonString)(value).pipe(Effect.mapError((cause) => unsupportedSchema(cause, method)));
63
+ /** What a text response passes for the schema argument: nothing. */
64
+ const noSchemaArgument = undefined;
65
+ const isJsonSchemaObject = (value) => Predicate.isObjectOrArray(value) && value !== null && !Array.isArray(value);
66
+ const schemaMapKeys = new Set(["$defs", "definitions", "dependentSchemas", "patternProperties", "properties"]);
67
+ const schemaInstanceValueKeys = new Set(["const", "default", "enum", "examples"]);
68
+ /** Claude Code accepts the JSON Schema subset produced after flattening checks. */
69
+ const flattenJsonSchemaAllOf = (value) => {
70
+ if (Array.isArray(value))
71
+ return value.map(flattenJsonSchemaAllOf);
72
+ if (!isJsonSchemaObject(value))
73
+ return value;
74
+ const flattened = {};
75
+ for (const [key, child] of Object.entries(value)) {
76
+ if (key !== "allOf" && key !== "uniqueItems") {
77
+ if (schemaInstanceValueKeys.has(key)) {
78
+ flattened[key] = child;
79
+ }
80
+ else if (schemaMapKeys.has(key) && isJsonSchemaObject(child)) {
81
+ const schemas = {};
82
+ for (const [name, schema] of Object.entries(child)) {
83
+ schemas[name] = flattenJsonSchemaAllOf(schema);
84
+ }
85
+ flattened[key] = schemas;
86
+ }
87
+ else {
88
+ flattened[key] = flattenJsonSchemaAllOf(child);
89
+ }
90
+ }
91
+ }
92
+ if (value.prefixItems !== undefined) {
93
+ const positional = flattened.prefixItems;
94
+ const tail = flattened.items;
95
+ if (!Array.isArray(positional) ||
96
+ positional.some((item) => !isJsonSchemaObject(item) && !Predicate.isBoolean(item)) ||
97
+ (tail !== undefined && !isJsonSchemaObject(tail) && !Predicate.isBoolean(tail)) ||
98
+ flattened.additionalItems !== undefined)
99
+ throw new Error("Unsupported positional JSON Schema tuple");
100
+ flattened.items = positional;
101
+ if (tail !== undefined)
102
+ flattened.additionalItems = tail;
103
+ else if (flattened.maxItems === positional.length)
104
+ flattened.additionalItems = false;
105
+ delete flattened.prefixItems;
106
+ }
107
+ if (value.allOf === undefined)
108
+ return flattened;
109
+ if (!Array.isArray(value.allOf))
110
+ throw new Error("JSON Schema allOf must be an array");
111
+ for (const clause of value.allOf) {
112
+ const normalizedClause = flattenJsonSchemaAllOf(clause);
113
+ if (!isJsonSchemaObject(normalizedClause)) {
114
+ throw new Error("JSON Schema allOf clauses must be objects");
115
+ }
116
+ for (const [key, child] of Object.entries(normalizedClause)) {
117
+ if (key === "uniqueItems")
118
+ continue;
119
+ const existing = flattened[key];
120
+ if (existing !== undefined && JSON.stringify(existing) !== JSON.stringify(child)) {
121
+ throw new Error(`JSON Schema allOf keyword conflict: ${key}`);
122
+ }
123
+ flattened[key] = child;
124
+ }
125
+ }
126
+ return flattened;
127
+ };
52
128
  const schemaArgument = (options, method) => {
129
+ // Named rather than a bare `undefined`: this is "no `--json-schema` argument at all", which is a
130
+ // different outcome from an empty one, and `Effect.void` cannot carry it in a `string | undefined`.
53
131
  if (options.responseFormat.type === "text")
54
- return Effect.succeed(undefined);
132
+ return Effect.succeed(noSchemaArgument);
55
133
  const responseSchema = options.responseFormat.schema;
56
134
  return Effect.try({
57
- try: () => Schema.toJsonSchemaDocument(responseSchema),
135
+ try: () => {
136
+ const document = Schema.toJsonSchemaDocument(responseSchema);
137
+ // No `$schema`: the Claude CLI validates `--json-schema` against its own registered
138
+ // meta-schemas, and it has only draft-07. Declaring 2020-12 makes it reject the argument
139
+ // outright ("no schema with key or ref ..."), which fails *every* structured-output call.
140
+ // Omitting the dialect lets the CLI apply its default, which accepts the shapes Effect
141
+ // Schema emits.
142
+ return flattenJsonSchemaAllOf(Schema.decodeUnknownSync(Schema.Json)({
143
+ $defs: document.definitions,
144
+ ...document.schema
145
+ }));
146
+ },
58
147
  catch: (cause) => unsupportedSchema(cause, method)
59
- }).pipe(Effect.flatMap((document) => encodeJson({
60
- $defs: document.definitions,
61
- $schema: "https://json-schema.org/draft/2020-12/schema",
62
- ...document.schema
63
- }, method)));
148
+ }).pipe(Effect.flatMap((document) => encodeJson(document, method)));
64
149
  };
65
150
  const normalizeOptions = Effect.fn("ClaudeCliLanguageModel.normalizeOptions")(function* (options, method) {
66
151
  const normalized = {
152
+ effort: options.effort,
153
+ onActivity: options.onActivity,
67
154
  access: options.access ?? "read-only",
68
155
  cwd: options.cwd,
69
156
  environment: yield* childEnvironment.pipe(Effect.mapError((cause) => configurationFailure(cause, method))),
@@ -95,35 +182,47 @@ const makeService = Effect.fn("ClaudeCliLanguageModel.make")(function* (options)
95
182
  const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
96
183
  return yield* LanguageModel.make({
97
184
  generateText: Effect.fn("ClaudeCliLanguageModel.generateText")(function* (providerOptions) {
98
- const prompt = yield* renderPrompt(providerOptions, "generateText");
99
- const jsonSchema = yield* schemaArgument(providerOptions, "generateText");
100
185
  const normalized = yield* normalizeOptions(options, "generateText");
101
- const result = yield* runClaude({ ...normalized, jsonSchema, prompt }, "generateText", spawner);
102
- const text = yield* resultText(result, "generateText");
103
- const parts = [
104
- { type: "text", text },
105
- { type: "finish", reason: "stop", response: undefined, usage: usageFrom(result.usage) }
106
- ];
107
- return parts;
186
+ return yield* Effect.gen(function* () {
187
+ const prompt = yield* renderPrompt(providerOptions, "generateText");
188
+ const jsonSchema = yield* schemaArgument(providerOptions, "generateText");
189
+ const result = yield* runClaude({ ...normalized, jsonSchema, prompt }, "generateText", spawner);
190
+ const text = yield* resultText(result, "generateText");
191
+ if (options.onActivity !== undefined)
192
+ yield* options.onActivity({ kind: "response", text });
193
+ const parts = [
194
+ { type: "text", text },
195
+ { type: "finish", reason: "stop", response: undefined, usage: usageFrom(result.usage) }
196
+ ];
197
+ return parts;
198
+ }).pipe(Effect.timeout(normalized.timeout), Effect.mapError((cause) => Cause.isTimeoutError(cause)
199
+ ? transportToAiError(transportFailure("timeout", "Claude CLI timed out", cause), "generateText")
200
+ : cause));
108
201
  }),
109
202
  streamText: (providerOptions) => Stream.unwrap(Effect.gen(function* () {
110
- const prompt = yield* renderPrompt(providerOptions, "streamText");
111
- const jsonSchema = yield* schemaArgument(providerOptions, "streamText");
112
203
  const normalized = yield* normalizeOptions(options, "streamText");
113
- const result = yield* runClaude({ ...normalized, jsonSchema, prompt }, "streamText", spawner);
114
- const text = yield* resultText(result, "streamText");
115
- const parts = [
116
- { type: "text-start", id: STREAM_TEXT_ID },
117
- { type: "text-delta", id: STREAM_TEXT_ID, delta: text },
118
- { type: "text-end", id: STREAM_TEXT_ID },
119
- {
120
- type: "finish",
121
- reason: "stop",
122
- response: undefined,
123
- usage: usageFrom(result.usage)
124
- }
125
- ];
126
- return Stream.fromIterable(parts);
204
+ return yield* Effect.gen(function* () {
205
+ const prompt = yield* renderPrompt(providerOptions, "streamText");
206
+ const jsonSchema = yield* schemaArgument(providerOptions, "streamText");
207
+ const result = yield* runClaude({ ...normalized, jsonSchema, prompt }, "streamText", spawner);
208
+ const text = yield* resultText(result, "streamText");
209
+ if (options.onActivity !== undefined)
210
+ yield* options.onActivity({ kind: "response", text });
211
+ const parts = [
212
+ { type: "text-start", id: STREAM_TEXT_ID },
213
+ { type: "text-delta", id: STREAM_TEXT_ID, delta: text },
214
+ { type: "text-end", id: STREAM_TEXT_ID },
215
+ {
216
+ type: "finish",
217
+ reason: "stop",
218
+ response: undefined,
219
+ usage: usageFrom(result.usage)
220
+ }
221
+ ];
222
+ return Stream.fromIterable(parts);
223
+ }).pipe(Effect.timeout(normalized.timeout), Effect.mapError((cause) => Cause.isTimeoutError(cause)
224
+ ? transportToAiError(transportFailure("timeout", "Claude CLI timed out", cause), "streamText")
225
+ : cause));
127
226
  }))
128
227
  });
129
228
  });
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
package/dist/prompt.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Effect } from "effect";
2
- import type { LanguageModel } from "effect/unstable/ai";
2
+ import type { LanguageModel } from "effect/ai";
3
3
  import { invalidInput } from "./errors.js";
4
4
  export declare const renderPrompt: (options: LanguageModel.ProviderOptions, method: string) => Effect.Effect<string, ReturnType<typeof invalidInput>>;
5
5
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AA0B1C,eAAO,MAAM,YAAY,YACd,aAAa,CAAC,eAAe,UAC9B,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAsBpD,CAAA"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,WAAW,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AA0B1C,eAAO,MAAM,YAAY,YACd,aAAa,CAAC,eAAe,UAC9B,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAsBpD,CAAA"}
package/dist/runner.d.ts CHANGED
@@ -1,8 +1,12 @@
1
1
  import { Effect, Stream } from "effect";
2
2
  import type { Duration } from "effect";
3
- import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
3
+ import { ChildProcess, ChildProcessSpawner } from "effect/process";
4
+ import { type ClaudeActivity } from "./activity.js";
5
+ import type { ClaudeModelOptions } from "./model.js";
4
6
  interface RunOptions {
5
- readonly access: "read-only" | "workspace-write";
7
+ readonly effort: ClaudeModelOptions["effort"];
8
+ readonly onActivity?: ((activity: ClaudeActivity) => Effect.Effect<void>) | undefined;
9
+ readonly access: "prompt-only" | "read-only" | "workspace-write";
6
10
  readonly cwd: string;
7
11
  readonly environment: Readonly<Record<string, string>>;
8
12
  readonly executable: string;
@@ -40,6 +44,6 @@ export declare const runClaude: (options: RunOptions, method: string, spawner: {
40
44
  readonly cache_creation_input_tokens?: number | undefined;
41
45
  readonly cache_read_input_tokens?: number | undefined;
42
46
  } | undefined;
43
- }, import("effect/unstable/ai/AiError").AiError, never>;
47
+ }, import("effect/ai/AiError").AiError, never>;
44
48
  export {};
45
49
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAK3E,UAAU,UAAU;IAClB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAAA;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAA;CACjC;AA6FD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAqDpB,CAAA"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,eAAe,CAAA;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGpD,UAAU,UAAU;IAClB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;IACrF,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAA;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAA;CACjC;AAiHD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;8CA4DpB,CAAA"}
package/dist/runner.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Cause, Effect, Predicate, Stream } from "effect";
2
- import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
2
+ import { ChildProcess, ChildProcessSpawner } from "effect/process";
3
+ import { collectActivity } from "./activity.js";
3
4
  import { ClaudeFailureCause, transportFailure, transportToAiError } from "./errors.js";
4
5
  import { decodeClaudeOutput } from "./protocol.js";
5
6
  const collectBounded = (source, maximumBytes, label, method) => source.pipe(Stream.mapError((cause) => transportFailure("process", `Failed while reading Claude CLI ${label} for ${method}`, cause)), Stream.runFoldEffect(() => ({ chunks: [], size: 0 }), (collected, chunk) => {
@@ -19,12 +20,22 @@ const redactDiagnostic = (diagnostic, cwd) => {
19
20
  return safeLines.join("\n").trim().slice(0, 1_000);
20
21
  };
21
22
  const makeArguments = (options) => {
22
- const tools = options.access === "workspace-write" ? "Read,Glob,Grep,Edit,Write" : "Read,Glob,Grep";
23
- const permissionMode = options.access === "workspace-write" ? "acceptEdits" : "plan";
23
+ // `prompt-only` passes an empty tool list, which is what stops the CLI exploring the filesystem to
24
+ // answer a prompt that already contains everything it needs.
25
+ const tools = options.access === "workspace-write"
26
+ ? "Read,Glob,Grep,Edit,Write"
27
+ : options.access === "read-only"
28
+ ? "Read,Glob,Grep"
29
+ : "";
30
+ const permissionMode = options.access === "workspace-write"
31
+ ? "acceptEdits"
32
+ : options.access === "read-only"
33
+ ? "plan"
34
+ : "dontAsk";
24
35
  const arguments_ = [
25
36
  "--print",
26
37
  "--output-format",
27
- "json",
38
+ options.onActivity === undefined ? "json" : "stream-json",
28
39
  "--input-format",
29
40
  "text",
30
41
  "--permission-mode",
@@ -34,8 +45,15 @@ const makeArguments = (options) => {
34
45
  "--no-session-persistence",
35
46
  "--safe-mode"
36
47
  ];
48
+ if (options.onActivity !== undefined)
49
+ arguments_.push("--verbose", "--include-partial-messages");
50
+ if (options.access === "prompt-only") {
51
+ arguments_.push("--setting-sources", "", "--disallowed-tools", "Bash,Edit,Write,Read,Glob,Grep,WebFetch,WebSearch,Task,NotebookEdit,TodoRead,TodoWrite,ExitPlanMode,AskUserQuestion,Skill,EnterPlanMode,mcp__*");
52
+ }
37
53
  if (options.model !== undefined)
38
54
  arguments_.push("--model", options.model);
55
+ if (options.effort !== undefined)
56
+ arguments_.push("--effort", options.effort);
39
57
  if (options.jsonSchema !== undefined)
40
58
  arguments_.push("--json-schema", options.jsonSchema);
41
59
  return arguments_;
@@ -58,10 +76,16 @@ export const runClaude = Effect.fn("ClaudeCliLanguageModel.runClaude")(function*
58
76
  const command = makeCommand(options, makeArguments(options));
59
77
  const execution = Effect.gen(function* () {
60
78
  const handle = yield* spawner.spawn(command).pipe(Effect.mapError((cause) => transportFailure("process", "Unable to start Claude CLI", cause)));
79
+ if (options.onActivity !== undefined) {
80
+ yield* options.onActivity({ kind: "request", text: options.prompt });
81
+ yield* options.onActivity({ kind: "status", text: "Agent started" });
82
+ }
61
83
  const collected = yield* Effect.all({
62
84
  exitCode: handle.exitCode.pipe(Effect.mapError((cause) => transportFailure("process", "Unable to read Claude CLI exit status", cause))),
63
85
  stderr: collectBounded(handle.stderr, options.maxStderrBytes, "stderr", method),
64
- stdout: collectBounded(handle.stdout, options.maxOutputBytes, "stdout", method)
86
+ stdout: options.onActivity === undefined
87
+ ? collectBounded(handle.stdout, options.maxOutputBytes, "stdout", method)
88
+ : collectActivity(handle.stdout, options.maxOutputBytes, method, options.onActivity)
65
89
  }, { concurrency: "unbounded" });
66
90
  if (collected.exitCode !== ChildProcessSpawner.ExitCode(0)) {
67
91
  const diagnostic = redactDiagnostic(collected.stderr, options.cwd);
@@ -72,6 +96,8 @@ export const runClaude = Effect.fn("ClaudeCliLanguageModel.runClaude")(function*
72
96
  if (result.is_error) {
73
97
  return yield* transportFailure("process", "Claude CLI returned an error result", new ClaudeFailureCause({ reason: "error-result" }));
74
98
  }
99
+ if (options.onActivity !== undefined)
100
+ yield* options.onActivity({ kind: "status", text: "Answer received" });
75
101
  return result;
76
102
  }).pipe(Effect.scoped);
77
103
  return yield* execution.pipe(Effect.timeout(options.timeout), Effect.mapError((cause) => {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knpkv/ai-claude",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "Effect AI language model backed by the local Claude CLI",
5
5
  "license": "MIT",
6
6
  "author": "knpkv",
@@ -30,16 +30,16 @@
30
30
  "node": ">=26"
31
31
  },
32
32
  "peerDependencies": {
33
- "effect": "4.0.0-rc.109"
33
+ "effect": "4.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@effect/platform-node": "4.0.0-rc.109",
37
- "@effect/vitest": "4.0.0-rc.109",
36
+ "@effect/platform-node": "4.0.0",
37
+ "@effect/vitest": "4.0.0",
38
38
  "@types/node": "latest",
39
- "effect": "4.0.0-rc.109",
39
+ "effect": "4.0.0",
40
40
  "rimraf": "^6.1.3",
41
41
  "typescript": "npm:@typescript/typescript6@^6.0.2",
42
- "vitest": "^4.1.10"
42
+ "vitest": "^5.0.3"
43
43
  },
44
44
  "keywords": [
45
45
  "effect",
@@ -49,7 +49,7 @@
49
49
  ],
50
50
  "scripts": {
51
51
  "build": "rimraf dist && tsc && node scripts/validate-dist.mjs",
52
- "check": "tsc --noEmit",
52
+ "check": "tsc --noEmit && tsc --noEmit -p test/tsconfig.json",
53
53
  "clean": "rimraf dist *.tsbuildinfo",
54
54
  "lint": "eslint \"{src,test}/**/*.ts\"",
55
55
  "test": "vitest run",