canopycms 0.0.15 → 0.0.17

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 (187) hide show
  1. package/dist/ai/generate.js +5 -5
  2. package/dist/ai/generate.js.map +1 -1
  3. package/dist/ai/handler.js +5 -5
  4. package/dist/ai/index.js +3 -3
  5. package/dist/ai/resolve-branch.js +2 -2
  6. package/dist/api/__test__/mock-client.js +1 -1
  7. package/dist/api/assets.js +1 -1
  8. package/dist/api/branch-merge.js +3 -3
  9. package/dist/api/branch-review.js +4 -4
  10. package/dist/api/branch-status.js +8 -8
  11. package/dist/api/branch-withdraw.js +5 -5
  12. package/dist/api/branch.js +9 -9
  13. package/dist/api/comments.js +4 -4
  14. package/dist/api/content.js +5 -5
  15. package/dist/api/entries.d.ts.map +1 -1
  16. package/dist/api/entries.js +57 -145
  17. package/dist/api/entries.js.map +1 -1
  18. package/dist/api/github-sync.js +3 -3
  19. package/dist/api/groups.js +4 -4
  20. package/dist/api/guards.js +1 -1
  21. package/dist/api/index.js +3 -3
  22. package/dist/api/permissions.js +4 -4
  23. package/dist/api/reference-options.js +5 -5
  24. package/dist/api/resolve-references.js +4 -4
  25. package/dist/api/route-builder.js +1 -1
  26. package/dist/api/schema.js +5 -5
  27. package/dist/api/settings-helpers.js +1 -1
  28. package/dist/api/user.js +1 -1
  29. package/dist/api/validators.js +3 -3
  30. package/dist/asset-store.js +1 -1
  31. package/dist/auth/cache.js +2 -2
  32. package/dist/auth/caching-auth-plugin.js +1 -1
  33. package/dist/auth/file-based-auth-cache.js +1 -1
  34. package/dist/auth/index.js +1 -1
  35. package/dist/authorization/branch.js +1 -1
  36. package/dist/authorization/content.js +3 -3
  37. package/dist/authorization/groups/index.js +2 -2
  38. package/dist/authorization/groups/loader.js +4 -4
  39. package/dist/authorization/index.js +8 -8
  40. package/dist/authorization/path.js +1 -1
  41. package/dist/authorization/permissions/index.js +2 -2
  42. package/dist/authorization/permissions/loader.js +3 -3
  43. package/dist/authorization/permissions/schema.js +1 -1
  44. package/dist/authorization/test-utils.js +1 -1
  45. package/dist/authorization/validation.js +1 -1
  46. package/dist/branch-metadata.js +3 -3
  47. package/dist/branch-registry.js +2 -2
  48. package/dist/branch-schema-cache.js +2 -2
  49. package/dist/branch-workspace.js +6 -6
  50. package/dist/build/generate-ai-content.js +4 -4
  51. package/dist/build/index.js +1 -1
  52. package/dist/cli/cli.js +5 -5
  53. package/dist/cli/generate-ai-content.js +12 -13
  54. package/dist/cli/init.js +4 -11
  55. package/dist/cli/sync.js +1 -1
  56. package/dist/client.js +9 -9
  57. package/dist/config/flatten.js +2 -2
  58. package/dist/config/helpers.js +3 -3
  59. package/dist/config/index.js +9 -9
  60. package/dist/config/schemas/collection.js +1 -1
  61. package/dist/config/schemas/config.js +2 -2
  62. package/dist/config/schemas/field.d.ts +21 -0
  63. package/dist/config/schemas/field.d.ts.map +1 -1
  64. package/dist/config/schemas/field.js +2 -1
  65. package/dist/config/schemas/field.js.map +1 -1
  66. package/dist/config/types.d.ts +2 -0
  67. package/dist/config/types.d.ts.map +1 -1
  68. package/dist/config/validation.js +2 -2
  69. package/dist/config-test.js +2 -2
  70. package/dist/config.js +2 -2
  71. package/dist/content-id-index.js +2 -2
  72. package/dist/content-listing.d.ts +67 -2
  73. package/dist/content-listing.d.ts.map +1 -1
  74. package/dist/content-listing.js +95 -13
  75. package/dist/content-listing.js.map +1 -1
  76. package/dist/content-reader.js +5 -5
  77. package/dist/content-store.d.ts +1 -1
  78. package/dist/content-store.d.ts.map +1 -1
  79. package/dist/content-store.js +6 -6
  80. package/dist/content-store.js.map +1 -1
  81. package/dist/content-tree.d.ts +11 -5
  82. package/dist/content-tree.d.ts.map +1 -1
  83. package/dist/content-tree.js +3 -1
  84. package/dist/content-tree.js.map +1 -1
  85. package/dist/context.d.ts +3 -0
  86. package/dist/context.d.ts.map +1 -1
  87. package/dist/context.js +24 -6
  88. package/dist/context.js.map +1 -1
  89. package/dist/editor/BranchManager.js +4 -4
  90. package/dist/editor/CanopyEditor.js +3 -3
  91. package/dist/editor/CanopyEditorPage.js +1 -1
  92. package/dist/editor/CommentsPanel.js +1 -1
  93. package/dist/editor/Editor.js +18 -18
  94. package/dist/editor/EntryNavigator.js +1 -1
  95. package/dist/editor/FormRenderer.js +12 -12
  96. package/dist/editor/GroupManager.js +1 -1
  97. package/dist/editor/PermissionManager.js +1 -1
  98. package/dist/editor/client-reference-resolver.js +1 -1
  99. package/dist/editor/comments/BranchComments.js +1 -1
  100. package/dist/editor/comments/EntryComments.js +1 -1
  101. package/dist/editor/comments/FieldWrapper.js +1 -1
  102. package/dist/editor/comments/InlineCommentThread.js +1 -1
  103. package/dist/editor/comments/ThreadCarousel.js +1 -1
  104. package/dist/editor/components/EditorHeader.js +1 -1
  105. package/dist/editor/components/UserBadge.js +1 -1
  106. package/dist/editor/components/index.js +3 -3
  107. package/dist/editor/context/ApiClientContext.js +1 -1
  108. package/dist/editor/context/index.js +2 -2
  109. package/dist/editor/editor-utils.js +1 -1
  110. package/dist/editor/fields/BlockField.js +1 -1
  111. package/dist/editor/fields/ObjectField.js +1 -1
  112. package/dist/editor/fields/ReferenceField.js +1 -1
  113. package/dist/editor/group-manager/GroupCard.js +1 -1
  114. package/dist/editor/group-manager/InternalGroupsTab.js +1 -1
  115. package/dist/editor/group-manager/MemberList.js +1 -1
  116. package/dist/editor/group-manager/index.js +9 -9
  117. package/dist/editor/hooks/__test__/test-utils.js +3 -3
  118. package/dist/editor/hooks/index.js +11 -11
  119. package/dist/editor/hooks/useBranchActions.js +1 -1
  120. package/dist/editor/hooks/useBranchManager.js +1 -1
  121. package/dist/editor/hooks/useCommentSystem.js +2 -2
  122. package/dist/editor/hooks/useDraftManager.js +1 -1
  123. package/dist/editor/hooks/useEntryManager.js +3 -3
  124. package/dist/editor/hooks/useGroupManager.js +1 -1
  125. package/dist/editor/hooks/usePermissionManager.js +1 -1
  126. package/dist/editor/hooks/useReferenceResolution.js +1 -1
  127. package/dist/editor/hooks/useSchemaManager.js +1 -1
  128. package/dist/editor/hooks/useUserContext.js +1 -1
  129. package/dist/editor/permission-manager/PermissionEditor.js +4 -4
  130. package/dist/editor/permission-manager/PermissionLevelBadge.js +1 -1
  131. package/dist/editor/permission-manager/PermissionTree.js +3 -3
  132. package/dist/editor/permission-manager/UserSelector.js +1 -1
  133. package/dist/editor/permission-manager/hooks/usePermissionTree.js +2 -2
  134. package/dist/editor/permission-manager/index.js +6 -6
  135. package/dist/editor/preview-bridge.js +1 -1
  136. package/dist/editor/schema-editor/CollectionEditor.js +2 -2
  137. package/dist/editor/schema-editor/index.js +2 -2
  138. package/dist/entry-schema-registry.d.ts.map +1 -1
  139. package/dist/entry-schema-registry.js +34 -2
  140. package/dist/entry-schema-registry.js.map +1 -1
  141. package/dist/entry-schema.d.ts +1 -0
  142. package/dist/entry-schema.d.ts.map +1 -1
  143. package/dist/entry-schema.js.map +1 -1
  144. package/dist/git-manager.js +4 -4
  145. package/dist/github-service.js +1 -1
  146. package/dist/http/handler.js +7 -7
  147. package/dist/http/index.js +3 -3
  148. package/dist/http/router.js +12 -12
  149. package/dist/id.js +1 -1
  150. package/dist/index.d.ts +2 -1
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +6 -6
  153. package/dist/operating-mode/client-unsafe-strategy.js +2 -2
  154. package/dist/operating-mode/client.js +1 -1
  155. package/dist/operating-mode/index.js +2 -2
  156. package/dist/paths/branch.js +1 -1
  157. package/dist/paths/index.js +6 -6
  158. package/dist/paths/test-utils.js +1 -1
  159. package/dist/paths/validation.js +1 -1
  160. package/dist/reference-resolver.js +2 -2
  161. package/dist/reference-resolver.js.map +1 -1
  162. package/dist/schema/index.js +2 -2
  163. package/dist/schema/meta-loader.d.ts.map +1 -1
  164. package/dist/schema/meta-loader.js +11 -1
  165. package/dist/schema/meta-loader.js.map +1 -1
  166. package/dist/schema/resolver.js +1 -1
  167. package/dist/schema/schema-store.js +4 -4
  168. package/dist/server.d.ts +3 -1
  169. package/dist/server.d.ts.map +1 -1
  170. package/dist/server.js +13 -12
  171. package/dist/server.js.map +1 -1
  172. package/dist/services.js +12 -12
  173. package/dist/settings-branch-utils.js +1 -1
  174. package/dist/settings-workspace.js +3 -3
  175. package/dist/task-queue/index.js +1 -1
  176. package/dist/task-queue/task-queue.js +1 -1
  177. package/dist/user.js +1 -1
  178. package/dist/utils/fs.js +1 -1
  179. package/dist/utils/title-field.d.ts +40 -0
  180. package/dist/utils/title-field.d.ts.map +1 -0
  181. package/dist/utils/title-field.js +126 -0
  182. package/dist/utils/title-field.js.map +1 -0
  183. package/dist/validation/reference-validator.js +2 -2
  184. package/dist/worker/cms-worker.js +5 -5
  185. package/dist/worker/task-queue-config.js +1 -1
  186. package/dist/worker/task-queue.js +2 -2
  187. package/package.json +1 -1
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Find the field marked `isTitle: true` in a schema and extract its value from data.
3
+ * Recurses into object fields to support nested title fields (e.g., hero.title).
4
+ * Returns the string value or undefined if not found or not a string.
5
+ */
6
+ export function extractTitleFromSchema(fields, data) {
7
+ return findTitleValue(fields, data);
8
+ }
9
+ function findTitleValue(fields, data) {
10
+ for (const field of fields) {
11
+ if (field.isTitle) {
12
+ const value = data[field.name];
13
+ return typeof value === 'string' ? value : undefined;
14
+ }
15
+ // Recurse into non-list object fields (list objects can't provide a single title value)
16
+ if (field.type === 'object' && 'fields' in field && field.fields && !field.list) {
17
+ const nested = data[field.name];
18
+ if (nested != null && typeof nested === 'object' && !Array.isArray(nested)) {
19
+ const result = findTitleValue(field.fields, nested);
20
+ if (result !== undefined)
21
+ return result;
22
+ }
23
+ }
24
+ }
25
+ return undefined;
26
+ }
27
+ /** Convert a slug like "my-cool-page" to "My Cool Page". */
28
+ export function humanizeSlug(slug) {
29
+ return slug
30
+ .replace(/[-_]/g, ' ')
31
+ .replace(/\b\w/g, (c) => c.toUpperCase())
32
+ .trim();
33
+ }
34
+ /**
35
+ * Resolve a display title for an entry using the full fallback chain:
36
+ * 1. Schema-marked isTitle field (if schema provided)
37
+ * 2. Convention: data.title or data.name
38
+ * 3. Entry type label (if provided)
39
+ * 4. Humanized slug (if provided)
40
+ * 5. "Untitled"
41
+ */
42
+ export function resolveEntryTitle(data, options) {
43
+ // 1. Schema-marked isTitle field
44
+ if (options?.schema) {
45
+ const schemaTitle = extractTitleFromSchema(options.schema, data);
46
+ if (schemaTitle)
47
+ return schemaTitle;
48
+ }
49
+ // 2. Convention: data.title or data.name
50
+ const title = data.title ?? data.name;
51
+ if (typeof title === 'string')
52
+ return title;
53
+ // 3. Entry type label
54
+ if (options?.entryTypeLabel)
55
+ return options.entryTypeLabel;
56
+ // 4. Humanized slug
57
+ return options?.slug ? humanizeSlug(options.slug) : 'Untitled';
58
+ }
59
+ /**
60
+ * Count the number of fields marked `isTitle: true` in a schema, recursing into objects.
61
+ * Skips `list: true` objects since runtime title extraction cannot resolve array values.
62
+ * Used for validation — at most one field per schema should be marked.
63
+ */
64
+ export function countTitleFields(fields) {
65
+ let count = 0;
66
+ for (const field of fields) {
67
+ if (field.isTitle)
68
+ count++;
69
+ if (field.type === 'object' && 'fields' in field && field.fields && !field.list) {
70
+ count += countTitleFields(field.fields);
71
+ }
72
+ }
73
+ return count;
74
+ }
75
+ /**
76
+ * Validate that all isTitle fields in a schema are string type.
77
+ * Skips `list: true` objects (those are caught by findTitleFieldsInLists).
78
+ * Returns an array of field names that have isTitle on a non-string type.
79
+ */
80
+ export function findInvalidTitleFields(fields, parentPath) {
81
+ const invalid = [];
82
+ for (const field of fields) {
83
+ const fieldPath = parentPath ? `${parentPath}.${field.name}` : field.name;
84
+ if (field.isTitle && field.type !== 'string') {
85
+ invalid.push(fieldPath);
86
+ }
87
+ if (field.type === 'object' && 'fields' in field && field.fields && !field.list) {
88
+ invalid.push(...findInvalidTitleFields(field.fields, fieldPath));
89
+ }
90
+ }
91
+ return invalid;
92
+ }
93
+ /**
94
+ * Find isTitle fields inside `list: true` object fields, where they can never resolve.
95
+ * Returns dotted paths of such fields.
96
+ */
97
+ export function findTitleFieldsInLists(fields, parentPath) {
98
+ const found = [];
99
+ for (const field of fields) {
100
+ const fieldPath = parentPath ? `${parentPath}.${field.name}` : field.name;
101
+ if (field.type === 'object' && 'fields' in field && field.fields) {
102
+ if (field.list) {
103
+ // Any isTitle inside a list object is invalid — collect them
104
+ found.push(...collectAllTitleFields(field.fields, fieldPath));
105
+ }
106
+ else {
107
+ found.push(...findTitleFieldsInLists(field.fields, fieldPath));
108
+ }
109
+ }
110
+ }
111
+ return found;
112
+ }
113
+ /** Collect all isTitle fields recursively (used inside list context). */
114
+ function collectAllTitleFields(fields, parentPath) {
115
+ const found = [];
116
+ for (const field of fields) {
117
+ const fieldPath = `${parentPath}.${field.name}`;
118
+ if (field.isTitle)
119
+ found.push(fieldPath);
120
+ if (field.type === 'object' && 'fields' in field && field.fields) {
121
+ found.push(...collectAllTitleFields(field.fields, fieldPath));
122
+ }
123
+ }
124
+ return found;
125
+ }
126
+ //# sourceMappingURL=title-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title-field.js","sourceRoot":"","sources":["../../src/utils/title-field.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { isValidId } from '../id';
2
- import { findFieldsByType } from './field-traversal';
1
+ import { isValidId } from '../id.js';
2
+ import { findFieldsByType } from './field-traversal.js';
3
3
  /**
4
4
  * ReferenceValidator validates that referenced content IDs exist and match collection constraints.
5
5
  *
@@ -2,11 +2,11 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { simpleGit } from 'simple-git';
4
4
  import { Octokit } from '@octokit/rest';
5
- import { dequeueTask, completeTask, failTask, retryTask, recoverOrphanedTasks, cleanupOldTasks, cmsTaskQueueLogger, } from './task-queue';
6
- import { getBranchMetadataFileManager, BranchMetadataFileManager } from '../branch-metadata';
7
- import { extractIdFromFilename } from '../content-id-index';
8
- import { ROOT_COLLECTION_ID } from '../paths/types';
9
- import { isFileExistsError } from '../utils/error';
5
+ import { dequeueTask, completeTask, failTask, retryTask, recoverOrphanedTasks, cleanupOldTasks, cmsTaskQueueLogger, } from './task-queue.js';
6
+ import { getBranchMetadataFileManager, BranchMetadataFileManager } from '../branch-metadata.js';
7
+ import { extractIdFromFilename } from '../content-id-index.js';
8
+ import { ROOT_COLLECTION_ID } from '../paths/types.js';
9
+ import { isFileExistsError } from '../utils/error.js';
10
10
  const DEFAULT_TASK_TIMEOUT = 60_000;
11
11
  const DEFAULT_MAX_RETRIES = 3;
12
12
  // Payload validation helpers — fail fast with clear errors instead of silent `as` casts
@@ -1,5 +1,5 @@
1
1
  import path from 'node:path';
2
- import { DEFAULT_PROD_WORKSPACE } from '../config';
2
+ import { DEFAULT_PROD_WORKSPACE } from '../config/index.js';
3
3
  /**
4
4
  * Get the task queue directory for async worker operations.
5
5
  *
@@ -2,7 +2,7 @@
2
2
  * CanopyCMS task queue — re-exports from the generic task-queue module
3
3
  * with CMS-specific action types and a WorkerTask alias.
4
4
  */
