canopycms 0.0.1 → 0.0.3

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 (47) hide show
  1. package/dist/auth/plugin.d.ts +8 -0
  2. package/dist/auth/plugin.d.ts.map +1 -1
  3. package/dist/build-mode.d.ts +15 -5
  4. package/dist/build-mode.d.ts.map +1 -1
  5. package/dist/build-mode.js +18 -8
  6. package/dist/build-mode.js.map +1 -1
  7. package/dist/cli/init.d.ts +2 -2
  8. package/dist/cli/init.d.ts.map +1 -1
  9. package/dist/cli/init.js +37 -36
  10. package/dist/cli/init.js.map +1 -1
  11. package/dist/cli/template-files/Dockerfile.cms.template +19 -0
  12. package/dist/cli/template-files/ai-config.ts.template +21 -0
  13. package/dist/cli/template-files/ai-route.ts.template +10 -0
  14. package/dist/cli/template-files/canopy.ts.template +24 -0
  15. package/dist/cli/template-files/canopycms.config.ts.template +11 -0
  16. package/dist/cli/template-files/deploy-cms.yml.template +27 -0
  17. package/dist/cli/template-files/edit-page.tsx.template +32 -0
  18. package/dist/cli/template-files/route.ts.template +12 -0
  19. package/dist/cli/template-files/schemas.ts.template +16 -0
  20. package/dist/cli/templates.d.ts +5 -1
  21. package/dist/cli/templates.d.ts.map +1 -1
  22. package/dist/cli/templates.js +9 -2
  23. package/dist/cli/templates.js.map +1 -1
  24. package/dist/config/schemas/config.d.ts +4 -0
  25. package/dist/config/schemas/config.d.ts.map +1 -1
  26. package/dist/config/schemas/config.js +2 -0
  27. package/dist/config/schemas/config.js.map +1 -1
  28. package/dist/config/types.d.ts +5 -0
  29. package/dist/config/types.d.ts.map +1 -1
  30. package/dist/content-reader.js +2 -2
  31. package/dist/content-reader.js.map +1 -1
  32. package/dist/context.js +5 -5
  33. package/dist/context.js.map +1 -1
  34. package/dist/editor/editor-utils.d.ts.map +1 -1
  35. package/dist/editor/editor-utils.js +3 -1
  36. package/dist/editor/editor-utils.js.map +1 -1
  37. package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -1
  38. package/dist/operating-mode/client-unsafe-strategy.js +15 -18
  39. package/dist/operating-mode/client-unsafe-strategy.js.map +1 -1
  40. package/dist/operating-mode/types.d.ts +8 -0
  41. package/dist/operating-mode/types.d.ts.map +1 -1
  42. package/dist/server.d.ts +2 -0
  43. package/dist/server.d.ts.map +1 -1
  44. package/dist/server.js +2 -0
  45. package/dist/server.js.map +1 -1
  46. package/package.json +4 -2
  47. package/src/cli/init.ts +43 -38
@@ -40,6 +40,14 @@ export interface AuthPlugin {
40
40
  id: CanopyGroupId;
41
41
  name: string;
42
42
  }>>;
43
+ /**
44
+ * Optional: lightweight token-only verification (no user metadata lookup, no network).
45
+ * When present, createNextCanopyContext automatically wraps this plugin with
46
+ * CachingAuthPlugin in prod/prod-sim modes. The cache is populated by the worker daemon.
47
+ */
48
+ verifyTokenOnly?(context: unknown): Promise<{
49
+ userId: CanopyUserId;
50
+ } | null>;
43
51
  }
