canopycms 0.0.59 → 0.0.61-int.74

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 (286) hide show
  1. package/dist/api/__test__/mock-client.d.ts +29 -0
  2. package/dist/api/__test__/mock-client.d.ts.map +1 -1
  3. package/dist/api/__test__/mock-client.js +55 -4
  4. package/dist/api/__test__/mock-client.js.map +1 -1
  5. package/dist/api/admin-branch-health.d.ts +65 -0
  6. package/dist/api/admin-branch-health.d.ts.map +1 -0
  7. package/dist/api/admin-branch-health.js +448 -0
  8. package/dist/api/admin-branch-health.js.map +1 -0
  9. package/dist/api/admin.d.ts +136 -0
  10. package/dist/api/admin.d.ts.map +1 -0
  11. package/dist/api/admin.js +338 -0
  12. package/dist/api/admin.js.map +1 -0
  13. package/dist/api/assets.d.ts.map +1 -1
  14. package/dist/api/assets.js +4 -0
  15. package/dist/api/assets.js.map +1 -1
  16. package/dist/api/branch-merge.d.ts +6 -0
  17. package/dist/api/branch-merge.d.ts.map +1 -1
  18. package/dist/api/branch-merge.js +15 -9
  19. package/dist/api/branch-merge.js.map +1 -1
  20. package/dist/api/branch-status.d.ts.map +1 -1
  21. package/dist/api/branch-status.js +15 -5
  22. package/dist/api/branch-status.js.map +1 -1
  23. package/dist/api/branch-withdraw.d.ts +6 -0
  24. package/dist/api/branch-withdraw.d.ts.map +1 -1
  25. package/dist/api/branch-withdraw.js +34 -7
  26. package/dist/api/branch-withdraw.js.map +1 -1
  27. package/dist/api/branch.d.ts +11 -1
  28. package/dist/api/branch.d.ts.map +1 -1
  29. package/dist/api/branch.js +70 -4
  30. package/dist/api/branch.js.map +1 -1
  31. package/dist/api/client.d.ts +34 -0
  32. package/dist/api/client.d.ts.map +1 -1
  33. package/dist/api/client.js +47 -0
  34. package/dist/api/client.js.map +1 -1
  35. package/dist/api/comments.d.ts.map +1 -1
  36. package/dist/api/comments.js +4 -0
  37. package/dist/api/comments.js.map +1 -1
  38. package/dist/api/content.d.ts.map +1 -1
  39. package/dist/api/content.js +4 -4
  40. package/dist/api/content.js.map +1 -1
  41. package/dist/api/entries.d.ts.map +1 -1
  42. package/dist/api/entries.js +23 -4
  43. package/dist/api/entries.js.map +1 -1
  44. package/dist/api/github-sync.d.ts.map +1 -1
  45. package/dist/api/github-sync.js +14 -3
  46. package/dist/api/github-sync.js.map +1 -1
  47. package/dist/api/groups.d.ts +3 -0
  48. package/dist/api/groups.d.ts.map +1 -1
  49. package/dist/api/groups.js +89 -68
  50. package/dist/api/groups.js.map +1 -1
  51. package/dist/api/guards.d.ts +7 -1
  52. package/dist/api/guards.d.ts.map +1 -1
  53. package/dist/api/guards.js +54 -0
  54. package/dist/api/guards.js.map +1 -1
  55. package/dist/api/index.d.ts +1 -0
  56. package/dist/api/index.d.ts.map +1 -1
  57. package/dist/api/index.js +0 -1
  58. package/dist/api/index.js.map +1 -1
  59. package/dist/api/permissions.d.ts +1 -0
  60. package/dist/api/permissions.d.ts.map +1 -1
  61. package/dist/api/permissions.js +23 -20
  62. package/dist/api/permissions.js.map +1 -1
  63. package/dist/api/schema.d.ts.map +1 -1
  64. package/dist/api/schema.js +36 -22
  65. package/dist/api/schema.js.map +1 -1
  66. package/dist/authorization/branch.d.ts +14 -1
  67. package/dist/authorization/branch.d.ts.map +1 -1
  68. package/dist/authorization/branch.js +5 -3
  69. package/dist/authorization/branch.js.map +1 -1
  70. package/dist/authorization/groups/index.d.ts +1 -1
  71. package/dist/authorization/groups/index.d.ts.map +1 -1
  72. package/dist/authorization/groups/index.js +1 -1
  73. package/dist/authorization/groups/index.js.map +1 -1
  74. package/dist/authorization/groups/loader.d.ts +25 -4
  75. package/dist/authorization/groups/loader.d.ts.map +1 -1
  76. package/dist/authorization/groups/loader.js +39 -20
  77. package/dist/authorization/groups/loader.js.map +1 -1
  78. package/dist/authorization/groups/schema.d.ts +8 -7
  79. package/dist/authorization/groups/schema.d.ts.map +1 -1
  80. package/dist/authorization/groups/schema.js +8 -4
  81. package/dist/authorization/groups/schema.js.map +1 -1
  82. package/dist/authorization/index.d.ts +5 -3
  83. package/dist/authorization/index.d.ts.map +1 -1
  84. package/dist/authorization/index.js +8 -3
  85. package/dist/authorization/index.js.map +1 -1
  86. package/dist/authorization/path.d.ts +8 -0
  87. package/dist/authorization/path.d.ts.map +1 -1
  88. package/dist/authorization/path.js +16 -1
  89. package/dist/authorization/path.js.map +1 -1
  90. package/dist/authorization/permissions/index.d.ts +1 -1
  91. package/dist/authorization/permissions/index.d.ts.map +1 -1
  92. package/dist/authorization/permissions/index.js +1 -1
  93. package/dist/authorization/permissions/index.js.map +1 -1
  94. package/dist/authorization/permissions/loader.d.ts +18 -4
  95. package/dist/authorization/permissions/loader.d.ts.map +1 -1
  96. package/dist/authorization/permissions/loader.js +35 -24
  97. package/dist/authorization/permissions/loader.js.map +1 -1
  98. package/dist/authorization/permissions/schema.d.ts +8 -7
  99. package/dist/authorization/permissions/schema.d.ts.map +1 -1
  100. package/dist/authorization/permissions/schema.js +8 -4
  101. package/dist/authorization/permissions/schema.js.map +1 -1
  102. package/dist/authorization/protected-branch.d.ts +39 -0
  103. package/dist/authorization/protected-branch.d.ts.map +1 -0
  104. package/dist/authorization/protected-branch.js +43 -0
  105. package/dist/authorization/protected-branch.js.map +1 -0
  106. package/dist/authorization/settings-file-store.d.ts +127 -0
  107. package/dist/authorization/settings-file-store.d.ts.map +1 -0
  108. package/dist/authorization/settings-file-store.js +156 -0
  109. package/dist/authorization/settings-file-store.js.map +1 -0
  110. package/dist/branch-health.d.ts +78 -0
  111. package/dist/branch-health.d.ts.map +1 -0
  112. package/dist/branch-health.js +151 -0
  113. package/dist/branch-health.js.map +1 -0
  114. package/dist/branch-metadata.d.ts +31 -0
  115. package/dist/branch-metadata.d.ts.map +1 -1
  116. package/dist/branch-metadata.js +43 -1
  117. package/dist/branch-metadata.js.map +1 -1
  118. package/dist/branch-registry.d.ts.map +1 -1
  119. package/dist/branch-registry.js +13 -1
  120. package/dist/branch-registry.js.map +1 -1
  121. package/dist/cli/cli.js +398 -200
  122. package/dist/cli/generate-ai-content.js +72 -13
  123. package/dist/cli/init.js +84 -2
  124. package/dist/cli/migrate.d.ts.map +1 -1
  125. package/dist/cli/migrate.js +39 -11
  126. package/dist/cli/migrate.js.map +1 -1
  127. package/dist/cli/sync.d.ts.map +1 -1
  128. package/dist/cli/sync.js +4 -1
  129. package/dist/cli/sync.js.map +1 -1
  130. package/dist/config/index.d.ts +1 -1
  131. package/dist/config/index.d.ts.map +1 -1
  132. package/dist/config/index.js.map +1 -1
  133. package/dist/config/schemas/config.d.ts +55 -5
  134. package/dist/config/schemas/config.d.ts.map +1 -1
  135. package/dist/config/schemas/config.js +18 -1
  136. package/dist/config/schemas/config.js.map +1 -1
  137. package/dist/config/types.d.ts +11 -1
  138. package/dist/config/types.d.ts.map +1 -1
  139. package/dist/content-store.d.ts +16 -0
  140. package/dist/content-store.d.ts.map +1 -1
  141. package/dist/content-store.js +22 -6
  142. package/dist/content-store.js.map +1 -1
  143. package/dist/context.d.ts +3 -0
  144. package/dist/context.d.ts.map +1 -1
  145. package/dist/context.js +25 -3
  146. package/dist/context.js.map +1 -1
  147. package/dist/editor/BranchManager.d.ts +11 -0
  148. package/dist/editor/BranchManager.d.ts.map +1 -1
  149. package/dist/editor/BranchManager.js +34 -10
  150. package/dist/editor/BranchManager.js.map +1 -1
  151. package/dist/editor/CommentsPanel.d.ts.map +1 -1
  152. package/dist/editor/CommentsPanel.js +4 -12
  153. package/dist/editor/CommentsPanel.js.map +1 -1
  154. package/dist/editor/Editor.d.ts.map +1 -1
  155. package/dist/editor/Editor.js +46 -10
  156. package/dist/editor/Editor.js.map +1 -1
  157. package/dist/editor/EntryNavigator.d.ts +7 -0
  158. package/dist/editor/EntryNavigator.d.ts.map +1 -1
  159. package/dist/editor/EntryNavigator.js +17 -5
  160. package/dist/editor/EntryNavigator.js.map +1 -1
  161. package/dist/editor/FormRenderer.d.ts.map +1 -1
  162. package/dist/editor/FormRenderer.js +4 -0
  163. package/dist/editor/FormRenderer.js.map +1 -1
  164. package/dist/editor/admin/SystemHealthPanel.d.ts +6 -0
  165. package/dist/editor/admin/SystemHealthPanel.d.ts.map +1 -0
  166. package/dist/editor/admin/SystemHealthPanel.js +234 -0
  167. package/dist/editor/admin/SystemHealthPanel.js.map +1 -0
  168. package/dist/editor/admin/useSystemHealth.d.ts +40 -0
  169. package/dist/editor/admin/useSystemHealth.d.ts.map +1 -0
  170. package/dist/editor/admin/useSystemHealth.js +205 -0
  171. package/dist/editor/admin/useSystemHealth.js.map +1 -0
  172. package/dist/editor/comments/FieldWrapper.d.ts.map +1 -1
  173. package/dist/editor/comments/FieldWrapper.js +1 -1
  174. package/dist/editor/comments/FieldWrapper.js.map +1 -1
  175. package/dist/editor/comments/InlineCommentThread.d.ts.map +1 -1
  176. package/dist/editor/comments/InlineCommentThread.js +2 -21
  177. package/dist/editor/comments/InlineCommentThread.js.map +1 -1
  178. package/dist/editor/comments/ThreadCarousel.d.ts +2 -0
  179. package/dist/editor/comments/ThreadCarousel.d.ts.map +1 -1
  180. package/dist/editor/comments/ThreadCarousel.js +5 -2
  181. package/dist/editor/comments/ThreadCarousel.js.map +1 -1
  182. package/dist/editor/components/EditorHeader.d.ts +11 -0
  183. package/dist/editor/components/EditorHeader.d.ts.map +1 -1
  184. package/dist/editor/components/EditorHeader.js +75 -41
  185. package/dist/editor/components/EditorHeader.js.map +1 -1
  186. package/dist/editor/components/EditorSidebar.d.ts +7 -1
  187. package/dist/editor/components/EditorSidebar.d.ts.map +1 -1
  188. package/dist/editor/components/EditorSidebar.js +3 -3
  189. package/dist/editor/components/EditorSidebar.js.map +1 -1
  190. package/dist/editor/fields/ImageField.d.ts.map +1 -1
  191. package/dist/editor/fields/ImageField.js +4 -1
  192. package/dist/editor/fields/ImageField.js.map +1 -1
  193. package/dist/editor/fields/StringListField.d.ts +20 -0
  194. package/dist/editor/fields/StringListField.d.ts.map +1 -0
  195. package/dist/editor/fields/StringListField.js +25 -0
  196. package/dist/editor/fields/StringListField.js.map +1 -0
  197. package/dist/editor/hooks/useBranchActions.d.ts.map +1 -1
  198. package/dist/editor/hooks/useBranchActions.js +8 -2
  199. package/dist/editor/hooks/useBranchActions.js.map +1 -1
  200. package/dist/editor/hooks/useBranchManager.d.ts +14 -3
  201. package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
  202. package/dist/editor/hooks/useBranchManager.js +18 -1
  203. package/dist/editor/hooks/useBranchManager.js.map +1 -1
  204. package/dist/editor/hooks/useDraftManager.d.ts +7 -0
  205. package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
  206. package/dist/editor/hooks/useDraftManager.js +57 -3
  207. package/dist/editor/hooks/useDraftManager.js.map +1 -1
  208. package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
  209. package/dist/editor/hooks/useEntryManager.js +25 -7
  210. package/dist/editor/hooks/useEntryManager.js.map +1 -1
  211. package/dist/editor/hooks/useGroupManager.d.ts.map +1 -1
  212. package/dist/editor/hooks/useGroupManager.js +13 -2
  213. package/dist/editor/hooks/useGroupManager.js.map +1 -1
  214. package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -1
  215. package/dist/editor/hooks/usePermissionManager.js +13 -2
  216. package/dist/editor/hooks/usePermissionManager.js.map +1 -1
  217. package/dist/editor/media/AssetCard.d.ts.map +1 -1
  218. package/dist/editor/media/AssetCard.js +23 -2
  219. package/dist/editor/media/AssetCard.js.map +1 -1
  220. package/dist/editor/relative-time.d.ts +8 -0
  221. package/dist/editor/relative-time.d.ts.map +1 -0
  222. package/dist/editor/relative-time.js +26 -0
  223. package/dist/editor/relative-time.js.map +1 -0
  224. package/dist/git-manager.d.ts.map +1 -1
  225. package/dist/git-manager.js +16 -2
  226. package/dist/git-manager.js.map +1 -1
  227. package/dist/http/handler.d.ts.map +1 -1
  228. package/dist/http/handler.js +20 -9
  229. package/dist/http/handler.js.map +1 -1
  230. package/dist/http/router.d.ts.map +1 -1
  231. package/dist/http/router.js +2 -0
  232. package/dist/http/router.js.map +1 -1
  233. package/dist/paths/branch-name.d.ts +20 -0
  234. package/dist/paths/branch-name.d.ts.map +1 -0
  235. package/dist/paths/branch-name.js +24 -0
  236. package/dist/paths/branch-name.js.map +1 -0
  237. package/dist/paths/branch.d.ts +2 -8
  238. package/dist/paths/branch.d.ts.map +1 -1
  239. package/dist/paths/branch.js +6 -12
  240. package/dist/paths/branch.js.map +1 -1
  241. package/dist/paths/index.d.ts +2 -1
  242. package/dist/paths/index.d.ts.map +1 -1
  243. package/dist/paths/index.js +4 -1
  244. package/dist/paths/index.js.map +1 -1
  245. package/dist/schema/schema-store.d.ts +98 -0
  246. package/dist/schema/schema-store.d.ts.map +1 -1
  247. package/dist/schema/schema-store.js +187 -29
  248. package/dist/schema/schema-store.js.map +1 -1
  249. package/dist/services.js +9 -1
  250. package/dist/services.js.map +1 -1
  251. package/dist/task-queue/index.d.ts +2 -2
  252. package/dist/task-queue/index.d.ts.map +1 -1
  253. package/dist/task-queue/index.js +1 -1
  254. package/dist/task-queue/index.js.map +1 -1
  255. package/dist/task-queue/task-queue.d.ts +37 -1
  256. package/dist/task-queue/task-queue.d.ts.map +1 -1
  257. package/dist/task-queue/task-queue.js +104 -0
  258. package/dist/task-queue/task-queue.js.map +1 -1
  259. package/dist/task-queue/types.d.ts +11 -0
  260. package/dist/task-queue/types.d.ts.map +1 -1
  261. package/dist/types.d.ts +54 -0
  262. package/dist/types.d.ts.map +1 -1
  263. package/dist/utils/occ-json-write.d.ts.map +1 -1
  264. package/dist/utils/occ-json-write.js +7 -0
  265. package/dist/utils/occ-json-write.js.map +1 -1
  266. package/dist/utils/provisioning-lock.d.ts +19 -0
  267. package/dist/utils/provisioning-lock.d.ts.map +1 -1
  268. package/dist/utils/provisioning-lock.js +26 -0
  269. package/dist/utils/provisioning-lock.js.map +1 -1
  270. package/dist/validation/reference-validator.d.ts +17 -1
  271. package/dist/validation/reference-validator.d.ts.map +1 -1
  272. package/dist/validation/reference-validator.js +33 -10
  273. package/dist/validation/reference-validator.js.map +1 -1
  274. package/dist/worker/cms-worker.d.ts +74 -0
  275. package/dist/worker/cms-worker.d.ts.map +1 -1
  276. package/dist/worker/cms-worker.js +542 -29
  277. package/dist/worker/cms-worker.js.map +1 -1
  278. package/dist/worker/task-queue.d.ts +3 -3
  279. package/dist/worker/task-queue.d.ts.map +1 -1
  280. package/dist/worker/task-queue.js +2 -2
  281. package/dist/worker/task-queue.js.map +1 -1
  282. package/dist/worker/worker-status.d.ts +48 -0
  283. package/dist/worker/worker-status.d.ts.map +1 -0
  284. package/dist/worker/worker-status.js +53 -0
  285. package/dist/worker/worker-status.js.map +1 -0
  286. package/package.json +1 -1
