@vyuhlabs/dxkit 1.2.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,67 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.4.0] - 2026-04-09
11
+
12
+ ### Added
13
+ - **`.project.yaml` config source.** When `.project.yaml` exists in the
14
+ target directory (typically written by `@vyuhlabs/create-devstack`),
15
+ `dxkit init` reads it and uses it as the config source — skipping
16
+ both `detect()` and interactive prompts. This enables greenfield
17
+ projects where no language files exist yet. If the file is malformed
18
+ or missing `project.name`, dxkit falls back to detection + prompts.
19
+ - **Library exports**: `hasProjectYaml()` and `readProjectYaml()` from
20
+ the `@vyuhlabs/dxkit` package entry point.
21
+ - **README**: `.project.yaml` documentation, library API section, and
22
+ config source priority.
23
+
24
+ ## [1.3.0] - 2026-04-09
25
+
26
+ ### Added
27
+ - **Library entry point** (`src/lib.ts`). Exports `detect()`,
28
+ `processTemplate()`, `TemplateEngine`, and `DetectedStack` for
29
+ programmatic consumption by downstream packages like
30
+ `@vyuhlabs/create-devstack`. The npm `exports` and `main` fields now
31
+ point to `dist/lib.js` so `import { detect } from '@vyuhlabs/dxkit'`
32
+ works. The CLI binary (`vyuh-dxkit`) is unaffected.
33
+ - **Path-scoped auto-activation** (`paths:` frontmatter) on four shipped
34
+ skills, so they auto-load whenever Claude Code is touching a matching
35
+ file — even if the user's prompt doesn't name the tool:
36
+ - `gcloud` — `**/cloudbuild.{yaml,yml}`, `**/.gcloudignore`, `**/app.yaml`
37
+ - `pulumi` — `Pulumi.{yaml,yml}` and stack variants
38
+ - `secrets` — `**/.env*`, `**/.infisical.json`
39
+ - `test` — common test file patterns across TypeScript, JavaScript,
40
+ Go, Python (`**/*.test.*`, `**/*_test.go`, `**/test_*.py`,
41
+ `**/__tests__/**`, `**/tests/**`)
42
+
43
+ This is additive — descriptions still drive activation for everything
44
+ else, and the eight intent-driven skills (`build`, `deploy`, `doctor`,
45
+ `learned`, `quality`, `review`, `scaffold`, `session`) remain
46
+ description-only, since path-scoping would over- or under-trigger them.
47
+ - **Test suite** (Vitest). Unit tests for `detect()` against fixture project
48
+ trees, plus an integration test that runs the built CLI against a tmp dir
49
+ and asserts on the generated `.claude/` tree.
50
+ - **Lint + format toolchain.** ESLint flat config with `typescript-eslint`,
51
+ Prettier, and `eslint-config-prettier`. CI enforces both with
52
+ `--max-warnings 0`.
53
+ - **Git hooks** via husky + lint-staged. Pre-commit auto-fixes staged files
54
+ and runs `tsc --noEmit`. Pre-push runs affected tests
55
+ (`vitest run --changed @{u}`) with a graceful fallback to the full suite.
56
+ - **`.git-blame-ignore-revs`** so formatting commits don't pollute blame.
57
+
58
+ ### Changed
59
+ - **GitHub Actions Node version bumped from 20 → 22** in both `ci.yml` and
60
+ `publish.yml`. Removes the Node 20 deprecation warning ahead of the
61
+ 2026-06-02 runner cutoff. `.nvmrc` updated to match. The package's
62
+ `engines.node: ">=18"` constraint is unchanged — consumers on Node 18+
63
+ are unaffected.
64
+ - **One-time Prettier baseline** applied across the existing source. The
65
+ baseline commit is registered in `.git-blame-ignore-revs`.
66
+
67
+ ### Fixed
68
+ - Removed three unused-variable / unused-import dead-code spots in
69
+ `src/generator.ts` and `src/codebase-scanner.ts` that ESLint flagged.
70
+
10
71
  ## [1.2.1] - 2026-04-06