44
52
  /**
45
53
  * Factory function type for creating auth plugins
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/auth/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAE7D;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAEvE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAEpD;;;;OAIG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;CAC1F;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,UAAU,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/auth/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAE7D;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAEvE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAEpD;;;;OAIG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAEzF;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;CAC7E;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,UAAU,CAAA"}
@@ -1,12 +1,22 @@
1
1
  import type { AuthenticatedUser } from './user';
2
2
  /**
3
- * Detect if running in static build mode.
4
- * Framework-agnostic - checks common build environment variables.
3
+ * Check if this deployment is static (no request context, no auth).
4
+ * When true: STATIC_DEPLOY_USER is used, permissions are skipped.
5
+ * All content is assumed publicly readable.
6
+ */
7
+ export declare const isDeployedStatic: (config: {
8
+ deployedAs?: string;
9
+ }) => boolean;
10
+ /**
11
+ * Safety net: detect build phase where auth is unavailable.
12
+ * Covers edge cases like getCanopy() called from generateStaticParams
13
+ * in server deployments. For static deployments, isDeployedStatic()
14
+ * is the primary check.
5
15
  */
6
16
  export declare const isBuildMode: () => boolean;
7
17
  /**
8
- * Special user for build-time content access.
9
- * Has Admin privileges to bypass all permission checks during static generation.
18
+ * Synthetic user with full access for static deployments and build phase.
19
+ * Has Admin privileges all content is readable, permissions are skipped.
10
20
  */
11
- export declare const BUILD_USER: AuthenticatedUser;
21
+ export declare const STATIC_DEPLOY_USER: AuthenticatedUser;
12
22
  //# sourceMappingURL=build-mode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-mode.d.ts","sourceRoot":"","sources":["../src/build-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAO,OAQ9B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,iBAMF,CAAA"}
