@damper/cli 0.5.2 → 0.5.3

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/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { statusCommand } from './commands/status.js';
5
5
  import { cleanupCommand } from './commands/cleanup.js';
6
6
  import { setupCommand } from './commands/setup.js';
7
7
  import { releaseCommand } from './commands/release.js';
8
- const VERSION = '0.5.2';
8
+ const VERSION = '0.5.3';
9
9
  function showHelp() {
10
10
  console.log(`
11
11
  ${pc.bold('@damper/cli')} - Agent orchestration for Damper tasks
@@ -1,7 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
3
  import * as os from 'node:os';
4
- import { spawn } from 'node:child_process';
5
4
  import { execa } from 'execa';
6
5
  import pc from 'picocolors';
7
6
  const CLAUDE_SETTINGS_DIR = path.join(os.homedir(), '.claude');
@@ -134,33 +133,30 @@ export async function launchClaude(options) {
134
133
  }
135
134
  // Launch Claude Code in interactive mode
136
135
  try {
137
- await new Promise((resolve, reject) => {
138
- const child = spawn('claude', claudeArgs, {
139
- cwd,
140
- stdio: 'inherit',
141
- shell: true, // Use shell to ensure proper TTY handling
142
- env: {
143
- ...process.env,
144
- DAMPER_API_KEY: apiKey,
145
- },
146
- });
147
- child.on('close', (code) => {
148
- if (process.env.DEBUG) {
149
- console.log(pc.dim(`Debug: Claude exited with code ${code}`));
150
- }
151
- resolve();
152
- });
153
- child.on('error', (err) => {
154
- if (err.code === 'ENOENT') {
155
- console.log(pc.red('\nError: Claude Code CLI not found.'));
156
- console.log(pc.dim('Install it with: npm install -g @anthropic-ai/claude-code\n'));
157
- process.exit(1);
158
- }
159
- reject(err);
160
- });
136
+ // Use execSync for simpler, more reliable TTY passthrough
137
+ const { execSync } = await import('node:child_process');
138
+ // Build command with proper quoting
139
+ const quotedPrompt = initialPrompt.replace(/'/g, "'\\''");
140
+ const cmd = `claude --mcp-config '${mcpConfigPath}' '${quotedPrompt}'`;
141
+ if (process.env.DEBUG) {
142
+ console.log(pc.dim(`Debug: Running: ${cmd}`));
143
+ }
144
+ execSync(cmd, {
145
+ cwd,
146
+ stdio: 'inherit',
147
+ env: {
148
+ ...process.env,
149
+ DAMPER_API_KEY: apiKey,
150
+ },
161
151
  });
162
152
  }
163
- catch {
153
+ catch (err) {
154
+ const error = err;
155
+ if (error.code === 'ENOENT') {
156
+ console.log(pc.red('\nError: Claude Code CLI not found.'));
157
+ console.log(pc.dim('Install it with: npm install -g @anthropic-ai/claude-code\n'));
158
+ process.exit(1);
159
+ }
164
160
  // Claude exited with error - still continue to post-task flow
165
161
  }
166
162
  finally {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damper/cli",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "CLI tool for orchestrating Damper task workflows with Claude Code",
5
5
  "author": "Damper <hello@usedamper.com>",
6
6
  "repository": {