11
72
 
12
73
  ### Fixed
package/README.md CHANGED
@@ -55,13 +55,13 @@ CLAUDE.md # Main context file for Claude Code
55
55
 
56
56
  ## Supported Languages
57
57
 
58
- | Language | Detection | Linters | Test Runner |
59
- |---|---|---|---|
60
- | Node.js / TypeScript | `package.json` | ESLint, Prettier, tsc | Auto-detected (Jest, Mocha, Vitest, Ava, Tap) |
61
- | Python | `pyproject.toml`, `setup.py`, `*.py` | ruff, mypy | pytest |
62
- | Go | `go.mod` | golangci-lint, go vet | go test |
63
- | C# | `*.csproj`, `*.sln` | dotnet format, Roslyn | dotnet test |
64
- | Rust | `Cargo.toml` | clippy, rustfmt | cargo test |
58
+ | Language | Detection | Linters | Test Runner |
59
+ | -------------------- | ------------------------------------ | --------------------- | --------------------------------------------- |
60
+ | Node.js / TypeScript | `package.json` | ESLint, Prettier, tsc | Auto-detected (Jest, Mocha, Vitest, Ava, Tap) |
61
+ | Python | `pyproject.toml`, `setup.py`, `*.py` | ruff, mypy | pytest |
62
+ | Go | `go.mod` | golangci-lint, go vet | go test |
63
+ | C# | `*.csproj`, `*.sln` | dotnet format, Roslyn | dotnet test |
64
+ | Rust | `Cargo.toml` | clippy, rustfmt | cargo test |
65
65
 
66
66
  Multi-language repos fully supported — detects and generates rules/commands for all languages present.
67
67
 
@@ -87,66 +87,74 @@ Auto-detected and integrated when present:
87
87
  ## Commands (30)
88
88
 
89
89
  ### Development Workflow
90
- | Command | Description |
91
- |---|---|
92
- | `/session-start` | Start an AI-assisted dev session |
93
- | `/session-end` | End session, create checkpoint, evolve skills |
90
+
91
+ | Command | Description |
92
+ | ----------------- | --------------------------------------------------- |
93
+ | `/session-start` | Start an AI-assisted dev session |
94
+ | `/session-end` | End session, create checkpoint, evolve skills |
94
95
  | `/ask <question>` | Ask about the codebase (delegates to knowledge-bot) |
95
- | `/learn` | Capture a gotcha, convention, or thing to avoid |
96
+ | `/learn` | Capture a gotcha, convention, or thing to avoid |
96
97
 
97
98
  ### Quality & Testing
98
- | Command | Description |
99
- |---|---|
100
- | `/quality` | Run language-specific linters + AI review |
101
- | `/test` | Run tests (auto-detected runner) |
102
- | `/check` | Full pre-commit validation (quality + tests + AI review) |
103
- | `/fix` | Auto-fix formatting and lint issues |
104
- | `/build` | Build the project |
105
- | `/test-gaps` | Find critical untested code paths |
99
+
100
+ | Command | Description |
101
+ | ------------ | -------------------------------------------------------- |
102
+ | `/quality` | Run language-specific linters + AI review |
103
+ | `/test` | Run tests (auto-detected runner) |
104
+ | `/check` | Full pre-commit validation (quality + tests + AI review) |
105
+ | `/fix` | Auto-fix formatting and lint issues |
106
+ | `/build` | Build the project |
107
+ | `/test-gaps` | Find critical untested code paths |
106
108
 
107
109
  ### Analysis & Reports
108
- | Command | Description | Output |
109
- |---|---|---|
110
- | `/health` | 6-dimension codebase health audit | `.ai/reports/health-audit-*.md` |
110
+
111
+ | Command | Description | Output |
112
+ | ------------------ | ---------------------------------------------- | ------------------------------------- |
113
+ | `/health` | 6-dimension codebase health audit | `.ai/reports/health-audit-*.md` |
111
114
  | `/vulnerabilities` | CWE-classified security scan (Snyk-comparable) | `.ai/reports/vulnerability-scan-*.md` |
