cc-local-use 0.1.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.
@@ -0,0 +1,103 @@
1
+ export interface TextBlock {
2
+ type: "text";
3
+ text: string;
4
+ }
5
+ export interface AssistantMessage {
6
+ id: string;
7
+ type: "message";
8
+ role: "assistant";
9
+ content: TextBlock[];
10
+ model: string;
11
+ stop_reason: string | null;
12
+ stop_sequence: string | null;
13
+ usage: {
14
+ input_tokens: number;
15
+ output_tokens: number;
16
+ };
17
+ }
18
+ export interface AssistantEvent {
19
+ type: "assistant";
20
+ message: AssistantMessage;
21
+ session_id: string;
22
+ }
23
+ export interface ResultEvent {
24
+ type: "result";
25
+ subtype: "success" | "error";
26
+ is_error: boolean;
27
+ result: string;
28
+ cost_usd: number;
29
+ duration_ms: number;
30
+ duration_api_ms: number;
31
+ session_id: string;
32
+ num_turns: number;
33
+ }
34
+ export interface SystemEvent {
35
+ type: "system";
36
+ subtype: string;
37
+ session_id: string;
38
+ [key: string]: unknown;
39
+ }
40
+ export type ClaudeEvent = AssistantEvent | ResultEvent | SystemEvent;
41
+ export interface ClientOptions {
42
+ /** Path to the claude executable. Defaults to "claude". */
43
+ claudePath?: string;
44
+ /** Default model to use for all calls. */
45
+ model?: string;
46
+ /** Default working directory for the subprocess. */
47
+ cwd?: string;
48
+ }
49
+ export interface QueryOptions {
50
+ /** Override the model for this call. */
51
+ model?: string;
52
+ /** System prompt prepended to the conversation. */
53
+ systemPrompt?: string;
54
+ /** Max number of agentic turns (--max-turns). */
55
+ maxTurns?: number;
56
+ /** Resume an existing session by ID (--resume). */
57
+ resumeSession?: string;
58
+ /** Working directory for the subprocess. */
59
+ cwd?: string;
60
+ /** Extra raw CLI arguments appended verbatim. */
61
+ extraArgs?: string[];
62
+ }
63
+ export type ClaudeCodeError = Error & {
64
+ readonly exitCode: number | null;
65
+ readonly stderr: string;
66
+ };
67
+ export type ClaudeCodeClient = {
68
+ /**
69
+ * Send a prompt and get the full text response as a string.
70
+ *
71
+ * @example
72
+ * const answer = await cc.query("Summarise this file", { cwd: "/project" });
73
+ */
74
+ query: (prompt: string, options?: QueryOptions) => Promise<string>;
75
+ /**
76
+ * Stream the response as an async generator of text chunks.
77
+ * The generator's return value is the final ResultEvent.
78
+ *
79
+ * @example
80
+ * for await (const chunk of cc.stream("Write a long essay about…")) {
81
+ * process.stdout.write(chunk);
82
+ * }
83
+ */
84
+ stream: (prompt: string, options?: QueryOptions) => AsyncGenerator<string, ResultEvent, undefined>;
85
+ /**
86
+ * Send a prompt and receive the structured JSON result.
87
+ * Useful when you need metadata such as session ID, cost, or turn count.
88
+ *
89
+ * @example
90
+ * const { result, session_id, cost_usd } = await cc.queryJSON("Explain async/await");
91
+ */
92
+ queryJSON: (prompt: string, options?: QueryOptions) => Promise<ResultEvent>;
93
+ };
94
+ /**
95
+ * Create a Claude Code client. All calls automatically include
96
+ * `--dangerously-skip-permissions` and `--print`.
97
+ *
98
+ * @example
99
+ * import { createClient } from "cc-local-use";
100
+ * const cc = createClient({ model: "claude-opus-4-6" });
101
+ */
102
+ export declare const createClient: (clientOptions?: ClientOptions) => ClaudeCodeClient;
103
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAMrE,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AA0DF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;OAKG;IACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnE;;;;;;;;OAQG;IACH,MAAM,EAAE,CACN,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,KACnB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAEpD;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7E,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,gBAAe,aAAkB,KAAG,gBAiGhE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,135 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createInterface } from "node:readline";
3
+ const makeError = (message, exitCode, stderr) => {
4
+ const err = new Error(message);
5
+ err.name = "ClaudeCodeError";
6
+ Object.defineProperty(err, "exitCode", { value: exitCode });
7
+ Object.defineProperty(err, "stderr", { value: stderr });
8
+ return err;
9
+ };
10
+ // ──────────────────────────────────────────────
11
+ // Internal helpers (module-level pure functions)
12
+ // ──────────────────────────────────────────────
13
+ const buildArgs = (clientModel, options, outputFormat) => {
14
+ const args = [
15
+ "--dangerously-skip-permissions",
16
+ "--output-format",
17
+ outputFormat,
18
+ "--print",
19
+ ];
20
+ const model = options.model ?? clientModel;
21
+ if (model)
22
+ args.push("--model", model);
23
+ if (options.systemPrompt)
24
+ args.push("--system-prompt", options.systemPrompt);
25
+ if (options.maxTurns != null)
26
+ args.push("--max-turns", String(options.maxTurns));
27
+ if (options.resumeSession)
28
+ args.push("--resume", options.resumeSession);
29
+ if (options.extraArgs)
30
+ args.push(...options.extraArgs);
31
+ return args;
32
+ };
33
+ const spawnClaude = (claudePath, defaultCwd, prompt, args, options) => spawn(claudePath, [...args, prompt], {
34
+ cwd: options.cwd ?? defaultCwd ?? process.cwd(),
35
+ env: process.env,
36
+ stdio: ["ignore", "pipe", "pipe"],
37
+ });
38
+ // ──────────────────────────────────────────────
39
+ // Factory
40
+ // ──────────────────────────────────────────────
41
+ /**
42
+ * Create a Claude Code client. All calls automatically include
43
+ * `--dangerously-skip-permissions` and `--print`.
44
+ *
45
+ * @example
46
+ * import { createClient } from "cc-local-use";
47
+ * const cc = createClient({ model: "claude-opus-4-6" });
48
+ */
49
+ export const createClient = (clientOptions = {}) => {
50
+ const claudePath = clientOptions.claudePath ?? "claude";
51
+ const defaultModel = clientOptions.model;
52
+ const defaultCwd = clientOptions.cwd;
53
+ const query = async (prompt, options = {}) => {
54
+ const args = buildArgs(defaultModel, options, "text");
55
+ const child = spawnClaude(claudePath, defaultCwd, prompt, args, options);
56
+ let stdout = "";
57
+ let stderr = "";
58
+ child.stdout.on("data", (chunk) => { stdout += chunk.toString(); });
59
+ child.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
60
+ return new Promise((resolve, reject) => {
61
+ child.on("close", (code) => {
62
+ if (code !== 0) {
63
+ reject(makeError(`claude exited with code ${code}`, code, stderr));
64
+ }
65
+ else {
66
+ resolve(stdout.trimEnd());
67
+ }
68
+ });
69
+ child.on("error", reject);
70
+ });
71
+ };
72
+ async function* stream(prompt, options = {}) {
73
+ const args = buildArgs(defaultModel, options, "stream-json");
74
+ const child = spawnClaude(claudePath, defaultCwd, prompt, args, options);
75
+ const rl = createInterface({ input: child.stdout, crlfDelay: Infinity });
76
+ let stderrBuf = "";
77
+ child.stderr.on("data", (chunk) => { stderrBuf += chunk.toString(); });
78
+ let resultEvent;
79
+ let exitCode = null;
80
+ const exitPromise = new Promise((resolve) => {
81
+ child.on("close", (code) => { exitCode = code; resolve(); });
82
+ child.on("error", (err) => { stderrBuf += String(err); resolve(); });
83
+ });
84
+ for await (const line of rl) {
85
+ if (!line.trim())
86
+ continue;
87
+ let event;
88
+ try {
89
+ event = JSON.parse(line);
90
+ }
91
+ catch {
92
+ continue;
93
+ }
94
+ if (event.type === "assistant") {
95
+ for (const block of event.message.content) {
96
+ if (block.type === "text")
97
+ yield block.text;
98
+ }
99
+ }
100
+ else if (event.type === "result") {
101
+ resultEvent = event;
102
+ }
103
+ }
104
+ await exitPromise;
105
+ if (exitCode !== 0) {
106
+ throw makeError(`claude exited with code ${exitCode}`, exitCode, stderrBuf);
107
+ }
108
+ return resultEvent;
109
+ }
110
+ const queryJSON = async (prompt, options = {}) => {
111
+ const args = buildArgs(defaultModel, options, "json");
112
+ const child = spawnClaude(claudePath, defaultCwd, prompt, args, options);
113
+ let stdout = "";
114
+ let stderr = "";
115
+ child.stdout.on("data", (chunk) => { stdout += chunk.toString(); });
116
+ child.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
117
+ return new Promise((resolve, reject) => {
118
+ child.on("close", (code) => {
119
+ if (code !== 0) {
120
+ reject(makeError(`claude exited with code ${code}`, code, stderr));
121
+ return;
122
+ }
123
+ try {
124
+ resolve(JSON.parse(stdout));
125
+ }
126
+ catch (e) {
127
+ reject(makeError(`Failed to parse JSON output: ${e}`, code, stderr));
128
+ }
129
+ });
130
+ child.on("error", reject);
131
+ });
132
+ };
133
+ return { query, stream, queryJSON };
134
+ };
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "cc-local-use",
3
+ "version": "0.1.0",
4
+ "description": "A TypeScript library for calling local Claude Code CLI with sane defaults",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "dev": "tsc --watch",
11
+ "test": "node --experimental-vm-modules node_modules/.bin/jest"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "devDependencies": {
17
+ "typescript": "^5.7.3",
18
+ "@types/node": "^22.10.0"
19
+ },
20
+ "engines": {
21
+ "node": ">=18"
22
+ }
23
+ }