@mgwilt/nx-uv 0.1.3-beta.1 → 0.2.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.
Files changed (46) hide show
  1. package/README.md +50 -10
  2. package/executors.json +5 -0
  3. package/package.json +12 -3
  4. package/src/bin/nx-uv.d.ts +2 -0
  5. package/src/bin/nx-uv.js +65 -0
  6. package/src/bin/nx-uv.js.map +1 -0
  7. package/src/executors/studio/schema.d.ts +15 -0
  8. package/src/executors/studio/schema.json +33 -0
  9. package/src/executors/studio/studio.d.ts +4 -0
  10. package/src/executors/studio/studio.js +14 -0
  11. package/src/executors/studio/studio.js.map +1 -0
  12. package/src/generators/integration/integration.js +2 -2
  13. package/src/index.d.ts +4 -0
  14. package/src/index.js +5 -1
  15. package/src/index.js.map +1 -1
  16. package/src/plugins/create-nodes.js +6 -0
  17. package/src/plugins/create-nodes.js.map +1 -1
  18. package/src/tools/nx-bootstrap.d.ts +46 -0
  19. package/src/tools/nx-bootstrap.js +102 -0
  20. package/src/tools/nx-bootstrap.js.map +1 -0
  21. package/src/tui/app.d.ts +5 -0
  22. package/src/tui/app.js +517 -0
  23. package/src/tui/app.js.map +1 -0
  24. package/src/tui/app.tsx +851 -0
  25. package/src/tui/components/action-form.d.ts +19 -0
  26. package/src/tui/components/action-form.js +173 -0
  27. package/src/tui/components/action-form.js.map +1 -0
  28. package/src/tui/components/action-form.tsx +276 -0
  29. package/src/tui/index.d.ts +5 -0
  30. package/src/tui/index.js +22 -0
  31. package/src/tui/index.js.map +1 -0
  32. package/src/tui/services/action-planner.d.ts +12 -0
  33. package/src/tui/services/action-planner.js +246 -0
  34. package/src/tui/services/action-planner.js.map +1 -0
  35. package/src/tui/services/command.d.ts +9 -0
  36. package/src/tui/services/command.js +85 -0
  37. package/src/tui/services/command.js.map +1 -0
  38. package/src/tui/services/preview.d.ts +3 -0
  39. package/src/tui/services/preview.js +76 -0
  40. package/src/tui/services/preview.js.map +1 -0
  41. package/src/tui/services/workspace-scanner.d.ts +2 -0
  42. package/src/tui/services/workspace-scanner.js +153 -0
  43. package/src/tui/services/workspace-scanner.js.map +1 -0
  44. package/src/tui/types.d.ts +81 -0
  45. package/src/tui/types.js +3 -0
  46. package/src/tui/types.js.map +1 -0
