@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
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Terminal color/formatting helpers shared by every command's output.
3
+ * Chalk auto-detects TTY/NO_COLOR/FORCE_COLOR on import; setColorEnabled(false)
4
+ * is the only override this CLI needs (wired to --no-color in index.ts).
5
+ */
6
+ import chalk from 'chalk';
7
+ export function setColorEnabled(enabled) {
8
+ if (!enabled)
9
+ chalk.level = 0;
10
+ }
11
+ export const theme = {
12
+ heading: (text) => chalk.bold.cyan(text),
13
+ bold: (text) => chalk.bold(text),
14
+ dim: (text) => chalk.dim(text),
15
+ ok: (text) => chalk.green(text),
16
+ fail: (text) => chalk.red(text),
17
+ warn: (text) => chalk.yellow(text),
18
+ };
19
+ const SUCCESS_GLYPH = '✓';
20
+ const FAIL_GLYPH = '✗';
21
+ const DRIFT_GLYPH = '!';
22
+ const UNSUPPORTED_GLYPH = '·';
23
+ /**
24
+ * Colorize a pre-formatted message line by its leading status glyph (or a
25
+ * "warning:" substring), so command output built elsewhere in the pipeline
26
+ * (mise, adapters, integrations) gets consistent coloring without every
27
+ * producer needing to know about chalk.
28
+ */
29
+ export function colorizeLine(line) {
30
+ const trimmed = line.trimStart();
31
+ if (trimmed.startsWith(SUCCESS_GLYPH))
32
+ return theme.ok(line);
33
+ if (trimmed.startsWith(FAIL_GLYPH))
34
+ return theme.fail(line);
35
+ if (trimmed.startsWith(DRIFT_GLYPH) || line.toLowerCase().includes('warning:')) {
36
+ return theme.warn(line);
37
+ }
38
+ if (trimmed.startsWith(UNSUPPORTED_GLYPH))
39
+ return theme.dim(line);
40
+ return line;
41
+ }
42
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACxC,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IACvC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACvC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;CAC3C,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Windows file-lock resilient writes (Tasks 8 & 13 of the Windows Shell
3
+ * Compatibility Overhaul plan).
4
+ *
5
+ * On Windows an open/locked file (editor, AV scan, another agentenv) makes
6
+ * `fs.writeFileSync` throw EBUSY/EPERM immediately. `writeFileWithRetry`
7
+ * retries those codes with a short backoff instead of failing the first try.
8
+ * `writeFileWithVerify` additionally confirms the write actually persisted
9
+ * (existence + size), so a locking/AV failure that quietly didn't persist is
10
+ * reported truthfully.
11
+ *
12
+ * The fs interface is injectable so tests can model "throws EBUSY twice then
13
+ * succeeds" and "reports success but file is missing" without touching the
14
+ * real filesystem.
15
+ */
16
+ export interface RetryFs {
17
+ writeFileSync: (filePath: string, content: string) => void;
18
+ statSize: (filePath: string) => number | null;
19
+ }
20
+ export declare const defaultRetryFs: RetryFs;
21
+ export interface WriteRetryOptions {
22
+ /** Max write attempts (default 5). */
23
+ attempts?: number;
24
+ /** Backoff between attempts in milliseconds (default 25). */
25
+ delayMs?: number;
26
+ /** Skip retrying: throw on the first write error (test escape hatch). */
27
+ failFast?: boolean;
28
+ }
29
+ /** True when an error means "the file is temporarily locked", worth retrying. */
30
+ export declare function isRetryableWriteError(err: unknown): boolean;
31
+ /**
32
+ * Write `content` to `filePath`, retrying briefly on Windows file-lock errors
33
+ * (EBUSY/EPERM). Throws when the write ultimately cannot succeed.
34
+ */
35
+ export declare function writeFileWithRetry(filePath: string, content: string, opts?: WriteRetryOptions, fsImpl?: RetryFs): void;
36
+ export interface WriteVerifyResult {
37
+ success: boolean;
38
+ message: string;
39
+ }
40
+ /**
41
+ * Write `content` and confirm it persisted: the file must exist after the
42
+ * write, and, for non-empty content, be non-empty. Any mismatch is reported as
43
+ * a failure message instead of a bare silent success.
44
+ */
45
+ export declare function writeFileWithVerify(filePath: string, content: string, opts?: WriteRetryOptions, fsImpl?: RetryFs): WriteVerifyResult;
46
+ //# sourceMappingURL=fs-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-retry.d.ts","sourceRoot":"","sources":["../../src/utils/fs-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,cAAc,EAAE,OAS5B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAKD,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAK3D;AAOD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,iBAAsB,EAC5B,MAAM,GAAE,OAAwB,GAC/B,IAAI,CAcN;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,iBAAsB,EAC5B,MAAM,GAAE,OAAwB,GAC/B,iBAAiB,CAwBnB"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Windows file-lock resilient writes (Tasks 8 & 13 of the Windows Shell
3
+ * Compatibility Overhaul plan).
4
+ *
5
+ * On Windows an open/locked file (editor, AV scan, another agentenv) makes
6
+ * `fs.writeFileSync` throw EBUSY/EPERM immediately. `writeFileWithRetry`
7
+ * retries those codes with a short backoff instead of failing the first try.
8
+ * `writeFileWithVerify` additionally confirms the write actually persisted
9
+ * (existence + size), so a locking/AV failure that quietly didn't persist is
10
+ * reported truthfully.
11
+ *
12
+ * The fs interface is injectable so tests can model "throws EBUSY twice then
13
+ * succeeds" and "reports success but file is missing" without touching the
14
+ * real filesystem.
15
+ */
16
+ import * as fs from 'fs';
17
+ export const defaultRetryFs = {
18
+ writeFileSync: (filePath, content) => fs.writeFileSync(filePath, content),
19
+ statSize: (filePath) => {
20
+ try {
21
+ return fs.statSync(filePath).size;
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ },
27
+ };
28
+ const DEFAULT_ATTEMPTS = 5;
29
+ const DEFAULT_DELAY_MS = 25;
30
+ /** True when an error means "the file is temporarily locked", worth retrying. */
31
+ export function isRetryableWriteError(err) {
32
+ if (typeof err !== 'object' || err === null)
33
+ return false;
34
+ const code = err.code;
35
+ if (code === 'EBUSY')
36
+ return true;
37
+ return code === 'EPERM' && process.platform === 'win32';
38
+ }
39
+ function sleepSync(ms) {
40
+ const buffer = new SharedArrayBuffer(4);
41
+ Atomics.wait(new Int32Array(buffer), 0, 0, ms);
42
+ }
43
+ /**
44
+ * Write `content` to `filePath`, retrying briefly on Windows file-lock errors
45
+ * (EBUSY/EPERM). Throws when the write ultimately cannot succeed.
46
+ */
47
+ export function writeFileWithRetry(filePath, content, opts = {}, fsImpl = defaultRetryFs) {
48
+ const attempts = opts.attempts ?? DEFAULT_ATTEMPTS;
49
+ const delayMs = opts.delayMs ?? DEFAULT_DELAY_MS;
50
+ for (let attempt = 1; attempt <= attempts; attempt++) {
51
+ try {
52
+ fsImpl.writeFileSync(filePath, content);
53
+ return;
54
+ }
55
+ catch (err) {
56
+ if (opts.failFast === true || attempt === attempts || !isRetryableWriteError(err)) {
57
+ throw err;
58
+ }
59
+ if (delayMs > 0)
60
+ sleepSync(delayMs);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Write `content` and confirm it persisted: the file must exist after the
66
+ * write, and, for non-empty content, be non-empty. Any mismatch is reported as
67
+ * a failure message instead of a bare silent success.
68
+ */
69
+ export function writeFileWithVerify(filePath, content, opts = {}, fsImpl = defaultRetryFs) {
70
+ try {
71
+ writeFileWithRetry(filePath, content, opts, fsImpl);
72
+ }
73
+ catch (err) {
74
+ return {
75
+ success: false,
76
+ message: `Failed to write ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
77
+ };
78
+ }
79
+ const size = fsImpl.statSize(filePath);
80
+ if (size === null) {
81
+ return {
82
+ success: false,
83
+ message: `Write to ${filePath} reported success but the file is missing`,
84
+ };
85
+ }
86
+ if (content.length > 0 && size === 0) {
87
+ return {
88
+ success: false,
89
+ message: `Write to ${filePath} reported success but the file is empty`,
90
+ };
91
+ }
92
+ return { success: true, message: '' };
93
+ }
94
+ //# sourceMappingURL=fs-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-retry.js","sourceRoot":"","sources":["../../src/utils/fs-retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Windows error display normalization (Task 12 of the Windows Shell
3
+ * Compatibility Overhaul plan).
4
+ *
5
+ * Captured subprocess output on Windows can carry `\r\n` line endings; printing
6
+ * it verbatim garbles multi-line hints (double line breaks, stray `\r`). This
7
+ * tiny helper strips `\r` and collapses the tail to a single trailing newline
8
+ * so every stderr-derived message is CRLF-clean before a theme renderer prints
9
+ * it.
10
+ */
11
+ /**
12
+ * Strip carriage returns and guarantee exactly one trailing newline (or ''
13
+ * for empty input).
14
+ */
15
+ export declare function normalizeOutput(text: string): string;
16
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Windows error display normalization (Task 12 of the Windows Shell
3
+ * Compatibility Overhaul plan).
4
+ *
5
+ * Captured subprocess output on Windows can carry `\r\n` line endings; printing
6
+ * it verbatim garbles multi-line hints (double line breaks, stray `\r`). This
7
+ * tiny helper strips `\r` and collapses the tail to a single trailing newline
8
+ * so every stderr-derived message is CRLF-clean before a theme renderer prints
9
+ * it.
10
+ */
11
+ /**
12
+ * Strip carriage returns and guarantee exactly one trailing newline (or ''
13
+ * for empty input).
14
+ */
15
+ export function normalizeOutput(text) {
16
+ const stripped = text.replace(/\r/g, '');
17
+ const collapsed = stripped.replace(/\n+$/, '');
18
+ return collapsed === '' ? '' : `${collapsed}\n`;
19
+ }
20
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC;AAClD,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Wizard helpers: pure config assembly + diff presentation.
3
3
  * Kept free of inquirer/CLI so the logic is unit-testable.
4
4
  */
5
- import type { AgentKey, AgentenvConfig, ConfigDiffEntry, CustomTool } from '../config/schema.js';
5
+ import type { AgentKey, AgentenvConfig, ConfigDiffEntry, CustomTool, IntegrationsConfig } from '../config/schema.js';
6
6
  export declare const AGENT_OPTIONS: Array<{
7
7
  value: AgentKey;
8
8
  label: string;
@@ -26,6 +26,7 @@ export interface WizardSelections {
26
26
  customTools: CustomTool[];
27
27
  scope: 'project' | 'user';
28
28
  rtkEnabled: boolean;
29
+ integrations?: IntegrationsConfig;
29
30
  }
30
31
  /** Assemble a full AgentenvConfig from picker selections. */
31
32
  export declare function buildConfigFromSelections(sel: WizardSelections): AgentenvConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/wizard/build.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjG,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKnE,CAAC;AAEF,eAAO,MAAM,YAAY,yCAA0C,CAAC;AACpE,eAAO,MAAM,YAAY,wDAAyD,CAAC;AAEnF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,EAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAY1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,SAAS,GAAG,MAAM,GACxB,cAAc,CAQhB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,cAAc,CA4B/E;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CASjE"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/wizard/build.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,UAAU,EACV,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAUnE,CAAC;AAEF,eAAO,MAAM,YAAY,yCAA0C,CAAC;AACpE,eAAO,MAAM,YAAY,wDAAyD,CAAC;AAEnF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,EAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAY1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,SAAS,GAAG,MAAM,GACxB,cAAc,CAQhB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,cAAc,CA2B/E;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CASjE"}
@@ -8,6 +8,11 @@ export const AGENT_OPTIONS = [
8
8
  { value: 'codex_cli', label: 'Codex CLI' },
9
9
  { value: 'copilot', label: 'GitHub Copilot' },
10
10
  { value: 'opencode', label: 'OpenCode' },
11
+ { value: 'gemini_cli', label: 'Gemini CLI' },
12
+ { value: 'cursor', label: 'Cursor' },
13
+ { value: 'windsurf', label: 'Windsurf' },
14
+ { value: 'cline', label: 'Cline CLI' },
15
+ { value: 'vibe', label: 'Mistral Vibe' },
11
16
  ];
12
17
  export const TIER_1_TOOLS = ['ripgrep', 'fd', 'jq', 'rtk'];
13
18
  export const TIER_2_TOOLS = ['ast_grep', 'git_delta', 'gh', 'difftastic'];
@@ -47,12 +52,7 @@ export function buildDefaultSimpleConfig(agents, includeTier2, rtkEnabled, scope
47
52
  }
48
53
  /** Assemble a full AgentenvConfig from picker selections. */
49
54
  export function buildConfigFromSelections(sel) {
50
- const agents = {
51
- claude_code: false,
52
- codex_cli: false,
53
- copilot: false,
54
- opencode: false,
55
- };
55
+ const agents = Object.fromEntries(AGENT_KEYS.map((key) => [key, false]));
56
56
  for (const agent of sel.agents)
57
57
  agents[agent] = true;
58
58
  const tools = {};
@@ -63,9 +63,10 @@ export function buildConfigFromSelections(sel) {
63
63
  agents,
64
64
  tools,
65
65
  custom_tools: sel.customTools.length > 0 ? sel.customTools : undefined,
66
+ integrations: sel.integrations,
66
67
  rtk: {
67
68
  enabled: sel.rtkEnabled,
68
- init: { claude_code: true, codex_cli: true, copilot: true, opencode: true },
69
+ init: Object.fromEntries(AGENT_KEYS.map((key) => [key, true])),
69
70
  },
70
71
  tier0: { check_enabled: true },
71
72
  generate: {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/wizard/build.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,CAAC,MAAM,aAAa,GAA8C;IACtE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC7C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAU,CAAC;AAEnF,MAAM,UAAU,mBAAmB,CAAC,YAAqB;IACvD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAY,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,oBAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAkB,EAClB,YAAqB,EACrB,UAAmB,EACnB,KAAyB;IAEzB,OAAO,yBAAyB,CAAC;QAC/B,MAAM;QACN,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC;QACxC,WAAW,EAAE,EAAE;QACf,KAAK;QACL,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAUD,6DAA6D;AAC7D,MAAM,UAAU,yBAAyB,CAAC,GAAqB;IAC7D,MAAM,MAAM,GAA8B;QACxC,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM;QAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAErD,MAAM,KAAK,GAAyC,EAAE,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAElE,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM;QACN,KAAK;QACL,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACtE,GAAG,EAAE;YACH,OAAO,EAAE,GAAG,CAAC,UAAU;YACvB,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5E;QACD,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAC9B,QAAQ,EAAE;YACR,YAAY,EAAE,iCAAiC;YAC/C,UAAU,EAAE,+BAA+B;YAC3C,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;SAClC;KACF,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/F,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,KAAK,SAAS;YACtB,CAAC,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACtE,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACxC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/wizard/build.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indy2kro/agentenv",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "CLI for configuring a consistent, capable shell environment for AI coding agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,7 +26,7 @@
26
26
  "prepublishOnly": "npm run build",
27
27
  "start": "ts-node src/index.ts",
28
28
  "dev": "ts-node-dev src/index.ts",
29
- "test": "npm run build && node dist/config/schema.test.js && node dist/config/scopes.test.js && node dist/generate/agentsmd.test.js && node dist/adapters/claude.test.js && node dist/adapters/adapters.test.js && node dist/adapters/detect.test.js && node dist/shell/detector.test.js && node dist/toolchain/mise.test.js && node dist/toolchain/gh.test.js && node dist/integrations/superpowers.test.js && node dist/toolchain/fallbacks.test.js && node dist/wizard/build.test.js && node dist/commands/apply.test.js && node dist/commands/doctor.test.js",
29
+ "test": "npm run build && cd dist && node --test",
30
30
  "smoke": "npm run build && node scripts/smoke.mjs",
31
31
  "smoke:real": "npm run build && node scripts/smoke.mjs --real",
32
32
  "lint": "eslint src --max-warnings 0",
@@ -51,7 +51,9 @@
51
51
  "license": "MIT",
52
52
  "dependencies": {
53
53
  "@inquirer/prompts": "^8.7.2",
54
+ "chalk": "^6.0.0",
54
55
  "commander": "^15.0.0",
56
+ "ora": "^9.4.1",
55
57
  "toml": "^5.0.0"
56
58
  },
57
59
  "devDependencies": {