n8n-nodes-claude-code-cli 1.0.5 → 1.0.7

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
@@ -24,7 +24,7 @@
24
24
 
25
25
  [Getting Started](#-quick-start) •
26
26
  [Use Cases](#-use-cases) •
27
- [Documentation](#-node-operations)
27
+ [Documentation](#%EF%B8%8F-node-operations)
28
28
 
29
29
  </div>
30
30
 
@@ -32,261 +32,102 @@
32
32
 
33
33
  ## ✨ Features
34
34
 
35
- <table>
36
- <tr>
37
- <td width="50%">
38
-
39
- ### 🐳 Multiple Connection Modes
40
- Execute Claude Code locally, via SSH, or inside Docker containers
41
-
42
- ### 🔄 Session Management
43
- Maintain multi-turn conversations across workflow executions
44
-
45
- ### 🎯 Tool Permissions
46
- Fine-grained control over which tools Claude Code can use
47
-
48
- </td>
49
- <td width="50%">
50
-
51
- ### 📁 Context File Support
52
- Include files and directories as context for code analysis
53
-
54
- ### 🧠 Multiple Models
55
- Support for Opus, Sonnet, Haiku and specific versions
56
-
57
- ### 📊 Rich Output
58
- Detailed metadata including costs, tokens, and session IDs
59
-
60
- </td>
61
- </tr>
62
- </table>
35
+ | | |
36
+ |---|---|
37
+ | **🐳 Docker Execution** - Run Claude Code in isolated containers | **🔄 Session Management** - Multi-turn conversations across executions |
38
+ | **🎯 Tool Permissions** - Fine-grained control over allowed tools | **📁 Context Files** - Include files and directories for analysis |
39
+ | **🧠 Multiple Models** - Opus, Sonnet, Haiku support | **📊 Rich Output** - Costs, tokens, and session IDs |
63
40
 
64
41
  ---
65
42
 
66
43
  ## ⚡ Quick Start
67
44
 
68
- ```
69
- 1️⃣ Install → 2️⃣ Setup Claude Code → 3️⃣ Authenticate → 4️⃣ Create Workflow → 5️⃣ Run!
70
- ```
71
-
72
- <details>
73
- <summary><b>📋 Step-by-step guide</b></summary>
74
-
75
- ### 1️⃣ Install the node
76
-
77
-
78
- #### **Install the node in n8n community nodes**
45
+ ### 1. Install the n8n node
79
46
 
80
- Search for "n8n-nodes-claude-code-cli" in the n8n community nodes interface.
81
- Then install the node.
47
+ In n8n: **Settings > Community Nodes > Install > `n8n-nodes-claude-code-cli`**
82
48
 
83
-
84
- #### **Install the node locally with git:**
85
-
86
- I recommend using git to install the node locally.
87
- *If there is a supply chain attack, you will not be affected by the automatic updates of the community nodes of n8n. And therefore your service will not be corrupted. Supply chain attacks are very dangerous, more and more frequent and can compromise your service. It is therefore recommended to use git to install the node locally.*
49
+ ### 2. Deploy Claude Code Runner
88
50
 
89
51
  ```bash
90
- git clone https://github.com/n8n-io/n8n-nodes-claude-code-cli.git
91
- cd n8n-nodes-claude-code-cli
92
- npm install
93
- npm run build
52
+ mkdir -p claude-code-runner && cd claude-code-runner && curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/docker-compose.yml -o docker-compose.yml && curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/Dockerfile -o Dockerfile && docker compose up -d --build
94
53
  ```
95
54
 
55
+ This sets up a production-ready container with:
56
+ - `restart: unless-stopped` for automatic recovery
57
+ - Persistent volumes for workspace, Claude config, and MCP servers
58
+ - Healthcheck for container monitoring
96
59
 
97
- #### **Install locally with npm:**
60
+ ### 3. Authenticate
98
61
 
99
62
  ```bash
100
- npm install n8n-nodes-claude-code-cli
101
- ```
102
-
103
- **For local installation you need to add the environment variable `- N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom` in your n8n configuration file.**
104
-
105
- ### 2️⃣ Set up Claude Code
106
-
107
- Choose your deployment method (see [Installation](#-installation--deployment))
108
-
109
- ### 3️⃣ Authenticate with Claude
110
-
111
- ```bash
112
- # For Docker
113
- docker exec -it your-container-name claude login
114
-
115
- # For SSH or Local
116
- claude login
117
- ```
118
-
119
- ### 4️⃣ Create credentials in n8n
120
-
121
- Go to **Settings → Credentials → Add Credential** and select your connection type
122
-
123
- ### 5️⃣ Add the node and run!
124
-
125
- Search for "Claude Code" in the node panel, configure, and execute
126
-
127
- </details>
128
-
129
- ### 🐳 Docker (Recommended)
130
-
131
- > **Why Docker?** Isolation, easy setup, portability, and security.
132
-
133
- <details>
134
- <summary><b>Option 1: Node.js Container (Lightweight)</b></summary>
135
-
136
- Best for code analysis without system tools:
137
-
138
- ```dockerfile
139
- FROM node:24-slim
140
-
141
- # Install Claude Code CLI
142
- RUN npm install -g @anthropic-ai/claude-code
143
-
144
- # Set up workspace
145
- WORKDIR /workspace
146
-
147
- # Keep container running
148
- CMD ["tail", "-f", "/dev/null"]
149
- ```
150
-
151
- ```yaml
152
- # docker-compose.yml
153
- services:
154
- claude-code-runner:
155
- build: .
156
- volumes:
157
- - ./workspace:/workspace
63
+ docker exec -it claude-code-runner claude login
158
64
  ```
159
65
 
160
- </details>
161
-
162
- <details>
163
- <summary><b>Option 2: Debian Container (Full Tooling)</b></summary>
164
-
165
- Best when Claude Code needs system tools (git, build tools, etc.):
166
-
167
- ```dockerfile
168
- FROM debian:bookworm-slim
169
-
170
- # Install Node.js and common tools
171
- RUN apt-get update && apt-get install -y \
172
- curl git build-essential \
173
- && curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
174
- && apt-get install -y nodejs \
175
- && rm -rf /var/lib/apt/lists/*
176
-
177
- # Install Claude Code CLI
178
- RUN npm install -g @anthropic-ai/claude-code
66
+ Follow the browser prompts to complete authentication.
179
67
 
180
- WORKDIR /workspace
181
- CMD ["tail", "-f", "/dev/null"]
182
- ```
183
-
184
- </details>
68
+ ### 4. Configure n8n credentials
185
69
 
186
- **🔑 Authenticate:**
187
- ```bash
188
- docker exec -it claude-code-runner claude login
189
- ```
190
-
191
- **⚙️ n8n Credentials:**
192
70
  | Parameter | Value |
193
71
  |-----------|-------|
72
+ | Connection Type | Docker |
194
73
  | Container Name | `claude-code-runner` |
195
74
  | Working Directory | `/workspace` |
196
75
 
197
- ---
198
-
199
- ### 🔐 SSH (Alternative)
200
-
201
- > **Why SSH?** Full system access and dedicated resource isolation.
202
-
203
- <details>
204
- <summary><b>Setup Instructions</b></summary>
205
-
206
- 1. **Set up a VM** (AWS EC2, GCP, DigitalOcean, etc.)
207
-
208
- 2. **Install Claude Code:**
209
- ```bash
210
- # Install Node.js
211
- curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
212
- sudo apt-get install -y nodejs
213
-
214
- # Install Claude Code
215
- npm install -g @anthropic-ai/claude-code
216
-
217
- # Authenticate
218
- claude login
219
- ```
220
-
221
- 3. **Configure SSH** with key-based authentication
222
-
223
- </details>
224
-
225
- **⚙️ n8n Credentials:**
226
- | Parameter | Value |
227
- |-----------|-------|
228
- | Host | Your VM IP/hostname |
229
- | Port | `22` |
230
- | Auth Method | `privateKey` |
231
-
232
- ---
233
-
234
- ### 💻 Local (Not Recommended)
235
-
236
- > ⚠️ **Security concerns** - Claude Code runs in the same context as n8n
237
-
238
- <details>
239
- <summary><b>Why not recommended?</b></summary>
240
-
241
- - Security risks (shared execution context)
242
- - Resource contention
243
- - Harder to manage and update
76
+ ### 5. Start automating 🚀
244
77
 
245
- **If you must use local:**
246
- 1. Install Claude Code inside your n8n container
247
- 2. Run `claude login`
248
- 3. Use "Local" connection mode
249
-
250
- </details>
78
+ Search "Claude Code" in n8n node panel and create your first workflow.
251
79
 
252
80
  ---
253
81
 
254
- ## 🔑 Authentication
82
+ ## 🐳 Configuration
255
83
 
256
- ### Recommended: Claude Login (Subscription)
84
+ ### Workspace Setup
257
85
 
258
- > 💰 **Cheaper!** Claude Code subscription costs less than API usage.
86
+ You have two options to work with your code:
259
87
 
88
+ **Option 1: Clone repos inside container** (recommended for isolation)
260
89
  ```bash
261
- # Docker
262
- docker exec -it container_name claude login
263
-
264
- # SSH (on remote server)
265
- claude login
90
+ docker exec -it claude-code-runner git clone <repo-url>
91
+ # Or use git worktree for multiple branches
92
+ ```
266
93
 
267
- # Local
268
- claude login
94
+ **Option 2: Mount existing projects**
95
+ ```yaml
96
+ volumes:
97
+ - /path/to/your/project:/workspace/project-name
269
98
  ```
270
99
 
271
- Follow the browser prompts to authenticate.
100
+ ### MCP Servers
101
+
102
+ Mount your MCP configuration to enable additional tools:
272
103
 
273
- ### Alternative: API Key
104
+ ```yaml
105
+ volumes:
106
+ # MCP servers directory
107
+ - ./mcp-servers:/root/.mcp
108
+ # Or mount your local .mcp.json (avoids versioning credentials)
109
+ - ~/.mcp.json:/root/.mcp.json:ro
110
+ ```
274
111
 
275
112
  <details>
276
- <summary><b>Using ANTHROPIC_API_KEY (not recommended)</b></summary>
113
+ <summary><b>🔐 Alternative: SSH deployment</b></summary>
277
114
 
278
- > ⚠️ More expensive than subscription pricing
115
+ For dedicated VM deployments (AWS EC2, GCP, etc.):
279
116
 
280
- Set via environment variable:
281
117
  ```bash
282
- export ANTHROPIC_API_KEY="your-api-key"
118
+ curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
119
+ sudo apt-get install -y nodejs git
120
+ npm install -g @anthropic-ai/claude-code
121
+ claude login
283
122
  ```
284
123
 
285
- Or in Docker Compose:
286
- ```yaml
287
- environment:
288
- - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
289
- ```
124
+ **n8n Credentials:**
125
+ | Parameter | Value |
126
+ |-----------|-------|
127
+ | Connection Type | SSH |
128
+ | Host | Your VM IP |
129
+ | Port | `22` |
130
+ | Auth Method | `privateKey` |
290
131
 
291
132
  </details>
292
133
 
@@ -418,77 +259,25 @@ environment:
418
259
 
419
260
  ### 🤖 Cloud Coding Bots
420
261
 
421
- Build AI coding assistants on any platform:
422
-
423
- <table>
424
- <tr>
425
- <td align="center" width="25%">
426
-
427
- **📱 Telegram**
428
-
429
- ```
430
- User ──▶ Bot ──▶ Claude
431
- ──▶ Reply
432
- ```
433
-
434
- </td>
435
- <td align="center" width="25%">
436
-
437
- **💬 Slack**
438
-
439
- ```
440
- @bot ──▶ Fetch ──▶ Claude
441
- ──▶ Thread
442
- ```
443
-
444
- </td>
445
- <td align="center" width="25%">
446
-
447
- **🎮 Discord**
448
-
449
- ```
450
- !help ──▶ Parse ──▶ Claude
451
- ──▶ Embed
452
- ```
453
-
454
- </td>
455
- <td align="center" width="25%">
456
-
457
- **🦊 GitLab/GitHub**
458
-
459
- ```
460
- Comment ──▶ API ──▶ Claude
461
- ──▶ Reply
462
- ```
463
-
464
- </td>
465
- </tr>
466
- </table>
467
-
468
- <details>
469
- <summary><b>Example: Telegram Bot</b></summary>
470
-
471
- 1. **Trigger**: Telegram trigger on new message
472
- 2. **Process**: Claude Code handles coding question
473
- 3. **Reply**: Send response via Telegram node
474
-
475
- </details>
262
+ Build AI coding assistants on Telegram, Slack, Discord, or GitLab/GitHub.
476
263
 
477
264
  <details>
478
- <summary><b>Example: Slack Bot</b></summary>
265
+ <summary><b>Examples</b></summary>
479
266
 
480
- 1. **Trigger**: Slack mention or slash command
481
- 2. **Context**: Fetch relevant code from repos (optional)
482
- 3. **Respond**: Post response to channel
267
+ **📱 Telegram Bot**
268
+ 1. Trigger: Telegram trigger on new message
269
+ 2. Process: Claude Code handles coding question
270
+ 3. Reply: Send response via Telegram node
483
271
 
484
- </details>
272
+ **💬 Slack Bot**
273
+ 1. Trigger: Slack mention or slash command
274
+ 2. Context: Fetch relevant code from repos (optional)
275
+ 3. Respond: Post response to channel
485
276
 
486
- <details>
487
- <summary><b>Example: GitLab/GitHub Bot</b></summary>
488
-
489
- 1. **Trigger**: Issue comment with keyword (e.g., `/claude`)
490
- 2. **Analyze**: Fetch issue context and code
491
- 3. **Comment**: Post Claude's analysis
277
+ **🦊 GitLab/GitHub Bot**
278
+ 1. Trigger: Issue comment with keyword (e.g., `/claude`)
279
+ 2. Analyze: Fetch issue context and code
280
+ 3. Comment: Post Claude's analysis
492
281
 
493
282
  </details>
494
283
 
@@ -524,10 +313,6 @@ Comment ──▶ API ──▶ Claude
524
313
 
525
314
  ## 🔒 Security
526
315
 
527
- <table>
528
- <tr>
529
- <td width="50%">
530
-
531
316
  ### 🛡️ Tool Permissions
532
317
 
533
318
  Control what Claude Code can do:
@@ -537,18 +322,11 @@ Control what Claude Code can do:
537
322
  ❌ Blocked: Bash(rm:*), Write(.env)
538
323
  ```
539
324
 
540
- </td>
541
- <td width="50%">
325
+ ### 🐳 Isolation Best Practices
542
326
 
543
- ### 🐳 Isolation
544
-
545
- - Use Docker containers
546
- - Mount only needed directories
547
- - Read-only mounts when possible
548
-
549
- </td>
550
- </tr>
551
- </table>
327
+ - Always set specific working directory
328
+ - Avoid `/` or home directories
329
+ - Create dedicated workspace per project
552
330
 
553
331
  <details>
554
332
  <summary><b>🔐 Recommended Security Settings</b></summary>
@@ -559,28 +337,45 @@ Control what Claude Code can do:
559
337
  - `Write(.env)` - Protect secrets
560
338
  - `Bash(curl:*)` - Block network (if not needed)
561
339
 
562
- **Isolation best practices:**
563
- - Always set specific working directory
564
- - Avoid `/` or home directories
565
- - Create dedicated workspace per project
566
-
567
340
  </details>
568
341
 
569
342
  ---
570
343
 
571
344
  ## 🤝 Contributing
572
345
 
573
- Contributions welcome!
346
+ ### Development Setup
574
347
 
575
348
  ```bash
576
- # 1. Fork the repo
577
- # 2. Create feature branch
578
- git checkout -b feature/amazing-feature
349
+ git clone https://github.com/ThomasTartrau/n8n-nodes-claude-code-cli.git
350
+ cd n8n-nodes-claude-code-cli
351
+ npm install && npm run build
579
352
 
580
- # 3. Commit changes
581
- git commit -m 'feat: add amazing feature'
353
+ # Start n8n + claude-code-runner for testing
354
+ docker compose -f docker/development/docker-compose.yml up -d --build
582
355
 
583
- # 4. Push & create PR
356
+ # Authenticate claude-code-runner
357
+ docker exec -it claude-code-runner claude login
358
+
359
+ # Access n8n at http://localhost:5678
360
+ ```
361
+
362
+ ### Docker Files Structure
363
+
364
+ ```
365
+ docker/
366
+ ├── development/
367
+ │ ├── Dockerfile # n8n with docker CLI
368
+ │ └── docker-compose.yml # n8n + claude-code-runner
369
+ └── production/
370
+ ├── Dockerfile # Standalone claude-code-runner
371
+ └── docker-compose.yml # For end users
372
+ ```
373
+
374
+ ### Submit Changes
375
+
376
+ ```bash
377
+ git checkout -b feature/amazing-feature
378
+ git commit -m 'feat: add amazing feature'
584
379
  git push origin feature/amazing-feature
585
380
  ```
586
381
 
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeCodeDockerApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/ClaudeCodeDockerApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3E,qBAAa,mBAAoB,YAAW,eAAe;IAC1D,IAAI,SAAyB;IAC7B,WAAW,SAAwB;IACnC,IAAI,EAAE,IAAI,CAAiE;IAC3E,gBAAgB,SAC8C;IAE9D,UAAU,EAAE,eAAe,EAAE,CAuE3B;CACF"}
1
+ {"version":3,"file":"ClaudeCodeDockerApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/ClaudeCodeDockerApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3E,qBAAa,mBAAoB,YAAW,eAAe;IAC1D,IAAI,SAAyB;IAC7B,WAAW,SAAwB;IACnC,IAAI,EAAE,IAAI,CAAkC;IAC5C,gBAAgB,SAC8C;IAE9D,UAAU,EAAE,eAAe,EAAE,CAuE3B;CACF"}
@@ -4,7 +4,7 @@ exports.ClaudeCodeDockerApi = void 0;
4
4
  class ClaudeCodeDockerApi {
5
5
  name = "claudeCodeDockerApi";
6
6
  displayName = "Claude Code Docker";
7
- icon = { light: "file:claudecode.svg", dark: "file:claudecode.svg" };
7
+ icon = "file:../icons/claudecode.svg";
8
8
  documentationUrl = "https://github.com/ThomasTartrau/n8n-nodes-claude-code-cli";
9
9
  properties = [
10
10
  {
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeCodeDockerApi.credentials.js","sourceRoot":"","sources":["../../credentials/ClaudeCodeDockerApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAC/B,IAAI,GAAG,qBAAqB,CAAC;IAC7B,WAAW,GAAG,oBAAoB,CAAC;IACnC,IAAI,GAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC3E,gBAAgB,GACf,4DAA4D,CAAC;IAE9D,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE;gBACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;gBACzC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;aACrC;YACD,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,sCAAsC;SACnD;QACD;YACC,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE;gBACf,IAAI,EAAE;oBACL,mBAAmB,EAAE,CAAC,MAAM,CAAC;iBAC7B;aACD;YACD,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,kDAAkD;SAC/D;QACD;YACC,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE;gBACf,IAAI,EAAE;oBACL,mBAAmB,EAAE,CAAC,IAAI,CAAC;iBAC3B;aACD;YACD,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,gDAAgD;SAC7D;QACD;YACC,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,qDAAqD;YAClE,WAAW,EAAE,uDAAuD;SACpE;QACD;YACC,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,cAAc;YAC3B,WAAW,EACV,6EAA6E;SAC9E;QACD;YACC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,0CAA0C;SACvD;QACD;YACC,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,gDAAgD;SAC7D;KACD,CAAC;CACF;AA/ED,kDA+EC"}
1
+ {"version":3,"file":"ClaudeCodeDockerApi.credentials.js","sourceRoot":"","sources":["../../credentials/ClaudeCodeDockerApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAC/B,IAAI,GAAG,qBAAqB,CAAC;IAC7B,WAAW,GAAG,oBAAoB,CAAC;IACnC,IAAI,GAAS,8BAA8B,CAAC;IAC5C,gBAAgB,GACf,4DAA4D,CAAC;IAE9D,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE;gBACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;gBACzC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;aACrC;YACD,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,sCAAsC;SACnD;QACD;YACC,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE;gBACf,IAAI,EAAE;oBACL,mBAAmB,EAAE,CAAC,MAAM,CAAC;iBAC7B;aACD;YACD,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,kDAAkD;SAC/D;QACD;YACC,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE;gBACf,IAAI,EAAE;oBACL,mBAAmB,EAAE,CAAC,IAAI,CAAC;iBAC3B;aACD;YACD,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,gDAAgD;SAC7D;QACD;YACC,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,qDAAqD;YAClE,WAAW,EAAE,uDAAuD;SACpE;QACD;YACC,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,cAAc;YAC3B,WAAW,EACV,6EAA6E;SAC9E;QACD;YACC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,0CAA0C;SACvD;QACD;YACC,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,gDAAgD;SAC7D;KACD,CAAC;CACF;AA/ED,kDA+EC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeCodeLocalApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/ClaudeCodeLocalApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3E,qBAAa,kBAAmB,YAAW,eAAe;IACzD,IAAI,SAAwB;IAC5B,WAAW,SAAuB;IAClC,IAAI,EAAE,IAAI,CAAiE;IAC3E,gBAAgB,SAC8C;IAE9D,UAAU,EAAE,eAAe,EAAE,CA0B3B;CACF"}
1
+ {"version":3,"file":"ClaudeCodeLocalApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/ClaudeCodeLocalApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3E,qBAAa,kBAAmB,YAAW,eAAe;IACzD,IAAI,SAAwB;IAC5B,WAAW,SAAuB;IAClC,IAAI,EAAE,IAAI,CAAkC;IAC5C,gBAAgB,SAC8C;IAE9D,UAAU,EAAE,eAAe,EAAE,CA0B3B;CACF"}
@@ -4,7 +4,7 @@ exports.ClaudeCodeLocalApi = void 0;
4
4
  class ClaudeCodeLocalApi {
5
5
  name = "claudeCodeLocalApi";
6
6
  displayName = "Claude Code Local";
7
- icon = { light: "file:claudecode.svg", dark: "file:claudecode.svg" };
7
+ icon = "file:../icons/claudecode.svg";
8
8
  documentationUrl = "https://github.com/ThomasTartrau/n8n-nodes-claude-code-cli";
9
9
  properties = [
10
10
  {
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeCodeLocalApi.credentials.js","sourceRoot":"","sources":["../../credentials/ClaudeCodeLocalApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAC9B,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GAAG,mBAAmB,CAAC;IAClC,IAAI,GAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC3E,gBAAgB,GACf,4DAA4D,CAAC;IAE9D,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,WAAW,EACV,8EAA8E;SAC/E;QACD;YACC,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EACV,wFAAwF;SACzF;QACD;YACC,WAAW,EAAE,uBAAuB;YACpC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EACV,yFAAyF;SAC1F;KACD,CAAC;CACF;AAlCD,gDAkCC"}
1
+ {"version":3,"file":"ClaudeCodeLocalApi.credentials.js","sourceRoot":"","sources":["../../credentials/ClaudeCodeLocalApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAC9B,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GAAG,mBAAmB,CAAC;IAClC,IAAI,GAAS,8BAA8B,CAAC;IAC5C,gBAAgB,GACf,4DAA4D,CAAC;IAE9D,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,WAAW,EACV,8EAA8E;SAC/E;QACD;YACC,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EACV,wFAAwF;SACzF;QACD;YACC,WAAW,EAAE,uBAAuB;YACpC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EACV,yFAAyF;SAC1F;KACD,CAAC;CACF;AAlCD,gDAkCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeCodeSshApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/ClaudeCodeSshApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3E,qBAAa,gBAAiB,YAAW,eAAe;IACvD,IAAI,SAAsB;IAC1B,WAAW,SAAqB;IAChC,IAAI,EAAE,IAAI,CAAiE;IAC3E,gBAAgB,SAC8C;IAE9D,UAAU,EAAE,eAAe,EAAE,CA8G3B;CACF"}
1
+ {"version":3,"file":"ClaudeCodeSshApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/ClaudeCodeSshApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3E,qBAAa,gBAAiB,YAAW,eAAe;IACvD,IAAI,SAAsB;IAC1B,WAAW,SAAqB;IAChC,IAAI,EAAE,IAAI,CAAkC;IAC5C,gBAAgB,SAC8C;IAE9D,UAAU,EAAE,eAAe,EAAE,CA8G3B;CACF"}
@@ -4,7 +4,7 @@ exports.ClaudeCodeSshApi = void 0;
4
4
  class ClaudeCodeSshApi {
5
5
  name = "claudeCodeSshApi";
6
6
  displayName = "Claude Code SSH";
7
- icon = { light: "file:claudecode.svg", dark: "file:claudecode.svg" };
7
+ icon = "file:../icons/claudecode.svg";
8
8
  documentationUrl = "https://github.com/ThomasTartrau/n8n-nodes-claude-code-cli";
9
9
  properties = [
10
10
  {
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeCodeSshApi.credentials.js","sourceRoot":"","sources":["../../credentials/ClaudeCodeSshApi.credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClaudeCodeSshApi.credentials.js","sourceRoot":"","sources":["../../credentials/ClaudeCodeSshApi.credentials.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  /**
2
2
  * Normalize SSH private key content
3
3
  * Fixes common issues from copy/paste operations:
4
+ * - Literal backslash-n sequences (\\n) that should be newlines
4
5
  * - Windows line endings (\r\n)
5
6
  * - Old Mac line endings (\r)
6
7
  * - Leading/trailing whitespace
8
+ * - Spaces that replaced newlines when pasting
9
+ * - Improper line wrapping in base64 content
7
10
  */
8
11
  export declare function normalizePrivateKey(key: string): string;
9
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sshKeyUtils.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/sshKeyUtils.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAwCA"}
1
+ {"version":3,"file":"sshKeyUtils.d.ts","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/sshKeyUtils.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6CvD;AAaD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAwCA"}
@@ -12,15 +12,61 @@ const SUPPORTED_KEY_HEADERS = [
12
12
  "-----BEGIN EC PRIVATE KEY-----",
13
13
  "-----BEGIN DSA PRIVATE KEY-----",
14
14
  ];
15
+ /**
16
+ * PEM line length for base64 content
17
+ */
18
+ const PEM_LINE_LENGTH = 64;
15
19
  /**
16
20
  * Normalize SSH private key content
17
21
  * Fixes common issues from copy/paste operations:
22
+ * - Literal backslash-n sequences (\\n) that should be newlines
18
23
  * - Windows line endings (\r\n)
19
24
  * - Old Mac line endings (\r)
20
25
  * - Leading/trailing whitespace
26
+ * - Spaces that replaced newlines when pasting
27
+ * - Improper line wrapping in base64 content
21
28
  */
22
29
  function normalizePrivateKey(key) {
23
- return key.replace(/\r\n/g, "\n").replace(/\r/g, "\n").trim();
30
+ // Step 1: Convert literal \n sequences to actual newlines
31
+ // This handles cases where JSON/env vars contain literal "\\n"
32
+ let normalized = key.replace(/\\n/g, "\n");
33
+ // Step 2: Normalize Windows and old Mac line endings
34
+ normalized = normalized.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
35
+ // Step 3: Trim overall whitespace
36
+ normalized = normalized.trim();
37
+ // Step 4: Extract header and footer
38
+ const headerMatch = normalized.match(/(-----BEGIN [A-Z0-9 ]+ KEY-----)/);
39
+ const footerMatch = normalized.match(/(-----END [A-Z0-9 ]+ KEY-----)/);
40
+ if (!headerMatch || !footerMatch) {
41
+ // Can't properly parse, return as-is with basic normalization
42
+ return normalized;
43
+ }
44
+ const header = headerMatch[1];
45
+ const footer = footerMatch[1];
46
+ // Step 5: Extract the base64 content between header and footer
47
+ const headerIndex = normalized.indexOf(header);
48
+ const footerIndex = normalized.indexOf(footer);
49
+ if (headerIndex === -1 || footerIndex === -1 || footerIndex <= headerIndex) {
50
+ return normalized;
51
+ }
52
+ let base64Content = normalized.slice(headerIndex + header.length, footerIndex);
53
+ // Step 6: Clean up the base64 content
54
+ // Remove all whitespace (spaces, newlines, tabs) from the base64 content
55
+ base64Content = base64Content.replace(/\s+/g, "");
56
+ // Step 7: Rewrap base64 content at 64 characters per line (PEM standard)
57
+ const wrappedContent = wrapBase64(base64Content, PEM_LINE_LENGTH);
58
+ // Step 8: Reconstruct the key with proper formatting
59
+ return `${header}\n${wrappedContent}\n${footer}`;
60
+ }
61
+ /**
62
+ * Wrap a base64 string at specified line length
63
+ */
64
+ function wrapBase64(base64, lineLength) {
65
+ const lines = [];
66
+ for (let i = 0; i < base64.length; i += lineLength) {
67
+ lines.push(base64.slice(i, i + lineLength));
68
+ }
69
+ return lines.join("\n");
24
70
  }
25
71
  /**
26
72
  * Validate SSH private key format
@@ -1 +1 @@
1
- {"version":3,"file":"sshKeyUtils.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/sshKeyUtils.ts"],"names":[],"mappings":";;AAkBA,kDAEC;AAMD,gDA2CC;AArED;;GAEG;AACH,MAAM,qBAAqB,GAAG;IAC7B,iCAAiC;IACjC,qCAAqC;IACrC,6BAA6B;IAC7B,gCAAgC;IAChC,iCAAiC;CACjC,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,GAAW;IAI7C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5D,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAC7B,CAAC;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,gEAAgE;aACvE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,KAAK,EACJ,yEAAyE;aAC1E,CAAC;QACH,CAAC;QACD,OAAO;YACN,KAAK,EAAE,KAAK;YACZ,KAAK,EACJ,0EAA0E;SAC3E,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO;YACN,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,kEAAkE;SACzE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"sshKeyUtils.js","sourceRoot":"","sources":["../../../../nodes/ClaudeCode/utils/sshKeyUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-claude-code-cli",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "n8n community node for Claude Code CLI integration - execute AI-assisted coding tasks",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -56,7 +56,6 @@
56
56
  "@types/ssh2": "^1.15.5",
57
57
  "@vitest/coverage-v8": "^4.0.16",
58
58
  "semantic-release": "^25.0.2",
59
- "semantic-release-replace-plugin": "^1.2.7",
60
59
  "testcontainers": "^11.11.0",
61
60
  "typescript": "^5.9.3",
62
61
  "vitest": "^4.0.16"