112
- | `/dev-report` | Developer activity + security attribution | `.ai/reports/developer-report-*.md` |
113
- | `/docs audit` | Documentation gap analysis | `.ai/reports/docs-audit-*.md` |
114
- | `/deps` | Dependency map + blast radius | `.ai/reports/dependency-map-*.md` |
115
- | `/dashboard` | Generate HTML dashboard from all reports | `.ai/reports/dashboard.html` |
116
- | `/export-pdf` | Convert markdown reports to PDF | `.ai/reports/*.pdf` |
115
+ | `/dev-report` | Developer activity + security attribution | `.ai/reports/developer-report-*.md` |
116
+ | `/docs audit` | Documentation gap analysis | `.ai/reports/docs-audit-*.md` |
117
+ | `/deps` | Dependency map + blast radius | `.ai/reports/dependency-map-*.md` |
118
+ | `/dashboard` | Generate HTML dashboard from all reports | `.ai/reports/dashboard.html` |
119
+ | `/export-pdf` | Convert markdown reports to PDF | `.ai/reports/*.pdf` |
117
120
 
118
121
  ### Planning & Execution — Fix Loop
119
- | Command | Description | Output |
120
- |---|---|---|
121
- | `/plan` | Analyze reports → propose KPIs → generate improvement plans | `.ai/plans/` |
122
- | `/execute-plan <name>` | Execute a fix plan task by task with session checkpoints | `.ai/plans/progress/`, `.ai/sessions/` |
122
+
123
+ | Command | Description | Output |
124
+ | ---------------------- | ----------------------------------------------------------- | -------------------------------------- |
125
+ | `/plan` | Analyze reports propose KPIs generate improvement plans | `.ai/plans/` |
126
+ | `/execute-plan <name>` | Execute a fix plan task by task with session checkpoints | `.ai/plans/progress/`, `.ai/sessions/` |
123
127
 
124
128
  ### Feature Development Loop
125
- | Command | Description | Output |
126
- |---|---|---|
127
- | `/feature <description>` | Design new feature → implementation plan | `.ai/features/` |
128
- | `/build-feature <slug>` | Build feature from plan with tests and conventions | `.ai/features/progress/`, `.ai/sessions/` |
129
+
130
+ | Command | Description | Output |
131
+ | ------------------------ | -------------------------------------------------- | ----------------------------------------- |
132
+ | `/feature <description>` | Design new feature implementation plan | `.ai/features/` |
133
+ | `/build-feature <slug>` | Build feature from plan with tests and conventions | `.ai/features/progress/`, `.ai/sessions/` |
129
134
 
130
135
  ### Exploration & Onboarding
131
- | Command | Description |
132
- |---|---|
133
- | `/onboarding` | Interactive onboarding buddy for new developers |
134
- | `/explore-codebase` | Deep architecture exploration |
135
- | `/help` | List all commands and agents |
136
+
137
+ | Command | Description |
138
+ | ------------------- | ----------------------------------------------- |
139
+ | `/onboarding` | Interactive onboarding buddy for new developers |
140
+ | `/explore-codebase` | Deep architecture exploration |
141
+ | `/help` | List all commands and agents |
136
142
 
137
143
  ### Setup & Hooks
