emdash-emit 0.1.18 → 0.1.30

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 (237) hide show
  1. package/CHANGELOG.md +249 -1
  2. package/README.md +22 -11
  3. package/dist/cli/commands/conflicts.d.ts.map +1 -1
  4. package/dist/cli/commands/conflicts.js +2 -22
  5. package/dist/cli/commands/conflicts.js.map +1 -1
  6. package/dist/cli/commands/delete.d.ts.map +1 -1
  7. package/dist/cli/commands/delete.js +1 -13
  8. package/dist/cli/commands/delete.js.map +1 -1
  9. package/dist/cli/commands/doctor.d.ts.map +1 -1
  10. package/dist/cli/commands/doctor.js +1 -13
  11. package/dist/cli/commands/doctor.js.map +1 -1
  12. package/dist/cli/commands/media.d.ts.map +1 -1
  13. package/dist/cli/commands/media.js +1 -13
  14. package/dist/cli/commands/media.js.map +1 -1
  15. package/dist/cli/commands/new.d.ts.map +1 -1
  16. package/dist/cli/commands/new.js +31 -13
  17. package/dist/cli/commands/new.js.map +1 -1
  18. package/dist/cli/commands/pull.d.ts +1 -1
  19. package/dist/cli/commands/pull.d.ts.map +1 -1
  20. package/dist/cli/commands/pull.js +110 -79
  21. package/dist/cli/commands/pull.js.map +1 -1
  22. package/dist/cli/commands/push.d.ts +1 -1
  23. package/dist/cli/commands/push.d.ts.map +1 -1
  24. package/dist/cli/commands/push.js +32 -90
  25. package/dist/cli/commands/push.js.map +1 -1
  26. package/dist/cli/commands/status.d.ts.map +1 -1
  27. package/dist/cli/commands/status.js +7 -2
  28. package/dist/cli/commands/status.js.map +1 -1
  29. package/dist/cli/context.d.ts +12 -0
  30. package/dist/cli/context.d.ts.map +1 -1
  31. package/dist/cli/context.js +27 -1
  32. package/dist/cli/context.js.map +1 -1
  33. package/dist/cli/report-failure.d.ts +6 -0
  34. package/dist/cli/report-failure.d.ts.map +1 -0
  35. package/dist/cli/report-failure.js +71 -0
  36. package/dist/cli/report-failure.js.map +1 -0
  37. package/dist/client/api.d.ts +20 -0
  38. package/dist/client/api.d.ts.map +1 -1
  39. package/dist/client/api.js +90 -1
  40. package/dist/client/api.js.map +1 -1
  41. package/dist/client/lock.js.map +1 -1
  42. package/dist/client/mapper.js.map +1 -1
  43. package/dist/client/media.d.ts.map +1 -1
  44. package/dist/client/media.js.map +1 -1
  45. package/dist/db/baseline.d.ts +19 -3
  46. package/dist/db/baseline.d.ts.map +1 -1
  47. package/dist/db/baseline.js +27 -2
  48. package/dist/db/baseline.js.map +1 -1
  49. package/dist/db/cache.d.ts +7 -3
  50. package/dist/db/cache.d.ts.map +1 -1
  51. package/dist/db/cache.js +24 -295
  52. package/dist/db/cache.js.map +1 -1
  53. package/dist/db/migrations.d.ts +7 -0
  54. package/dist/db/migrations.d.ts.map +1 -0
  55. package/dist/db/migrations.js +320 -0
  56. package/dist/db/migrations.js.map +1 -0
  57. package/dist/mcp/heartbeat.d.ts +1 -34
  58. package/dist/mcp/heartbeat.d.ts.map +1 -1
  59. package/dist/mcp/heartbeat.js +1 -113
  60. package/dist/mcp/heartbeat.js.map +1 -1
  61. package/dist/mcp/tool-errors.d.ts +12 -1
  62. package/dist/mcp/tool-errors.d.ts.map +1 -1
  63. package/dist/mcp/tool-errors.js +29 -0
  64. package/dist/mcp/tool-errors.js.map +1 -1
  65. package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -1
  66. package/dist/mcp/tools/sync-conflicts.js +46 -58
  67. package/dist/mcp/tools/sync-conflicts.js.map +1 -1
  68. package/dist/mcp/tools/sync-delete.d.ts.map +1 -1
  69. package/dist/mcp/tools/sync-delete.js +18 -30
  70. package/dist/mcp/tools/sync-delete.js.map +1 -1
  71. package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
  72. package/dist/mcp/tools/sync-diff.js +10 -31
  73. package/dist/mcp/tools/sync-diff.js.map +1 -1
  74. package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
  75. package/dist/mcp/tools/sync-doctor.js +18 -30
  76. package/dist/mcp/tools/sync-doctor.js.map +1 -1
  77. package/dist/mcp/tools/sync-media-search.d.ts.map +1 -1
  78. package/dist/mcp/tools/sync-media-search.js +40 -52
  79. package/dist/mcp/tools/sync-media-search.js.map +1 -1
  80. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  81. package/dist/mcp/tools/sync-new.js +54 -34
  82. package/dist/mcp/tools/sync-new.js.map +1 -1
  83. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  84. package/dist/mcp/tools/sync-pull.js +194 -220
  85. package/dist/mcp/tools/sync-pull.js.map +1 -1
  86. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  87. package/dist/mcp/tools/sync-push.js +64 -84
  88. package/dist/mcp/tools/sync-push.js.map +1 -1
  89. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  90. package/dist/mcp/tools/sync-status.js +4 -13
  91. package/dist/mcp/tools/sync-status.js.map +1 -1
  92. package/dist/sync/baseline-reconstruction.d.ts +43 -0
  93. package/dist/sync/baseline-reconstruction.d.ts.map +1 -0
  94. package/dist/sync/baseline-reconstruction.js +103 -0
  95. package/dist/sync/baseline-reconstruction.js.map +1 -0
  96. package/dist/sync/bylines.d.ts +5 -0
  97. package/dist/sync/bylines.d.ts.map +1 -1
  98. package/dist/sync/bylines.js +29 -0
  99. package/dist/sync/bylines.js.map +1 -1
  100. package/dist/sync/conflicts.d.ts.map +1 -1
  101. package/dist/sync/conflicts.js +21 -4
  102. package/dist/sync/conflicts.js.map +1 -1
  103. package/dist/sync/delete.d.ts.map +1 -1
  104. package/dist/sync/delete.js +12 -1
  105. package/dist/sync/delete.js.map +1 -1
  106. package/dist/sync/diff.d.ts.map +1 -1
  107. package/dist/sync/diff.js +62 -26
  108. package/dist/sync/diff.js.map +1 -1
  109. package/dist/sync/doctor.d.ts.map +1 -1
  110. package/dist/sync/doctor.js +13 -3
  111. package/dist/sync/doctor.js.map +1 -1
  112. package/dist/sync/guards.d.ts +1 -1
  113. package/dist/sync/guards.d.ts.map +1 -1
  114. package/dist/sync/guards.js +3 -2
  115. package/dist/sync/guards.js.map +1 -1
  116. package/dist/sync/media/companions.d.ts.map +1 -1
  117. package/dist/sync/media/companions.js.map +1 -1
  118. package/dist/sync/media/naming_mirror.d.ts.map +1 -1
  119. package/dist/sync/media/naming_mirror.js +11 -2
  120. package/dist/sync/media/naming_mirror.js.map +1 -1
  121. package/dist/sync/media/pull_article.d.ts +2 -0
  122. package/dist/sync/media/pull_article.d.ts.map +1 -1
  123. package/dist/sync/media/pull_article.js +74 -25
  124. package/dist/sync/media/pull_article.js.map +1 -1
  125. package/dist/sync/media/pull_library.d.ts.map +1 -1
  126. package/dist/sync/media/pull_library.js +34 -61
  127. package/dist/sync/media/pull_library.js.map +1 -1
  128. package/dist/sync/media/remote_index.d.ts +16 -1
  129. package/dist/sync/media/remote_index.d.ts.map +1 -1
  130. package/dist/sync/media/remote_index.js +2 -2
  131. package/dist/sync/media/remote_index.js.map +1 -1
  132. package/dist/sync/merge.d.ts +1 -1
  133. package/dist/sync/merge.d.ts.map +1 -1
  134. package/dist/sync/merge.js +50 -17
  135. package/dist/sync/merge.js.map +1 -1
  136. package/dist/sync/new.d.ts +11 -0
  137. package/dist/sync/new.d.ts.map +1 -1
  138. package/dist/sync/new.js +81 -3
  139. package/dist/sync/new.js.map +1 -1
  140. package/dist/sync/orchestrator.d.ts +34 -0
  141. package/dist/sync/orchestrator.d.ts.map +1 -1
  142. package/dist/sync/orchestrator.js +89 -80
  143. package/dist/sync/orchestrator.js.map +1 -1
  144. package/dist/sync/preflight/image_probe.d.ts +28 -0
  145. package/dist/sync/preflight/image_probe.d.ts.map +1 -0
  146. package/dist/sync/preflight/image_probe.js +70 -0
  147. package/dist/sync/preflight/image_probe.js.map +1 -0
  148. package/dist/sync/preflight.d.ts +7 -0
  149. package/dist/sync/preflight.d.ts.map +1 -1
  150. package/dist/sync/preflight.js +127 -31
  151. package/dist/sync/preflight.js.map +1 -1
  152. package/dist/sync/pull/fast_path.d.ts +9 -0
  153. package/dist/sync/pull/fast_path.d.ts.map +1 -0
  154. package/dist/sync/pull/fast_path.js +341 -0
  155. package/dist/sync/pull/fast_path.js.map +1 -0
  156. package/dist/sync/pull/index.d.ts +15 -0
  157. package/dist/sync/pull/index.d.ts.map +1 -0
  158. package/dist/sync/pull/index.js +363 -0
  159. package/dist/sync/pull/index.js.map +1 -0
  160. package/dist/sync/pull/list.d.ts +22 -0
  161. package/dist/sync/pull/list.d.ts.map +1 -0
  162. package/dist/sync/pull/list.js +175 -0
  163. package/dist/sync/pull/list.js.map +1 -0
  164. package/dist/sync/pull/media_stage.d.ts +67 -0
  165. package/dist/sync/pull/media_stage.d.ts.map +1 -0
  166. package/dist/sync/pull/media_stage.js +599 -0
  167. package/dist/sync/pull/media_stage.js.map +1 -0
  168. package/dist/sync/pull/quarantine.d.ts +22 -0
  169. package/dist/sync/pull/quarantine.d.ts.map +1 -0
  170. package/dist/sync/pull/quarantine.js +174 -0
  171. package/dist/sync/pull/quarantine.js.map +1 -0
  172. package/dist/sync/pull/types.d.ts +125 -0
  173. package/dist/sync/pull/types.d.ts.map +1 -0
  174. package/dist/sync/pull/types.js +23 -0
  175. package/dist/sync/pull/types.js.map +1 -0
  176. package/dist/sync/pull.d.ts +1 -114
  177. package/dist/sync/pull.d.ts.map +1 -1
  178. package/dist/sync/pull.js +1 -806
  179. package/dist/sync/pull.js.map +1 -1
  180. package/dist/sync/push/commit.d.ts +1 -0
  181. package/dist/sync/push/commit.d.ts.map +1 -1
  182. package/dist/sync/push/commit.js +58 -31
  183. package/dist/sync/push/commit.js.map +1 -1
  184. package/dist/sync/push/index.d.ts.map +1 -1
  185. package/dist/sync/push/index.js +30 -8
  186. package/dist/sync/push/index.js.map +1 -1
  187. package/dist/sync/push/media_stage.d.ts +17 -2
  188. package/dist/sync/push/media_stage.d.ts.map +1 -1
  189. package/dist/sync/push/media_stage.js +31 -2
  190. package/dist/sync/push/media_stage.js.map +1 -1
  191. package/dist/sync/push/merge_stage.d.ts.map +1 -1
  192. package/dist/sync/push/merge_stage.js +36 -22
  193. package/dist/sync/push/merge_stage.js.map +1 -1
  194. package/dist/sync/push/transport.d.ts +6 -2
  195. package/dist/sync/push/transport.d.ts.map +1 -1
  196. package/dist/sync/push/transport.js +5 -5
  197. package/dist/sync/push/transport.js.map +1 -1
  198. package/dist/sync/status.d.ts +3 -0
  199. package/dist/sync/status.d.ts.map +1 -1
  200. package/dist/sync/status.js +18 -55
  201. package/dist/sync/status.js.map +1 -1
  202. package/dist/sync/taxonomies.d.ts +25 -0
  203. package/dist/sync/taxonomies.d.ts.map +1 -1
  204. package/dist/sync/taxonomies.js +180 -127
  205. package/dist/sync/taxonomies.js.map +1 -1
  206. package/dist/sync/workspace/commit.d.ts +46 -0
  207. package/dist/sync/workspace/commit.d.ts.map +1 -0
  208. package/dist/sync/workspace/commit.js +85 -0
  209. package/dist/sync/workspace/commit.js.map +1 -0
  210. package/dist/sync/workspace/index.d.ts +1 -0
  211. package/dist/sync/workspace/index.d.ts.map +1 -1
  212. package/dist/sync/workspace/index.js +1 -0
  213. package/dist/sync/workspace/index.js.map +1 -1
  214. package/dist/utils/disk-spelling.d.ts +26 -0
  215. package/dist/utils/disk-spelling.d.ts.map +1 -0
  216. package/dist/utils/disk-spelling.js +51 -0
  217. package/dist/utils/disk-spelling.js.map +1 -0
  218. package/dist/utils/draft-revision.d.ts +15 -0
  219. package/dist/utils/draft-revision.d.ts.map +1 -0
  220. package/dist/utils/draft-revision.js +36 -0
  221. package/dist/utils/draft-revision.js.map +1 -0
  222. package/dist/utils/frontmatter.d.ts +21 -2
  223. package/dist/utils/frontmatter.d.ts.map +1 -1
  224. package/dist/utils/frontmatter.js +70 -7
  225. package/dist/utils/frontmatter.js.map +1 -1
  226. package/dist/utils/mcp-heartbeat.d.ts +36 -0
  227. package/dist/utils/mcp-heartbeat.d.ts.map +1 -0
  228. package/dist/utils/mcp-heartbeat.js +126 -0
  229. package/dist/utils/mcp-heartbeat.js.map +1 -0
  230. package/dist/utils/media-body-refs.d.ts.map +1 -1
  231. package/dist/utils/media-body-refs.js +2 -2
  232. package/dist/utils/media-body-refs.js.map +1 -1
  233. package/dist/utils/taxonomy-key.d.ts +25 -0
  234. package/dist/utils/taxonomy-key.d.ts.map +1 -0
  235. package/dist/utils/taxonomy-key.js +51 -0
  236. package/dist/utils/taxonomy-key.js.map +1 -0
  237. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media_stage.js","sourceRoot":"","sources":["../../../src/sync/pull/media_stage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { SyncState } from '../../db/cache.js';
