emdash-emit 0.1.17 → 0.1.25

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 (216) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/README.md +22 -11
  3. package/dist/cli/commands/new.d.ts.map +1 -1
  4. package/dist/cli/commands/new.js +30 -0
  5. package/dist/cli/commands/new.js.map +1 -1
  6. package/dist/cli/commands/pull.d.ts +2 -10
  7. package/dist/cli/commands/pull.d.ts.map +1 -1
  8. package/dist/cli/commands/pull.js +12 -30
  9. package/dist/cli/commands/pull.js.map +1 -1
  10. package/dist/cli/commands/status.d.ts.map +1 -1
  11. package/dist/cli/commands/status.js +7 -2
  12. package/dist/cli/commands/status.js.map +1 -1
  13. package/dist/client/api.d.ts +20 -0
  14. package/dist/client/api.d.ts.map +1 -1
  15. package/dist/client/api.js +89 -0
  16. package/dist/client/api.js.map +1 -1
  17. package/dist/client/auth.d.ts.map +1 -1
  18. package/dist/client/auth.js +2 -1
  19. package/dist/client/auth.js.map +1 -1
  20. package/dist/client/endpoints.d.ts +19 -0
  21. package/dist/client/endpoints.d.ts.map +1 -0
  22. package/dist/client/endpoints.js +69 -0
  23. package/dist/client/endpoints.js.map +1 -0
  24. package/dist/client/http.d.ts +4 -2
  25. package/dist/client/http.d.ts.map +1 -1
  26. package/dist/client/http.js.map +1 -1
  27. package/dist/client/lock.d.ts.map +1 -1
  28. package/dist/client/lock.js +4 -3
  29. package/dist/client/lock.js.map +1 -1
  30. package/dist/client/mapper.d.ts.map +1 -1
  31. package/dist/client/mapper.js +5 -3
  32. package/dist/client/mapper.js.map +1 -1
  33. package/dist/client/media-id.d.ts +2 -0
  34. package/dist/client/media-id.d.ts.map +1 -0
  35. package/dist/client/media-id.js +23 -0
  36. package/dist/client/media-id.js.map +1 -0
  37. package/dist/client/media.d.ts +8 -7
  38. package/dist/client/media.d.ts.map +1 -1
  39. package/dist/client/media.js +58 -17
  40. package/dist/client/media.js.map +1 -1
  41. package/dist/db/baseline.d.ts +38 -0
  42. package/dist/db/baseline.d.ts.map +1 -0
  43. package/dist/db/baseline.js +74 -0
  44. package/dist/db/baseline.js.map +1 -0
  45. package/dist/db/cache.d.ts +8 -2
  46. package/dist/db/cache.d.ts.map +1 -1
  47. package/dist/db/cache.js +24 -2
  48. package/dist/db/cache.js.map +1 -1
  49. package/dist/index.d.ts +4 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +4 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  54. package/dist/mcp/tools/sync-new.js +42 -1
  55. package/dist/mcp/tools/sync-new.js.map +1 -1
  56. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  57. package/dist/mcp/tools/sync-pull.js +15 -2
  58. package/dist/mcp/tools/sync-pull.js.map +1 -1
  59. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  60. package/dist/mcp/tools/sync-status.js +1 -0
  61. package/dist/mcp/tools/sync-status.js.map +1 -1
  62. package/dist/presentation/article_report.d.ts +40 -0
  63. package/dist/presentation/article_report.d.ts.map +1 -0
  64. package/dist/presentation/article_report.js +80 -0
  65. package/dist/presentation/article_report.js.map +1 -0
  66. package/dist/sync/bylines.d.ts.map +1 -1
  67. package/dist/sync/bylines.js +2 -1
  68. package/dist/sync/bylines.js.map +1 -1
  69. package/dist/sync/conflicts.js +1 -1
  70. package/dist/sync/conflicts.js.map +1 -1
  71. package/dist/sync/delete.d.ts +0 -5
  72. package/dist/sync/delete.d.ts.map +1 -1
  73. package/dist/sync/delete.js +5 -11
  74. package/dist/sync/delete.js.map +1 -1
  75. package/dist/sync/diff.d.ts.map +1 -1
  76. package/dist/sync/diff.js +13 -9
  77. package/dist/sync/diff.js.map +1 -1
  78. package/dist/sync/doctor.d.ts.map +1 -1
  79. package/dist/sync/doctor.js +11 -14
  80. package/dist/sync/doctor.js.map +1 -1
  81. package/dist/sync/guards.d.ts +5 -0
  82. package/dist/sync/guards.d.ts.map +1 -1
  83. package/dist/sync/guards.js +62 -1
  84. package/dist/sync/guards.js.map +1 -1
  85. package/dist/sync/media/body_scan.d.ts.map +1 -1
  86. package/dist/sync/media/body_scan.js +9 -3
  87. package/dist/sync/media/body_scan.js.map +1 -1
  88. package/dist/sync/media/companions.d.ts +2 -9
  89. package/dist/sync/media/companions.d.ts.map +1 -1
  90. package/dist/sync/media/companions.js +5 -23
  91. package/dist/sync/media/companions.js.map +1 -1
  92. package/dist/sync/media/mirror_item.d.ts.map +1 -1
  93. package/dist/sync/media/mirror_item.js +33 -21
  94. package/dist/sync/media/mirror_item.js.map +1 -1
  95. package/dist/sync/media/pull_article.d.ts.map +1 -1
  96. package/dist/sync/media/pull_article.js +3 -2
  97. package/dist/sync/media/pull_article.js.map +1 -1
  98. package/dist/sync/media/pull_library.d.ts.map +1 -1
  99. package/dist/sync/media/pull_library.js +16 -11
  100. package/dist/sync/media/pull_library.js.map +1 -1
  101. package/dist/sync/media/remote_index.d.ts.map +1 -1
  102. package/dist/sync/media/remote_index.js +2 -1
  103. package/dist/sync/media/remote_index.js.map +1 -1
  104. package/dist/sync/media/types.d.ts +4 -3
  105. package/dist/sync/media/types.d.ts.map +1 -1
  106. package/dist/sync/media/types.js.map +1 -1
  107. package/dist/sync/merge.d.ts +1 -1
  108. package/dist/sync/merge.d.ts.map +1 -1
  109. package/dist/sync/merge.js +50 -17
  110. package/dist/sync/merge.js.map +1 -1
  111. package/dist/sync/new.d.ts +11 -0
  112. package/dist/sync/new.d.ts.map +1 -1
  113. package/dist/sync/new.js +81 -4
  114. package/dist/sync/new.js.map +1 -1
  115. package/dist/sync/preflight.d.ts +10 -2
  116. package/dist/sync/preflight.d.ts.map +1 -1
  117. package/dist/sync/preflight.js +119 -17
  118. package/dist/sync/preflight.js.map +1 -1
  119. package/dist/sync/pull.d.ts +6 -44
  120. package/dist/sync/pull.d.ts.map +1 -1
  121. package/dist/sync/pull.js +154 -207
  122. package/dist/sync/pull.js.map +1 -1
  123. package/dist/sync/push/commit.d.ts +61 -0
  124. package/dist/sync/push/commit.d.ts.map +1 -0
  125. package/dist/sync/push/commit.js +258 -0
  126. package/dist/sync/push/commit.js.map +1 -0
  127. package/dist/sync/push/guards.d.ts +33 -0
  128. package/dist/sync/push/guards.d.ts.map +1 -0
  129. package/dist/sync/push/guards.js +110 -0
  130. package/dist/sync/push/guards.js.map +1 -0
  131. package/dist/sync/push/index.d.ts +9 -0
  132. package/dist/sync/push/index.d.ts.map +1 -0
  133. package/dist/sync/push/index.js +372 -0
  134. package/dist/sync/push/index.js.map +1 -0
  135. package/dist/sync/push/media_stage.d.ts +56 -0
  136. package/dist/sync/push/media_stage.d.ts.map +1 -0
  137. package/dist/sync/push/media_stage.js +338 -0
  138. package/dist/sync/push/media_stage.js.map +1 -0
  139. package/dist/sync/push/merge_stage.d.ts +37 -0
  140. package/dist/sync/push/merge_stage.d.ts.map +1 -0
  141. package/dist/sync/push/merge_stage.js +257 -0
  142. package/dist/sync/push/merge_stage.js.map +1 -0
  143. package/dist/sync/push/preflight_stage.d.ts +6 -0
  144. package/dist/sync/push/preflight_stage.d.ts.map +1 -0
  145. package/dist/sync/push/preflight_stage.js +40 -0
  146. package/dist/sync/push/preflight_stage.js.map +1 -0
  147. package/dist/sync/push/tax_audit.d.ts +24 -0
  148. package/dist/sync/push/tax_audit.d.ts.map +1 -0
  149. package/dist/sync/push/tax_audit.js +70 -0
  150. package/dist/sync/push/tax_audit.js.map +1 -0
  151. package/dist/sync/push/taxonomy_plan.d.ts +36 -0
  152. package/dist/sync/push/taxonomy_plan.d.ts.map +1 -0
  153. package/dist/sync/push/taxonomy_plan.js +136 -0
  154. package/dist/sync/push/taxonomy_plan.js.map +1 -0
  155. package/dist/sync/push/transport.d.ts +14 -0
  156. package/dist/sync/push/transport.d.ts.map +1 -0
  157. package/dist/sync/push/transport.js +74 -0
  158. package/dist/sync/push/transport.js.map +1 -0
  159. package/dist/sync/push/types.d.ts +62 -0
  160. package/dist/sync/push/types.d.ts.map +1 -0
  161. package/dist/sync/push/types.js +23 -0
  162. package/dist/sync/push/types.js.map +1 -0
  163. package/dist/sync/push.d.ts +2 -57
  164. package/dist/sync/push.d.ts.map +1 -1
  165. package/dist/sync/push.js +2 -1184
  166. package/dist/sync/push.js.map +1 -1
  167. package/dist/sync/status.d.ts +3 -0
  168. package/dist/sync/status.d.ts.map +1 -1
  169. package/dist/sync/status.js +18 -8
  170. package/dist/sync/status.js.map +1 -1
  171. package/dist/sync/taxonomies.d.ts.map +1 -1
  172. package/dist/sync/taxonomies.js +21 -9
  173. package/dist/sync/taxonomies.js.map +1 -1
  174. package/dist/sync/terms.d.ts.map +1 -1
  175. package/dist/sync/terms.js +2 -1
  176. package/dist/sync/terms.js.map +1 -1
  177. package/dist/sync/workspace/commit.d.ts +46 -0
  178. package/dist/sync/workspace/commit.d.ts.map +1 -0
  179. package/dist/sync/workspace/commit.js +85 -0
  180. package/dist/sync/workspace/commit.js.map +1 -0
  181. package/dist/sync/workspace/index.d.ts +42 -0
  182. package/dist/sync/workspace/index.d.ts.map +1 -0
  183. package/dist/sync/workspace/index.js +125 -0
  184. package/dist/sync/workspace/index.js.map +1 -0
  185. package/dist/utils/disk-spelling.d.ts +26 -0
  186. package/dist/utils/disk-spelling.d.ts.map +1 -0
  187. package/dist/utils/disk-spelling.js +51 -0
  188. package/dist/utils/disk-spelling.js.map +1 -0
  189. package/dist/utils/draft-revision.d.ts +15 -0
  190. package/dist/utils/draft-revision.d.ts.map +1 -0
  191. package/dist/utils/draft-revision.js +36 -0
  192. package/dist/utils/draft-revision.js.map +1 -0
  193. package/dist/utils/frontmatter.d.ts +21 -2
  194. package/dist/utils/frontmatter.d.ts.map +1 -1
  195. package/dist/utils/frontmatter.js +71 -10
  196. package/dist/utils/frontmatter.js.map +1 -1
  197. package/dist/utils/media-body-refs.d.ts +24 -0
  198. package/dist/utils/media-body-refs.d.ts.map +1 -1
  199. package/dist/utils/media-body-refs.js +51 -0
  200. package/dist/utils/media-body-refs.js.map +1 -1
  201. package/dist/utils/media-companion.d.ts +13 -0
  202. package/dist/utils/media-companion.d.ts.map +1 -0
  203. package/dist/utils/media-companion.js +42 -0
  204. package/dist/utils/media-companion.js.map +1 -0
  205. package/dist/utils/media-id.d.ts +46 -0
  206. package/dist/utils/media-id.d.ts.map +1 -0
  207. package/dist/utils/media-id.js +84 -0
  208. package/dist/utils/media-id.js.map +1 -0
  209. package/dist/utils/naming.d.ts.map +1 -1
  210. package/dist/utils/naming.js +3 -2
  211. package/dist/utils/naming.js.map +1 -1
  212. package/dist/utils/ulid.d.ts +31 -0
  213. package/dist/utils/ulid.d.ts.map +1 -0
  214. package/dist/utils/ulid.js +65 -0
  215. package/dist/utils/ulid.js.map +1 -0
  216. package/package.json +1 -1