@@ -0,0 +1,151 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { BranchMetadataFileManager, BranchMetadataCorruptError } from './branch-metadata.js';
4
+ import { sanitizeBranchName } from './paths/branch-name.js';
5
+ import { getErrorMessage, isNodeError, isNotFoundError } from './utils/error.js';
6
+ /**
7
+ * The on-disk path of the cross-process provisioning lock marker for a
8
+ * given branch directory, matching `branch-workspace.ts`'s
9
+ * `ensureGitWorkspace()` exactly:
10
+ *
11
+ * ```ts
12
+ * acquireProvisioningLock(
13
+ * path.dirname(branchRoot), // === baseRoot
14
+ * `.${path.basename(branchRoot)}.init.lock`,
15
+ * )
16
+ * ```
17
+ *
18
+ * `acquireProvisioningLock` passes this name as `lockfilePath`, which
19
+ * overrides proper-lockfile's default `${target}.lock` naming, so the lock
20
+ * marker itself (a directory, mkdir-based) lives at exactly this path -- no
21
+ * extra `.lock` suffix.
22
+ */
23
+ export function provisioningLockPath(baseRoot, dirName) {
24
+ return path.join(baseRoot, `.${dirName}.init.lock`);
25
+ }
26
+ /** Stat the provisioning lock marker, if present. Never throws. */
27
+ async function readProvisioningLock(baseRoot, dirName) {
28
+ try {
29
+ const stat = await fs.stat(provisioningLockPath(baseRoot, dirName));
30
+ return { mtime: stat.mtime.toISOString(), ageMs: Math.max(0, Date.now() - stat.mtimeMs) };
31
+ }
32
+ catch {
33
+ // Missing, or unreadable for some other reason -- either way, "no signal"
34
+ // is the safe default rather than failing the whole scan.
35
+ return undefined;
36
+ }
37
+ }
38
+ /** Stat branch.json's mtime for a corrupt-metadata entry. Never throws. */
39
+ async function readMetaMtime(branchRoot) {
40
+ try {
41
+ const stat = await fs.stat(path.join(branchRoot, '.canopy-meta', 'branch.json'));
42
+ return stat.mtime.toISOString();
43
+ }
44
+ catch {
45
+ return undefined;
46
+ }
47
+ }
48
+ /**
49
+ * Scan every directory under `baseRoot` and classify it as healthy,
50
+ * corrupt-metadata, or orphan. Never throws for a single bad directory --
51
+ * one dir's unreadable/unparseable metadata must not take down the whole
52
+ * scan (same rationale as the registry's own quarantine behavior).
53
+ *
54
+ * Tolerates a missing `baseRoot` (returns `[]`) so the admin endpoint can
55
+ * call this unconditionally without a pre-existence check.
56
+ */
57
+ export async function scanBranchHealth(baseRoot, opts) {
58
+ const resolvedRoot = path.resolve(baseRoot);
59
+ const sanitizedBaseBranchName = sanitizeBranchName(opts.baseBranchName);
60
+ let dirEntries;
61
+ try {
62
+ dirEntries = await fs.readdir(resolvedRoot, { withFileTypes: true });
63
+ }
64
+ catch (err) {
65
+ if (isNotFoundError(err))
66
+ return [];
67
+ throw err;
68
+ }
69
+ const entries = [];
70
+ for (const dirEntry of dirEntries) {
71
+ // Same skip rules as BranchRegistry.scanBranchDirectories: non-dirs and
72
+ // dot-prefixed names (`.canopy-meta`-style, and our own `.trash-*`/
73
+ // `.*.init.lock` markers) are never branch directories.
74
+ if (!dirEntry.isDirectory() || dirEntry.name.startsWith('.'))
75
+ continue;
76
+ const dirName = dirEntry.name;
77
+ const branchRoot = path.join(resolvedRoot, dirName);
78
+ const isBaseBranch = dirName === sanitizedBaseBranchName;
79
+ let meta = null;
80
+ let loadErr = null;
81
+ try {
82
+ meta = await BranchMetadataFileManager.loadOnly(branchRoot);
83
+ }
84
+ catch (err) {
85
+ loadErr = err;
86
+ }
87
+ if (loadErr) {
88
+ // Both the documented BranchMetadataCorruptError (bad JSON) and any
89
+ // other loadOnly failure (EACCES, EISDIR from a directory named
90
+ // branch.json, etc.) land here: all are "needs admin attention",
91
+ // and none may throw out of the scan.
92
+ //
93
+ // [MEDIUM-2] parseError is served to the browser via the admin
94
+ // branch-health endpoint, so it must never leak the absolute
95
+ // workspace path. BranchMetadataCorruptError carries `parseCause`
96
+ // (the raw JSON.parse message, path-free) for exactly this --
97
+ // `message` embeds branchRoot and is for server logs only. Other node
98
+ // errors (EISDIR from a directory named branch.json, EACCES, etc.)
99
+ // embed the path in their `message`, so only their `code` is safe to
100
+ // surface; non-node errors fall back to getErrorMessage.
101
+ const parseError = loadErr instanceof BranchMetadataCorruptError
102
+ ? loadErr.parseCause
103
+ : isNodeError(loadErr)
104
+ ? (loadErr.code ?? 'read error')
105
+ : getErrorMessage(loadErr);
106
+ const [metaMtime, provisioningLock] = await Promise.all([
107
+ readMetaMtime(branchRoot),
108
+ readProvisioningLock(resolvedRoot, dirName),
109
+ ]);
110
+ entries.push({
111
+ dirName,
112
+ kind: 'corrupt-metadata',
113
+ ...(isBaseBranch ? { isBaseBranch } : {}),
114
+ parseError,
115
+ ...(metaMtime ? { metaMtime } : {}),
116
+ ...(provisioningLock ? { provisioningLock } : {}),
117
+ });
118
+ continue;
119
+ }
120
+ if (meta) {
121
+ entries.push({
122
+ dirName,
123
+ kind: 'healthy',
124
+ ...(isBaseBranch ? { isBaseBranch } : {}),
125
+ branch: meta.branch,
126
+ });
127
+ continue;
128
+ }
129
+ // meta === null, no loadErr: no branch.json at all -- orphan.
130
+ const [gitDirStat, dirStat, provisioningLock] = await Promise.all([
131
+ fs.stat(path.join(branchRoot, '.git')).catch(() => null),
132
+ fs.stat(branchRoot).catch(() => null),
133
+ readProvisioningLock(resolvedRoot, dirName),
134
+ ]);
135
+ entries.push({
136
+ dirName,
137
+ kind: 'orphan',
138
+ ...(isBaseBranch ? { isBaseBranch } : {}),
139
+ hasGitDir: gitDirStat !== null,
140
+ ...(dirStat
141
+ ? {
142
+ dirMtime: dirStat.mtime.toISOString(),
143
+ ageMs: Math.max(0, Date.now() - dirStat.mtimeMs),
144
+ }
145
+ : {}),
146
+ ...(provisioningLock ? { provisioningLock } : {}),
147
+ });
148
+ }
149
+ return entries;
150
+ }
151
+ //# sourceMappingURL=branch-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-health.js","sourceRoot":"","sources":["../src/branch-health.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,26 @@ export interface BranchMetadataFile {
9
9
  export declare class BranchMetadataConflictError extends Error {
10
10
  constructor(message?: string);
11
11
  }