2
+ import type { TaxonomyCandidates } from '../../utils/frontmatter.js';
3
+ import type { PullOptions, PullResult, QuarantinedLocalCopy } from './types.js';
4
+ /**
5
+ * Human/agent readable notice describing preserved local copies.
6
+ * Returns an empty string when nothing was preserved.
7
+ */
8
+ export declare function formatQuarantineNotice(quarantined?: QuarantinedLocalCopy[]): string;
9
+ /**
10
+ * Discovers local files for this article that are about to be overwritten or unlinked, and
11
+ * preserves every copy whose content does not match the last synced baseline hash (or its
12
+ * reconstructed disk-spelling baseline) or the content Emit is about to write.
13
+ */
14
+ export declare function quarantineDivergentLocalCopies(options: PullOptions, collection: string, localRelPaths: Set<string>, baselineHash: string | undefined, canonicalContent: string, existingCopyHash?: string | null, existingSync?: SyncState | null, candidates?: TaxonomyCandidates): QuarantinedLocalCopy[];
15
+ /**
16
+ * Handles remote 404/410 article deletion during pull:
17
+ * - Unlinks local file and deletes cache entry if the local file is unmodified.
18
+ * - Quarantines local edits and unlinks if `force: true`.
19
+ * - Preserves local edits as `orphan: true` otherwise.
20
+ */
21
+ export declare function handleRemoteDeletedArticle(collection: string, id: string, options: PullOptions, candidates?: TaxonomyCandidates): PullResult | null;
22
+ //# sourceMappingURL=quarantine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../../src/sync/pull/quarantine.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,oBAAoB,EAAE,GAAG,MAAM,CASnF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,EAC/B,UAAU,CAAC,EAAE,kBAAkB,GAC9B,oBAAoB,EAAE,CAsDxB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,kBAAkB,GAC9B,UAAU,GAAG,IAAI,CAoFnB"}
@@ -0,0 +1,174 @@
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 path from 'node:path';
24
+ import { isLocalFileUnmodified } from '../baseline-reconstruction.js';
25
+ import { CONFLICTS_SUBDIR, calculateHash, quarantineLocalCopy } from '../workspace/index.js';
26
+ /**
27
+ * Human/agent readable notice describing preserved local copies.
28
+ * Returns an empty string when nothing was preserved.
29
+ */
30
+ export function formatQuarantineNotice(quarantined) {
31
+ if (!quarantined || quarantined.length === 0)
32
+ return '';
33
+ const lines = [
34
+ `🩹 ${quarantined.length} divergent local copy(ies) preserved under ${CONFLICTS_SUBDIR}/ before being overwritten:`,
35
+ ...quarantined.map((q) => ` - ${q.sourceFilePath} -> ${q.quarantineFilePath} (${q.reason})`),
36
+ ' Review each rescue copy, merge any valuable content into the canonical article, then delete it.',
37
+ ` Preserved copies are never pushed or pruned; pushing a rescue copy directly is refused (QUARANTINED_COPY_NOT_PUSHABLE).`,
38
+ ];
39
+ return lines.join('\n');
40
+ }
41
+ /**
42
+ * Discovers local files for this article that are about to be overwritten or unlinked, and
43
+ * preserves every copy whose content does not match the last synced baseline hash (or its
44
+ * reconstructed disk-spelling baseline) or the content Emit is about to write.
45
+ */
46
+ export function quarantineDivergentLocalCopies(options, collection, localRelPaths, baselineHash, canonicalContent, existingCopyHash, existingSync, candidates) {
47
+ const quarantined = [];
48
+ for (const localRel of localRelPaths) {
49
+ const localFull = path.resolve(options.workspaceRoot, localRel);
50
+ if (!fs.existsSync(localFull))
51
+ continue;
52
+ let localContent;
53
+ try {
54
+ localContent = fs.readFileSync(localFull, 'utf8');
55
+ }
56
+ catch {
57
+ continue;
58
+ }
59
+ // Already identical to what is about to be written: nothing to preserve.
60
+ if (localContent === canonicalContent)
61
+ continue;
62
+ // Identical to the last synced state (raw hash or reconstructed disk spelling): carries no information worth preserving.
63
+ if ((baselineHash && calculateHash(localContent) === baselineHash) ||
64
+ (existingSync &&
65
+ isLocalFileUnmodified({
66
+ workspaceRoot: options.workspaceRoot,
67
+ cache: options.cache,
68
+ id: existingSync.id,
69
+ relPath: localRel,
70
+ localContent,
71
+ syncState: existingSync,
72
+ candidates,
73
+ healOnSpellingMatch: false,
74
+ }))) {
75
+ continue;
76
+ }
77
+ const quarantineRel = quarantineLocalCopy(options.workspaceRoot, collection, localRel, localContent, {
78
+ isForce: Boolean(options.force),
79
+ existingCopyHash,
80
+ });
81
+ if (quarantineRel) {
82
+ quarantined.push({
83
+ sourceFilePath: localRel,
84
+ quarantineFilePath: quarantineRel,
85
+ reason: baselineHash ? 'diverged-from-baseline' : 'no-cache-baseline',
86
+ });
87
+ }
88
+ }
89
+ return quarantined;
90
+ }
91
+ /**
92
+ * Handles remote 404/410 article deletion during pull:
93
+ * - Unlinks local file and deletes cache entry if the local file is unmodified.
94
+ * - Quarantines local edits and unlinks if `force: true`.
95
+ * - Preserves local edits as `orphan: true` otherwise.
96
+ */
97
+ export function handleRemoteDeletedArticle(collection, id, options, candidates) {
98
+ const existingSync = options.cache.getSyncState(id);
99
+ if (!existingSync)
100
+ return null;
101
+ const fullPath = path.join(options.workspaceRoot, existingSync.localFilePath);
102
+ if (!fs.existsSync(fullPath))
103
+ return null;
104
+ const diskContent = fs.readFileSync(fullPath, 'utf8');
105
+ const isUnmodified = calculateHash(diskContent) === existingSync.localHash ||
106
+ isLocalFileUnmodified({
107
+ workspaceRoot: options.workspaceRoot,
108
+ cache: options.cache,
109
+ id,
110
+ relPath: existingSync.localFilePath,
111
+ localContent: diskContent,
112
+ syncState: existingSync,
113
+ candidates,
114
+ healOnSpellingMatch: false,
115
+ });
116
+ // Only delete if local file has no unpushed edits
117
+ if (isUnmodified) {
118
+ try {
119
+ fs.unlinkSync(fullPath);
120
+ }
121
+ catch {
122
+ // Ignore unlink error
123
+ }
124
+ options.cache.deleteEntry(id);
125
+ return {
126
+ id,
127
+ slug: existingSync.slug,
128
+ status: existingSync.status,
129
+ filePath: existingSync.localFilePath,
130
+ updated: false,
131
+ deleted: true,
132
+ };
133
+ }
134
+ if (options.force) {
135
+ const quarantineRel = quarantineLocalCopy(options.workspaceRoot, collection, existingSync.localFilePath, diskContent, { isForce: true });
136
+ try {
137
+ fs.unlinkSync(fullPath);
138
+ }
139
+ catch {
140
+ // Ignore unlink error
141
+ }
142
+ options.cache.deleteEntry(id);
143
+ return {
144
+ id,
145
+ slug: existingSync.slug,
146
+ status: existingSync.status,
147
+ filePath: existingSync.localFilePath,
148
+ updated: false,
149
+ deleted: true,
150
+ quarantined: quarantineRel
151
+ ? [
152
+ {
153
+ sourceFilePath: existingSync.localFilePath,
154
+ quarantineFilePath: quarantineRel,
155
+ reason: 'diverged-from-baseline',
156
+ },
157
+ ]
158
+ : undefined,
159
+ quarantineFilePath: quarantineRel ?? undefined,
160
+ };
161
+ }
162
+ // Local file has unpushed edits: preserve as orphan!
163
+ return {
164
+ id,
165
+ slug: existingSync.slug,
166
+ status: existingSync.status,
167
+ filePath: existingSync.localFilePath,
168
+ updated: false,
169
+ orphan: true,
170
+ localEditsPreserved: true,
171
+ suggestion: 'Pass --force to preserve your edits under posts/conflicts/ and remove tracking.',
172
+ };
173
+ }
174
+ //# sourceMappingURL=quarantine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../../src/sync/pull/quarantine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import type { CacheDatabase } from '../../db/cache.js';
2
+ import type { MapperOptions } from '../../client/mapper.js';
3
+ import type { TaxonomyCandidates } from '../../utils/frontmatter.js';
4
+ export interface PullArticleMediaSummary {
5
+ total: number;
6
+ downloaded: number;
7
+ skipped: number;
8
+ mirroredStorageKeys: string[];
9
+ verifiedStorageKeys: string[];
10
+ orphanStorageKeys: string[];
11
+ unresolvedFeaturedImageId?: string;
12
+ mediaFetchFailed?: boolean;
13
+ }
14
+ export interface MediaMirrorSession {
15
+ mirrorArticleReferencedMedia(options: {
16
+ canonicalMarkdown: string;
17
+ featuredImage?: string | null;
18
+ }): Promise<PullArticleMediaSummary | undefined>;
19
+ finalizeBatchMediaResult(): Promise<{
20
+ walkedCount: number;
21
+ remoteTotalCount: number | null;
22
+ complete: boolean;
23
+ downloaded: number;
24
+ skipped: number;
25
+ mirroredStorageKeys: string[];
26
+ verifiedStorageKeys: string[];
27
+ orphanStorageKeys: string[];
28
+ }>;
29
+ }
30
+ export interface PullOptions extends MapperOptions {
31
+ workspaceRoot: string;
32
+ cache: CacheDatabase;
33
+ origin: string;
34
+ token: string;
35
+ refreshToken?: string;
36
+ fetchFn?: typeof fetch;
37
+ candidates?: TaxonomyCandidates;
38
+ rawItem?: Record<string, unknown>;
39
+ force?: boolean;
40
+ /**
41
+ * Write mirrored body images into the local file as article-relative `../../media/<storageKey>` references,
42
+ * at the depth derived from the article's own path.
43
+ * The cache baseline always keeps the canonical remote URL, so this only changes the disk spelling and an
44
+ * editor preview can render the image from the mirror. Push restores the canonical form before any payload.
45
+ */
46
+ localMediaRefs?: boolean;
47
+ /**
48
+ * When false, skips on-demand mirroring of media referenced by the article.
49
+ * Defaults to true.
50
+ */
51
+ mediaSync?: boolean;
52
+ /**
53
+ * Optional shared media mirror session across multiple pull operations (e.g. in pullBatch).
54
+ */
55
+ mediaSession?: MediaMirrorSession;
56
+ /**
57
+ * Bounds the library walk a single-article pull uses to resolve body storageKeys and an unresolved
58
+ * `featuredImage` (default `mediaSyncLimit`). Ignored when a shared `mediaSession` already owns the walk.
59
+ */
60
+ mediaSyncLimit?: number;
61
+ }
62
+ export interface PullResult {
63
+ id: string;
64
+ slug: string;
65
+ status: string;
66
+ filePath: string;
67
+ updated: boolean;
68
+ skipped?: boolean;
69
+ deleted?: boolean;
70
+ orphan?: boolean;
71
+ title?: string;
72
+ /** True when the local file has unpushed edits and Emit kept them instead of applying remote changes. */
73
+ localEditsPreserved?: boolean;
74
+ /** True when frontmatter syntax was non-destructively healed while preserving unpushed local body content. */
75
+ healed?: boolean;
76
+ /** True if frontmatter meaning or keys/values were altered during heal (false for syntax-only repair). */
77
+ meaningChanged?: boolean;
78
+ /** Local copies that diverged from the last synced baseline and were preserved in `<collection>/conflicts/`. */
79
+ quarantined?: QuarantinedLocalCopy[];
80
+ quarantineFilePath?: string;
81
+ suggestion?: string;
82
+ /** Media assets referenced by this article that were mirrored or verified during pull. */
83
+ media?: PullArticleMediaSummary;
84
+ }
85
+ /**
86
+ * A local Markdown copy whose content differed from Emit's last synced baseline and was
87
+ * therefore preserved under `<collection>/conflicts/` before the canonical file was written.
88
+ * Quarantined copies are informational only: they are not tracked, pushed, or pruned.
89
+ */
90
+ export interface QuarantinedLocalCopy {
91
+ /** Relative path of the local file that would have been overwritten or removed. */
92
+ sourceFilePath: string;
93
+ /** Relative path of the preserved copy inside `<collection>/conflicts/`. */
94
+ quarantineFilePath: string;
95
+ /** Why the copy was preserved: no cache baseline existed, or content diverged from it. */
96
+ reason: 'no-cache-baseline' | 'diverged-from-baseline';
97
+ }
98
+ export interface RemoteArticleItem {
99
+ id: string;
100
+ slug: string;
101
+ status: string;
102
+ title: string;
103
+ _rev: string;
104
+ rawItem: Record<string, unknown>;
105
+ }
106
+ export interface ListRemoteArticlesOptions {
107
+ origin: string;
108
+ token: string;
109
+ refreshToken?: string;
110
+ limit?: number;
111
+ all?: boolean;
112
+ status?: 'draft' | 'published' | 'all';
113
+ batchSize?: number;
114
+ fetchFn?: typeof fetch;
115
+ }
116
+ export interface FastPathContext {
117
+ collection: string;
118
+ id: string;
119
+ options: PullOptions;
120
+ fetchAssignedTerms: (taxonomy: 'category' | 'tag') => Promise<string[] | null>;
121
+ getBylineIdToSlug: () => Promise<Record<string, string>>;
122
+ getTaxonomyCandidates: () => TaxonomyCandidates | undefined;
123
+ localizeDiskMarkdown: (canonicalContent: string, articleRelPath?: string, preferLegacyRef?: boolean) => string;
124
+ }
125
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sync/pull/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
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
+ export {};
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sync/pull/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
@@ -1,115 +1,2 @@
1
- import type { CacheDatabase } from '../db/cache.js';
2
- import { type MapperOptions } from '../client/mapper.js';
3
- import { type TaxonomyCandidates } from '../utils/frontmatter.js';
4
- import { carriesDepthFreeMediaRef, shouldPreferLegacyRef } from '../utils/media-body-refs.js';
5
- import { CONFLICTS_SUBDIR, calculateHash, findLocalFilesByUlid, isQuarantinedRelativePath, quarantineLocalCopy, resolveCanonicalArticlePath } from './workspace/index.js';
6
- export { CONFLICTS_SUBDIR, calculateHash, findLocalFilesByUlid, isQuarantinedRelativePath, quarantineLocalCopy, resolveCanonicalArticlePath, carriesDepthFreeMediaRef, shouldPreferLegacyRef, };
7
- export interface PullOptions extends MapperOptions {
8
- workspaceRoot: string;
9
- cache: CacheDatabase;
10
- origin: string;
11
- token: string;
12
- refreshToken?: string;
13
- fetchFn?: typeof fetch;
14
- candidates?: TaxonomyCandidates;
15
- rawItem?: Record<string, unknown>;
16
- force?: boolean;
17
- /**
18
- * Write mirrored body images into the local file as article-relative `../../media/<storageKey>` references,
19
- * at the depth derived from the article's own path.
20
- * The cache baseline always keeps the canonical remote URL, so this only changes the disk spelling and an
21
- * editor preview can render the image from the mirror. Push restores the canonical form before any payload.
22
- */
23
- localMediaRefs?: boolean;
24
- }
25
- export interface PullResult {
26
- id: string;
27
- slug: string;
28
- status: string;
29
- filePath: string;
30
- updated: boolean;
31
- skipped?: boolean;
32
- deleted?: boolean;
33
- orphan?: boolean;
34
- title?: string;
35
- /** True when the local file has unpushed edits and Emit kept them instead of applying remote changes. */
36
- localEditsPreserved?: boolean;
37
- /** True when frontmatter syntax was non-destructively healed while preserving unpushed local body content. */
38
- healed?: boolean;
39
- /** True if frontmatter meaning or keys/values were altered during heal (false for syntax-only repair). */
40
- meaningChanged?: boolean;
41
- /** Local copies that diverged from the last synced baseline and were preserved in `<collection>/conflicts/`. */
42
- quarantined?: QuarantinedLocalCopy[];
43
- quarantineFilePath?: string;
44
- suggestion?: string;
45
- }
46
- /**
47
- * A local Markdown copy whose content differed from Emit's last synced baseline and was
48
- * therefore preserved under `<collection>/conflicts/` before the canonical file was written.
49
- * Quarantined copies are informational only: they are not tracked, pushed, or pruned.
50
- */
51
- export interface QuarantinedLocalCopy {
52
- /** Relative path of the local file that would have been overwritten or removed. */
53
- sourceFilePath: string;
54
- /** Relative path of the preserved copy inside `<collection>/conflicts/`. */
55
- quarantineFilePath: string;
56
- /** Why the copy was preserved: no cache baseline existed, or content diverged from it. */
57
- reason: 'no-cache-baseline' | 'diverged-from-baseline';
58
- }
59
- /**
60
- * Human/agent readable notice describing preserved local copies.
61
- * Returns an empty string when nothing was preserved.
62
- */
63
- export declare function formatQuarantineNotice(quarantined?: QuarantinedLocalCopy[]): string;
64
- export interface RemoteArticleItem {
65
- id: string;
66
- slug: string;
67
- status: string;
68
- title: string;
69
- _rev: string;
70
- rawItem: Record<string, unknown>;
71
- }
72
- export interface ListRemoteArticlesOptions {
73
- origin: string;
74
- token: string;
75
- refreshToken?: string;
76
- limit?: number;
77
- all?: boolean;
78
- status?: 'draft' | 'published' | 'all';
79
- batchSize?: number;
80
- fetchFn?: typeof fetch;
81
- }
82
- /**
83
- * Preserves a local Markdown copy verbatim under `<collection>/conflicts/` before Emit
84
- * overwrites or removes the original path. Used to guarantee that no divergent local
85
- * content (e.g. an uncached file written by another tool or an older serializer) is
86
- * silently discarded during a pull.
87
- * Returns the relative path of the preserved copy, or null when preservation failed.
88
- */
89
- /**
90
- * Resolves the canonical article title from remote data symmetrically across
91
- * fast-path and full-pull (EMIT-005 / v0.1.14 backlog §1).
92
- */
93
- export declare function extractCanonicalRemoteTitle(rawObj: Record<string, unknown>, fallbackSlug?: string): string;
94
- /**
95
- * Discovers the server's maximum allowed limit for content list queries from /_emdash/api/openapi.json.
96
- * Defaults to 100 if openapi.json cannot be fetched or parsed.
97
- */
98
- export declare function getRemoteMaxBatchLimit(options: {
99
- origin: string;
100
- token?: string;
101
- fetchFn?: typeof fetch;
102
- }): Promise<number>;
103
- /**
104
- * Lists articles from EmDash API with cursor pagination and dynamic batch size detection.
105
- * When status is not specified or 'all', fetches up to `limit` published articles AND
106
- * up to `limit` draft articles in parallel, ensuring drafts and published posts are both covered.
107
- */
108
- export declare function listRemoteArticles(collection: string, options: ListRemoteArticlesOptions): Promise<RemoteArticleItem[]>;
109
- /**
110
- * Pulls a content item from EmDash and updates local files and cache.
111
- * Implements Differential Skip: if remote _rev matches cached rev and local file is untouched,
112
- * skips disk write and AST conversion.
113
- */
114
- export declare function pullArticle(collection: string, id: string, options: PullOptions): Promise<PullResult>;
1
+ export * from './pull/index.js';
115
2
  //# sourceMappingURL=pull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AAsBA,cAAc,iBAAiB,CAAC"}