@indy2kro/agentenv 0.1.2 → 0.2.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.
Files changed (110) hide show
  1. package/README.md +105 -46
  2. package/dist/adapters/cline.d.ts +9 -0
  3. package/dist/adapters/cline.d.ts.map +1 -0
  4. package/dist/adapters/cline.js +19 -0
  5. package/dist/adapters/cline.js.map +1 -0
  6. package/dist/adapters/cursor.d.ts +9 -0
  7. package/dist/adapters/cursor.d.ts.map +1 -0
  8. package/dist/adapters/cursor.js +19 -0
  9. package/dist/adapters/cursor.js.map +1 -0
  10. package/dist/adapters/detect.d.ts +1 -1
  11. package/dist/adapters/detect.d.ts.map +1 -1
  12. package/dist/adapters/detect.js +6 -1
  13. package/dist/adapters/detect.js.map +1 -1
  14. package/dist/adapters/gemini.d.ts +9 -0
  15. package/dist/adapters/gemini.d.ts.map +1 -0
  16. package/dist/adapters/gemini.js +19 -0
  17. package/dist/adapters/gemini.js.map +1 -0
  18. package/dist/adapters/index.d.ts +6 -0
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/adapters/index.js +6 -0
  21. package/dist/adapters/index.js.map +1 -1
  22. package/dist/adapters/rtk-delegation.d.ts +28 -0
  23. package/dist/adapters/rtk-delegation.d.ts.map +1 -0
  24. package/dist/adapters/rtk-delegation.js +102 -0
  25. package/dist/adapters/rtk-delegation.js.map +1 -0
  26. package/dist/adapters/vibe.d.ts +9 -0
  27. package/dist/adapters/vibe.d.ts.map +1 -0
  28. package/dist/adapters/vibe.js +19 -0
  29. package/dist/adapters/vibe.js.map +1 -0
  30. package/dist/adapters/windsurf.d.ts +9 -0
  31. package/dist/adapters/windsurf.d.ts.map +1 -0
  32. package/dist/adapters/windsurf.js +19 -0
  33. package/dist/adapters/windsurf.js.map +1 -0
  34. package/dist/commands/apply.d.ts +9 -0
  35. package/dist/commands/apply.d.ts.map +1 -1
  36. package/dist/commands/apply.js +57 -21
  37. package/dist/commands/apply.js.map +1 -1
  38. package/dist/commands/configure.d.ts +2 -1
  39. package/dist/commands/configure.d.ts.map +1 -1
  40. package/dist/commands/configure.js +71 -16
  41. package/dist/commands/configure.js.map +1 -1
  42. package/dist/commands/doctor.d.ts.map +1 -1
  43. package/dist/commands/doctor.js +9 -3
  44. package/dist/commands/doctor.js.map +1 -1
  45. package/dist/commands/setup.d.ts +39 -0
  46. package/dist/commands/setup.d.ts.map +1 -1
  47. package/dist/commands/setup.js +43 -23
  48. package/dist/commands/setup.js.map +1 -1
  49. package/dist/commands/status.d.ts +6 -0
  50. package/dist/commands/status.d.ts.map +1 -1
  51. package/dist/commands/status.js +83 -21
  52. package/dist/commands/status.js.map +1 -1
  53. package/dist/commands/update.d.ts.map +1 -1
  54. package/dist/commands/update.js +67 -9
  55. package/dist/commands/update.js.map +1 -1
  56. package/dist/config/schema.d.ts +26 -2
  57. package/dist/config/schema.d.ts.map +1 -1
  58. package/dist/config/schema.js +142 -43
  59. package/dist/config/schema.js.map +1 -1
  60. package/dist/generate/agentsmd.d.ts.map +1 -1
  61. package/dist/generate/agentsmd.js +10 -0
  62. package/dist/generate/agentsmd.js.map +1 -1
  63. package/dist/index.js +10 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/integrations/index.d.ts +1 -0
  66. package/dist/integrations/index.d.ts.map +1 -1
  67. package/dist/integrations/index.js +1 -0
  68. package/dist/integrations/index.js.map +1 -1
  69. package/dist/integrations/render.d.ts +15 -0
  70. package/dist/integrations/render.d.ts.map +1 -0
  71. package/dist/integrations/render.js +51 -0
  72. package/dist/integrations/render.js.map +1 -0
  73. package/dist/integrations/superpowers.d.ts.map +1 -1
  74. package/dist/integrations/superpowers.js +3 -1
  75. package/dist/integrations/superpowers.js.map +1 -1
  76. package/dist/shell/detector.d.ts +9 -3
  77. package/dist/shell/detector.d.ts.map +1 -1
  78. package/dist/shell/detector.js +147 -101
  79. package/dist/shell/detector.js.map +1 -1
  80. package/dist/toolchain/fallbacks.d.ts.map +1 -1
  81. package/dist/toolchain/fallbacks.js +8 -3
  82. package/dist/toolchain/fallbacks.js.map +1 -1
  83. package/dist/toolchain/mise.d.ts +106 -6
  84. package/dist/toolchain/mise.d.ts.map +1 -1
  85. package/dist/toolchain/mise.js +248 -89
  86. package/dist/toolchain/mise.js.map +1 -1
  87. package/dist/toolchain/rtk.d.ts.map +1 -1
  88. package/dist/toolchain/rtk.js +6 -0
  89. package/dist/toolchain/rtk.js.map +1 -1
  90. package/dist/ui/spinner.d.ts +19 -0
  91. package/dist/ui/spinner.d.ts.map +1 -0
  92. package/dist/ui/spinner.js +27 -0
  93. package/dist/ui/spinner.js.map +1 -0
  94. package/dist/ui/theme.d.ts +22 -0
  95. package/dist/ui/theme.d.ts.map +1 -0
  96. package/dist/ui/theme.js +42 -0
  97. package/dist/ui/theme.js.map +1 -0
  98. package/dist/utils/fs-retry.d.ts +46 -0
  99. package/dist/utils/fs-retry.d.ts.map +1 -0
  100. package/dist/utils/fs-retry.js +94 -0
  101. package/dist/utils/fs-retry.js.map +1 -0
  102. package/dist/utils/output.d.ts +16 -0
  103. package/dist/utils/output.d.ts.map +1 -0
  104. package/dist/utils/output.js +20 -0
  105. package/dist/utils/output.js.map +1 -0
  106. package/dist/wizard/build.d.ts +2 -1
  107. package/dist/wizard/build.d.ts.map +1 -1
  108. package/dist/wizard/build.js +8 -7
  109. package/dist/wizard/build.js.map +1 -1
  110. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Rendering helpers for integration results, shared by `apply` and `status`.