12
+ /**
13
+ * branch.json exists but its content is not valid JSON. Distinguished from
14
+ * provisioning/IO failures so callers can degrade instead of failing hard:
15
+ * the registry scan quarantines the branch, and the request handler keeps
16
+ * serving (with empty internal groups) when the BASE branch is the corrupt
17
+ * one — otherwise the admin recovery surface would be unreachable exactly
18
+ * when it is needed.
19
+ */
20
+ export declare class BranchMetadataCorruptError extends Error {
21
+ readonly branchRoot: string;
22
+ /**
23
+ * [MEDIUM-2] The raw JSON.parse failure message (e.g. "Unexpected token
24
+ * ..."), with no embedded path. `message` above deliberately keeps the
25
+ * full `branchRoot`-qualified text for server logs; `parseCause` is what
26
+ * callers should surface to clients (see branch-health.ts's `parseError`)
27
+ * so the admin branch-health scan never leaks the absolute workspace path.
28
+ */
29
+ readonly parseCause: string;
30
+ constructor(branchRoot: string, cause: string);
31
+ }
12
32
  /**
13
33
  * Manages branch.json — branch status and access ACLs, both security-adjacent
14
34
  * state — under `.canopy-meta/` in a branch workspace.
@@ -108,6 +128,17 @@ export declare class BranchMetadataFileManager {
108
128
  export interface BranchMetadataUpdate {
109
129
  branch?: Partial<Omit<BranchMetadata, 'createdAt' | 'updatedAt'>>;
110
130
  }
131
+ /**
132
+ * Build the metadata update for archiving a branch because its PR merged.
133
+ * Shared by the worker's merge-poll (CmsWorker.pollMergeState) and the
134
+ * manual markAsMerged API (api/branch-merge.ts) so both paths produce
135
+ * identical archived-branch metadata.
136
+ *
137
+ * Deliberately omits pullRequestNumber/pullRequestUrl: save()'s merge keeps
138
+ * whatever the existing metadata already has for fields not present in the
139
+ * incoming update, so the PR number/URL recorded earlier survive untouched.
140
+ */
141
+ export declare function buildMergedBranchUpdate(branchName: string, now?: Date): NonNullable<BranchMetadataUpdate['branch']>;
111
142
  /**
112
143
  * Get a BranchMetadataFileManager instance configured for registry invalidation.
113
144
  * Use this in API handlers to ensure registry cache is invalidated on updates.
@@ -1 +1 @@
1
- {"version":3,"file":"branch-metadata.d.ts","sourceRoot":"","sources":["../src/branch-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAA;AAG1E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAarD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,cAAc,CAAA;CACvB;AAID,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,OAAO,SAAwD;CAI5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO;IAOP;;;OAGG;WACU,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAa7E;;;OAGG;IACH,MAAM,CAAC,GAAG,CACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,yBAAyB;YAId,IAAI;IAclB;;;;;;;;;;;;;OAaG;YACW,KAAK;IAenB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoEvE;;OAEG;YACW,kBAAkB;CAIjC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAAA;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9B,yBAEF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAiB/B,CAAA"}
1
+ {"version":3,"file":"branch-metadata.d.ts","sourceRoot":"","sources":["../src/branch-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,SAAS,CAAA;AAG1E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAarD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,cAAc,CAAA;CACvB;AAID,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,OAAO,SAAwD;CAI5E;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;gBAEf,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAM9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO;IAOP;;;OAGG;WACU,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAiB7E;;;OAGG;IACH,MAAM,CAAC,GAAG,CACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,yBAAyB;YAId,IAAI;IAclB;;;;;;;;;;;;;OAaG;YACW,KAAK;IAenB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwEvE;;OAEG;YACW,kBAAkB;CAIjC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAAA;CAClE;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,IAAiB,GACrB,WAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAO7C;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9B,yBAEF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAiB/B,CAAA"}
@@ -14,6 +14,22 @@ export class BranchMetadataConflictError extends Error {
14
14
  this.name = 'BranchMetadataConflictError';
15
15
  }
16
16
  }
17
+ /**
18
+ * branch.json exists but its content is not valid JSON. Distinguished from
19
+ * provisioning/IO failures so callers can degrade instead of failing hard:
20
+ * the registry scan quarantines the branch, and the request handler keeps
21
+ * serving (with empty internal groups) when the BASE branch is the corrupt
22
+ * one — otherwise the admin recovery surface would be unreachable exactly
23
+ * when it is needed.
24
+ */
25
+ export class BranchMetadataCorruptError extends Error {
26
+ constructor(branchRoot, cause) {
27
+ super(`Corrupt branch metadata in '${branchRoot}': ${cause}`);
28
+ this.name = 'BranchMetadataCorruptError';
29
+ this.branchRoot = branchRoot;
30
+ this.parseCause = cause;
31
+ }
32
+ }
17
33
  /**
18
34
  * Manages branch.json — branch status and access ACLs, both security-adjacent
19
35
  * state — under `.canopy-meta/` in a branch workspace.
@@ -53,7 +69,8 @@ export class BranchMetadataFileManager {
53
69
  * Use this for read-only access (e.g., in registry scanning or loadBranchContext).
54
70
  */
