cc-local-use 0.4.0 → 0.5.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
@@ -1,11 +1,12 @@
1
1
  # cc-local-use
2
2
 
3
- A TypeScript library for calling the local [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI programmatically, with sane defaults.
3
+ A TypeScript library for calling the local [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI or [Gemini CLI](https://github.com/google-gemini/gemini-cli) programmatically, with sane defaults.
4
4
 
5
5
  ## Requirements
6
6
 
7
7
  - Node.js >= 18
8
8
  - [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) installed and authenticated (`claude` command available in PATH)
9
+ - Or [Gemini CLI](https://github.com/google-gemini/gemini-cli) installed and authenticated (`gemini` command available in PATH)
9
10
 
10
11
  ## Installation
11
12
 
@@ -61,19 +62,39 @@ const reply = await cc.query("What is my name?", {
61
62
  console.log(reply); // "Your name is Alice."
62
63
  ```
63
64
 
65
+ ### Using Gemini CLI
66
+
67
+ ```js
68
+ import { createClient } from "cc-local-use";
69
+
70
+ const gemini = createClient({
71
+ provider: "gemini",
72
+ model: "gemini-2.5-pro",
73
+ });
74
+
75
+ const answer = await gemini.query("What is the capital of France?");
76
+ console.log(answer);
77
+ ```
78
+
79
+ The same `query`, `stream`, `queryJSON`, and `checkPromptInjection` methods work with both providers. Gemini results are normalized to the same `ResultEvent` shape (`cost_usd` and `num_turns` will be `0`).
80
+
64
81
  ## API
65
82
 
66
83
  ### `createClient(options?)`
67
84
 
68
- Creates a new Claude Code client.
85
+ Creates a new client.
69
86
 
70
87
  | Option | Type | Default | Description |
71
88
  |--------|------|---------|-------------|
72
- | `claudePath` | `string` | `"claude"` | Path to the `claude` executable |
89
+ | `provider` | `"claude" \| "gemini"` | `"claude"` | Which CLI to use |
90
+ | `cliPath` | `string` | auto | Path to the CLI executable (defaults to `"claude"` or `"gemini"`) |
91
+ | `claudePath` | `string` | `"claude"` | *Deprecated.* Use `cliPath` instead |
73
92
  | `model` | `string` | — | Default model for all calls |
74
93
  | `cwd` | `string` | `process.cwd()` | Default working directory for the subprocess |
94
+ | `dangerouslySkipPermissions` | `boolean` | `true` | `--dangerously-skip-permissions` (Claude) / `--yolo` (Gemini) |
95
+ | `promptInjectionGuard` | `boolean` | `false` | Check prompts for injection attempts before executing |
75
96
 
76
- Returns a `ClaudeCodeClient` with three methods:
97
+ Returns a `ClaudeCodeClient` with four methods:
77
98
 
78
99
  ---
79
100
 
@@ -103,10 +124,11 @@ All three methods accept an optional `QueryOptions` object:
103
124
  |--------|------|-------------|
104
125
  | `model` | `string` | Override the model for this call |
105
126
  | `systemPrompt` | `string` | System prompt prepended to the conversation |
106
- | `maxTurns` | `number` | Max number of agentic turns (`--max-turns`) |
127
+ | `maxTurns` | `number` | Max number of agentic turns (`--max-turns`). Claude only |
107
128
  | `resumeSession` | `string` | Resume an existing session by ID (`--resume`) |
108
129
  | `cwd` | `string` | Working directory for the subprocess |
109
130
  | `extraArgs` | `string[]` | Extra raw CLI arguments appended verbatim |
131
+ | `promptInjectionGuard` | `boolean` | Override client-level injection guard setting |
110
132
 
111
133
  ---
112
134
 
@@ -154,7 +176,71 @@ try {
154
176
  }
155
177
  ```
156
178
 
179
+ ## Docker で使用する場合
180
+
181
+ Docker コンテナ内で Claude Code CLI を実行する場合、**root ユーザーのままだとコマンドが正常に動作しません**。これは Claude Code がセキュリティ上の理由から root での実行を制限しているためです。
182
+
183
+ ### 非 root ユーザーを作成する(推奨)
184
+
185
+ Dockerfile で専用ユーザーを作成して切り替えます。
186
+
187
+ ```dockerfile
188
+ FROM node:20-slim
189
+
190
+ # Claude Code CLI のインストール
191
+ RUN npm install -g @anthropic-ai/claude-code
192
+
193
+ # 非 root ユーザーを作成
194
+ RUN groupadd -r appuser && useradd -r -g appuser -m appuser
195
+
196
+ WORKDIR /app
197
+ COPY . .
198
+ RUN npm install
199
+
200
+ # ユーザーを切り替え
201
+ USER appuser
202
+
203
+ CMD ["node", "index.js"]
204
+ ```
205
+
206
+ ### 環境変数で root 実行を許可する
207
+
208
+ 非 root ユーザーへの切り替えが難しい場合は、環境変数 `CLAUDE_CODE_SKIP_ROOT_CHECK=1` を設定することで root での実行を許可できます。
209
+
210
+ ```dockerfile
211
+ FROM node:20-slim
212
+
213
+ RUN npm install -g @anthropic-ai/claude-code
214
+
215
+ WORKDIR /app
216
+ COPY . .
217
+ RUN npm install
218
+
219
+ ENV CLAUDE_CODE_SKIP_ROOT_CHECK=1
220
+
221
+ CMD ["node", "index.js"]
222
+ ```
223
+
224
+ または `docker run` 時に指定します。
225
+
226
+ ```bash
227
+ docker run -e CLAUDE_CODE_SKIP_ROOT_CHECK=1 your-image
228
+ ```
229
+
230
+ > **注意**: セキュリティの観点から、可能な限り非 root ユーザーでの実行を推奨します。
231
+
232
+ ## Provider differences
233
+
234
+ | Feature | Claude | Gemini |
235
+ |---------|--------|--------|
236
+ | Non-interactive mode | `--print` | `-p` |
237
+ | Permission skip | `--dangerously-skip-permissions` | `--yolo` |
238
+ | System prompt | `--system-prompt` flag | Temp file via `GEMINI_SYSTEM_MD` env var |
239
+ | Max turns | `--max-turns` flag | Not supported via CLI |
240
+ | `cost_usd` | Reported | Always `0` |
241
+ | `num_turns` | Reported | Always `0` |
242
+
157
243
  ## Notes
158
244
 
159
- - All calls automatically pass `--dangerously-skip-permissions` and `--print` to the CLI.
160
- - The `claude` process inherits the current process's environment variables (`process.env`).
245
+ - All calls automatically pass the non-interactive flag and permission-skip flag to the CLI.
246
+ - The CLI process inherits the current process's environment variables (`process.env`).
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export type Provider = "claude" | "gemini";
1
2
  export interface TextBlock {
2
3
  type: "text";
3
4
  text: string;
@@ -25,10 +26,12 @@ export interface ResultEvent {
25
26
  subtype: "success" | "error";
26
27
  is_error: boolean;
27
28
  result: string;
29
+ /** API cost in USD. Always `0` for Gemini. */
28
30
  cost_usd: number;
29
31
  duration_ms: number;
30
32
  duration_api_ms: number;
31
33
  session_id: string;
34
+ /** Number of agentic turns. Always `0` for Gemini. */
32
35
  num_turns: number;
33
36
  }
34
37
  export interface SystemEvent {
@@ -43,13 +46,24 @@ export interface PromptInjectionResult {
43
46
  reason: string;
44
47
  }
45
48
  export interface ClientOptions {
46
- /** Path to the claude executable. Defaults to "claude". */
49
+ /** Provider to use. Defaults to `"claude"`. */
50
+ provider?: Provider;
51
+ /** Path to the CLI executable. Defaults to `"claude"` or `"gemini"` based on provider. */
52
+ cliPath?: string;
53
+ /**
54
+ * Path to the claude executable.
55
+ * @deprecated Use `cliPath` instead.
56
+ */
47
57
  claudePath?: string;
48
58
  /** Default model to use for all calls. */
49
59
  model?: string;
50
60
  /** Default working directory for the subprocess. */
51
61
  cwd?: string;
52
- /** Pass `--dangerously-skip-permissions` to the CLI. Defaults to `true`. */
62
+ /**
63
+ * Skip permission checks.
64
+ * Maps to `--dangerously-skip-permissions` (Claude) or `--yolo` (Gemini).
65
+ * Defaults to `true`.
66
+ */
53
67
  dangerouslySkipPermissions?: boolean;
54
68
  /** Check prompts for injection attempts before executing. Defaults to `false`. */
55
69
  promptInjectionGuard?: boolean;
@@ -59,9 +73,9 @@ export interface QueryOptions {
59
73
  model?: string;
60
74
  /** System prompt prepended to the conversation. */
61
75
  systemPrompt?: string;
62
- /** Max number of agentic turns (--max-turns). */
76
+ /** Max number of agentic turns (`--max-turns`). Claude only; ignored for Gemini. */
63
77
  maxTurns?: number;
64
- /** Resume an existing session by ID (--resume). */
78
+ /** Resume an existing session by ID (`--resume`). */
65
79
  resumeSession?: string;
66
80
  /** Working directory for the subprocess. */
67
81
  cwd?: string;
@@ -115,13 +129,22 @@ export type ClaudeCodeClient = {
115
129
  checkPromptInjection: (prompt: string) => Promise<PromptInjectionResult>;
116
130
  };
117
131
  /**
118
- * Create a Claude Code client. All calls automatically include `--print`.
119
- * `--dangerously-skip-permissions` is included by default but can be
120
- * disabled via `dangerouslySkipPermissions: false`.
132
+ * Create a CLI client for Claude Code or Gemini CLI.
133
+ * All calls automatically include the non-interactive flag
134
+ * (`--print` for Claude, `-p` for Gemini).
135
+ *
136
+ * Permission skipping (`--dangerously-skip-permissions` / `--yolo`)
137
+ * is included by default but can be disabled via
138
+ * `dangerouslySkipPermissions: false`.
121
139
  *
122
140
  * @example
123
141
  * import { createClient } from "cc-local-use";
124
- * const cc = createClient({ model: "claude-opus-4-6" });
142
+ *
143
+ * // Claude (default)
144
+ * const claude = createClient({ model: "claude-opus-4-6" });
145
+ *
146
+ * // Gemini
147
+ * const gemini = createClient({ provider: "gemini", model: "gemini-2.5-pro" });
125
148
  */
126
149
  export declare const createClient: (clientOptions?: ClientOptions) => ClaudeCodeClient;
127
150
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { createInterface } from "node:readline";
3
+ import { writeFileSync, unlinkSync } from "node:fs";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
3
6
  const makeError = (message, exitCode, stderr, stdout) => {
4
7
  const err = new Error(message);
5
8
  err.name = "ClaudeCodeError";
@@ -15,28 +18,158 @@ const makeInjectionError = (result) => {
15
18
  return err;
16
19
  };
17
20
  // ──────────────────────────────────────────────
18
- // Internal helpers (module-level pure functions)
21
+ // Claude driver
19
22
  // ──────────────────────────────────────────────
20
- const buildArgs = (clientModel, options, outputFormat, skipPermissions) => {
21
- const args = ["--output-format", outputFormat, "--print"];
22
- if (skipPermissions)
23
- args.unshift("--dangerously-skip-permissions");
24
- const model = options.model ?? clientModel;
25
- if (model)
26
- args.push("--model", model);
27
- if (options.systemPrompt)
28
- args.push("--system-prompt", options.systemPrompt);
29
- if (options.maxTurns != null)
30
- args.push("--max-turns", String(options.maxTurns));
31
- if (options.resumeSession)
32
- args.push("--resume", options.resumeSession);
33
- if (options.extraArgs)
34
- args.push(...options.extraArgs);
35
- return args;
23
+ const claudeDriver = {
24
+ name: "claude",
25
+ defaultCliPath: "claude",
26
+ buildSpawnConfig(prompt, clientModel, options, outputFormat, skipPermissions) {
27
+ const args = ["--output-format", outputFormat, "--print"];
28
+ if (skipPermissions)
29
+ args.unshift("--dangerously-skip-permissions");
30
+ const model = options.model ?? clientModel;
31
+ if (model)
32
+ args.push("--model", model);
33
+ if (options.systemPrompt)
34
+ args.push("--system-prompt", options.systemPrompt);
35
+ if (options.maxTurns != null)
36
+ args.push("--max-turns", String(options.maxTurns));
37
+ if (options.resumeSession)
38
+ args.push("--resume", options.resumeSession);
39
+ if (options.extraArgs)
40
+ args.push(...options.extraArgs);
41
+ args.push(prompt);
42
+ return { args, env: process.env };
43
+ },
44
+ parseJsonResult(stdout) {
45
+ return JSON.parse(stdout);
46
+ },
47
+ parseStreamLine(line) {
48
+ if (!line.trim())
49
+ return null;
50
+ let event;
51
+ try {
52
+ event = JSON.parse(line);
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ if (event.type === "assistant") {
58
+ const texts = [];
59
+ for (const block of event.message.content) {
60
+ if (block.type === "text")
61
+ texts.push(block.text);
62
+ }
63
+ return texts.length > 0 ? { kind: "text", text: texts.join("") } : null;
64
+ }
65
+ if (event.type === "result") {
66
+ return { kind: "result", event: event };
67
+ }
68
+ return null;
69
+ },
36
70
  };
37
- const spawnClaude = (claudePath, defaultCwd, prompt, args, options) => spawn(claudePath, [...args, prompt], {
71
+ const geminiDriver = {
72
+ name: "gemini",
73
+ defaultCliPath: "gemini",
74
+ buildSpawnConfig(prompt, clientModel, options, outputFormat, skipPermissions) {
75
+ const args = ["--output-format", outputFormat];
76
+ if (skipPermissions)
77
+ args.push("--yolo");
78
+ const model = options.model ?? clientModel;
79
+ if (model)
80
+ args.push("--model", model);
81
+ // maxTurns is not supported via CLI flag in Gemini (settings.json only)
82
+ if (options.resumeSession)
83
+ args.push("--resume", options.resumeSession);
84
+ if (options.extraArgs)
85
+ args.push(...options.extraArgs);
86
+ args.push("-p", prompt);
87
+ // System prompt: Gemini uses GEMINI_SYSTEM_MD env var pointing to a file
88
+ let cleanup;
89
+ let env = process.env;
90
+ if (options.systemPrompt) {
91
+ const tmpFile = join(tmpdir(), `gemini-sys-${Date.now()}-${Math.random().toString(36).slice(2)}.md`);
92
+ writeFileSync(tmpFile, options.systemPrompt, "utf-8");
93
+ env = { ...process.env, GEMINI_SYSTEM_MD: tmpFile };
94
+ cleanup = () => {
95
+ try {
96
+ unlinkSync(tmpFile);
97
+ }
98
+ catch {
99
+ /* best-effort cleanup */
100
+ }
101
+ };
102
+ }
103
+ return { args, env, cleanup };
104
+ },
105
+ parseJsonResult(stdout) {
106
+ const raw = JSON.parse(stdout);
107
+ return {
108
+ type: "result",
109
+ subtype: (raw.error ? "error" : "success"),
110
+ is_error: !!raw.error,
111
+ result: raw.response ?? raw.error?.message ?? "",
112
+ cost_usd: 0,
113
+ duration_ms: raw.stats?.duration_ms ?? 0,
114
+ duration_api_ms: raw.stats?.duration_ms ?? 0,
115
+ session_id: raw.session_id ?? "",
116
+ num_turns: 0,
117
+ };
118
+ },
119
+ parseStreamLine(line) {
120
+ if (!line.trim())
121
+ return null;
122
+ let event;
123
+ try {
124
+ event = JSON.parse(line);
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ if (event.type === "init" && event.session_id) {
130
+ return { kind: "meta", sessionId: event.session_id };
131
+ }
132
+ if (event.type === "message" && event.role === "assistant" && event.content) {
133
+ return { kind: "text", text: event.content };
134
+ }
135
+ if (event.type === "result") {
136
+ return {
137
+ kind: "result",
138
+ event: {
139
+ type: "result",
140
+ subtype: (event.status === "success" ? "success" : "error"),
141
+ is_error: event.status !== "success",
142
+ result: "",
143
+ cost_usd: 0,
144
+ duration_ms: event.stats?.duration_ms ?? 0,
145
+ duration_api_ms: event.stats?.duration_ms ?? 0,
146
+ session_id: "",
147
+ num_turns: 0,
148
+ },
149
+ };
150
+ }
151
+ return null;
152
+ },
153
+ };
154
+ // ──────────────────────────────────────────────
155
+ // Driver selection
156
+ // ──────────────────────────────────────────────
157
+ const getDriver = (provider) => {
158
+ switch (provider) {
159
+ case "claude":
160
+ return claudeDriver;
161
+ case "gemini":
162
+ return geminiDriver;
163
+ default:
164
+ throw new Error(`Unknown provider: ${provider}`);
165
+ }
166
+ };
167
+ // ──────────────────────────────────────────────
168
+ // Internal helpers
169
+ // ──────────────────────────────────────────────
170
+ const spawnCli = (cliPath, defaultCwd, config, options) => spawn(cliPath, config.args, {
38
171
  cwd: options.cwd ?? defaultCwd ?? process.cwd(),
39
- env: process.env,
172
+ env: config.env,
40
173
  stdio: ["ignore", "pipe", "pipe"],
41
174
  });
42
175
  const INJECTION_CHECK_SYSTEM_PROMPT = [
@@ -53,17 +186,22 @@ const INJECTION_CHECK_SYSTEM_PROMPT = [
53
186
  '{"flagged": true, "reason": "brief description"} if injection is detected',
54
187
  '{"flagged": false, "reason": "no injection detected"} if the text is safe',
55
188
  ].join("\n");
56
- const runInjectionCheck = (claudePath, defaultCwd, defaultModel, skipPermissions, prompt) => {
57
- const args = buildArgs(defaultModel, { systemPrompt: INJECTION_CHECK_SYSTEM_PROMPT, maxTurns: 1 }, "text", skipPermissions);
58
- const child = spawnClaude(claudePath, defaultCwd, prompt, args, {});
189
+ const runInjectionCheck = (driver, cliPath, defaultCwd, defaultModel, skipPermissions, prompt) => {
190
+ const config = driver.buildSpawnConfig(prompt, defaultModel, { systemPrompt: INJECTION_CHECK_SYSTEM_PROMPT, maxTurns: 1 }, "text", skipPermissions);
191
+ const child = spawnCli(cliPath, defaultCwd, config, {});
59
192
  let stdout = "";
60
193
  let stderr = "";
61
- child.stdout.on("data", (chunk) => { stdout += chunk.toString(); });
62
- child.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
194
+ child.stdout.on("data", (chunk) => {
195
+ stdout += chunk.toString();
196
+ });
197
+ child.stderr.on("data", (chunk) => {
198
+ stderr += chunk.toString();
199
+ });
63
200
  return new Promise((resolve, reject) => {
64
201
  child.on("close", (code) => {
202
+ config.cleanup?.();
65
203
  if (code !== 0) {
66
- reject(makeError(`Injection check failed: claude exited with code ${code}`, code, stderr, stdout));
204
+ reject(makeError(`Injection check failed: ${driver.name} exited with code ${code}`, code, stderr, stdout));
67
205
  return;
68
206
  }
69
207
  try {
@@ -74,120 +212,168 @@ const runInjectionCheck = (claudePath, defaultCwd, defaultModel, skipPermissions
74
212
  resolve({ flagged: false, reason: `Unable to parse check response: ${stdout.trim()}` });
75
213
  }
76
214
  });
77
- child.on("error", reject);
215
+ child.on("error", (err) => {
216
+ config.cleanup?.();
217
+ reject(err);
218
+ });
78
219
  });
79
220
  };
80
221
  // ──────────────────────────────────────────────
81
222
  // Factory
82
223
  // ──────────────────────────────────────────────
83
224
  /**
84
- * Create a Claude Code client. All calls automatically include `--print`.
85
- * `--dangerously-skip-permissions` is included by default but can be
86
- * disabled via `dangerouslySkipPermissions: false`.
225
+ * Create a CLI client for Claude Code or Gemini CLI.
226
+ * All calls automatically include the non-interactive flag
227
+ * (`--print` for Claude, `-p` for Gemini).
228
+ *
229
+ * Permission skipping (`--dangerously-skip-permissions` / `--yolo`)
230
+ * is included by default but can be disabled via
231
+ * `dangerouslySkipPermissions: false`.
87
232
  *
88
233
  * @example
89
234
  * import { createClient } from "cc-local-use";
90
- * const cc = createClient({ model: "claude-opus-4-6" });
235
+ *
236
+ * // Claude (default)
237
+ * const claude = createClient({ model: "claude-opus-4-6" });
238
+ *
239
+ * // Gemini
240
+ * const gemini = createClient({ provider: "gemini", model: "gemini-2.5-pro" });
91
241
  */
92
242
  export const createClient = (clientOptions = {}) => {
93
- const claudePath = clientOptions.claudePath ?? "claude";
243
+ const provider = clientOptions.provider ?? "claude";
244
+ const driver = getDriver(provider);
245
+ const cliPath = clientOptions.cliPath ?? clientOptions.claudePath ?? driver.defaultCliPath;
94
246
  const defaultModel = clientOptions.model;
95
247
  const defaultCwd = clientOptions.cwd;
96
248
  const skipPermissions = clientOptions.dangerouslySkipPermissions ?? true;
97
249
  const guardByDefault = clientOptions.promptInjectionGuard ?? false;
98
250
  const guardIfNeeded = async (prompt, options) => {
99
251
  if (options.promptInjectionGuard ?? guardByDefault) {
100
- const result = await runInjectionCheck(claudePath, defaultCwd, defaultModel, skipPermissions, prompt);
252
+ const result = await runInjectionCheck(driver, cliPath, defaultCwd, defaultModel, skipPermissions, prompt);
101
253
  if (result.flagged)
102
254
  throw makeInjectionError(result);
103
255
  }
104
256
  };
105
257
  const query = async (prompt, options = {}) => {
106
258
  await guardIfNeeded(prompt, options);
107
- const args = buildArgs(defaultModel, options, "text", skipPermissions);
108
- const child = spawnClaude(claudePath, defaultCwd, prompt, args, options);
259
+ const config = driver.buildSpawnConfig(prompt, defaultModel, options, "text", skipPermissions);
260
+ const child = spawnCli(cliPath, defaultCwd, config, options);
109
261
  let stdout = "";
110
262
  let stderr = "";
111
- child.stdout.on("data", (chunk) => { stdout += chunk.toString(); });
112
- child.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
263
+ child.stdout.on("data", (chunk) => {
264
+ stdout += chunk.toString();
265
+ });
266
+ child.stderr.on("data", (chunk) => {
267
+ stderr += chunk.toString();
268
+ });
113
269
  return new Promise((resolve, reject) => {
114
270
  child.on("close", (code) => {
271
+ config.cleanup?.();
115
272
  if (code !== 0) {
116
- reject(makeError(`claude exited with code ${code}`, code, stderr, stdout));
273
+ reject(makeError(`${driver.name} exited with code ${code}`, code, stderr, stdout));
117
274
  }
118
275
  else {
119
276
  resolve(stdout.trimEnd());
120
277
  }
121
278
  });
122
- child.on("error", reject);
279
+ child.on("error", (err) => {
280
+ config.cleanup?.();
281
+ reject(err);
282
+ });
123
283
  });
124
284
  };
125
285
  async function* stream(prompt, options = {}) {
126
286
  await guardIfNeeded(prompt, options);
127
- const args = buildArgs(defaultModel, options, "stream-json", skipPermissions);
128
- const child = spawnClaude(claudePath, defaultCwd, prompt, args, options);
287
+ const config = driver.buildSpawnConfig(prompt, defaultModel, options, "stream-json", skipPermissions);
288
+ const child = spawnCli(cliPath, defaultCwd, config, options);
129
289
  const rl = createInterface({ input: child.stdout, crlfDelay: Infinity });
130
290
  let stdoutBuf = "";
131
291
  let stderrBuf = "";
132
- child.stdout.on("data", (chunk) => { stdoutBuf += chunk.toString(); });
133
- child.stderr.on("data", (chunk) => { stderrBuf += chunk.toString(); });
292
+ child.stdout.on("data", (chunk) => {
293
+ stdoutBuf += chunk.toString();
294
+ });
295
+ child.stderr.on("data", (chunk) => {
296
+ stderrBuf += chunk.toString();
297
+ });
134
298
  let resultEvent;
299
+ let sessionId = "";
300
+ let accumulatedText = "";
135
301
  let exitCode = null;
136
302
  const exitPromise = new Promise((resolve) => {
137
- child.on("close", (code) => { exitCode = code; resolve(); });
138
- child.on("error", (err) => { stderrBuf += String(err); resolve(); });
303
+ child.on("close", (code) => {
304
+ exitCode = code;
305
+ config.cleanup?.();
306
+ resolve();
307
+ });
308
+ child.on("error", (err) => {
309
+ stderrBuf += String(err);
310
+ config.cleanup?.();
311
+ resolve();
312
+ });
139
313
  });
140
314
  for await (const line of rl) {
141
- if (!line.trim())
142
- continue;
143
- let event;
144
- try {
145
- event = JSON.parse(line);
146
- }
147
- catch {
315
+ const parsed = driver.parseStreamLine(line);
316
+ if (!parsed)
148
317
  continue;
318
+ if (parsed.kind === "text") {
319
+ accumulatedText += parsed.text;
320
+ yield parsed.text;
149
321
  }
150
- if (event.type === "assistant") {
151
- for (const block of event.message.content) {
152
- if (block.type === "text")
153
- yield block.text;
154
- }
322
+ else if (parsed.kind === "result") {
323
+ resultEvent = parsed.event;
155
324
  }
156
- else if (event.type === "result") {
157
- resultEvent = event;
325
+ else if (parsed.kind === "meta" && parsed.sessionId) {
326
+ sessionId = parsed.sessionId;
158
327
  }
159
328
  }
160
329
  await exitPromise;
161
330
  if (exitCode !== 0) {
162
- throw makeError(`claude exited with code ${exitCode}`, exitCode, stderrBuf, stdoutBuf);
331
+ throw makeError(`${driver.name} exited with code ${exitCode}`, exitCode, stderrBuf, stdoutBuf);
332
+ }
333
+ // Patch result for providers that don't include full data in the result event
334
+ if (resultEvent) {
335
+ if (!resultEvent.result && accumulatedText) {
336
+ resultEvent = { ...resultEvent, result: accumulatedText };
337
+ }
338
+ if (!resultEvent.session_id && sessionId) {
339
+ resultEvent = { ...resultEvent, session_id: sessionId };
340
+ }
163
341
  }
164
342
  return resultEvent;
165
343
  }
166
344
  const queryJSON = async (prompt, options = {}) => {
167
345
  await guardIfNeeded(prompt, options);
168
- const args = buildArgs(defaultModel, options, "json", skipPermissions);
169
- const child = spawnClaude(claudePath, defaultCwd, prompt, args, options);
346
+ const config = driver.buildSpawnConfig(prompt, defaultModel, options, "json", skipPermissions);
347
+ const child = spawnCli(cliPath, defaultCwd, config, options);
170
348
  let stdout = "";
171
349
  let stderr = "";
172
- child.stdout.on("data", (chunk) => { stdout += chunk.toString(); });
173
- child.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
350
+ child.stdout.on("data", (chunk) => {
351
+ stdout += chunk.toString();
352
+ });
353
+ child.stderr.on("data", (chunk) => {
354
+ stderr += chunk.toString();
355
+ });
174
356
  return new Promise((resolve, reject) => {
175
357
  child.on("close", (code) => {
358
+ config.cleanup?.();
176
359
  if (code !== 0) {
177
- reject(makeError(`claude exited with code ${code}`, code, stderr, stdout));
360
+ reject(makeError(`${driver.name} exited with code ${code}`, code, stderr, stdout));
178
361
  return;
179
362
  }
180
363
  try {
181
- resolve(JSON.parse(stdout));
364
+ resolve(driver.parseJsonResult(stdout));
182
365
  }
183
366
  catch (e) {
184
367
  reject(makeError(`Failed to parse JSON output: ${e}`, code, stderr, stdout));
185
368
  }
186
369
  });
187
- child.on("error", reject);
370
+ child.on("error", (err) => {
371
+ config.cleanup?.();
372
+ reject(err);
373
+ });
188
374
  });
189
375
  };
190
- const checkPromptInjection = (prompt) => runInjectionCheck(claudePath, defaultCwd, defaultModel, skipPermissions, prompt);
376
+ const checkPromptInjection = (prompt) => runInjectionCheck(driver, cliPath, defaultCwd, defaultModel, skipPermissions, prompt);
191
377
  return { query, stream, queryJSON, checkPromptInjection };
192
378
  };
193
379
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAsGhD,MAAM,SAAS,GAAG,CAChB,OAAe,EACf,QAAuB,EACvB,MAAc,EACd,MAAc,EACG,EAAE;IACnB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAoB,CAAC;IAClD,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAC7B,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAA6B,EAAwB,EAAE;IACjF,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,MAAM,EAAE,CAAyB,CAAC;IAC7F,GAAG,CAAC,IAAI,GAAG,sBAAsB,CAAC;IAClC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,iDAAiD;AACjD,iDAAiD;AACjD,iDAAiD;AAEjD,MAAM,SAAS,GAAG,CAChB,WAA+B,EAC/B,OAAqB,EACrB,YAAoB,EACpB,eAAwB,EACd,EAAE;IACZ,MAAM,IAAI,GAAa,CAAC,iBAAiB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAEpE,IAAI,eAAe;QAAE,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;IAC3C,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,UAAkB,EAClB,UAA8B,EAC9B,MAAc,EACd,IAAc,EACd,OAAqB,EACrB,EAAE,CACF,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE;IACnC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;IAC/C,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;CAClC,CAAC,CAAC;AAEL,MAAM,6BAA6B,GAAG;IACpC,mIAAmI;IACnI,EAAE;IACF,qCAAqC;IACrC,yDAAyD;IACzD,sEAAsE;IACtE,2DAA2D;IAC3D,iFAAiF;IACjF,mEAAmE;IACnE,EAAE;IACF,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;CAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,iBAAiB,GAAG,CACxB,UAAkB,EAClB,UAA8B,EAC9B,YAAgC,EAChC,eAAwB,EACxB,MAAc,EACkB,EAAE;IAClC,MAAM,IAAI,GAAG,SAAS,CACpB,YAAY,EACZ,EAAE,YAAY,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC5D,MAAM,EACN,eAAe,CAChB,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,SAAS,CAAC,mDAAmD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACnG,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAiDF,iDAAiD;AACjD,UAAU;AACV,iDAAiD;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,gBAA+B,EAAE,EAAoB,EAAE;IAClF,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,IAAI,QAAQ,CAAC;IACxD,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;IACzC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;IACrC,MAAM,eAAe,GAAG,aAAa,CAAC,0BAA0B,IAAI,IAAI,CAAC;IACzE,MAAM,cAAc,GAAG,aAAa,CAAC,oBAAoB,IAAI,KAAK,CAAC;IAEnE,MAAM,aAAa,GAAG,KAAK,EAAE,MAAc,EAAE,OAAqB,EAAE,EAAE;QACpE,IAAI,OAAO,CAAC,oBAAoB,IAAI,cAAc,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;YACtG,IAAI,MAAM,CAAC,OAAO;gBAAE,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,EAAE,MAAc,EAAE,UAAwB,EAAE,EAAmB,EAAE;QAClF,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,SAAS,CAAC,2BAA2B,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,SAAS,CAAC,CAAC,MAAM,CACpB,MAAc,EACd,UAAwB,EAAE;QAE1B,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,IAAI,WAAoC,CAAC;QACzC,IAAI,QAAQ,GAAkB,IAAI,CAAC;QAEnC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,KAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAK,KAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;wBAAE,MAAM,KAAK,CAAC,IAAI,CAAC;gBAC9C,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,WAAW,GAAG,KAAoB,CAAC;YACrC,CAAC;QACH,CAAC;QAED,MAAM,WAAW,CAAC;QAElB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,SAAS,CAAC,2BAA2B,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,WAAY,CAAC;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,EAAE,MAAc,EAAE,UAAwB,EAAE,EAAwB,EAAE;QAC3F,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,SAAS,CAAC,2BAA2B,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC3E,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAgB,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAkC,EAAE,CAC9E,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAEnF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AAC5D,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-local-use",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "A TypeScript library for calling local Claude Code CLI with sane defaults",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,4 +21,4 @@
21
21
  "engines": {
22
22
  "node": ">=18"
23
23
  }
24
- }
24
+ }