igniteui-cli 15.0.1 → 15.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 (57) hide show
  1. package/lib/PromptSession.d.ts +3 -13
  2. package/lib/PromptSession.js +11 -95
  3. package/lib/cli.js +1 -9
  4. package/lib/commands/add.js +6 -6
  5. package/lib/commands/ai-config.d.ts +11 -3
  6. package/lib/commands/ai-config.js +105 -19
  7. package/lib/commands/build.js +2 -2
  8. package/lib/commands/generate.js +4 -4
  9. package/lib/commands/list.js +7 -6
  10. package/lib/commands/mcp.js +0 -1
  11. package/lib/commands/new.js +23 -10
  12. package/lib/commands/start.js +0 -1
  13. package/lib/commands/types.d.ts +0 -2
  14. package/lib/commands/upgrade.js +2 -2
  15. package/package.json +4 -4
  16. package/templates/react/igr-ts/grid/index.js +2 -2
  17. package/templates/react/igr-ts/projects/ai-config/index.d.ts +22 -0
  18. package/templates/react/igr-ts/projects/ai-config/index.js +74 -0
  19. package/templates/webcomponents/igc-ts/projects/ai-config/index.d.ts +22 -0
  20. package/templates/webcomponents/igc-ts/projects/ai-config/index.js +62 -0
  21. package/templates/react/igr-ts/projects/_base/files/__dot__claude/CLAUDE.md +0 -3
  22. package/templates/react/igr-ts/projects/_base/files/__dot__github/copilot-instructions.md +0 -3
  23. package/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/CLAUDE.md +0 -3
  24. package/templates/webcomponents/igc-ts/projects/_base/files/__dot__github/copilot-instructions.md +0 -3
  25. /package/templates/react/igr-ts/projects/{_base → ai-config}/files/AGENTS.md +0 -0
  26. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/README.md +0 -0
  27. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/SKILL.md +0 -0
  28. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/CHARTS-GRIDS.md +0 -0
  29. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/COMPONENT-CATALOGUE.md +0 -0
  30. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/EVENT-HANDLING.md +0 -0
  31. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/INSTALLATION.md +0 -0
  32. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/JSX-PATTERNS.md +0 -0
  33. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/MCP-SERVER.md +0 -0
  34. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/REFS-FORMS.md +0 -0
  35. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/TROUBLESHOOTING.md +0 -0
  36. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/SKILL.md +0 -0
  37. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/reference/CSS-THEMING.md +0 -0
  38. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/reference/MCP-SERVER.md +0 -0
  39. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/reference/TROUBLESHOOTING.md +0 -0
  40. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-generate-from-image-design/SKILL.md +0 -0
  41. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-generate-from-image-design/reference/component-mapping.md +0 -0
  42. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-generate-from-image-design/reference/gotchas.md +0 -0
  43. /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-optimize-bundle-size/SKILL.md +0 -0
  44. /package/templates/webcomponents/igc-ts/projects/{_base → ai-config}/files/AGENTS.md +0 -0
  45. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/README.md +0 -0
  46. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-choose-components/SKILL.md +0 -0
  47. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-choose-components/reference/mcp-setup.md +0 -0
  48. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-customize-component-theme/SKILL.md +0 -0
  49. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-generate-from-image-design/SKILL.md +0 -0
  50. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-generate-from-image-design/references/component-mapping.md +0 -0
  51. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +0 -0
  52. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/SKILL.md +0 -0
  53. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/angular.md +0 -0
  54. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/react.md +0 -0
  55. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +0 -0
  56. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/vue.md +0 -0
  57. /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-optimize-bundle-size/SKILL.md +0 -0
@@ -1,19 +1,9 @@
1
- import { BasePromptSession, PromptTaskContext, Task } from "@igniteui/cli-core";
2
- import { TemplateManager } from "./TemplateManager";
1
+ import { BasePromptSession, Framework, ProjectLibrary, PromptTaskContext, Task } from "@igniteui/cli-core";
3
2
  export declare class PromptSession extends BasePromptSession {
4
- constructor(templateManager: TemplateManager);
5
- static chooseTerm(): any;
6
- /**
7
- * Start questions session for project creation
8
- */
9
- start(): Promise<void>;
3
+ static chooseTerm(): Promise<string>;
4
+ protected getProjectLibrary(framework: Framework): Promise<ProjectLibrary>;
10
5
  protected completeAndRun(port?: number): Promise<void>;
11
6
  protected upgradePackages(): Promise<void>;
12
7
  protected configureAI(): Promise<void>;
13
- /**
14
- * Get user name and set template's extra configurations if any
15
- * @param projectLibrary to add component to
16
- * @param component to get template for
17
- */
18
8
  protected templateSelectedTask(type?: "component" | "view"): Task<PromptTaskContext>;
19
9
  }
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -37,89 +14,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
14
  Object.defineProperty(exports, "__esModule", { value: true });
38
15
  exports.PromptSession = void 0;
39
16
  const cli_core_1 = require("@igniteui/cli-core");
40
- const path = __importStar(require("path"));
41
17
  const add_1 = __importDefault(require("./commands/add"));
42
18
  const ai_config_1 = require("./commands/ai-config");
43
19
  const start_1 = __importDefault(require("./commands/start"));
44
20
  const upgrade_1 = __importDefault(require("./commands/upgrade"));
