@angular/cli 21.0.0-next.1 → 21.0.0-next.10

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 (223) hide show
  1. package/lib/cli/index.js +1 -0
  2. package/lib/cli/index.js.map +1 -0
  3. package/lib/code-examples.db +0 -0
  4. package/lib/config/schema.json +272 -46
  5. package/lib/config/workspace-schema.d.ts +55 -0
  6. package/lib/config/workspace-schema.js +22 -1
  7. package/lib/config/workspace-schema.js.map +1 -0
  8. package/lib/init.js +1 -0
  9. package/lib/init.js.map +1 -0
  10. package/package.json +24 -23
  11. package/src/analytics/analytics-collector.js +1 -0
  12. package/src/analytics/analytics-collector.js.map +1 -0
  13. package/src/analytics/analytics-parameters.js +1 -0
  14. package/src/analytics/analytics-parameters.js.map +1 -0
  15. package/src/analytics/analytics.js +1 -0
  16. package/src/analytics/analytics.js.map +1 -0
  17. package/src/command-builder/architect-base-command-module.js +1 -0
  18. package/src/command-builder/architect-base-command-module.js.map +1 -0
  19. package/src/command-builder/architect-command-module.js +21 -7
  20. package/src/command-builder/architect-command-module.js.map +1 -0
  21. package/src/command-builder/command-module.js +1 -0
  22. package/src/command-builder/command-module.js.map +1 -0
  23. package/src/command-builder/command-runner.js +2 -2
  24. package/src/command-builder/command-runner.js.map +1 -0
  25. package/src/command-builder/schematics-command-module.js +1 -0
  26. package/src/command-builder/schematics-command-module.js.map +1 -0
  27. package/src/command-builder/utilities/command.js +1 -0
  28. package/src/command-builder/utilities/command.js.map +1 -0
  29. package/src/command-builder/utilities/json-help.js +1 -0
  30. package/src/command-builder/utilities/json-help.js.map +1 -0
  31. package/src/command-builder/utilities/json-schema.d.ts +13 -1
  32. package/src/command-builder/utilities/json-schema.js +180 -100
  33. package/src/command-builder/utilities/json-schema.js.map +1 -0
  34. package/src/command-builder/utilities/normalize-options-middleware.js +1 -0
  35. package/src/command-builder/utilities/normalize-options-middleware.js.map +1 -0
  36. package/src/command-builder/utilities/schematic-engine-host.js +1 -0
  37. package/src/command-builder/utilities/schematic-engine-host.js.map +1 -0
  38. package/src/command-builder/utilities/schematic-workflow.js +1 -0
  39. package/src/command-builder/utilities/schematic-workflow.js.map +1 -0
  40. package/src/commands/add/cli.js +66 -26
  41. package/src/commands/add/cli.js.map +1 -0
  42. package/src/commands/analytics/cli.js +1 -0
  43. package/src/commands/analytics/cli.js.map +1 -0
  44. package/src/commands/analytics/info/cli.js +1 -0
  45. package/src/commands/analytics/info/cli.js.map +1 -0
  46. package/src/commands/analytics/settings/cli.js +1 -0
  47. package/src/commands/analytics/settings/cli.js.map +1 -0
  48. package/src/commands/build/cli.js +1 -0
  49. package/src/commands/build/cli.js.map +1 -0
  50. package/src/commands/cache/clean/cli.js +1 -0
  51. package/src/commands/cache/clean/cli.js.map +1 -0
  52. package/src/commands/cache/cli.js +1 -0
  53. package/src/commands/cache/cli.js.map +1 -0
  54. package/src/commands/cache/info/cli.js +36 -11
  55. package/src/commands/cache/info/cli.js.map +1 -0
  56. package/src/commands/cache/settings/cli.js +1 -0
  57. package/src/commands/cache/settings/cli.js.map +1 -0
  58. package/src/commands/cache/utilities.js +1 -0
  59. package/src/commands/cache/utilities.js.map +1 -0
  60. package/src/commands/command-config.js +1 -0
  61. package/src/commands/command-config.js.map +1 -0
  62. package/src/commands/completion/cli.js +1 -0
  63. package/src/commands/completion/cli.js.map +1 -0
  64. package/src/commands/config/cli.js +1 -0
  65. package/src/commands/config/cli.js.map +1 -0
  66. package/src/commands/deploy/cli.js +1 -0
  67. package/src/commands/deploy/cli.js.map +1 -0
  68. package/src/commands/e2e/cli.js +1 -0
  69. package/src/commands/e2e/cli.js.map +1 -0
  70. package/src/commands/extract-i18n/cli.js +1 -0
  71. package/src/commands/extract-i18n/cli.js.map +1 -0
  72. package/src/commands/generate/cli.js +1 -0
  73. package/src/commands/generate/cli.js.map +1 -0
  74. package/src/commands/lint/cli.js +1 -0
  75. package/src/commands/lint/cli.js.map +1 -0
  76. package/src/commands/make-this-awesome/cli.js +1 -0
  77. package/src/commands/make-this-awesome/cli.js.map +1 -0
  78. package/src/commands/mcp/cli.js +1 -0
  79. package/src/commands/mcp/cli.js.map +1 -0
  80. package/src/commands/mcp/constants.d.ts +1 -1
  81. package/src/commands/mcp/constants.js +2 -1
  82. package/src/commands/mcp/constants.js.map +1 -0
  83. package/src/commands/mcp/mcp-server.d.ts +3 -3
  84. package/src/commands/mcp/mcp-server.js +40 -4
  85. package/src/commands/mcp/mcp-server.js.map +1 -0
  86. package/src/commands/mcp/resources/ai-tutor.md +627 -0
  87. package/src/commands/mcp/resources/instructions.js +1 -0
  88. package/src/commands/mcp/resources/instructions.js.map +1 -0
  89. package/src/commands/mcp/tools/ai-tutor.d.ts +8 -0
  90. package/src/commands/mcp/tools/ai-tutor.js +62 -0
  91. package/src/commands/mcp/tools/ai-tutor.js.map +1 -0
  92. package/src/commands/mcp/tools/best-practices.d.ts +4 -1
  93. package/src/commands/mcp/tools/best-practices.js +167 -22
  94. package/src/commands/mcp/tools/best-practices.js.map +1 -0
  95. package/src/commands/mcp/tools/doc-search.d.ts +20 -1
  96. package/src/commands/mcp/tools/doc-search.js +186 -67
  97. package/src/commands/mcp/tools/doc-search.js.map +1 -0
  98. package/src/commands/mcp/tools/examples.d.ts +35 -1
  99. package/src/commands/mcp/tools/examples.js +414 -56
  100. package/src/commands/mcp/tools/examples.js.map +1 -0
  101. package/src/commands/mcp/tools/modernize.js +29 -17
  102. package/src/commands/mcp/tools/modernize.js.map +1 -0
  103. package/src/commands/mcp/tools/onpush-zoneless-migration/analyze_for_unsupported_zone_uses.d.ts +17 -0
  104. package/src/commands/mcp/tools/onpush-zoneless-migration/analyze_for_unsupported_zone_uses.js +62 -0
  105. package/src/commands/mcp/tools/onpush-zoneless-migration/analyze_for_unsupported_zone_uses.js.map +1 -0
  106. package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file.d.ts +12 -0
  107. package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file.js +73 -0
  108. package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file.js.map +1 -0
  109. package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.d.ts +11 -0
  110. package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.js +106 -0
  111. package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.js.map +1 -0
  112. package/src/commands/mcp/tools/onpush-zoneless-migration/prompts.d.ts +15 -0
  113. package/src/commands/mcp/tools/onpush-zoneless-migration/prompts.js +238 -0
  114. package/src/commands/mcp/tools/onpush-zoneless-migration/prompts.js.map +1 -0
  115. package/src/commands/mcp/tools/onpush-zoneless-migration/send_debug_message.d.ts +10 -0
  116. package/src/commands/mcp/tools/onpush-zoneless-migration/send_debug_message.js +20 -0
  117. package/src/commands/mcp/tools/onpush-zoneless-migration/send_debug_message.js.map +1 -0
  118. package/src/commands/mcp/tools/onpush-zoneless-migration/ts_utils.d.ts +36 -0
  119. package/src/commands/mcp/tools/onpush-zoneless-migration/ts_utils.js +136 -0
  120. package/src/commands/mcp/tools/onpush-zoneless-migration/ts_utils.js.map +1 -0
  121. package/src/commands/mcp/tools/onpush-zoneless-migration/types.d.ts +13 -0
  122. package/src/commands/mcp/tools/onpush-zoneless-migration/types.js +10 -0
  123. package/src/commands/mcp/tools/onpush-zoneless-migration/types.js.map +1 -0
  124. package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.d.ts +14 -0
  125. package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.js +228 -0
  126. package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.js.map +1 -0
  127. package/src/commands/mcp/tools/projects.d.ts +75 -16
  128. package/src/commands/mcp/tools/projects.js +427 -30
  129. package/src/commands/mcp/tools/projects.js.map +1 -0
  130. package/src/commands/mcp/tools/tool-registry.d.ts +2 -1
  131. package/src/commands/mcp/tools/tool-registry.js +4 -2
  132. package/src/commands/mcp/tools/tool-registry.js.map +1 -0
  133. package/src/commands/new/cli.js +2 -0
  134. package/src/commands/new/cli.js.map +1 -0
  135. package/src/commands/run/cli.js +1 -0
  136. package/src/commands/run/cli.js.map +1 -0
  137. package/src/commands/serve/cli.js +1 -0
  138. package/src/commands/serve/cli.js.map +1 -0
  139. package/src/commands/test/cli.js +1 -0
  140. package/src/commands/test/cli.js.map +1 -0
  141. package/src/commands/update/cli.js +1 -0
  142. package/src/commands/update/cli.js.map +1 -0
  143. package/src/commands/update/schematic/index.js +1 -0
  144. package/src/commands/update/schematic/index.js.map +1 -0
  145. package/src/commands/update/schematic/schema.js +1 -0
  146. package/src/commands/update/schematic/schema.js.map +1 -0
  147. package/src/commands/version/cli.d.ts +3 -7
  148. package/src/commands/version/cli.js +50 -49
  149. package/src/commands/version/cli.js.map +1 -0
  150. package/src/commands/version/version-info.d.ts +28 -10
  151. package/src/commands/version/version-info.js +34 -50
  152. package/src/commands/version/version-info.js.map +1 -0
  153. package/src/package-managers/discovery.d.ts +23 -0
  154. package/src/package-managers/discovery.js +110 -0
  155. package/src/package-managers/discovery.js.map +1 -0
  156. package/src/package-managers/error.d.ts +31 -0
  157. package/src/package-managers/error.js +41 -0
  158. package/src/package-managers/error.js.map +1 -0
  159. package/src/package-managers/factory.d.ts +25 -0
  160. package/src/package-managers/factory.js +123 -0
  161. package/src/package-managers/factory.js.map +1 -0
  162. package/src/package-managers/host.d.ts +64 -0
  163. package/src/package-managers/host.js +69 -0
  164. package/src/package-managers/host.js.map +1 -0
  165. package/src/package-managers/index.d.ts +12 -0
  166. package/src/package-managers/index.js +15 -0
  167. package/src/package-managers/index.js.map +1 -0
  168. package/src/package-managers/logger.d.ts +27 -0
  169. package/src/package-managers/logger.js +10 -0
  170. package/src/package-managers/logger.js.map +1 -0
  171. package/src/package-managers/package-manager-descriptor.d.ts +204 -0
  172. package/src/package-managers/package-manager-descriptor.js +147 -0
  173. package/src/package-managers/package-manager-descriptor.js.map +1 -0
  174. package/src/package-managers/package-manager.d.ts +144 -0
  175. package/src/package-managers/package-manager.js +304 -0
  176. package/src/package-managers/package-manager.js.map +1 -0
  177. package/src/package-managers/package-metadata.d.ts +87 -0
  178. package/src/package-managers/package-metadata.js +10 -0
  179. package/src/package-managers/package-metadata.js.map +1 -0
  180. package/src/package-managers/package-tree.d.ts +23 -0
  181. package/src/package-managers/package-tree.js +10 -0
  182. package/src/package-managers/package-tree.js.map +1 -0
  183. package/src/package-managers/parsers.d.ts +92 -0
  184. package/src/package-managers/parsers.js +234 -0
  185. package/src/package-managers/parsers.js.map +1 -0
  186. package/src/package-managers/testing/mock-host.d.ts +26 -0
  187. package/src/package-managers/testing/mock-host.js +53 -0
  188. package/src/package-managers/testing/mock-host.js.map +1 -0
  189. package/src/utilities/color.js +1 -0
  190. package/src/utilities/color.js.map +1 -0
  191. package/src/utilities/completion.js +1 -0
  192. package/src/utilities/completion.js.map +1 -0
  193. package/src/utilities/config.js +1 -0
  194. package/src/utilities/config.js.map +1 -0
  195. package/src/utilities/environment-options.js +1 -0
  196. package/src/utilities/environment-options.js.map +1 -0
  197. package/src/utilities/eol.js +1 -0
  198. package/src/utilities/eol.js.map +1 -0
  199. package/src/utilities/error.js +1 -0
  200. package/src/utilities/error.js.map +1 -0
  201. package/src/utilities/find-up.js +1 -0
  202. package/src/utilities/find-up.js.map +1 -0
  203. package/src/utilities/json-file.js +1 -0
  204. package/src/utilities/json-file.js.map +1 -0
  205. package/src/utilities/log-file.js +1 -0
  206. package/src/utilities/log-file.js.map +1 -0
  207. package/src/utilities/memoize.js +1 -0
  208. package/src/utilities/memoize.js.map +1 -0
  209. package/src/utilities/package-manager.d.ts +12 -0
  210. package/src/utilities/package-manager.js +52 -35
  211. package/src/utilities/package-manager.js.map +1 -0
  212. package/src/utilities/package-metadata.js +1 -0
  213. package/src/utilities/package-metadata.js.map +1 -0
  214. package/src/utilities/package-tree.js +1 -0
  215. package/src/utilities/package-tree.js.map +1 -0
  216. package/src/utilities/project.js +1 -0
  217. package/src/utilities/project.js.map +1 -0
  218. package/src/utilities/prompt.js +1 -0
  219. package/src/utilities/prompt.js.map +1 -0
  220. package/src/utilities/tty.js +1 -0
  221. package/src/utilities/tty.js.map +1 -0
  222. package/src/utilities/version.js +2 -1
  223. package/src/utilities/version.js.map +1 -0
