@angular/cli 21.1.0-next.3 → 21.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +1 -1
  2. package/lib/code-examples.db +0 -0
  3. package/package.json +17 -17
  4. package/src/commands/add/cli.js +47 -15
  5. package/src/commands/add/cli.js.map +1 -1
  6. package/src/commands/mcp/devserver.d.ts +0 -1
  7. package/src/commands/mcp/devserver.js +0 -4
  8. package/src/commands/mcp/devserver.js.map +1 -1
  9. package/src/commands/mcp/mcp-server.d.ts +105 -30
  10. package/src/commands/mcp/mcp-server.js +19 -10
  11. package/src/commands/mcp/mcp-server.js.map +1 -1
  12. package/src/commands/mcp/tools/build.js +1 -10
  13. package/src/commands/mcp/tools/build.js.map +1 -1
  14. package/src/commands/mcp/tools/devserver/devserver-start.d.ts +8 -0
  15. package/src/commands/mcp/tools/devserver/devserver-start.js +10 -5
  16. package/src/commands/mcp/tools/devserver/devserver-start.js.map +1 -1
  17. package/src/commands/mcp/tools/devserver/devserver-stop.d.ts +9 -0
  18. package/src/commands/mcp/tools/devserver/devserver-stop.js +23 -6
  19. package/src/commands/mcp/tools/devserver/devserver-stop.js.map +1 -1
  20. package/src/commands/mcp/tools/devserver/devserver-wait-for-build.d.ts +9 -0
  21. package/src/commands/mcp/tools/devserver/devserver-wait-for-build.js +23 -4
  22. package/src/commands/mcp/tools/devserver/devserver-wait-for-build.js.map +1 -1
  23. package/src/commands/mcp/tools/e2e.d.ts +43 -0
  24. package/src/commands/mcp/tools/e2e.js +87 -0
  25. package/src/commands/mcp/tools/e2e.js.map +1 -0
  26. package/src/commands/mcp/tools/modernize.js +1 -5
  27. package/src/commands/mcp/tools/modernize.js.map +1 -1
  28. package/src/commands/mcp/tools/test.d.ts +35 -0
  29. package/src/commands/mcp/tools/test.js +78 -0
  30. package/src/commands/mcp/tools/test.js.map +1 -0
  31. package/src/commands/mcp/utils.d.ts +23 -0
  32. package/src/commands/mcp/utils.js +50 -4
  33. package/src/commands/mcp/utils.js.map +1 -1
  34. package/src/commands/update/cli.js +2 -2
  35. package/src/commands/update/cli.js.map +1 -1
  36. package/src/package-managers/factory.d.ts +1 -0
  37. package/src/package-managers/factory.js +6 -2
  38. package/src/package-managers/factory.js.map +1 -1
  39. package/src/package-managers/host.d.ts +9 -1
  40. package/src/package-managers/host.js +3 -1
  41. package/src/package-managers/host.js.map +1 -1
  42. package/src/package-managers/index.d.ts +1 -0
  43. package/src/package-managers/index.js +3 -1
  44. package/src/package-managers/index.js.map +1 -1
  45. package/src/package-managers/package-manager-descriptor.d.ts +18 -1
  46. package/src/package-managers/package-manager-descriptor.js +11 -3
  47. package/src/package-managers/package-manager-descriptor.js.map +1 -1
  48. package/src/package-managers/package-manager.d.ts +6 -0
  49. package/src/package-managers/package-manager.js +14 -1
  50. package/src/package-managers/package-manager.js.map +1 -1
  51. package/src/package-managers/parsers.js +2 -1
  52. package/src/package-managers/parsers.js.map +1 -1
  53. package/src/utilities/version.js +1 -1
@@ -17,6 +17,15 @@ declare const devserverStopToolOutputSchema: z.ZodObject<{
17
17
  }, z.core.$strip>;
18
18
  export type DevserverStopToolOutput = z.infer<typeof devserverStopToolOutputSchema>;