55
71
  static async loadOnly(branchRoot) {
56
- const filePath = path.join(path.resolve(branchRoot), BRANCH_META_DIR, BRANCH_META_FILE);
72
+ const resolvedRoot = path.resolve(branchRoot);
73
+ const filePath = path.join(resolvedRoot, BRANCH_META_DIR, BRANCH_META_FILE);
57
74
  try {
58
75
  const raw = await fs.readFile(filePath, 'utf8');
59
76
  return JSON.parse(raw);
@@ -62,6 +79,9 @@ export class BranchMetadataFileManager {
62
79
  if (isNotFoundError(err)) {
63
80
  return null;
64
81
  }
82
+ if (err instanceof SyntaxError) {
83
+ throw new BranchMetadataCorruptError(resolvedRoot, err.message);
84
+ }
65
85
  throw err;
66
86
  }
67
87
  }
@@ -174,6 +194,10 @@ export class BranchMetadataFileManager {
174
194
  createdAt: existing?.branch.createdAt ?? defaults.createdAt,
175
195
  // Fork point is recorded once at creation; later saves must not move it
176
196
  baseBranch: existing?.branch.baseBranch ?? incoming.branch?.baseBranch,
197
+ // Always stamped fresh — the spreads above would otherwise let
198
+ // the existing (creation-time) value win forever, freezing the
199
+ // timestamp the editor's Branches panel sorts and displays by
200
+ updatedAt: now,
177
201
  },
178
202
  };