@@ -0,0 +1,42 @@
1
+ /** Subdirectory (under a collection) reserved for preserved divergent local copies. */
2
+ export declare const CONFLICTS_SUBDIR = "conflicts";
3
+ /**
4
+ * Calculates SHA-256 hash of a string.
5
+ */
6
+ export declare function calculateHash(content: string): string;
7
+ /**
8
+ * Detects a workspace-relative rescue-copy path (`<collection>/conflicts/<file>.md`).
9
+ *
10
+ * Canonical articles always live at `<collection>/draft|published/<file>.md`, so matching the
11
+ * second path segment is sufficient and avoids false positives from a slug that merely contains
12
+ * the word "conflicts". Used by the push guard (QUARANTINED_COPY_NOT_PUSHABLE) so a rescue copy
13
+ * can never silently overwrite the canonical article it was preserved from.
14
+ */
15
+ export declare function isQuarantinedRelativePath(relPath: string): boolean;
16
+ /**
17
+ * Finds all existing Markdown files in `<collection>/{draft,published}/` whose filename
18
+ * contains the given 26-character ULID. Used to preserve date prefixes and clean up
19
+ * stale duplicate files when pulling an uncached article.
20
+ */
21
+ export declare function findLocalFilesByUlid(workspaceRoot: string, collection: string, id: string): string[];
22
+ /**
23
+ * Resolves canonical relative path for an article symmetrically between
24
+ * batch fast-path and full pull (EMIT-005 / R7).
25
+ */
26
+ export declare function resolveCanonicalArticlePath(collection: string, status: string, id: string, title: string, dates: {
27
+ publishedAt?: string | null;
28
+ createdAt?: string | null;
29
+ updatedAt?: string | null;
30
+ }, existingPrefix?: string | null): string;
31
+ /**
32
+ * Preserves a local Markdown copy verbatim under `<collection>/conflicts/` before Emit
33
+ * overwrites or removes the original path. Used to guarantee that no divergent local
34
+ * content (e.g. an uncached file written by another tool or an older serializer) is
35
+ * silently discarded during a pull.
36
+ */
37
+ export declare function quarantineLocalCopy(workspaceRoot: string, collection: string, sourceRelPath: string, content: string, options?: {
38
+ isForce?: boolean;
39
+ existingCopyHash?: string | null;
40
+ }): string | null;
41
+ export { commitArticleSnapshot, type ArticleCommitInput, type ArticleCommitResult, } from './commit.js';
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync/workspace/index.ts"],"names":[],"mappings":"AA4BA,uFAAuF;AACvF,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOlE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,EAAE,CAiBV;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IACL,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,EACD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CAIR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACA,MAAM,GAAG,IAAI,CAuCf;AAED,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Copyright (C) 2026 SPORT-SERVICE RS★R
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+ import crypto from 'node:crypto';
23
+ import fs from 'node:fs';
24
+ import path from 'node:path';
25
+ import { extractUlidFromFilename } from '../../utils/naming.js';
26
+ import { computeArticleRelativePath } from '../../utils/frontmatter.js';
27
+ /** Subdirectory (under a collection) reserved for preserved divergent local copies. */
28
+ export const CONFLICTS_SUBDIR = 'conflicts';
29
+ /**
30
+ * Calculates SHA-256 hash of a string.
31
+ */
32
+ export function calculateHash(content) {
33
+ return crypto.createHash('sha256').update(content, 'utf8').digest('hex');
34
+ }
35
+ /**
36
+ * Detects a workspace-relative rescue-copy path (`<collection>/conflicts/<file>.md`).
37
+ *
38
+ * Canonical articles always live at `<collection>/draft|published/<file>.md`, so matching the
39
+ * second path segment is sufficient and avoids false positives from a slug that merely contains
40
+ * the word "conflicts". Used by the push guard (QUARANTINED_COPY_NOT_PUSHABLE) so a rescue copy
41
+ * can never silently overwrite the canonical article it was preserved from.
42
+ */
43
+ export function isQuarantinedRelativePath(relPath) {
44
+ const segments = relPath
45
+ .split(path.sep)
46
+ .join('/')
47
+ .split('/')
48
+ .filter((seg) => seg.length > 0);
49
+ return segments.length >= 3 && segments[1] === CONFLICTS_SUBDIR;
50
+ }
51
+ /**
52
+ * Finds all existing Markdown files in `<collection>/{draft,published}/` whose filename
53
+ * contains the given 26-character ULID. Used to preserve date prefixes and clean up
54
+ * stale duplicate files when pulling an uncached article.
55
+ */
56
+ export function findLocalFilesByUlid(workspaceRoot, collection, id) {
57
+ const matches = [];
58
+ for (const sub of ['draft', 'published']) {
59
+ const subDir = path.join(workspaceRoot, collection, sub);
60
+ if (!fs.existsSync(subDir))
61
+ continue;
62
+ try {
63
+ for (const file of fs.readdirSync(subDir)) {
64
+ if (!file.endsWith('.md'))
65
+ continue;
66
+ if (extractUlidFromFilename(file) === id) {
67
+ matches.push(path.join(collection, sub, file));
68
+ }
69
+ }
70
+ }
71
+ catch {
72
+ // Ignore directory read errors
73
+ }
74
+ }
75
+ return matches;
76
+ }
77
+ /**
78
+ * Resolves canonical relative path for an article symmetrically between
79
+ * batch fast-path and full pull (EMIT-005 / R7).
80
+ */
81
+ export function resolveCanonicalArticlePath(collection, status, id, title, dates, existingPrefix) {
82
+ const dateInput = dates.publishedAt || existingPrefix || dates.createdAt || dates.updatedAt || null;
83
+ return computeArticleRelativePath(collection, status, id, title, dateInput);
84
+ }
85
+ /**
86
+ * Preserves a local Markdown copy verbatim under `<collection>/conflicts/` before Emit
87
+ * overwrites or removes the original path. Used to guarantee that no divergent local
88
+ * content (e.g. an uncached file written by another tool or an older serializer) is
89
+ * silently discarded during a pull.
90
+ */
91
+ export function quarantineLocalCopy(workspaceRoot, collection, sourceRelPath, content, options) {
92
+ const conflictsDir = path.join(workspaceRoot, collection, CONFLICTS_SUBDIR);
93
+ const baseName = path.basename(sourceRelPath).replace(/\.md$/i, '');
94
+ const suffixExt = options?.isForce ? '.local-dropped.md' : '.conflict.md';
95
+ let quarantineRel = path.join(collection, CONFLICTS_SUBDIR, `${baseName}${suffixExt}`);
96
+ const quarantineFull = path.join(workspaceRoot, quarantineRel);
97
+ try {
98
+ fs.mkdirSync(conflictsDir, { recursive: true });
99
+ // Deduplication check: if canonical conflict file exists and is unedited, overwrite without incrementing
100
+ if (!options?.isForce && fs.existsSync(quarantineFull)) {
101
+ const existingDiskHash = calculateHash(fs.readFileSync(quarantineFull, 'utf8'));
102
+ if ((options?.existingCopyHash && existingDiskHash === options.existingCopyHash) ||
103
+ existingDiskHash === calculateHash(content)) {
104
+ fs.writeFileSync(quarantineFull, content, 'utf8');
105
+ return quarantineRel;
106
+ }
107
+ }
108
+ let suffix = 2;
109
+ while (fs.existsSync(path.join(workspaceRoot, quarantineRel))) {
110
+ quarantineRel = path.join(collection, CONFLICTS_SUBDIR, options?.isForce
111
+ ? `${baseName}.local-dropped-${suffix}.md`
112
+ : `${baseName}.conflict-${suffix}.md`);
113
+ suffix += 1;
114
+ if (suffix > 100)
115
+ return null;
116
+ }
117
+ fs.writeFileSync(path.join(workspaceRoot, quarantineRel), content, 'utf8');
118
+ return quarantineRel;
119
+ }
120
+ catch {
121
+ return null;
122
+ }
123
+ }
124
+ export { commitArticleSnapshot, } from './commit.js';
125
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sync/workspace/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import fs from 'node:fs';
2
+ export interface DiskSpelling {
3
+ preferEncodedTaxonomy: boolean;
4
+ preferLegacyMediaRef: boolean;
5
+ hasDraftRevision: boolean;
6
+ }
7
+ /**
8
+ * Derives the active disk spelling dimensions across all 3 representation axes:
9
+ * 1. taxonomy encoding (decoded vs percent-encoded)
10
+ * 2. media references (article-relative vs depth-free legacy)
11
+ * 3. draft revision (clean published vs uncommitted draft revision)
12
+ */
13
+ export declare function resolveDiskSpelling(diskContent: string, syncState?: {
14
+ remoteRev?: string | null;
15
+ status?: string | null;
16
+ } | null): DiskSpelling;
17
+ /**
18
+ * Converts canonical Markdown into the exact disk spelling for the workspace.
19
+ * Ensures consistent serialization between pull, commit, diff, and status.
20
+ */
21
+ export declare function renderForDisk(canonicalContent: string, spelling: DiskSpelling, ctx: {
22
+ workspaceRoot: string;
23
+ articleRelPath: string;
24
+ fs?: typeof fs;
25
+ }): string;
26
+ //# sourceMappingURL=disk-spelling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disk-spelling.d.ts","sourceRoot":"","sources":["../../src/utils/disk-spelling.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,SAAS,CAAC;AAKzB,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvE,YAAY,CAMd;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;CAChB,GACA,MAAM,CAOR"}
@@ -0,0 +1,51 @@
1
+ /*
2
+ * Copyright (C) 2026 SPORT-SERVICE RS★R
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+ import fs from 'node:fs';
23
+ import { carriesPercentEncodedTaxonomy } from './frontmatter.js';
24
+ import { carriesDepthFreeMediaRef, localizeArticleMediaRefs } from './media-body-refs.js';
25
+ import { hasUncommittedDraftRevision } from './draft-revision.js';
26
+ /**
27
+ * Derives the active disk spelling dimensions across all 3 representation axes:
28
+ * 1. taxonomy encoding (decoded vs percent-encoded)
29
+ * 2. media references (article-relative vs depth-free legacy)
30
+ * 3. draft revision (clean published vs uncommitted draft revision)
31
+ */
32
+ export function resolveDiskSpelling(diskContent, syncState) {
33
+ return {
34
+ preferEncodedTaxonomy: carriesPercentEncodedTaxonomy(diskContent),
35
+ preferLegacyMediaRef: carriesDepthFreeMediaRef(diskContent),
36
+ hasDraftRevision: hasUncommittedDraftRevision(syncState),
37
+ };
38
+ }
39
+ /**
40
+ * Converts canonical Markdown into the exact disk spelling for the workspace.
41
+ * Ensures consistent serialization between pull, commit, diff, and status.
42
+ */
43
+ export function renderForDisk(canonicalContent, spelling, ctx) {
44
+ return localizeArticleMediaRefs(canonicalContent, {
45
+ workspaceRoot: ctx.workspaceRoot,
46
+ articleRelPath: ctx.articleRelPath,
47
+ fs: ctx.fs || fs,
48
+ preferLegacyRef: spelling.preferLegacyMediaRef,
49
+ });
50
+ }
51
+ //# sourceMappingURL=disk-spelling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disk-spelling.js","sourceRoot":"","sources":["../../src/utils/disk-spelling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAQlE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,SAAwE;IAExE,OAAO;QACL,qBAAqB,EAAE,6BAA6B,CAAC,WAAW,CAAC;QACjE,oBAAoB,EAAE,wBAAwB,CAAC,WAAW,CAAC;QAC3D,gBAAgB,EAAE,2BAA2B,CAAC,SAAS,CAAC;KACzD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,gBAAwB,EACxB,QAAsB,EACtB,GAIC;IAED,OAAO,wBAAwB,CAAC,gBAAgB,EAAE;QAChD,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,eAAe,EAAE,QAAQ,CAAC,oBAAoB;KAC/C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Single source of truth helper to check if a published article currently reflects
3
+ * an uncommitted remote draft revision.
4
+ *
5
+ * Derived strictly from Track 2 composite revision key (`version@draft:<draftRevisionId>`)
6
+ * in `sync_state.remote_rev` when article status is 'published'.
7
+ *
8
+ * Disk representation, baseline reconstruction, diagnostics, and warnings are all
9
+ * derived symmetrically from this single function.
10
+ */
11
+ export declare function hasUncommittedDraftRevision(syncState: {
12
+ remoteRev?: string | null;
13
+ status?: string | null;
14
+ } | null | undefined): boolean;
15
+ //# sourceMappingURL=draft-revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-revision.d.ts","sourceRoot":"","sources":["../../src/utils/draft-revision.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAClF,OAAO,CAKT"}
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Copyright (C) 2026 SPORT-SERVICE RS★R
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+ /**
23
+ * Single source of truth helper to check if a published article currently reflects
24
+ * an uncommitted remote draft revision.
25
+ *
26
+ * Derived strictly from Track 2 composite revision key (`version@draft:<draftRevisionId>`)
27
+ * in `sync_state.remote_rev` when article status is 'published'.
28
+ *
29
+ * Disk representation, baseline reconstruction, diagnostics, and warnings are all
30
+ * derived symmetrically from this single function.
31
+ */
32
+ export function hasUncommittedDraftRevision(syncState) {
33
+ return (syncState?.status === 'published' &&
34
+ Boolean(syncState?.remoteRev && syncState.remoteRev.includes('@draft:')));
35
+ }
36
+ //# sourceMappingURL=draft-revision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-revision.js","sourceRoot":"","sources":["../../src/utils/draft-revision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAmF;IAEnF,OAAO,CACL,SAAS,EAAE,MAAM,KAAK,WAAW;QACjC,OAAO,CAAC,SAAS,EAAE,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CACzE,CAAC;AACJ,CAAC"}
@@ -150,13 +150,32 @@ export declare function formatYamlScalar(value: string): string;
150
150
  * or if values/meaning were altered.
