secretless-ai 0.6.2 → 0.7.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 CHANGED
@@ -143,14 +143,37 @@ Output:
143
143
 
144
144
  The safest setup: keys live in environment variables, AI tools reference them by name.
145
145
 
146
- **Step 1: Move keys to your shell profile**
146
+ **Step 1: Move keys to the correct shell profile**
147
+
148
+ Non-interactive subprocesses (Claude Code's Bash tool, CI/CD, Docker) don't source interactive-only profiles. Use the right file for your platform:
149
+
150
+ | Platform | Shell | Correct File | Why |
151
+ |----------|-------|-------------|-----|
152
+ | macOS | zsh | `~/.zshenv` | Sourced by ALL shells (interactive + non-interactive) |
153
+ | Linux | bash | `~/.bashrc` | Sourced by interactive bash; most tools source it explicitly |
154
+ | Windows | — | System Environment Variables | Use `setx` or Settings > System > Environment Variables |
155
+
156
+ **Common mistakes Secretless auto-fixes:**
157
+ - **macOS:** Adding `export` lines to `~/.zshrc` instead of `~/.zshenv`. Secretless copies them to the correct file during `init`.
158
+ - **Linux:** Adding exports to `~/.bash_profile` instead of `~/.bashrc`, or placing them after the interactive guard in `.bashrc`. Secretless inserts them before the guard.
159
+ - **Windows:** Setting keys only in PowerShell `$PROFILE` (session-only). Secretless runs `setx` to set persistent user environment variables.
147
160
 
148
161
  ```bash
149
- # Add to ~/.zshenv (or ~/.bashrc)
162
+ # macOS (zsh) — add to ~/.zshenv
163
+ export ANTHROPIC_API_KEY="sk-ant-..."
164
+ export OPENAI_API_KEY="sk-proj-..."
165
+
166
+ # Linux (bash) — add to ~/.bashrc (before the interactive guard)
150
167
  export ANTHROPIC_API_KEY="sk-ant-..."
151
168
  export OPENAI_API_KEY="sk-proj-..."
152
169
  ```
153
170
 
171
+ ```powershell
172
+ # Windows — use setx (or Settings > System > Environment Variables)
173
+ setx ANTHROPIC_API_KEY "sk-ant-..."
174
+ setx OPENAI_API_KEY "sk-proj-..."
175
+ ```
176
+
154
177
  **Step 2: Remove keys from AI config files**
155
178
 
156
179
  Delete any hardcoded keys from `CLAUDE.md`, `.cursorrules`, `.env`, etc.
@@ -213,6 +236,37 @@ Confirms keys are usable but hidden from AI. Checks that env vars are set AND th
213
236
  PASS: Secrets are accessible via env vars but hidden from AI context.
214
237
  ```
215
238
 
239
+ ### `npx secretless-ai doctor`
240
+
241
+ Diagnoses shell profile issues that cause "No API keys found" errors. Detects when keys are in an interactive-only profile (like `~/.zshrc`) that non-interactive subprocesses can't see.
242
+
243
+ Use `--fix` to auto-fix: copies export lines from the wrong profile to the correct one (non-destructive, does not modify the original file).
244
+
245
+ ```bash
246
+ npx secretless-ai doctor # Diagnose
247
+ npx secretless-ai doctor --fix # Diagnose and auto-fix
248
+ ```
249
+
250
+ Note: `init` also runs this auto-fix automatically, so most users never need to run `doctor` separately.
251
+
252
+ ```
253
+ Secretless Doctor
254
+
255
+ Platform: darwin
256
+ Shell: zsh
257
+
258
+ Shell profiles:
259
+ - ~/.zshenv (RECOMMENDED): not found
260
+ + ~/.zshrc (interactive-only): 2 key(s)
261
+ - ~/.zprofile (login-only): not found
262
+
263
+ Auto-fix applied:
264
+ Copied 2 export(s) from ~/.zshrc to ~/.zshenv
265
+ + ANTHROPIC_API_KEY
266
+ + OPENAI_API_KEY
267
+ Restart your terminal for changes to take effect.
268
+ ```
269
+
216
270
  ### `npx secretless-ai protect-mcp`
217
271
 
218
272
  Scans all MCP configs on your machine, encrypts plaintext secrets into a local vault, and rewrites configs to use the `secretless-mcp` wrapper. Safe to run multiple times — skips already-protected servers.
package/dist/cli.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  * npx secretless-ai scan — Scan for hardcoded secrets
8
8
  * npx secretless-ai status — Show current protection status
9
9
  * npx secretless-ai verify — Verify keys are usable but hidden from AI
10
+ * npx secretless-ai doctor — Diagnose shell profile issues
10
11
  * npx secretless-ai clean — Scan and redact credentials in transcripts
11
12
  * npx secretless-ai watch — Monitor transcripts in real-time
12
13
  */
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG"}
package/dist/cli.js CHANGED
@@ -8,6 +8,7 @@
8
8
  * npx secretless-ai scan — Scan for hardcoded secrets
9
9
  * npx secretless-ai status — Show current protection status
10
10
  * npx secretless-ai verify — Verify keys are usable but hidden from AI
11
+ * npx secretless-ai doctor — Diagnose shell profile issues
11
12
  * npx secretless-ai clean — Scan and redact credentials in transcripts
12
13
  * npx secretless-ai watch — Monitor transcripts in real-time
13
14
  */
@@ -53,6 +54,7 @@ const verify_1 = require("./verify");
53
54
  const detect_1 = require("./detect");
54
55
  const transcript_1 = require("./transcript");
55
56
  const watch_1 = require("./watch");
57
+ const doctor_1 = require("./doctor");
56
58
  const protect_1 = require("./mcp/protect");
57
59
  const discover_1 = require("./mcp/discover");
58
60
  const classify_1 = require("./mcp/classify");
@@ -87,6 +89,9 @@ function main() {
87
89
  runVerify(projectDir);
88
90
  break;
89
91
  }
92
+ case 'doctor':
93
+ runDoctor(args.includes('--fix'));
94
+ break;
90
95
  case 'clean':
91
96
  runClean(args.slice(1));
92
97
  break;
@@ -158,6 +163,19 @@ function runInit(projectDir) {
158
163
  console.log(` Warning: found ${result.secretsFound} hardcoded credential(s)`);
159
164
  console.log(' Run `npx secretless-ai scan` to see details\n');
160
165
  }
166
+ // Auto-fix shell profile issues
167
+ const fix = (0, doctor_1.fixProfiles)();
168
+ if (fix) {
169
+ console.log(' Shell profile fix:');
170
+ console.log(` Copied ${fix.fixed.length} export(s) from ~/${fix.sourceProfile} to ~/${fix.targetProfile}`);
171
+ for (const v of fix.fixed) {
172
+ console.log(` + ${v}`);
173
+ }
174
+ if (fix.created) {
175
+ console.log(` Created ~/${fix.targetProfile}`);
176
+ }
177
+ console.log(' Restart your terminal for changes to take effect.\n');
178
+ }
161
179
  console.log(' Done. Secrets are now blocked from AI context.\n');
162
180
  }
163
181
  function runScan(projectDir) {
@@ -252,7 +270,85 @@ function runVerify(projectDir) {
252
270
  }
253
271
  else {
254
272
  console.log(' WARN: No API keys found in env vars.');
255
- console.log(' Set keys in ~/.zshenv or ~/.bashrc, then restart your terminal.\n');
273
+ // Quick diagnosis to give targeted advice
274
+ const diag = (0, doctor_1.quickDiagnosis)();
275
+ if (diag.wrongProfile.length > 0) {
276
+ console.log(` Found ${diag.wrongProfile.length} key(s) in an interactive-only shell profile:`);
277
+ for (const v of diag.wrongProfile) {
278
+ console.log(` - ${v}`);
279
+ }
280
+ console.log(' These work in your terminal but fail in subprocesses (CI, Docker, Claude Code).');
281
+ console.log(' Run `npx secretless-ai doctor` for fix instructions.\n');
282
+ }
283
+ else {
284
+ console.log(' Set keys in ~/.zshenv (macOS) or ~/.bashrc (Linux), then restart your terminal.');
285
+ console.log(' Run `npx secretless-ai doctor` to diagnose shell profile issues.\n');
286
+ }
287
+ process.exit(1);
288
+ }
289
+ }
290
+ function runDoctor(autoFix) {
291
+ console.log('\n Secretless Doctor\n');
292
+ const result = (0, doctor_1.doctor)();
293
+ // Platform & shell
294
+ console.log(` Platform: ${result.platform}`);
295
+ console.log(` Shell: ${result.shell}`);
296
+ console.log();
297
+ // Profiles
298
+ console.log(' Shell profiles:');
299
+ for (const profile of result.profiles) {
300
+ const tag = profile.recommendation === 'recommended'
301
+ ? ' (RECOMMENDED)'
302
+ : profile.recommendation === 'interactive-only'
303
+ ? ' (interactive-only)'
304
+ : profile.recommendation === 'login-only'
305
+ ? ' (login-only)'
306
+ : '';
307
+ const status = profile.exists
308
+ ? (profile.exportedVars.length > 0
309
+ ? `${profile.exportedVars.length} key(s)`
310
+ : 'no keys')
311
+ : 'not found';
312
+ console.log(` ${profile.exists ? '+' : '-'} ~/${require('path').basename(profile.path)}${tag}: ${status}`);
313
+ }
314
+ console.log();
315
+ // Findings
316
+ if (result.findings.length > 0) {
317
+ console.log(' Findings:');
318
+ for (const finding of result.findings) {
319
+ const label = finding.severity.toUpperCase();
320
+ console.log(` [${label}] ${finding.message}`);
321
+ if (finding.fix) {
322
+ console.log(` Fix: ${finding.fix}`);
323
+ }
324
+ }
325
+ console.log();
326
+ }
327
+ // Auto-fix if requested or if there are fixable issues
328
+ if (autoFix && result.health !== 'healthy') {
329
+ const fix = (0, doctor_1.fixProfiles)();
330
+ if (fix) {
331
+ console.log(' Auto-fix applied:');
332
+ console.log(` Copied ${fix.fixed.length} export(s) from ~/${fix.sourceProfile} to ~/${fix.targetProfile}`);
333
+ for (const v of fix.fixed) {
334
+ console.log(` + ${v}`);
335
+ }
336
+ if (fix.created) {
337
+ console.log(` Created ~/${fix.targetProfile}`);
338
+ }
339
+ console.log(' Restart your terminal for changes to take effect.\n');
340
+ return;
341
+ }
342
+ }
343
+ // Health verdict
344
+ const verdictMap = {
345
+ healthy: 'HEALTHY: All keys correctly configured for subprocess access.',
346
+ degraded: 'DEGRADED: Keys work in your terminal but may fail in subprocesses.',
347
+ broken: 'BROKEN: Keys are not available to subprocesses.',
348
+ };
349
+ console.log(` ${verdictMap[result.health]}\n`);
350
+ if (result.health !== 'healthy') {
351
+ console.log(' Run `npx secretless-ai doctor --fix` to auto-fix.\n');
256
352
  process.exit(1);
257
353
  }
258
354
  }
@@ -451,6 +547,7 @@ function printHelp() {
451
547
  npx secretless-ai scan Scan for hardcoded secrets
452
548
  npx secretless-ai status Show protection status
453
549
  npx secretless-ai verify Verify keys are usable but hidden from AI
550
+ npx secretless-ai doctor Diagnose shell profile issues (--fix to auto-fix)
454
551
  npx secretless-ai clean Scan and redact credentials in transcripts
455
552
  npx secretless-ai watch Monitor transcripts in real-time
456
553
 
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,iCAA8B;AAC9B,iCAA8B;AAC9B,qCAAkC;AAClC,qCAAkC;AAClC,qCAA2C;AAC3C,6CAAgD;AAChD,mCAA0G;AAC1G,2CAA2C;AAC3C,6CAAoD;AACpD,6CAAiD;AACjD,2CAA8C;AAE9C,8DAA8D;AAC9D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAExD,SAAS,IAAI;IACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,SAAS,CAAC,UAAU,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,SAAS,CAAC,UAAU,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QACD,KAAK,OAAO;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,OAAO;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,aAAa;YAChB,aAAa,EAAE,CAAC;YAChB,MAAM;QACR,KAAK,YAAY;YACf,YAAY,EAAE,CAAC;YACf,MAAM;QACR,KAAK,eAAe;YAClB,eAAe,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;YACtC,MAAM;QACR,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,UAAkB;IACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC;IAEhC,wBAAwB;IACxB,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAA,wBAAe,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,IAAA,wBAAe,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,eAAe;IACf,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,YAAY,0BAA0B,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,OAAO,CAAC,UAAkB;IACjC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC;IAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAC3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB;IACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,CAAC,GAAG,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,wBAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,YAAY,wBAAwB,CAAC,CAAC;IAErE,+BAA+B;IAC/B,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,eAAe,mBAAmB,CAAC,CAAC;QACzF,IAAI,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,8BAA8B,CAAC,CAAC;QAC7G,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB;IACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,wBAAwB;IACxB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAED,UAAU;IACV,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;SAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,UAA8B,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;QACxC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,8DAA8D;IAC9D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,iDAAiD,UAAU,IAAI,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,IAAA,6BAAgB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,YAAY,QAAQ,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkC,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,YAAY,QAAQ,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,aAAa,qBAAqB,MAAM,CAAC,gBAAgB,UAAU,CAAC,CAAC;IACvG,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAElC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,IAAI,IAAA,sBAAc,GAAE,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,IAAA,kBAAU,GAAE,CAAC;YACb,MAAM;QAER,KAAK,MAAM;YACT,IAAI,IAAA,iBAAS,GAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM;QAER,KAAK,QAAQ;YACX,IAAI,IAAA,sBAAc,GAAE,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM;QAER,KAAK,SAAS;YACZ,IAAI,IAAA,0BAAkB,GAAE,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM;QAER,KAAK,WAAW;YACd,IAAI,IAAA,4BAAoB,GAAE,EAAE,CAAC;gBAC3B,IAAA,iBAAS,GAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACvD,CAAC;YACD,MAAM;QAER;YACE,OAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,IAAA,oBAAU,EAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1C,IAAI,MAAM,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;YACjG,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,cAAc,cAAc,CAAC,CAAC;QAE9D,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,YAAY,+BAA+B,MAAM,CAAC,gBAAgB,aAAa,CAAC,CAAC;QACzG,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,gBAAgB,+BAA+B,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAA,6BAAkB,GAAE,CAAC;IAErC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAA,0BAAe,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBAC5E,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,cAAc,WAAW,uBAAuB,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,6BAA6B,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,IAAA,6BAAkB,GAAE,CAAC;IACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAA,uBAAa,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,iCAAiC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;gBACE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCtB,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Shell Profile Doctor
3
+ *
4
+ * Diagnoses why API keys set in shell profiles aren't available in
5
+ * non-interactive subprocesses like Claude Code's Bash tool, CI/CD, or Docker.
6
+ *
7
+ * Cross-platform:
8
+ * macOS/zsh: .zshenv (all shells) vs .zshrc (interactive-only)
9
+ * Linux/bash: .bashrc (before interactive guard) vs .bash_profile (login-only)
10
+ * Windows: System env vars (setx) vs PowerShell $PROFILE (session-only)
11
+ *
12
+ * Security: Only reads shell profiles to detect and relocate export lines.
13
+ * Never stores key values in its own files or state.
14
+ */
15
+ export interface DoctorOptions {
16
+ homeDir?: string;
17
+ shell?: string;
18
+ platform?: string;
19
+ envOverride?: Record<string, string | undefined>;
20
+ /** If true, don't execute system commands (setx on Windows). For testing. */
21
+ dryRun?: boolean;
22
+ }
23
+ export type Severity = 'error' | 'warn' | 'info';
24
+ export type HealthStatus = 'healthy' | 'degraded' | 'broken';
25
+ export interface DoctorFinding {
26
+ severity: Severity;
27
+ message: string;
28
+ fix?: string;
29
+ }
30
+ export interface ProfileInfo {
31
+ path: string;
32
+ exists: boolean;
33
+ /** Which env var names have export lines (not commented out) */
34
+ exportedVars: string[];
35
+ /** Whether this profile is sourced by non-interactive shells */
36
+ nonInteractive: boolean;
37
+ /** Recommendation label for this profile */
38
+ recommendation: 'recommended' | 'interactive-only' | 'login-only' | 'none';
39
+ }
40
+ export interface DoctorResult {
41
+ platform: string;
42
+ shell: string;
43
+ profiles: ProfileInfo[];
44
+ findings: DoctorFinding[];
45
+ health: HealthStatus;
46
+ }
47
+ export interface QuickDiagnosisResult {
48
+ /** Env var names found in interactive-only profiles but missing from process.env */
49
+ wrongProfile: string[];
50
+ /** Env var names not found in any profile */
51
+ missingEverywhere: string[];
52
+ }
53
+ export interface FixResult {
54
+ /** Env var names that were fixed */
55
+ fixed: string[];
56
+ /** Source profile the values were found in */
57
+ sourceProfile: string;
58
+ /** Destination profile or mechanism used for the fix */
59
+ targetProfile: string;
60
+ /** Whether the target profile was created (vs appended to) */
61
+ created: boolean;
62
+ /** For Windows: setx commands that were executed */
63
+ commands?: string[];
64
+ }
65
+ export declare function doctor(options?: DoctorOptions): DoctorResult;
66
+ export declare function quickDiagnosis(options?: DoctorOptions): QuickDiagnosisResult;
67
+ /**
68
+ * Detects export lines in wrong shell profiles and copies them to the
69
+ * correct location automatically.
70
+ *
71
+ * Platform behavior:
72
+ * macOS/zsh: Copies from .zshrc to .zshenv (appends)
73
+ * Linux/bash: Copies from .bash_profile/.profile to .bashrc (inserts
74
+ * BEFORE the interactive guard so non-interactive shells see them)
75
+ * Windows: Reads values from PowerShell $PROFILE, runs setx to set
76
+ * persistent user environment variables
77
+ *
78
+ * Non-destructive: does not remove lines from the original profile.
79
+ * Returns null if nothing needs fixing.
80
+ */
81
+ export declare function fixProfiles(options?: DoctorOptions): FixResult | null;
82
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,cAAc,EAAE,OAAO,CAAC;IACxB,4CAA4C;IAC5C,cAAc,EAAE,aAAa,GAAG,kBAAkB,GAAG,YAAY,GAAG,MAAM,CAAC;CAC5E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,oFAAoF;IACpF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAkJD,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAwI5D;AAID,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,oBAAoB,CAyC5E;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAyErE"}
package/dist/doctor.js ADDED
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ /**
3
+ * Shell Profile Doctor
4
+ *
5
+ * Diagnoses why API keys set in shell profiles aren't available in
6
+ * non-interactive subprocesses like Claude Code's Bash tool, CI/CD, or Docker.
7
+ *
8
+ * Cross-platform:
9
+ * macOS/zsh: .zshenv (all shells) vs .zshrc (interactive-only)
10
+ * Linux/bash: .bashrc (before interactive guard) vs .bash_profile (login-only)
11
+ * Windows: System env vars (setx) vs PowerShell $PROFILE (session-only)
12
+ *
13
+ * Security: Only reads shell profiles to detect and relocate export lines.
14
+ * Never stores key values in its own files or state.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.doctor = doctor;
51
+ exports.quickDiagnosis = quickDiagnosis;
52
+ exports.fixProfiles = fixProfiles;
53
+ const fs = __importStar(require("fs"));
54
+ const os = __importStar(require("os"));
55
+ const path = __importStar(require("path"));
56
+ const child_process_1 = require("child_process");
57
+ const patterns_1 = require("./patterns");
58
+ const ZSH_PROFILES = [
59
+ { file: '.zshenv', nonInteractive: true, recommendation: 'recommended' },
60
+ { file: '.zshrc', nonInteractive: false, recommendation: 'interactive-only' },
61
+ { file: '.zprofile', nonInteractive: false, recommendation: 'login-only' },
62
+ ];
63
+ const BASH_PROFILES = [
64
+ { file: '.bashrc', nonInteractive: false, recommendation: 'recommended' },
65
+ { file: '.bash_profile', nonInteractive: false, recommendation: 'login-only' },
66
+ { file: '.profile', nonInteractive: false, recommendation: 'login-only' },
67
+ ];
68
+ const POWERSHELL_PROFILES = [
69
+ { file: 'Documents/PowerShell/Microsoft.PowerShell_profile.ps1', nonInteractive: false, recommendation: 'interactive-only', syntax: 'powershell' },
70
+ { file: 'Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1', nonInteractive: false, recommendation: 'interactive-only', syntax: 'powershell' },
71
+ ];
72
+ // ── Known env var names to look for ──────────────────────────────────────────
73
+ function getKnownEnvVarNames() {
74
+ const names = new Set();
75
+ for (const p of patterns_1.CREDENTIAL_PATTERNS) {
76
+ names.add(p.envPrefix);
77
+ }
78
+ return [...names];
79
+ }
80
+ // ── Profile scanning ─────────────────────────────────────────────────────────
81
+ // POSIX (bash/zsh): export VAR_NAME="value"
82
+ const EXPORT_LINE_RE = /^\s*export\s+([A-Z_][A-Z0-9_]*)=/;
83
+ const COMMENT_RE = /^\s*#/;
84
+ // PowerShell: $env:VAR_NAME = "value"
85
+ const PS_ENV_LINE_RE = /^\s*\$env:([A-Z_][A-Z0-9_]*)\s*=/;
86
+ function scanProfile(filePath, knownVars, syntax = 'posix') {
87
+ if (!fs.existsSync(filePath))
88
+ return [];
89
+ let content;
90
+ try {
91
+ content = fs.readFileSync(filePath, 'utf-8');
92
+ }
93
+ catch {
94
+ return [];
95
+ }
96
+ const lineRe = syntax === 'powershell' ? PS_ENV_LINE_RE : EXPORT_LINE_RE;
97
+ const found = [];
98
+ for (const line of content.split('\n')) {
99
+ if (COMMENT_RE.test(line))
100
+ continue;
101
+ const match = lineRe.exec(line);
102
+ if (match && knownVars.includes(match[1])) {
103
+ found.push(match[1]);
104
+ }
105
+ }
106
+ return found;
107
+ }
108
+ /** Extract full export lines (verbatim) for specific var names from a profile */
109
+ function extractExportLines(filePath, varNames, syntax = 'posix') {
110
+ const result = new Map();
111
+ if (!fs.existsSync(filePath))
112
+ return result;
113
+ let content;
114
+ try {
115
+ content = fs.readFileSync(filePath, 'utf-8');
116
+ }
117
+ catch {
118
+ return result;
119
+ }
120
+ const lineRe = syntax === 'powershell' ? PS_ENV_LINE_RE : EXPORT_LINE_RE;
121
+ for (const line of content.split('\n')) {
122
+ if (COMMENT_RE.test(line))
123
+ continue;
124
+ const match = lineRe.exec(line);
125
+ if (match && varNames.includes(match[1])) {
126
+ result.set(match[1], line);
127
+ }
128
+ }
129
+ return result;
130
+ }
131
+ /**
132
+ * Extract the value from a PowerShell `$env:VAR = "value"` line.
133
+ * Handles double-quoted, single-quoted, and unquoted values.
134
+ */
135
+ function extractPsValue(line) {
136
+ // Match: $env:VAR = "value" or $env:VAR = 'value' or $env:VAR = value
137
+ const match = line.match(/^\s*\$env:[A-Z_][A-Z0-9_]*\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S+))/);
138
+ if (!match)
139
+ return null;
140
+ return match[1] ?? match[2] ?? match[3] ?? null;
141
+ }
142
+ /** Resolve which profile specs to use for the given shell/platform */
143
+ function resolveProfileSpecs(shell, platform) {
144
+ if (platform === 'win32') {
145
+ return POWERSHELL_PROFILES;
146
+ }
147
+ const shellName = path.basename(shell);
148
+ if (shellName === 'zsh' || shell.endsWith('/zsh')) {
149
+ return ZSH_PROFILES;
150
+ }
151
+ else if (shellName === 'bash' || shell.endsWith('/bash')) {
152
+ return BASH_PROFILES;
153
+ }
154
+ return platform === 'darwin' ? ZSH_PROFILES : BASH_PROFILES;
155
+ }
156
+ // ── Bash interactive guard detection ─────────────────────────────────────────
157
+ /**
158
+ * On most Linux distros, .bashrc starts with an interactive guard:
159
+ * case $- in *i*) ;; *) return;; esac
160
+ * or:
161
+ * [ -z "$PS1" ] && return
162
+ *
163
+ * Exports placed AFTER this guard won't be set in non-interactive shells.
164
+ * This function finds the line number of the guard so we can insert before it.
165
+ */
166
+ function findBashInteractiveGuard(content) {
167
+ const lines = content.split('\n');
168
+ for (let i = 0; i < lines.length; i++) {
169
+ const line = lines[i].trim();
170
+ // case $- in pattern (Debian/Ubuntu)
171
+ if (/^case\s+\$-\s+in/.test(line))
172
+ return i;
173
+ // [ -z "$PS1" ] && return (some distros)
174
+ if (/\[\s*-z\s+"\$PS1"\s*\]/.test(line))
175
+ return i;
176
+ // [[ $- != *i* ]] && return (another variant)
177
+ if (/\[\[\s*\$-\s*!=\s*\*i\*\s*\]\]/.test(line))
178
+ return i;
179
+ }
180
+ return -1; // No guard found
181
+ }
182
+ // ── Main doctor function ─────────────────────────────────────────────────────
183
+ function doctor(options) {
184
+ const home = options?.homeDir ?? os.homedir();
185
+ const shell = options?.shell ?? process.env.SHELL ?? '';
186
+ const platform = options?.platform ?? os.platform();
187
+ const env = options?.envOverride ?? process.env;
188
+ const knownVars = getKnownEnvVarNames();
189
+ // Pick profile specs based on shell/platform
190
+ const shellName = platform === 'win32' ? 'powershell' : path.basename(shell);
191
+ const specs = resolveProfileSpecs(shell, platform);
192
+ // Scan each profile
193
+ const profiles = specs.map((spec) => {
194
+ const fullPath = path.join(home, spec.file);
195
+ const exists = fs.existsSync(fullPath);
196
+ const syntax = spec.syntax ?? 'posix';
197
+ const exportedVars = exists ? scanProfile(fullPath, knownVars, syntax) : [];
198
+ return {
199
+ path: fullPath,
200
+ exists,
201
+ exportedVars,
202
+ nonInteractive: spec.nonInteractive,
203
+ recommendation: spec.recommendation,
204
+ };
205
+ });
206
+ // Build findings
207
+ const findings = [];
208
+ // Check each known env var
209
+ const varsInEnv = knownVars.filter((v) => !!env[v]);
210
+ // Vars in a non-recommended profile but not in env
211
+ const allExportedVars = new Set();
212
+ const varsInNonInteractiveProfile = new Set();
213
+ const varsInInteractiveOnlyProfile = new Set();
214
+ for (const profile of profiles) {
215
+ for (const v of profile.exportedVars) {
216
+ allExportedVars.add(v);
217
+ if (profile.nonInteractive) {
218
+ varsInNonInteractiveProfile.add(v);
219
+ }
220
+ else {
221
+ varsInInteractiveOnlyProfile.add(v);
222
+ }
223
+ }
224
+ }
225
+ // Windows: keys in PS profile but not in system env
226
+ if (platform === 'win32') {
227
+ for (const v of varsInInteractiveOnlyProfile) {
228
+ if (!env[v]) {
229
+ findings.push({
230
+ severity: 'error',
231
+ message: `${v} is in PowerShell $PROFILE (session-only) but not set as a system environment variable`,
232
+ fix: `Run: setx ${v} "<value>" (sets persistent user env var)`,
233
+ });
234
+ }
235
+ }
236
+ for (const v of varsInEnv) {
237
+ if (varsInInteractiveOnlyProfile.has(v)) {
238
+ findings.push({
239
+ severity: 'info',
240
+ message: `${v} is available (set as system environment variable)`,
241
+ });
242
+ }
243
+ else if (!allExportedVars.has(v)) {
244
+ findings.push({
245
+ severity: 'info',
246
+ message: `${v} is correctly configured and available`,
247
+ });
248
+ }
249
+ }
250
+ }
251
+ else {
252
+ // macOS/Linux: keys in wrong profile
253
+ for (const v of varsInInteractiveOnlyProfile) {
254
+ if (!varsInNonInteractiveProfile.has(v) && !env[v]) {
255
+ const interactiveProfile = profiles.find((p) => !p.nonInteractive && p.exportedVars.includes(v));
256
+ const recommendedProfile = profiles.find((p) => p.recommendation === 'recommended');
257
+ if (interactiveProfile && recommendedProfile) {
258
+ findings.push({
259
+ severity: 'error',
260
+ message: `${v} is in ~/${path.basename(interactiveProfile.path)} (interactive-only) but not available in subprocesses`,
261
+ fix: `Move the export line from ~/${path.basename(interactiveProfile.path)} to ~/${path.basename(recommendedProfile.path)}`,
262
+ });
263
+ }
264
+ }
265
+ }
266
+ // Vars in env and in non-interactive profile = healthy
267
+ for (const v of varsInEnv) {
268
+ if (varsInNonInteractiveProfile.has(v)) {
269
+ findings.push({
270
+ severity: 'info',
271
+ message: `${v} is correctly configured and available`,
272
+ });
273
+ }
274
+ else if (varsInInteractiveOnlyProfile.has(v)) {
275
+ const recommendedProfile = profiles.find((p) => p.recommendation === 'recommended');
276
+ if (recommendedProfile) {
277
+ findings.push({
278
+ severity: 'warn',
279
+ message: `${v} works in your terminal but may fail in subprocesses (CI, Docker, Claude Code Bash)`,
280
+ fix: `Move the export line to ~/${path.basename(recommendedProfile.path)}`,
281
+ });
282
+ }
283
+ }
284
+ }
285
+ }
286
+ // Determine health
287
+ let health = 'healthy';
288
+ if (findings.some((f) => f.severity === 'error')) {
289
+ health = 'broken';
290
+ }
291
+ else if (findings.some((f) => f.severity === 'warn')) {
292
+ health = 'degraded';
293
+ }
294
+ else if (varsInEnv.length === 0 && allExportedVars.size === 0) {
295
+ health = 'broken';
296
+ const fixTarget = platform === 'win32'
297
+ ? 'Use setx or Settings > System > Environment Variables'
298
+ : `Add export lines to ~/${path.basename(profiles.find((p) => p.recommendation === 'recommended')?.path ?? specs[0].file)}`;
299
+ findings.push({
300
+ severity: 'error',
301
+ message: 'No API keys found in env vars or shell profiles',
302
+ fix: fixTarget,
303
+ });
304
+ }
305
+ return {
306
+ platform,
307
+ shell: shellName || 'unknown',
308
+ profiles,
309
+ findings,
310
+ health,
311
+ };
312
+ }
313
+ // ── Quick diagnosis (lightweight, for verify output) ─────────────────────────
314
+ function quickDiagnosis(options) {
315
+ const home = options?.homeDir ?? os.homedir();
316
+ const shell = options?.shell ?? process.env.SHELL ?? '';
317
+ const platform = options?.platform ?? os.platform();
318
+ const env = options?.envOverride ?? process.env;
319
+ const knownVars = getKnownEnvVarNames();
320
+ // Only check the 2-3 most common profiles
321
+ const shellName = path.basename(shell);
322
+ let quickProfiles;
323
+ if (shellName === 'zsh' || shell.endsWith('/zsh') || platform === 'darwin') {
324
+ quickProfiles = [
325
+ { file: '.zshenv', nonInteractive: true, recommendation: 'recommended' },
326
+ { file: '.zshrc', nonInteractive: false, recommendation: 'interactive-only' },
327
+ ];
328
+ }
329
+ else {
330
+ quickProfiles = [
331
+ { file: '.bashrc', nonInteractive: false, recommendation: 'recommended' },
332
+ { file: '.bash_profile', nonInteractive: false, recommendation: 'login-only' },
333
+ ];
334
+ }
335
+ const wrongProfile = [];
336
+ const allFound = new Set();
337
+ for (const spec of quickProfiles) {
338
+ const fullPath = path.join(home, spec.file);
339
+ const exported = scanProfile(fullPath, knownVars);
340
+ for (const v of exported) {
341
+ allFound.add(v);
342
+ // In an interactive-only profile and not in env = wrong profile
343
+ if (!spec.nonInteractive && !env[v]) {
344
+ wrongProfile.push(v);
345
+ }
346
+ }
347
+ }
348
+ // Vars not found in any checked profile and not in env
349
+ const missingEverywhere = knownVars.filter((v) => !allFound.has(v) && !env[v]);
350
+ return { wrongProfile, missingEverywhere };
351
+ }
352
+ // ── Auto-fix: copy exports to the correct profile ────────────────────────────
353
+ /**
354
+ * Detects export lines in wrong shell profiles and copies them to the
355
+ * correct location automatically.
356
+ *
357
+ * Platform behavior:
358
+ * macOS/zsh: Copies from .zshrc to .zshenv (appends)
359
+ * Linux/bash: Copies from .bash_profile/.profile to .bashrc (inserts
360
+ * BEFORE the interactive guard so non-interactive shells see them)
361
+ * Windows: Reads values from PowerShell $PROFILE, runs setx to set
362
+ * persistent user environment variables
363
+ *
364
+ * Non-destructive: does not remove lines from the original profile.
365
+ * Returns null if nothing needs fixing.
366
+ */
367
+ function fixProfiles(options) {
368
+ const home = options?.homeDir ?? os.homedir();
369
+ const shell = options?.shell ?? process.env.SHELL ?? '';
370
+ const platform = options?.platform ?? os.platform();
371
+ const dryRun = options?.dryRun ?? false;
372
+ const knownVars = getKnownEnvVarNames();
373
+ const specs = resolveProfileSpecs(shell, platform);
374
+ // ── Windows: extract values from PS profile, run setx ──────────────────
375
+ if (platform === 'win32') {
376
+ return fixWindowsProfiles(home, specs, knownVars, options?.envOverride ?? process.env, dryRun);
377
+ }
378
+ // ── macOS / Linux: copy export lines to correct profile ────────────────
379
+ const recommendedSpec = specs.find((s) => s.recommendation === 'recommended');
380
+ if (!recommendedSpec)
381
+ return null;
382
+ const targetPath = path.join(home, recommendedSpec.file);
383
+ const targetVars = scanProfile(targetPath, knownVars);
384
+ const targetVarSet = new Set(targetVars);
385
+ // Find vars in non-recommended profiles that are NOT already in the recommended profile
386
+ const varsToFix = [];
387
+ const sourceLines = new Map();
388
+ let primarySource = '';
389
+ for (const spec of specs) {
390
+ if (spec.file === recommendedSpec.file)
391
+ continue;
392
+ const sourcePath = path.join(home, spec.file);
393
+ const lines = extractExportLines(sourcePath, knownVars);
394
+ for (const [varName, line] of lines) {
395
+ if (!targetVarSet.has(varName) && !sourceLines.has(varName)) {
396
+ varsToFix.push(varName);
397
+ sourceLines.set(varName, line);
398
+ if (!primarySource)
399
+ primarySource = spec.file;
400
+ }
401
+ }
402
+ }
403
+ if (varsToFix.length === 0)
404
+ return null;
405
+ // Build the block of export lines
406
+ const linesToAppend = varsToFix.map((v) => sourceLines.get(v));
407
+ const block = '\n# Added by secretless-ai (moved from wrong shell profile)\n'
408
+ + linesToAppend.join('\n') + '\n';
409
+ const created = !fs.existsSync(targetPath);
410
+ const existing = created ? '' : fs.readFileSync(targetPath, 'utf-8');
411
+ // On Linux/bash: insert BEFORE the interactive guard so non-interactive shells see the exports
412
+ const isLinuxBash = recommendedSpec.file === '.bashrc';
413
+ if (isLinuxBash && !created) {
414
+ const guardLine = findBashInteractiveGuard(existing);
415
+ if (guardLine > 0) {
416
+ const lines = existing.split('\n');
417
+ lines.splice(guardLine, 0, ...block.split('\n'));
418
+ fs.writeFileSync(targetPath, lines.join('\n'));
419
+ }
420
+ else {
421
+ // No guard found — safe to append
422
+ fs.writeFileSync(targetPath, existing + block);
423
+ }
424
+ }
425
+ else {
426
+ // macOS/zsh or fresh file — append
427
+ fs.writeFileSync(targetPath, existing + block);
428
+ }
429
+ return {
430
+ fixed: varsToFix,
431
+ sourceProfile: primarySource,
432
+ targetProfile: recommendedSpec.file,
433
+ created,
434
+ };
435
+ }
436
+ /** Windows-specific fix: extract values from PS profile and run setx */
437
+ function fixWindowsProfiles(home, specs, knownVars, env, dryRun) {
438
+ const varsToFix = [];
439
+ const varValues = new Map();
440
+ let primarySource = '';
441
+ for (const spec of specs) {
442
+ const sourcePath = path.join(home, spec.file);
443
+ const lines = extractExportLines(sourcePath, knownVars, 'powershell');
444
+ for (const [varName, line] of lines) {
445
+ // Only fix vars not already in system env
446
+ if (!env[varName] && !varValues.has(varName)) {
447
+ const value = extractPsValue(line);
448
+ if (value) {
449
+ varsToFix.push(varName);
450
+ varValues.set(varName, value);
451
+ if (!primarySource)
452
+ primarySource = spec.file;
453
+ }
454
+ }
455
+ }
456
+ }
457
+ if (varsToFix.length === 0)
458
+ return null;
459
+ const commands = [];
460
+ for (const varName of varsToFix) {
461
+ const value = varValues.get(varName);
462
+ const cmd = `setx ${varName} "${value}"`;
463
+ commands.push(cmd);
464
+ if (!dryRun) {
465
+ try {
466
+ (0, child_process_1.execSync)(cmd, { stdio: 'pipe' });
467
+ }
468
+ catch {
469
+ // setx failed — continue with remaining vars
470
+ }
471
+ }
472
+ }
473
+ return {
474
+ fixed: varsToFix,
475
+ sourceProfile: primarySource,
476
+ targetProfile: 'System Environment Variables (setx)',
477
+ created: false,
478
+ commands,
479
+ };
480
+ }
481
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,5 +6,6 @@ export { detectAITools, toolDisplayName, type AITool } from './detect';
6
6
  export { CREDENTIAL_PATTERNS, SECRET_FILE_PATTERNS, CONFIG_FILES, CREDENTIAL_PREFIX_QUICK_CHECK, type CredentialPattern } from './patterns';
7
7
  export { cleanTranscripts, discoverTranscripts, type CleanResult, type CleanOptions, type TranscriptFinding } from './transcript';
8
8
  export { startWatch, stopWatch, isWatchRunning } from './watch';
9
+ export { doctor, quickDiagnosis, fixProfiles, type DoctorOptions, type DoctorResult, type DoctorFinding, type QuickDiagnosisResult, type ProfileInfo, type FixResult, type Severity, type HealthStatus } from './doctor';
9
10
  export { discoverMcpConfigs, classifyEnvVars, McpVault, protectMcp, rewriteConfig, restoreConfig, type McpClient, type McpConfigFile, type McpServerEntry, type ClassifiedEnv, type ProtectOptions, type ProtectResult, type RewriteResult, } from './mcp';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClI,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,EACL,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAC7C,UAAU,EAAE,aAAa,EAAE,aAAa,EACxC,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EACvD,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAC3D,KAAK,aAAa,GACnB,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClI,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGzN,OAAO,EACL,kBAAkB,EAAE,eAAe,EAAE,QAAQ,EAC7C,UAAU,EAAE,aAAa,EAAE,aAAa,EACxC,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EACvD,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAC3D,KAAK,aAAa,GACnB,MAAM,OAAO,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.restoreConfig = exports.rewriteConfig = exports.protectMcp = exports.McpVault = exports.classifyEnvVars = exports.discoverMcpConfigs = exports.isWatchRunning = exports.stopWatch = exports.startWatch = exports.discoverTranscripts = exports.cleanTranscripts = exports.CREDENTIAL_PREFIX_QUICK_CHECK = exports.CONFIG_FILES = exports.SECRET_FILE_PATTERNS = exports.CREDENTIAL_PATTERNS = exports.toolDisplayName = exports.detectAITools = exports.verify = exports.status = exports.scan = exports.init = void 0;
3
+ exports.restoreConfig = exports.rewriteConfig = exports.protectMcp = exports.McpVault = exports.classifyEnvVars = exports.discoverMcpConfigs = exports.fixProfiles = exports.quickDiagnosis = exports.doctor = exports.isWatchRunning = exports.stopWatch = exports.startWatch = exports.discoverTranscripts = exports.cleanTranscripts = exports.CREDENTIAL_PREFIX_QUICK_CHECK = exports.CONFIG_FILES = exports.SECRET_FILE_PATTERNS = exports.CREDENTIAL_PATTERNS = exports.toolDisplayName = exports.detectAITools = exports.verify = exports.status = exports.scan = exports.init = void 0;
4
4
  var init_1 = require("./init");
5
5
  Object.defineProperty(exports, "init", { enumerable: true, get: function () { return init_1.init; } });
6
6
  var scan_1 = require("./scan");
@@ -24,6 +24,10 @@ var watch_1 = require("./watch");
24
24
  Object.defineProperty(exports, "startWatch", { enumerable: true, get: function () { return watch_1.startWatch; } });
25
25
  Object.defineProperty(exports, "stopWatch", { enumerable: true, get: function () { return watch_1.stopWatch; } });
26
26
  Object.defineProperty(exports, "isWatchRunning", { enumerable: true, get: function () { return watch_1.isWatchRunning; } });
27
+ var doctor_1 = require("./doctor");
28
+ Object.defineProperty(exports, "doctor", { enumerable: true, get: function () { return doctor_1.doctor; } });
29
+ Object.defineProperty(exports, "quickDiagnosis", { enumerable: true, get: function () { return doctor_1.quickDiagnosis; } });
30
+ Object.defineProperty(exports, "fixProfiles", { enumerable: true, get: function () { return doctor_1.fixProfiles; } });
27
31
  // MCP protection
28
32
  var mcp_1 = require("./mcp");
29
33
  Object.defineProperty(exports, "discoverMcpConfigs", { enumerable: true, get: function () { return mcp_1.discoverMcpConfigs; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,+BAAkE;AAAzD,4FAAA,IAAI,OAAA;AACb,mCAAqD;AAA5C,gGAAA,MAAM,OAAA;AACf,mCAAqD;AAA5C,gGAAA,MAAM,OAAA;AACf,mCAAuE;AAA9D,uGAAA,aAAa,OAAA;AAAE,yGAAA,eAAe,OAAA;AACvC,uCAA4I;AAAnI,+GAAA,mBAAmB,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,yHAAA,6BAA6B,OAAA;AAC/F,2CAAkI;AAAzH,8GAAA,gBAAgB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAC9C,iCAAgE;AAAvD,mGAAA,UAAU,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,uGAAA,cAAc,OAAA;AAE9C,iBAAiB;AACjB,6BAMe;AALb,yGAAA,kBAAkB,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAC7C,iGAAA,UAAU,OAAA;AAAE,oGAAA,aAAa,OAAA;AAAE,oGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,+BAAkE;AAAzD,4FAAA,IAAI,OAAA;AACb,mCAAqD;AAA5C,gGAAA,MAAM,OAAA;AACf,mCAAqD;AAA5C,gGAAA,MAAM,OAAA;AACf,mCAAuE;AAA9D,uGAAA,aAAa,OAAA;AAAE,yGAAA,eAAe,OAAA;AACvC,uCAA4I;AAAnI,+GAAA,mBAAmB,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,yHAAA,6BAA6B,OAAA;AAC/F,2CAAkI;AAAzH,8GAAA,gBAAgB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAC9C,iCAAgE;AAAvD,mGAAA,UAAU,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,uGAAA,cAAc,OAAA;AAC9C,mCAAyN;AAAhN,gGAAA,MAAM,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,qGAAA,WAAW,OAAA;AAE5C,iBAAiB;AACjB,6BAMe;AALb,yGAAA,kBAAkB,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAC7C,iGAAA,UAAU,OAAA;AAAE,oGAAA,aAAa,OAAA;AAAE,oGAAA,aAAa,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "secretless-ai",
3
- "version": "0.6.2",
3
+ "version": "0.7.1",
4
4
  "description": "One command to keep secrets out of AI. Works with Claude Code, Cursor, Copilot, Windsurf, and any AI coding tool.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "commonjs",