cc-local-use 0.4.0 → 0.5.1
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 +93 -7
- package/dist/index.d.ts +33 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +283 -67
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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
|
|
85
|
+
Creates a new client.
|
|
69
86
|
|
|
70
87
|
| Option | Type | Default | Description |
|
|
71
88
|
|--------|------|---------|-------------|
|
|
72
|
-
| `
|
|
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
|
|
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
|
|
160
|
-
- The
|
|
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,25 +46,38 @@ export interface PromptInjectionResult {
|
|
|
43
46
|
reason: string;
|
|
44
47
|
}
|
|
45
48
|
export interface ClientOptions {
|
|
46
|
-
/**
|
|
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
|
-
/**
|
|
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;
|
|
70
|
+
/** Enable debug logging to stderr. Logs spawned commands, stdout, and stderr from the CLI process. Defaults to `false`. */
|
|
71
|
+
debug?: boolean;
|
|
56
72
|
}
|
|
57
73
|
export interface QueryOptions {
|
|
58
74
|
/** Override the model for this call. */
|
|
59
75
|
model?: string;
|
|
60
76
|
/** System prompt prepended to the conversation. */
|
|
61
77
|
systemPrompt?: string;
|
|
62
|
-
/** Max number of agentic turns (
|
|
78
|
+
/** Max number of agentic turns (`--max-turns`). Claude only; ignored for Gemini. */
|
|
63
79
|
maxTurns?: number;
|
|
64
|
-
/** Resume an existing session by ID (
|
|
80
|
+
/** Resume an existing session by ID (`--resume`). */
|
|
65
81
|
resumeSession?: string;
|
|
66
82
|
/** Working directory for the subprocess. */
|
|
67
83
|
cwd?: string;
|
|
@@ -115,13 +131,22 @@ export type ClaudeCodeClient = {
|
|
|
115
131
|
checkPromptInjection: (prompt: string) => Promise<PromptInjectionResult>;
|
|
116
132
|
};
|
|
117
133
|
/**
|
|
118
|
-
* Create a
|
|
119
|
-
*
|
|
120
|
-
*
|
|
134
|
+
* Create a CLI client for Claude Code or Gemini CLI.
|
|
135
|
+
* All calls automatically include the non-interactive flag
|
|
136
|
+
* (`--print` for Claude, `-p` for Gemini).
|
|
137
|
+
*
|
|
138
|
+
* Permission skipping (`--dangerously-skip-permissions` / `--yolo`)
|
|
139
|
+
* is included by default but can be disabled via
|
|
140
|
+
* `dangerouslySkipPermissions: false`.
|
|
121
141
|
*
|
|
122
142
|
* @example
|
|
123
143
|
* import { createClient } from "cc-local-use";
|
|
124
|
-
*
|
|
144
|
+
*
|
|
145
|
+
* // Claude (default)
|
|
146
|
+
* const claude = createClient({ model: "claude-opus-4-6" });
|
|
147
|
+
*
|
|
148
|
+
* // Gemini
|
|
149
|
+
* const gemini = createClient({ provider: "gemini", model: "gemini-2.5-pro" });
|
|
125
150
|
*/
|
|
126
151
|
export declare const createClient: (clientOptions?: ClientOptions) => ClaudeCodeClient;
|
|
127
152
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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,163 @@ const makeInjectionError = (result) => {
|
|
|
15
18
|
return err;
|
|
16
19
|
};
|
|
17
20
|
// ──────────────────────────────────────────────
|
|
18
|
-
//
|
|
21
|
+
// Claude driver
|
|
19
22
|
// ──────────────────────────────────────────────
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
+
},
|
|
70
|
+
};
|
|
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 PREFIX = "[cc-local-use DEBUG]";
|
|
171
|
+
const debugLog = (enabled, ...args) => {
|
|
172
|
+
if (enabled)
|
|
173
|
+
console.error(PREFIX, ...args);
|
|
36
174
|
};
|
|
37
|
-
const
|
|
175
|
+
const spawnCli = (cliPath, defaultCwd, config, options) => spawn(cliPath, config.args, {
|
|
38
176
|
cwd: options.cwd ?? defaultCwd ?? process.cwd(),
|
|
39
|
-
env:
|
|
177
|
+
env: config.env,
|
|
40
178
|
stdio: ["ignore", "pipe", "pipe"],
|
|
41
179
|
});
|
|
42
180
|
const INJECTION_CHECK_SYSTEM_PROMPT = [
|
|
@@ -53,17 +191,28 @@ const INJECTION_CHECK_SYSTEM_PROMPT = [
|
|
|
53
191
|
'{"flagged": true, "reason": "brief description"} if injection is detected',
|
|
54
192
|
'{"flagged": false, "reason": "no injection detected"} if the text is safe',
|
|
55
193
|
].join("\n");
|
|
56
|
-
const runInjectionCheck = (
|
|
57
|
-
const
|
|
58
|
-
|
|
194
|
+
const runInjectionCheck = (driver, cliPath, defaultCwd, defaultModel, skipPermissions, prompt, debug) => {
|
|
195
|
+
const config = driver.buildSpawnConfig(prompt, defaultModel, { systemPrompt: INJECTION_CHECK_SYSTEM_PROMPT, maxTurns: 1 }, "text", skipPermissions);
|
|
196
|
+
debugLog(debug, `injection check spawned: ${cliPath} ${config.args.join(" ")}`);
|
|
197
|
+
const child = spawnCli(cliPath, defaultCwd, config, {});
|
|
59
198
|
let stdout = "";
|
|
60
199
|
let stderr = "";
|
|
61
|
-
child.stdout.on("data", (chunk) => {
|
|
62
|
-
|
|
200
|
+
child.stdout.on("data", (chunk) => {
|
|
201
|
+
const text = chunk.toString();
|
|
202
|
+
debugLog(debug, "injection check stdout:", text.substring(0, 300));
|
|
203
|
+
stdout += text;
|
|
204
|
+
});
|
|
205
|
+
child.stderr.on("data", (chunk) => {
|
|
206
|
+
const text = chunk.toString();
|
|
207
|
+
debugLog(debug, "injection check stderr:", text.substring(0, 300));
|
|
208
|
+
stderr += text;
|
|
209
|
+
});
|
|
63
210
|
return new Promise((resolve, reject) => {
|
|
64
211
|
child.on("close", (code) => {
|
|
212
|
+
debugLog(debug, `injection check exited with code ${code}`);
|
|
213
|
+
config.cleanup?.();
|
|
65
214
|
if (code !== 0) {
|
|
66
|
-
reject(makeError(`Injection check failed:
|
|
215
|
+
reject(makeError(`Injection check failed: ${driver.name} exited with code ${code}`, code, stderr, stdout));
|
|
67
216
|
return;
|
|
68
217
|
}
|
|
69
218
|
try {
|
|
@@ -74,120 +223,187 @@ const runInjectionCheck = (claudePath, defaultCwd, defaultModel, skipPermissions
|
|
|
74
223
|
resolve({ flagged: false, reason: `Unable to parse check response: ${stdout.trim()}` });
|
|
75
224
|
}
|
|
76
225
|
});
|
|
77
|
-
child.on("error",
|
|
226
|
+
child.on("error", (err) => {
|
|
227
|
+
config.cleanup?.();
|
|
228
|
+
reject(err);
|
|
229
|
+
});
|
|
78
230
|
});
|
|
79
231
|
};
|
|
80
232
|
// ──────────────────────────────────────────────
|
|
81
233
|
// Factory
|
|
82
234
|
// ──────────────────────────────────────────────
|
|
83
235
|
/**
|
|
84
|
-
* Create a
|
|
85
|
-
*
|
|
86
|
-
*
|
|
236
|
+
* Create a CLI client for Claude Code or Gemini CLI.
|
|
237
|
+
* All calls automatically include the non-interactive flag
|
|
238
|
+
* (`--print` for Claude, `-p` for Gemini).
|
|
239
|
+
*
|
|
240
|
+
* Permission skipping (`--dangerously-skip-permissions` / `--yolo`)
|
|
241
|
+
* is included by default but can be disabled via
|
|
242
|
+
* `dangerouslySkipPermissions: false`.
|
|
87
243
|
*
|
|
88
244
|
* @example
|
|
89
245
|
* import { createClient } from "cc-local-use";
|
|
90
|
-
*
|
|
246
|
+
*
|
|
247
|
+
* // Claude (default)
|
|
248
|
+
* const claude = createClient({ model: "claude-opus-4-6" });
|
|
249
|
+
*
|
|
250
|
+
* // Gemini
|
|
251
|
+
* const gemini = createClient({ provider: "gemini", model: "gemini-2.5-pro" });
|
|
91
252
|
*/
|
|
92
253
|
export const createClient = (clientOptions = {}) => {
|
|
93
|
-
const
|
|
254
|
+
const provider = clientOptions.provider ?? "claude";
|
|
255
|
+
const driver = getDriver(provider);
|
|
256
|
+
const cliPath = clientOptions.cliPath ?? clientOptions.claudePath ?? driver.defaultCliPath;
|
|
94
257
|
const defaultModel = clientOptions.model;
|
|
95
258
|
const defaultCwd = clientOptions.cwd;
|
|
96
259
|
const skipPermissions = clientOptions.dangerouslySkipPermissions ?? true;
|
|
97
260
|
const guardByDefault = clientOptions.promptInjectionGuard ?? false;
|
|
261
|
+
const debug = clientOptions.debug ?? false;
|
|
98
262
|
const guardIfNeeded = async (prompt, options) => {
|
|
99
263
|
if (options.promptInjectionGuard ?? guardByDefault) {
|
|
100
|
-
const result = await runInjectionCheck(
|
|
264
|
+
const result = await runInjectionCheck(driver, cliPath, defaultCwd, defaultModel, skipPermissions, prompt, debug);
|
|
101
265
|
if (result.flagged)
|
|
102
266
|
throw makeInjectionError(result);
|
|
103
267
|
}
|
|
104
268
|
};
|
|
105
269
|
const query = async (prompt, options = {}) => {
|
|
106
270
|
await guardIfNeeded(prompt, options);
|
|
107
|
-
const
|
|
108
|
-
|
|
271
|
+
const config = driver.buildSpawnConfig(prompt, defaultModel, options, "text", skipPermissions);
|
|
272
|
+
debugLog(debug, `spawned: ${cliPath} ${config.args.join(" ").substring(0, 200)}`);
|
|
273
|
+
const child = spawnCli(cliPath, defaultCwd, config, options);
|
|
109
274
|
let stdout = "";
|
|
110
275
|
let stderr = "";
|
|
111
|
-
child.stdout.on("data", (chunk) => {
|
|
112
|
-
|
|
276
|
+
child.stdout.on("data", (chunk) => {
|
|
277
|
+
const text = chunk.toString();
|
|
278
|
+
debugLog(debug, "stdout:", text.substring(0, 300));
|
|
279
|
+
stdout += text;
|
|
280
|
+
});
|
|
281
|
+
child.stderr.on("data", (chunk) => {
|
|
282
|
+
const text = chunk.toString();
|
|
283
|
+
debugLog(debug, "stderr:", text.substring(0, 300));
|
|
284
|
+
stderr += text;
|
|
285
|
+
});
|
|
113
286
|
return new Promise((resolve, reject) => {
|
|
114
287
|
child.on("close", (code) => {
|
|
288
|
+
debugLog(debug, `exited with code ${code}`);
|
|
289
|
+
config.cleanup?.();
|
|
115
290
|
if (code !== 0) {
|
|
116
|
-
reject(makeError(
|
|
291
|
+
reject(makeError(`${driver.name} exited with code ${code}`, code, stderr, stdout));
|
|
117
292
|
}
|
|
118
293
|
else {
|
|
119
294
|
resolve(stdout.trimEnd());
|
|
120
295
|
}
|
|
121
296
|
});
|
|
122
|
-
child.on("error",
|
|
297
|
+
child.on("error", (err) => {
|
|
298
|
+
config.cleanup?.();
|
|
299
|
+
reject(err);
|
|
300
|
+
});
|
|
123
301
|
});
|
|
124
302
|
};
|
|
125
303
|
async function* stream(prompt, options = {}) {
|
|
126
304
|
await guardIfNeeded(prompt, options);
|
|
127
|
-
const
|
|
128
|
-
|
|
305
|
+
const config = driver.buildSpawnConfig(prompt, defaultModel, options, "stream-json", skipPermissions);
|
|
306
|
+
debugLog(debug, `spawned: ${cliPath} ${config.args.join(" ").substring(0, 200)}`);
|
|
307
|
+
const child = spawnCli(cliPath, defaultCwd, config, options);
|
|
129
308
|
const rl = createInterface({ input: child.stdout, crlfDelay: Infinity });
|
|
130
309
|
let stdoutBuf = "";
|
|
131
310
|
let stderrBuf = "";
|
|
132
|
-
child.stdout.on("data", (chunk) => {
|
|
133
|
-
|
|
311
|
+
child.stdout.on("data", (chunk) => {
|
|
312
|
+
const text = chunk.toString();
|
|
313
|
+
debugLog(debug, "stdout:", text.substring(0, 300));
|
|
314
|
+
stdoutBuf += text;
|
|
315
|
+
});
|
|
316
|
+
child.stderr.on("data", (chunk) => {
|
|
317
|
+
const text = chunk.toString();
|
|
318
|
+
debugLog(debug, "stderr:", text.substring(0, 300));
|
|
319
|
+
stderrBuf += text;
|
|
320
|
+
});
|
|
134
321
|
let resultEvent;
|
|
322
|
+
let sessionId = "";
|
|
323
|
+
let accumulatedText = "";
|
|
135
324
|
let exitCode = null;
|
|
136
325
|
const exitPromise = new Promise((resolve) => {
|
|
137
|
-
child.on("close", (code) => {
|
|
138
|
-
|
|
326
|
+
child.on("close", (code) => {
|
|
327
|
+
debugLog(debug, `exited with code ${code}`);
|
|
328
|
+
exitCode = code;
|
|
329
|
+
config.cleanup?.();
|
|
330
|
+
resolve();
|
|
331
|
+
});
|
|
332
|
+
child.on("error", (err) => {
|
|
333
|
+
stderrBuf += String(err);
|
|
334
|
+
config.cleanup?.();
|
|
335
|
+
resolve();
|
|
336
|
+
});
|
|
139
337
|
});
|
|
140
338
|
for await (const line of rl) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
let event;
|
|
144
|
-
try {
|
|
145
|
-
event = JSON.parse(line);
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
339
|
+
const parsed = driver.parseStreamLine(line);
|
|
340
|
+
if (!parsed)
|
|
148
341
|
continue;
|
|
342
|
+
if (parsed.kind === "text") {
|
|
343
|
+
accumulatedText += parsed.text;
|
|
344
|
+
yield parsed.text;
|
|
149
345
|
}
|
|
150
|
-
if (
|
|
151
|
-
|
|
152
|
-
if (block.type === "text")
|
|
153
|
-
yield block.text;
|
|
154
|
-
}
|
|
346
|
+
else if (parsed.kind === "result") {
|
|
347
|
+
resultEvent = parsed.event;
|
|
155
348
|
}
|
|
156
|
-
else if (
|
|
157
|
-
|
|
349
|
+
else if (parsed.kind === "meta" && parsed.sessionId) {
|
|
350
|
+
sessionId = parsed.sessionId;
|
|
158
351
|
}
|
|
159
352
|
}
|
|
160
353
|
await exitPromise;
|
|
161
354
|
if (exitCode !== 0) {
|
|
162
|
-
throw makeError(
|
|
355
|
+
throw makeError(`${driver.name} exited with code ${exitCode}`, exitCode, stderrBuf, stdoutBuf);
|
|
356
|
+
}
|
|
357
|
+
// Patch result for providers that don't include full data in the result event
|
|
358
|
+
if (resultEvent) {
|
|
359
|
+
if (!resultEvent.result && accumulatedText) {
|
|
360
|
+
resultEvent = { ...resultEvent, result: accumulatedText };
|
|
361
|
+
}
|
|
362
|
+
if (!resultEvent.session_id && sessionId) {
|
|
363
|
+
resultEvent = { ...resultEvent, session_id: sessionId };
|
|
364
|
+
}
|
|
163
365
|
}
|
|
164
366
|
return resultEvent;
|
|
165
367
|
}
|
|
166
368
|
const queryJSON = async (prompt, options = {}) => {
|
|
167
369
|
await guardIfNeeded(prompt, options);
|
|
168
|
-
const
|
|
169
|
-
|
|
370
|
+
const config = driver.buildSpawnConfig(prompt, defaultModel, options, "json", skipPermissions);
|
|
371
|
+
debugLog(debug, `spawned: ${cliPath} ${config.args.join(" ").substring(0, 200)}`);
|
|
372
|
+
const child = spawnCli(cliPath, defaultCwd, config, options);
|
|
170
373
|
let stdout = "";
|
|
171
374
|
let stderr = "";
|
|
172
|
-
child.stdout.on("data", (chunk) => {
|
|
173
|
-
|
|
375
|
+
child.stdout.on("data", (chunk) => {
|
|
376
|
+
const text = chunk.toString();
|
|
377
|
+
debugLog(debug, "stdout:", text.substring(0, 300));
|
|
378
|
+
stdout += text;
|
|
379
|
+
});
|
|
380
|
+
child.stderr.on("data", (chunk) => {
|
|
381
|
+
const text = chunk.toString();
|
|
382
|
+
debugLog(debug, "stderr:", text.substring(0, 300));
|
|
383
|
+
stderr += text;
|
|
384
|
+
});
|
|
174
385
|
return new Promise((resolve, reject) => {
|
|
175
386
|
child.on("close", (code) => {
|
|
387
|
+
debugLog(debug, `exited with code ${code}`);
|
|
388
|
+
config.cleanup?.();
|
|
176
389
|
if (code !== 0) {
|
|
177
|
-
reject(makeError(
|
|
390
|
+
reject(makeError(`${driver.name} exited with code ${code}`, code, stderr, stdout));
|
|
178
391
|
return;
|
|
179
392
|
}
|
|
180
393
|
try {
|
|
181
|
-
resolve(
|
|
394
|
+
resolve(driver.parseJsonResult(stdout));
|
|
182
395
|
}
|
|
183
396
|
catch (e) {
|
|
184
397
|
reject(makeError(`Failed to parse JSON output: ${e}`, code, stderr, stdout));
|
|
185
398
|
}
|
|
186
399
|
});
|
|
187
|
-
child.on("error",
|
|
400
|
+
child.on("error", (err) => {
|
|
401
|
+
config.cleanup?.();
|
|
402
|
+
reject(err);
|
|
403
|
+
});
|
|
188
404
|
});
|
|
189
405
|
};
|
|
190
|
-
const checkPromptInjection = (prompt) => runInjectionCheck(
|
|
406
|
+
const checkPromptInjection = (prompt) => runInjectionCheck(driver, cliPath, defaultCwd, defaultModel, skipPermissions, prompt, debug);
|
|
191
407
|
return { query, stream, queryJSON, checkPromptInjection };
|
|
192
408
|
};
|
|
193
409
|
//# 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":"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"}
|
|
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.
|
|
3
|
+
"version": "0.5.1",
|
|
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
|
+
}
|