138
- | Command | Description |
139
- |---|---|
140
- | `/setup-hooks` | Configure git hooks (quality, test, vulnerability) — consistent with DXKit reports |
141
- | `/stealth-mode` | Gitignore DXKit files + install hooks (DXKit local-only, hooks for all devs) |
142
- | `/setup-pr-review` | Set up automated PR review GitHub Action |
143
- | `/fix-issue <number>` | Investigate and fix a GitHub issue |
144
- | `/doctor` | Diagnose environment issues |
145
- | `/enable-agent <name>` | Activate a dormant agent |
144
+
145
+ | Command | Description |
146
+ | ---------------------- | ---------------------------------------------------------------------------------- |
147
+ | `/setup-hooks` | Configure git hooks (quality, test, vulnerability) consistent with DXKit reports |
148
+ | `/stealth-mode` | Gitignore DXKit files + install hooks (DXKit local-only, hooks for all devs) |
149
+ | `/setup-pr-review` | Set up automated PR review GitHub Action |
150
+ | `/fix-issue <number>` | Investigate and fix a GitHub issue |
151
+ | `/doctor` | Diagnose environment issues |
152
+ | `/enable-agent <name>` | Activate a dormant agent |
146
153
 
147
154
  ## Agents
148
155
 
149
156
  ### Active by Default (4)
157
+
150
158
  These agents auto-trigger when Claude detects a matching question:
151
159
 
152
160
  - **knowledge-bot** — "How does auth work?" "Where are payments handled?"
@@ -155,6 +163,7 @@ These agents auto-trigger when Claude detects a matching question:
155
163
  - **doc-writer** — "What needs documentation?" "Help me write docs"
156
164
 
157
165
  ### Dormant (16) — activate with `/enable-agent`
166
+
158
167
  - **codebase-explorer** — Deep architecture analysis, generates documentation
159
168
  - **code-reviewer** — PR review and security audit (read-only)
160
169
  - **test-writer** — Writes tests for existing code
