@delegance/claude-autopilot 1.7.0 → 1.7.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delegance/claude-autopilot",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "type": "module",
5
5
  "description": "Claude Code automation pipeline: spec → plan → implement → validate → PR",
6
6
  "keywords": [
package/src/cli/run.ts CHANGED
@@ -96,17 +96,24 @@ export async function runCommand(options: RunCommandOptions = {}): Promise<numbe
96
96
  return 1;
97
97
  }
98
98
 
99
- // Fill in missing config fields from auto-detection
99
+ // Fill in missing config fields from auto-detection (track what was auto-detected for logging)
100
+ const autoDetected: string[] = [];
101
+
100
102
  if (!config.stack) {
101
103
  const detected = detectStack(cwd);
102
- if (detected) config = { ...config, stack: detected };
104
+ if (detected) { config = { ...config, stack: detected }; autoDetected.push(`stack: ${detected}`); }
103
105
  }
104
106
  if (!config.protectedPaths || config.protectedPaths.length === 0) {
105
107
  const detected = detectProtectedPaths(cwd);
106
- if (detected.length > 0) config = { ...config, protectedPaths: detected };
108
+ if (detected.length > 0) {
109
+ config = { ...config, protectedPaths: detected };
110
+ autoDetected.push(`protected: ${detected.slice(0, 3).join(', ')}${detected.length > 3 ? ` +${detected.length - 3} more` : ''}`);
111
+ }
107
112
  }
108
113
  if (config.testCommand === undefined) {
109
- config = { ...config, testCommand: detectProject(cwd).testCommand };
114
+ const detected = detectProject(cwd).testCommand;
115
+ config = { ...config, testCommand: detected };
116
+ autoDetected.push(`test: ${detected}`);
110
117
  }
111
118
  const gitCtx = detectGitContext(cwd);
112
119
 
@@ -120,6 +127,12 @@ export async function runCommand(options: RunCommandOptions = {}): Promise<numbe
120
127
 
121
128
  console.log(`\n${fmt('bold', '[autopilot run]')} ${fmt('dim', configPath)}`);
122
129
  console.log(`${fmt('dim', ` ${touchedFiles.length} changed file(s):`)} ${touchedFiles.slice(0, 5).join(', ')}${touchedFiles.length > 5 ? ` … +${touchedFiles.length - 5} more` : ''}`);
130
+ if (gitCtx.summary) {
131
+ console.log(fmt('dim', ` ${gitCtx.summary}`));
132
+ }
133
+ if (autoDetected.length > 0) {
134
+ console.log(fmt('dim', ` auto-detected: ${autoDetected.join(' | ')}`));
135
+ }
123
136
 
124
137
  if (options.dryRun) {
125
138
  console.log(fmt('yellow', '\n[run] Dry run — skipping pipeline execution.\n'));
@@ -4,7 +4,7 @@ import type { Finding } from '../../findings/types.ts';
4
4
 
5
5
  const SECRET_PATTERNS: { regex: RegExp; label: string }[] = [
6
6
  { regex: /\bAKIA[0-9A-Z]{16}\b/, label: 'AWS Access Key ID' },
7
- { regex: /(?:password|passwd|pwd)\s*[:=]\s*['"][^'"]{6,}['"]/, label: 'Hardcoded password' },
7
+ { regex: /(?:^|[^a-z])(?:password|passwd|pwd)\s*[:=]\s*['"](?!\/)[^'"]{6,}['"]/, label: 'Hardcoded password' },
8
8
  { regex: /(?:api_key|apikey|api-key)\s*[:=]\s*['"][^'"]{8,}['"]/, label: 'Hardcoded API key' },
9
9
  { regex: /(?:secret|secret_key|secretkey)\s*[:=]\s*['"][^'"]{8,}['"]/, label: 'Hardcoded secret' },
10
10
  { regex: /(?:access_token|accesstoken)\s*[:=]\s*['"][^'"]{8,}['"]/, label: 'Hardcoded access token' },