5
- import { createDebugLogger } from '../utils/debug';
5
+ import { createDebugLogger } from '../utils/debug.js';
6
6
  // ============================================================================
7
7
  // Shared logger instance for CMS task queue operations
8
8
  // ============================================================================
@@ -16,5 +16,5 @@ export const cmsTaskQueueLogger = {
16
16
  // Re-exports from generic task-queue module
17
17
  // ============================================================================
18
18
  export { enqueueTask, dequeueTask, completeTask, failTask, retryTask, recoverOrphanedTasks, cleanupOldTasks, getTask, getTask as getTaskResult, // backward-compatible alias
19
- listTasks, getQueueStats, } from '../task-queue';
19
+ listTasks, getQueueStats, } from '../task-queue/index.js';
20
20
  //# sourceMappingURL=task-queue.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "//": "@codemirror/language, @lezer/highlight: workaround — @mdxeditor/editor uses cm6-theme-basic-light which peer-requires these but mdxeditor doesn't declare them as dependencies",
3
3
  "name": "canopycms",
4
- "version": "0.0.15",
4
+ "version": "0.0.17",
5
5
  "description": "CanopyCMS core package: schema-driven content, branch-aware editing, and editor UI for Next.js.",
6
6
  "license": "MIT",
7
7
  "repository": {