@@ -186,6 +195,7 @@ All analysis commands save timestamped reports to `.ai/reports/`:
186
195
  ```
187
196
 
188
197
  Export options:
198
+
189
199
  - **HTML dashboard**: `/dashboard` — beautiful dark-themed dashboard with sidebar navigation
190
200
  - **PDF**: `/export-pdf all` — converts all reports to PDF
191
201
 
@@ -228,6 +238,7 @@ PR → CI workflow → full quality + tests + security (thorough, ~3m)
228
238
  ### Stealth Mode
229
239
 
230
240
  `/stealth-mode` keeps DXKit local-only:
241
+
231
242
  - `.claude/`, `.ai/`, `CLAUDE.md` gitignored — not committed
232
243
  - `.githooks/` committed — all devs get the hooks
233
244
  - One-time setup: `git config core.hooksPath .githooks`
@@ -236,17 +247,17 @@ PR → CI workflow → full quality + tests + security (thorough, ~3m)
236
247
 
237
248
  The `/vulnerabilities` command runs a comprehensive security scan with CWE classification:
238
249
 
239
- | Category | CWE | What It Checks |
240
- |---|---|---|
241
- | Command Injection | CWE-78 | `exec()`, `child_process`, unsanitized input |
242
- | Decompression Bomb | CWE-409 | zlib/tar/decompress without size limits |
243
- | Uncontrolled Recursion | CWE-674 | JSON/XML/YAML parsers without depth limits |
244
- | Arbitrary File Upload | CWE-434 | multer/formidable/busboy without validation |
245
- | Buffer Overflow | CWE-120 | Native modules (binding.gyp, .node files) |
246
- | Resource Exhaustion | CWE-770 | Missing rate limits, body size limits, WebSocket payload |
247
- | Hardcoded Secrets | CWE-798 | Passwords, API keys, tokens in source |
248
- | Prototype Pollution | CWE-1321 | Via dependency audit CWE extraction |
249
- | + 15 more CWE categories | | Parsed from `npm audit --json` CWE fields |
250
+ | Category | CWE | What It Checks |
251
+ | ------------------------ | -------- | -------------------------------------------------------- |
252
+ | Command Injection | CWE-78 | `exec()`, `child_process`, unsanitized input |
253
+ | Decompression Bomb | CWE-409 | zlib/tar/decompress without size limits |
254
+ | Uncontrolled Recursion | CWE-674 | JSON/XML/YAML parsers without depth limits |
255
+ | Arbitrary File Upload | CWE-434 | multer/formidable/busboy without validation |
256
+ | Buffer Overflow | CWE-120 | Native modules (binding.gyp, .node files) |
257
+ | Resource Exhaustion | CWE-770 | Missing rate limits, body size limits, WebSocket payload |
258
+ | Hardcoded Secrets | CWE-798 | Passwords, API keys, tokens in source |
259
+ | Prototype Pollution | CWE-1321 | Via dependency audit CWE extraction |
260
+ | + 15 more CWE categories | | Parsed from `npm audit --json` CWE fields |
250
261
 
251
262
  Reports include a **Findings by CWE Category** table for direct comparison with Snyk/Sonar output.
252
263
 
@@ -258,6 +269,70 @@ Reports include a **Findings by CWE Category** table for direct comparison with
258
269
  - **Multi-language** — Detects all languages including Python from `.py` files (no config file required)
259
270
  - **Language breakdown** — Shows file count per language in codebase skill for accurate analysis
260
271
 
272
+ ## Using with create-devstack
273
+
274
+ [`@vyuhlabs/create-devstack`](https://github.com/vyuh-labs/create-devstack) scaffolds dev environments (devcontainers, `.project.yaml`) and delegates to dxkit for everything else.
275
+
276
+ When `create-devstack` writes a `.project.yaml` before calling `dxkit init`, dxkit reads it as the config source — skipping detection and prompts. This enables greenfield projects where no language files exist yet:
277
+
278
+ ```bash
279
+ # create-devstack writes .project.yaml + .devcontainer/, then calls dxkit
280
+ npm create @vyuhlabs/devstack my-project
281
+
282
+ # Or manually: write .project.yaml first, then run dxkit
283
+ npx @vyuhlabs/dxkit init --full
284
+ # → dxkit reads .project.yaml, generates Makefile, configs, CI, .claude/
285
+ ```
286
+
287
+ ### .project.yaml schema
288
+
289
+ ```yaml
290
+ project:
291
+ name: my-project
292
+ description: A web API
293
+ languages:
294
+ python:
295
+ enabled: true
296
+ version: '3.12'
297
+ quality:
298
+ coverage: 80
299
+ lint: true
300
+ go:
301
+ enabled: true
302
+ version: '1.24.0'
303
+ infrastructure:
304
+ postgres:
305
+ enabled: true
306
+ version: '16'
307
+ tools:
308
+ claude_code: true
309
+ precommit: true
310
+ docker: true
311
+ gcloud: false
312
+ ```
313
+
314
+ When `.project.yaml` is present, dxkit uses it to determine which languages, tools, and quality settings to generate. When absent, dxkit falls back to filesystem detection + interactive prompts as before.
315
+
316
+ ## Library API
317
+
318
+ dxkit exports functions for programmatic use by other packages:
319
+
320
+ ```typescript
321
+ import { detect, processTemplate, TemplateEngine } from '@vyuhlabs/dxkit';
322
+ import { hasProjectYaml, readProjectYaml } from '@vyuhlabs/dxkit';
323
+
324
+ // Detect stack from filesystem
325
+ const stack = detect('/path/to/project');
326
+
327
+ // Read .project.yaml as ResolvedConfig
328
+ if (hasProjectYaml('/path/to/project')) {
329
+ const config = readProjectYaml('/path/to/project');
330
+ }
331
+
332
+ // Process templates
333
+ const output = processTemplate('Hello {{PROJECT_NAME}}', vars, conditions);
334
+ ```
335
+
261
336
  ## CLI Reference
262
337
 
263
338
  ```bash
@@ -271,15 +346,21 @@ npx @vyuhlabs/dxkit doctor # Verify setup
271
346
 
272
347
  ### Init Options
273
348
 