19
19
  export declare function stopDevserver(input: DevserverStopToolInput, context: McpToolContext): {
20
+ content: {
21
+ type: "text";
22
+ text: string;
23
+ }[];
24
+ structuredContent: {
25
+ message: string[];
26
+ logs: undefined;
27
+ };
28
+ } | {
20
29
  content: {
21
30
  type: "text";
22
31
  text: string;
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.DEVSERVER_STOP_TOOL = void 0;
11
11
  exports.stopDevserver = stopDevserver;
12
12
  const zod_1 = require("zod");
13
- const devserver_1 = require("../../devserver");
14
13
  const utils_1 = require("../../utils");
15
14
  const tool_registry_1 = require("../tool-registry");
16
15
  const devserverStopToolInputSchema = zod_1.z.object({
@@ -24,18 +23,36 @@ const devserverStopToolOutputSchema = zod_1.z.object({
24
23
  logs: zod_1.z.array(zod_1.z.string()).optional().describe('The full logs from the dev server.'),
25
24
  });
26
25
  function stopDevserver(input, context) {
27
- const projectKey = (0, devserver_1.devserverKey)(input.project);
28
- const devServer = context.devservers.get(projectKey);
26
+ if (context.devservers.size === 0) {
27
+ return (0, utils_1.createStructuredContentOutput)({
28
+ message: ['No development servers are currently running.'],
29
+ logs: undefined,
30
+ });
31
+ }
32
+ let projectName = input.project ?? (0, utils_1.getDefaultProjectName)(context);
33
+ if (!projectName) {
34
+ // This should not happen. But if there's just a single running devserver, stop it.
35
+ if (context.devservers.size === 1) {
36
+ projectName = Array.from(context.devservers.keys())[0];
37
+ }
38
+ else {
39
+ return (0, utils_1.createStructuredContentOutput)({
40
+ message: ['Project name not provided, and no default project found.'],
41
+ logs: undefined,
42
+ });
43
+ }
44
+ }
45
+ const devServer = context.devservers.get(projectName);
29
46
  if (!devServer) {
30
47
  return (0, utils_1.createStructuredContentOutput)({
31
- message: `Development server for project '${projectKey}' was not running.`,
48
+ message: `Development server for project '${projectName}' was not running.`,
32
49
  logs: undefined,
33
50
  });
34
51
  }
35
52
  devServer.stop();
36
- context.devservers.delete(projectKey);
53
+ context.devservers.delete(projectName);
37
54
  return (0, utils_1.createStructuredContentOutput)({
38
- message: `Development server for project '${projectKey}' stopped.`,
55
+ message: `Development server for project '${projectName}' stopped.`,
39
56
  logs: devServer.getServerLogs(),
40
57
  });
41
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"devserver-stop.js","sourceRoot":"","sources":["devserver-stop.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAyBH,sCAkBC;AAzCD,6BAAwB;AACxB,+CAA+C;AAC/C,uCAA4D;AAC5D,oDAA6F;AAE7F,MAAM,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yGAAyG,CAC1G;CACJ,CAAC,CAAC;AAIH,MAAM,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACjF,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACpF,CAAC,CAAC;AAIH,SAAgB,aAAa,CAAC,KAA6B,EAAE,OAAuB;IAClF,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAA,qCAA6B,EAAC;YACnC,OAAO,EAAE,mCAAmC,UAAU,oBAAoB;YAC1E,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtC,OAAO,IAAA,qCAA6B,EAAC;QACnC,OAAO,EAAE,mCAAmC,UAAU,YAAY;QAClE,IAAI,EAAE,SAAS,CAAC,aAAa,EAAE;KAChC,CAAC,CAAC;AACL,CAAC;AAEY,QAAA,mBAAmB,GAG5B,IAAA,2BAAW,EAAC;IACd,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE;;;;;;;;;;;;CAYd;IACC,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,4BAA4B,CAAC,KAAK;IAC/C,YAAY,EAAE,6BAA6B,CAAC,KAAK;IACjD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"devserver-stop.js","sourceRoot":"","sources":["devserver-stop.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAwBH,sCAsCC;AA5DD,6BAAwB;AACxB,uCAAmF;AACnF,oDAA6F;AAE7F,MAAM,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yGAAyG,CAC1G;CACJ,CAAC,CAAC;AAIH,MAAM,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACjF,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACpF,CAAC,CAAC;AAIH,SAAgB,aAAa,CAAC,KAA6B,EAAE,OAAuB;IAClF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAA,qCAA6B,EAAC;YACnC,OAAO,EAAE,CAAC,+CAA+C,CAAC;YAC1D,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IAElE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,mFAAmF;QACnF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,IAAA,qCAA6B,EAAC;gBACnC,OAAO,EAAE,CAAC,0DAA0D,CAAC;gBACrE,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAA,qCAA6B,EAAC;YACnC,OAAO,EAAE,mCAAmC,WAAW,oBAAoB;YAC3E,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,OAAO,IAAA,qCAA6B,EAAC;QACnC,OAAO,EAAE,mCAAmC,WAAW,YAAY;QACnE,IAAI,EAAE,SAAS,CAAC,aAAa,EAAE;KAChC,CAAC,CAAC;AACL,CAAC;AAEY,QAAA,mBAAmB,GAG5B,IAAA,2BAAW,EAAC;IACd,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE;;;;;;;;;;;;CAYd;IACC,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,4BAA4B,CAAC,KAAK;IAC/C,YAAY,EAAE,6BAA6B,CAAC,KAAK;IACjD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
@@ -28,6 +28,15 @@ declare const devserverWaitForBuildToolOutputSchema: z.ZodObject<{
28
28
  }, z.core.$strip>;
29
29
  export type DevserverWaitForBuildToolOutput = z.infer<typeof devserverWaitForBuildToolOutputSchema>;
30
30
  export declare function waitForDevserverBuild(input: DevserverWaitForBuildToolInput, context: McpToolContext): Promise<{
31
+ content: {
32
+ type: "text";
33
+ text: string;
34
+ }[];
35
+ structuredContent: {
36
+ status: string;
37
+ logs: undefined;
38
+ };
39
+ } | {
31
40
  content: {
32
41
  type: "text";
33
42
  text: string;
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.DEVSERVER_WAIT_FOR_BUILD_TOOL = exports.WATCH_DELAY = void 0;
11
11
  exports.waitForDevserverBuild = waitForDevserverBuild;
12
12
  const zod_1 = require("zod");
13
- const devserver_1 = require("../../devserver");
14
13
  const utils_1 = require("../../utils");
15
14
  const tool_registry_1 = require("../tool-registry");
16
15
  /**
@@ -44,19 +43,39 @@ function wait(ms) {
44
43
  return new Promise((resolve) => setTimeout(resolve, ms));
45
44
  }
46
45
  async function waitForDevserverBuild(input, context) {
47
- const projectKey = (0, devserver_1.devserverKey)(input.project);
48
- const devServer = context.devservers.get(projectKey);
49
- const deadline = Date.now() + input.timeout;
46
+ if (context.devservers.size === 0) {
47
+ return (0, utils_1.createStructuredContentOutput)({
48
+ status: 'no_devserver_found',
49
+ logs: undefined,
50
+ });
51
+ }
52
+ let projectName = input.project ?? (0, utils_1.getDefaultProjectName)(context);
53
+ if (!projectName) {
54
+ // This should not happen. But if there's just a single running devserver, wait for it.
55
+ if (context.devservers.size === 1) {
56
+ projectName = Array.from(context.devservers.keys())[0];
57
+ }
58
+ else {
59
+ return (0, utils_1.createStructuredContentOutput)({
60
+ status: 'no_devserver_found',
61
+ logs: undefined,
62
+ });
63
+ }
64
+ }
65
+ const devServer = context.devservers.get(projectName);
50
66
  if (!devServer) {
51
67
  return (0, utils_1.createStructuredContentOutput)({
52
68
  status: 'no_devserver_found',
69
+ logs: undefined,
53
70
  });
54
71
  }
72
+ const deadline = Date.now() + input.timeout;
55
73
  await wait(exports.WATCH_DELAY);
56
74
  while (devServer.isBuilding()) {
57
75
  if (Date.now() > deadline) {
58
76
  return (0, utils_1.createStructuredContentOutput)({
59
77
  status: 'timeout',
78
+ logs: undefined,
60
79
  });
61
80
  }
62
81
  await wait(exports.WATCH_DELAY);
@@ -1 +1 @@
1
- {"version":3,"file":"devserver-wait-for-build.js","sourceRoot":"","sources":["devserver-wait-for-build.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAoDH,sDA2BC;AA7ED,6BAAwB;AACxB,+CAA+C;AAC/C,uCAA4D;AAC5D,oDAA6F;AAE7F;;GAEG;AACU,QAAA,WAAW,GAAG,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,kBAAkB;AAEnD,MAAM,oCAAoC,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yGAAyG,CAC1G;IACH,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,OAAO,CAAC,eAAe,CAAC;SACxB,QAAQ,CACP,iGAAiG,mBAAW,GAAG,CAChH;CACJ,CAAC,CAAC;AAIH,MAAM,qCAAqC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,MAAM,EAAE,OAAC;SACN,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;SACxE,QAAQ,CACP,iGAAiG,CAClG;IACH,IAAI,EAAE,OAAC;SACJ,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC,CAAC;AAIH,SAAS,IAAI,CAAC,EAAU;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,KAAqC,EACrC,OAAuB;IAEvB,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAE5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAA,qCAA6B,EAAkC;YACpE,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,CAAC,mBAAW,CAAC,CAAC;IACxB,OAAO,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1B,OAAO,IAAA,qCAA6B,EAAkC;gBACpE,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,mBAAW,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAA,qCAA6B,EAAkC;QACpE,GAAG,SAAS,CAAC,kBAAkB,EAAE;KAClC,CAAC,CAAC;AACL,CAAC;AAEY,QAAA,6BAA6B,GAGtC,IAAA,2BAAW,EAAC;IACd,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;CAoBd;IACC,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,oCAAoC,CAAC,KAAK;IACvD,YAAY,EAAE,qCAAqC,CAAC,KAAK;IACzD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,OAAO,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"devserver-wait-for-build.js","sourceRoot":"","sources":["devserver-wait-for-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.dev/license
7
+ */
8
+ import { z } from 'zod';
9
+ import { type Host } from '../host';
10
+ import { type McpToolContext, type McpToolDeclaration } from './tool-registry';
11
+ declare const e2eToolInputSchema: z.ZodObject<{
12
+ project: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ export type E2eToolInput = z.infer<typeof e2eToolInputSchema>;
15
+ declare const e2eToolOutputSchema: z.ZodObject<{
16
+ status: z.ZodEnum<{
17
+ success: "success";
18
+ failure: "failure";
19
+ }>;
20
+ logs: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ }, z.core.$strip>;
22
+ export type E2eToolOutput = z.infer<typeof e2eToolOutputSchema>;
23
+ export declare function runE2e(input: E2eToolInput, host: Host, context: McpToolContext): Promise<{
24
+ content: {
25
+ type: "text";
26
+ text: string;
27
+ }[];
28
+ structuredContent: {
29
+ status: string;
30
+ logs: string[];
31
+ };
32
+ } | {
33
+ content: {
34
+ type: "text";
35
+ text: string;
36
+ }[];
37
+ structuredContent: {
38
+ status: "success" | "failure";
39
+ logs?: string[] | undefined;
40
+ };
41
+ }>;
42
+ export declare const E2E_TOOL: McpToolDeclaration<typeof e2eToolInputSchema.shape, typeof e2eToolOutputSchema.shape>;
43
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.E2E_TOOL = void 0;
11
+ exports.runE2e = runE2e;
12
+ const zod_1 = require("zod");
13
+ const host_1 = require("../host");
14
+ const utils_1 = require("../utils");
15
+ const tool_registry_1 = require("./tool-registry");
16
+ const e2eStatusSchema = zod_1.z.enum(['success', 'failure']);
17
+ const e2eToolInputSchema = zod_1.z.object({
18
+ project: zod_1.z
19
+ .string()
20
+ .optional()
21
+ .describe('Which project to test in a monorepo context. If not provided, tests the default project.'),
22
+ });
23
+ const e2eToolOutputSchema = zod_1.z.object({
24
+ status: e2eStatusSchema.describe('E2E execution status.'),
25
+ logs: zod_1.z.array(zod_1.z.string()).optional().describe('Output logs from `ng e2e`.'),
26
+ });
27
+ async function runE2e(input, host, context) {
28
+ const projectName = input.project ?? (0, utils_1.getDefaultProjectName)(context);
29
+ if (context.workspace && projectName) {
30
+ // Verify that if a project can be found, it has an e2e testing already set up.
31
+ const targetProject = (0, utils_1.getProject)(context, projectName);
32
+ if (targetProject) {
33
+ if (!targetProject.targets.has('e2e')) {
34
+ return (0, utils_1.createStructuredContentOutput)({
35
+ status: 'failure',
36
+ logs: [
37
+ `No e2e target is defined for project '${projectName}'. Please set up e2e testing` +
38
+ ' first by calling `ng e2e` in an interactive console.' +
39
+ ' See https://angular.dev/tools/cli/end-to-end.',
40
+ ],
41
+ });
42
+ }
43
+ }
44
+ }
45
+ // Build "ng"'s command line.
46
+ const args = ['e2e'];
47
+ if (input.project) {
48
+ args.push(input.project);
49
+ }
50
+ let status = 'success';
51
+ let logs = [];
52
+ try {
53
+ logs = (await host.runCommand('ng', args)).logs;
54
+ }
55
+ catch (e) {
56
+ status = 'failure';
57
+ logs = (0, utils_1.getCommandErrorLogs)(e);
58
+ }
59
+ const structuredContent = {
60
+ status,
61
+ logs,
62
+ };
63
+ return (0, utils_1.createStructuredContentOutput)(structuredContent);
64
+ }
65
+ exports.E2E_TOOL = (0, tool_registry_1.declareTool)({
66
+ name: 'e2e',
67
+ title: 'E2E Tool',
68
+ description: `
69
+ <Purpose>
70
+ Perform an end-to-end test with ng e2e.
71
+ </Purpose>
72
+ <Use Cases>
73
+ * When the user requests running end-to-end tests for the project.
74
+ * When verifying changes that cross unit boundaries, such as changes to both client and server, changes to shared data types, etc.
75
+ </Use Cases>
76
+ <Operational Notes>
77
+ * This tool uses "ng e2e".
78
+ * Important: this relies on e2e tests being already configured for this project. It will error out if no "e2e" target is defined.
79
+ </Operational Notes>
80
+ `,
81
+ isReadOnly: false,
82
+ isLocalOnly: true,
83
+ inputSchema: e2eToolInputSchema.shape,
84
+ outputSchema: e2eToolOutputSchema.shape,
85
+ factory: (context) => (input) => runE2e(input, host_1.LocalWorkspaceHost, context),
86
+ });
87
+ //# sourceMappingURL=e2e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.js","sourceRoot":"","sources":["e2e.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAiCH,wBA0CC;AAzED,6BAAwB;AACxB,kCAAsE;AACtE,oCAKkB;AAClB,mDAA4F;AAE5F,MAAM,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAGvD,MAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F,CAC3F;CACJ,CAAC,CAAC;AAIH,MAAM,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACzD,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAC5E,CAAC,CAAC;AAII,KAAK,UAAU,MAAM,CAAC,KAAmB,EAAE,IAAU,EAAE,OAAuB;IACnF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IAEpE,IAAI,OAAO,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;QACrC,+EAA+E;QAC/E,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,OAAO,IAAA,qCAA6B,EAAC;oBACnC,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE;wBACJ,yCAAyC,WAAW,8BAA8B;4BAChF,uDAAuD;4BACvD,gDAAgD;qBACnD;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,GAAc,SAAS,CAAC;IAClC,IAAI,IAAI,GAAa,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,SAAS,CAAC;QACnB,IAAI,GAAG,IAAA,2BAAmB,EAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,iBAAiB,GAAkB;QACvC,MAAM;QACN,IAAI;KACL,CAAC;IAEF,OAAO,IAAA,qCAA6B,EAAC,iBAAiB,CAAC,CAAC;AAC1D,CAAC;AAEY,QAAA,QAAQ,GAGjB,IAAA,2BAAW,EAAC;IACd,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE;;;;;;;;;;;;CAYd;IACC,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,kBAAkB,CAAC,KAAK;IACrC,YAAY,EAAE,mBAAmB,CAAC,KAAK;IACvC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,yBAAkB,EAAE,OAAO,CAAC;CAC5E,CAAC,CAAC"}
@@ -11,7 +11,6 @@ exports.MODERNIZE_TOOL = void 0;
11
11
  exports.runModernization = runModernization;
12
12
  const path_1 = require("path");
13
13
  const zod_1 = require("zod");
14
- const host_1 = require("../host");
15
14
  const utils_1 = require("../utils");
16
15
  const tool_registry_1 = require("./tool-registry");
17
16
  const TRANSFORMATIONS = [
@@ -127,10 +126,7 @@ async function runModernization(input, host) {
127
126
  instructions.push(`Migration ${transformation.name} on directory ${relativePath} completed successfully.`);
128
127
  }
129
128
  catch (e) {
130
- if (e instanceof host_1.CommandError) {
131
- logs = e.logs;
132
- }
133
- logs.push(e.message);
129
+ logs = (0, utils_1.getCommandErrorLogs)(e);
134
130
  instructions.push(`Migration ${transformation.name} on directory ${relativePath} failed.`);
135
131
  }
136
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"modernize.js","sourceRoot":"","sources":["modernize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modernize.js","sourceRoot":"","sources":["modernize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.dev/license
7
+ */
8
+ import { z } from 'zod';
9
+ import { type Host } from '../host';
10
+ import { type McpToolDeclaration } from './tool-registry';
11
+ declare const testToolInputSchema: z.ZodObject<{
12
+ project: z.ZodOptional<z.ZodString>;
13
+ filter: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$strip>;
15
+ export type TestToolInput = z.infer<typeof testToolInputSchema>;
16
+ declare const testToolOutputSchema: z.ZodObject<{
17
+ status: z.ZodEnum<{
18
+ success: "success";
19
+ failure: "failure";
20
+ }>;
21
+ logs: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ }, z.core.$strip>;
23
+ export type TestToolOutput = z.infer<typeof testToolOutputSchema>;
24
+ export declare function runTest(input: TestToolInput, host: Host): Promise<{
25
+ content: {
26
+ type: "text";
27
+ text: string;
28
+ }[];
29
+ structuredContent: {
30
+ status: "success" | "failure";
31
+ logs?: string[] | undefined;
32
+ };
33
+ }>;
34
+ export declare const TEST_TOOL: McpToolDeclaration<typeof testToolInputSchema.shape, typeof testToolOutputSchema.shape>;
35
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TEST_TOOL = void 0;
11
+ exports.runTest = runTest;
12
+ const zod_1 = require("zod");
13
+ const host_1 = require("../host");
14
+ const utils_1 = require("../utils");
15
+ const tool_registry_1 = require("./tool-registry");
16
+ const testStatusSchema = zod_1.z.enum(['success', 'failure']);
17
+ const testToolInputSchema = zod_1.z.object({
18
+ project: zod_1.z
19
+ .string()
20
+ .optional()
21
+ .describe('Which project to test in a monorepo context. If not provided, tests all projects.'),
22
+ filter: zod_1.z.string().optional().describe('Filter the executed tests by spec name.'),
23
+ });
24
+ const testToolOutputSchema = zod_1.z.object({
25
+ status: testStatusSchema.describe('Test execution status.'),
26
+ logs: zod_1.z.array(zod_1.z.string()).optional().describe('Output logs from `ng test`.'),
27
+ });
28
+ async function runTest(input, host) {
29
+ // Build "ng"'s command line.
30
+ const args = ['test'];
31
+ if (input.project) {
32
+ args.push(input.project);
33
+ }
34
+ // This is ran by the agent so we want a non-watched, headless test.
35
+ args.push('--browsers', 'ChromeHeadless');
36
+ args.push('--watch', 'false');
37
+ if (input.filter) {
38
+ args.push('--filter', input.filter);
39
+ }
40
+ let status = 'success';
41
+ let logs = [];
42
+ try {
43
+ logs = (await host.runCommand('ng', args)).logs;
44
+ }
45
+ catch (e) {
46
+ status = 'failure';
47
+ logs = (0, utils_1.getCommandErrorLogs)(e);
48
+ }
49
+ const structuredContent = {
50
+ status,
51
+ logs,
52
+ };
53
+ return (0, utils_1.createStructuredContentOutput)(structuredContent);
54
+ }
55
+ exports.TEST_TOOL = (0, tool_registry_1.declareTool)({
56
+ name: 'test',
57
+ title: 'Test Tool',
58
+ description: `
59
+ <Purpose>
60
+ Perform a one-off, non-watched unit test execution with ng test.
61
+ </Purpose>
62
+ <Use Cases>
63
+ * Running unit tests for the project.
64
+ * Verifying code changes with tests.
65
+ </Use Cases>
66
+ <Operational Notes>
67
+ * This tool uses "ng test".
68
+ * It supports filtering by spec name if the underlying builder supports it (e.g., 'unit-test' builder).
69
+ * This runs a headless Chrome as a browser, so requires Chrome to be installed.
70
+ </Operational Notes>
71
+ `,
72
+ isReadOnly: false,
73
+ isLocalOnly: true,
74
+ inputSchema: testToolInputSchema.shape,
75
+ outputSchema: testToolOutputSchema.shape,
76
+ factory: () => (input) => runTest(input, host_1.LocalWorkspaceHost),
77
+ });
78
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA2BH,0BA+BC;AAxDD,6BAAwB;AACxB,kCAAsE;AACtE,oCAA8E;AAC9E,mDAAuE;AAEvE,MAAM,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAGxD,MAAM,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mFAAmF,CAAC;IAChG,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAClF,CAAC,CAAC;AAIH,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACpC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC3D,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CAC7E,CAAC,CAAC;AAII,KAAK,UAAU,OAAO,CAAC,KAAoB,EAAE,IAAU;IAC5D,6BAA6B;IAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE9B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,GAAe,SAAS,CAAC;IACnC,IAAI,IAAI,GAAa,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,SAAS,CAAC;QACnB,IAAI,GAAG,IAAA,2BAAmB,EAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,iBAAiB,GAAmB;QACxC,MAAM;QACN,IAAI;KACL,CAAC;IAEF,OAAO,IAAA,qCAA6B,EAAC,iBAAiB,CAAC,CAAC;AAC1D,CAAC;AAEY,QAAA,SAAS,GAGlB,IAAA,2BAAW,EAAC;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE;;;;;;;;;;;;;CAad;IACC,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,mBAAmB,CAAC,KAAK;IACtC,YAAY,EAAE,oBAAoB,CAAC,KAAK;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,yBAAkB,CAAC;CAC7D,CAAC,CAAC"}
@@ -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
+ * @fileoverview
10
+ * Utility functions shared across MCP tools.
11
+ */
12
+ import { workspaces } from '@angular-devkit/core';
13
+ import { McpToolContext } from './tools/tool-registry';
8
14
  /**
9
15
  * Returns simple structured content output from an MCP tool.
10
16
  *
@@ -31,3 +37,20 @@ export declare function createStructuredContentOutput<OutputType>(structuredCont
31
37
  * - The root of the filesystem is reached (returns null)
32
38
  */
33
39
  export declare function findAngularJsonDir(startDir: string, host?: import("./host").Host): string | null;
40
+ /**
41
+ * Searches for a project in the current workspace, by name.
42
+ */
43
+ export declare function getProject(context: McpToolContext, name: string): workspaces.ProjectDefinition | undefined;
44
+ /**
45
+ * Returns the name of the default project in the current workspace, or undefined if none exists.
46
+ *
47
+ * If no default project is defined but there's only a single project in the workspace, its name will
48
+ * be returned.
49
+ */
50
+ export declare function getDefaultProjectName(context: McpToolContext): string | undefined;
51
+ /**
52
+ * Get the logs of a failing command.
53
+ *
54
+ * This call has fallbacks in case the exception was thrown from the command-calling code itself.
55
+ */
56
+ export declare function getCommandErrorLogs(e: unknown): string[];
@@ -9,10 +9,9 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.createStructuredContentOutput = createStructuredContentOutput;
11
11
  exports.findAngularJsonDir = findAngularJsonDir;
12
- /**
13
- * @fileoverview
14
- * Utility functions shared across MCP tools.
15
- */
12
+ exports.getProject = getProject;
13
+ exports.getDefaultProjectName = getDefaultProjectName;
14
+ exports.getCommandErrorLogs = getCommandErrorLogs;
16
15
  const node_path_1 = require("node:path");
17
16
  const host_1 = require("./host");
18
17
  /**
@@ -52,4 +51,51 @@ function findAngularJsonDir(startDir, host = host_1.LocalWorkspaceHost) {
52
51
  currentDir = parentDir;
53
52
  }
54
53
  }
54
+ /**
55
+ * Searches for a project in the current workspace, by name.
56
+ */
57
+ function getProject(context, name) {
58
+ const projects = context.workspace?.projects;
59
+ if (!projects) {
60
+ return undefined;
61
+ }
62
+ return projects.get(name);
63
+ }
64
+ /**
65
+ * Returns the name of the default project in the current workspace, or undefined if none exists.
66
+ *
67
+ * If no default project is defined but there's only a single project in the workspace, its name will
68
+ * be returned.
69
+ */
70
+ function getDefaultProjectName(context) {
71
+ const projects = context.workspace?.projects;
72
+ if (!projects) {
73
+ return undefined;
74
+ }
75
+ const defaultProjectName = context.workspace?.extensions['defaultProject'];
76
+ if (defaultProjectName) {
77
+ return defaultProjectName;
78
+ }
79
+ // No default project defined? This might still be salvageable if only a single project exists.
80
+ if (projects.size === 1) {
81
+ return Array.from(projects.keys())[0];
82
+ }
83
+ return undefined;
84
+ }
85
+ /**
86
+ * Get the logs of a failing command.
87
+ *
88
+ * This call has fallbacks in case the exception was thrown from the command-calling code itself.
89
+ */
90
+ function getCommandErrorLogs(e) {
91
+ if (e instanceof host_1.CommandError) {
92
+ return [...e.logs, e.message];
93
+ }
94
+ else if (e instanceof Error) {
95
+ return [e.message];
96
+ }
97
+ else {
98
+ return [String(e)];
99
+ }
100
+ }
55
101
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAeH,sEAKC;AAeD,gDAYC;AA7CD;;;GAGG;AAEH,yCAA0C;AAC1C,iCAA4C;AAE5C;;;;GAIG;AACH,SAAgB,6BAA6B,CAAa,iBAA6B;IACrF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAI,GAAG,yBAAkB;IAC5E,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAiBH,sEAKC;AAeD,gDAYC;AAKD,gCAUC;AAQD,sDAkBC;AAOD,kDAQC;AAjGD,yCAA0C;AAC1C,iCAA0D;AAG1D;;;;GAIG;AACH,SAAgB,6BAA6B,CAAa,iBAA6B;IACrF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAI,GAAG,yBAAkB;IAC5E,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,OAAuB,EACvB,IAAY;IAEZ,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,OAAuB;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;IAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,gBAAgB,CAAuB,CAAC;IACjG,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,+FAA+F;IAC/F,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,CAAU;IAC5C,IAAI,CAAC,YAAY,mBAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -389,7 +389,7 @@ class UpdateCommandModule extends command_module_1.CommandModule {
389
389
  });
390
390
  if (success) {
391
391
  const { root: commandRoot } = this.context;
392
- const force = await (0, cli_version_1.shouldForcePackageManager)(packageManager, logger, options.verbose);
392
+ const ignorePeerDependencies = await (0, cli_version_1.shouldForcePackageManager)(packageManager, logger, options.verbose);
393
393
  const tasks = new listr2_1.Listr([
394
394
  {
395
395
  title: 'Cleaning node modules directory',
@@ -414,7 +414,7 @@ class UpdateCommandModule extends command_module_1.CommandModule {
414
414
  async task() {
415
415
  try {
416
416
  await packageManager.install({
417
- force,
417
+ ignorePeerDependencies,
418
418
  });
419
419
  }
420
420
  catch (e) {