1
+ {"version":3,"file":"build-mode.d.ts","sourceRoot":"","sources":["../src/build-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAElE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,OAQ9B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBAMV,CAAA"}
@@ -1,6 +1,16 @@
1
1
  /**
2
- * Detect if running in static build mode.
3
- * Framework-agnostic - checks common build environment variables.
2
+ * Check if this deployment is static (no request context, no auth).
3
+ * When true: STATIC_DEPLOY_USER is used, permissions are skipped.
4
+ * All content is assumed publicly readable.
5
+ */
6
+ export const isDeployedStatic = (config) => {
7
+ return config.deployedAs === 'static';
8
+ };
9
+ /**
10
+ * Safety net: detect build phase where auth is unavailable.
11
+ * Covers edge cases like getCanopy() called from generateStaticParams
12
+ * in server deployments. For static deployments, isDeployedStatic()
13
+ * is the primary check.
4
14
  */
5
15
  export const isBuildMode = () => {
6
16
  // Next.js build phase
@@ -12,14 +22,14 @@ export const isBuildMode = () => {
12
22
  return false;
13
23
  };
14
24
  /**
15
- * Special user for build-time content access.
16
- * Has Admin privileges to bypass all permission checks during static generation.
25
+ * Synthetic user with full access for static deployments and build phase.
26
+ * Has Admin privileges all content is readable, permissions are skipped.
17
27
  */
18
- export const BUILD_USER = Object.freeze({
28
+ export const STATIC_DEPLOY_USER = Object.freeze({
19
29
  type: 'authenticated',
20
- userId: '__build__',
30
+ userId: '__static_deploy__',
21
31
  groups: ['Admins'],
22
- email: 'build@canopycms',
23
- name: 'Build Process',
32
+ email: 'static-deploy@canopycms',
33
+ name: 'Static Deploy',
24
34
  });
25
35
  //# sourceMappingURL=build-mode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-mode.js","sourceRoot":"","sources":["../src/build-mode.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;IACvC,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAA;IAEpE,wDAAwD;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAEzD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC;IACzD,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,KAAK,EAAE,iBAAiB;IACxB,IAAI,EAAE,eAAe;CACtB,CAAsB,CAAA"}
1
+ {"version":3,"file":"build-mode.js","sourceRoot":"","sources":["../src/build-mode.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA+B,EAAW,EAAE;IAC3E,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAA;AACvC,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;IACvC,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAA;IAEpE,wDAAwD;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAEzD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACjE,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,KAAK,EAAE,yBAAyB;IAChC,IAAI,EAAE,eAAe;CACtB,CAAsB,CAAA"}
@@ -1,11 +1,11 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env tsx
2
2
  export interface InitOptions {
3
- authProvider: 'clerk' | 'dev';
4
3
  mode: 'prod-sim' | 'dev';
5
4
  appDir: string;
6
5
  projectDir: string;
7
6
  force: boolean;
8
7
  nonInteractive: boolean;
8
+ ai: boolean;
9
9
  }
10
10
  interface InitDeployOptions {
11
11
  cloud: 'aws';
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AAgBA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,OAAO,GAAG,KAAK,CAAA;IAC7B,IAAI,EAAE,UAAU,GAAG,KAAK,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;CACxB;AAwDD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D9D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFlF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AAoBA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,KAAK,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;CACxB;AAwDD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE9D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFlF"}
package/dist/cli/init.js CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import fs from 'node:fs/promises';
3
+ import { realpathSync } from 'node:fs';
3
4
  import path from 'node:path';
4
5
  import { fileURLToPath } from 'node:url';
5
6
  import * as p from '@clack/prompts';
6
- import { canopyCmsConfig, canopyContext, schemasTemplate, apiRoute, editPage, dockerfileCms, githubWorkflowCms, } from './templates';
7
+ import { canopyCmsConfig, canopyContext, schemasTemplate, apiRoute, editPage, aiConfig, aiRoute, dockerfileCms, githubWorkflowCms, } from './templates';
8
+ import { operatingStrategy } from '../operating-mode';
7
9
  async function fileExists(filePath) {
8
10
  try {
9
11
  await fs.stat(filePath);
@@ -57,7 +59,7 @@ function configImportPath(appDir, subdirs) {
57
59
  * editing to a Next.js app. Cloud-agnostic.
58
60
  */
59
61
  export async function init(options) {
60
- const { projectDir, mode, appDir, force, nonInteractive } = options;
62
+ const { projectDir, mode, appDir, ai, force, nonInteractive } = options;
61
63
  const writeOpts = { force, nonInteractive };
62
64
  p.intro('CanopyCMS init');
63
65
  // Generate files
@@ -65,9 +67,13 @@ export async function init(options) {
65
67
  await writeFile(path.join(projectDir, appDir, 'lib/canopy.ts'), await canopyContext({ configImport: configImportPath(appDir, 1) }), writeOpts);
66
68
  await writeFile(path.join(projectDir, appDir, 'schemas.ts'), await schemasTemplate(), writeOpts);
67
69
  await writeFile(path.join(projectDir, appDir, 'api/canopycms/[...canopycms]/route.ts'), await apiRoute({
68
- canopyImport: configImportPath(appDir, 4).replace('canopycms.config', 'lib/canopy'),
70
+ canopyImport: '../'.repeat(3) + 'lib/canopy',
69
71
  }), writeOpts);
70
72
  await writeFile(path.join(projectDir, appDir, 'edit/page.tsx'), await editPage({ configImport: configImportPath(appDir, 1) }), writeOpts);
73
+ if (ai) {
74
+ await writeFile(path.join(projectDir, appDir, 'ai/config.ts'), await aiConfig(), writeOpts);
75
+ await writeFile(path.join(projectDir, appDir, 'ai/[...path]/route.ts'), await aiRoute({ configImport: configImportPath(appDir, 2) }), writeOpts);
76
+ }
71
77
  // Update .gitignore
72
78
  const gitignorePath = path.join(projectDir, '.gitignore');
73
79
  if (await fileExists(gitignorePath)) {
@@ -77,10 +83,9 @@ export async function init(options) {
77
83
  p.log.success('updated: .gitignore');
78
84
  }
79
85
  }
80
- const authPackages = options.authProvider === 'clerk' ? 'canopycms-auth-clerk' : 'canopycms-auth-dev';
81
86
  p.note([
82
87
  '1. Install dependencies:',
83
- ` npm install canopycms canopycms-next ${authPackages}`,
88
+ ` npm install canopycms canopycms-next canopycms-auth-clerk canopycms-auth-dev`,
84
89
  '',
85
90
  '2. Add transpilePackages to next.config.ts:',
86
91
  " transpilePackages: ['canopycms']",
@@ -150,9 +155,8 @@ export async function workerRunOnce(options) {
150
155
  }
151
156
  // For prod-sim without GitHub, just refresh auth cache
152
157
  const authMode = process.env.CANOPY_AUTH_MODE || 'dev';
153
- const cachePath = mode === 'prod-sim'
154
- ? path.join(options.projectDir, '.canopy-prod-sim', '.cache')
155
- : path.join(process.env.CANOPYCMS_WORKSPACE_ROOT ?? '/mnt/efs/workspace', '.cache');
158
+ const cachePath = process.env.CANOPY_AUTH_CACHE_PATH ??
159
+ path.join(operatingStrategy(mode).getWorkspaceRoot(options.projectDir), '.cache');
156
160
  let refreshAuthCache;
157
161
  if (authMode === 'clerk') {
158
162
  const clerkSecretKey = process.env.CLERK_SECRET_KEY;
@@ -210,7 +214,7 @@ function parseFlags(args) {
210
214
  if (arg.startsWith('--')) {
211
215
  const key = arg.slice(2);
212
216
  // Boolean flags
213
- if (key === 'force' || key === 'non-interactive') {
217
+ if (key === 'force' || key === 'non-interactive' || key === 'no-ai') {
214
218
  flags[key] = true;
215
219
  }
216
220
  else if (i + 1 < args.length && !args[i + 1].startsWith('--')) {
@@ -231,29 +235,6 @@ async function main() {
231
235
  if (command === 'init') {
232
236
  const nonInteractive = flags['non-interactive'] === true;
233
237
  const force = flags['force'] === true;
234
- // Resolve options: use flags if provided, otherwise prompt interactively
235
- let authProvider;
236
- if (flags['auth'] === 'clerk' || flags['auth'] === 'dev') {
237
- authProvider = flags['auth'];
238
- }
239
- else if (nonInteractive) {
240
- authProvider = 'dev';
241
- }
242
- else {
243
- const result = await p.select({
244
- message: 'Which auth provider?',
245
- options: [
246
- { value: 'dev', label: 'dev', hint: 'Local development, no real auth' },
247
- { value: 'clerk', label: 'clerk', hint: 'Clerk authentication' },
248
- ],
249
- initialValue: 'dev',
250
- });
251
- if (p.isCancel(result)) {
252
- p.cancel('Init cancelled.');
253
- process.exit(0);
254
- }
255
- authProvider = result;
256
- }
257
238
  let mode;
258
239
  if (flags['mode'] === 'dev' || flags['mode'] === 'prod-sim') {
259
240
  mode = flags['mode'];
@@ -299,10 +280,28 @@ async function main() {
299
280
  }
300
281
  appDir = result;
301
282
  }
283
+ let ai;
284
+ if (flags['no-ai'] === true) {
285
+ ai = false;
286
+ }
287
+ else if (nonInteractive) {
288
+ ai = true;
289
+ }
290
+ else {
291
+ const result = await p.confirm({
292
+ message: 'Include AI content endpoint?',
293
+ initialValue: true,
294
+ });
295
+ if (p.isCancel(result)) {
296
+ p.cancel('Init cancelled.');
297
+ process.exit(0);
298
+ }
299
+ ai = result;
300
+ }
302
301
  await init({
303
- authProvider,
304
302
  mode,
305
303
  appDir,
304
+ ai,
306
305
  projectDir: process.cwd(),
307
306
  force,
308
307
  nonInteractive,
@@ -343,9 +342,9 @@ async function main() {
343
342
  console.log('');
344
343
  console.log('Commands:');
345
344
  console.log(' init Add CanopyCMS to a Next.js app');
346
- console.log(' --auth <dev|clerk> Auth provider (default: dev)');
347
345
  console.log(' --mode <dev|prod-sim> Operating mode (default: dev)');
348
346
  console.log(' --app-dir <path> App directory (default: app)');
347
+ console.log(' --no-ai Skip AI content endpoint generation');
349
348
  console.log(' --force Overwrite existing files without asking');
350
349
  console.log(' --non-interactive Use defaults, no prompts');
351
350
  console.log('');
@@ -360,9 +359,11 @@ async function main() {
360
359
  process.exit(0);
361
360
  }
362
361
  }
363
- // Only run when executed directly as a CLI, not when imported in tests
362
+ // Only run when executed directly as a CLI, not when imported in tests.
363
+ // Use realpathSync to resolve symlinks — npx creates a symlink in node_modules/.bin/
364
+ // that won't match import.meta.url's resolved real path.
364
365
  const __filename = fileURLToPath(import.meta.url);
365
- const isDirectRun = process.argv[1] === __filename;
366
+ const isDirectRun = realpathSync(process.argv[1]) === realpathSync(__filename);
366
367
  if (isDirectRun) {
367
368
  main().catch((err) => {
368
369
  console.error('Error:', err instanceof Error ? err.message : String(err));
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ FROM public.ecr.aws/docker/library/node:20-slim AS builder
2
+ WORKDIR /app
3
+ COPY package*.json ./
4
+ RUN npm ci
5
+ COPY . .
6
+ ENV CANOPY_BUILD=cms
7
+ RUN npm run build
8
+
9
+ FROM public.ecr.aws/docker/library/node:20-slim AS runner
10
+ # Git is required by CanopyCMS for branch operations
11
+ RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
12
+ # Lambda Web Adapter converts Lambda events to HTTP
13
+ COPY --from=public.ecr.aws/awsguru/aws-lambda-web-adapter:0.8.4 /lambda-adapter /opt/extensions/lambda-adapter
14
+ WORKDIR /app
15
+ COPY --from=builder /app/.next/standalone ./
16
+ COPY --from=builder /app/.next/static ./.next/static
17
+ COPY --from=builder /app/public ./public
18
+ ENV PORT=8080 AWS_LWA_PORT=8080 HOSTNAME=0.0.0.0 NODE_ENV=production
19
+ CMD ["node", "server.js"]
@@ -0,0 +1,21 @@
1
+ import { defineAIContentConfig } from 'canopycms/ai'
2
+
3
+ export const aiContentConfig = defineAIContentConfig({
4
+ // Full content tree included by default
5
+ // Optional: exclude specific content
6
+ // exclude: {
7
+ // collections: ['content/drafts'],
8
+ // entryTypes: ['internal-note'],
9
+ // },
10
+ // Optional: custom bundles
11
+ // bundles: [
12
+ // {
13
+ // name: 'published-posts',
14
+ // description: 'All published blog posts',
15
+ // filter: {
16
+ // collections: ['posts'],
17
+ // where: (entry) => entry.data.published === true,
18
+ // },
19
+ // },
20
+ // ],
21
+ })
@@ -0,0 +1,10 @@
1
+ import { createAIContentHandler } from 'canopycms/ai'
2
+ import config from '{{CONFIG_IMPORT}}'
3
+ import { entrySchemaRegistry } from '../../schemas'
4
+ import { aiContentConfig } from '../config'
5
+
6
+ export const GET = createAIContentHandler({
7
+ config: config.server,
8
+ entrySchemaRegistry,
9
+ aiConfig: aiContentConfig,
10
+ })
@@ -0,0 +1,24 @@
1
+ import { createNextCanopyContext } from 'canopycms-next'
2
+ import { createClerkAuthPlugin } from 'canopycms-auth-clerk'
3
+ import { createDevAuthPlugin } from 'canopycms-auth-dev'
4
+ import config from '{{CONFIG_IMPORT}}'
5
+ import { entrySchemaRegistry } from '../schemas'
6
+
7
+ const canopyContextPromise = createNextCanopyContext({
8
+ config: config.server,
9
+ authPlugin:
10
+ process.env.CANOPY_AUTH_MODE === 'clerk'
11
+ ? createClerkAuthPlugin({ useOrganizationsAsGroups: true })
12
+ : createDevAuthPlugin(),
13
+ entrySchemaRegistry,
14
+ })
15
+
16
+ export const getCanopy = async () => {
17
+ const context = await canopyContextPromise
18
+ return context.getCanopy()
19
+ }
20
+
21
+ export const getHandler = async () => {
22
+ const context = await canopyContextPromise
23
+ return context.handler
24
+ }
@@ -0,0 +1,11 @@
1
+ import { defineCanopyConfig } from 'canopycms'
2
+
3
+ export default defineCanopyConfig({
4
+ defaultBranchAccess: 'allow',
5
+ mode: '{{MODE}}',
6
+ gitBotAuthorName: 'CanopyCMS Bot',
7
+ gitBotAuthorEmail: 'canopycms-bot@example.com',
8
+ editor: {
9
+ title: 'CanopyCMS Editor',
10
+ },
11
+ })
@@ -0,0 +1,27 @@
1
+ # CanopyCMS deployment workflow
2
+ # Customize this for your CI/CD setup
3
+
4
+ name: Deploy CMS
5
+ on:
6
+ push:
7
+ paths:
8
+ - 'app/**'
9
+ - 'src/**'
10
+ - 'content/**'
11
+ - 'canopycms.config.ts'
12
+ - 'Dockerfile.cms'
13
+ workflow_dispatch:
14
+
15
+ jobs:
16
+ build-and-deploy:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: actions/setup-node@v4
21
+ with:
22
+ node-version: 20
23
+
24
+ # TODO: Configure your ECR login, Docker build, push, and Lambda update
25
+ # See https://canopycms.dev/deploy/aws for details
26
+ - name: Build CMS image
27
+ run: docker build -f Dockerfile.cms -t cms:latest .
@@ -0,0 +1,32 @@
1
+ 'use client'
2
+
3
+ import { useClerkAuthConfig } from 'canopycms-auth-clerk/client'
4
+ import { useDevAuthConfig } from 'canopycms-auth-dev/client'
5
+ import { NextCanopyEditorPage } from 'canopycms-next/client'
6
+ import config from '{{CONFIG_IMPORT}}'
7
+
8
+ function useAuthConfig() {
9
+ const authMode = process.env.NEXT_PUBLIC_CANOPY_AUTH_MODE || 'dev'
10
+
11
+ if (authMode === 'dev') {
12
+ // eslint-disable-next-line react-hooks/rules-of-hooks
13
+ return useDevAuthConfig()
14
+ }
15
+
16
+ if (authMode === 'clerk') {
17
+ // eslint-disable-next-line react-hooks/rules-of-hooks
18
+ return useClerkAuthConfig()
19
+ }
20
+
21
+ throw new Error(
22
+ `Invalid NEXT_PUBLIC_CANOPY_AUTH_MODE: "${authMode}". Must be "dev" or "clerk".`
23
+ )
24
+ }
25
+
26
+ export default function EditPage() {
27
+ const authConfig = useAuthConfig()
28
+ const clientConfig = config.client(authConfig)
29
+
30
+ const EditorPage = NextCanopyEditorPage(clientConfig)
31
+ return <EditorPage />
32
+ }
@@ -0,0 +1,12 @@
1
+ import { getHandler } from '{{CANOPY_IMPORT}}'
2
+ import type { NextRequest } from 'next/server'
3
+
4
+ const handler = getHandler()
5
+
6
+ type RouteContext = { params: Promise<Record<string, string | string[]>> }
7
+
8
+ export const GET = async (req: NextRequest, ctx: RouteContext) => (await handler)(req, ctx)
9
+ export const POST = async (req: NextRequest, ctx: RouteContext) => (await handler)(req, ctx)
10
+ export const PUT = async (req: NextRequest, ctx: RouteContext) => (await handler)(req, ctx)
11
+ export const PATCH = async (req: NextRequest, ctx: RouteContext) => (await handler)(req, ctx)
12
+ export const DELETE = async (req: NextRequest, ctx: RouteContext) => (await handler)(req, ctx)
@@ -0,0 +1,16 @@
1
+ import { defineEntrySchema } from 'canopycms'
2
+ import { createEntrySchemaRegistry } from 'canopycms/server'
3
+
4
+ // Define your entry schemas here.
5
+ // Each schema describes the fields for a content type.
6
+ // The schema name should match the "entrySchema" value in your .collection.json files.
7
+
8
+ export const pageSchema = defineEntrySchema([
9
+ { name: 'title', type: 'string', label: 'Title' },
10
+ { name: 'description', type: 'string', label: 'Description' },
11
+ { name: 'body', type: 'markdown', label: 'Body' },
12
+ ])
13
+
14
+ export const entrySchemaRegistry = createEntrySchemaRegistry({
15
+ pageSchema,
16
+ })
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * File templates for `canopycms init` and `canopycms init-deploy aws`.
3
- * Reads .template files from the templates/ directory for readability.
3
+ * Reads .template files from the template-files/ directory for readability.
4
4
  */
5
5
  export declare function canopyCmsConfig(options: {
6
6
  mode: string;
@@ -15,6 +15,10 @@ export declare function apiRoute(options: {
15
15
  export declare function editPage(options: {
16
16
  configImport: string;
17
17
  }): Promise<string>;
18
+ export declare function aiConfig(): Promise<string>;
19
+ export declare function aiRoute(options: {
20
+ configImport: string;
21
+ }): Promise<string>;
18
22
  export declare function dockerfileCms(): Promise<string>;
19
23
  export declare function githubWorkflowCms(): Promise<string>;
20
24
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGtF;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAEvD;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjF;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjF;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAErD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEzD"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGtF;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAEvD;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjF;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjF;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAEhD;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAErD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEzD"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * File templates for `canopycms init` and `canopycms init-deploy aws`.
3
- * Reads .template files from the templates/ directory for readability.
3
+ * Reads .template files from the template-files/ directory for readability.
4
4
  */
5
5
  import fs from 'node:fs/promises';
6
6
  import path from 'node:path';
7
7
  import { fileURLToPath } from 'node:url';
8
8
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
- const TEMPLATES_DIR = path.join(__dirname, 'templates');
9
+ const TEMPLATES_DIR = path.join(__dirname, 'template-files');
10
10
  async function readTemplate(name) {
11
11
  return fs.readFile(path.join(TEMPLATES_DIR, name), 'utf-8');
12
12
  }
@@ -29,6 +29,13 @@ export async function editPage(options) {
29
29
  const template = await readTemplate('edit-page.tsx.template');
30
30
  return template.replace('{{CONFIG_IMPORT}}', options.configImport);
31
31
  }
32
+ export async function aiConfig() {
33
+ return readTemplate('ai-config.ts.template');
34
+ }
35
+ export async function aiRoute(options) {
36
+ const template = await readTemplate('ai-route.ts.template');
37
+ return template.replace('{{CONFIG_IMPORT}}', options.configImport);
38
+ }
32
39
  export async function dockerfileCms() {
33
40
  return readTemplate('Dockerfile.cms.template');
34
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAEvD,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB;IAC7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,8BAA8B,CAAC,CAAA;IACnE,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAiC;IACnE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,CAAA;IACzD,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAiC;IAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,CAAA;IACxD,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAiC;IAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,wBAAwB,CAAC,CAAA;IAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;AAE5D,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB;IAC7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,8BAA8B,CAAC,CAAA;IACnE,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAiC;IACnE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,CAAA;IACzD,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAiC;IAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,CAAA;IACxD,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAiC;IAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,wBAAwB,CAAC,CAAA;IAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAiC;IAC7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC,CAAA;IAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,YAAY,CAAC,yBAAyB,CAAC,CAAA;AAChD,CAAC"}
@@ -12,6 +12,7 @@ export declare const gitBotAuthorNameSchema: z.ZodString;
12
12
  export declare const gitBotAuthorEmailSchema: z.ZodString;
13
13
  export declare const githubTokenEnvVarSchema: z.ZodDefault<z.ZodString>;
14
14
  export declare const operatingModeSchema: z.ZodDefault<z.ZodEnum<["prod", "prod-sim", "dev"]>>;
15
+ export declare const deployedAsSchema: z.ZodDefault<z.ZodEnum<["static", "server"]>>;
15
16
  export declare const contentRootSchema: z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, string, string>>;
16
17
  export declare const sourceRootSchema: z.ZodOptional<z.ZodString>;
17
18
  export declare const deploymentNameSchema: z.ZodDefault<z.ZodString>;
@@ -146,6 +147,7 @@ export declare const CanopyConfigSchema: z.ZodObject<{
146
147
  gitBotAuthorEmail: z.ZodString;
147
148
  githubTokenEnvVar: z.ZodOptional<z.ZodDefault<z.ZodString>>;
148
149
  mode: z.ZodDefault<z.ZodEnum<["prod", "prod-sim", "dev"]>>;
150
+ deployedAs: z.ZodDefault<z.ZodEnum<["static", "server"]>>;
149
151
  settingsBranch: z.ZodOptional<z.ZodString>;
150
152
  autoCreateSettingsPR: z.ZodOptional<z.ZodBoolean>;
151
153
  deploymentName: z.ZodOptional<z.ZodDefault<z.ZodString>>;
@@ -181,6 +183,7 @@ export declare const CanopyConfigSchema: z.ZodObject<{
181
183
  gitBotAuthorName: string;
182
184
  gitBotAuthorEmail: string;
183
185
  mode: "prod" | "prod-sim" | "dev";
186
+ deployedAs: "static" | "server";
184
187
  contentRoot: string;
185
188
  media?: {
186
189
  adapter: "local";
@@ -255,6 +258,7 @@ export declare const CanopyConfigSchema: z.ZodObject<{
255
258
  defaultRemoteUrl?: string | undefined;
256
259
  githubTokenEnvVar?: string | undefined;
257
260
  mode?: "prod" | "prod-sim" | "dev" | undefined;
261
+ deployedAs?: "static" | "server" | undefined;
258
262
  settingsBranch?: string | undefined;
259
263
  autoCreateSettingsPR?: boolean | undefined;
260
264
  deploymentName?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/schemas/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAKnD,eAAO,MAAM,yBAAyB,4CAA4C,CAAA;AAClF,eAAO,MAAM,uBAAuB,4CAA4C,CAAA;AAChF,eAAO,MAAM,uBAAuB,2BAA6B,CAAA;AACjE,eAAO,MAAM,uBAAuB,2BAA+B,CAAA;AACnE,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,uBAAuB,aAAqB,CAAA;AACzD,eAAO,MAAM,uBAAuB,2BAAyC,CAAA;AAC7E,eAAO,MAAM,mBAAmB,sDAAqD,CAAA;AACrF,eAAO,MAAM,iBAAiB,qHAAwC,CAAA;AACtE,eAAO,MAAM,gBAAgB,4BAA+B,CAAA;AAC5D,eAAO,MAAM,oBAAoB,2BAA6B,CAAA;AAG9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB7B,CAAA;AAEF;;;GAGG;AACH,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU5B,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/schemas/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAKnD,eAAO,MAAM,yBAAyB,4CAA4C,CAAA;AAClF,eAAO,MAAM,uBAAuB,4CAA4C,CAAA;AAChF,eAAO,MAAM,uBAAuB,2BAA6B,CAAA;AACjE,eAAO,MAAM,uBAAuB,2BAA+B,CAAA;AACnE,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,uBAAuB,aAAqB,CAAA;AACzD,eAAO,MAAM,uBAAuB,2BAAyC,CAAA;AAC7E,eAAO,MAAM,mBAAmB,sDAAqD,CAAA;AACrF,eAAO,MAAM,gBAAgB,+CAAiD,CAAA;AAC9E,eAAO,MAAM,iBAAiB,qHAAwC,CAAA;AACtE,eAAO,MAAM,gBAAgB,4BAA+B,CAAA;AAC5D,eAAO,MAAM,oBAAoB,2BAA6B,CAAA;AAG9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB7B,CAAA;AAEF;;;GAGG;AACH,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU5B,CAAA"}