274
- | Flag | Description |
275
- |---|---|
276
- | `--detect` | Auto-detect stack, minimal prompts |
277
- | `--yes` | Accept all defaults |
278
- | `--dx-only` | Just `.claude/` + `CLAUDE.md` (default) |
279
- | `--full` | Everything: DX + quality + hooks + CI |
280
- | `--force` | Overwrite existing files (except evolved) |
281
- | `--name <n>` | Override project name |
282
- | `--no-scan` | Skip codebase analysis |
349
+ | Flag | Description |
350
+ | ------------ | ----------------------------------------- |
351
+ | `--detect` | Auto-detect stack, minimal prompts |
352
+ | `--yes` | Accept all defaults |
353
+ | `--dx-only` | Just `.claude/` + `CLAUDE.md` (default) |
354
+ | `--full` | Everything: DX + quality + hooks + CI |
355
+ | `--force` | Overwrite existing files (except evolved) |
356
+ | `--name <n>` | Override project name |
357
+ | `--no-scan` | Skip codebase analysis |
358
+
359
+ ### Config Source Priority
360
+
361
+ 1. `.project.yaml` (if present) — used as-is, no prompts
362
+ 2. `--detect` — auto-detect from filesystem, minimal prompts
363
+ 3. Interactive — prompt for all settings
283
364
 
284
365
  ## Example: Node.js/TypeScript Project
285
366
 
@@ -289,6 +370,7 @@ npx @vyuhlabs/dxkit init --detect --yes
289
370
  ```
290
371
 
291
372
  Output:
373
+
292
374
  ```
293
375
  ✓ Languages: node
294
376
  ✓ Framework: loopback
@@ -297,6 +379,7 @@ Output:
297
379
  ```
298
380
 
299
381
  Then in Claude Code:
382
+
300
383
  ```
301
384
  /help # See everything
302
385
  /ask How does the auth middleware work? # Codebase Q&A