@@ -11,15 +11,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.LIST_PROJECTS_TOOL = void 0;
14
+ const promises_1 = require("node:fs/promises");
14
15
  const node_path_1 = __importDefault(require("node:path"));
16
+ const node_url_1 = require("node:url");
17
+ const semver_1 = __importDefault(require("semver"));
15
18
  const zod_1 = __importDefault(require("zod"));
19
+ const config_1 = require("../../../utilities/config");
20
+ const error_1 = require("../../../utilities/error");
16
21
  const tool_registry_1 = require("./tool-registry");
17
- exports.LIST_PROJECTS_TOOL = (0, tool_registry_1.declareTool)({
18
- name: 'list_projects',
19
- title: 'List Angular Projects',
20
- description: 'Lists the names of all applications and libraries defined within an Angular workspace. ' +
21
- 'It reads the `angular.json` configuration file to identify the projects. ',
22
- outputSchema: {
22
+ // Single source of truth for what constitutes a valid style language.
23
+ const styleLanguageSchema = zod_1.default.enum(['css', 'scss', 'sass', 'less']);
24
+ const VALID_STYLE_LANGUAGES = styleLanguageSchema.options;
25
+ // Explicitly ordered for the file system search heuristic.
26
+ const STYLE_LANGUAGE_SEARCH_ORDER = ['scss', 'sass', 'less', 'css'];
27
+ function isStyleLanguage(value) {
28
+ return (typeof value === 'string' && VALID_STYLE_LANGUAGES.includes(value));
29
+ }
30
+ function getStyleLanguageFromExtension(extension) {
31
+ const style = extension.toLowerCase().substring(1); // remove leading '.'
32
+ return isStyleLanguage(style) ? style : undefined;
33
+ }
34
+ const listProjectsOutputSchema = {
35
+ workspaces: zod_1.default.array(zod_1.default.object({
36
+ path: zod_1.default.string().describe('The path to the `angular.json` file for this workspace.'),
37
+ frameworkVersion: zod_1.default
38
+ .string()
39
+ .optional()
40
+ .describe('The major version of the Angular framework (`@angular/core`) in this workspace, if found.'),
23
41
  projects: zod_1.default.array(zod_1.default.object({
24
42
  name: zod_1.default
25
43
  .string()
@@ -28,6 +46,10 @@ exports.LIST_PROJECTS_TOOL = (0, tool_registry_1.declareTool)({
28
46
  .enum(['application', 'library'])
29
47
  .optional()
30
48
  .describe(`The type of the project, either 'application' or 'library'.`),
49
+ builder: zod_1.default
50
+ .string()
51
+ .optional()
52
+ .describe('The primary builder for the project, typically from the "build" target.'),
31
53
  root: zod_1.default
32
54
  .string()
33
55
  .describe('The root directory of the project, relative to the workspace root.'),
@@ -39,16 +61,399 @@ exports.LIST_PROJECTS_TOOL = (0, tool_registry_1.declareTool)({
39
61
  .optional()
40
62
  .describe('The prefix to use for component selectors.' +
41
63
  ` For example, a prefix of 'app' would result in selectors like '<app-my-component>'.`),
64
+ unitTestFramework: zod_1.default
65
+ .enum(['jasmine', 'jest', 'vitest', 'unknown'])
66
+ .optional()
67
+ .describe('The unit test framework used by the project, such as Jasmine, Jest, or Vitest. ' +
68
+ 'This field is critical for generating correct and idiomatic unit tests. ' +
69
+ 'When writing or modifying tests, you MUST use the APIs corresponding to this framework.'),
70
+ styleLanguage: styleLanguageSchema
71
+ .optional()
72
+ .describe('The default style language for the project (e.g., "scss"). ' +
73
+ 'This determines the file extension for new component styles.'),
42
74
  })),
43
- },
75
+ })),
76
+ parsingErrors: zod_1.default
77
+ .array(zod_1.default.object({
78
+ filePath: zod_1.default.string().describe('The path to the file that could not be parsed.'),
79
+ message: zod_1.default.string().describe('The error message detailing why parsing failed.'),
80
+ }))
81
+ .default([])
82
+ .describe('A list of files that looked like workspaces but failed to parse.'),
83
+ versioningErrors: zod_1.default
84
+ .array(zod_1.default.object({
85
+ filePath: zod_1.default
86
+ .string()
87
+ .describe('The path to the workspace `angular.json` for which versioning failed.'),
88
+ message: zod_1.default.string().describe('The error message detailing why versioning failed.'),
89
+ }))
90
+ .default([])
91
+ .describe('A list of workspaces for which the framework version could not be determined.'),
92
+ };
93
+ exports.LIST_PROJECTS_TOOL = (0, tool_registry_1.declareTool)({
94
+ name: 'list_projects',
95
+ title: 'List Angular Projects',
96
+ description: `
97
+ <Purpose>
98
+ Provides a comprehensive overview of all Angular workspaces and projects within the repository.
99
+ It is essential to use this tool as a first step before performing any project-specific actions to understand the available projects,
100
+ their types, and their locations.
101
+ </Purpose>
102
+ <Use Cases>
103
+ * Finding the correct project name to use in other commands (e.g., \`ng generate component my-comp --project=my-app\`).
104
+ * Identifying the \`root\` and \`sourceRoot\` of a project to read, analyze, or modify its files.
105
+ * Determining a project's unit test framework (\`unitTestFramework\`) before writing or modifying tests.
106
+ * Identifying the project's style language (\`styleLanguage\`) to use the correct file extension (e.g., \`.scss\`).
107
+ * Getting the \`selectorPrefix\` for a project before generating a new component to ensure it follows conventions.
108
+ * Identifying the major version of the Angular framework for each workspace, which is crucial for monorepos.
109
+ * Determining a project's primary function by inspecting its builder (e.g., '@angular-devkit/build-angular:browser' for an application).
110
+ </Use Cases>
111
+ <Operational Notes>
112
+ * **Working Directory:** Shell commands for a project (like \`ng generate\`) **MUST**
113
+ be executed from the parent directory of the \`path\` field for the relevant workspace.
114
+ * **Unit Testing:** The \`unitTestFramework\` field tells you which testing API to use (e.g., Jasmine, Jest).
115
+ If the value is 'unknown', you **MUST** inspect the project's configuration files
116
+ (e.g., \`karma.conf.js\`, \`jest.config.js\`, or the 'test' target in \`angular.json\`) to determine the
117
+ framework before generating tests.
118
+ * **Disambiguation:** A monorepo may contain multiple workspaces (e.g., for different applications or even in output directories).
119
+ Use the \`path\` of each workspace to understand its context and choose the correct project.
120
+ </Operational Notes>`,
121
+ outputSchema: listProjectsOutputSchema,
44
122
  isReadOnly: true,
45
123
  isLocalOnly: true,
46
- shouldRegister: (context) => !!context.workspace,
47
124
  factory: createListProjectsHandler,
48
125
  });
49
- function createListProjectsHandler({ workspace }) {
126
+ const EXCLUDED_DIRS = new Set(['node_modules', 'dist', 'out', 'coverage']);
127
+ /**
128
+ * Iteratively finds all 'angular.json' files with controlled concurrency and directory exclusions.
129
+ * This non-recursive implementation is suitable for very large directory trees,
130
+ * prevents file descriptor exhaustion (`EMFILE` errors), and handles symbolic link loops.
131
+ * @param rootDir The directory to start the search from.
132
+ * @returns An async generator that yields the full path of each found 'angular.json' file.
133
+ */
134
+ async function* findAngularJsonFiles(rootDir) {
135
+ const CONCURRENCY_LIMIT = 50;
136
+ const queue = [rootDir];
137
+ const seenInodes = new Set();
138
+ try {
139
+ const rootStats = await (0, promises_1.stat)(rootDir);
140
+ seenInodes.add(rootStats.ino);
141
+ }
142
+ catch (error) {
143
+ (0, error_1.assertIsError)(error);
144
+ if (error.code === 'EACCES' || error.code === 'EPERM' || error.code === 'ENOENT') {
145
+ return; // Cannot access root, so there's nothing to do.
146
+ }
147
+ throw error;
148
+ }
149
+ while (queue.length > 0) {
150
+ const batch = queue.splice(0, CONCURRENCY_LIMIT);
151
+ const foundFilesInBatch = [];
152
+ const promises = batch.map(async (dir) => {
153
+ try {
154
+ const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
155
+ const subdirectories = [];
156
+ for (const entry of entries) {
157
+ const fullPath = node_path_1.default.join(dir, entry.name);
158
+ if (entry.isDirectory()) {
159
+ // Exclude dot-directories, build/cache directories, and node_modules
160
+ if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name)) {
161
+ continue;
162
+ }
163
+ // Check for symbolic link loops
164
+ try {
165
+ const entryStats = await (0, promises_1.stat)(fullPath);
166
+ if (seenInodes.has(entryStats.ino)) {
167
+ continue; // Already visited this directory (symlink loop), skip.
168
+ }
169
+ seenInodes.add(entryStats.ino);
170
+ }
171
+ catch {
172
+ // Ignore errors from stat (e.g., broken symlinks)
173
+ continue;
174
+ }
175
+ subdirectories.push(fullPath);
176
+ }
177
+ else if (entry.name === 'angular.json') {
178
+ foundFilesInBatch.push(fullPath);
179
+ }
180
+ }
181
+ return subdirectories;
182
+ }
183
+ catch (error) {
184
+ (0, error_1.assertIsError)(error);
185
+ if (error.code === 'EACCES' || error.code === 'EPERM') {
186
+ return []; // Silently ignore permission errors.
187
+ }
188
+ throw error;
189
+ }
190
+ });
191
+ const nestedSubdirs = await Promise.all(promises);
192
+ queue.push(...nestedSubdirs.flat());
193
+ yield* foundFilesInBatch;
194
+ }
195
+ }
196
+ /**
197
+ * Searches upwards from a starting directory to find the version of '@angular/core'.
198
+ * It caches results to avoid redundant lookups.
199
+ * @param startDir The directory to start the search from.
200
+ * @param cache A map to store cached results.
201
+ * @param searchRoot The directory at which to stop the search.
202
+ * @returns The major version of '@angular/core' as a string, otherwise undefined.
203
+ */
204
+ async function findAngularCoreVersion(startDir, cache, searchRoot) {
205
+ let currentDir = startDir;
206
+ const dirsToCache = [];
207
+ while (currentDir) {
208
+ dirsToCache.push(currentDir);
209
+ if (cache.has(currentDir)) {
210
+ const cachedResult = cache.get(currentDir);
211
+ // Populate cache for all intermediate directories.
212
+ for (const dir of dirsToCache) {
213
+ cache.set(dir, cachedResult);
214
+ }
215
+ return cachedResult;
216
+ }
217
+ const pkgPath = node_path_1.default.join(currentDir, 'package.json');
218
+ try {
219
+ const pkgContent = await (0, promises_1.readFile)(pkgPath, 'utf-8');
220
+ const pkg = JSON.parse(pkgContent);
221
+ const versionSpecifier = pkg.dependencies?.['@angular/core'] ?? pkg.devDependencies?.['@angular/core'];
222
+ if (versionSpecifier) {
223
+ const minVersion = semver_1.default.minVersion(versionSpecifier);
224
+ const result = minVersion ? String(minVersion.major) : undefined;
225
+ for (const dir of dirsToCache) {
226
+ cache.set(dir, result);
227
+ }
228
+ return result;
229
+ }
230
+ }
231
+ catch (error) {
232
+ (0, error_1.assertIsError)(error);
233
+ if (error.code !== 'ENOENT') {
234
+ // Ignore missing package.json files, but rethrow other errors.
235
+ throw error;
236
+ }
237
+ }
238
+ // Stop if we are at the search root or the filesystem root.
239
+ if (currentDir === searchRoot) {
240
+ break;
241
+ }
242
+ const parentDir = node_path_1.default.dirname(currentDir);
243
+ if (parentDir === currentDir) {
244
+ break; // Reached the filesystem root.
245
+ }
246
+ currentDir = parentDir;
247
+ }
248
+ // Cache the failure for all traversed directories.
249
+ for (const dir of dirsToCache) {
250
+ cache.set(dir, undefined);
251
+ }
252
+ return undefined;
253
+ }
254
+ /**
255
+ * Determines the unit test framework for a project based on its 'test' target configuration.
256
+ * It handles both the modern `@angular/build:unit-test` builder with its `runner` option
257
+ * and older builders where the framework is inferred from the builder name.
258
+ * @param testTarget The 'test' target definition from the workspace configuration.
259
+ * @returns The name of the unit test framework ('jasmine', 'jest', 'vitest'), 'unknown' if
260
+ * the framework can't be determined from a known builder, or `undefined` if there is no test target.
261
+ */
262
+ function getUnitTestFramework(testTarget) {
263
+ if (!testTarget) {
264
+ return undefined;
265
+ }
266
+ // For the new unit-test builder, the runner option directly informs the framework.
267
+ if (testTarget.builder === '@angular/build:unit-test') {
268
+ const runner = testTarget.options?.['runner'];
269
+ if (runner === 'karma') {
270
+ return 'jasmine'; // Karma is a runner, but the framework is Jasmine.
271
+ }
272
+ else {
273
+ return runner; // For 'vitest', the runner and framework are the same.
274
+ }
275
+ }
276
+ // Fallback for older builders where the framework is inferred from the builder name.
277
+ if (testTarget.builder) {
278
+ const testBuilder = testTarget.builder;
279
+ if (testBuilder.includes('karma') ||
280
+ testBuilder === '@angular-devkit/build-angular:web-test-runner') {
281
+ return 'jasmine';
282
+ }
283
+ else if (testBuilder.includes('jest')) {
284
+ return 'jest';
285
+ }
286
+ else if (testBuilder.includes('vitest')) {
287
+ return 'vitest';
288
+ }
289
+ else {
290
+ return 'unknown';
291
+ }
292
+ }
293
+ return undefined;
294
+ }
295
+ /**
296
+ * Determines the style language for a project using a prioritized heuristic.
297
+ * It checks project-specific schematics, then workspace-level schematics,
298
+ * and finally infers from the build target's inlineStyleLanguage option.
299
+ * @param project The project definition from the workspace configuration.
300
+ * @param workspace The loaded Angular workspace.
301
+ * @returns The determined style language ('css', 'scss', 'sass', 'less').
302
+ */
303
+ async function getProjectStyleLanguage(project, workspace, fullSourceRoot) {
304
+ const projectSchematics = project.extensions.schematics;
305
+ const workspaceSchematics = workspace.extensions.schematics;
306
+ // 1. Check for a project-specific schematic setting.
307
+ let style = projectSchematics?.['@schematics/angular:component']?.['style'];
308
+ if (isStyleLanguage(style)) {
309
+ return style;
310
+ }
311
+ // 2. Check for a workspace-level schematic setting.
312
+ style = workspaceSchematics?.['@schematics/angular:component']?.['style'];
313
+ if (isStyleLanguage(style)) {
314
+ return style;
315
+ }
316
+ const buildTarget = project.targets.get('build');
317
+ if (buildTarget?.options) {
318
+ // 3. Infer from the build target's inlineStyleLanguage option.
319
+ style = buildTarget.options['inlineStyleLanguage'];
320
+ if (isStyleLanguage(style)) {
321
+ return style;
322
+ }
323
+ // 4. Infer from the 'styles' array (explicit).
324
+ const styles = buildTarget.options['styles'];
325
+ if (Array.isArray(styles)) {
326
+ for (const stylePath of styles) {
327
+ const style = getStyleLanguageFromExtension(node_path_1.default.extname(stylePath));
328
+ if (style) {
329
+ return style;
330
+ }
331
+ }
332
+ }
333
+ }
334
+ // 5. Infer from implicit default styles file (future-proofing).
335
+ for (const ext of STYLE_LANGUAGE_SEARCH_ORDER) {
336
+ try {
337
+ await (0, promises_1.stat)(node_path_1.default.join(fullSourceRoot, `styles.${ext}`));
338
+ return ext;
339
+ }
340
+ catch {
341
+ // Silently ignore all errors (e.g., file not found, permissions).
342
+ // If we can't read the file, we can't use it for detection.
343
+ }
344
+ }
345
+ // 6. Fallback to 'css'.
346
+ return 'css';
347
+ }
348
+ /**
349
+ * Loads, parses, and transforms a single angular.json file into the tool's output format.
350
+ * It checks a set of seen paths to avoid processing the same workspace multiple times.
351
+ * @param configFile The path to the angular.json file.
352
+ * @param seenPaths A Set of absolute paths that have already been processed.
353
+ * @returns A promise resolving to the workspace data or a parsing error.
354
+ */
355
+ async function loadAndParseWorkspace(configFile, seenPaths) {
356
+ try {
357
+ const resolvedPath = node_path_1.default.resolve(configFile);
358
+ if (seenPaths.has(resolvedPath)) {
359
+ return { workspace: null, error: null }; // Already processed, skip.
360
+ }
361
+ seenPaths.add(resolvedPath);
362
+ const ws = await config_1.AngularWorkspace.load(configFile);
363
+ const projects = [];
364
+ const workspaceRoot = node_path_1.default.dirname(configFile);
365
+ for (const [name, project] of ws.projects.entries()) {
366
+ const sourceRoot = node_path_1.default.posix.join(project.root, project.sourceRoot ?? 'src');
367
+ const fullSourceRoot = node_path_1.default.join(workspaceRoot, sourceRoot);
368
+ const unitTestFramework = getUnitTestFramework(project.targets.get('test'));
369
+ const styleLanguage = await getProjectStyleLanguage(project, ws, fullSourceRoot);
370
+ projects.push({
371
+ name,
372
+ type: project.extensions['projectType'],
373
+ builder: project.targets.get('build')?.builder,
374
+ root: project.root,
375
+ sourceRoot,
376
+ selectorPrefix: project.extensions['prefix'],
377
+ unitTestFramework,
378
+ styleLanguage,
379
+ });
380
+ }
381
+ return { workspace: { path: configFile, projects }, error: null };
382
+ }
383
+ catch (error) {
384
+ let message;
385
+ if (error instanceof Error) {
386
+ message = error.message;
387
+ }
388
+ else {
389
+ message = 'An unknown error occurred while parsing the file.';
390
+ }
391
+ return { workspace: null, error: { filePath: configFile, message } };
392
+ }
393
+ }
394
+ /**
395
+ * Processes a single `angular.json` file to extract workspace and framework version information.
396
+ * @param configFile The path to the `angular.json` file.
397
+ * @param searchRoot The directory at which to stop the upward search for `package.json`.
398
+ * @param seenPaths A Set of absolute paths that have already been processed to avoid duplicates.
399
+ * @param versionCache A Map to cache framework version lookups for performance.
400
+ * @returns A promise resolving to an object containing the processed data and any errors.
401
+ */
402
+ async function processConfigFile(configFile, searchRoot, seenPaths, versionCache) {
403
+ const { workspace, error } = await loadAndParseWorkspace(configFile, seenPaths);
404
+ if (error) {
405
+ return { parsingError: error };
406
+ }
407
+ if (!workspace) {
408
+ return {}; // Skipped as it was already seen.
409
+ }
410
+ try {
411
+ const workspaceDir = node_path_1.default.dirname(configFile);
412
+ workspace.frameworkVersion = await findAngularCoreVersion(workspaceDir, versionCache, searchRoot);
413
+ return { workspace };
414
+ }
415
+ catch (e) {
416
+ return {
417
+ workspace,
418
+ versioningError: {
419
+ filePath: workspace.path,
420
+ message: e instanceof Error ? e.message : 'An unknown error occurred.',
421
+ },
422
+ };
423
+ }
424
+ }
425
+ async function createListProjectsHandler({ server }) {
50
426
  return async () => {
51
- if (!workspace) {
427
+ const workspaces = [];
428
+ const parsingErrors = [];
429
+ const versioningErrors = [];
430
+ const seenPaths = new Set();
431
+ const versionCache = new Map();
432
+ let searchRoots;
433
+ const clientCapabilities = server.server.getClientCapabilities();
434
+ if (clientCapabilities?.roots) {
435
+ const { roots } = await server.server.listRoots();
436
+ searchRoots = roots?.map((r) => node_path_1.default.normalize((0, node_url_1.fileURLToPath)(r.uri))) ?? [];
437
+ }
438
+ else {
439
+ // Fallback to the current working directory if client does not support roots
440
+ searchRoots = [process.cwd()];
441
+ }
442
+ for (const root of searchRoots) {
443
+ for await (const configFile of findAngularJsonFiles(root)) {
444
+ const { workspace, parsingError, versioningError } = await processConfigFile(configFile, root, seenPaths, versionCache);
445
+ if (workspace) {
446
+ workspaces.push(workspace);
447
+ }
448
+ if (parsingError) {
449
+ parsingErrors.push(parsingError);
450
+ }
451
+ if (versioningError) {
452
+ versioningErrors.push(versioningError);
453
+ }
454
+ }
455
+ }
456
+ if (workspaces.length === 0 && parsingErrors.length === 0) {
52
457
  return {
53
458
  content: [
54
459
  {
@@ -58,30 +463,22 @@ function createListProjectsHandler({ workspace }) {
58
463
  ' could not be located in the current directory or any of its parent directories.',
59
464
  },
60
465
  ],
61
- structuredContent: { projects: [] },
466
+ structuredContent: { workspaces: [] },
62
467
  };
63
468
  }
64
- const projects = [];
65
- // Convert to output format
66
- for (const [name, project] of workspace.projects.entries()) {
67
- projects.push({
68
- name,
69
- type: project.extensions['projectType'],
70
- root: project.root,
71
- sourceRoot: project.sourceRoot ?? node_path_1.default.posix.join(project.root, 'src'),
72
- selectorPrefix: project.extensions['prefix'],
73
- });
469
+ let text = `Found ${workspaces.length} workspace(s).\n${JSON.stringify({ workspaces })}`;
470
+ if (parsingErrors.length > 0) {
471
+ text += `\n\nWarning: The following ${parsingErrors.length} file(s) could not be parsed and were skipped:\n`;
472
+ text += parsingErrors.map((e) => `- ${e.filePath}: ${e.message}`).join('\n');
473
+ }
474
+ if (versioningErrors.length > 0) {
475
+ text += `\n\nWarning: The framework version for the following ${versioningErrors.length} workspace(s) could not be determined:\n`;
476
+ text += versioningErrors.map((e) => `- ${e.filePath}: ${e.message}`).join('\n');
74
477
  }
75
- // The structuredContent field is newer and may not be supported by all hosts.
76
- // A text representation of the content is also provided for compatibility.
77
478
  return {
78
- content: [
79
- {
80
- type: 'text',
81
- text: `Projects in the Angular workspace:\n${JSON.stringify(projects)}`,
82
- },
83
- ],
84
- structuredContent: { projects },
479
+ content: [{ type: 'text', text }],
480
+ structuredContent: { workspaces, parsingErrors, versioningErrors },
85
481
  };
86
482
  };
87
483
  }
484
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["projects.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,+CAA2D;AAC3D,0DAA6B;AAC7B,uCAAyC;AACzC,oDAA4B;AAC5B,8CAAoB;AACpB,sDAA6D;AAC7D,oDAAyD;AACzD,mDAA8D;AAE9D,sEAAsE;AACtE,MAAM,mBAAmB,GAAG,aAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpE,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAE1D,2DAA2D;AAC3D,MAAM,2BAA2B,GAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAElG,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAK,qBAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,SAAiB;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;IAEzE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,wBAAwB,GAAG;IAC/B,UAAU,EAAE,aAAC,CAAC,KAAK,CACjB,aAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QACpF,gBAAgB,EAAE,aAAC;aAChB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2FAA2F,CAC5F;QACH,QAAQ,EAAE,aAAC,CAAC,KAAK,CACf,aAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,aAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,IAAI,EAAE,aAAC;iBACJ,IAAI,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;YAC1E,OAAO,EAAE,aAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yEAAyE,CAAC;YACtF,IAAI,EAAE,aAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,oEAAoE,CAAC;YACjF,UAAU,EAAE,aAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,CACP,mFAAmF,CACpF;YACH,cAAc,EAAE,aAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4CAA4C;gBAC1C,sFAAsF,CACzF;YACH,iBAAiB,EAAE,aAAC;iBACjB,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAC9C,QAAQ,EAAE;iBACV,QAAQ,CACP,iFAAiF;gBAC/E,0EAA0E;gBAC1E,yFAAyF,CAC5F;YACH,aAAa,EAAE,mBAAmB;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D;gBAC3D,8DAA8D,CACjE;SACJ,CAAC,CACH;KACF,CAAC,CACH;IACD,aAAa,EAAE,aAAC;SACb,KAAK,CACJ,aAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QAC/E,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KAChF,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,gBAAgB,EAAE,aAAC;SAChB,KAAK,CACJ,aAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,aAAC;aACR,MAAM,EAAE;aACR,QAAQ,CAAC,uEAAuE,CAAC;QACpF,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;KACnF,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,+EAA+E,CAAC;CAC7F,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAA,2BAAW,EAAC;IAC5C,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;qBAwBM;IACnB,YAAY,EAAE,wBAAwB;IACtC,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,yBAAyB;CACnC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAAC,OAAe;IAClD,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAa,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,eAAI,EAAC,OAAO,CAAC,CAAC;QACtC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjF,OAAO,CAAC,gDAAgD;QAC1D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,MAAM,cAAc,GAAa,EAAE,CAAC;gBACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,qEAAqE;wBACrE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;4BAChE,SAAS;wBACX,CAAC;wBAED,gCAAgC;wBAChC,IAAI,CAAC;4BACH,MAAM,UAAU,GAAG,MAAM,IAAA,eAAI,EAAC,QAAQ,CAAC,CAAC;4BACxC,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gCACnC,SAAS,CAAC,uDAAuD;4BACnE,CAAC;4BACD,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBACjC,CAAC;wBAAC,MAAM,CAAC;4BACP,kDAAkD;4BAClD,SAAS;wBACX,CAAC;wBAED,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACzC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,OAAO,cAAc,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtD,OAAO,EAAE,CAAC,CAAC,qCAAqC;gBAClD,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpC,KAAK,CAAC,CAAC,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,sBAAsB,CACnC,QAAgB,EAChB,KAAsC,EACtC,UAAkB;IAElB,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,OAAO,UAAU,EAAE,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3C,mDAAmD;YACnD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC/B,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,gBAAgB,GACpB,GAAG,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;YAEhF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,gBAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACzB,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,+DAA+D;gBAC/D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QACD,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,+BAA+B;QACxC,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,mDAAmD;IACnD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,UAAkF;IAElF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU,CAAC,OAAO,KAAK,0BAA0B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAmC,CAAC;QAChF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,CAAC,mDAAmD;QACvE,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,CAAC,uDAAuD;QACxE,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;QACvC,IACE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7B,WAAW,KAAK,+CAA+C,EAC/D,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,uBAAuB,CACpC,OAAoE,EACpE,SAA2B,EAC3B,cAAsB;IAEtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,UAEhC,CAAC;IACd,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC,UAEpC,CAAC;IAEd,qDAAqD;IACrD,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,KAAK,GAAG,mBAAmB,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,+DAA+D;QAC/D,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACnD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QACrE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,6BAA6B,CAAC,mBAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBACrE,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,IAAA,eAAI,EAAC,mBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YAEvD,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,4DAA4D;QAC9D,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,qBAAqB,CAClC,UAAkB,EAClB,SAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,2BAA2B;QACtE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE5B,MAAM,EAAE,GAAG,MAAM,yBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;YAC9E,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAC5D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;YAEjF,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAA0C;gBAChF,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO;gBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,UAAU;gBACV,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAW;gBACtD,iBAAiB;gBACjB,aAAa;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,mDAAmD,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,iBAAiB,CAC9B,UAAkB,EAClB,UAAkB,EAClB,SAAsB,EACtB,YAA6C;IAM7C,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,kCAAkC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,SAAS,CAAC,gBAAgB,GAAG,MAAM,sBAAsB,CACvD,YAAY,EACZ,YAAY,EACZ,UAAU,CACX,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,SAAS;YACT,eAAe,EAAE;gBACf,QAAQ,EAAE,SAAS,CAAC,IAAI;gBACxB,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;aACvE;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,EAAE,MAAM,EAAkB;IACjE,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,MAAM,gBAAgB,GAA8D,EAAE,CAAC;QACvF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;QAE3D,IAAI,WAAqB,CAAC;QAC1B,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjE,IAAI,kBAAkB,EAAE,KAAK,EAAE,CAAC;YAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAClD,WAAW,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAI,CAAC,SAAS,CAAC,IAAA,wBAAa,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM,iBAAiB,CAC1E,UAAU,EACV,IAAI,EACJ,SAAS,EACT,YAAY,CACb,CAAC;gBAEF,IAAI,SAAS,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,YAAY,EAAE,CAAC;oBACjB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,eAAe,EAAE,CAAC;oBACpB,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,6BAA6B;4BAC7B,+DAA+D;4BAC/D,kFAAkF;qBACrF;iBACF;gBACD,iBAAiB,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;aACtC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,GAAG,SAAS,UAAU,CAAC,MAAM,mBAAmB,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACzF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,8BAA8B,aAAa,CAAC,MAAM,kDAAkD,CAAC;YAC7G,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,wDAAwD,gBAAgB,CAAC,MAAM,0CAA0C,CAAC;YAClI,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;YAC1C,iBAAiB,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE;SACnE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -10,6 +10,7 @@ import { ZodRawShape } from 'zod';
10
10
  import type { AngularWorkspace } from '../../../utilities/config';
11
11
  type ToolConfig = Parameters<McpServer['registerTool']>[1];
12
12
  export interface McpToolContext {
13
+ server: McpServer;
13
14
  workspace?: AngularWorkspace;
14
15
  logger: {
15
16
  warn(text: string): void;
@@ -31,5 +32,5 @@ export interface McpToolDeclaration<TInput extends ZodRawShape, TOutput extends
31
32
  }
32
33
  export type AnyMcpToolDeclaration = McpToolDeclaration<any, any>;
33
34
  export declare function declareTool<TInput extends ZodRawShape, TOutput extends ZodRawShape>(declaration: McpToolDeclaration<TInput, TOutput>): McpToolDeclaration<TInput, TOutput>;
34
- export declare function registerTools(server: McpServer, context: McpToolContext, declarations: AnyMcpToolDeclaration[]): Promise<void>;
35
+ export declare function registerTools(server: McpServer, context: Omit<McpToolContext, 'server'>, declarations: AnyMcpToolDeclaration[]): Promise<void>;
35
36
  export {};
@@ -14,11 +14,12 @@ function declareTool(declaration) {
14
14
  }
15
15
  async function registerTools(server, context, declarations) {
16
16
  for (const declaration of declarations) {
17
- if (declaration.shouldRegister && !(await declaration.shouldRegister(context))) {
17
+ const toolContext = { ...context, server };
18
+ if (declaration.shouldRegister && !(await declaration.shouldRegister(toolContext))) {
18
19
  continue;
19
20
  }
20
21
  const { name, factory, shouldRegister, isReadOnly, isLocalOnly, ...config } = declaration;
21
- const handler = await factory(context);
22
+ const handler = await factory(toolContext);
22
23
  // Add declarative characteristics to annotations
23
24
  config.annotations ??= {};
24
25
  if (isReadOnly !== undefined) {
@@ -31,3 +32,4 @@ async function registerTools(server, context, declarations) {
31
32
  server.registerTool(name, config, handler);
32
33
  }
33
34
  }
35
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["tool-registry.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAmCH,kCAIC;AAED,sCA2BC;AAjCD,SAAgB,WAAW,CACzB,WAAgD;IAEhD,OAAO,WAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,MAAiB,EACjB,OAAuC,EACvC,YAAqC;IAErC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;QAC3C,IAAI,WAAW,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACnF,SAAS;QACX,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAAC;QAE1F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAE3C,iDAAiD;QACjD,MAAM,CAAC,WAAW,KAAK,EAAE,CAAC;QAC1B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/C,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,wCAAwC;YACxC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -46,6 +46,7 @@ class NewCommandModule extends schematics_command_module_1.SchematicsCommandModu
46
46
  defaults,
47
47
  });
48
48
  workflow.registry.addSmartDefaultProvider('ng-cli-version', () => version_1.VERSION.full);
49
+ workflow.registry.addSmartDefaultProvider('packageManager', () => this.context.packageManager.name);
49
50
  return this.runSchematic({
50
51
  collectionName,
51
52
  schematicName: this.schematicName,
@@ -72,3 +73,4 @@ class NewCommandModule extends schematics_command_module_1.SchematicsCommandModu
72
73
  }
73
74
  }
74
75
  exports.default = NewCommandModule;
76
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":"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"}
@@ -86,3 +86,4 @@ class RunCommandModule extends architect_base_command_module_1.ArchitectBaseComm
86
86
  }
87
87
  }
88
88
  exports.default = RunCommandModule;
89
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":"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"}
@@ -17,3 +17,4 @@ class ServeCommandModule extends architect_command_module_1.ArchitectCommandModu
17
17
  longDescriptionPath;
18
18
  }
19
19
  exports.default = ServeCommandModule;
20
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,6FAAwF;AAExF,sDAAiD;AAEjD,MAAqB,kBACnB,SAAQ,iDAAsB;IAG9B,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,GAAG,iBAAiB,CAAC;IAC5B,OAAO,GAAG,6BAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;IACxC,QAAQ,GAAG,iEAAiE,CAAC;IAC7E,mBAAmB,CAAsB;CAC1C;AATD,qCASC"}
@@ -18,3 +18,4 @@ class TestCommandModule extends architect_command_module_1.ArchitectCommandModul
18
18
  longDescriptionPath = (0, node_path_1.join)(__dirname, 'long-description.md');
19
19
  }
20
20
  exports.default = TestCommandModule;
21
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["cli.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,yCAAiC;AACjC,6FAAwF;AAExF,sDAAiD;AAEjD,MAAqB,iBACnB,SAAQ,iDAAsB;IAG9B,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,GAAG,gBAAgB,CAAC;IAC3B,OAAO,GAAG,6BAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;IACvC,QAAQ,GAAG,+BAA+B,CAAC;IAC3C,mBAAmB,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;CAC9D;AATD,oCASC"}
@@ -920,3 +920,4 @@ function getMigrationTitleAndDescription(migration) {
920
920
  : undefined,
921
921
  };
922
922
  }
923
+ //# sourceMappingURL=cli.js.map