@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
+ /**
2
+ * Authenticates user with Agility CMS using OAuth 2.0
3
+ * @returns Access token
4
+ */
5
+ export declare function authenticate(): Promise<string>;
6
+ //# sourceMappingURL=authenticate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/authenticate.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAuJpD"}
@@ -0,0 +1,162 @@
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.authenticate = authenticate;
7
+ const http_1 = __importDefault(require("http"));
8
+ const open_1 = __importDefault(require("open"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ const inquirer_1 = __importDefault(require("inquirer"));
12
+ const constants_1 = require("./constants");
13
+ const exchangeCodeForToken_1 = require("./exchangeCodeForToken");
14
+ /**
15
+ * Authenticates user with Agility CMS using OAuth 2.0
16
+ * @returns Access token
17
+ */
18
+ async function authenticate() {
19
+ return new Promise(async (resolve, reject) => {
20
+ // Build OAuth URL - Agility CMS OAuth doesn't require client_id
21
+ const authUrl = new URL(constants_1.AGILITY_OAUTH_AUTHORIZE_URL);
22
+ authUrl.searchParams.set('redirect_uri', constants_1.REDIRECT_URI);
23
+ authUrl.searchParams.set('response_type', 'code');
24
+ authUrl.searchParams.set('scope', 'openid profile email offline_access');
25
+ // Ask user for confirmation before opening browser
26
+ try {
27
+ const answer = await inquirer_1.default.prompt([
28
+ {
29
+ type: 'confirm',
30
+ name: 'proceed',
31
+ message: 'We need to open a browser window for authentication. Proceed?',
32
+ default: true
33
+ }
34
+ ]);
35
+ if (!answer.proceed) {
36
+ reject(new Error('Authentication cancelled by user'));
37
+ return;
38
+ }
39
+ }
40
+ catch (error) {
41
+ reject(new Error('Failed to get user confirmation'));
42
+ return;
43
+ }
44
+ const spinner = (0, ora_1.default)('Opening browser for authentication...').start();
45
+ let timeoutId = null;
46
+ let isResolved = false;
47
+ const cleanup = () => {
48
+ if (timeoutId) {
49
+ clearTimeout(timeoutId);
50
+ timeoutId = null;
51
+ }
52
+ server.closeAllConnections();
53
+ server.close(() => {
54
+ // Server closed, allow process to exit
55
+ });
56
+ };
57
+ // Start local server to receive callback
58
+ const server = http_1.default.createServer((req, res) => {
59
+ if (req.url?.startsWith('/callback')) {
60
+ const url = new URL(req.url, `http://localhost:${constants_1.PORT}`);
61
+ const code = url.searchParams.get('code');
62
+ const error = url.searchParams.get('error');
63
+ if (error) {
64
+ res.writeHead(400, { 'Content-Type': 'text/html' });
65
+ res.end(`
66
+ <html>
67
+ <body>
68
+ <h1>Authentication Failed</h1>
69
+ <p>${error}</p>
70
+ <p>You can close this window.</p>
71
+ </body>
72
+ </html>
73
+ `);
74
+ if (!isResolved) {
75
+ isResolved = true;
76
+ cleanup();
77
+ spinner.fail('Authentication failed');
78
+ reject(new Error(`OAuth error: ${error}`));
79
+ }
80
+ return;
81
+ }
82
+ if (code) {
83
+ res.writeHead(200, { 'Content-Type': 'text/html' });
84
+ res.end(`
85
+ <html>
86
+ <body>
87
+ <h1>Authentication Successful!</h1>
88
+ <p>You can close this window and return to the terminal.</p>
89
+ </body>
90
+ </html>
91
+ `);
92
+ if (!isResolved) {
93
+ isResolved = true;
94
+ cleanup();
95
+ // Exchange code for token
96
+ spinner.text = 'Exchanging authorization code for token...';
97
+ (0, exchangeCodeForToken_1.exchangeCodeForToken)(code)
98
+ .then((token) => {
99
+ spinner.succeed('Authentication successful');
100
+ resolve(token);
101
+ })
102
+ .catch((err) => {
103
+ spinner.fail('Failed to exchange code for token');
104
+ const errorMessage = err instanceof Error ? err.message : String(err);
105
+ console.error(chalk_1.default.red('\nāŒ Token exchange error:'));
106
+ console.error(chalk_1.default.red(` ${errorMessage}`));
107
+ console.error(chalk_1.default.gray(' You can skip authentication and configure Agility CMS manually.\n'));
108
+ reject(err);
109
+ });
110
+ }
111
+ }
112
+ else {
113
+ res.writeHead(400, { 'Content-Type': 'text/html' });
114
+ res.end(`
115
+ <html>
116
+ <body>
117
+ <h1>Authentication Failed</h1>
118
+ <p>No authorization code received.</p>
119
+ <p>You can close this window.</p>
120
+ </body>
121
+ </html>
122
+ `);
123
+ if (!isResolved) {
124
+ isResolved = true;
125
+ cleanup();
126
+ spinner.fail('Authentication failed');
127
+ reject(new Error('No authorization code received'));
128
+ }
129
+ }
130
+ }
131
+ });
132
+ server.listen(constants_1.PORT, async () => {
133
+ try {
134
+ // Open browser
135
+ await (0, open_1.default)(authUrl.toString());
136
+ spinner.text = 'Waiting for authentication in browser...';
137
+ console.log(chalk_1.default.cyan('\nA browser window should open for authentication.'));
138
+ console.log(chalk_1.default.gray('If it doesn\'t, please open this URL manually:'));
139
+ console.log(chalk_1.default.blue(authUrl.toString()) + '\n');
140
+ }
141
+ catch (err) {
142
+ if (!isResolved) {
143
+ isResolved = true;
144
+ cleanup();
145
+ spinner.fail('Failed to open browser');
146
+ console.log(chalk_1.default.yellow(`\nPlease open this URL in your browser: ${authUrl.toString()}\n`));
147
+ reject(err);
148
+ }
149
+ }
150
+ });
151
+ // Timeout after 5 minutes
152
+ timeoutId = setTimeout(() => {
153
+ if (!isResolved) {
154
+ isResolved = true;
155
+ cleanup();
156
+ spinner.fail('Authentication timeout');
157
+ reject(new Error('Authentication timeout - please try again'));
158
+ }
159
+ }, 5 * 60 * 1000);
160
+ });
161
+ }
162
+ //# sourceMappingURL=authenticate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/auth/oauth/authenticate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const AGILITY_OAUTH_AUTHORIZE_URL = "https://mgmt.aglty.io/oauth/authorize";
2
+ export declare const AGILITY_OAUTH_TOKEN_URL = "https://mgmt.aglty.io/oauth/token";
3
+ export declare const REDIRECT_URI = "http://localhost:3001/callback";
4
+ export declare const PORT = 3001;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,2BAA2B,0CAA0C,CAAC;AACnF,eAAO,MAAM,uBAAuB,sCAAsC,CAAC;AAC3E,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAC7D,eAAO,MAAM,IAAI,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PORT = exports.REDIRECT_URI = exports.AGILITY_OAUTH_TOKEN_URL = exports.AGILITY_OAUTH_AUTHORIZE_URL = void 0;
4
+ // OAuth configuration for Agility CMS
5
+ exports.AGILITY_OAUTH_AUTHORIZE_URL = 'https://mgmt.aglty.io/oauth/authorize';
6
+ exports.AGILITY_OAUTH_TOKEN_URL = 'https://mgmt.aglty.io/oauth/token';
7
+ exports.REDIRECT_URI = 'http://localhost:3001/callback';
8
+ exports.PORT = 3001;
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/auth/oauth/constants.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,2BAA2B,GAAG,uCAAuC,CAAC;AACtE,QAAA,uBAAuB,GAAG,mCAAmC,CAAC;AAC9D,QAAA,YAAY,GAAG,gCAAgC,CAAC;AAChD,QAAA,IAAI,GAAG,IAAI,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Exchanges authorization code for access token
3
+ * @param code - Authorization code
4
+ * @returns Access token
5
+ */
6
+ export declare function exchangeCodeForToken(code: string): Promise<string>;
7
+ //# sourceMappingURL=exchangeCodeForToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeCodeForToken.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/exchangeCodeForToken.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCxE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exchangeCodeForToken = exchangeCodeForToken;
4
+ const constants_1 = require("./constants");
5
+ /**
6
+ * Exchanges authorization code for access token
7
+ * @param code - Authorization code
8
+ * @returns Access token
9
+ */
10
+ async function exchangeCodeForToken(code) {
11
+ // Exchange authorization code for access token using Agility CMS OAuth token endpoint
12
+ // Agility CMS OAuth doesn't require client_id or client_secret
13
+ // Use Node.js built-in fetch (Node 18+)
14
+ if (typeof globalThis.fetch !== 'function') {
15
+ throw new Error('OAuth token exchange requires Node.js 18+ (with built-in fetch).');
16
+ }
17
+ // Make token exchange request to Agility CMS OAuth token endpoint
18
+ const response = await fetch(constants_1.AGILITY_OAUTH_TOKEN_URL, {
19
+ method: 'POST',
20
+ headers: {
21
+ 'Content-Type': 'application/x-www-form-urlencoded',
22
+ },
23
+ body: new URLSearchParams({
24
+ grant_type: 'authorization_code',
25
+ code: code,
26
+ redirect_uri: constants_1.REDIRECT_URI,
27
+ }).toString(),
28
+ });
29
+ if (!response.ok) {
30
+ const errorText = await response.text();
31
+ throw new Error(`Token exchange failed: ${response.status} ${response.statusText} - ${errorText}`);
32
+ }
33
+ const data = await response.json();
34
+ if (!data.access_token) {
35
+ throw new Error('No access token received from OAuth server');
36
+ }
37
+ return data.access_token;
38
+ }
39
+ //# sourceMappingURL=exchangeCodeForToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeCodeForToken.js","sourceRoot":"","sources":["../../../src/auth/oauth/exchangeCodeForToken.ts"],"names":[],"mappings":";;AAOA,oDAkCC;AAzCD,2CAAoE;AAEpE;;;;GAIG;AACI,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,sFAAsF;IACtF,+DAA+D;IAE/D,wCAAwC;IACxC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mCAAuB,EAAE;QACpD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,UAAU,EAAE,oBAAoB;YAChC,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,wBAAY;SAC3B,CAAC,CAAC,QAAQ,EAAE;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4E,CAAC;IAE7G,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,290 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const commander_1 = require("commander");
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const inquirer_1 = __importDefault(require("inquirer"));
43
+ const open_1 = __importDefault(require("open"));
44
+ const boxen_1 = __importDefault(require("boxen"));
45
+ const update_notifier_1 = __importDefault(require("update-notifier"));
46
+ const path_1 = __importDefault(require("path"));
47
+ const create_next_app_1 = require("../create-next-app");
48
+ const auth = __importStar(require("../auth"));
49
+ const agility = __importStar(require("../agility"));
50
+ const config = __importStar(require("../config"));
51
+ const templates = __importStar(require("../templates"));
52
+ const promptForMissingOptions_1 = require("./promptForMissingOptions");
53
+ const validation_1 = require("../utils/validation");
54
+ const git_1 = require("../utils/git");
55
+ // Check for updates
56
+ const pkg = require('../../package.json');
57
+ (0, update_notifier_1.default)({ pkg }).notify({
58
+ isGlobal: true,
59
+ message: 'Update available: {currentVersion} → {latestVersion}\nRun {updateCommand} to update',
60
+ });
61
+ /**
62
+ * Handle errors with helpful recovery suggestions
63
+ */
64
+ function handleError(error) {
65
+ console.error('\n' + chalk_1.default.red.bold('āœ– Error occurred:'));
66
+ console.error(chalk_1.default.red(error.message) + '\n');
67
+ // Provide specific recovery suggestions based on error type
68
+ if (error.message.includes('EACCES') || error.message.includes('permission')) {
69
+ console.error(chalk_1.default.yellow('Possible solutions:'));
70
+ console.error(chalk_1.default.white(' • Check directory permissions'));
71
+ console.error(chalk_1.default.white(' • Try running without sudo (not recommended)'));
72
+ console.error(chalk_1.default.white(' • Choose a different directory\n'));
73
+ }
74
+ else if (error.message.includes('ENOSPC')) {
75
+ console.error(chalk_1.default.yellow('Possible solutions:'));
76
+ console.error(chalk_1.default.white(' • Free up disk space'));
77
+ console.error(chalk_1.default.white(' • Choose a different disk/directory\n'));
78
+ }
79
+ else if (error.message.includes('ENOTFOUND') || error.message.includes('network')) {
80
+ console.error(chalk_1.default.yellow('Possible solutions:'));
81
+ console.error(chalk_1.default.white(' • Check your internet connection'));
82
+ console.error(chalk_1.default.white(' • Try again in a few moments'));
83
+ console.error(chalk_1.default.white(' • Check if you are behind a proxy\n'));
84
+ }
85
+ else if (error.message.includes('authentication') || error.message.includes('OAuth')) {
86
+ console.error(chalk_1.default.yellow('Possible solutions:'));
87
+ console.error(chalk_1.default.white(' • Choose "manual setup" option'));
88
+ console.error(chalk_1.default.white(' • Configure .env.local manually after project creation'));
89
+ console.error(chalk_1.default.white(' • Get API keys from: https://manager.agilitycms.com\n'));
90
+ }
91
+ else {
92
+ console.error(chalk_1.default.yellow('Need help?'));
93
+ console.error(chalk_1.default.white(' • Check the documentation: https://github.com/agility/create-next-agility-app'));
94
+ console.error(chalk_1.default.white(' • Open an issue: https://github.com/agility/create-next-agility-app/issues\n'));
95
+ }
96
+ if (process.env.DEBUG) {
97
+ console.error(chalk_1.default.gray('Stack trace:'));
98
+ console.error(chalk_1.default.gray(error.stack || 'No stack trace available'));
99
+ }
100
+ else {
101
+ console.error(chalk_1.default.gray('Run with DEBUG=1 for detailed error information\n'));
102
+ }
103
+ process.exit(1);
104
+ }
105
+ /**
106
+ * Display success message with next steps
107
+ */
108
+ function displaySuccessMessage(projectName, instanceGuid, apiKeys) {
109
+ const hasAgilityConfig = Boolean(instanceGuid && apiKeys);
110
+ const message = chalk_1.default.green.bold('āœ“ Success!') +
111
+ chalk_1.default.white(` Your project is ready at: ${chalk_1.default.cyan(projectName)}\n\n`) +
112
+ chalk_1.default.cyan.bold('Next steps:\n') +
113
+ chalk_1.default.white(` 1. ${chalk_1.default.bold(`cd ${projectName}`)}\n`) +
114
+ chalk_1.default.white(` 2. ${chalk_1.default.bold('npm run dev')}\n`) +
115
+ chalk_1.default.white(` 3. Open ${chalk_1.default.cyan('http://localhost:3000')}\n\n`) +
116
+ chalk_1.default.cyan.bold('Documentation:\n') +
117
+ chalk_1.default.white(` • ${chalk_1.default.bold('.claude/agents.md')} - AI assistant guide\n`) +
118
+ chalk_1.default.white(` • ${chalk_1.default.bold('docs/')} - Full documentation\n`) +
119
+ chalk_1.default.white(` • ${chalk_1.default.bold('README.md')} - Getting started\n\n`) +
120
+ (hasAgilityConfig
121
+ ? chalk_1.default.green('āœ“ Agility CMS is configured and ready!\n\n')
122
+ : chalk_1.default.yellow('⚠ Configure Agility CMS:\n') +
123
+ chalk_1.default.white(` Edit ${chalk_1.default.bold('.env.local')} with your credentials\n`) +
124
+ chalk_1.default.gray(' Get your API keys from: https://manager.agilitycms.com\n\n')) +
125
+ chalk_1.default.cyan.bold('Get help:\n') +
126
+ chalk_1.default.white(` • ${chalk_1.default.underline('https://agilitycms.com/docs')}\n`) +
127
+ chalk_1.default.white(` • ${chalk_1.default.underline('https://github.com/agility/create-next-agility-app')}`);
128
+ console.log('\n' + (0, boxen_1.default)(message, {
129
+ padding: 1,
130
+ margin: 1,
131
+ borderStyle: 'round',
132
+ borderColor: 'green',
133
+ }) + '\n');
134
+ }
135
+ const program = new commander_1.Command();
136
+ program
137
+ .name('create-next-agility-app')
138
+ .description('Create a new Next.js project with Agility CMS integration')
139
+ .version('1.0.0')
140
+ .argument('[project-name]', 'Name of the project')
141
+ .option('--typescript, --ts', 'Initialize as a TypeScript project')
142
+ .option('--javascript, --js', 'Initialize as a JavaScript project')
143
+ .option('--tailwind', 'Initialize with Tailwind CSS')
144
+ .option('--no-tailwind', 'Initialize without Tailwind CSS')
145
+ .option('--eslint', 'Initialize with ESLint')
146
+ .option('--no-eslint', 'Initialize without ESLint')
147
+ .option('--app', 'Initialize with App Router')
148
+ .option('--src-dir', 'Initialize with src/ directory')
149
+ .option('--import-alias <alias>', 'Specify import alias (default: @/*)')
150
+ .option('--use-npm', 'Use npm as package manager')
151
+ .option('--use-pnpm', 'Use pnpm as package manager')
152
+ .option('--use-yarn', 'Use yarn as package manager')
153
+ .option('--use-bun', 'Use bun as package manager')
154
+ .option('--skip-install', 'Skip package installation')
155
+ .action(async (projectName, options) => {
156
+ try {
157
+ console.log(chalk_1.default.blue.bold('\nšŸš€ Creating Next.js project with Agility CMS...\n'));
158
+ // Validate Node.js version
159
+ const nodeValidation = (0, validation_1.validateNodeVersion)();
160
+ if (!nodeValidation.valid) {
161
+ (0, validation_1.displayValidationError)(nodeValidation.message);
162
+ process.exit(1);
163
+ }
164
+ // Step 1: Agility CMS setup (ask questions first)
165
+ console.log(chalk_1.default.magenta.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
166
+ console.log(chalk_1.default.magenta.bold('✨ STEP 1: Agility CMS integration'));
167
+ console.log(chalk_1.default.magenta.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
168
+ let instanceGuid;
169
+ let apiKeys = null;
170
+ let instanceName;
171
+ // Step 1a: Ask user what they want to do
172
+ const agilityChoice = await inquirer_1.default.prompt([
173
+ {
174
+ type: 'list',
175
+ name: 'action',
176
+ message: 'Choose an option:',
177
+ choices: [
178
+ { name: '1. Connect to an existing instance', value: 'existing' },
179
+ { name: '2. Create a new Agility instance', value: 'new' },
180
+ { name: '3. Let me connect it manually later', value: 'manual' }
181
+ ]
182
+ }
183
+ ]);
184
+ if (agilityChoice.action === 'existing') {
185
+ try {
186
+ console.log(chalk_1.default.magenta('šŸ” Authenticating with Agility CMS...\n'));
187
+ const accessToken = await auth.authenticate();
188
+ // Step 1b: Instance management
189
+ console.log(chalk_1.default.magenta('šŸ“‹ Setting up Agility CMS instance...\n'));
190
+ const instanceData = await agility.manageInstance(accessToken, options);
191
+ instanceGuid = instanceData.guid;
192
+ apiKeys = instanceData.apiKeys;
193
+ instanceName = instanceData.name;
194
+ }
195
+ catch (authError) {
196
+ console.log(chalk_1.default.yellow('\nāš ļø Authentication failed. You can configure Agility CMS later.'));
197
+ console.log(chalk_1.default.gray(' Edit .env.local with your Agility credentials when ready.\n'));
198
+ }
199
+ }
200
+ else if (agilityChoice.action === 'new') {
201
+ // Will open browser after project is created
202
+ console.log(chalk_1.default.gray('Skipping Agility instance connection. You can configure it manually later.\n'));
203
+ }
204
+ else {
205
+ // Manual connection later
206
+ console.log(chalk_1.default.gray('Skipping Agility instance connection. You can configure it manually later.\n'));
207
+ }
208
+ // Sanitize instance name to use as default project name
209
+ const defaultProjectName = instanceName
210
+ ? instanceName
211
+ .toLowerCase()
212
+ .replace(/\s+/g, '-')
213
+ .replace(/[^a-z0-9-_]/g, '')
214
+ .replace(/-+/g, '-')
215
+ .replace(/^-|-$/g, '') || undefined
216
+ : undefined;
217
+ // Prompt for missing information if not provided via flags
218
+ // Use instance name as default if available and project name not provided
219
+ const finalOptions = await (0, promptForMissingOptions_1.promptForMissingOptions)(projectName, // Only pass projectName if explicitly provided
220
+ options, defaultProjectName // Use sanitized instance name as default
221
+ );
222
+ const finalProjectName = finalOptions.projectName || 'my-app';
223
+ // Validate project name
224
+ const nameValidation = (0, validation_1.validateProjectName)(finalProjectName);
225
+ if (!nameValidation.valid) {
226
+ (0, validation_1.displayValidationError)(nameValidation.message);
227
+ process.exit(1);
228
+ }
229
+ // Validate project path
230
+ const projectPath = path_1.default.resolve(process.cwd(), finalProjectName);
231
+ const pathValidation = (0, validation_1.validateProjectPath)(projectPath);
232
+ if (!pathValidation.valid) {
233
+ (0, validation_1.displayValidationError)(pathValidation.message);
234
+ process.exit(1);
235
+ }
236
+ // Step 2: Create Next.js app
237
+ console.log(chalk_1.default.cyan.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
238
+ console.log(chalk_1.default.cyan.bold('šŸ“¦ STEP 2: Creating base Next.js project'));
239
+ console.log(chalk_1.default.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
240
+ const createdProjectPath = await (0, create_next_app_1.createNextApp)(finalProjectName, finalOptions);
241
+ // Step 3: Configure project (with Agility settings)
242
+ try {
243
+ await config.setupProject(createdProjectPath, {
244
+ instanceGuid,
245
+ apiKeys,
246
+ ...options
247
+ });
248
+ }
249
+ catch (configError) {
250
+ console.log(chalk_1.default.yellow('\nāš ļø Some configuration steps failed. You may need to configure manually.\n'));
251
+ }
252
+ // Step 4: Copy template files
253
+ try {
254
+ await templates.copyTemplates(createdProjectPath, options);
255
+ }
256
+ catch (templateError) {
257
+ console.log(chalk_1.default.yellow('\nāš ļø Some template files could not be copied. Check the project structure.\n'));
258
+ }
259
+ // Step 5: Initialize git repository
260
+ if ((0, git_1.isGitAvailable)()) {
261
+ await (0, git_1.initializeGit)(createdProjectPath);
262
+ }
263
+ else {
264
+ console.log(chalk_1.default.yellow('āš ļø Git is not installed. Skipping git initialization.'));
265
+ console.log(chalk_1.default.gray(' Install git and run: git init\n'));
266
+ }
267
+ // Display success message
268
+ displaySuccessMessage(finalProjectName, instanceGuid, apiKeys);
269
+ // If user chose to create a new instance, open browser now
270
+ if (agilityChoice.action === 'new') {
271
+ console.log(chalk_1.default.cyan('\n🌐 Opening Agility CMS signup page in your browser...\n'));
272
+ try {
273
+ await (0, open_1.default)('https://agilitycms.com/free');
274
+ console.log(chalk_1.default.green('āœ… Browser opened. Please create your instance.\n'));
275
+ console.log(chalk_1.default.yellow('After creating your instance, you can link it by manually configuring your .env.local file.\n'));
276
+ }
277
+ catch (openError) {
278
+ console.log(chalk_1.default.yellow('\nāš ļø Could not open browser automatically.'));
279
+ console.log(chalk_1.default.cyan('Please visit: https://agilitycms.com/free\n'));
280
+ }
281
+ }
282
+ // Ensure process exits cleanly
283
+ process.exit(0);
284
+ }
285
+ catch (error) {
286
+ handleError(error);
287
+ }
288
+ });
289
+ program.parse();
290
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CliOptions } from '../types';
2
+ /**
3
+ * Prompts for missing options interactively
4
+ */
5
+ export declare function promptForMissingOptions(projectName: string | undefined, options: CliOptions, defaultProjectName?: string): Promise<CliOptions & {
6
+ projectName?: string;
7
+ }>;
8
+ //# sourceMappingURL=promptForMissingOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptForMissingOptions.d.ts","sourceRoot":"","sources":["../../src/cli/promptForMissingOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,UAAU,EACnB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,UAAU,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4FhD"}