3
+ */
4
+ import type { IntegrationAgentState, IntegrationResult } from './base.js';
5
+ /** Render a single integration/agent pair as a one-line status string. */
6
+ export declare function integrationStateLine(state: IntegrationAgentState): string;
7
+ /**
8
+ * Render an IntegrationResult into display lines: agent states first, then
9
+ * the native commands that were run, changed files, and warnings. Errors are
10
+ * intentionally excluded — callers decide how to surface them.
11
+ */
12
+ export declare function integrationResultLines(result: IntegrationResult): string[];
13
+ /** Render the gh auth result as a single display line. */
14
+ export declare function ghAuthLine(status: 'authenticated' | 'unauthenticated' | 'unknown' | 'not_installed'): string;
15
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/integrations/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAS1E,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAU1E;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CACxB,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,SAAS,GAAG,eAAe,GACxE,MAAM,CAkBR"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Rendering helpers for integration results, shared by `apply` and `status`.
3
+ */
4
+ const STATE_GLYPH = {
5
+ installed: '✓',
6
+ missing: '✗',
7
+ unsupported: '·',
8
+ drifted: '!',
9
+ };
10
+ /** Render a single integration/agent pair as a one-line status string. */
11
+ export function integrationStateLine(state) {
12
+ const glyph = STATE_GLYPH[state.state];
13
+ const detail = state.detail ? ` (${state.detail})` : '';
14
+ return `${glyph} ${state.agent}: ${state.state}${detail}`;
15
+ }
16
+ /**
17
+ * Render an IntegrationResult into display lines: agent states first, then
18
+ * the native commands that were run, changed files, and warnings. Errors are
19
+ * intentionally excluded — callers decide how to surface them.
20
+ */
21
+ export function integrationResultLines(result) {
22
+ const lines = result.agents.map(integrationStateLine);
23
+ if (result.nativeCommands.length > 0) {
24
+ lines.push(`ran: ${result.nativeCommands.join('; ')}`);
25
+ }
26
+ if (result.changedFiles.length > 0) {
27
+ lines.push(`wrote: ${result.changedFiles.join(', ')}`);
28
+ }
29
+ for (const warning of result.warnings)
30
+ lines.push(`warning: ${warning}`);
31
+ return lines;
32
+ }
33
+ /** Render the gh auth result as a single display line. */
34
+ export function ghAuthLine(status) {
35
+ const glyph = status === 'authenticated'
36
+ ? '✓'
37
+ : status === 'unauthenticated'
38
+ ? '✗'
39
+ : status === 'not_installed'
40
+ ? '·'
41
+ : '?';
42
+ const label = status === 'authenticated'
43
+ ? 'authenticated'
44
+ : status === 'unauthenticated'
45
+ ? 'not authenticated'
46
+ : status === 'not_installed'
47
+ ? 'gh not installed'
48
+ : 'unknown';
49
+ return `${glyph} github.com: ${label}`;
50
+ }
51
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/integrations/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,GAAmD;IAClE,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,GAAG;IAChB,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,0EAA0E;AAC1E,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB;IAC9D,MAAM,KAAK,GAAa,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CACxB,MAAyE;IAEzE,MAAM,KAAK,GACT,MAAM,KAAK,eAAe;QACxB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,MAAM,KAAK,iBAAiB;YAC5B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,MAAM,KAAK,eAAe;gBAC1B,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,GAAG,CAAC;IACd,MAAM,KAAK,GACT,MAAM,KAAK,eAAe;QACxB,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,MAAM,KAAK,iBAAiB;YAC5B,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,MAAM,KAAK,eAAe;gBAC1B,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,SAAS,CAAC;IACpB,OAAO,GAAG,KAAK,gBAAgB,KAAK,EAAE,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"superpowers.d.ts","sourceRoot":"","sources":["../../src/integrations/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAyB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9F,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAW3E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;AA6BtF,UAAU,MAAM;IACd,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;IAC1D,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAQD,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,IAAI,GAAE,sBAA2B;IAK7C,OAAO,IAAI,MAAM;IAIjB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO;IAIzD,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,gBAAgB;IAmClB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyB1F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI1F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAmEhG"}
1
+ {"version":3,"file":"superpowers.d.ts","sourceRoot":"","sources":["../../src/integrations/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAyB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9F,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAW3E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;AA6BtF,UAAU,MAAM;IACd,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;IAC1D,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAQD,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,IAAI,GAAE,sBAA2B;IAK7C,OAAO,IAAI,MAAM;IAIjB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO;IAIzD,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,gBAAgB;IAmClB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2B1F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI1F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAmEhG"}
@@ -110,7 +110,9 @@ export class SuperpowersAdapter {
110
110
  }
111
111
  async detect(baseDir, config) {
112
112
  const scope = resolveIntegrationScope({}, config);
113
- const requestedAgents = config?.agents ?? [...AGENT_KEYS];
113
+ const requestedAgents = config?.agents ?? [
114
+ ...AGENT_KEYS,
115
+ ];
114
116
  const result = {
115
117
  name: this.getName(),
116
118
  source: config?.source,
@@ -1 +1 @@
1
- {"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../../src/integrations/superpowers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../../src/integrations/superpowers.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ export declare function applyAgentShellFix(agent: AgentKey, bashExe: string, hom
74
74
  * Fix shell configuration for Windows and macOS
75
75
  * This is a Tier 0 fix - ensures POSIX utilities are available
76
76
  */
77
- export declare function fixShellConfiguration(_baseDir?: string, agents?: AgentKey[]): {
77
+ export declare function fixShellConfiguration(_baseDir?: string, agents?: AgentKey[], complex?: boolean): {
78
78
  success: boolean;
79
79
  message: string;
80
80
  gitBashPath?: string;
@@ -82,9 +82,15 @@ export declare function fixShellConfiguration(_baseDir?: string, agents?: AgentK
82
82
  results?: ShellFixResult[];
83
83
  };
84
84
  /**
85
- * Check if a specific agent is configured to use a POSIX shell
85
+ * Check whether a specific agent's own config already points it at a POSIX
86
+ * (bash) shell — i.e. whether Tier 0's per-agent fix (applyAgentShellFix) has
87
+ * actually taken effect for that agent. Reads exactly the field each
88
+ * patch*ShellFix writes, so this stays in sync with what `apply` can affect;
89
+ * it deliberately does not look at the current process's own shell/env,
90
+ * since that's the interactive shell the user is running agentenv from, not
91
+ * the target agent's configuration.
86
92
  */
87
- export declare function checkAgentShellConfiguration(agent: string): {
93
+ export declare function checkAgentShellConfiguration(agent: AgentKey, home?: string): {
88
94
  isConfigured: boolean;
89
95
  shell?: string;
90
96
  needsFix: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/shell/detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAGF,eAAO,MAAM,cAAc,UAK1B,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAyEvC;AAsHD;;;GAGG;AACH,iBAAS,wBAAwB,IAAI,MAAM,GAAG,SAAS,CA6BtD;AA4BD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAkDA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMvE;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAgBjG;AAoJD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,GAAE,MAAY,EACtB,MAAM,GAAE,QAAQ,EAAoB,GACnC;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B,CAmFA;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAyBA"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/shell/detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAGF,eAAO,MAAM,cAAc,UAK1B,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,SAAS,CA6EvC;AA4HD;;;GAGG;AACH,iBAAS,wBAAwB,IAAI,MAAM,GAAG,SAAS,CAiCtD;AA4BD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAkDA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMvE;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CA4BjG;AAoJD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,GAAE,MAAY,EACtB,MAAM,GAAE,QAAQ,EAAoB,EACpC,OAAO,GAAE,OAAsC,GAC9C;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B,CA2FA;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,QAAQ,EACf,IAAI,GAAE,MAA0D,GAC/D;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAiB9D"}
@@ -7,6 +7,7 @@ import * as path from 'path';
7
7
  import * as winPath from 'path/win32';
8
8
  import * as child_process from 'child_process';
9
9
  import { AGENT_KEYS } from '../config/schema.js';
10
+ import { pathContainsDir } from '../toolchain/mise.js';
10
11
  // Well-known POSIX utilities that should be available
11
12
  export const POSIX_UTILITIES = [
12
13
  'grep',
@@ -54,10 +55,12 @@ export function detectShell() {
54
55
  isPosixCompatible = isGitBash;
55
56
  // Find Git Bash path (used by the Tier 0 fix even when the current shell
56
57
  // is PowerShell/cmd, so agents get pointed at a real POSIX shell).
58
+ // Use path.resolve() to handle paths with spaces properly.
57
59
  for (const gitPath of GIT_BASH_PATHS) {
58
60
  try {
59
- if (fs.existsSync(gitPath)) {
60
- gitBashPath = gitPath;
61
+ const resolvedPath = path.resolve(gitPath);
62
+ if (fs.existsSync(resolvedPath)) {
63
+ gitBashPath = resolvedPath;
61
64
  break;
62
65
  }
63
66
  }
@@ -79,9 +82,11 @@ export function detectShell() {
79
82
  else {
80
83
  // Try to get the gnubin path if coreutils are installed
81
84
  try {
82
- const prefix = child_process
83
- .execSync('brew --prefix coreutils', { encoding: 'utf-8' })
84
- .trim();
85
+ const result = child_process.spawnSync('brew', ['--prefix', 'coreutils'], {
86
+ encoding: 'utf-8',
87
+ stdio: ['ignore', 'pipe', 'pipe'],
88
+ });
89
+ const prefix = result.stdout.trim();
85
90
  gnubinPath = path.join(prefix, 'libexec', 'gnubin');
86
91
  }
87
92
  catch {
@@ -156,11 +161,10 @@ function checkGitBash() {
156
161
  if (shell.toLowerCase().includes('bash')) {
157
162
  return true;
158
163
  }
159
- // Check PATH for Git Bash directories
164
+ // Check PATH for Git Bash directories (spaces-safe, case-folded on win32)
160
165
  const pathEnv = process.env.PATH || '';
161
- const pathParts = pathEnv.split(';');
162
166
  for (const gitPath of GIT_BASH_PATHS) {
163
- if (pathParts.some((p) => p.toLowerCase() === gitPath.toLowerCase())) {
167
+ if (pathContainsDir(pathEnv, gitPath)) {
164
168
  return true;
165
169
  }
166
170
  }
@@ -187,7 +191,11 @@ function checkGNUCoreutils() {
187
191
  // First, get the resolved path - this will follow shell function aliases.
188
192
  // Then invoke the binary directly rather than building a shell string so
189
193
  // paths containing spaces keep working reliably.
190
- const grepPath = child_process.execSync('command -v grep', { encoding: 'utf-8' }).trim();
194
+ const grepResult = child_process.spawnSync('sh', ['-c', 'command -v grep'], {
195
+ encoding: 'utf-8',
196
+ stdio: ['ignore', 'pipe', 'pipe'],
197
+ });
198
+ const grepPath = grepResult.stdout.trim();
191
199
  child_process.spawnSync(grepPath, ['-P', '--version'], { stdio: 'ignore' });
192
200
  return true;
193
201
  }
@@ -196,7 +204,11 @@ function checkGNUCoreutils() {
196
204
  }
197
205
  // Check for GNU sed via resolved path
198
206
  try {
199
- const sedPath = child_process.execSync('command -v sed', { encoding: 'utf-8' }).trim();
207
+ const sedResult = child_process.spawnSync('sh', ['-c', 'command -v sed'], {
208
+ encoding: 'utf-8',
209
+ stdio: ['ignore', 'pipe', 'pipe'],
210
+ });
211
+ const sedPath = sedResult.stdout.trim();
200
212
  // GNU sed supports --version; BSD sed does not
201
213
  child_process.spawnSync(sedPath, ['--version'], { stdio: 'ignore' });
202
214
  return true;
@@ -220,21 +232,25 @@ function installGNUCoreutilsMacOS() {
220
232
  }
221
233
  try {
222
234
  // Check if Homebrew is installed
223
- child_process.execSync('command -v brew', { stdio: 'ignore' });
235
+ child_process.spawnSync('sh', ['-c', 'command -v brew'], { stdio: 'ignore' });
224
236
  // Install coreutils, gnu-sed, grep, findutils, gawk if not already installed
225
237
  const packages = ['coreutils', 'gnu-sed', 'grep', 'findutils', 'gawk'];
226
238
  for (const pkg of packages) {
227
239
  try {
228
240
  // Check if already installed
229
- child_process.execSync(`brew list --formula ${pkg}`, { stdio: 'ignore' });
241
+ child_process.spawnSync('brew', ['list', '--formula', pkg], { stdio: 'ignore' });
230
242
  }
231
243
  catch {
232
244
  // Not installed, install it
233
- child_process.execSync(`brew install --quiet ${pkg}`, { stdio: 'ignore' });
245
+ child_process.spawnSync('brew', ['install', '--quiet', pkg], { stdio: 'ignore' });
234
246
  }
235
247
  }
236
248
  // Get the gnubin path from coreutils
237
- const prefix = child_process.execSync('brew --prefix coreutils', { encoding: 'utf-8' }).trim();
249
+ const result = child_process.spawnSync('brew', ['--prefix', 'coreutils'], {
250
+ encoding: 'utf-8',
251
+ stdio: ['ignore', 'pipe', 'pipe'],
252
+ });
253
+ const prefix = result.stdout.trim();
238
254
  const gnubinPath = path.join(prefix, 'libexec', 'gnubin');
239
255
  return gnubinPath;
240
256
  }
@@ -253,11 +269,11 @@ function checkMissingUtilities(isPosixCompatible) {
253
269
  for (const util of POSIX_UTILITIES) {
254
270
  try {
255
271
  // Try to find the utility
256
- child_process.execSync(`where ${util}`, { stdio: 'ignore' });
272
+ child_process.spawnSync('cmd.exe', ['/c', `where ${util}`], { stdio: 'ignore', shell: true });
257
273
  }
258
274
  catch {
259
275
  try {
260
- child_process.execSync(`which ${util}`, { stdio: 'ignore' });
276
+ child_process.spawnSync('sh', ['-c', `which ${util}`], { stdio: 'ignore' });
261
277
  }
262
278
  catch {
263
279
  missing.push(util);
@@ -378,7 +394,18 @@ export function applyAgentShellFix(agent, bashExe, home) {
378
394
  agent,
379
395
  file: '',
380
396
  action: 'skipped',
381
- message: 'GitHub Copilot follows the SHELL env var; Git Bash bin dirs on PATH cover this',
397
+ message: "copilot: no change needed — Copilot follows Git Bash's SHELL env var, and the Git Bash bin dirs already on PATH cover this in Git Bash",
398
+ };
399
+ case 'gemini_cli':
400
+ case 'cursor':
401
+ case 'windsurf':
402
+ case 'cline':
403
+ case 'vibe':
404
+ return {
405
+ agent,
406
+ file: '',
407
+ action: 'skipped',
408
+ message: `${agent}: rtk delegation agent (no Tier 0 override needed)`,
382
409
  };
383
410
  }
384
411
  }
@@ -515,7 +542,7 @@ function setTomlWindowsShellPath(content, valueLine) {
515
542
  * Fix shell configuration for Windows and macOS
516
543
  * This is a Tier 0 fix - ensures POSIX utilities are available
517
544
  */
518
- export function fixShellConfiguration(_baseDir = '.', agents = [...AGENT_KEYS]) {
545
+ export function fixShellConfiguration(_baseDir = '.', agents = [...AGENT_KEYS], complex = process.stdin.isTTY === true) {
519
546
  if (process.platform === 'win32') {
520
547
  const shellInfo = detectShell();
521
548
  if (shellInfo.isPosixCompatible) {
@@ -527,8 +554,16 @@ export function fixShellConfiguration(_baseDir = '.', agents = [...AGENT_KEYS])
527
554
  }
528
555
  if (!shellInfo.gitBashPath) {
529
556
  return {
530
- success: false,
531
- message: 'Git Bash not found. Install Git for Windows (https://git-scm.com/download/win), then re-run `agentenv apply`.',
557
+ success: true,
558
+ message: 'Git Bash not found on PATH; install Git for Windows to enable Tier 0 shell fixes',
559
+ };
560
+ }
561
+ // Non-TTY/test shell: skip file writes, just report the state
562
+ if (!complex) {
563
+ return {
564
+ success: true,
565
+ message: `Tier 0: checked; would fix ${agents.length} agent shell(s) in an interactive terminal — skipped (non-TTY)`,
566
+ gitBashPath: shellInfo.gitBashPath,
532
567
  };
533
568
  }
534
569
  const bashExe = bashExecutable(shellInfo.gitBashPath);
@@ -583,127 +618,138 @@ export function fixShellConfiguration(_baseDir = '.', agents = [...AGENT_KEYS])
583
618
  };
584
619
  }
585
620
  /**
586
- * Check if a specific agent is configured to use a POSIX shell
621
+ * Check whether a specific agent's own config already points it at a POSIX
622
+ * (bash) shell — i.e. whether Tier 0's per-agent fix (applyAgentShellFix) has
623
+ * actually taken effect for that agent. Reads exactly the field each
624
+ * patch*ShellFix writes, so this stays in sync with what `apply` can affect;
625
+ * it deliberately does not look at the current process's own shell/env,
626
+ * since that's the interactive shell the user is running agentenv from, not
627
+ * the target agent's configuration.
587
628
  */
588
- export function checkAgentShellConfiguration(agent) {
589
- if (process.platform !== 'win32') {
590
- return {
591
- isConfigured: true,
592
- needsFix: false,
593
- };
594
- }
595
- // Agent-specific shell configuration check
629
+ export function checkAgentShellConfiguration(agent, home = process.env.HOME || process.env.USERPROFILE || '') {
596
630
  switch (agent) {
597
631
  case 'claude_code':
598
- // Claude Code uses SHELL environment variable or config
599
- return checkClaudeCodeShell();
632
+ return checkClaudeCodeShell(home);
600
633
  case 'codex_cli':
601
- return checkCodexShell();
634
+ return checkCodexShell(home);
602
635
  case 'copilot':
603
636
  return checkCopilotShell();
604
637
  case 'opencode':
605
- return checkOpenCodeShell();
606
- default:
607
- return {
608
- isConfigured: false,
609
- needsFix: true,
610
- };
638
+ return checkOpenCodeShell(home);
639
+ case 'gemini_cli':
640
+ case 'cursor':
641
+ case 'windsurf':
642
+ case 'cline':
643
+ case 'vibe':
644
+ return { isConfigured: true, needsFix: false };
611
645
  }
612
646
  }
647
+ function isBashPath(value) {
648
+ return typeof value === 'string' && value.length > 0;
649
+ }
613
650
  /**
614
- * Check Claude Code shell configuration
651
+ * Check Claude Code shell configuration: reads env.CLAUDE_CODE_GIT_BASH_PATH,
652
+ * the exact field patchClaudeShellFix writes.
615
653
  */
616
- function checkClaudeCodeShell() {
654
+ function checkClaudeCodeShell(home) {
617
655
  try {
618
- const home = process.env.HOME || process.env.USERPROFILE || '';
619
656
  const settingsPath = path.join(home, '.claude', 'settings.json');
620
657
  if (fs.existsSync(settingsPath)) {
621
- const data = fs.readFileSync(settingsPath, 'utf-8');
622
- const settings = JSON.parse(data);
623
- if (settings.shell) {
658
+ const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
659
+ const env = (settings.env ?? {});
660
+ const bashPath = env.CLAUDE_CODE_GIT_BASH_PATH;
661
+ if (isBashPath(bashPath)) {
624
662
  return {
625
663
  isConfigured: true,
626
- shell: settings.shell,
627
- needsFix: !settings.shell.toLowerCase().includes('bash'),
664
+ shell: bashPath,
665
+ needsFix: !bashPath.toLowerCase().includes('bash'),
628
666
  };
629
667
  }
630
668
  }
631
- return {
632
- isConfigured: false,
633
- needsFix: true,
634
- };
669
+ return { isConfigured: false, needsFix: true };
635
670
  }
636
671
  catch {
637
- return {
638
- isConfigured: false,
639
- needsFix: true,
640
- };
672
+ return { isConfigured: false, needsFix: true };
641
673
  }
642
674
  }
643
675
  /**
644
- * Check Codex CLI shell configuration
676
+ * Extract the `shell_path` value from a Codex config.toml's [windows]
677
+ * section, matching what setTomlWindowsShellPath writes.
645
678
  */
646
- function checkCodexShell() {
647
- // Codex CLI respects the SHELL environment variable
648
- const shell = process.env.SHELL;
649
- if (shell && shell.toLowerCase().includes('bash')) {
650
- return {
651
- isConfigured: true,
652
- shell,
653
- needsFix: false,
654
- };
679
+ function readTomlWindowsShellPath(content) {
680
+ const lines = content.split(/\r?\n/);
681
+ let inWindowsSection = false;
682
+ for (const raw of lines) {
683
+ const trimmed = raw.trim();
684
+ if (/^\[.*]$/.test(trimmed)) {
685
+ inWindowsSection = trimmed === '[windows]';
686
+ continue;
687
+ }
688
+ if (inWindowsSection) {
689
+ // valueLine is built via JSON.stringify(bashExe) (patchCodexShellFix),
690
+ // so a JSON-compatible quoted-string parse reverses it correctly.
691
+ const match = /^shell_path\s*=\s*("(?:[^"\\]|\\.)*")$/.exec(trimmed);
692
+ if (match) {
693
+ try {
694
+ return JSON.parse(match[1]);
695
+ }
696
+ catch {
697
+ return undefined;
698
+ }
699
+ }
700
+ }
655
701
  }
656
- return {
657
- isConfigured: false,
658
- needsFix: true,
659
- };
702
+ return undefined;
660
703
  }
661
704
  /**
662
- * Check Copilot shell configuration
705
+ * Check Codex CLI shell configuration: reads [windows] shell_path from
706
+ * config.toml, the exact field patchCodexShellFix writes.
663
707
  */
664
- function checkCopilotShell() {
665
- // GitHub Copilot CLI respects the SHELL environment variable
666
- const shell = process.env.SHELL;
667
- if (shell && shell.toLowerCase().includes('bash')) {
668
- return {
669
- isConfigured: true,
670
- shell,
671
- needsFix: false,
672
- };
708
+ function checkCodexShell(home) {
709
+ try {
710
+ const configPath = path.join(home, '.codex', 'config.toml');
711
+ if (fs.existsSync(configPath)) {
712
+ const shellPath = readTomlWindowsShellPath(fs.readFileSync(configPath, 'utf-8'));
713
+ if (isBashPath(shellPath)) {
714
+ return {
715
+ isConfigured: true,
716
+ shell: shellPath,
717
+ needsFix: !shellPath.toLowerCase().includes('bash'),
718
+ };
719
+ }
720
+ }
721
+ return { isConfigured: false, needsFix: true };
673
722
  }
674
- return {
675
- isConfigured: false,
676
- needsFix: true,
677
- };
723
+ catch {
724
+ return { isConfigured: false, needsFix: true };
725
+ }
726
+ }
727
+ /**
728
+ * GitHub Copilot has no per-file shell override (see applyAgentShellFix) —
729
+ * it follows the SHELL env var, which Tier 0's Git Bash PATH entries already
730
+ * cover, so there is nothing here for `apply` to fix.
731
+ */
732
+ function checkCopilotShell() {
733
+ return { isConfigured: true, needsFix: false };
678
734
  }
679
735
  /**
680
- * Check OpenCode shell configuration
736
+ * Check OpenCode shell configuration: reads `shell`, the exact field
737
+ * patchOpenCodeShellFix writes.
681
738
  */
682
- function checkOpenCodeShell() {
739
+ function checkOpenCodeShell(home) {
683
740
  try {
684
- const home = process.env.HOME || process.env.USERPROFILE || '';
685
741
  const configPath = path.join(home, '.config', 'opencode', 'opencode.json');
686
742
  if (fs.existsSync(configPath)) {
687
- const data = fs.readFileSync(configPath, 'utf-8');
688
- const config = JSON.parse(data);
689
- if (config.shell) {
690
- return {
691
- isConfigured: true,
692
- shell: config.shell,
693
- needsFix: !config.shell.toLowerCase().includes('bash'),
694
- };
743
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
744
+ const shell = config.shell;
745
+ if (isBashPath(shell)) {
746
+ return { isConfigured: true, shell, needsFix: !shell.toLowerCase().includes('bash') };
695
747
  }
696
748
  }
697
- return {
698
- isConfigured: false,
699
- needsFix: true,
700
- };
749
+ return { isConfigured: false, needsFix: true };
701
750
  }
702
751
  catch {
703
- return {
704
- isConfigured: false,
705
- needsFix: true,
706
- };
752
+ return { isConfigured: false, needsFix: true };
707
753
  }
708
754
  }
709
755
  //# sourceMappingURL=detector.js.map