151
151
  */
152
152
  export declare function lenientRepairMarkdownFrontmatter(content: string): string | null;
153
+ export interface SerializeMarkdownOptions {
154
+ preferEncodedTaxonomy?: boolean;
155
+ /**
156
+ * Whether the article is published but currently reflects an uncommitted remote draft revision.
157
+ * When true and status is 'published', emits: `status: published # draft revision`.
158
+ */
159
+ hasDraftRevision?: boolean;
160
+ }
161
+ /**
162
+ * Attempts to decode a taxonomy term if it contains percent-encoding.
163
+ * Returns the original term if decoding fails or if no % is present.
164
+ */
165
+ export declare function tryDecodeTaxonomyTerm(term: string): string;
166
+ /**
167
+ * Checks if the markdown frontmatter taxonomies section contains any percent-encoded terms.
168
+ * Strictly scopes inspection to the frontmatter's `taxonomies:` section list items,
169
+ * ignoring article slugs, bylines, and markdown body. Only returns true if decoding alters the string.
170
+ */
171
+ export declare function carriesPercentEncodedTaxonomy(markdown: string): boolean;
153
172
  /**
154
173
  * Formats a frontmatter object into clean YAML with helpful candidate comments.
155
174
  */
156
- export declare function formatFrontmatterYaml(data: Frontmatter, candidates?: TaxonomyCandidates): string;
175
+ export declare function formatFrontmatterYaml(data: Frontmatter, candidates?: TaxonomyCandidates, options?: SerializeMarkdownOptions): string;
157
176
  /**
158
177
  * Serializes frontmatter and markdown body into a full document.
159
178
  */
