sequant 1.3.1 → 1.4.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tty.test.js","sourceRoot":"","sources":["../../../src/lib/tty.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tty.test.js","sourceRoot":"","sources":["../../../src/lib/tty.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Setup wizard for guiding users through dependency installation
3
+ */
4
+ /**
5
+ * Dependency status after checking
6
+ */
7
+ export interface DependencyStatus {
8
+ name: string;
9
+ displayName: string;
10
+ installed: boolean;
11
+ authenticated?: boolean;
12
+ required: boolean;
13
+ docsUrl: string;
14
+ }
15
+ /**
16
+ * Result of checking all dependencies
17
+ */
18
+ export interface DependencyCheckResult {
19
+ dependencies: DependencyStatus[];
20
+ allRequiredMet: boolean;
21
+ hasMissing: boolean;
22
+ }
23
+ /**
24
+ * Check the status of all required and optional dependencies
25
+ */
26
+ export declare function checkAllDependencies(): DependencyCheckResult;
27
+ /**
28
+ * Display the dependency check results
29
+ */
30
+ export declare function displayDependencyStatus(result: DependencyCheckResult): void;
31
+ /**
32
+ * Get detailed install instructions for a dependency
33
+ */
34
+ export declare function getInstallInstructions(depName: string): string[];
35
+ /**
36
+ * Result from running the setup wizard
37
+ */
38
+ export interface WizardResult {
39
+ skipped: boolean;
40
+ completed: boolean;
41
+ remainingIssues: string[];
42
+ }
43
+ /**
44
+ * Run the interactive setup wizard for missing dependencies
45
+ *
46
+ * @param result - The dependency check result
47
+ * @param options - Options for the wizard
48
+ * @returns The wizard result
49
+ */
50
+ export declare function runSetupWizard(result: DependencyCheckResult, options?: {
51
+ skipPrompts?: boolean;
52
+ }): Promise<WizardResult>;
53
+ /**
54
+ * Determine if the setup wizard should be run
55
+ *
56
+ * @param options - Options from the init command
57
+ * @returns true if wizard should run
58
+ */
59
+ export declare function shouldRunSetupWizard(options: {
60
+ skipSetup?: boolean;
61
+ yes?: boolean;
62
+ interactive?: boolean;
63
+ }): boolean;
64
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/lib/wizard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,qBAAqB,CAoD5D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAyB3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwChE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,qBAAqB,EAC7B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,OAAO,CAAC,YAAY,CAAC,CAyIvB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAYV"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * Setup wizard for guiding users through dependency installation
3
+ */
4
+ import chalk from "chalk";
5
+ import inquirer from "inquirer";
6
+ import { commandExists, isGhAuthenticated, getInstallHint } from "./system.js";
7
+ import { isCI } from "./tty.js";
8
+ /**
9
+ * Check the status of all required and optional dependencies
10
+ */
11
+ export function checkAllDependencies() {
12
+ const dependencies = [];
13
+ // GitHub CLI (required)
14
+ const ghInstalled = commandExists("gh");
15
+ const ghAuthenticated = ghInstalled ? isGhAuthenticated() : false;
16
+ dependencies.push({
17
+ name: "gh",
18
+ displayName: "GitHub CLI (gh)",
19
+ installed: ghInstalled,
20
+ authenticated: ghAuthenticated,
21
+ required: true,
22
+ docsUrl: "https://cli.github.com",
23
+ });
24
+ // Claude Code CLI (required)
25
+ const claudeInstalled = commandExists("claude");
26
+ dependencies.push({
27
+ name: "claude",
28
+ displayName: "Claude Code CLI",
29
+ installed: claudeInstalled,
30
+ required: true,
31
+ docsUrl: "https://docs.anthropic.com/en/docs/claude-code",
32
+ });
33
+ // jq (optional)
34
+ const jqInstalled = commandExists("jq");
35
+ dependencies.push({
36
+ name: "jq",
37
+ displayName: "jq (JSON processor)",
38
+ installed: jqInstalled,
39
+ required: false,
40
+ docsUrl: "https://jqlang.github.io/jq/",
41
+ });
42
+ const allRequiredMet = dependencies
43
+ .filter((d) => d.required)
44
+ .every((d) => {
45
+ if (d.name === "gh") {
46
+ return d.installed && d.authenticated;
47
+ }
48
+ return d.installed;
49
+ });
50
+ const hasMissing = dependencies.some((d) => {
51
+ if (d.name === "gh") {
52
+ return !d.installed || !d.authenticated;
53
+ }
54
+ return d.required && !d.installed;
55
+ });
56
+ return { dependencies, allRequiredMet, hasMissing };
57
+ }
58
+ /**
59
+ * Display the dependency check results
60
+ */
61
+ export function displayDependencyStatus(result) {
62
+ console.log(chalk.blue("\nChecking dependencies...\n"));
63
+ for (const dep of result.dependencies) {
64
+ if (dep.installed) {
65
+ if (dep.name === "gh" && !dep.authenticated) {
66
+ console.log(chalk.yellow(` ${chalk.yellow("!")} ${dep.displayName} - installed but not authenticated`));
67
+ }
68
+ else {
69
+ console.log(chalk.green(` ${chalk.green("✓")} ${dep.displayName} - installed`));
70
+ }
71
+ }
72
+ else {
73
+ const marker = dep.required ? chalk.red("✗") : chalk.yellow("○");
74
+ const status = dep.required
75
+ ? "not installed (required)"
76
+ : "not installed (optional)";
77
+ console.log(` ${marker} ${dep.displayName} - ${status}`);
78
+ }
79
+ }
80
+ console.log();
81
+ }
82
+ /**
83
+ * Get detailed install instructions for a dependency
84
+ */
85
+ export function getInstallInstructions(depName) {
86
+ const instructions = [];
87
+ const installHint = getInstallHint(depName);
88
+ switch (depName) {
89
+ case "gh":
90
+ instructions.push(`${chalk.cyan("→")} Install: ${chalk.bold(installHint)}`);
91
+ instructions.push(`${chalk.cyan("→")} Or visit: ${chalk.underline("https://cli.github.com")}`);
92
+ instructions.push(`${chalk.cyan("→")} After install, run: ${chalk.bold("gh auth login")}`);
93
+ break;
94
+ case "claude":
95
+ instructions.push(`${chalk.cyan("→")} Install: ${chalk.bold("npm install -g @anthropic-ai/claude-code")}`);
96
+ instructions.push(`${chalk.cyan("→")} Or visit: ${chalk.underline("https://docs.anthropic.com/en/docs/claude-code")}`);
97
+ break;
98
+ case "jq":
99
+ instructions.push(`${chalk.cyan("→")} Install: ${chalk.bold(installHint)}`);
100
+ instructions.push(`${chalk.cyan("→")} Or visit: ${chalk.underline("https://jqlang.github.io/jq/")}`);
101
+ break;
102
+ default:
103
+ instructions.push(`${chalk.cyan("→")} Install ${depName}`);
104
+ }
105
+ return instructions;
106
+ }
107
+ /**
108
+ * Run the interactive setup wizard for missing dependencies
109
+ *
110
+ * @param result - The dependency check result
111
+ * @param options - Options for the wizard
112
+ * @returns The wizard result
113
+ */
114
+ export async function runSetupWizard(result, options = {}) {
115
+ const missingDeps = result.dependencies.filter((d) => {
116
+ if (d.name === "gh") {
117
+ return !d.installed || !d.authenticated;
118
+ }
119
+ return d.required && !d.installed;
120
+ });
121
+ if (missingDeps.length === 0) {
122
+ return { skipped: false, completed: true, remainingIssues: [] };
123
+ }
124
+ // In non-interactive mode, just return the issues
125
+ if (options.skipPrompts) {
126
+ return {
127
+ skipped: true,
128
+ completed: false,
129
+ remainingIssues: missingDeps.map((d) => {
130
+ if (d.name === "gh" && d.installed && !d.authenticated) {
131
+ return `${d.displayName} not authenticated`;
132
+ }
133
+ return `${d.displayName} not installed`;
134
+ }),
135
+ };
136
+ }
137
+ // Ask if user wants to set up missing dependencies
138
+ let setupDeps = false;
139
+ try {
140
+ const response = await inquirer.prompt([
141
+ {
142
+ type: "confirm",
143
+ name: "setupDeps",
144
+ message: "Would you like to set up missing dependencies?",
145
+ default: true,
146
+ },
147
+ ]);
148
+ setupDeps = response.setupDeps;
149
+ }
150
+ catch {
151
+ // If prompt fails (e.g., non-interactive), skip wizard
152
+ return {
153
+ skipped: true,
154
+ completed: false,
155
+ remainingIssues: missingDeps.map((d) => {
156
+ if (d.name === "gh" && d.installed && !d.authenticated) {
157
+ return `${d.displayName} not authenticated`;
158
+ }
159
+ return `${d.displayName} not installed`;
160
+ }),
161
+ };
162
+ }
163
+ if (!setupDeps) {
164
+ return {
165
+ skipped: true,
166
+ completed: false,
167
+ remainingIssues: missingDeps.map((d) => {
168
+ if (d.name === "gh" && d.installed && !d.authenticated) {
169
+ return `${d.displayName} not authenticated`;
170
+ }
171
+ return `${d.displayName} not installed`;
172
+ }),
173
+ };
174
+ }
175
+ // Guide through each missing dependency
176
+ const remainingIssues = [];
177
+ for (const dep of missingDeps) {
178
+ console.log(chalk.bold(`\nSetting up ${dep.displayName}...\n`));
179
+ const instructions = getInstallInstructions(dep.name);
180
+ for (const instruction of instructions) {
181
+ console.log(` ${instruction}`);
182
+ }
183
+ console.log();
184
+ let action = "skip";
185
+ try {
186
+ const response = await inquirer.prompt([
187
+ {
188
+ type: "list",
189
+ name: "action",
190
+ message: "What would you like to do?",
191
+ choices: [
192
+ { name: "I've installed it - verify now", value: "verify" },
193
+ { name: "Skip for now", value: "skip" },
194
+ ],
195
+ },
196
+ ]);
197
+ action = response.action;
198
+ }
199
+ catch {
200
+ // If prompt fails, skip this dependency
201
+ action = "skip";
202
+ }
203
+ if (action === "verify") {
204
+ // Re-check this dependency
205
+ const isNowInstalled = commandExists(dep.name);
206
+ const isNowAuthenticated = dep.name === "gh"
207
+ ? isNowInstalled
208
+ ? isGhAuthenticated()
209
+ : false
210
+ : true;
211
+ if (isNowInstalled && isNowAuthenticated) {
212
+ console.log(chalk.green(`\n ✓ ${dep.displayName} - now installed and ready!\n`));
213
+ }
214
+ else if (dep.name === "gh" && isNowInstalled && !isNowAuthenticated) {
215
+ console.log(chalk.yellow(`\n ! ${dep.displayName} - installed but not authenticated yet\n`));
216
+ remainingIssues.push(`${dep.displayName} not authenticated`);
217
+ }
218
+ else {
219
+ console.log(chalk.yellow(`\n ! ${dep.displayName} - not detected yet\n`));
220
+ remainingIssues.push(`${dep.displayName} not installed`);
221
+ }
222
+ }
223
+ else {
224
+ if (dep.name === "gh" && dep.installed && !dep.authenticated) {
225
+ remainingIssues.push(`${dep.displayName} not authenticated`);
226
+ }
227
+ else {
228
+ remainingIssues.push(`${dep.displayName} not installed`);
229
+ }
230
+ }
231
+ }
232
+ return {
233
+ skipped: false,
234
+ completed: remainingIssues.length === 0,
235
+ remainingIssues,
236
+ };
237
+ }
238
+ /**
239
+ * Determine if the setup wizard should be run
240
+ *
241
+ * @param options - Options from the init command
242
+ * @returns true if wizard should run
243
+ */
244
+ export function shouldRunSetupWizard(options) {
245
+ // Skip if --skip-setup flag is set
246
+ if (options.skipSetup) {
247
+ return false;
248
+ }
249
+ // Skip in CI environments
250
+ if (isCI()) {
251
+ return false;
252
+ }
253
+ return true;
254
+ }
255
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/lib/wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wizard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.test.d.ts","sourceRoot":"","sources":["../../../src/lib/wizard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,268 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ // Mock system functions
3
+ vi.mock("./system.js", () => ({
4
+ commandExists: vi.fn(),
5
+ isGhAuthenticated: vi.fn(),
6
+ getInstallHint: vi.fn((pkg) => {
7
+ if (pkg === "gh")
8
+ return "brew install gh";
9
+ if (pkg === "claude")
10
+ return "npm install -g @anthropic-ai/claude-code";
11
+ if (pkg === "jq")
12
+ return "brew install jq";
13
+ return `Install ${pkg}`;
14
+ }),
15
+ }));
16
+ // Mock tty functions
17
+ vi.mock("./tty.js", () => ({
18
+ isCI: vi.fn(),
19
+ }));
20
+ // Mock inquirer
21
+ vi.mock("inquirer", () => ({
22
+ default: {
23
+ prompt: vi.fn(),
24
+ },
25
+ }));
26
+ import { checkAllDependencies, displayDependencyStatus, getInstallInstructions, runSetupWizard, shouldRunSetupWizard, } from "./wizard.js";
27
+ import { commandExists, isGhAuthenticated } from "./system.js";
28
+ import { isCI } from "./tty.js";
29
+ import inquirer from "inquirer";
30
+ const mockCommandExists = vi.mocked(commandExists);
31
+ const mockIsGhAuthenticated = vi.mocked(isGhAuthenticated);
32
+ const mockIsCI = vi.mocked(isCI);
33
+ const mockInquirerPrompt = vi.mocked(inquirer.prompt);
34
+ describe("wizard", () => {
35
+ let consoleLogSpy;
36
+ beforeEach(() => {
37
+ vi.resetAllMocks();
38
+ consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => { });
39
+ mockIsCI.mockReturnValue(false);
40
+ });
41
+ afterEach(() => {
42
+ consoleLogSpy.mockRestore();
43
+ });
44
+ describe("checkAllDependencies", () => {
45
+ it("detects all dependencies installed and authenticated", () => {
46
+ mockCommandExists.mockReturnValue(true);
47
+ mockIsGhAuthenticated.mockReturnValue(true);
48
+ const result = checkAllDependencies();
49
+ expect(result.allRequiredMet).toBe(true);
50
+ expect(result.hasMissing).toBe(false);
51
+ expect(result.dependencies).toHaveLength(3);
52
+ const ghDep = result.dependencies.find((d) => d.name === "gh");
53
+ expect(ghDep?.installed).toBe(true);
54
+ expect(ghDep?.authenticated).toBe(true);
55
+ const claudeDep = result.dependencies.find((d) => d.name === "claude");
56
+ expect(claudeDep?.installed).toBe(true);
57
+ });
58
+ it("detects missing gh CLI", () => {
59
+ mockCommandExists.mockImplementation((cmd) => cmd !== "gh");
60
+ mockIsGhAuthenticated.mockReturnValue(false);
61
+ const result = checkAllDependencies();
62
+ expect(result.allRequiredMet).toBe(false);
63
+ expect(result.hasMissing).toBe(true);
64
+ const ghDep = result.dependencies.find((d) => d.name === "gh");
65
+ expect(ghDep?.installed).toBe(false);
66
+ });
67
+ it("detects gh installed but not authenticated", () => {
68
+ mockCommandExists.mockReturnValue(true);
69
+ mockIsGhAuthenticated.mockReturnValue(false);
70
+ const result = checkAllDependencies();
71
+ expect(result.allRequiredMet).toBe(false);
72
+ expect(result.hasMissing).toBe(true);
73
+ const ghDep = result.dependencies.find((d) => d.name === "gh");
74
+ expect(ghDep?.installed).toBe(true);
75
+ expect(ghDep?.authenticated).toBe(false);
76
+ });
77
+ it("detects missing claude CLI", () => {
78
+ mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
79
+ mockIsGhAuthenticated.mockReturnValue(true);
80
+ const result = checkAllDependencies();
81
+ expect(result.allRequiredMet).toBe(false);
82
+ expect(result.hasMissing).toBe(true);
83
+ const claudeDep = result.dependencies.find((d) => d.name === "claude");
84
+ expect(claudeDep?.installed).toBe(false);
85
+ });
86
+ it("jq missing does not fail allRequiredMet (optional)", () => {
87
+ mockCommandExists.mockImplementation((cmd) => cmd !== "jq");
88
+ mockIsGhAuthenticated.mockReturnValue(true);
89
+ const result = checkAllDependencies();
90
+ // jq is optional, so all required should still be met
91
+ expect(result.allRequiredMet).toBe(true);
92
+ // But hasMissing only tracks required deps
93
+ expect(result.hasMissing).toBe(false);
94
+ const jqDep = result.dependencies.find((d) => d.name === "jq");
95
+ expect(jqDep?.installed).toBe(false);
96
+ expect(jqDep?.required).toBe(false);
97
+ });
98
+ });
99
+ describe("displayDependencyStatus", () => {
100
+ it("displays installed dependencies with checkmarks", () => {
101
+ mockCommandExists.mockReturnValue(true);
102
+ mockIsGhAuthenticated.mockReturnValue(true);
103
+ const result = checkAllDependencies();
104
+ displayDependencyStatus(result);
105
+ const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
106
+ expect(output).toContain("Checking dependencies");
107
+ expect(output).toContain("GitHub CLI (gh)");
108
+ expect(output).toContain("installed");
109
+ });
110
+ it("displays missing required dependencies with X mark", () => {
111
+ mockCommandExists.mockReturnValue(false);
112
+ mockIsGhAuthenticated.mockReturnValue(false);
113
+ const result = checkAllDependencies();
114
+ displayDependencyStatus(result);
115
+ const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
116
+ expect(output).toContain("not installed (required)");
117
+ });
118
+ it("displays unauthenticated gh with warning", () => {
119
+ mockCommandExists.mockReturnValue(true);
120
+ mockIsGhAuthenticated.mockReturnValue(false);
121
+ const result = checkAllDependencies();
122
+ displayDependencyStatus(result);
123
+ const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
124
+ expect(output).toContain("installed but not authenticated");
125
+ });
126
+ });
127
+ describe("getInstallInstructions", () => {
128
+ it("returns install instructions for gh", () => {
129
+ const instructions = getInstallInstructions("gh");
130
+ expect(instructions.length).toBeGreaterThan(0);
131
+ expect(instructions.some((i) => i.includes("brew install gh"))).toBe(true);
132
+ expect(instructions.some((i) => i.includes("gh auth login"))).toBe(true);
133
+ });
134
+ it("returns install instructions for claude", () => {
135
+ const instructions = getInstallInstructions("claude");
136
+ expect(instructions.length).toBeGreaterThan(0);
137
+ expect(instructions.some((i) => i.includes("@anthropic-ai/claude-code"))).toBe(true);
138
+ });
139
+ it("returns install instructions for jq", () => {
140
+ const instructions = getInstallInstructions("jq");
141
+ expect(instructions.length).toBeGreaterThan(0);
142
+ expect(instructions.some((i) => i.includes("brew install jq"))).toBe(true);
143
+ });
144
+ it("returns generic instruction for unknown package", () => {
145
+ const instructions = getInstallInstructions("unknown-pkg");
146
+ expect(instructions.length).toBe(1);
147
+ expect(instructions[0]).toContain("Install unknown-pkg");
148
+ });
149
+ });
150
+ describe("runSetupWizard", () => {
151
+ it("returns completed when all dependencies are met", async () => {
152
+ mockCommandExists.mockReturnValue(true);
153
+ mockIsGhAuthenticated.mockReturnValue(true);
154
+ const depResult = checkAllDependencies();
155
+ const wizardResult = await runSetupWizard(depResult);
156
+ expect(wizardResult.skipped).toBe(false);
157
+ expect(wizardResult.completed).toBe(true);
158
+ expect(wizardResult.remainingIssues).toHaveLength(0);
159
+ });
160
+ it("returns skipped with issues when skipPrompts is true", async () => {
161
+ mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
162
+ mockIsGhAuthenticated.mockReturnValue(true);
163
+ const depResult = checkAllDependencies();
164
+ const wizardResult = await runSetupWizard(depResult, {
165
+ skipPrompts: true,
166
+ });
167
+ expect(wizardResult.skipped).toBe(true);
168
+ expect(wizardResult.completed).toBe(false);
169
+ expect(wizardResult.remainingIssues).toContain("Claude Code CLI not installed");
170
+ });
171
+ it("returns skipped when user declines setup", async () => {
172
+ mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
173
+ mockIsGhAuthenticated.mockReturnValue(true);
174
+ mockInquirerPrompt.mockResolvedValueOnce({ setupDeps: false });
175
+ const depResult = checkAllDependencies();
176
+ const wizardResult = await runSetupWizard(depResult);
177
+ expect(wizardResult.skipped).toBe(true);
178
+ expect(wizardResult.completed).toBe(false);
179
+ expect(wizardResult.remainingIssues.length).toBeGreaterThan(0);
180
+ });
181
+ it("verifies installation when user confirms", async () => {
182
+ // First check: claude is missing
183
+ mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
184
+ mockIsGhAuthenticated.mockReturnValue(true);
185
+ const depResult = checkAllDependencies();
186
+ // User accepts wizard and verifies installation
187
+ mockInquirerPrompt
188
+ .mockResolvedValueOnce({ setupDeps: true })
189
+ .mockResolvedValueOnce({ action: "verify" });
190
+ // After verification, claude is now installed
191
+ mockCommandExists.mockReturnValue(true);
192
+ const wizardResult = await runSetupWizard(depResult);
193
+ expect(wizardResult.completed).toBe(true);
194
+ expect(wizardResult.remainingIssues).toHaveLength(0);
195
+ });
196
+ it("records remaining issues when user skips individual deps", async () => {
197
+ mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
198
+ mockIsGhAuthenticated.mockReturnValue(true);
199
+ const depResult = checkAllDependencies();
200
+ // User accepts wizard but skips claude
201
+ mockInquirerPrompt
202
+ .mockResolvedValueOnce({ setupDeps: true })
203
+ .mockResolvedValueOnce({ action: "skip" });
204
+ const wizardResult = await runSetupWizard(depResult);
205
+ expect(wizardResult.completed).toBe(false);
206
+ expect(wizardResult.remainingIssues).toContain("Claude Code CLI not installed");
207
+ });
208
+ it("handles gh authentication issue specifically", async () => {
209
+ mockCommandExists.mockReturnValue(true);
210
+ mockIsGhAuthenticated.mockReturnValue(false);
211
+ const depResult = checkAllDependencies();
212
+ const wizardResult = await runSetupWizard(depResult, {
213
+ skipPrompts: true,
214
+ });
215
+ expect(wizardResult.remainingIssues).toContain("GitHub CLI (gh) not authenticated");
216
+ });
217
+ it("handles multiple missing dependencies in sequence", async () => {
218
+ // Both gh and claude are missing
219
+ mockCommandExists.mockReturnValue(false);
220
+ mockIsGhAuthenticated.mockReturnValue(false);
221
+ const depResult = checkAllDependencies();
222
+ // User accepts wizard, verifies gh (success), skips claude
223
+ mockInquirerPrompt
224
+ .mockResolvedValueOnce({ setupDeps: true })
225
+ .mockResolvedValueOnce({ action: "verify" }) // gh
226
+ .mockResolvedValueOnce({ action: "skip" }); // claude
227
+ // After first verify, gh is now installed and authenticated
228
+ mockCommandExists.mockImplementation((cmd) => cmd === "gh");
229
+ mockIsGhAuthenticated.mockReturnValue(true);
230
+ const wizardResult = await runSetupWizard(depResult);
231
+ expect(wizardResult.completed).toBe(false);
232
+ expect(wizardResult.remainingIssues).toContain("Claude Code CLI not installed");
233
+ expect(wizardResult.remainingIssues).not.toContain("GitHub CLI");
234
+ });
235
+ it("records issue when verification fails after user claims installation", async () => {
236
+ mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
237
+ mockIsGhAuthenticated.mockReturnValue(true);
238
+ const depResult = checkAllDependencies();
239
+ // User accepts and tries to verify, but it's still not installed
240
+ mockInquirerPrompt
241
+ .mockResolvedValueOnce({ setupDeps: true })
242
+ .mockResolvedValueOnce({ action: "verify" });
243
+ // claude still not installed after "verification"
244
+ // (mockCommandExists already returns false for claude)
245
+ const wizardResult = await runSetupWizard(depResult);
246
+ expect(wizardResult.completed).toBe(false);
247
+ expect(wizardResult.remainingIssues).toContain("Claude Code CLI not installed");
248
+ });
249
+ });
250
+ describe("shouldRunSetupWizard", () => {
251
+ it("returns false when skipSetup is true", () => {
252
+ expect(shouldRunSetupWizard({ skipSetup: true })).toBe(false);
253
+ });
254
+ it("returns false in CI environment", () => {
255
+ mockIsCI.mockReturnValue(true);
256
+ expect(shouldRunSetupWizard({})).toBe(false);
257
+ });
258
+ it("returns true in normal terminal environment", () => {
259
+ mockIsCI.mockReturnValue(false);
260
+ expect(shouldRunSetupWizard({})).toBe(true);
261
+ });
262
+ it("returns true even with yes flag (wizard still runs)", () => {
263
+ mockIsCI.mockReturnValue(false);
264
+ expect(shouldRunSetupWizard({ yes: true })).toBe(true);
265
+ });
266
+ });
267
+ });
268
+ //# sourceMappingURL=wizard.test.js.map