@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.
- package/README.md +50 -10
- package/executors.json +5 -0
- package/package.json +12 -3
- package/src/bin/nx-uv.d.ts +2 -0
- package/src/bin/nx-uv.js +65 -0
- package/src/bin/nx-uv.js.map +1 -0
- package/src/executors/studio/schema.d.ts +15 -0
- package/src/executors/studio/schema.json +33 -0
- package/src/executors/studio/studio.d.ts +4 -0
- package/src/executors/studio/studio.js +14 -0
- package/src/executors/studio/studio.js.map +1 -0
- package/src/generators/integration/integration.js +2 -2
- package/src/index.d.ts +4 -0
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/plugins/create-nodes.js +6 -0
- package/src/plugins/create-nodes.js.map +1 -1
- package/src/tools/nx-bootstrap.d.ts +46 -0
- package/src/tools/nx-bootstrap.js +102 -0
- package/src/tools/nx-bootstrap.js.map +1 -0
- package/src/tui/app.d.ts +5 -0
- package/src/tui/app.js +517 -0
- package/src/tui/app.js.map +1 -0
- package/src/tui/app.tsx +851 -0
- package/src/tui/components/action-form.d.ts +19 -0
- package/src/tui/components/action-form.js +173 -0
- package/src/tui/components/action-form.js.map +1 -0
- package/src/tui/components/action-form.tsx +276 -0
- package/src/tui/index.d.ts +5 -0
- package/src/tui/index.js +22 -0
- package/src/tui/index.js.map +1 -0
- package/src/tui/services/action-planner.d.ts +12 -0
- package/src/tui/services/action-planner.js +246 -0
- package/src/tui/services/action-planner.js.map +1 -0
- package/src/tui/services/command.d.ts +9 -0
- package/src/tui/services/command.js +85 -0
- package/src/tui/services/command.js.map +1 -0
- package/src/tui/services/preview.d.ts +3 -0
- package/src/tui/services/preview.js +76 -0
- package/src/tui/services/preview.js.map +1 -0
- package/src/tui/services/workspace-scanner.d.ts +2 -0
- package/src/tui/services/workspace-scanner.js +153 -0
- package/src/tui/services/workspace-scanner.js.map +1 -0
- package/src/tui/types.d.ts +81 -0
- package/src/tui/types.js +3 -0
- package/src/tui/types.js.map +1 -0
package/README.md
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
[](https://github.com/mgwilt/nx-uv/blob/badges/.github/badges/coverage.json)
|
|
7
7
|
[](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
|
|
309
|
+
pnpm quality:bootstrap
|
|
271
310
|
pnpm nx reset
|
|
272
|
-
|
|
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
|
|
279
|
-
pnpm
|
|
280
|
-
pnpm
|
|
281
|
-
|
|
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.
|
|
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
|
-
"
|
|
68
|
-
"quality:
|
|
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",
|
package/src/bin/nx-uv.js
ADDED
|
@@ -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,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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"}
|