179
203
  const written = await this.write(merged, version);
@@ -204,6 +228,24 @@ export class BranchMetadataFileManager {
204
228
  await registry.invalidate();
205
229
  }
206
230
  }
231
+ /**
232
+ * Build the metadata update for archiving a branch because its PR merged.
233
+ * Shared by the worker's merge-poll (CmsWorker.pollMergeState) and the
234
+ * manual markAsMerged API (api/branch-merge.ts) so both paths produce
235
+ * identical archived-branch metadata.
236
+ *
237
+ * Deliberately omits pullRequestNumber/pullRequestUrl: save()'s merge keeps
238
+ * whatever the existing metadata already has for fields not present in the
239
+ * incoming update, so the PR number/URL recorded earlier survive untouched.
240
+ */
241
+ export function buildMergedBranchUpdate(branchName, now = new Date()) {
242
+ return {
243
+ name: branchName,
244
+ status: 'archived',
245
+ pullRequestState: 'merged',
246
+ mergedAt: now.toISOString(),
247
+ };
248
+ }
207
249
  /**
208
250
  * Get a BranchMetadataFileManager instance configured for registry invalidation.
209
251
  * Use this in API handlers to ensure registry cache is invalidated on updates.
@@ -1 +1 @@
1
- {"version":3,"file":"branch-metadata.js","sourceRoot":"","sources":["../src/branch-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-metadata.js","sourceRoot":"","sources":["../src/branch-metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"branch-registry.d.ts","sourceRoot":"","sources":["../src/branch-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AA4B5C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB;;;;OAIG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IAEjC,4GAA4G;IAC5G,OAAO,CAAC,aAAa,CAAwC;IAE7D,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB,CAAI;gBAEnB,IAAI,EAAE,MAAM;IAOxB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BtC;;;;;;;;;;OAUG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAW3D,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;;;OASG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBjC;;;;;;OAMG;YACW,UAAU;YAYV,iBAAiB;IA4C/B;;;;OAIG;cACa,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAiClE"}
1
+ {"version":3,"file":"branch-registry.d.ts","sourceRoot":"","sources":["../src/branch-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AA4B5C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB;;;;OAIG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IAEjC,4GAA4G;IAC5G,OAAO,CAAC,aAAa,CAAwC;IAE7D,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB,CAAI;gBAEnB,IAAI,EAAE,MAAM;IAOxB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BtC;;;;;;;;;;OAUG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAW3D,OAAO,CAAC,kBAAkB;IAO1B;;;;;;;;;OASG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBjC;;;;;;OAMG;YACW,UAAU;YAYV,iBAAiB;IA4C/B;;;;OAIG;cACa,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CA+ClE"}
@@ -232,7 +232,19 @@ export class BranchRegistry {
232
232
  continue;
233
233
  }
234
234
  const branchRoot = path.join(this.root, entry.name);
235
- const meta = await BranchMetadataFileManager.loadOnly(branchRoot);
235
+ // Quarantine, don't propagate: one branch's corrupt/unreadable
236
+ // branch.json must not take down the whole listing (a rethrow here
237
+ // would 500 GET /branches for every branch). The broken branch just
238
+ // drops out of the registry; it stays on disk for the admin
239
+ // branch-health surface to report and repair.
240
+ let meta;
241
+ try {
242
+ meta = await BranchMetadataFileManager.loadOnly(branchRoot);
243
+ }
244
+ catch (err) {
245
+ console.warn(`CanopyCMS: Skipping branch directory '${entry.name}' during registry scan: ${getErrorMessage(err)}`);
246
+ continue;
247
+ }
236
248
  if (meta) {
237
249
  branches.push({
238
250
  branch: meta.branch,
@@ -1 +1 @@
1
- {"version":3,"file":"branch-registry.js","sourceRoot":"","sources":["../src/branch-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch-registry.js","sourceRoot":"","sources":["../src/branch-registry.ts"],"names":[],"mappings":"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"}