160
- export declare function serializeMarkdown(frontmatter: Frontmatter, body: string, candidates?: TaxonomyCandidates): string;
179
+ export declare function serializeMarkdown(frontmatter: Frontmatter, body: string, candidates?: TaxonomyCandidates, options?: SerializeMarkdownOptions): string;
161
180
  export { formatDatePrefix, extractDatePrefixFromPath, computeArticleRelativePath, sanitizeTitleForFilename, storageKeyToMarkdownRef, collisionSuffixedMarkdownRef, DEFAULT_MAX_TITLE_BYTES, DEFAULT_MAX_MEDIA_REF_BYTES, truncateUtf8Bytes, } from './naming.js';
162
181
  //# sourceMappingURL=frontmatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KACnD,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EASA;CACF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAsDhF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBhE;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsI/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAmEhG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,kBAAkB,GAC9B,MAAM,CAIR;AAED,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@
21
21
  */
22
22
  import matter from 'gray-matter';
23
23
  import { z } from 'zod';
24
+ import { CANONICAL_ULID_REGEX } from './ulid.js';
24
25
  export const FrontmatterSeoSchema = z.object({
25
26
  title: z.string().nullable().optional(),
26
27
  description: z.string().nullable().optional(),
@@ -41,9 +42,6 @@ export const FrontmatterSchema = z.object({
41
42
  seo: FrontmatterSeoSchema.optional(),
42
43
  bylines: z.array(z.string()).optional().default([]),
43
44
  });
44
- // Canonical ULID shape (Crockford base32: excludes I and O; 26 characters).
45
- // Emitted uppercase by EmDash, so local frontmatter is normalized to match.
46
- const CANONICAL_ULID_REGEX = /^[0-9A-HJ-NP-Z]{26}$/i;
47
45
  /**
48
46
  * Error thrown when frontmatter parsing or schema validation fails.
49
47
  * Captures the file path, error line if available, and actionable hints for repair.
@@ -296,16 +294,75 @@ export function lenientRepairMarkdownFrontmatter(content) {
296
294
  return null;
297
295
  }
298
296
  }
297
+ /**
298
+ * Attempts to decode a taxonomy term if it contains percent-encoding.
299
+ * Returns the original term if decoding fails or if no % is present.
300
+ */
301
+ export function tryDecodeTaxonomyTerm(term) {
302
+ if (!term.includes('%'))
303
+ return term;
304
+ try {
305
+ return decodeURIComponent(term).normalize('NFC');
306
+ }
307
+ catch {
308
+ return term;
309
+ }
310
+ }
311
+ /**
312
+ * Checks if the markdown frontmatter taxonomies section contains any percent-encoded terms.
313
+ * Strictly scopes inspection to the frontmatter's `taxonomies:` section list items,
314
+ * ignoring article slugs, bylines, and markdown body. Only returns true if decoding alters the string.
315
+ */
316
+ export function carriesPercentEncodedTaxonomy(markdown) {
317
+ if (!markdown.startsWith('---'))
318
+ return false;
319
+ const match = markdown.match(/^---\r?\n([\s\S]*?)\r?\n---/);
320
+ if (!match)
321
+ return false;
322
+ const fmLines = match[1].split(/\r?\n/);
323
+ let inTaxonomies = false;
324
+ for (const line of fmLines) {
325
+ if (/^[a-zA-Z0-9_-]+:/.test(line)) {
326
+ inTaxonomies = line.startsWith('taxonomies:');
327
+ continue;
328
+ }
329
+ if (inTaxonomies) {
330
+ const itemMatch = line.match(/^\s+-\s+(.+)$/);
331
+ if (itemMatch) {
332
+ let rawScalar = itemMatch[1].trim();
333
+ // Strip trailing comment if present
334
+ const hashIdx = rawScalar.indexOf('#');
335
+ if (hashIdx !== -1) {
336
+ rawScalar = rawScalar.slice(0, hashIdx).trim();
337
+ }
338
+ // Strip enclosing quotes
339
+ if ((rawScalar.startsWith('"') && rawScalar.endsWith('"')) ||
340
+ (rawScalar.startsWith("'") && rawScalar.endsWith("'"))) {
341
+ rawScalar = rawScalar.slice(1, -1);
342
+ }
343
+ if (rawScalar.includes('%') && tryDecodeTaxonomyTerm(rawScalar) !== rawScalar) {
344
+ return true;
345
+ }
346
+ }
347
+ }
348
+ }
349
+ return false;
350
+ }
299
351
  /**
300
352
  * Formats a frontmatter object into clean YAML with helpful candidate comments.
301
353
  */
302
- export function formatFrontmatterYaml(data, candidates) {
354
+ export function formatFrontmatterYaml(data, candidates, options) {
303
355
  const lines = ['---'];
304
356
  lines.push(`id: ${formatYamlScalar(data.id)}`);
305
357
  lines.push(`slug: ${formatYamlScalar(data.slug)}`);
306
358
  lines.push(`title: ${JSON.stringify(data.title)}`);
307
359
  lines.push(`collection: ${formatYamlScalar(data.collection)}`);
308
- lines.push(`status: ${data.status}`);
360
+ if (data.status === 'published' && options?.hasDraftRevision) {
361
+ lines.push('status: published # draft revision');
362
+ }
363
+ else {
364
+ lines.push(`status: ${data.status}`);
365
+ }
309
366
  lines.push(`publishedAt: ${data.publishedAt ? JSON.stringify(data.publishedAt) : 'null'}`);
310
367
  lines.push(`locale: ${formatYamlScalar(data.locale)}`);
311
368
  if (data.featuredImage !== undefined) {
@@ -325,11 +382,15 @@ export function formatFrontmatterYaml(data, candidates) {
325
382
  const singularKey = taxKey === 'categories' ? 'category' : taxKey === 'tags' ? 'tag' : taxKey;
326
383
  const slugMap = candidates?.slugToName?.[singularKey] || candidates?.slugToName?.[taxKey];
327
384
  for (const term of terms) {
328
- const humanName = slugMap?.[term];
329
- const comment = humanName && humanName.trim() && humanName.trim().toLowerCase() !== term.toLowerCase()
385
+ const displayTerm = options?.preferEncodedTaxonomy ? term : tryDecodeTaxonomyTerm(term);
386
+ const decoded = tryDecodeTaxonomyTerm(term);
387
+ const humanName = slugMap?.[displayTerm] || slugMap?.[term] || slugMap?.[decoded];
388
+ const comment = humanName &&
389
+ humanName.trim() &&
390
+ humanName.trim().toLowerCase() !== displayTerm.toLowerCase()
330
391
  ? ` # ${humanName.trim()}`
331
392
  : '';
332
- lines.push(` - ${formatYamlScalar(term)}${comment}`);
393
+ lines.push(` - ${formatYamlScalar(displayTerm)}${comment}`);
333
394
  }
334
395
  }
335
396
  }
@@ -364,8 +425,8 @@ export function formatFrontmatterYaml(data, candidates) {
364
425
  /**
365
426
  * Serializes frontmatter and markdown body into a full document.
366
427
  */
367
- export function serializeMarkdown(frontmatter, body, candidates) {
368
- const yaml = formatFrontmatterYaml(frontmatter, candidates);
428
+ export function serializeMarkdown(frontmatter, body, candidates, options) {
429
+ const yaml = formatFrontmatterYaml(frontmatter, candidates, options);
369
430
  const cleanBody = body.startsWith('\n') ? body : `\n${body}`;
370
431
  return `${yaml}${cleanBody.endsWith('\n') ? cleanBody : cleanBody + '\n'}`;
371
432
  }
@@ -1 +1 @@
1
- {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,gCAAgC,CAAC;IAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChE,GAAG,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACpD,CAAC,CAAC;AAsBH;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,IAAI,GAAG,yBAAyB,CAAC;IACjC,QAAQ,CAAU;IAClB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,IAAI,CAAU;IAEvB,YAAY,OAMX;QACC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU;YACb,OAAO,CAAC,UAAU;gBAClB,6IAA6I,CAAC;IAClJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAiB;IAC9D,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAwB,CAAC;QAC7B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,GAAI,GAAoC,CAAC,IAAI,CAAC;YACxD,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,qBAAqB,CAAC;YAC9B,OAAO,EAAE,2BAA2B,MAAM,GAAG,OAAO,KAAK,MAAM,EAAE;YACjE,QAAQ;YACR,MAAM;YACN,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,qBAAqB,CAAC;YAC9B,OAAO,EAAE,6BAA6B,MAAM,KAAK,MAAM,EAAE;YACzD,QAAQ;YACR,MAAM;YACN,UAAU,EACR,8FAA8F;SACjG,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,gFAAgF;IAChF,sEAAsE;IACtE,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,MAAM,CAAC,OAAO;QACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;KAClD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IACE,GAAG;QACH,OAAO,GAAG,KAAK,QAAQ;QACvB,QAAQ,IAAI,GAAG;QACf,KAAK,CAAC,OAAO,CAAE,GAAkB,CAAC,MAAM,CAAC,EACzC,CAAC;QACD,MAAM,MAAM,GAAI,GAAkB,CAAC,MAAM,CAAC;QAC1C,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACnF,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,wFAAwF;AACxF,MAAM,gBAAgB,GAAG,iEAAiE,CAAC;AAE3F,kHAAkH;AAClH,sGAAsG;AACtG,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AAEjE,6HAA6H;AAC7H,qIAAqI;AACrI,MAAM,uBAAuB,GAC3B,+FAA+F,CAAC;AAElG;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAe;IAC9D,wEAAwE;IACxE,IAAI,CAAC;QACH,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;IACtB,CAAC;IAED,6DAA6D;IAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,kBAAkB;QAC/B,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,SAAS;QACrC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,sFAAsF;IACtF,2FAA2F;IAC3F,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,iBAAiB,GAAG,IAAI,CAAC;YACzB,eAAe,GAAG,KAAK,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,iBAAiB,GAAG,KAAK,CAAC;YAC1B,eAAe,GAAG,IAAI,CAAC;YACvB,oBAAoB,GAAG,CAAC,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,oEAAoE;YACpE,iBAAiB,GAAG,KAAK,CAAC;YAC1B,eAAe,GAAG,KAAK,CAAC;QAC1B,CAAC;aAAM,IAAI,iBAAiB,IAAI,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvF,eAAe,GAAG,IAAI,CAAC;YACvB,oBAAoB,GAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,mFAAmF;QACnF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEhC,kGAAkG;gBAClG,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACpD,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,MAAM,eAAe,GAAG,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE/E,mDAAmD;gBACnD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9E,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC;gBAED,uFAAuF;gBACvF,6FAA6F;gBAC7F,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC;gBACrE,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBACnF,YAAY,GAAG,GAAG,MAAM,KAAK,KAAK,GAAG,eAAe,EAAE,CAAC;gBACvD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QAED,wGAAwG;QACxG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACpD,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,MAAM,eAAe,GAAG,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/E,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,YAAY,GAAG,SAAS,OAAO,GAAG,eAAe,EAAE,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,GAAG,GAAG,aAAa,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAEpF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,aAAa,GAAG,GAAG,KAAK,CAAC,CAAC,IAAe,CAAC;QACnF,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9C,kGAAkG;QAClG,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClE,IACE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACnE,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,IACE,QAAQ,CAAC,WAAW,CAAC,OAAO;YAC5B,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC3F,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAgB;IAC5D,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9C,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpC,oCAAoC;gBACpC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;oBACnB,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjD,CAAC;gBACD,yBAAyB;gBACzB,IACE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACtD,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACtD,CAAC;oBACD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC9E,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAiB,EACjB,UAA+B,EAC/B,OAAkC;IAElC,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC;IAEhC,KAAK,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,eAAe,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,WAAW,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,kBAAkB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,aAAa;IACb,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3F,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9F,MAAM,OAAO,GAAG,UAAU,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;YAE1F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACxF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;gBAClF,MAAM,OAAO,GACX,SAAS;oBACT,SAAS,CAAC,IAAI,EAAE;oBAChB,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE;oBAC1D,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE;oBAC1B,CAAC,CAAC,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;IACN,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS;YACpC,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS;YAClC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAwB,EACxB,IAAY,EACZ,UAA+B,EAC/B,OAAkC;IAElC,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7D,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type FencePolicyType } from './media-refs.js';
1
2
  /** Canonical root-relative media route prefix EmDash writes into Portable Text image blocks. */
2
3
  export declare const MEDIA_FILE_ROUTE_PREFIX = "/_emdash/api/media/file/";
3
4
  /** Workspace-relative directory a mirrored asset lives in. */
@@ -50,6 +51,16 @@ export declare function canonicalToLocalMediaRefs(body: string, options: {
50
51
  * reaches the push guards instead of being silently rewritten.
51
52
  */
52
53
  export declare function storageKeyFromMirrorRef(rawPath: string, candidateStorageKeys: Iterable<string>): string | null;
54
+ /**
55
+ * Scans a Markdown article body for every media reference it carries.
56
+ *
57
+ * This is the workspace-contract entry point Layer 2 consumers (delete, doctor, media) call instead of
58
+ * reaching into each other: markdown images and HTML `<img>` tags anywhere in the body, including inside
59
+ * opaque `<!--ec:block ... -->` fences and legacy container lines such as `[dimage url="..." control=true]`.
60
+ * External `http(s)` and `data:` URLs are excluded because they name no local mirror. The fence policy is
61
+ * delegated to `utils/media-refs.ts` so the guard/diagnostic distinction stays declared in exactly one place.
62
+ */
63
+ export declare function scanArticleMediaReferences(bodyMarkdown: string, fencePolicy?: FencePolicyType): string[];
53
64
  /**
54
65
  * Builds the `../../` depth an article at `articleRelPath` needs to reach `media/` from its own directory,
55
66
  * matching the prefix the draft-image guards already accept.
@@ -78,4 +89,17 @@ export declare function localizeArticleMediaRefs(body: string, options: {
78
89
  /** Reproduce the depth-free `media/<storageKey>` spelling instead of preferring the article-relative one. */
79
90
  preferLegacyRef?: boolean;
80
91
  }): string;
92
+ /**
93
+ * Detects whether a document body carries any depth-free `media/<storageKey>` references.
94
+ *
95
+ * Used by pull to preserve the depth-free spelling for articles that already carry it, because the cache
96
+ * records exactly those bytes — re-spelling an untouched file would report a media rewrite nobody made. Once a
97
+ * document carries the article-relative form (or no local ref at all), the article-relative spelling takes over.
98
+ */
99
+ export declare function carriesDepthFreeMediaRef(content: string): boolean;
100
+ /**
101
+ * Reports whether any local copy of an article still carries the depth-free spelling, deciding which form a
102
+ * re-pull must reproduce. A genuinely new article has no local copy, so it gets the article-relative form.
103
+ */
104
+ export declare function shouldPreferLegacyRef(workspaceRoot: string, existingRelPaths: string[]): boolean;
81
105
  //# sourceMappingURL=media-body-refs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-body-refs.d.ts","sourceRoot":"","sources":["../../src/utils/media-body-refs.ts"],"names":[],"mappings":"AA8CA,gGAAgG;AAChG,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAElE,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAmBzC,2FAA2F;AAC3F,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrE;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AASD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE;QAAE,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,MAAM,CA+BR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrC,MAAM,GAAG,IAAI,CAsBf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIvE;AAyBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE;QAAE,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,6GAA6G;IAC7G,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,MAAM,CAiBR"}
1
+ {"version":3,"file":"media-body-refs.d.ts","sourceRoot":"","sources":["../../src/utils/media-body-refs.ts"],"names":[],"mappings":"AA+CA,OAAO,EAAwC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7F,gGAAgG;AAChG,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAElE,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAmBzC,2FAA2F;AAC3F,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrE;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AASD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE;QAAE,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,MAAM,CA+BR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrC,MAAM,GAAG,IAAI,CAsBf;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,WAAW,GAAE,eAAoC,GAChD,MAAM,EAAE,CAEV;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIvE;AAyBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE;QAAE,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,6GAA6G;IAC7G,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,MAAM,CAiBR;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASjE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO,CAWhG"}