package/README.md CHANGED
@@ -6,6 +6,12 @@
6
6
  [![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/mgwilt/nx-uv/badges/.github/badges/coverage.json)](https://github.com/mgwilt/nx-uv/blob/badges/.github/badges/coverage.json)
7
7
  [![npm beta](https://img.shields.io/npm/v/%40mgwilt%2Fnx-uv/beta?label=npm%20beta&cacheSeconds=300)](https://www.npmjs.com/package/@mgwilt/nx-uv?activeTab=versions)
8
8
 
9
+ ## Why this plugin exists
10
+
11
+ Nx provides a consistent task graph, caching, and affected-based CI so large repos run faster and more predictably. A common operational gap is that Python workflows powered by [uv](https://docs.astral.sh/uv/) often stay in separate shell scripts and one-off CI jobs, so they miss the same build/test orchestration used by the rest of the monorepo.
12
+
13
+ `@mgwilt/nx-uv` bridges that gap by turning common `uv` workflows into Nx-native targets and adding inference/generators so teams can standardize command execution, reduce bespoke pipeline logic, and manage Python alongside other stacks in a single CI model instead of maintaining a parallel toolchain path.
14
+
9
15
  ## When to use this plugin
10
16
 
11
17
  - Run [uv](https://docs.astral.sh/uv/) commands through [Nx](https://nx.dev/) targets instead of ad-hoc shell scripts.
@@ -24,6 +30,7 @@
24
30
  - `@mgwilt/nx-uv:auth`
25
31
  - `@mgwilt/nx-uv:cache`
26
32
  - `@mgwilt/nx-uv:self`
33
+ - `@mgwilt/nx-uv:studio`
27
34
  - Generators:
28
35
  - `@mgwilt/nx-uv:workspace`
29
36
  - `@mgwilt/nx-uv:project`
@@ -44,6 +51,38 @@ Install the plugin:
44
51
  pnpm add -D @mgwilt/nx-uv
45
52
  ```
46
53
 
54
+ ## Interactive studio (TUI)
55
+
56
+ Launch the interactive monorepo manager directly with `pnpm dlx` (recommended):
57
+
58
+ ```bash
59
+ pnpm dlx -p @mgwilt/nx-uv nx-uv tui
60
+ ```
61
+
62
+ Shorthand (when supported by your pnpm version/environment):
63
+
64
+ ```bash
65
+ pnpm dlx @mgwilt/nx-uv tui
66
+ ```
67
+
68
+ The studio provides:
69
+
70
+ - Workspace setup and inference configuration
71
+ - Python app/lib/script generation
72
+ - Integration template scaffolding
73
+ - Convert existing projects to nx-uv defaults
74
+ - Nx target execution across all projects
75
+ - Ad-hoc `uv` command execution
76
+ - Preview-before-apply flow for mutating actions
77
+
78
+ Optional flags:
79
+
80
+ - `--cwd=<path>` scan and manage a workspace from a specific directory
81
+ - `--readonly` disable mutation/apply operations
82
+ - `--initial-view=<dashboard|workspace|project|integration|convert|inference|tasks|uv>`
83
+
84
+ If plugin inference is configured with `includeGlobalTargets: true` and a root uv workspace exists, the root inferred project also gets a `<targetPrefix>tui` target (for example `uv:tui`).
85
+
47
86
  ## Brand new monorepo example
48
87
 
49
88
  This walkthrough creates a new [Nx](https://nx.dev/) monorepo and uses this plugin to scaffold a working [uv](https://docs.astral.sh/uv/) + [Python](https://www.python.org/) example.
@@ -118,7 +157,7 @@ At this point you have a working monorepo with:
118
157
 
119
158
  - Root `pyproject.toml` and [uv](https://docs.astral.sh/uv/) workspace members
120
159
  - A generated `api` [Python](https://www.python.org/) project under `packages/py/api`
121
- - Generated [FastAPI](https://fastapi.tiangolo.com/) starter files and a [GitHub Actions](https://github.com/features/actions) Nx-first CI template
160
+ - Generated [FastAPI](https://fastapi.tiangolo.com/) starter files and a [GitHub Actions](https://github.com/features/actions) Nx-first CI template (`test`, `lint`, `typecheck`, `build`)
122
161
  - [Nx](https://nx.dev/) targets that run uv commands consistently in CI/local dev
123
162
 
124
163
  ## Quick start (existing workspace)
@@ -267,27 +306,26 @@ pnpm nx g @mgwilt/nx-uv:integration --template=pytorch --project=api
267
306
  If `quality:ci` fails before running tasks with worker/bootstrap errors (for example `Failed to load ... Nx plugin(s)`), run:
268
307
 
269
308
  ```bash
270
- pnpm nx report
309
+ pnpm quality:bootstrap
271
310
  pnpm nx reset
272
- NX_DAEMON=false pnpm quality:ci
311
+ pnpm quality:ci
273
312
  ```
274
313
 
275
314
  If bootstrap still fails, run direct checks to isolate whether the issue is Nx plugin startup or project logic:
276
315
 
277
316
  ```bash
278
- pnpm exec eslint .
279
- pnpm exec tsc -p tsconfig.lib.json --noEmit
280
- pnpm exec tsc -p tsconfig.spec.json --noEmit
281
- pnpm exec vitest run -c vitest.unit.config.mts
282
- pnpm exec vitest run -c vitest.integration.config.mts
283
- pnpm exec vitest run -c vitest.e2e.config.mts
284
- pnpm exec vitest run -c vitest.coverage.config.mts
317
+ pnpm quality:fallback
318
+ pnpm --version
319
+ pnpm nx --version
320
+ node -v
285
321
  ```
286
322
 
287
323
  ### E2E execution permissions
288
324
 
289
325
  The e2e suite executes a temporary shim binary from the local filesystem. In restricted environments (for example `noexec` mounts or sandboxed process policies), e2e tests may be skipped when executable spawning is not permitted.
290
326
 
327
+ In CI, an all-skipped e2e run is treated as a failure by default. Set `NX_UV_ALLOW_E2E_ALL_SKIPPED=1` only in known restricted CI environments where executable shim spawning is intentionally blocked.
328
+
291
329
  ## LLM context files
292
330
 
293
331
  This repository publishes LLM-friendly docs artifacts:
@@ -306,4 +344,6 @@ pnpm llms:check
306
344
 
307
345
  - [Documentation index](docs/index.md)
308
346
  - [Maintainer guide (quality gates, CI, release)](docs/maintainers.md)
347
+ - [Maintainer toolchain matrix](docs/toolchain-matrix.md)
348
+ - [Runbook: gate failed before tasks started](docs/runbooks/gate-bootstrap-failure.md)
309
349
  - [Sample scaffolding patterns](samples/README.md)
package/executors.json CHANGED
@@ -39,6 +39,11 @@
39
39
  "implementation": "./src/executors/self/self",
40
40
  "schema": "./src/executors/self/schema.json",
41
41
  "description": "Run uv self subcommands."
42
+ },
43
+ "studio": {
44
+ "implementation": "./src/executors/studio/studio",
45
+ "schema": "./src/executors/studio/schema.json",
46
+ "description": "Launch the interactive nx-uv terminal manager."
42
47
  }
43
48
  }
44
49
  }
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@mgwilt/nx-uv",
3
- "version": "0.1.3-beta.1",
3
+ "version": "0.2.0",
4
4
  "description": "Nx plugin for uv workflows in Nx monorepos",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
7
7
  "main": "./src/index.js",
8
8
  "types": "./src/index.d.ts",
9
+ "bin": {
10
+ "nx-uv": "./src/bin/nx-uv.js"
11
+ },
9
12
  "private": false,
10
13
  "repository": {
11
14
  "type": "git",
@@ -21,7 +24,9 @@
21
24
  "@iarna/toml": "^2.2.5",
22
25
  "@nx/devkit": "22.5.3",
23
26
  "@nx/vite": "22.5.3",
27
+ "ink": "^3.2.0",
24
28
  "minimatch": "^10.2.4",
29
+ "react": "^17.0.2",
25
30
  "tslib": "^2.3.0",
26
31
  "vitest": "^4.0.18"
27
32
  },
@@ -39,6 +44,7 @@
39
44
  "@swc-node/register": "^1.11.1",
40
45
  "@swc/core": "^1.15.18",
41
46
  "@types/node": "^20.19.9",
47
+ "@types/react": "^17.0.89",
42
48
  "@vitest/coverage-v8": "^4.0.8",
43
49
  "eslint": "^9.39.0",
44
50
  "eslint-config-prettier": "^10.1.8",
@@ -64,8 +70,11 @@
64
70
  "test:integration": "nx run nx-uv:test-integration",
65
71
  "test:e2e": "nx run nx-uv:test-e2e",
66
72
  "test:coverage": "nx run nx-uv:test-coverage",
67
- "quality:local": "nx run nx-uv:quality-local",
68
- "quality:ci": "nx run nx-uv:quality-ci",
73
+ "tui:local": "pnpm nx run nx-uv:build && node dist/src/bin/nx-uv.js tui",
74
+ "quality:bootstrap": "node tools/check-nx-bootstrap.cjs",
75
+ "quality:fallback": "pnpm exec eslint . && pnpm exec tsc -p tsconfig.lib.json --noEmit && pnpm exec tsc -p tsconfig.spec.json --noEmit && pnpm exec vitest run -c vitest.unit.config.mts && pnpm exec vitest run -c vitest.integration.config.mts && pnpm exec vitest run -c vitest.e2e.config.mts && pnpm exec vitest run -c vitest.coverage.config.mts",
76
+ "quality:local": "pnpm quality:bootstrap && nx run nx-uv:quality-local",
77
+ "quality:ci": "pnpm quality:bootstrap && nx run nx-uv:quality-ci",
69
78
  "samples:generate": "node tools/generate-samples.cjs",
70
79
  "llms:generate": "node tools/generate-llms.cjs",
71
80
  "llms:check": "node tools/check-llms.cjs",
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tui_1 = require("../tui");
5
+ async function main(argv = process.argv.slice(2)) {
6
+ const [command, ...args] = argv;
7
+ if (command !== "tui") {
8
+ writeUsage();
9
+ return command ? 1 : 0;
10
+ }
11
+ const options = parseTuiOptions(args);
12
+ const result = await (0, tui_1.runNxUvTui)(options);
13
+ return result.success ? 0 : 1;
14
+ }
15
+ function parseTuiOptions(argv) {
16
+ const options = {};
17
+ for (let index = 0; index < argv.length; index += 1) {
18
+ const arg = argv[index];
19
+ if (arg === "--readonly") {
20
+ options.readonly = true;
21
+ continue;
22
+ }
23
+ if (arg === "--cwd") {
24
+ options.cwd = argv[index + 1];
25
+ index += 1;
26
+ continue;
27
+ }
28
+ if (arg.startsWith("--cwd=")) {
29
+ options.cwd = arg.slice("--cwd=".length);
30
+ continue;
31
+ }
32
+ if (arg === "--initial-view") {
33
+ options.initialView = argv[index + 1];
34
+ index += 1;
35
+ continue;
36
+ }
37
+ if (arg.startsWith("--initial-view=")) {
38
+ options.initialView = arg.slice("--initial-view=".length);
39
+ continue;
40
+ }
41
+ }
42
+ return options;
43
+ }
44
+ function writeUsage() {
45
+ process.stdout.write([
46
+ "nx-uv studio",
47
+ "",
48
+ "Usage:",
49
+ " nx-uv tui [--cwd <path>] [--readonly] [--initial-view <view>]",
50
+ "",
51
+ "Examples:",
52
+ " pnpm dlx -p @mgwilt/nx-uv nx-uv tui",
53
+ " pnpm dlx @mgwilt/nx-uv tui",
54
+ "",
55
+ ].join("\n"));
56
+ }
57
+ main()
58
+ .then((code) => {
59
+ process.exitCode = code;
60
+ })
61
+ .catch((error) => {
62
+ process.stderr.write(`${error instanceof Error ? error.stack : String(error)}\n`);
63
+ process.exitCode = 1;
64
+ });
65
+ //# sourceMappingURL=nx-uv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-uv.js","sourceRoot":"","sources":["../../../src/bin/nx-uv.ts"],"names":[],"mappings":";;;AAEA,gCAAsD;AAEtD,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEhC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAU,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAoC,CAAC;YACzE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAC7B,iBAAiB,CAAC,MAAM,CACU,CAAC;YACrC,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,cAAc;QACd,EAAE;QACF,QAAQ;QACR,iEAAiE;QACjE,EAAE;QACF,WAAW;QACX,uCAAuC;QACvC,8BAA8B;QAC9B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC5D,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type StudioInitialView =
2
+ | "dashboard"
3
+ | "workspace"
4
+ | "project"
5
+ | "integration"
6
+ | "convert"
7
+ | "inference"
8
+ | "tasks"
9
+ | "uv";
10
+
11
+ export interface StudioExecutorSchema {
12
+ cwd?: string;
13
+ readonly?: boolean;
14
+ initialView?: StudioInitialView;
15
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "version": 2,
4
+ "title": "nx-uv studio executor",
5
+ "description": "Launch the interactive nx-uv terminal manager.",
6
+ "type": "object",
7
+ "properties": {
8
+ "cwd": {
9
+ "type": "string",
10
+ "description": "Directory used to discover the target Nx workspace."
11
+ },
12
+ "readonly": {
13
+ "type": "boolean",
14
+ "default": false,
15
+ "description": "Disable mutating actions and run preview-only mode."
16
+ },
17
+ "initialView": {
18
+ "type": "string",
19
+ "enum": [
20
+ "dashboard",
21
+ "workspace",
22
+ "project",
23
+ "integration",
24
+ "convert",
25
+ "inference",
26
+ "tasks",
27
+ "uv"
28
+ ],
29
+ "default": "dashboard"
30
+ }
31
+ },
32
+ "additionalProperties": false
33
+ }
@@ -0,0 +1,4 @@
1
+ import { PromiseExecutor } from "@nx/devkit";
2
+ import { StudioExecutorSchema } from "./schema";
3
+ declare const studioExecutor: PromiseExecutor<StudioExecutorSchema>;
4
+ export default studioExecutor;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tui_1 = require("../../tui");
4
+ const studioExecutor = async (options, context) => {
5
+ var _a, _b, _c;
6
+ const result = await (0, tui_1.runNxUvTui)({
7
+ cwd: (_a = options.cwd) !== null && _a !== void 0 ? _a : context.root,
8
+ readonly: (_b = options.readonly) !== null && _b !== void 0 ? _b : false,
9
+ initialView: (_c = options.initialView) !== null && _c !== void 0 ? _c : "dashboard",
10
+ });
11
+ return { success: result.success };
12
+ };
13
+ exports.default = studioExecutor;
14
+ //# sourceMappingURL=studio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../../../src/executors/studio/studio.ts"],"names":[],"mappings":";;AACA,mCAAuC;AAGvC,MAAM,cAAc,GAA0C,KAAK,EACjE,OAAO,EACP,OAAO,EACP,EAAE;;IACF,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAU,EAAC;QAC9B,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,IAAI;QAChC,QAAQ,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,KAAK;QACnC,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,WAAW;KAChD,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
@@ -65,7 +65,7 @@ jobs:
65
65
  - name: Run affected quality targets
66
66
  run: >-
67
67
  pnpm nx affected
68
- -t test,lint,build
68
+ -t test,lint,typecheck,build
69
69
  --base="$NX_BASE"
70
70
  --head="$NX_HEAD"
71
71
  --outputStyle=static
@@ -91,7 +91,7 @@ quality:nx:
91
91
  - corepack prepare pnpm@10 --activate
92
92
  - pnpm install --frozen-lockfile
93
93
  script:
94
- - pnpm nx run-many -t test,lint,build --all --outputStyle=static
94
+ - pnpm nx run-many -t test,lint,typecheck,build --all --outputStyle=static
95
95
  `,
96
96
  },
97
97
  ];
package/src/index.d.ts CHANGED
@@ -17,6 +17,8 @@ export { default as cacheExecutor } from "./executors/cache/cache";
17
17
  export type { CacheExecutorSchema, UvCacheCommand, } from "./executors/cache/schema";
18
18
  export { default as selfExecutor } from "./executors/self/self";
19
19
  export type { SelfExecutorSchema, UvSelfCommand, } from "./executors/self/schema";
20
+ export { default as studioExecutor } from "./executors/studio/studio";
21
+ export type { StudioExecutorSchema, StudioInitialView, } from "./executors/studio/schema";
20
22
  export { default as workspaceGenerator } from "./generators/workspace/workspace";
21
23
  export type { WorkspaceGeneratorSchema } from "./generators/workspace/schema";
22
24
  export { default as projectGenerator } from "./generators/project/project";
@@ -25,3 +27,5 @@ export { default as convertGenerator } from "./generators/convert/convert";
25
27
  export type { ConvertGeneratorSchema } from "./generators/convert/schema";
26
28
  export { default as integrationGenerator } from "./generators/integration/integration";
27
29
  export type { IntegrationGeneratorSchema, IntegrationTemplate, } from "./generators/integration/schema";
30
+ export { runNxUvTui } from "./tui";
31
+ export type { TuiLaunchOptions, TuiView } from "./tui";
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.integrationGenerator = exports.convertGenerator = exports.projectGenerator = exports.workspaceGenerator = exports.selfExecutor = exports.cacheExecutor = exports.authExecutor = exports.pythonExecutor = exports.toolExecutor = exports.pipExecutor = exports.projectExecutor = exports.uvExecutor = exports.createNodesV2 = exports.name = void 0;
3
+ exports.runNxUvTui = exports.integrationGenerator = exports.convertGenerator = exports.projectGenerator = exports.workspaceGenerator = exports.studioExecutor = exports.selfExecutor = exports.cacheExecutor = exports.authExecutor = exports.pythonExecutor = exports.toolExecutor = exports.pipExecutor = exports.projectExecutor = exports.uvExecutor = exports.createNodesV2 = exports.name = void 0;
4
4
  exports.name = "@mgwilt/nx-uv";
5
5
  var create_nodes_1 = require("./plugins/create-nodes");
6
6
  Object.defineProperty(exports, "createNodesV2", { enumerable: true, get: function () { return create_nodes_1.createNodesV2; } });
@@ -20,6 +20,8 @@ var cache_1 = require("./executors/cache/cache");
20
20
  Object.defineProperty(exports, "cacheExecutor", { enumerable: true, get: function () { return cache_1.default; } });
21
21
  var self_1 = require("./executors/self/self");
22
22
  Object.defineProperty(exports, "selfExecutor", { enumerable: true, get: function () { return self_1.default; } });
23
+ var studio_1 = require("./executors/studio/studio");
24
+ Object.defineProperty(exports, "studioExecutor", { enumerable: true, get: function () { return studio_1.default; } });
23
25
  var workspace_1 = require("./generators/workspace/workspace");
24
26
  Object.defineProperty(exports, "workspaceGenerator", { enumerable: true, get: function () { return workspace_1.default; } });
25
27
  var project_2 = require("./generators/project/project");
@@ -28,4 +30,6 @@ var convert_1 = require("./generators/convert/convert");
28
30
  Object.defineProperty(exports, "convertGenerator", { enumerable: true, get: function () { return convert_1.default; } });
29
31
  var integration_1 = require("./generators/integration/integration");
30
32
  Object.defineProperty(exports, "integrationGenerator", { enumerable: true, get: function () { return integration_1.default; } });
33
+ var tui_1 = require("./tui");
34
+ Object.defineProperty(exports, "runNxUvTui", { enumerable: true, get: function () { return tui_1.runNxUvTui; } });
31
35
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,eAAe,CAAC;AAEpC,uDAAuD;AAA9C,6GAAA,aAAa,OAAA;AAGtB,wCAA0D;AAAjD,gGAAA,OAAO,OAAc;AAG9B,uDAAyE;AAAhE,0GAAA,OAAO,OAAmB;AAMnC,2CAA6D;AAApD,kGAAA,OAAO,OAAe;AAG/B,8CAAgE;AAAvD,oGAAA,OAAO,OAAgB;AAMhC,oDAAsE;AAA7D,wGAAA,OAAO,OAAkB;AAMlC,8CAAgE;AAAvD,oGAAA,OAAO,OAAgB;AAMhC,iDAAmE;AAA1D,sGAAA,OAAO,OAAiB;AAMjC,8CAAgE;AAAvD,oGAAA,OAAO,OAAgB;AAMhC,8DAAiF;AAAxE,+GAAA,OAAO,OAAsB;AAGtC,wDAA2E;AAAlE,2GAAA,OAAO,OAAoB;AAGpC,wDAA2E;AAAlE,2GAAA,OAAO,OAAoB;AAGpC,oEAAuF;AAA9E,mHAAA,OAAO,OAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,eAAe,CAAC;AAEpC,uDAAuD;AAA9C,6GAAA,aAAa,OAAA;AAGtB,wCAA0D;AAAjD,gGAAA,OAAO,OAAc;AAG9B,uDAAyE;AAAhE,0GAAA,OAAO,OAAmB;AAMnC,2CAA6D;AAApD,kGAAA,OAAO,OAAe;AAG/B,8CAAgE;AAAvD,oGAAA,OAAO,OAAgB;AAMhC,oDAAsE;AAA7D,wGAAA,OAAO,OAAkB;AAMlC,8CAAgE;AAAvD,oGAAA,OAAO,OAAgB;AAMhC,iDAAmE;AAA1D,sGAAA,OAAO,OAAiB;AAMjC,8CAAgE;AAAvD,oGAAA,OAAO,OAAgB;AAMhC,oDAAsE;AAA7D,wGAAA,OAAO,OAAkB;AAMlC,8DAAiF;AAAxE,+GAAA,OAAO,OAAsB;AAGtC,wDAA2E;AAAlE,2GAAA,OAAO,OAAoB;AAGpC,wDAA2E;AAAlE,2GAAA,OAAO,OAAoB;AAGpC,oEAAuF;AAA9E,mHAAA,OAAO,OAAwB;AAMxC,6BAAmC;AAA1B,iGAAA,UAAU,OAAA"}
@@ -106,6 +106,12 @@ function buildTargets(projectRoot, pyproject, parsedPyproject, options) {
106
106
  cwd: projectRoot,
107
107
  },
108
108
  };
109
+ baseTargets[`${targetPrefix}tui`] = {
110
+ executor: "@mgwilt/nx-uv:studio",
111
+ options: {
112
+ cwd: projectRoot,
113
+ },
114
+ };
109
115
  }
110
116
  return baseTargets;
111
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-nodes.js","sourceRoot":"","sources":["../../../src/plugins/create-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-nodes.js","sourceRoot":"","sources":["../../../src/plugins/create-nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export interface NxBootstrapStep {
2
+ label: string;
3
+ args: string[];
4
+ }
5
+ export interface NxBootstrapCommandResult {
6
+ status: number;
7
+ stdout: string;
8
+ stderr: string;
9
+ error: string | null;
10
+ }
11
+ export interface NxBootstrapCheckResult {
12
+ ok: boolean;
13
+ bootstrapFailure: boolean;
14
+ command: string | null;
15
+ }
16
+ type SpawnRunner = (command: string, args: string[], options: {
17
+ encoding: "utf-8";
18
+ env: NodeJS.ProcessEnv;
19
+ }) => {
20
+ status: number | null;
21
+ stdout?: string;
22
+ stderr?: string;
23
+ error?: {
24
+ message?: string;
25
+ };
26
+ };
27
+ export declare const DEFAULT_STEPS: NxBootstrapStep[];
28
+ export declare const BOOTSTRAP_PATTERNS: RegExp[];
29
+ export declare function isNxBootstrapFailure(output: string): boolean;
30
+ export declare function formatInvocation(args: string[]): string;
31
+ export declare function runPnpmCommand(args: string[], runner?: SpawnRunner, env?: NodeJS.ProcessEnv): NxBootstrapCommandResult;
32
+ export declare function runNxBootstrapCheck(options?: {
33
+ runner?: SpawnRunner;
34
+ writeStdout?: (text: string) => void;
35
+ writeStderr?: (text: string) => void;
36
+ env?: NodeJS.ProcessEnv;
37
+ steps?: NxBootstrapStep[];
38
+ }): NxBootstrapCheckResult;
39
+ export declare function runNxBootstrapCheckCli(args: string[], checkRunner?: (options?: {
40
+ runner?: SpawnRunner;
41
+ writeStdout?: (text: string) => void;
42
+ writeStderr?: (text: string) => void;
43
+ env?: NodeJS.ProcessEnv;
44
+ steps?: NxBootstrapStep[];
45
+ }) => NxBootstrapCheckResult): NxBootstrapCheckResult;
46
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BOOTSTRAP_PATTERNS = exports.DEFAULT_STEPS = void 0;
4
+ exports.isNxBootstrapFailure = isNxBootstrapFailure;
5
+ exports.formatInvocation = formatInvocation;
6
+ exports.runPnpmCommand = runPnpmCommand;
7
+ exports.runNxBootstrapCheck = runNxBootstrapCheck;
8
+ exports.runNxBootstrapCheckCli = runNxBootstrapCheckCli;
9
+ const node_child_process_1 = require("node:child_process");
10
+ exports.DEFAULT_STEPS = [
11
+ {
12
+ label: "nx report",
13
+ args: ["nx", "report"],
14
+ },
15
+ {
16
+ label: "nx show projects",
17
+ args: ["nx", "show", "projects", "--json"],
18
+ },
19
+ ];
20
+ exports.BOOTSTRAP_PATTERNS = [
21
+ /Failed to load \d+ default Nx plugin\(s\)/i,
22
+ /Failed to start plugin worker/i,
23
+ /Unable to complete project graph creation/i,
24
+ /plugin worker/i,
25
+ ];
26
+ function isNxBootstrapFailure(output) {
27
+ return exports.BOOTSTRAP_PATTERNS.some((pattern) => pattern.test(output));
28
+ }
29
+ function formatInvocation(args) {
30
+ return `pnpm ${args.join(" ")}`;
31
+ }
32
+ function runPnpmCommand(args, runner = node_child_process_1.spawnSync, env = process.env) {
33
+ var _a, _b, _c;
34
+ const result = runner("pnpm", args, {
35
+ encoding: "utf-8",
36
+ env: {
37
+ ...env,
38
+ NX_DAEMON: "false",
39
+ },
40
+ });
41
+ return {
42
+ status: (_a = result.status) !== null && _a !== void 0 ? _a : 1,
43
+ stdout: (_b = result.stdout) !== null && _b !== void 0 ? _b : "",
44
+ stderr: (_c = result.stderr) !== null && _c !== void 0 ? _c : "",
45
+ error: result.error && typeof result.error.message === "string"
46
+ ? result.error.message
47
+ : null,
48
+ };
49
+ }
50
+ function runNxBootstrapCheck(options) {
51
+ var _a, _b, _c, _d, _e;
52
+ const runner = (_a = options === null || options === void 0 ? void 0 : options.runner) !== null && _a !== void 0 ? _a : node_child_process_1.spawnSync;
53
+ const writeStdout = (_b = options === null || options === void 0 ? void 0 : options.writeStdout) !== null && _b !== void 0 ? _b : ((text) => process.stdout.write(text));
54
+ const writeStderr = (_c = options === null || options === void 0 ? void 0 : options.writeStderr) !== null && _c !== void 0 ? _c : ((text) => process.stderr.write(text));
55
+ const env = (_d = options === null || options === void 0 ? void 0 : options.env) !== null && _d !== void 0 ? _d : process.env;
56
+ const steps = (_e = options === null || options === void 0 ? void 0 : options.steps) !== null && _e !== void 0 ? _e : exports.DEFAULT_STEPS;
57
+ for (const step of steps) {
58
+ const result = runPnpmCommand(step.args, runner, env);
59
+ const output = `${result.stdout}${result.stderr}${result.error ? `\n${result.error}` : ""}`;
60
+ if (result.status === 0) {
61
+ continue;
62
+ }
63
+ const invocation = formatInvocation(step.args);
64
+ if (isNxBootstrapFailure(output)) {
65
+ writeStderr([
66
+ `Nx bootstrap health check failed while running \`${invocation}\`.`,
67
+ "",
68
+ "Detected plugin bootstrap failure signatures.",
69
+ "Run `pnpm quality:fallback` to validate plugin logic without Nx graph/bootstrap dependencies.",
70
+ "Then capture diagnostics with `pnpm --version`, `pnpm nx --version`, and `node -v`.",
71
+ "",
72
+ output.trim(),
73
+ "",
74
+ ].join("\n"));
75
+ return { ok: false, bootstrapFailure: true, command: invocation };
76
+ }
77
+ writeStderr([
78
+ `Nx bootstrap health check failed while running \`${invocation}\`.`,
79
+ "",
80
+ output.trim(),
81
+ "",
82
+ ].join("\n"));
83
+ return { ok: false, bootstrapFailure: false, command: invocation };
84
+ }
85
+ writeStdout("Nx bootstrap health check passed (pnpm nx report, pnpm nx show projects --json).\n");
86
+ return { ok: true, bootstrapFailure: false, command: null };
87
+ }
88
+ function runNxBootstrapCheckCli(args, checkRunner = runNxBootstrapCheck) {
89
+ if (args.length > 0) {
90
+ throw new Error(`Unknown argument: ${args[0]}`);
91
+ }
92
+ return checkRunner();
93
+ }
94
+ /* c8 ignore start */
95
+ if (require.main === module) {
96
+ const result = runNxBootstrapCheckCli(process.argv.slice(2));
97
+ if (!result.ok) {
98
+ process.exitCode = 1;
99
+ }
100
+ }
101
+ /* c8 ignore stop */
102
+ //# sourceMappingURL=nx-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-bootstrap.js","sourceRoot":"","sources":["../../../src/tools/nx-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TuiLaunchOptions } from "./types";
2
+ export declare function NxUvApp(props: {
3
+ options: TuiLaunchOptions;
4
+ onComplete: (success: boolean) => void;
5
+ }): import("react/jsx-runtime").JSX.Element;