sequant 1.1.3 → 1.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.
- package/README.md +112 -10
- package/dist/bin/cli.js +6 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +33 -2
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/doctor.test.js +63 -1
- package/dist/src/commands/doctor.test.js.map +1 -1
- package/dist/src/commands/init.d.ts +1 -0
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +40 -10
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/init.test.js +100 -1
- package/dist/src/commands/init.test.js.map +1 -1
- package/dist/src/commands/logs.js +1 -1
- package/dist/src/commands/logs.js.map +1 -1
- package/dist/src/commands/run.d.ts +16 -0
- package/dist/src/commands/run.d.ts.map +1 -1
- package/dist/src/commands/run.js +395 -37
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/commands/run.test.d.ts +2 -0
- package/dist/src/commands/run.test.d.ts.map +1 -0
- package/dist/src/commands/run.test.js +155 -0
- package/dist/src/commands/run.test.js.map +1 -0
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +9 -5
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/lib/manifest.d.ts +3 -1
- package/dist/src/lib/manifest.d.ts.map +1 -1
- package/dist/src/lib/manifest.js +2 -1
- package/dist/src/lib/manifest.js.map +1 -1
- package/dist/src/lib/stacks.d.ts +27 -0
- package/dist/src/lib/stacks.d.ts.map +1 -1
- package/dist/src/lib/stacks.js +154 -17
- package/dist/src/lib/stacks.js.map +1 -1
- package/dist/src/lib/stacks.test.js +343 -1
- package/dist/src/lib/stacks.test.js.map +1 -1
- package/dist/src/lib/system.d.ts +8 -0
- package/dist/src/lib/system.d.ts.map +1 -1
- package/dist/src/lib/system.js +23 -0
- package/dist/src/lib/system.js.map +1 -1
- package/dist/src/lib/tty.d.ts +31 -0
- package/dist/src/lib/tty.d.ts.map +1 -0
- package/dist/src/lib/tty.js +81 -0
- package/dist/src/lib/tty.js.map +1 -0
- package/dist/src/lib/tty.test.d.ts +2 -0
- package/dist/src/lib/tty.test.d.ts.map +1 -0
- package/dist/src/lib/tty.test.js +227 -0
- package/dist/src/lib/tty.test.js.map +1 -0
- package/package.json +1 -1
- package/templates/hooks/post-tool.sh +4 -2
- package/templates/scripts/new-feature.sh +33 -9
package/README.md
CHANGED
|
@@ -91,21 +91,66 @@ npx sequant init
|
|
|
91
91
|
### CLI Commands
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
|
-
sequant init # Initialize in your project
|
|
95
|
-
sequant update # Update templates from package
|
|
96
|
-
sequant doctor # Check installation health
|
|
97
|
-
sequant status # Show version and config
|
|
98
|
-
sequant run <issues...> # Execute workflow for issues
|
|
94
|
+
npx sequant init # Initialize in your project
|
|
95
|
+
npx sequant update # Update templates from package
|
|
96
|
+
npx sequant doctor # Check installation health
|
|
97
|
+
npx sequant status # Show version and config
|
|
98
|
+
npx sequant run <issues...> # Execute workflow for issues
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
#### Run Command Options
|
|
102
102
|
|
|
103
103
|
```bash
|
|
104
|
-
sequant run 123 # Single issue
|
|
105
|
-
sequant run 1 2 3 # Multiple issues in parallel
|
|
106
|
-
sequant run 1 2 3 --sequential # Run in order
|
|
107
|
-
sequant run 123 --phases spec,qa # Custom phases
|
|
108
|
-
sequant run 123 --dry-run # Preview without execution
|
|
104
|
+
npx sequant run 123 # Single issue
|
|
105
|
+
npx sequant run 1 2 3 # Multiple issues in parallel
|
|
106
|
+
npx sequant run 1 2 3 --sequential # Run in order
|
|
107
|
+
npx sequant run 123 --phases spec,qa # Custom phases
|
|
108
|
+
npx sequant run 123 --dry-run # Preview without execution
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Phase Detection
|
|
112
|
+
|
|
113
|
+
When you run `sequant run`, phases are determined automatically using a three-level detection system:
|
|
114
|
+
|
|
115
|
+
1. **Explicit phases** — If you specify `--phases`, those are used
|
|
116
|
+
2. **Spec-driven** — Otherwise, `/spec` runs first and outputs a recommended workflow
|
|
117
|
+
3. **Label-based fallback** — If spec parsing fails, issue labels determine phases
|
|
118
|
+
|
|
119
|
+
**Label-based detection:**
|
|
120
|
+
|
|
121
|
+
| Labels | Phases | Notes |
|
|
122
|
+
|--------|--------|-------|
|
|
123
|
+
| `bug`, `fix`, `hotfix`, `patch` | `exec → qa` | Skip spec for simple fixes |
|
|
124
|
+
| `docs`, `documentation`, `readme` | `exec → qa` | Skip spec for docs changes |
|
|
125
|
+
| `ui`, `frontend`, `admin`, `web`, `browser` | `spec → exec → test → qa` | Add browser testing |
|
|
126
|
+
| `complex`, `refactor`, `breaking`, `major` | (default phases) | Enable quality loop |
|
|
127
|
+
|
|
128
|
+
**Spec-driven detection:**
|
|
129
|
+
|
|
130
|
+
The `/spec` command outputs a recommended workflow that the CLI parses:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## Recommended Workflow
|
|
134
|
+
|
|
135
|
+
**Phases:** exec → test → qa
|
|
136
|
+
**Quality Loop:** disabled
|
|
137
|
+
**Reasoning:** UI changes detected, adding browser testing phase
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**CLI examples:**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Phases auto-detected (default)
|
|
144
|
+
npx sequant run 123
|
|
145
|
+
|
|
146
|
+
# Explicit phases (skip auto-detection)
|
|
147
|
+
npx sequant run 123 --phases exec,qa
|
|
148
|
+
|
|
149
|
+
# Disable logging for one run
|
|
150
|
+
npx sequant run 123 --no-log
|
|
151
|
+
|
|
152
|
+
# Enable quality loop for complex changes
|
|
153
|
+
npx sequant run 123 --quality-loop
|
|
109
154
|
```
|
|
110
155
|
|
|
111
156
|
### Workflow Commands (in Claude Code)
|
|
@@ -131,6 +176,28 @@ sequant run 123 --dry-run # Preview without execution
|
|
|
131
176
|
| Windows WSL | ✅ Supported | Use WSL2 with bash |
|
|
132
177
|
| Windows Native | ⚠️ Limited | CLI works, but shell scripts require WSL |
|
|
133
178
|
|
|
179
|
+
### Windows Users
|
|
180
|
+
|
|
181
|
+
**WSL is recommended** for the full Sequant experience on Windows. Here's why:
|
|
182
|
+
|
|
183
|
+
| Feature | Native Windows | Windows + WSL |
|
|
184
|
+
|---------|----------------|---------------|
|
|
185
|
+
| CLI commands (`init`, `doctor`, `status`) | ✅ Works | ✅ Works |
|
|
186
|
+
| Workflow hooks (pre-tool, post-tool) | ❌ Requires bash | ✅ Works |
|
|
187
|
+
| Shell scripts (`new-feature.sh`, etc.) | ❌ Requires bash | ✅ Works |
|
|
188
|
+
| Git worktree workflows | ✅ Works | ✅ Works |
|
|
189
|
+
|
|
190
|
+
**Quick WSL Setup:**
|
|
191
|
+
|
|
192
|
+
1. Install WSL (run in PowerShell as Administrator): `wsl --install`
|
|
193
|
+
2. Restart your computer when prompted
|
|
194
|
+
3. Open Ubuntu from Start menu and complete setup
|
|
195
|
+
4. Install Node.js: See [NodeSource distributions](https://github.com/nodesource/distributions)
|
|
196
|
+
5. Install GitHub CLI: `apt install gh` then `gh auth login`
|
|
197
|
+
6. Use Sequant: `npx sequant init`
|
|
198
|
+
|
|
199
|
+
For detailed instructions, see [Microsoft's WSL documentation](https://learn.microsoft.com/en-us/windows/wsl/install).
|
|
200
|
+
|
|
134
201
|
### Requirements
|
|
135
202
|
|
|
136
203
|
- **Node.js** 18.0.0 or higher
|
|
@@ -191,6 +258,39 @@ Edit `.claude/memory/constitution.md` to define project-specific principles:
|
|
|
191
258
|
- Constants: SCREAMING_SNAKE_CASE
|
|
192
259
|
```
|
|
193
260
|
|
|
261
|
+
### Settings
|
|
262
|
+
|
|
263
|
+
Configure `sequant run` defaults in `.sequant/settings.json`:
|
|
264
|
+
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"version": "1.0",
|
|
268
|
+
"run": {
|
|
269
|
+
"logJson": true,
|
|
270
|
+
"logPath": ".sequant/logs",
|
|
271
|
+
"autoDetectPhases": true,
|
|
272
|
+
"timeout": 300,
|
|
273
|
+
"sequential": false,
|
|
274
|
+
"qualityLoop": false,
|
|
275
|
+
"maxIterations": 3,
|
|
276
|
+
"smartTests": true
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
| Option | Default | Description |
|
|
282
|
+
|--------|---------|-------------|
|
|
283
|
+
| `logJson` | `true` | Enable JSON logging for run sessions |
|
|
284
|
+
| `logPath` | `.sequant/logs` | Directory for log files |
|
|
285
|
+
| `autoDetectPhases` | `true` | Auto-detect phases from labels/spec output |
|
|
286
|
+
| `timeout` | `300` | Timeout per phase in seconds |
|
|
287
|
+
| `sequential` | `false` | Run issues sequentially (vs parallel) |
|
|
288
|
+
| `qualityLoop` | `false` | Enable quality loop by default |
|
|
289
|
+
| `maxIterations` | `3` | Max quality loop iterations |
|
|
290
|
+
| `smartTests` | `true` | Auto-detect test commands |
|
|
291
|
+
|
|
292
|
+
CLI flags override settings file values.
|
|
293
|
+
|
|
194
294
|
## Directory Structure
|
|
195
295
|
|
|
196
296
|
After `sequant init`:
|
|
@@ -218,6 +318,8 @@ After `sequant init`:
|
|
|
218
318
|
- [Customization Guide](docs/customization.md) — Override templates safely
|
|
219
319
|
- [Troubleshooting](docs/troubleshooting.md) — Common issues and solutions
|
|
220
320
|
- [Testing Guide](docs/testing.md) — Cross-platform testing matrix
|
|
321
|
+
- [Git Patterns](docs/git-patterns.md) — Worktree and merge workflows
|
|
322
|
+
- [Release Checklist](docs/release-checklist.md) — Pre-release verification
|
|
221
323
|
- Stack Guides: [Next.js](docs/stacks/nextjs.md) | [Rust](docs/stacks/rust.md) | [Python](docs/stacks/python.md) | [Go](docs/stacks/go.md)
|
|
222
324
|
|
|
223
325
|
## Philosophy
|
package/dist/bin/cli.js
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from "commander";
|
|
8
8
|
import chalk from "chalk";
|
|
9
|
+
import { createRequire } from "module";
|
|
9
10
|
import { initCommand } from "../src/commands/init.js";
|
|
11
|
+
// Read version from package.json
|
|
12
|
+
const require = createRequire(import.meta.url);
|
|
13
|
+
const { version } = require("../package.json");
|
|
10
14
|
import { updateCommand } from "../src/commands/update.js";
|
|
11
15
|
import { doctorCommand } from "../src/commands/doctor.js";
|
|
12
16
|
import { statusCommand } from "../src/commands/status.js";
|
|
@@ -20,7 +24,7 @@ if (process.argv.includes("--no-color")) {
|
|
|
20
24
|
program
|
|
21
25
|
.name("sequant")
|
|
22
26
|
.description("Quantize your development workflow - Sequential AI phases with quality gates")
|
|
23
|
-
.version(
|
|
27
|
+
.version(version)
|
|
24
28
|
.option("--no-color", "Disable colored output");
|
|
25
29
|
program
|
|
26
30
|
.command("init")
|
|
@@ -28,6 +32,7 @@ program
|
|
|
28
32
|
.option("-s, --stack <stack>", "Specify stack (nextjs, rust, python, go)")
|
|
29
33
|
.option("-y, --yes", "Skip confirmation prompts")
|
|
30
34
|
.option("-f, --force", "Overwrite existing configuration")
|
|
35
|
+
.option("-i, --interactive", "Force interactive mode even in non-TTY environment")
|
|
31
36
|
.action(initCommand);
|
|
32
37
|
program
|
|
33
38
|
.command("update")
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,UAAU,aAAa;CAEtB;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwPzE"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import { fileExists, isExecutable } from "../lib/fs.js";
|
|
6
6
|
import { getManifest } from "../lib/manifest.js";
|
|
7
|
-
import { commandExists, isGhAuthenticated } from "../lib/system.js";
|
|
7
|
+
import { commandExists, isGhAuthenticated, isNativeWindows, isWSL, } from "../lib/system.js";
|
|
8
8
|
export async function doctorCommand(options) {
|
|
9
9
|
console.log(chalk.blue("\n🔍 Running health checks...\n"));
|
|
10
10
|
const checks = [];
|
|
@@ -158,7 +158,22 @@ export async function doctorCommand(options) {
|
|
|
158
158
|
message: "gh CLI not installed - see: https://cli.github.com",
|
|
159
159
|
});
|
|
160
160
|
}
|
|
161
|
-
// Check 10:
|
|
161
|
+
// Check 10: Claude Code CLI installed (critical)
|
|
162
|
+
if (commandExists("claude")) {
|
|
163
|
+
checks.push({
|
|
164
|
+
name: "Claude Code CLI",
|
|
165
|
+
status: "pass",
|
|
166
|
+
message: "claude CLI is installed",
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
checks.push({
|
|
171
|
+
name: "Claude Code CLI",
|
|
172
|
+
status: "fail",
|
|
173
|
+
message: "claude CLI not installed - see: https://docs.anthropic.com/en/docs/claude-code",
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
// Check 12: jq installed (optional but recommended)
|
|
162
177
|
if (commandExists("jq")) {
|
|
163
178
|
checks.push({
|
|
164
179
|
name: "jq",
|
|
@@ -173,6 +188,22 @@ export async function doctorCommand(options) {
|
|
|
173
188
|
message: "jq not installed (optional, hooks will use grep fallback)",
|
|
174
189
|
});
|
|
175
190
|
}
|
|
191
|
+
// Check 13: Windows platform detection
|
|
192
|
+
if (isNativeWindows()) {
|
|
193
|
+
checks.push({
|
|
194
|
+
name: "Platform",
|
|
195
|
+
status: "warn",
|
|
196
|
+
message: "Running on native Windows - WSL recommended for full functionality (hooks, scripts)",
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
else if (isWSL()) {
|
|
200
|
+
checks.push({
|
|
201
|
+
name: "Platform",
|
|
202
|
+
status: "pass",
|
|
203
|
+
message: "Running in WSL - full functionality available",
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
// On macOS/Linux, don't add a platform check (not relevant)
|
|
176
207
|
// Display results
|
|
177
208
|
let passCount = 0;
|
|
178
209
|
let warnCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,KAAK,GACN,MAAM,kBAAkB,CAAC;AAc1B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,kCAAkC,QAAQ,CAAC,OAAO,GAAG;SAC/D,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,qDAAqD;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mCAAmC;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,kBAAkB,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC;YAC5D,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,wBAAwB;SAClC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,+CAA+C;SACzD,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG,2BAA2B,CAAC;IAChD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,IAAI,MAAM,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,6BAA6B;aACvC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,MAAM;gBACd,OAAO,EACL,gEAAgE;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAChE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,sBAAsB;SAChC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6CAA6C;SACvD,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,qDAAqD;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;QAEH,wDAAwD;QACxD,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,yBAAyB;aACnC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,+CAA+C;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,oDAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,OAAO,EACL,gFAAgF;SACnF,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,gDAAgD;SAC1D,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,2DAA2D;SACrE,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EACL,qFAAqF;SACxF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,+CAA+C;SACzD,CAAC,CAAC;IACL,CAAC;IACD,4DAA4D;IAE5D,kBAAkB;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,MAAM;YACrB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAClB,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;gBACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,KAAK,GACT,KAAK,CAAC,MAAM,KAAK,MAAM;YACrB,CAAC,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;gBACvB,CAAC,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAElB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,SAAS,EAAE,CAAC;aACpC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,SAAS,EAAE,CAAC;;YACzC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC;IAEtE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAChE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CACnE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -12,16 +12,20 @@ vi.mock("../lib/manifest.js", () => ({
|
|
|
12
12
|
vi.mock("../lib/system.js", () => ({
|
|
13
13
|
commandExists: vi.fn(),
|
|
14
14
|
isGhAuthenticated: vi.fn(),
|
|
15
|
+
isNativeWindows: vi.fn(),
|
|
16
|
+
isWSL: vi.fn(),
|
|
15
17
|
}));
|
|
16
18
|
import { doctorCommand } from "./doctor.js";
|
|
17
19
|
import { fileExists, isExecutable } from "../lib/fs.js";
|
|
18
20
|
import { getManifest } from "../lib/manifest.js";
|
|
19
|
-
import { commandExists, isGhAuthenticated } from "../lib/system.js";
|
|
21
|
+
import { commandExists, isGhAuthenticated, isNativeWindows, isWSL, } from "../lib/system.js";
|
|
20
22
|
const mockFileExists = vi.mocked(fileExists);
|
|
21
23
|
const mockIsExecutable = vi.mocked(isExecutable);
|
|
22
24
|
const mockGetManifest = vi.mocked(getManifest);
|
|
23
25
|
const mockCommandExists = vi.mocked(commandExists);
|
|
24
26
|
const mockIsGhAuthenticated = vi.mocked(isGhAuthenticated);
|
|
27
|
+
const mockIsNativeWindows = vi.mocked(isNativeWindows);
|
|
28
|
+
const mockIsWSL = vi.mocked(isWSL);
|
|
25
29
|
describe("doctor command", () => {
|
|
26
30
|
let consoleLogSpy;
|
|
27
31
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -43,6 +47,9 @@ describe("doctor command", () => {
|
|
|
43
47
|
});
|
|
44
48
|
mockCommandExists.mockReturnValue(true);
|
|
45
49
|
mockIsGhAuthenticated.mockReturnValue(true);
|
|
50
|
+
// Default: not on Windows
|
|
51
|
+
mockIsNativeWindows.mockReturnValue(false);
|
|
52
|
+
mockIsWSL.mockReturnValue(false);
|
|
46
53
|
});
|
|
47
54
|
afterEach(() => {
|
|
48
55
|
consoleLogSpy.mockRestore();
|
|
@@ -91,6 +98,33 @@ describe("doctor command", () => {
|
|
|
91
98
|
expect(output).not.toContain("GitHub Auth");
|
|
92
99
|
});
|
|
93
100
|
});
|
|
101
|
+
describe("Claude Code CLI checks", () => {
|
|
102
|
+
it("passes when claude CLI is installed", async () => {
|
|
103
|
+
mockCommandExists.mockReturnValue(true);
|
|
104
|
+
mockIsGhAuthenticated.mockReturnValue(true);
|
|
105
|
+
await doctorCommand({});
|
|
106
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
107
|
+
expect(output).toContain("Claude Code CLI");
|
|
108
|
+
expect(output).toContain("claude CLI is installed");
|
|
109
|
+
});
|
|
110
|
+
it("fails when claude CLI is not installed", async () => {
|
|
111
|
+
mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
|
|
112
|
+
mockIsGhAuthenticated.mockReturnValue(true);
|
|
113
|
+
await doctorCommand({});
|
|
114
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
115
|
+
expect(output).toContain("Claude Code CLI");
|
|
116
|
+
expect(output).toContain("claude CLI not installed");
|
|
117
|
+
expect(output).toContain("https://docs.anthropic.com/en/docs/claude-code");
|
|
118
|
+
expect(processExitSpy).toHaveBeenCalledWith(1);
|
|
119
|
+
});
|
|
120
|
+
it("shows install link when claude CLI is missing", async () => {
|
|
121
|
+
mockCommandExists.mockImplementation((cmd) => cmd !== "claude");
|
|
122
|
+
mockIsGhAuthenticated.mockReturnValue(true);
|
|
123
|
+
await doctorCommand({});
|
|
124
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
125
|
+
expect(output).toContain("https://docs.anthropic.com/en/docs/claude-code");
|
|
126
|
+
});
|
|
127
|
+
});
|
|
94
128
|
describe("jq checks", () => {
|
|
95
129
|
it("passes when jq is installed", async () => {
|
|
96
130
|
mockCommandExists.mockReturnValue(true);
|
|
@@ -112,6 +146,34 @@ describe("doctor command", () => {
|
|
|
112
146
|
expect(processExitSpy).not.toHaveBeenCalled();
|
|
113
147
|
});
|
|
114
148
|
});
|
|
149
|
+
describe("Windows platform checks", () => {
|
|
150
|
+
it("warns when running on native Windows", async () => {
|
|
151
|
+
mockIsNativeWindows.mockReturnValue(true);
|
|
152
|
+
mockIsWSL.mockReturnValue(false);
|
|
153
|
+
await doctorCommand({});
|
|
154
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
155
|
+
expect(output).toContain("Platform");
|
|
156
|
+
expect(output).toContain("native Windows");
|
|
157
|
+
expect(output).toContain("WSL recommended");
|
|
158
|
+
});
|
|
159
|
+
it("passes when running in WSL", async () => {
|
|
160
|
+
mockIsNativeWindows.mockReturnValue(false);
|
|
161
|
+
mockIsWSL.mockReturnValue(true);
|
|
162
|
+
await doctorCommand({});
|
|
163
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
164
|
+
expect(output).toContain("Platform");
|
|
165
|
+
expect(output).toContain("Running in WSL");
|
|
166
|
+
expect(output).toContain("full functionality");
|
|
167
|
+
});
|
|
168
|
+
it("does not show platform check on macOS/Linux", async () => {
|
|
169
|
+
mockIsNativeWindows.mockReturnValue(false);
|
|
170
|
+
mockIsWSL.mockReturnValue(false);
|
|
171
|
+
await doctorCommand({});
|
|
172
|
+
const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
173
|
+
// Should not contain Platform check on non-Windows systems
|
|
174
|
+
expect(output).not.toContain("Platform");
|
|
175
|
+
});
|
|
176
|
+
});
|
|
115
177
|
describe("combined scenarios", () => {
|
|
116
178
|
it("all checks pass when everything is installed and configured", async () => {
|
|
117
179
|
mockCommandExists.mockReturnValue(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../../src/commands/doctor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,oBAAoB;AACpB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;CACtB,CAAC,CAAC,CAAC;AAEJ,gBAAgB;AAChB,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;CACrB,CAAC,CAAC,CAAC;AAEJ,wBAAwB;AACxB,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../../src/commands/doctor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsDH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AASD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmOrE"}
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import inquirer from "inquirer";
|
|
6
|
-
import { detectStack, getStackConfig } from "../lib/stacks.js";
|
|
6
|
+
import { detectStack, getStackConfig, detectPackageManager, } from "../lib/stacks.js";
|
|
7
7
|
import { copyTemplates } from "../lib/templates.js";
|
|
8
8
|
import { createManifest } from "../lib/manifest.js";
|
|
9
9
|
import { saveConfig } from "../lib/config.js";
|
|
10
10
|
import { createDefaultSettings } from "../lib/settings.js";
|
|
11
11
|
import { fileExists, ensureDir } from "../lib/fs.js";
|
|
12
12
|
import { commandExists, isGhAuthenticated, getInstallHint, } from "../lib/system.js";
|
|
13
|
+
import { shouldUseInteractiveMode, getNonInteractiveReason, } from "../lib/tty.js";
|
|
13
14
|
/**
|
|
14
15
|
* Check prerequisites and display warnings
|
|
15
16
|
*/
|
|
@@ -31,8 +32,23 @@ function checkPrerequisites() {
|
|
|
31
32
|
}
|
|
32
33
|
return { warnings, suggestions };
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Log a default value being used in non-interactive mode
|
|
37
|
+
*/
|
|
38
|
+
function logDefault(label, value) {
|
|
39
|
+
console.log(chalk.blue(`📦 ${label}: ${value} (default)`));
|
|
40
|
+
}
|
|
34
41
|
export async function initCommand(options) {
|
|
35
42
|
console.log(chalk.green("\n🚀 Initializing Sequant...\n"));
|
|
43
|
+
// Determine if we should use interactive mode
|
|
44
|
+
const useInteractive = shouldUseInteractiveMode(options.interactive);
|
|
45
|
+
const skipPrompts = options.yes || !useInteractive;
|
|
46
|
+
// Show non-interactive mode message if applicable
|
|
47
|
+
if (!useInteractive && !options.yes) {
|
|
48
|
+
const reason = getNonInteractiveReason();
|
|
49
|
+
console.log(chalk.yellow(`⚡ Non-interactive mode detected${reason ? ` (${reason})` : ""}`));
|
|
50
|
+
console.log(chalk.gray(" Using defaults. Use --interactive to force prompts.\n"));
|
|
51
|
+
}
|
|
36
52
|
// Check prerequisites and display warnings
|
|
37
53
|
const { warnings, suggestions } = checkPrerequisites();
|
|
38
54
|
if (warnings.length > 0) {
|
|
@@ -50,7 +66,7 @@ export async function initCommand(options) {
|
|
|
50
66
|
if (configExists && !options.force) {
|
|
51
67
|
console.log(chalk.yellow("⚠️ Sequant appears to be already initialized (.claude/settings.json exists)"));
|
|
52
68
|
console.log(chalk.gray(" Use --force to reinitialize\n"));
|
|
53
|
-
if (!
|
|
69
|
+
if (!skipPrompts) {
|
|
54
70
|
const { proceed } = await inquirer.prompt([
|
|
55
71
|
{
|
|
56
72
|
type: "confirm",
|
|
@@ -69,11 +85,11 @@ export async function initCommand(options) {
|
|
|
69
85
|
let stack = options.stack;
|
|
70
86
|
if (!stack) {
|
|
71
87
|
const detected = await detectStack();
|
|
72
|
-
if (detected &&
|
|
88
|
+
if (detected && skipPrompts) {
|
|
73
89
|
stack = detected;
|
|
74
|
-
|
|
90
|
+
logDefault("Detected stack", stack);
|
|
75
91
|
}
|
|
76
|
-
else if (detected) {
|
|
92
|
+
else if (detected && !skipPrompts) {
|
|
77
93
|
const { confirmedStack } = await inquirer.prompt([
|
|
78
94
|
{
|
|
79
95
|
type: "list",
|
|
@@ -87,7 +103,12 @@ export async function initCommand(options) {
|
|
|
87
103
|
]);
|
|
88
104
|
stack = confirmedStack;
|
|
89
105
|
}
|
|
90
|
-
if (!stack) {
|
|
106
|
+
if (!stack && skipPrompts) {
|
|
107
|
+
// No detection and skipping prompts: use generic as default
|
|
108
|
+
stack = "generic";
|
|
109
|
+
logDefault("Using stack", stack);
|
|
110
|
+
}
|
|
111
|
+
else if (!stack) {
|
|
91
112
|
const { selectedStack } = await inquirer.prompt([
|
|
92
113
|
{
|
|
93
114
|
type: "list",
|
|
@@ -95,6 +116,10 @@ export async function initCommand(options) {
|
|
|
95
116
|
message: "Select your project stack:",
|
|
96
117
|
choices: [
|
|
97
118
|
{ name: "Next.js / React", value: "nextjs" },
|
|
119
|
+
{ name: "Astro", value: "astro" },
|
|
120
|
+
{ name: "SvelteKit", value: "sveltekit" },
|
|
121
|
+
{ name: "Remix", value: "remix" },
|
|
122
|
+
{ name: "Nuxt", value: "nuxt" },
|
|
98
123
|
{ name: "Rust", value: "rust" },
|
|
99
124
|
{ name: "Python", value: "python" },
|
|
100
125
|
{ name: "Go", value: "go" },
|
|
@@ -106,12 +131,17 @@ export async function initCommand(options) {
|
|
|
106
131
|
}
|
|
107
132
|
}
|
|
108
133
|
console.log(chalk.blue(`\n📋 Stack: ${stack}`));
|
|
134
|
+
// Detect package manager
|
|
135
|
+
const packageManager = await detectPackageManager();
|
|
136
|
+
if (packageManager) {
|
|
137
|
+
console.log(chalk.blue(`📦 Package Manager: ${packageManager}`));
|
|
138
|
+
}
|
|
109
139
|
// Get stack config for default dev URL
|
|
110
140
|
const stackConfig = getStackConfig(stack);
|
|
111
141
|
let devUrl = stackConfig.devUrl;
|
|
112
142
|
// Prompt for dev URL
|
|
113
|
-
if (
|
|
114
|
-
|
|
143
|
+
if (skipPrompts) {
|
|
144
|
+
logDefault("Dev URL", devUrl);
|
|
115
145
|
}
|
|
116
146
|
else {
|
|
117
147
|
const { inputDevUrl } = await inquirer.prompt([
|
|
@@ -136,7 +166,7 @@ export async function initCommand(options) {
|
|
|
136
166
|
console.log(chalk.gray(" └── logs/ (workflow run logs)"));
|
|
137
167
|
console.log(chalk.gray(" scripts/dev/"));
|
|
138
168
|
console.log(chalk.gray(" └── *.sh (worktree helpers)"));
|
|
139
|
-
if (!
|
|
169
|
+
if (!skipPrompts) {
|
|
140
170
|
const { confirm } = await inquirer.prompt([
|
|
141
171
|
{
|
|
142
172
|
type: "confirm",
|
|
@@ -174,7 +204,7 @@ export async function initCommand(options) {
|
|
|
174
204
|
await copyTemplates(stack, tokens);
|
|
175
205
|
// Create manifest
|
|
176
206
|
console.log(chalk.blue("📋 Creating manifest..."));
|
|
177
|
-
await createManifest(stack);
|
|
207
|
+
await createManifest(stack, packageManager ?? undefined);
|
|
178
208
|
// Build optional suggestions section
|
|
179
209
|
const optionalSuggestions = suggestions.filter((s) => s.startsWith("Optional"));
|
|
180
210
|
const optionalSection = optionalSuggestions.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|