45
21
  class PromptSession extends cli_core_1.BasePromptSession {
46
- constructor(templateManager) {
47
- super(templateManager);
48
- }
49
22
  static chooseTerm() {
50
23
  return __awaiter(this, void 0, void 0, function* () {
51
24
  const answer = yield cli_core_1.InquirerWrapper.input({
52
- default: null,
53
25
  message: "Enter a search term",
54
26
  });
55
27
  if (answer) {
56
28
  return answer;
57
29
  }
58
30
  else {
59
- const retProm = yield this.chooseTerm();
60
- return retProm;
31
+ return this.chooseTerm();
61
32
  }
62
33
  });
63
34
  }
64
- /**
65
- * Start questions session for project creation
66
- */
67
- start() {
35
+ getProjectLibrary(framework) {
36
+ const _super = Object.create(null, {
37
+ getProjectLibrary: { get: () => super.getProjectLibrary }
38
+ });
68
39
  return __awaiter(this, void 0, void 0, function* () {
69
- cli_core_1.GoogleAnalytics.post({
70
- t: "screenview",
71
- cd: "Wizard"
72
- });
73
- let projLibrary;
74
- let theme;
75
- add_1.default.templateManager = this.templateManager;
76
- this.config = cli_core_1.ProjectConfig.getConfig();
77
- const defaultProjName = "IG Project";
78
- if (cli_core_1.ProjectConfig.hasLocalConfig() && !this.config.project.isShowcase) {
79
- projLibrary = this.templateManager.getProjectLibrary(this.config.project.framework, this.config.project.projectType);
80
- theme = this.config.project.theme;
81
- }
82
- else {
83
- cli_core_1.Util.log(""); /* new line */
84
- const projectName = yield this.getUserInput({
85
- type: "input",
86
- name: "projectName",
87
- message: "Enter a name for your project:",
88
- default: cli_core_1.Util.getAvailableName(defaultProjName, true),
89
- choices: null,
90
- validate: this.nameIsValid
91
- });
92
- const frameRes = yield this.getUserInput({
93
- type: "list",
94
- name: "framework",
95
- message: "Choose framework:",
96
- choices: this.getFrameworkNames(),
97
- default: "Angular"
98
- });
99
- const framework = this.templateManager.getFrameworkByName(frameRes);
100
- // app name validation???
101
- projLibrary = yield this.getProjectLibrary(framework);
102
- if (frameRes === "Angular" && projLibrary.projectType === "igx-ts") {
103
- cli_core_1.Util.log("Psst! Did you know you can also use our schematics package with Angular CLI to create and modify your projects?", "yellow");
104
- cli_core_1.Util.log("Read more at: https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/cli-overview", "yellow");
105
- }
106
- const projTemplate = yield this.getProjectTemplate(projLibrary);
107
- // project options:
108
- theme = yield this.getTheme(projLibrary);
109
- cli_core_1.Util.log(" Generating project structure.");
110
- const config = projTemplate.generateConfig(projectName, theme);
111
- for (const templatePath of projTemplate.templatePaths) {
112
- yield cli_core_1.Util.processTemplates(templatePath, path.join(process.cwd(), projectName), config, projTemplate.delimiters, false);
113
- }
114
- cli_core_1.Util.log(cli_core_1.Util.greenCheck() + " Project structure generated.");
115
- if (!this.config.skipGit) {
116
- cli_core_1.Util.gitInit(process.cwd(), projectName);
117
- }
118
- // move cwd to project folder
119
- process.chdir(projectName);
40
+ const result = yield _super.getProjectLibrary.call(this, framework);
41
+ if (framework.name === "Angular" && result.projectType === "igx-ts") {
42
+ cli_core_1.Util.log("Psst! Did you know you can also use our schematics package with Angular CLI to create and modify your projects?", "yellow");
43
+ cli_core_1.Util.log("Read more at: https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/cli-overview", "yellow");
120
44
  }
121
- yield this.chooseActionLoop(projLibrary);
122
- //TODO: restore cwd?
45
+ return result;
123
46
  });
124
47
  }
125
48
  completeAndRun(port) {
@@ -130,21 +53,14 @@ class PromptSession extends cli_core_1.BasePromptSession {
130
53
  }
131
54
  upgradePackages() {
132
55
  return __awaiter(this, void 0, void 0, function* () {
133
- upgrade_1.default.templateManager = this.templateManager;
134
56
  yield upgrade_1.default.upgrade({ skipInstall: true, _: ["upgrade"], $0: "upgrade" });
135
57
  });
136
58
  }
137
59
  configureAI() {
138
60
  return __awaiter(this, void 0, void 0, function* () {
139
- // skip adding skills since those are baked into the project template atm:
140
- (0, ai_config_1.configure)(false);
61
+ yield (0, ai_config_1.configure)();
141
62
  });
142
63
  }
143
- /**
144
- * Get user name and set template's extra configurations if any
145
- * @param projectLibrary to add component to
146
- * @param component to get template for
147
- */
148
64
  templateSelectedTask(type = "component") {
149
65
  return (_runner, context) => __awaiter(this, void 0, void 0, function* () {
150
66
  const name = yield this.chooseTemplateName(context.template, type);
package/lib/cli.js CHANGED
@@ -29,16 +29,8 @@ function run() {
29
29
  return __awaiter(this, arguments, void 0, function* (args = null) {
30
30
  cli_core_1.App.initialize();
31
31
  const templateManager = new TemplateManager_1.TemplateManager();
32
- // TODO: Refactor all code to use TemplateManager from the App container:
33
32
  cli_core_1.App.container.set(cli_core_1.TEMPLATE_MANAGER, templateManager);
34
33
  commands_1.newCommand.addChoices(templateManager.getFrameworkIds());
35
- commands_1.newCommand.templateManager = templateManager;
36
- commands_1.add.templateManager = templateManager;
37
- commands_1.build.templateManager = templateManager;
38
- commands_1.start.templateManager = templateManager;
39
- commands_1.generate.templateManager = templateManager;
40
- commands_1.list.templateManager = templateManager;
41
- commands_1.upgrade.templateManager = templateManager;
42
34
  const registeredCommands = [
43
35
  commands_1.newCommand, commands_1.add, commands_1.build, commands_1.start, commands_1.generate, commands_1.config, commands_1.doc, commands_1.test, commands_1.list, commands_1.upgrade, commands_1.mcp, commands_1.aiConfig
44
36
  ];
@@ -69,7 +61,7 @@ function run() {
69
61
  else {
70
62
  cli_core_1.Util.log("Starting Step by step mode.", "green");
71
63
  cli_core_1.Util.log("For available commands, stop this execution and use --help.", "green");
72
- const prompts = new PromptSession_1.PromptSession(templateManager);
64
+ const prompts = new PromptSession_1.PromptSession();
73
65
  prompts.start();
74
66
  }
75
67
  })
@@ -15,7 +15,6 @@ let yargsContext;
15
15
  const command = {
16
16
  command: "add [template] [name]",
17
17
  describe: "Adds a component or view template to the current project",
18
- templateManager: null,
19
18
  builder: (yargs) => {
20
19
  yargsContext = yargs;
21
20
  return yargs
@@ -79,14 +78,15 @@ const command = {
79
78
  cli_core_1.Util.error("Showcases projects don't support the add command", "red");
80
79
  return;
81
80
  }
82
- const framework = command.templateManager.getFrameworkById(config.project.framework);
81
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
82
+ const framework = templateManager.getFrameworkById(config.project.framework);
83
83
  if (!framework) {
84
84
  cli_core_1.Util.error("Framework not supported", "red");
85
85
  return;
86
86
  }
87
- const frameworkLibrary = command.templateManager.getProjectLibrary(config.project.framework, config.project.projectType);
87
+ const frameworkLibrary = templateManager.getProjectLibrary(config.project.framework, config.project.projectType);
88
88
  if (!argv.template && !argv.name) {
89
- const prompts = new PromptSession_1.PromptSession(command.templateManager);
89
+ const prompts = new PromptSession_1.PromptSession();
90
90
  yield prompts.chooseActionLoop(frameworkLibrary);
91
91
  return;
92
92
  }
@@ -117,7 +117,7 @@ const command = {
117
117
  skipRoute: argv.skipRoute
118
118
  });
119
119
  yield cli_core_1.PackageManager.flushQueue(true);
120
- yield cli_core_1.PackageManager.ensureIgniteUISource(config.packagesInstalled, command.templateManager);
120
+ yield cli_core_1.PackageManager.ensureIgniteUISource(config.packagesInstalled, templateManager);
121
121
  }
122
122
  });
123
123
  },
@@ -158,7 +158,7 @@ const command = {
158
158
  }
159
159
  if (!fail && templatePaths.length) {
160
160
  template.registerInProject(process.cwd(), fileName, options || {});
161
- command.templateManager.updateProjectConfiguration(template);
161
+ cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER).updateProjectConfiguration(template);
162
162
  template.packages.forEach(x => cli_core_1.PackageManager.queuePackage(x));
163
163
  cli_core_1.Util.log(`${cli_core_1.Util.greenCheck()} View '${name}' added.`);
164
164
  return true;
@@ -1,6 +1,14 @@
1
+ import { AIAgentTarget, AiCodingAssistant } from "@igniteui/cli-core";
1
2
  import { CommandModule } from "yargs";
2
- export declare function configureMCP(): void;
3
- export declare function configureSkills(): void;
4
- export declare function configure(skills?: boolean): void;
3
+ export declare function configureMCP(assistants: AiCodingAssistant[]): void;
4
+ export declare function configureSkills(agents: AIAgentTarget[]): void;
5
+ type AIAgentOption = AIAgentTarget | "none";
6
+ type AIAssistantOption = AiCodingAssistant | "none";
7
+ export declare function configure(agents?: AIAgentOption[], assistants?: AIAssistantOption[], skills?: boolean): Promise<{
8
+ agents: AIAgentTarget[];
9
+ assistants: AiCodingAssistant[];
10
+ }>;
11
+ export declare function promptForAgents(): Promise<AIAgentOption[]>;
12
+ export declare function promptForAssistant(): Promise<AIAssistantOption[]>;
5
13
  declare const command: CommandModule;
6
14
  export default command;
@@ -12,17 +12,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.configureMCP = configureMCP;
13
13
  exports.configureSkills = configureSkills;
14
14
  exports.configure = configure;
15
+ exports.promptForAgents = promptForAgents;
16
+ exports.promptForAssistant = promptForAssistant;
15
17
  const cli_core_1 = require("@igniteui/cli-core");
16
- function configureMCP() {
17
- const modified = (0, cli_core_1.addMcpServers)(cli_core_1.VS_CODE_MCP_PATH);
18
- if (!modified) {
19
- cli_core_1.Util.log(` Ignite UI MCP servers already configured in ${cli_core_1.VS_CODE_MCP_PATH}`);
20
- return;
18
+ function configureMCP(assistants) {
19
+ for (const assistant of assistants) {
20
+ const { mcpFilePath } = cli_core_1.AI_ASSISTANT_MCP_CONFIGS[assistant];
21
+ const modified = (0, cli_core_1.addMcpServers)(assistant);
22
+ if (!modified) {
23
+ cli_core_1.Util.log(` Ignite UI MCP servers already configured in ${mcpFilePath}`);
24
+ }
25
+ else {
26
+ cli_core_1.Util.log(cli_core_1.Util.greenCheck() + ` MCP servers configured in ${mcpFilePath}`);
27
+ }
21
28
  }
22
- cli_core_1.Util.log(cli_core_1.Util.greenCheck() + ` MCP servers configured in ${cli_core_1.VS_CODE_MCP_PATH}`);
23
29
  }
24
- function configureSkills() {
25
- const result = (0, cli_core_1.copyAISkillsToProject)();
30
+ function configureSkills(agents) {
31
+ const result = (0, cli_core_1.copyAISkillsToProject)(agents);
26
32
  if (result.found === 0) {
27
33
  cli_core_1.Util.warn("No AI skill files found. Make sure packages are installed (npm install) " +
28
34
  "and your Ignite UI packages are up-to-date.", "yellow");
@@ -38,28 +44,108 @@ function configureSkills() {
38
44
  cli_core_1.Util.log(cli_core_1.Util.greenCheck() + ` ${written} AI skill file(s) created or updated.`);
39
45
  }
40
46
  }
41
- function configure(skills = true) {
42
- configureMCP();
43
- if (skills) {
44
- configureSkills();
45
- }
47
+ function configure() {
48
+ return __awaiter(this, arguments, void 0, function* (agents = [], assistants = [], skills = true) {
49
+ if (!agents.length) {
50
+ agents = yield promptForAgents();
51
+ }
52
+ if (!assistants.length) {
53
+ assistants = yield promptForAssistant();
54
+ }
55
+ const resolvedAgents = agents.includes("none") ? [] : agents;
56
+ const resolvedAssistants = assistants.includes("none") ? [] : assistants;
57
+ if (!resolvedAssistants.length) {
58
+ cli_core_1.Util.log("No MCP configuration selected. Skipping.");
59
+ }
60
+ configureMCP(resolvedAssistants);
61
+ if (!resolvedAgents.length) {
62
+ cli_core_1.Util.log("No AI configuration selected. Skipping.");
63
+ }
64
+ else {
65
+ if (skills) {
66
+ configureSkills(resolvedAgents);
67
+ }
68
+ (0, cli_core_1.copyAgentInstructionFiles)(resolvedAgents);
69
+ }
70
+ return { agents: resolvedAgents, assistants: resolvedAssistants };
71
+ });
72
+ }
73
+ const AI_AGENT_CHECKBOX_DEFAULTS = ["generic", "claude"];
74
+ const AI_ASSISTANT_CHECKBOX_DEFAULTS = ["generic"];
75
+ const AI_AGENT_CHECKBOX_CHOICES = [
76
+ { value: "none", name: "None (skip skills and instructions)" },
77
+ ...cli_core_1.AI_AGENT_CHOICES.map(agent => ({
78
+ value: agent,
79
+ name: cli_core_1.AI_AGENT_LABELS[agent],
80
+ checked: AI_AGENT_CHECKBOX_DEFAULTS.includes(agent)
81
+ }))
82
+ ];
83
+ const AI_ASSISTANT_CHECKBOX_CHOICES = [
84
+ { value: "none", name: "None (skip MCP configuration)" },
85
+ ...cli_core_1.AI_ASSISTANT_CHOICES.map(a => ({
86
+ value: a,
87
+ name: cli_core_1.AI_ASSISTANT_LABELS[a],
88
+ checked: AI_ASSISTANT_CHECKBOX_DEFAULTS.includes(a)
89
+ }))
90
+ ];
91
+ function promptForAgents() {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ let selected = AI_AGENT_CHECKBOX_DEFAULTS;
94
+ if (cli_core_1.Util.canPrompt()) {
95
+ const result = yield cli_core_1.InquirerWrapper.checkbox({
96
+ message: "Which AI agents do you want to generate skills and instructions for?",
97
+ required: true,
98
+ choices: AI_AGENT_CHECKBOX_CHOICES
99
+ });
100
+ selected = result;
101
+ }
102
+ return selected;
103
+ });
104
+ }
105
+ function promptForAssistant() {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ let selected = AI_ASSISTANT_CHECKBOX_DEFAULTS;
108
+ if (cli_core_1.Util.canPrompt()) {
109
+ const result = yield cli_core_1.InquirerWrapper.checkbox({
110
+ message: "Which coding assistants should MCP servers be configured for?",
111
+ required: true,
112
+ choices: AI_ASSISTANT_CHECKBOX_CHOICES
113
+ });
114
+ selected = result;
115
+ }
116
+ return selected;
117
+ });
46
118
  }
47
119
  const command = {
48
120
  command: "ai-config",
49
- describe: "Configures Ignite UI AI tooling (MCP servers and AI coding skills)",
50
- builder: (yargs) => yargs,
51
- handler(_argv) {
121
+ describe: "Configures Ignite UI AI tooling (MCP servers, AI coding skills and instructions)",
122
+ builder: (yargs) => yargs
123
+ .usage("")
124
+ .option("agents", {
125
+ describe: "AI agents/tools to generate configuration files for",
126
+ choices: [...cli_core_1.AI_AGENT_CHOICES, "none"],
127
+ type: "array"
128
+ })
129
+ .option("assistants", {
130
+ describe: "Coding assistant(s) to configure MCP servers for",
131
+ choices: [...cli_core_1.AI_ASSISTANT_CHOICES, "none"],
132
+ type: "array"
133
+ }),
134
+ handler(argv) {
52
135
  return __awaiter(this, void 0, void 0, function* () {
136
+ var _a, _b;
137
+ const agents = ((_a = argv.agents) !== null && _a !== void 0 ? _a : []);
138
+ const assistants = ((_b = argv.assistants) !== null && _b !== void 0 ? _b : []);
53
139
  cli_core_1.GoogleAnalytics.post({
54
140
  t: "screenview",
55
- cd: "MCP"
141
+ cd: "Ai Config"
56
142
  });
143
+ const result = yield configure(agents, assistants);
57
144
  cli_core_1.GoogleAnalytics.post({
58
145
  t: "event",
59
146
  ec: "$ig ai-config",
60
- ea: "client: vscode"
147
+ ea: `agent: ${result.agents.join(", ") || "none"}; assistant: ${result.assistants.join(", ") || "none"}`
61
148
  });
62
- configure();
63
149
  });
64
150
  }
65
151
  };
@@ -39,7 +39,6 @@ const command = {
39
39
  command: "build",
40
40
  describe: "Builds the project",
41
41
  builder: (yargs) => yargs,
42
- templateManager: null,
43
42
  handler(argv) {
44
43
  return __awaiter(this, void 0, void 0, function* () {
45
44
  cli_core_1.GoogleAnalytics.post({
@@ -52,7 +51,8 @@ const command = {
52
51
  build() {
53
52
  return __awaiter(this, void 0, void 0, function* () {
54
53
  cli_core_1.Util.log("Build started.");
55
- yield cli_core_1.PackageManager.ensureIgniteUISource(true, command.templateManager);
54
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
55
+ yield cli_core_1.PackageManager.ensureIgniteUISource(true, templateManager);
56
56
  if (!cli_core_1.ProjectConfig.hasLocalConfig()) {
57
57
  cli_core_1.Util.error("Build command is supported only on existing project created with igniteui-cli", "red");
58
58
  return;
@@ -57,18 +57,19 @@ function handler(argv) {
57
57
  cli_core_1.Util.error(`Folder '${argv.name}' already exists!`, "red");
58
58
  return;
59
59
  }
60
- if (command.templateManager.getFrameworkById(argv.framework) === undefined) {
60
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
61
+ if (templateManager.getFrameworkById(argv.framework) === undefined) {
61
62
  return cli_core_1.Util.error("Framework not supported", "red");
62
63
  }
63
64
  let projectLib;
64
65
  if (argv.type) {
65
- projectLib = command.templateManager.getProjectLibrary(argv.framework, argv.type);
66
+ projectLib = templateManager.getProjectLibrary(argv.framework, argv.type);
66
67
  if (!projectLib) {
67
68
  return cli_core_1.Util.error(`Project type '${argv.type}' not found in framework '${argv.framework}'`);
68
69
  }
69
70
  }
70
71
  else {
71
- projectLib = command.templateManager.getProjectLibrary(argv.framework);
72
+ projectLib = templateManager.getProjectLibrary(argv.framework);
72
73
  argv.type = projectLib.projectType;
73
74
  }
74
75
  const res = yield cli_core_1.Util.processTemplates(projectLib.generateTemplateFolderPath, outDir, {
@@ -101,7 +102,6 @@ const command = {
101
102
  aliases: ["g"],
102
103
  command: "generate",
103
104
  describe: "Generates custom templates (see subcommands)",
104
- templateManager: null,
105
105
  builder: yargs => {
106
106
  yargs
107
107
  .command({
@@ -21,7 +21,6 @@ const command = {
21
21
  .example("$0 list", "Show all frameworks and their project templates")
22
22
  .example("$0 list -f angular", "List component templates for Angular");
23
23
  },
24
- templateManager: null,
25
24
  handler(argv) {
26
25
  cli_core_1.GoogleAnalytics.post({
27
26
  t: "screenview",
@@ -43,19 +42,20 @@ const command = {
43
42
  }
44
43
  const templatesByGroup = [];
45
44
  const controlGroups = [];
46
- const framework = command.templateManager.getFrameworkById(argv.framework);
45
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
46
+ const framework = templateManager.getFrameworkById(argv.framework);
47
47
  if (!framework) {
48
48
  return cli_core_1.Util.error("Wrong framework provided", "red");
49
49
  }
50
50
  let projectLib;
51
51
  if (argv.type) {
52
- projectLib = command.templateManager.getProjectLibrary(argv.framework, argv.type);
52
+ projectLib = templateManager.getProjectLibrary(argv.framework, argv.type);
53
53
  if (!projectLib) {
54
54
  return cli_core_1.Util.error(`Project type '${argv.type}' not found in framework '${argv.framework}'`, "red");
55
55
  }
56
56
  }
57
57
  else {
58
- projectLib = command.templateManager.getProjectLibrary(argv.framework);
58
+ projectLib = templateManager.getProjectLibrary(argv.framework);
59
59
  }
60
60
  let maxIdLength = 0;
61
61
  projectLib.templates
@@ -102,9 +102,10 @@ const command = {
102
102
  }
103
103
  };
104
104
  function listAllFrameworks() {
105
- const frameworkIds = command.templateManager.getFrameworkIds();
105
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
106
+ const frameworkIds = templateManager.getFrameworkIds();
106
107
  const frameworks = frameworkIds
107
- .map(id => command.templateManager.getFrameworkById(id))
108
+ .map(id => templateManager.getFrameworkById(id))
108
109
  .filter(f => !!f);
109
110
  cli_core_1.GoogleAnalytics.post({
110
111
  t: "event",
@@ -38,7 +38,6 @@ const child_process_1 = require("child_process");
38
38
  const command = {
39
39
  command: "mcp",
40
40
  describe: "Starts the Ignite UI MCP server for AI assistant integration",
41
- templateManager: null,
42
41
  builder: (yargs) => {
43
42
  return yargs
44
43
  .option("remote", {
@@ -35,7 +35,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
35
35
  const cli_core_1 = require("@igniteui/cli-core");
36
36
  const path = __importStar(require("path"));
37
37
  const PromptSession_1 = require("./../PromptSession");
38
- const TemplateManager_1 = require("../TemplateManager");
38
+ const ai_config_1 = require("./ai-config");
39
39
  // explicit typing because `type: "string"` will be inferred as `type: string` which yargs will not like
40
40
  const _framework = {
41
41
  alias: "f",
@@ -82,13 +82,22 @@ const command = {
82
82
  .option("template", {
83
83
  describe: "Project template",
84
84
  type: "string"
85
+ })
86
+ .option("agents", {
87
+ describe: "AI agents/tools to generate configuration files for",
88
+ choices: [...cli_core_1.AI_AGENT_CHOICES, "none"],
89
+ type: "array"
90
+ })
91
+ .option("assistants", {
92
+ describe: "Coding assistant(s) to configure MCP servers for",
93
+ choices: [...cli_core_1.AI_ASSISTANT_CHOICES, "none"],
94
+ type: "array"
85
95
  })
86
96
  .example("$0 new my-app", "Scaffold a new project interactively")
87
97
  .example("$0 new my-app -f angular -t igx-ts", "Scaffold an Ignite UI for Angular project");
88
98
  },
89
99
  handler(argv) {
90
100
  return __awaiter(this, void 0, void 0, function* () {
91
- var _a, _b, _c, _d;
92
101
  cli_core_1.GoogleAnalytics.post({
93
102
  t: "screenview",
94
103
  cd: "New"
@@ -96,8 +105,9 @@ const command = {
96
105
  if (cli_core_1.ProjectConfig.hasLocalConfig()) {
97
106
  return cli_core_1.Util.error("There is already an existing project.", "red");
98
107
  }
108
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
99
109
  if (!argv.name) {
100
- const prompts = new PromptSession_1.PromptSession(command.templateManager || new TemplateManager_1.TemplateManager());
110
+ const prompts = new PromptSession_1.PromptSession();
101
111
  yield prompts.start();
102
112
  return;
103
113
  }
@@ -113,20 +123,20 @@ const command = {
113
123
  cli_core_1.Util.error(`Folder "${argv.name}" already exists!`, "red");
114
124
  return;
115
125
  }
116
- if (((_a = command.templateManager) === null || _a === void 0 ? void 0 : _a.getFrameworkById(argv.framework)) === undefined) {
126
+ if ((templateManager === null || templateManager === void 0 ? void 0 : templateManager.getFrameworkById(argv.framework)) === undefined) {
117
127
  return cli_core_1.Util.error("Framework not supported", "red");
118
128
  }
119
129
  let projectLib;
120
130
  if (argv.type) {
121
- projectLib = (_b = command.templateManager) === null || _b === void 0 ? void 0 : _b.getProjectLibrary(argv.framework, argv.type);
131
+ projectLib = templateManager === null || templateManager === void 0 ? void 0 : templateManager.getProjectLibrary(argv.framework, argv.type);
122
132
  if (!projectLib) {
123
133
  return cli_core_1.Util.error(`Project type "${argv.type}" not found in framework '${argv.framework}'`);
124
134
  }
125
135
  }
126
136
  else {
127
- projectLib = (_c = command.templateManager) === null || _c === void 0 ? void 0 : _c.getProjectLibrary(argv.framework);
137
+ projectLib = templateManager === null || templateManager === void 0 ? void 0 : templateManager.getProjectLibrary(argv.framework);
128
138
  }
129
- if (((_d = command.templateManager) === null || _d === void 0 ? void 0 : _d.getFrameworkById(argv.framework).id) === "angular" && projectLib.projectType === "igx-ts") {
139
+ if ((templateManager === null || templateManager === void 0 ? void 0 : templateManager.getFrameworkById(argv.framework).id) === "angular" && projectLib.projectType === "igx-ts") {
130
140
  cli_core_1.Util.warn("Psst! Did you know you can use our schematics package with Angular CLI to create and modify your projects?", "yellow");
131
141
  cli_core_1.Util.warn("Read more at: https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/cli-overview", "yellow");
132
142
  }
@@ -163,15 +173,18 @@ const command = {
163
173
  for (const templatePath of projTemplate.templatePaths) {
164
174
  yield cli_core_1.Util.processTemplates(templatePath, path.join(process.cwd(), argv.name), config, projTemplate.delimiters, false);
165
175
  }
176
+ process.chdir(argv.name);
177
+ yield (0, ai_config_1.configure)(argv.agents, argv.assistants);
178
+ process.chdir("..");
166
179
  cli_core_1.Util.log(cli_core_1.Util.greenCheck() + " Project Created");
167
- if (!argv["skip-git"] && !cli_core_1.ProjectConfig.getConfig().skipGit) {
168
- cli_core_1.Util.gitInit(process.cwd(), argv.name);
169
- }
170
180
  if (!argv.skipInstall) {
171
181
  process.chdir(argv.name);
172
182
  yield cli_core_1.PackageManager.installPackages();
173
183
  process.chdir("..");
174
184
  }
185
+ if (!argv["skip-git"] && !cli_core_1.ProjectConfig.getConfig().skipGit) {
186
+ cli_core_1.Util.gitInit(process.cwd(), argv.name);
187
+ }
175
188
  cli_core_1.Util.log("");
176
189
  cli_core_1.Util.log("Next Steps:");
177
190
  cli_core_1.Util.log(` cd ${argv.name}`);
@@ -54,7 +54,6 @@ const execSyncNpmStart = (port, options) => {
54
54
  const command = {
55
55
  command: "start",
56
56
  describe: "Starts the project",
57
- templateManager: null,
58
57
  builder: (yargs) => {
59
58
  return yargs
60
59
  .option("port", {
@@ -1,5 +1,4 @@
1
1
  import { ArgumentsCamelCase, CommandModule } from "yargs";
2
- import { TemplateManager } from "../TemplateManager";
3
2
  import { AddTemplateArgs, Template } from "@igniteui/cli-core";
4
3
  export interface PositionalArgs {
5
4
  /** The framework that the project will target. */
@@ -26,7 +25,6 @@ export interface PositionalArgs {
26
25
  e2e?: boolean;
27
26
  }
28
27
  export interface CommandType extends CommandModule<{}, any> {
29
- templateManager?: TemplateManager;
30
28
  /** Handler function that will be called by yargs after the command line has been parsed. */
31
29
  handler(/** do not use `this` in handler */ this: void, argv: ArgumentsCamelCase<PositionalArgs>): any;
32
30
  }
@@ -14,7 +14,6 @@ const command = {
14
14
  command: "upgrade-packages",
15
15
  aliases: ["upgrade"],
16
16
  describe: "Upgrades Ignite UI packages",
17
- templateManager: null,
18
17
  builder: (yargs) => {
19
18
  return yargs
20
19
  .option("skip-install", {
@@ -46,7 +45,8 @@ const command = {
46
45
  case "react":
47
46
  case "webcomponents":
48
47
  if (projectType === "igx-ts" || projectType === "igr-ts" || projectType === "igc-ts") {
49
- const projectLibrary = command.templateManager.getProjectLibrary(framework, projectType);
48
+ const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
49
+ const projectLibrary = templateManager.getProjectLibrary(framework, projectType);
50
50
  let project;
51
51
  if (!config.project.projectTemplate || !projectLibrary.hasProject(config.project.projectTemplate)) {
52
52
  // in case project template is missing from the config we provide backward.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-cli",
3
- "version": "15.0.1",
3
+ "version": "15.1.0",
4
4
  "description": "CLI tool for creating Ignite UI projects",
5
5
  "keywords": [
6
6
  "CLI",
@@ -66,9 +66,9 @@
66
66
  "all": true
67
67
  },
68
68
  "dependencies": {
69
- "@igniteui/angular-templates": "~21.2.1501",
70
- "@igniteui/cli-core": "~15.0.1",
71
- "@igniteui/mcp-server": "~15.0.1",
69
+ "@igniteui/angular-templates": "~21.2.1510",
70
+ "@igniteui/cli-core": "~15.1.0",
71
+ "@igniteui/mcp-server": "~15.1.0",
72
72
  "@inquirer/prompts": "^7.9.0",
73
73
  "chalk": "^5.3.0",
74
74
  "glob": "^11.0.0",
@@ -7,8 +7,8 @@ class IgrTsDataGridComponent extends cli_core_1.BaseComponent {
7
7
  */
8
8
  constructor() {
9
9
  super(__dirname);
10
- this.name = "Data Grid";
11
- this.group = "Grids";
10
+ this.name = "Grid";
11
+ this.group = "Grids & Lists";
12
12
  this.description = "pick from grids: basic, sorting, templating.";
13
13
  }
14
14
  }
@@ -0,0 +1,22 @@
1
+ import { ControlExtraConfiguration, ProjectTemplate } from "@igniteui/cli-core";
2
+ export declare class IgrTsAiConfigPartial implements ProjectTemplate {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ framework: string;
7
+ projectType: string;
8
+ dependencies: string[];
9
+ hasExtraConfiguration: boolean;
10
+ isHidden: boolean;
11
+ delimiters: import("@igniteui/cli-core").TemplateDelimiters;
12
+ get templatePaths(): string[];
13
+ generateConfig(_name: string, _theme: string, ..._options: any[]): {
14
+ [key: string]: any;
15
+ };
16
+ installModules(): void;
17
+ upgradeIgniteUIPackages(_projectPath: string, _packagePath: string): Promise<boolean>;
18
+ getExtraConfiguration(): ControlExtraConfiguration[];
19
+ setExtraConfiguration(_extraConfigKeys: {}): void;
20
+ }
21
+ declare const _default: IgrTsAiConfigPartial;
22
+ export default _default;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.IgrTsAiConfigPartial = void 0;
36
+ const cli_core_1 = require("@igniteui/cli-core");
37
+ const path = __importStar(require("path"));
38
+ // currently reusing hidden project impl as components/views pipeline go through registerInProject
39
+ // ideally would define a separate type/category for those partial files
40
+ class IgrTsAiConfigPartial {
41
+ constructor() {
42
+ this.id = "ai-config";
43
+ this.name = "ai-config";
44
+ this.description = "Ignite UI CLI AI config for React partial project files";
45
+ this.framework = "react";
46
+ this.projectType = "tsx";
47
+ this.dependencies = [];
48
+ this.hasExtraConfiguration = false;
49
+ this.isHidden = true;
50
+ this.delimiters = cli_core_1.defaultDelimiters;
51
+ }
52
+ get templatePaths() {
53
+ return [path.join(__dirname, "files")];
54
+ }
55
+ generateConfig(_name, _theme, ..._options) {
56
+ return { /* partials not using Util.processTemplates atm */};
57
+ }
58
+ installModules() {
59
+ throw new Error("Method not implemented.");
60
+ }
61
+ upgradeIgniteUIPackages(_projectPath, _packagePath) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ throw new Error("Method not implemented.");
64
+ });
65
+ }
66
+ getExtraConfiguration() {
67
+ throw new Error("Method not implemented.");
68
+ }
69
+ setExtraConfiguration(_extraConfigKeys) {
70
+ throw new Error("Method not implemented.");
71
+ }
72
+ }
73
+ exports.IgrTsAiConfigPartial = IgrTsAiConfigPartial;
74
+ exports.default = new IgrTsAiConfigPartial();
@@ -0,0 +1,22 @@
1
+ import { ControlExtraConfiguration, ProjectTemplate } from "@igniteui/cli-core";
2
+ export declare class IgcTsAiConfigPartial implements ProjectTemplate {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ framework: string;
7
+ projectType: string;
8
+ dependencies: string[];
9
+ hasExtraConfiguration: boolean;
10
+ isHidden: boolean;
11
+ delimiters: import("@igniteui/cli-core").TemplateDelimiters;
12
+ get templatePaths(): string[];
13
+ installModules(): void;
14
+ upgradeIgniteUIPackages(_projectPath: string, _packagePath: string): Promise<boolean>;
15
+ generateConfig(_name: string, _theme: string, ..._options: any[]): {
16
+ [key: string]: any;
17
+ };
18
+ getExtraConfiguration(): ControlExtraConfiguration[];
19
+ setExtraConfiguration(_extraConfigKeys: {}): void;
20
+ }
21
+ declare const _default: IgcTsAiConfigPartial;
22
+ export default _default;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.IgcTsAiConfigPartial = void 0;
27
+ const cli_core_1 = require("@igniteui/cli-core");
28
+ const path = __importStar(require("path"));
29
+ // currently reusing hidden project impl as components/views pipeline go through registerInProject
30
+ // ideally would define a separate type/category for those partial files
31
+ class IgcTsAiConfigPartial {
32
+ constructor() {
33
+ this.id = "ai-config";
34
+ this.name = "ai-config";
35
+ this.description = "Ignite UI CLI AI config for Web Components partial project files";
36
+ this.framework = "webcomponents";
37
+ this.projectType = "igc-ts";
38
+ this.hasExtraConfiguration = false;
39
+ this.isHidden = true;
40
+ this.delimiters = cli_core_1.defaultDelimiters;
41
+ }
42
+ get templatePaths() {
43
+ return [path.join(__dirname, "files")];
44
+ }
45
+ installModules() {
46
+ throw new Error("Method not implemented.");
47
+ }
48
+ upgradeIgniteUIPackages(_projectPath, _packagePath) {
49
+ throw new Error("Method not implemented.");
50
+ }
51
+ generateConfig(_name, _theme, ..._options) {
52
+ throw new Error("Method not implemented.");
53
+ }
54
+ getExtraConfiguration() {
55
+ throw new Error("Method not implemented.");
56
+ }
57
+ setExtraConfiguration(_extraConfigKeys) {
58
+ throw new Error("Method not implemented.");
59
+ }
60
+ }
61
+ exports.IgcTsAiConfigPartial = IgcTsAiConfigPartial;
62
+ exports.default = new IgcTsAiConfigPartial();
@@ -1,3 +0,0 @@
1
- Strictly follow the rules in ../AGENTS.md
2
-
3
- The canonical AI agent instructions are in [AGENTS.md](../AGENTS.md) in the root directory.
@@ -1,3 +0,0 @@
1
- Strictly follow the rules in ../AGENTS.md
2
-
3
- The canonical AI agent instructions are in [AGENTS.md](../AGENTS.md) in the root directory.
@@ -1,3 +0,0 @@
1
- Strictly follow the rules in ../AGENTS.md
2
-
3
- The canonical AI agent instructions are in [AGENTS.md](../AGENTS.md) in the root directory.
@@ -1,3 +0,0 @@
1
- Strictly follow the rules in ../AGENTS.md
2
-
3
- The canonical AI agent instructions are in [AGENTS.md](../AGENTS.md) in the root directory.