@agility/create-next-app 1.0.0-beta.2

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 (213) hide show
  1. package/.claude/settings.json +7 -0
  2. package/.claude/settings.local.json +24 -0
  3. package/FEATURE_ROADMAP.md +343 -0
  4. package/README.md +205 -0
  5. package/TESTING.md +131 -0
  6. package/bin/create-agility-app.js +48 -0
  7. package/dist/agility/api-keys/generateApiKeys.d.ts +9 -0
  8. package/dist/agility/api-keys/generateApiKeys.d.ts.map +1 -0
  9. package/dist/agility/api-keys/generateApiKeys.js +99 -0
  10. package/dist/agility/api-keys/generateApiKeys.js.map +1 -0
  11. package/dist/agility/api-keys/getApiKeys.d.ts +9 -0
  12. package/dist/agility/api-keys/getApiKeys.d.ts.map +1 -0
  13. package/dist/agility/api-keys/getApiKeys.js +14 -0
  14. package/dist/agility/api-keys/getApiKeys.js.map +1 -0
  15. package/dist/agility/index.d.ts +3 -0
  16. package/dist/agility/index.d.ts.map +1 -0
  17. package/dist/agility/index.js +8 -0
  18. package/dist/agility/index.js.map +1 -0
  19. package/dist/agility/instance/createNewInstance.d.ts +8 -0
  20. package/dist/agility/instance/createNewInstance.d.ts.map +1 -0
  21. package/dist/agility/instance/createNewInstance.js +65 -0
  22. package/dist/agility/instance/createNewInstance.js.map +1 -0
  23. package/dist/agility/instance/getAvailableInstances.d.ts +8 -0
  24. package/dist/agility/instance/getAvailableInstances.d.ts.map +1 -0
  25. package/dist/agility/instance/getAvailableInstances.js +43 -0
  26. package/dist/agility/instance/getAvailableInstances.js.map +1 -0
  27. package/dist/agility/instance/manageInstance.d.ts +9 -0
  28. package/dist/agility/instance/manageInstance.d.ts.map +1 -0
  29. package/dist/agility/instance/manageInstance.js +82 -0
  30. package/dist/agility/instance/manageInstance.js.map +1 -0
  31. package/dist/agility/utils/getMgmtAPIUrl.d.ts +20 -0
  32. package/dist/agility/utils/getMgmtAPIUrl.d.ts.map +1 -0
  33. package/dist/agility/utils/getMgmtAPIUrl.js +61 -0
  34. package/dist/agility/utils/getMgmtAPIUrl.js.map +1 -0
  35. package/dist/auth/api-key/authenticateWithApiKey.d.ts +6 -0
  36. package/dist/auth/api-key/authenticateWithApiKey.d.ts.map +1 -0
  37. package/dist/auth/api-key/authenticateWithApiKey.js +28 -0
  38. package/dist/auth/api-key/authenticateWithApiKey.js.map +1 -0
  39. package/dist/auth/index.d.ts +3 -0
  40. package/dist/auth/index.d.ts.map +1 -0
  41. package/dist/auth/index.js +8 -0
  42. package/dist/auth/index.js.map +1 -0
  43. package/dist/auth/oauth/authenticate.d.ts +6 -0
  44. package/dist/auth/oauth/authenticate.d.ts.map +1 -0
  45. package/dist/auth/oauth/authenticate.js +162 -0
  46. package/dist/auth/oauth/authenticate.js.map +1 -0
  47. package/dist/auth/oauth/constants.d.ts +5 -0
  48. package/dist/auth/oauth/constants.d.ts.map +1 -0
  49. package/dist/auth/oauth/constants.js +9 -0
  50. package/dist/auth/oauth/constants.js.map +1 -0
  51. package/dist/auth/oauth/exchangeCodeForToken.d.ts +7 -0
  52. package/dist/auth/oauth/exchangeCodeForToken.d.ts.map +1 -0
  53. package/dist/auth/oauth/exchangeCodeForToken.js +39 -0
  54. package/dist/auth/oauth/exchangeCodeForToken.js.map +1 -0
  55. package/dist/cli/index.d.ts +3 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +290 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/promptForMissingOptions.d.ts +8 -0
  60. package/dist/cli/promptForMissingOptions.d.ts.map +1 -0
  61. package/dist/cli/promptForMissingOptions.js +92 -0
  62. package/dist/cli/promptForMissingOptions.js.map +1 -0
  63. package/dist/config/env/createEnvFile.d.ts +6 -0
  64. package/dist/config/env/createEnvFile.d.ts.map +1 -0
  65. package/dist/config/env/createEnvFile.js +31 -0
  66. package/dist/config/env/createEnvFile.js.map +1 -0
  67. package/dist/config/index.d.ts +2 -0
  68. package/dist/config/index.d.ts.map +1 -0
  69. package/dist/config/index.js +6 -0
  70. package/dist/config/index.js.map +1 -0
  71. package/dist/config/mcp/createMcpConfig.d.ts +5 -0
  72. package/dist/config/mcp/createMcpConfig.d.ts.map +1 -0
  73. package/dist/config/mcp/createMcpConfig.js +32 -0
  74. package/dist/config/mcp/createMcpConfig.js.map +1 -0
  75. package/dist/config/packages/installAgilityPackages.d.ts +6 -0
  76. package/dist/config/packages/installAgilityPackages.d.ts.map +1 -0
  77. package/dist/config/packages/installAgilityPackages.js +61 -0
  78. package/dist/config/packages/installAgilityPackages.js.map +1 -0
  79. package/dist/config/setupProject.d.ts +8 -0
  80. package/dist/config/setupProject.d.ts.map +1 -0
  81. package/dist/config/setupProject.js +32 -0
  82. package/dist/config/setupProject.js.map +1 -0
  83. package/dist/create-next-app/createNextApp.d.ts +9 -0
  84. package/dist/create-next-app/createNextApp.d.ts.map +1 -0
  85. package/dist/create-next-app/createNextApp.js +83 -0
  86. package/dist/create-next-app/createNextApp.js.map +1 -0
  87. package/dist/create-next-app/index.d.ts +3 -0
  88. package/dist/create-next-app/index.d.ts.map +1 -0
  89. package/dist/create-next-app/index.js +8 -0
  90. package/dist/create-next-app/index.js.map +1 -0
  91. package/dist/scaffold/components/createPageComponents.d.ts +6 -0
  92. package/dist/scaffold/components/createPageComponents.d.ts.map +1 -0
  93. package/dist/scaffold/components/createPageComponents.js +62 -0
  94. package/dist/scaffold/components/createPageComponents.js.map +1 -0
  95. package/dist/scaffold/containers/createContainers.d.ts +6 -0
  96. package/dist/scaffold/containers/createContainers.d.ts.map +1 -0
  97. package/dist/scaffold/containers/createContainers.js +48 -0
  98. package/dist/scaffold/containers/createContainers.js.map +1 -0
  99. package/dist/scaffold/index.d.ts +2 -0
  100. package/dist/scaffold/index.d.ts.map +1 -0
  101. package/dist/scaffold/index.js +6 -0
  102. package/dist/scaffold/index.js.map +1 -0
  103. package/dist/scaffold/instance/createBlankInstance.d.ts +8 -0
  104. package/dist/scaffold/instance/createBlankInstance.d.ts.map +1 -0
  105. package/dist/scaffold/instance/createBlankInstance.js +51 -0
  106. package/dist/scaffold/instance/createBlankInstance.js.map +1 -0
  107. package/dist/scaffold/models/createContentModels.d.ts +6 -0
  108. package/dist/scaffold/models/createContentModels.d.ts.map +1 -0
  109. package/dist/scaffold/models/createContentModels.js +70 -0
  110. package/dist/scaffold/models/createContentModels.js.map +1 -0
  111. package/dist/templates/copyDirectory.d.ts +5 -0
  112. package/dist/templates/copyDirectory.d.ts.map +1 -0
  113. package/dist/templates/copyDirectory.js +28 -0
  114. package/dist/templates/copyDirectory.js.map +1 -0
  115. package/dist/templates/copyTemplates.d.ts +8 -0
  116. package/dist/templates/copyTemplates.d.ts.map +1 -0
  117. package/dist/templates/copyTemplates.js +58 -0
  118. package/dist/templates/copyTemplates.js.map +1 -0
  119. package/dist/templates/index.d.ts +2 -0
  120. package/dist/templates/index.d.ts.map +1 -0
  121. package/dist/templates/index.js +6 -0
  122. package/dist/templates/index.js.map +1 -0
  123. package/dist/types/index.d.ts +50 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +3 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/utils/git.d.ts +9 -0
  128. package/dist/utils/git.d.ts.map +1 -0
  129. package/dist/utils/git.js +71 -0
  130. package/dist/utils/git.js.map +1 -0
  131. package/dist/utils/validation.d.ts +45 -0
  132. package/dist/utils/validation.d.ts.map +1 -0
  133. package/dist/utils/validation.js +180 -0
  134. package/dist/utils/validation.js.map +1 -0
  135. package/package.json +45 -0
  136. package/src/agility/api-keys/generateApiKeys.ts +100 -0
  137. package/src/agility/api-keys/getApiKeys.ts +13 -0
  138. package/src/agility/index.ts +3 -0
  139. package/src/agility/instance/createNewInstance.ts +67 -0
  140. package/src/agility/instance/getAvailableInstances.ts +49 -0
  141. package/src/agility/instance/manageInstance.ts +90 -0
  142. package/src/agility/utils/getMgmtAPIUrl.ts +68 -0
  143. package/src/auth/api-key/authenticateWithApiKey.ts +24 -0
  144. package/src/auth/index.ts +3 -0
  145. package/src/auth/oauth/authenticate.ts +165 -0
  146. package/src/auth/oauth/constants.ts +6 -0
  147. package/src/auth/oauth/exchangeCodeForToken.ts +43 -0
  148. package/src/cli/index.ts +281 -0
  149. package/src/cli/promptForMissingOptions.ts +104 -0
  150. package/src/config/env/createEnvFile.ts +30 -0
  151. package/src/config/index.ts +2 -0
  152. package/src/config/mcp/createMcpConfig.ts +30 -0
  153. package/src/config/packages/installAgilityPackages.ts +63 -0
  154. package/src/config/setupProject.ts +31 -0
  155. package/src/create-next-app/createNextApp.ts +75 -0
  156. package/src/create-next-app/index.ts +3 -0
  157. package/src/scaffold/components/createPageComponents.ts +74 -0
  158. package/src/scaffold/containers/createContainers.ts +55 -0
  159. package/src/scaffold/index.ts +2 -0
  160. package/src/scaffold/instance/createBlankInstance.ts +55 -0
  161. package/src/scaffold/models/createContentModels.ts +83 -0
  162. package/src/templates/copyDirectory.ts +24 -0
  163. package/src/templates/copyTemplates.ts +57 -0
  164. package/src/templates/index.ts +2 -0
  165. package/src/types/index.ts +55 -0
  166. package/src/utils/git.ts +74 -0
  167. package/src/utils/validation.ts +184 -0
  168. package/templates/.claude/QUICK-START.md +230 -0
  169. package/templates/.claude/README.md +32 -0
  170. package/templates/.claude/settings.json +8 -0
  171. package/templates/BLANK-INSTANCE-SETUP.md +375 -0
  172. package/templates/DEVELOPMENT.md +160 -0
  173. package/templates/EXAMPLE-PROMPTS.md +643 -0
  174. package/templates/PROMPTS.md +410 -0
  175. package/templates/README.md +281 -0
  176. package/templates/agents.md +429 -0
  177. package/templates/app/[locale]/[...slug]/error.tsx +17 -0
  178. package/templates/app/[locale]/[...slug]/not-found.tsx +9 -0
  179. package/templates/app/[locale]/[...slug]/page.tsx +102 -0
  180. package/templates/app/[locale]/layout.tsx +22 -0
  181. package/templates/app/[locale]/page.tsx +12 -0
  182. package/templates/app/api/dynamic-redirect/route.ts +24 -0
  183. package/templates/app/api/preview/exit/route.ts +34 -0
  184. package/templates/app/api/preview/route.ts +63 -0
  185. package/templates/app/api/revalidate/route.ts +118 -0
  186. package/templates/components/agility-components/RichTextArea.tsx +66 -0
  187. package/templates/components/agility-components/index.ts +30 -0
  188. package/templates/components/agility-pages/MainTemplate.tsx +36 -0
  189. package/templates/components/agility-pages/index.ts +11 -0
  190. package/templates/docs/01-agility-cms-overview.md +139 -0
  191. package/templates/docs/02-page-routing.md +251 -0
  192. package/templates/docs/03-creating-components.md +462 -0
  193. package/templates/docs/04-data-fetching.md +484 -0
  194. package/templates/docs/05-containers-and-lists.md +596 -0
  195. package/templates/docs/06-localization.md +561 -0
  196. package/templates/docs/07-caching-strategies.md +410 -0
  197. package/templates/docs/08-common-components.md +756 -0
  198. package/templates/docs/09-whats-included.md +279 -0
  199. package/templates/docs/10-mcp-server-setup.md +153 -0
  200. package/templates/docs/11-linked-nested-content.md +611 -0
  201. package/templates/docs/README.md +164 -0
  202. package/templates/lib/cms/getAgilityContext.ts +28 -0
  203. package/templates/lib/cms/getAgilityPage.ts +51 -0
  204. package/templates/lib/cms/getAgilitySDK.ts +22 -0
  205. package/templates/lib/cms/getContentItem.ts +20 -0
  206. package/templates/lib/cms/getContentList.ts +19 -0
  207. package/templates/lib/cms/getRedirections.ts +85 -0
  208. package/templates/lib/cms/getSitemapFlat.ts +19 -0
  209. package/templates/lib/cms/getSitemapNested.ts +19 -0
  210. package/templates/lib/env.ts +99 -0
  211. package/templates/lib/i18n/config.ts +28 -0
  212. package/templates/proxy.ts +101 -0
  213. package/tsconfig.json +21 -0
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBlankInstance = void 0;
4
+ var createBlankInstance_1 = require("./instance/createBlankInstance");
5
+ Object.defineProperty(exports, "createBlankInstance", { enumerable: true, get: function () { return createBlankInstance_1.createBlankInstance; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scaffold/index.ts"],"names":[],"mappings":";;;AAAA,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,8 @@
1
+ import type { ApiKeys } from '../../types';
2
+ /**
3
+ * Creates a blank Agility instance with basic content models and components
4
+ * @param instanceGuid - Instance GUID
5
+ * @param apiKeys - API keys object
6
+ */
7
+ export declare function createBlankInstance(instanceGuid: string, apiKeys: ApiKeys | null): Promise<void>;
8
+ //# sourceMappingURL=createBlankInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBlankInstance.d.ts","sourceRoot":"","sources":["../../../src/scaffold/instance/createBlankInstance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCtG"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createBlankInstance = createBlankInstance;
7
+ const ora_1 = __importDefault(require("ora"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const inquirer_1 = __importDefault(require("inquirer"));
10
+ const createContentModels_1 = require("../models/createContentModels");
11
+ const createPageComponents_1 = require("../components/createPageComponents");
12
+ const createContainers_1 = require("../containers/createContainers");
13
+ /**
14
+ * Creates a blank Agility instance with basic content models and components
15
+ * @param instanceGuid - Instance GUID
16
+ * @param apiKeys - API keys object
17
+ */
18
+ async function createBlankInstance(instanceGuid, apiKeys) {
19
+ const spinner = (0, ora_1.default)('Scaffolding blank Agility instance...').start();
20
+ try {
21
+ // Ask user if they want to scaffold
22
+ const answer = await inquirer_1.default.prompt([
23
+ {
24
+ type: 'confirm',
25
+ name: 'scaffold',
26
+ message: 'Would you like to scaffold a blank instance with basic content models and components?',
27
+ default: true
28
+ }
29
+ ]);
30
+ if (!answer.scaffold) {
31
+ spinner.info('Skipping instance scaffolding');
32
+ return;
33
+ }
34
+ spinner.text = 'Creating content models...';
35
+ // Create content models
36
+ await (0, createContentModels_1.createContentModels)(instanceGuid, apiKeys);
37
+ spinner.text = 'Creating page components...';
38
+ // Create page components
39
+ await (0, createPageComponents_1.createPageComponents)(instanceGuid, apiKeys);
40
+ spinner.text = 'Creating containers...';
41
+ // Create containers
42
+ await (0, createContainers_1.createContainers)(instanceGuid, apiKeys);
43
+ spinner.succeed('Blank instance scaffolded successfully');
44
+ }
45
+ catch (error) {
46
+ spinner.fail('Failed to scaffold instance');
47
+ console.error(chalk_1.default.red(error.message));
48
+ // Don't throw - allow project creation to continue
49
+ }
50
+ }
51
+ //# sourceMappingURL=createBlankInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBlankInstance.js","sourceRoot":"","sources":["../../../src/scaffold/instance/createBlankInstance.ts"],"names":[],"mappings":";;;;;AAaA,kDAwCC;AArDD,8CAAsB;AACtB,kDAA0B;AAC1B,wDAAgC;AAEhC,uEAAoE;AACpE,6EAA0E;AAC1E,qEAAkE;AAElE;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,YAAoB,EAAE,OAAuB;IACrF,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,uCAAuC,CAAC,CAAC,KAAK,EAAE,CAAC;IAErE,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAwB;YAC1D;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,uFAAuF;gBAChG,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,4BAA4B,CAAC;QAE5C,wBAAwB;QACxB,MAAM,IAAA,yCAAmB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAE7C,yBAAyB;QACzB,MAAM,IAAA,2CAAoB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAElD,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC;QAExC,oBAAoB;QACpB,MAAM,IAAA,mCAAgB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAE9C,OAAO,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,mDAAmD;IACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ApiKeys } from '../../types';
2
+ /**
3
+ * Creates basic content models
4
+ */
5
+ export declare function createContentModels(instanceGuid: string, apiKeys: ApiKeys | null): Promise<void>;
6
+ //# sourceMappingURL=createContentModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createContentModels.d.ts","sourceRoot":"","sources":["../../../src/scaffold/models/createContentModels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EtG"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createContentModels = createContentModels;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ /**
9
+ * Creates basic content models
10
+ */
11
+ async function createContentModels(instanceGuid, apiKeys) {
12
+ // Note: This would use the MCP Agility CMS tools or direct API calls
13
+ // For now, we'll provide instructions to the user
14
+ const models = [
15
+ {
16
+ displayName: 'Page',
17
+ referenceName: 'Page',
18
+ description: 'Page content model with SEO fields',
19
+ fields: [
20
+ { type: 'Text', name: 'title', label: 'Title', required: true },
21
+ { type: 'LongText', name: 'description', label: 'Description' },
22
+ { type: 'Html', name: 'content', label: 'Content' },
23
+ { type: 'Text', name: 'seoTitle', label: 'SEO Title' },
24
+ { type: 'LongText', name: 'seoDescription', label: 'SEO Description' },
25
+ { type: 'Text', name: 'seoKeywords', label: 'SEO Keywords' }
26
+ ]
27
+ },
28
+ {
29
+ displayName: 'Post',
30
+ referenceName: 'Post',
31
+ description: 'Blog post content model',
32
+ fields: [
33
+ { type: 'Text', name: 'title', label: 'Title', required: true },
34
+ { type: 'LongText', name: 'excerpt', label: 'Excerpt' },
35
+ { type: 'Html', name: 'content', label: 'Content' },
36
+ { type: 'Date', name: 'publishDate', label: 'Publish Date' },
37
+ { type: 'ImageAttachment', name: 'featuredImage', label: 'Featured Image' }
38
+ ]
39
+ },
40
+ {
41
+ displayName: 'Category',
42
+ referenceName: 'Category',
43
+ description: 'Category content model',
44
+ fields: [
45
+ { type: 'Text', name: 'title', label: 'Title', required: true },
46
+ { type: 'LongText', name: 'description', label: 'Description' }
47
+ ]
48
+ },
49
+ {
50
+ displayName: 'Author',
51
+ referenceName: 'Author',
52
+ description: 'Author content model',
53
+ fields: [
54
+ { type: 'Text', name: 'name', label: 'Name', required: true },
55
+ { type: 'LongText', name: 'bio', label: 'Bio' },
56
+ { type: 'ImageAttachment', name: 'avatar', label: 'Avatar' }
57
+ ]
58
+ }
59
+ ];
60
+ // In a real implementation, this would use the MCP tool:
61
+ // for (const model of models) {
62
+ // await mcp_Agility_CMS_save_content_model({ instanceGuid, model });
63
+ // }
64
+ console.log(chalk_1.default.cyan('\n📋 Content models to create:'));
65
+ models.forEach(model => {
66
+ console.log(chalk_1.default.white(` - ${model.displayName} (${model.referenceName})`));
67
+ });
68
+ console.log(chalk_1.default.yellow('\n⚠️ Please create these content models in Agility CMS manually, or use the API.'));
69
+ }
70
+ //# sourceMappingURL=createContentModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createContentModels.js","sourceRoot":"","sources":["../../../src/scaffold/models/createContentModels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Recursively copies a directory
3
+ */
4
+ export declare function copyDirectory(src: string, dest: string): Promise<void>;
5
+ //# sourceMappingURL=copyDirectory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyDirectory.d.ts","sourceRoot":"","sources":["../../src/templates/copyDirectory.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5E"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.copyDirectory = copyDirectory;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ /**
10
+ * Recursively copies a directory
11
+ */
12
+ async function copyDirectory(src, dest) {
13
+ const entries = fs_1.default.readdirSync(src, { withFileTypes: true });
14
+ for (const entry of entries) {
15
+ const srcPath = path_1.default.join(src, entry.name);
16
+ const destPath = path_1.default.join(dest, entry.name);
17
+ if (entry.isDirectory()) {
18
+ if (!fs_1.default.existsSync(destPath)) {
19
+ fs_1.default.mkdirSync(destPath, { recursive: true });
20
+ }
21
+ await copyDirectory(srcPath, destPath);
22
+ }
23
+ else {
24
+ fs_1.default.copyFileSync(srcPath, destPath);
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=copyDirectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyDirectory.js","sourceRoot":"","sources":["../../src/templates/copyDirectory.ts"],"names":[],"mappings":";;;;;AAMA,sCAgBC;AAtBD,4CAAoB;AACpB,gDAAwB;AAExB;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IAC3D,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CliOptions } from '../types';
2
+ /**
3
+ * Copies template files to the project
4
+ * @param projectPath - Path to the project
5
+ * @param options - Options
6
+ */
7
+ export declare function copyTemplates(projectPath: string, options: CliOptions): Promise<void>;
8
+ //# sourceMappingURL=copyTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyTemplates.d.ts","sourceRoot":"","sources":["../../src/templates/copyTemplates.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C3F"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.copyTemplates = copyTemplates;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const copyDirectory_1 = require("./copyDirectory");
11
+ /**
12
+ * Copies template files to the project
13
+ * @param projectPath - Path to the project
14
+ * @param options - Options
15
+ */
16
+ async function copyTemplates(projectPath, options) {
17
+ const spinner = (0, ora_1.default)('Adding Agility CMS template files...').start();
18
+ try {
19
+ const templatesDir = path_1.default.join(__dirname, '..', '..', 'templates');
20
+ const srcDir = path_1.default.join(projectPath, 'src');
21
+ // Ensure src directory exists
22
+ if (!fs_1.default.existsSync(srcDir)) {
23
+ fs_1.default.mkdirSync(srcDir, { recursive: true });
24
+ }
25
+ // Copy all template files to src directory, except .claude
26
+ const entries = fs_1.default.readdirSync(templatesDir, { withFileTypes: true });
27
+ for (const entry of entries) {
28
+ const srcPath = path_1.default.join(templatesDir, entry.name);
29
+ // .claude folder should be copied to project root, not src
30
+ if (entry.name === '.claude') {
31
+ const destPath = path_1.default.join(projectPath, '.claude');
32
+ if (!fs_1.default.existsSync(destPath)) {
33
+ fs_1.default.mkdirSync(destPath, { recursive: true });
34
+ }
35
+ await (0, copyDirectory_1.copyDirectory)(srcPath, destPath);
36
+ }
37
+ else {
38
+ // All other files go to src directory
39
+ const destPath = path_1.default.join(srcDir, entry.name);
40
+ if (entry.isDirectory()) {
41
+ if (!fs_1.default.existsSync(destPath)) {
42
+ fs_1.default.mkdirSync(destPath, { recursive: true });
43
+ }
44
+ await (0, copyDirectory_1.copyDirectory)(srcPath, destPath);
45
+ }
46
+ else {
47
+ fs_1.default.copyFileSync(srcPath, destPath);
48
+ }
49
+ }
50
+ }
51
+ spinner.succeed('Template files copied');
52
+ }
53
+ catch (error) {
54
+ spinner.fail('Failed to copy template files');
55
+ throw error;
56
+ }
57
+ }
58
+ //# sourceMappingURL=copyTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyTemplates.js","sourceRoot":"","sources":["../../src/templates/copyTemplates.ts"],"names":[],"mappings":";;;;;AAWA,sCA4CC;AAvDD,4CAAoB;AACpB,gDAAwB;AACxB,8CAAsB;AAEtB,mDAAgD;AAEhD;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAmB;IAC1E,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,sCAAsC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAE7C,8BAA8B;QAC9B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,YAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,2DAA2D;QAC3D,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEpD,2DAA2D;YAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM,IAAA,6BAAa,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC7B,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9C,CAAC;oBACD,MAAM,IAAA,6BAAa,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { copyTemplates } from './copyTemplates';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyTemplates = void 0;
4
+ var copyTemplates_1 = require("./copyTemplates");
5
+ Object.defineProperty(exports, "copyTemplates", { enumerable: true, get: function () { return copyTemplates_1.copyTemplates; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
@@ -0,0 +1,50 @@
1
+ export interface Instance {
2
+ name: string;
3
+ guid: string;
4
+ org?: string;
5
+ }
6
+ export interface ApiKeys {
7
+ fetchKey: string;
8
+ previewKey: string;
9
+ securityKey: string;
10
+ }
11
+ export interface InstanceData {
12
+ guid: string;
13
+ name: string;
14
+ apiKeys: ApiKeys;
15
+ }
16
+ export interface CliOptions {
17
+ typescript?: boolean;
18
+ javascript?: boolean;
19
+ tailwind?: boolean;
20
+ eslint?: boolean;
21
+ app?: boolean;
22
+ srcDir?: boolean;
23
+ importAlias?: string;
24
+ useNpm?: boolean;
25
+ usePnpm?: boolean;
26
+ useYarn?: boolean;
27
+ useBun?: boolean;
28
+ skipInstall?: boolean;
29
+ [key: string]: unknown;
30
+ }
31
+ export interface ProjectConfig {
32
+ instanceGuid?: string;
33
+ apiKeys?: ApiKeys | null;
34
+ [key: string]: unknown;
35
+ }
36
+ export interface CreateNextAppOptions {
37
+ typescript?: boolean;
38
+ javascript?: boolean;
39
+ tailwind?: boolean;
40
+ eslint?: boolean;
41
+ app?: boolean;
42
+ srcDir?: boolean;
43
+ importAlias?: string;
44
+ useNpm?: boolean;
45
+ usePnpm?: boolean;
46
+ useYarn?: boolean;
47
+ useBun?: boolean;
48
+ skipInstall?: boolean;
49
+ }
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Initialize a git repository
3
+ */
4
+ export declare function initializeGit(projectPath: string): Promise<boolean>;
5
+ /**
6
+ * Check if git is available
7
+ */
8
+ export declare function isGitAvailable(): boolean;
9
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBzE;AAgCD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAQxC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initializeGit = initializeGit;
7
+ exports.isGitAvailable = isGitAvailable;
8
+ const child_process_1 = require("child_process");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ /**
12
+ * Initialize a git repository
13
+ */
14
+ async function initializeGit(projectPath) {
15
+ const spinner = (0, ora_1.default)('Initializing git repository...').start();
16
+ try {
17
+ // Initialize git
18
+ await runGitCommand(['init'], projectPath);
19
+ // Add all files
20
+ await runGitCommand(['add', '.'], projectPath);
21
+ // Create initial commit
22
+ await runGitCommand(['commit', '-m', 'Initial commit from create-next-agility-app'], projectPath);
23
+ spinner.succeed('Git repository initialized');
24
+ return true;
25
+ }
26
+ catch (error) {
27
+ spinner.fail('Failed to initialize git repository');
28
+ console.log(chalk_1.default.yellow(' You can initialize git manually later with: git init'));
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * Run a git command
34
+ */
35
+ function runGitCommand(args, cwd) {
36
+ return new Promise((resolve, reject) => {
37
+ const child = (0, child_process_1.spawn)('git', args, {
38
+ cwd,
39
+ stdio: 'pipe',
40
+ });
41
+ let stderr = '';
42
+ child.stderr?.on('data', (data) => {
43
+ stderr += data.toString();
44
+ });
45
+ child.on('error', (error) => {
46
+ reject(error);
47
+ });
48
+ child.on('exit', (code) => {
49
+ if (code !== 0) {
50
+ reject(new Error(stderr || `Git command failed with code ${code}`));
51
+ }
52
+ else {
53
+ resolve();
54
+ }
55
+ });
56
+ });
57
+ }
58
+ /**
59
+ * Check if git is available
60
+ */
61
+ function isGitAvailable() {
62
+ try {
63
+ const { execSync } = require('child_process');
64
+ execSync('git --version', { stdio: 'ignore' });
65
+ return true;
66
+ }
67
+ catch {
68
+ return false;
69
+ }
70
+ }
71
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":";;;;;AAOA,sCAuBC;AAmCD,wCAQC;AAzED,iDAAsC;AACtC,kDAA0B;AAC1B,8CAAsB;AAEtB;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;IAE9D,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;QAE3C,gBAAgB;QAChB,MAAM,aAAa,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;QAE/C,wBAAwB;QACxB,MAAM,aAAa,CACjB,CAAC,QAAQ,EAAE,IAAI,EAAE,6CAA6C,CAAC,EAC/D,WAAW,CACZ,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAc,EAAE,GAAW;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG;YACH,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Validates a project name
3
+ */
4
+ export declare function validateProjectName(projectName: string): {
5
+ valid: boolean;
6
+ message?: string;
7
+ };
8
+ /**
9
+ * Checks if a directory already exists
10
+ */
11
+ export declare function checkDirectoryExists(projectPath: string): boolean;
12
+ /**
13
+ * Checks if directory is empty
14
+ */
15
+ export declare function isDirectoryEmpty(projectPath: string): boolean;
16
+ /**
17
+ * Validates that we can create a project at the given path
18
+ */
19
+ export declare function validateProjectPath(projectPath: string): {
20
+ valid: boolean;
21
+ message?: string;
22
+ };
23
+ /**
24
+ * Check if git is installed
25
+ */
26
+ export declare function isGitInstalled(): boolean;
27
+ /**
28
+ * Displays validation error with helpful formatting
29
+ */
30
+ export declare function displayValidationError(message: string): void;
31
+ /**
32
+ * Check available disk space (basic check)
33
+ */
34
+ export declare function checkDiskSpace(): {
35
+ hasSpace: boolean;
36
+ message?: string;
37
+ };
38
+ /**
39
+ * Validate Node.js version
40
+ */
41
+ export declare function validateNodeVersion(): {
42
+ valid: boolean;
43
+ message?: string;
44
+ };
45
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAgCA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CA0C7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAyB7F;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAQxC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI5D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAaxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAY1E"}