@@ -315,6 +398,7 @@ npx @vyuhlabs/dxkit init --detect --yes
315
398
  ```
316
399
 
317
400
  Generates:
401
+
318
402
  - Quality commands with `npx eslint .` + `ruff check .` + `golangci-lint run`
319
403
  - Test commands with `npm test` + `pytest` + `go test`
320
404
  - Path-scoped rules for `.ts`, `.py`, and `.go` files
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAwCA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GvD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAyCA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsIvD"}
package/dist/cli.js CHANGED
@@ -38,6 +38,7 @@ const node_util_1 = require("node:util");
38
38
  const detect_1 = require("./detect");
39
39
  const generator_1 = require("./generator");
40
40
  const prompts_1 = require("./prompts");
41
+ const project_yaml_1 = require("./project-yaml");
41
42
  const update_1 = require("./update");
42
43
  const doctor_1 = require("./doctor");
43
44
  const constants_1 = require("./constants");
@@ -102,45 +103,65 @@ async function run(argv) {
102
103
  switch (command) {
103
104
  case 'init': {
104
105
  logger.header('vyuh-dxkit init');
105
- // Detect stack
106
- logger.info('Detecting stack...');
107
- const detected = (0, detect_1.detect)(cwd);
108
- const langs = Object.entries(detected.languages).filter(([, v]) => v).map(([k]) => k);
109
- const tools = Object.entries(detected.tools).filter(([, v]) => v).map(([k]) => k);
110
- if (langs.length === 0) {
111
- logger.warn('No languages detected. Generating with minimal config.');
112
- }
113
- else {
114
- logger.success(`Languages: ${langs.join(', ')}`);
115
- }
116
- if (tools.length)
117
- logger.success(`Tools: ${tools.join(', ')}`);
118
- if (detected.framework)
119
- logger.success(`Framework: ${detected.framework}`);
120
- if (detected.testRunner)
121
- logger.success(`Tests: ${detected.testRunner.framework} (${detected.testRunner.command})`);
122
- console.log('');
123
- // Resolve config
124
- const mode = values.full ? 'full' : 'dx-only';
125
106
  let config;
126
- if (values.yes || values.detect) {
127
- const result = await (0, prompts_1.promptForConfig)(detected, {
128
- yes: true,
129
- detect: !!values.detect,
130
- name: values.name,
131
- });
132
- config = result.config;
107
+ let finalMode = values.full ? 'full' : 'dx-only';
108
+ // If .project.yaml exists (written by create-devstack), try using it as config source
109
+ if ((0, project_yaml_1.hasProjectYaml)(cwd)) {
110
+ const yamlConfig = (0, project_yaml_1.readProjectYaml)(cwd);
111
+ if (yamlConfig) {
112
+ logger.info('Found .project.yaml — using as config source.');
113
+ config = yamlConfig;
114
+ const langs = Object.entries(config.languages)
115
+ .filter(([, v]) => v)
116
+ .map(([k]) => k);
117
+ const tools = Object.entries(config.tools)
118
+ .filter(([, v]) => v)
119
+ .map(([k]) => k);
120
+ if (langs.length)
121
+ logger.success(`Languages: ${langs.join(', ')}`);
122
+ if (tools.length)
123
+ logger.success(`Tools: ${tools.join(', ')}`);
124
+ console.log('');
125
+ // .project.yaml implies full mode (create-devstack handles the wizard)
126
+ finalMode = values['dx-only'] ? 'dx-only' : 'full';
127
+ }
128
+ else {
129
+ logger.warn('Found .project.yaml but it is malformed — falling back to detection.');
130
+ }
133
131
  }
134
- else {
135
- const result = await (0, prompts_1.promptForConfig)(detected, {
136
- yes: false,
137
- detect: false,
132
+ if (!config) {
133
+ // No .project.yaml detect stack and prompt as before
134
+ logger.info('Detecting stack...');
135
+ const detected = (0, detect_1.detect)(cwd);
136
+ const langs = Object.entries(detected.languages)
137
+ .filter(([, v]) => v)
138
+ .map(([k]) => k);
139
+ const tools = Object.entries(detected.tools)
140
+ .filter(([, v]) => v)
141
+ .map(([k]) => k);
142
+ if (langs.length === 0) {
143
+ logger.warn('No languages detected. Generating with minimal config.');
144
+ }
145
+ else {
146
+ logger.success(`Languages: ${langs.join(', ')}`);
147
+ }
148
+ if (tools.length)
149
+ logger.success(`Tools: ${tools.join(', ')}`);
150
+ if (detected.framework)
151
+ logger.success(`Framework: ${detected.framework}`);
152
+ if (detected.testRunner)
153
+ logger.success(`Tests: ${detected.testRunner.framework} (${detected.testRunner.command})`);
154
+ console.log('');
155
+ // Resolve config via prompts
156
+ const promptOpts = {
157
+ yes: !!(values.yes || values.detect),
158
+ detect: !!values.detect,
138
159
  name: values.name,
139
- });
160
+ };
161
+ const result = await (0, prompts_1.promptForConfig)(detected, promptOpts);
140
162
  config = result.config;
163
+ finalMode = values.full ? 'full' : values['dx-only'] ? 'dx-only' : result.mode;
141
164
  }
142
- // Generate
143
- const finalMode = values.full ? 'full' : (values['dx-only'] ? 'dx-only' : mode);
144
165
  const result = await (0, generator_1.generate)(cwd, config, finalMode, !!values.force, !!values['no-scan']);
145
166
  // Summary
146
167
  console.log('');
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codebase-scanner.d.ts","sourceRoot":"","sources":["../src/codebase-scanner.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAiWD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAmC1D;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAoFtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CA8CxE"}
1
+ {"version":3,"file":"codebase-scanner.d.ts","sourceRoot":"","sources":["../src/codebase-scanner.ts"],"names":[],"mappings":"AAoDA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AA6eD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAmD1D;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAgGtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAmDxE"}