@angular/cli 22.1.0-next.3 → 22.1.0-rc.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/lib/config/workspace-schema.d.ts +1 -1
- package/package.json +14 -15
- package/src/commands/mcp/tools/devserver/devserver-start.js +8 -8
- package/src/commands/mcp/tools/devserver/devserver-stop.js +2 -2
- package/src/commands/mcp/tools/devserver/devserver-wait-for-build.js +5 -5
- package/src/commands/mcp/tools/doc-search.js +51 -46
- package/src/commands/mcp/tools/doc-search.js.map +1 -1
- package/src/commands/mcp/tools/run-target/generic-target-strategy.js +1 -1
- package/src/commands/mcp/tools/run-target/run-target.js +1 -1
- package/src/commands/update/cli.js +23 -0
- package/src/commands/update/cli.js.map +1 -1
- package/src/commands/update/update-resolver.d.ts +2 -1
- package/src/commands/update/update-resolver.js +136 -28
- package/src/commands/update/update-resolver.js.map +1 -1
- package/src/package-managers/package-manager-descriptor.d.ts +1 -0
- package/src/package-managers/package-manager-descriptor.js +1 -0
- package/src/package-managers/package-manager-descriptor.js.map +1 -1
- package/src/package-managers/package-manager.js +56 -4
- package/src/package-managers/package-manager.js.map +1 -1
- package/src/package-managers/parsers.d.ts +0 -20
- package/src/package-managers/parsers.js +46 -31
- package/src/package-managers/parsers.js.map +1 -1
- package/src/utilities/prettier.d.ts +6 -0
- package/src/utilities/prettier.js +63 -4
- package/src/utilities/prettier.js.map +1 -1
- package/src/utilities/version.js +1 -1
- package/src/commands/mcp/ARCHITECTURE.md +0 -117
- package/src/commands/mcp/DESIGN.md +0 -266
- package/src/commands/mcp/LLM_ERGONOMICS.md +0 -258
|
@@ -57,26 +57,6 @@ function* parseJsonLines(output, logger) {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Parses the output of `npm list` or a compatible command.
|
|
62
|
-
*
|
|
63
|
-
* The expected JSON structure is:
|
|
64
|
-
* ```json
|
|
65
|
-
* {
|
|
66
|
-
* "dependencies": {
|
|
67
|
-
* "@angular/cli": {
|
|
68
|
-
* "version": "18.0.0",
|
|
69
|
-
* "path": "/path/to/project/node_modules/@angular/cli", // path is optional
|
|
70
|
-
* ... (other package.json properties)
|
|
71
|
-
* }
|
|
72
|
-
* }
|
|
73
|
-
* }
|
|
74
|
-
* ```
|
|
75
|
-
*
|
|
76
|
-
* @param stdout The standard output of the command.
|
|
77
|
-
* @param logger An optional logger instance.
|
|
78
|
-
* @returns A map of package names to their installed package details.
|
|
79
|
-
*/
|
|
80
60
|
function parseNpmLikeDependencies(stdout, logger, options) {
|
|
81
61
|
logger?.debug(`Parsing npm-like dependency list...`);
|
|
82
62
|
logStdout(stdout, logger);
|
|
@@ -85,19 +65,49 @@ function parseNpmLikeDependencies(stdout, logger, options) {
|
|
|
85
65
|
logger?.debug(' stdout is empty. No dependencies found.');
|
|
86
66
|
return dependencies;
|
|
87
67
|
}
|
|
88
|
-
|
|
68
|
+
const data = JSON.parse(stdout);
|
|
69
|
+
const workspacePackageName = options?.workspacePackageName;
|
|
70
|
+
let rootProject;
|
|
71
|
+
let subProject;
|
|
89
72
|
if (Array.isArray(data)) {
|
|
90
|
-
|
|
91
|
-
|
|
73
|
+
rootProject = data[0];
|
|
74
|
+
if (workspacePackageName) {
|
|
75
|
+
subProject = data.find((project) => project?.name === workspacePackageName);
|
|
76
|
+
}
|
|
92
77
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
78
|
+
else {
|
|
79
|
+
rootProject = data;
|
|
80
|
+
}
|
|
81
|
+
if (!rootProject || typeof rootProject !== 'object') {
|
|
96
82
|
return dependencies;
|
|
97
83
|
}
|
|
98
|
-
|
|
99
|
-
if (
|
|
100
|
-
|
|
84
|
+
// 1. Extract subproject dependencies first to prioritize them
|
|
85
|
+
if (subProject) {
|
|
86
|
+
const subprojectMaps = [
|
|
87
|
+
subProject.dependencies,
|
|
88
|
+
subProject.devDependencies,
|
|
89
|
+
subProject.unsavedDependencies,
|
|
90
|
+
].filter((d) => !!d);
|
|
91
|
+
for (const subprojectMap of subprojectMaps) {
|
|
92
|
+
for (const [name, info] of Object.entries(subprojectMap)) {
|
|
93
|
+
if (info && typeof info === 'object' && info.version) {
|
|
94
|
+
dependencies.set(name, {
|
|
95
|
+
name,
|
|
96
|
+
version: info.version,
|
|
97
|
+
path: info.path,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (workspacePackageName) {
|
|
104
|
+
// Fallback to npm-like nested lookup inside the root project
|
|
105
|
+
const rootDependencyMaps = [
|
|
106
|
+
rootProject.dependencies,
|
|
107
|
+
rootProject.devDependencies,
|
|
108
|
+
rootProject.unsavedDependencies,
|
|
109
|
+
].filter((d) => !!d);
|
|
110
|
+
for (const dependencyMap of rootDependencyMaps) {
|
|
101
111
|
const info = dependencyMap[workspacePackageName];
|
|
102
112
|
if (info && typeof info === 'object') {
|
|
103
113
|
const nestedMaps = [
|
|
@@ -119,8 +129,13 @@ function parseNpmLikeDependencies(stdout, logger, options) {
|
|
|
119
129
|
}
|
|
120
130
|
}
|
|
121
131
|
}
|
|
122
|
-
//
|
|
123
|
-
|
|
132
|
+
// 2. Supplement with hoisted/root dependencies (without overwriting subproject dependencies)
|
|
133
|
+
const rootDependencyMaps = [
|
|
134
|
+
rootProject.dependencies,
|
|
135
|
+
rootProject.devDependencies,
|
|
136
|
+
rootProject.unsavedDependencies,
|
|
137
|
+
].filter((d) => !!d);
|
|
138
|
+
for (const dependencyMap of rootDependencyMaps) {
|
|
124
139
|
for (const [name, info] of Object.entries(dependencyMap)) {
|
|
125
140
|
if (!info || typeof info !== 'object') {
|
|
126
141
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["parsers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.dev/license
|
|
7
7
|
*/
|
|
8
|
+
/**
|
|
9
|
+
* Groups files into batches whose combined argument length (including `baseLength`
|
|
10
|
+
* for the fixed leading arguments) stays under `maxLength`. A file longer on its own
|
|
11
|
+
* than the budget still gets its own batch, so files are never dropped.
|
|
12
|
+
*/
|
|
13
|
+
export declare function batchFilesByArgumentLength(files: Iterable<string>, baseLength: number, maxLength: number): string[][];
|
|
8
14
|
/**
|
|
9
15
|
* Formats files using Prettier.
|
|
10
16
|
* @param cwd The current working directory.
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* found in the LICENSE file at https://angular.dev/license
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.batchFilesByArgumentLength = batchFilesByArgumentLength;
|
|
10
11
|
exports.formatFiles = formatFiles;
|
|
11
12
|
const node_child_process_1 = require("node:child_process");
|
|
12
13
|
const promises_1 = require("node:fs/promises");
|
|
@@ -15,6 +16,39 @@ const node_path_1 = require("node:path");
|
|
|
15
16
|
const node_util_1 = require("node:util");
|
|
16
17
|
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
17
18
|
let prettierCliPath;
|
|
19
|
+
/**
|
|
20
|
+
* Conservative upper bound for the length of a single spawned command line.
|
|
21
|
+
* Windows caps `CreateProcess` command lines at 32,767 characters; POSIX `ARG_MAX`
|
|
22
|
+
* is larger. Staying below this budget avoids `E2BIG`/`ENAMETOOLONG` when a large
|
|
23
|
+
* migration changes thousands of files.
|
|
24
|
+
*/
|
|
25
|
+
const MAX_COMMAND_LINE_LENGTH = 32_000;
|
|
26
|
+
/**
|
|
27
|
+
* Groups files into batches whose combined argument length (including `baseLength`
|
|
28
|
+
* for the fixed leading arguments) stays under `maxLength`. A file longer on its own
|
|
29
|
+
* than the budget still gets its own batch, so files are never dropped.
|
|
30
|
+
*/
|
|
31
|
+
function batchFilesByArgumentLength(files, baseLength, maxLength) {
|
|
32
|
+
const batches = [];
|
|
33
|
+
let batch = [];
|
|
34
|
+
let length = baseLength;
|
|
35
|
+
for (const file of files) {
|
|
36
|
+
// Account for the separator between arguments, plus the surrounding quotes the OS
|
|
37
|
+
// adds to paths containing spaces when they are spawned.
|
|
38
|
+
const fileLength = file.length + (file.includes(' ') ? 3 : 1);
|
|
39
|
+
if (batch.length > 0 && length + fileLength > maxLength) {
|
|
40
|
+
batches.push(batch);
|
|
41
|
+
batch = [];
|
|
42
|
+
length = baseLength;
|
|
43
|
+
}
|
|
44
|
+
batch.push(file);
|
|
45
|
+
length += fileLength;
|
|
46
|
+
}
|
|
47
|
+
if (batch.length > 0) {
|
|
48
|
+
batches.push(batch);
|
|
49
|
+
}
|
|
50
|
+
return batches;
|
|
51
|
+
}
|
|
18
52
|
/**
|
|
19
53
|
* Formats files using Prettier.
|
|
20
54
|
* @param cwd The current working directory.
|
|
@@ -38,9 +72,34 @@ async function formatFiles(cwd, files) {
|
|
|
38
72
|
if (!prettierCliPath) {
|
|
39
73
|
return;
|
|
40
74
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
75
|
+
const baseArgs = [
|
|
76
|
+
prettierCliPath,
|
|
77
|
+
'--write',
|
|
78
|
+
'--no-error-on-unmatched-pattern',
|
|
79
|
+
'--ignore-unknown',
|
|
80
|
+
];
|
|
81
|
+
// `process.execPath` is spawned as the first argument and also counts toward the
|
|
82
|
+
// command-line limit; it and `prettierCliPath` are absolute paths that may contain
|
|
83
|
+
// spaces and therefore be quoted.
|
|
84
|
+
const baseLength = [process.execPath, ...baseArgs].reduce((total, arg) => total + arg.length + (arg.includes(' ') ? 3 : 1), 0);
|
|
85
|
+
// Spawn Prettier once per batch so repositories with many changed files do not
|
|
86
|
+
// overflow the OS command-line length limit. A failure in one batch (e.g. a file
|
|
87
|
+
// Prettier cannot parse) must not stop the remaining batches, matching the previous
|
|
88
|
+
// single-invocation behavior, so errors are collected and reported together.
|
|
89
|
+
const errors = [];
|
|
90
|
+
for (const batch of batchFilesByArgumentLength(files, baseLength, MAX_COMMAND_LINE_LENGTH)) {
|
|
91
|
+
try {
|
|
92
|
+
await execFileAsync(process.execPath, [...baseArgs, ...batch], {
|
|
93
|
+
cwd,
|
|
94
|
+
shell: false,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
errors.push(error instanceof Error ? error.message : String(error));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (errors.length > 0) {
|
|
102
|
+
throw new Error(errors.join('\n'));
|
|
103
|
+
}
|
|
45
104
|
}
|
|
46
105
|
//# sourceMappingURL=prettier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prettier.js","sourceRoot":"","sources":["prettier.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"prettier.js","sourceRoot":"","sources":["prettier.ts"],"names":[],"mappings":"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"}
|
package/src/utilities/version.js
CHANGED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# Comprehensive Architecture Review & Analysis: Angular CLI MCP Server
|
|
2
|
-
|
|
3
|
-
The Model Context Protocol (MCP) server implementation within the Angular CLI (`packages/angular/cli/src/commands/mcp`) represents a state-of-the-art bridge between AI assistants (LLMs/agents) and the Angular development ecosystem.
|
|
4
|
-
|
|
5
|
-
Rather than forcing AI assistants to rely on generic, error-prone shell execution tools (`run_shell_command`), the Angular CLI MCP server exposes a highly structured, secure, and context-aware suite of tools. It encapsulates complex Angular workflows—such as monorepo project discovery, background dev server management, headless testing, AST-based migrations, and RAG-assisted documentation lookups—into clean, programmatic APIs.
|
|
6
|
-
|
|
7
|
-
Below is a detailed architectural review and analysis of the implementation, broken down by core infrastructure, tool subsystems, architectural strengths, and potential areas for future enhancement.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 1. High-Level Architecture & Security Model
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
15
|
-
│ McpCommandModule (cli.ts) │
|
|
16
|
-
│ Handles Yargs CLI flags (--read-only, --local-only, --exp) │
|
|
17
|
-
└────────────────────────────────────┬─────────────────────────────────────┘
|
|
18
|
-
▼
|
|
19
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
20
|
-
│ McpServer Initialization │
|
|
21
|
-
│ Configures Capabilities (tools, resources, roots, sampling, logging) │
|
|
22
|
-
└────────────────────────────────────┬─────────────────────────────────────┘
|
|
23
|
-
▼
|
|
24
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
25
|
-
│ Root-Restricted Host (host.ts) │
|
|
26
|
-
│ Sandboxes fs/child_process to client roots; resolves local ng binary │
|
|
27
|
-
└────────────────────────────────────┬─────────────────────────────────────┘
|
|
28
|
-
▼
|
|
29
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
30
|
-
│ Tool Registry & Context (tool-registry.ts) │
|
|
31
|
-
│ Assembles Stable & Experimental tools; injects Host & Devserver Map │
|
|
32
|
-
└────────────────────────────────────┬─────────────────────────────────────┘
|
|
33
|
-
▼
|
|
34
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
35
|
-
│ Specialized Tool Implementations │
|
|
36
|
-
│ [Projects] [Devserver] [Build/Test/E2E] [Doc Search] [Migrations] │
|
|
37
|
-
└──────────────────────────────────────────────────────────────────────────┘
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Command Module & Lifecycle (`cli.ts`, `mcp-server.ts`)
|
|
41
|
-
* **Interactive vs. Programmatic Execution**: The CLI command checks `isTTY()`. If a user runs `ng mcp` directly in an interactive terminal, it gracefully outputs a JSON configuration snippet demonstrating how to configure an MCP client (e.g., Claude Desktop, Cursor) to attach the server via `npx -y @angular/cli mcp`. When run in a non-TTY environment, it establishes an MCP `StdioServerTransport`.
|
|
42
|
-
* **Granular Security Flags**: It supports `--read-only` and `--local-only` flags. `assembleToolDeclarations` filters registered tools dynamically based on declarative tool properties (`tool.isReadOnly`, `tool.isLocalOnly`).
|
|
43
|
-
* **Server Instructions**: The server initializes with robust, overarching system instructions (`instructions` capability) that orient the LLM on mandatory workflows, such as discovering project structure first (`list_projects`) and fetching version-specific coding standards (`get_best_practices`).
|
|
44
|
-
|
|
45
|
-
### Sandboxed Host Abstraction (`host.ts`)
|
|
46
|
-
To ensure safe execution within arbitrary client environments, all operating system and filesystem interactions are routed through a concrete `Host` interface (`LocalWorkspaceHost`), wrapped by `createRootRestrictedHost`.
|
|
47
|
-
* **Dynamic Root Restriction**: The server negotiates the `roots` capability with the MCP client. It resolves allowed workspace roots via `server.server.listRoots()` and actively listens for `RootsListChangedNotificationSchema` to dynamically update the sandboxed boundaries.
|
|
48
|
-
* **Path Traversal Prevention**: Every filesystem operation (`stat`, `existsSync`, `readFile`, `glob`) and process execution (`executeNgCommand`, `startNgProcess`) is validated against the allowed roots. It uses `realpathSync` to resolve symlinks and strictly rejects any relative path traversal (`..`) or absolute paths escaping the root hierarchy.
|
|
49
|
-
* **Smart Local Binary Resolution**: `resolveNgCommand` uses `createRequire` from the target working directory's `package.json` to locate `@angular/cli/package.json` and resolve the local `ng.js` binary executed via `process.execPath`. This ensures that background builds and tests always run using the exact Angular CLI version installed in the workspace rather than relying on a potentially mismatched global `ng` binary.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 2. Deep Dive into Tool Subsystems
|
|
54
|
-
|
|
55
|
-
### A. Project & Workspace Discovery (`projects.ts`)
|
|
56
|
-
The `list_projects` tool serves as the foundational entry point for the AI assistant to understand the workspace layout.
|
|
57
|
-
* **High-Performance BFS Traversal**: Instead of naive recursive directory searching (which risks call-stack limits or memory bloat), `findAngularJsonFiles` implements an iterative, queue-based Breadth-First Search with a strict concurrency limit (`CONCURRENCY_LIMIT = 50`) to prevent file descriptor exhaustion (`EMFILE` errors).
|
|
58
|
-
* **Symlink & Loop Defense**: It tracks visited directory inodes (`seenInodes`) to prevent infinite loops in complex symlinked monorepos while validating that symlink targets remain within allowed MCP roots. It explicitly skips irrelevant heavy directories (`node_modules`, `dist`, `out`, `coverage`).
|
|
59
|
-
* **Intelligent Project Heuristics**:
|
|
60
|
-
* **Test Framework Detection**: `getUnitTestFramework` inspects target builders. It distinguishes between modern `@angular/build:unit-test` (parsing the `runner` option for `karma` vs. `vitest`) and older builders (`karma`, `jest`, `web-test-runner`).
|
|
61
|
-
* **Style Language Heuristics**: `getProjectStyleLanguage` evaluates project-level schematics, workspace-level schematics, build target `inlineStyleLanguage`, explicit `styles` arrays, and finally probes the filesystem for `styles.(scss|sass|less|css)`.
|
|
62
|
-
* **Framework Versioning**: `findAngularCoreVersion` traverses upwards looking for `@angular/core` in `package.json` to determine the major framework version, caching intermediate paths to optimize monorepo scanning.
|
|
63
|
-
|
|
64
|
-
### B. Development Server Management (`devserver.ts`, `devserver-*.ts`)
|
|
65
|
-
Managing long-running background processes over a request-response protocol like MCP requires sophisticated state handling.
|
|
66
|
-
* **Stateful Process Map**: `tool-registry.ts` injects a shared `devservers` Map into the tool context, tracking active `LocalDevserver` instances keyed by `workspacePath:projectName`.
|
|
67
|
-
* **Stream Parsing & Build Tracking**: `LocalDevserver` spawns `ng serve` as a background child process. It attaches listeners to `stdout`/`stderr` to monitor build lifecycle strings (`BUILD_SUCCEEDED_MESSAGE`, `BUILD_FAILED_MESSAGE`, `CHANGES_DETECTED_START_MESSAGE`). This allows the server to maintain an accurate `isBuilding()` state and cache the latest build logs.
|
|
68
|
-
* **Synchronous Rebuild Verification (`devserver.wait_for_build`)**: LLMs often struggle with asynchronous file watchers. This tool allows the AI to edit a file and immediately call `devserver.wait_for_build`. The tool polls `devserver.isBuilding()` (with a `WATCH_DELAY` of 1000ms and configurable timeout), blocking until the live rebuild completes and returning the fresh build status and logs.
|
|
69
|
-
* **Automated Port Assignment**: If a port is not provided, `host.getAvailablePort()` spins up a temporary TCP server on port `0` to let the OS assign a guaranteed free port, closing it immediately before launching `ng serve`.
|
|
70
|
-
|
|
71
|
-
### C. Build, Test, and E2E Runners (`build.ts`, `test.ts`, `e2e.ts`)
|
|
72
|
-
These one-off execution tools wrap `ng build`, `ng test`, and `ng e2e` with smart environment adaptations:
|
|
73
|
-
* **Build Tool**: Defaults to the `development` configuration (unlike standard `ng build` which defaults to `production`), ensuring faster feedback loops for the AI. It parses the execution logs for `Output location: (.*)` to return the exact artifact path.
|
|
74
|
-
* **Test Tool**: Automatically configures headless execution to ensure non-interactive compatibility. If the builder is `@angular/build:unit-test` (Vitest), it appends `--headless true`. For Karma-based runners, it appends `--browsers ChromeHeadless`. It forces `--watch false` and supports granular `--filter` execution.
|
|
75
|
-
* **E2E Tool**: Includes pre-execution verification, checking the `angular.json` AST/model to ensure an `e2e` target actually exists before attempting execution, providing informative error messages if setup is required.
|
|
76
|
-
|
|
77
|
-
### D. Documentation Search (`doc-search.ts`)
|
|
78
|
-
The `search_documentation` tool provides RAG capabilities by querying official `angular.dev` documentation via Algolia.
|
|
79
|
-
* **Secure API Key Decryption**: To prevent scraping or abuse of the Algolia search key, the key is stored in an encrypted form (`constants.ts`) and decrypted at runtime using `node:crypto` `createDecipheriv` (AES-256-GCM).
|
|
80
|
-
* **Version Clamping & Safe Harbor**: It aligns queries with the user's local Angular major version. It clamps minimum versions to v17 (`MIN_SUPPORTED_DOCS_VERSION`). To prevent race conditions when a new major Angular version is released before its Algolia index is fully published, it implements a fallback to a hardcoded stable safe harbor (`LATEST_KNOWN_DOCS_VERSION = 20`).
|
|
81
|
-
* **Stream-Based HTML Rewriting**: When `includeTopContent` is requested, it fetches the top hit URL (strictly validating the hostname is `angular.dev` or `*.angular.dev`). To avoid overwhelming the LLM's context window with bloated HTML (navigation, sidebars, footers), it uses `parse5-html-rewriting-stream` to stream and extract *only* the inner text of the `<main>` DOM element.
|
|
82
|
-
|
|
83
|
-
### E. AI Tutor & Best Practices (`ai-tutor.ts`, `best-practices.ts`, `BUILD.bazel`)
|
|
84
|
-
* **Prompt & Persona Injection**: The `ai_tutor` tool acts as a RAG source that injects a specialized curriculum. It leverages MCP annotations (`annotations: { audience: ['assistant'], priority: 1.0 }`) to instruct the client to treat the content as high-priority system instructions rather than displaying it to the user.
|
|
85
|
-
* **Version-Aware Standards**: `get_best_practices` inspects the user's installed `@angular/core/package.json` for custom `angular.bestPractices` metadata to load version-matched guidelines. If missing or if path traversal/size limits (>1MB) are breached, it falls back to a generic guide bundled directly into the CLI package via Bazel genrules (`BUILD.bazel`).
|
|
86
|
-
|
|
87
|
-
### F. OnPush & Zoneless Migration (`zoneless-migration.ts` & Subsystem)
|
|
88
|
-
This subsystem provides an advanced, AST-driven refactoring workflow designed for iterative execution (one actionable step at a time).
|
|
89
|
-
* **TypeScript AST Categorization**: It uses the TypeScript Compiler API (`ts-utils.ts`) to parse source files and categorize them into `zoneFiles` (containing unsupported `NgZone` imports), `filesWithComponents` (lacking `OnPush`), and `componentTestFiles`.
|
|
90
|
-
* **Advanced MCP Client Sampling (`sampling/createMessage`)**: In an elegant display of advanced MCP capabilities, when multiple component files require migration, `rankComponentFilesForMigration` invokes the MCP `sampling/createMessage` request. It asks the LLM client to evaluate the file list and rank them so that shared/common components (`shared/`, `common/`, `ui/`) are migrated first.
|
|
91
|
-
* **Granular Prompting**: It provides highly specific, diff-illustrated refactoring prompts for replacing `onMicrotaskEmpty`/`onStable` with `afterNextRender`/`afterEveryRender`, converting state to Signals or `markForCheck()`, and debugging test failures (`ExpressionChangedAfterItHasBeenCheckedError`).
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## 3. Summary of Architectural Strengths
|
|
96
|
-
|
|
97
|
-
1. **Flawless MCP Specification Alignment**: The implementation takes full advantage of the MCP specification, utilizing Tool Annotations (`readOnlyHint`, `openWorldHint`, `audience`, `priority`), Client Sampling (`sampling/createMessage`), Dynamic Roots (`listRoots`), and Stdio lifecycle management.
|
|
98
|
-
2. **Defensive & Resilient Design**: The codebase exhibits rigorous defensive programming. It includes strict sandboxing in `host.ts`, inode cycle detection in `projects.ts`, fallback safe-harbor versioning in `doc-search.ts`, and graceful handling of ignorable filesystem locks/permission errors (`EACCES`, `EPERM`, `EBUSY`).
|
|
99
|
-
3. **Token & Context Optimization**: Recognizing the bandwidth and context constraints of LLMs, the server avoids dumping raw data. It filters out non-essential files, streams only `<main>` content from documentation web pages, and forces iterative, single-action responses during complex migrations.
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## 4. Potential Limitations & Recommendations for Future Enhancement
|
|
104
|
-
|
|
105
|
-
While the implementation is exceptionally robust, a thorough analysis reveals a few edge cases and opportunities for refinement:
|
|
106
|
-
|
|
107
|
-
### 1. Devserver Log Matching Fragility
|
|
108
|
-
* **Observation**: In `devserver.ts`, `addLog()` evaluates build status using exact string matching (`log.startsWith(BUILD_SUCCEEDED_MESSAGE)`). If the underlying Angular CLI builder output includes ANSI color codes, terminal escape sequences, or if log formatting changes in future CLI releases, `log.startsWith` may fail to match, leaving the server in an incorrect `isBuilding() = true` state.
|
|
109
|
-
* **Recommendation**: Strip ANSI codes from incoming data chunks before matching, or better yet, configure the child process to use a structured JSON IPC/logging mechanism if supported by the Angular CLI dev server builder.
|
|
110
|
-
|
|
111
|
-
### 2. Global Binary Fallback Risk
|
|
112
|
-
* **Observation**: In `host.ts`, `resolveNgCommand` attempts to find the local `ng.js` binary. If `createRequire` fails (e.g., in an unusual monorepo or hoisting setup), it falls back to `{ command: 'ng', args }`. If the host environment lacks a globally installed `@angular/cli` or has an outdated global version, process execution will fail unexpectedly.
|
|
113
|
-
* **Recommendation**: When local resolution fails, verify the existence of global `ng` via `where`/`which` or inspect `node_modules/.bin/ng` before falling back, providing a clear diagnostic warning to the logger if a global binary fallback is triggered.
|
|
114
|
-
|
|
115
|
-
### 3. AST Decorator Matching in Migrations
|
|
116
|
-
* **Observation**: In `migrate-single-file.ts`, the AST visitor explicitly checks for `ts.isDecorator(node)` where the expression is a call to `Component`. If an enterprise codebase aliases the `@Component` decorator, wraps it in a custom decorator (e.g., `@CustomUIComponent`), or relies on intermediate base class inheritance for change detection strategies, the migration tool will bypass the file.
|
|
117
|
-
* **Recommendation**: Utilize the TypeScript type checker (if a full program can be cheaply instantiated) to resolve base classes/decorator aliases, or expand the AST heuristic to inspect imported decorator aliases.
|