emdash-emit 0.1.7 → 0.1.9

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 (125) hide show
  1. package/README.md +237 -82
  2. package/dist/cli/commands/new.d.ts.map +1 -1
  3. package/dist/cli/commands/new.js +3 -1
  4. package/dist/cli/commands/new.js.map +1 -1
  5. package/dist/cli/commands/profile.d.ts.map +1 -1
  6. package/dist/cli/commands/profile.js +67 -13
  7. package/dist/cli/commands/profile.js.map +1 -1
  8. package/dist/cli/commands/pull.d.ts +5 -0
  9. package/dist/cli/commands/pull.d.ts.map +1 -1
  10. package/dist/cli/commands/pull.js +96 -39
  11. package/dist/cli/commands/pull.js.map +1 -1
  12. package/dist/cli/commands/push.d.ts.map +1 -1
  13. package/dist/cli/commands/push.js +17 -2
  14. package/dist/cli/commands/push.js.map +1 -1
  15. package/dist/cli/commands/status.d.ts +19 -0
  16. package/dist/cli/commands/status.d.ts.map +1 -1
  17. package/dist/cli/commands/status.js +93 -4
  18. package/dist/cli/commands/status.js.map +1 -1
  19. package/dist/cli/context.d.ts +35 -0
  20. package/dist/cli/context.d.ts.map +1 -1
  21. package/dist/cli/context.js +112 -10
  22. package/dist/cli/context.js.map +1 -1
  23. package/dist/client/auth.d.ts +1 -0
  24. package/dist/client/auth.d.ts.map +1 -1
  25. package/dist/client/auth.js +1 -0
  26. package/dist/client/auth.js.map +1 -1
  27. package/dist/client/http.d.ts.map +1 -1
  28. package/dist/client/http.js +27 -10
  29. package/dist/client/http.js.map +1 -1
  30. package/dist/client/mapper.d.ts +12 -0
  31. package/dist/client/mapper.d.ts.map +1 -1
  32. package/dist/client/mapper.js +65 -0
  33. package/dist/client/mapper.js.map +1 -1
  34. package/dist/client/media.d.ts +141 -0
  35. package/dist/client/media.d.ts.map +1 -0
  36. package/dist/client/media.js +582 -0
  37. package/dist/client/media.js.map +1 -0
  38. package/dist/client/portable-text.d.ts +22 -1
  39. package/dist/client/portable-text.d.ts.map +1 -1
  40. package/dist/client/portable-text.js +85 -5
  41. package/dist/client/portable-text.js.map +1 -1
  42. package/dist/db/cache.d.ts +16 -0
  43. package/dist/db/cache.d.ts.map +1 -1
  44. package/dist/db/cache.js +67 -0
  45. package/dist/db/cache.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/mcp/context.d.ts +1 -0
  51. package/dist/mcp/context.d.ts.map +1 -1
  52. package/dist/mcp/server.d.ts +8 -0
  53. package/dist/mcp/server.d.ts.map +1 -1
  54. package/dist/mcp/server.js +60 -15
  55. package/dist/mcp/server.js.map +1 -1
  56. package/dist/mcp/tool-errors.d.ts +11 -0
  57. package/dist/mcp/tool-errors.d.ts.map +1 -0
  58. package/dist/mcp/tool-errors.js +62 -0
  59. package/dist/mcp/tool-errors.js.map +1 -0
  60. package/dist/mcp/tools/profile.d.ts +9 -2
  61. package/dist/mcp/tools/profile.d.ts.map +1 -1
  62. package/dist/mcp/tools/profile.js +49 -36
  63. package/dist/mcp/tools/profile.js.map +1 -1
  64. package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
  65. package/dist/mcp/tools/sync-diff.js +18 -70
  66. package/dist/mcp/tools/sync-diff.js.map +1 -1
  67. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  68. package/dist/mcp/tools/sync-new.js +40 -21
  69. package/dist/mcp/tools/sync-new.js.map +1 -1
  70. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  71. package/dist/mcp/tools/sync-pull.js +110 -86
  72. package/dist/mcp/tools/sync-pull.js.map +1 -1
  73. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  74. package/dist/mcp/tools/sync-push.js +24 -32
  75. package/dist/mcp/tools/sync-push.js.map +1 -1
  76. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  77. package/dist/mcp/tools/sync-status.js +55 -4
  78. package/dist/mcp/tools/sync-status.js.map +1 -1
  79. package/dist/sync/diff.d.ts +36 -0
  80. package/dist/sync/diff.d.ts.map +1 -1
  81. package/dist/sync/diff.js +118 -0
  82. package/dist/sync/diff.js.map +1 -1
  83. package/dist/sync/media.d.ts +16 -0
  84. package/dist/sync/media.d.ts.map +1 -1
  85. package/dist/sync/media.js +180 -26
  86. package/dist/sync/media.js.map +1 -1
  87. package/dist/sync/merge.d.ts.map +1 -1
  88. package/dist/sync/merge.js +1 -0
  89. package/dist/sync/merge.js.map +1 -1
  90. package/dist/sync/orchestrator.d.ts +6 -0
  91. package/dist/sync/orchestrator.d.ts.map +1 -1
  92. package/dist/sync/orchestrator.js +52 -27
  93. package/dist/sync/orchestrator.js.map +1 -1
  94. package/dist/sync/preflight.d.ts +30 -2
  95. package/dist/sync/preflight.d.ts.map +1 -1
  96. package/dist/sync/preflight.js +274 -10
  97. package/dist/sync/preflight.js.map +1 -1
  98. package/dist/sync/pull.d.ts +47 -0
  99. package/dist/sync/pull.d.ts.map +1 -1
  100. package/dist/sync/pull.js +148 -8
  101. package/dist/sync/pull.js.map +1 -1
  102. package/dist/sync/push.d.ts +2 -0
  103. package/dist/sync/push.d.ts.map +1 -1
  104. package/dist/sync/push.js +332 -6
  105. package/dist/sync/push.js.map +1 -1
  106. package/dist/sync/status.d.ts +11 -1
  107. package/dist/sync/status.d.ts.map +1 -1
  108. package/dist/sync/status.js +40 -6
  109. package/dist/sync/status.js.map +1 -1
  110. package/dist/sync/taxonomies.d.ts.map +1 -1
  111. package/dist/sync/taxonomies.js +39 -4
  112. package/dist/sync/taxonomies.js.map +1 -1
  113. package/dist/utils/config.d.ts +11 -0
  114. package/dist/utils/config.d.ts.map +1 -1
  115. package/dist/utils/config.js +14 -4
  116. package/dist/utils/config.js.map +1 -1
  117. package/dist/utils/frontmatter.d.ts +16 -1
  118. package/dist/utils/frontmatter.d.ts.map +1 -1
  119. package/dist/utils/frontmatter.js +66 -7
  120. package/dist/utils/frontmatter.js.map +1 -1
  121. package/dist/utils/profile.d.ts +3 -3
  122. package/dist/utils/profile.d.ts.map +1 -1
  123. package/dist/utils/profile.js +105 -8
  124. package/dist/utils/profile.js.map +1 -1
  125. package/package.json +4 -1
package/dist/sync/push.js CHANGED
@@ -21,17 +21,21 @@
21
21
  */
22
22
  import fs from 'node:fs';
23
23
  import path from 'node:path';
24
+ import yaml from 'js-yaml';
24
25
  import { withEntryLock } from '../client/lock.js';
25
- import { apiResponseToLocal, localToApiPayload } from '../client/mapper.js';
26
+ import { apiResponseToLocal, extractMediaUlid, localToApiPayload, } from '../client/mapper.js';
26
27
  import { ApiError } from '../client/error.js';
27
28
  import { createAuthedFetch } from '../client/http.js';
28
29
  import { unwrapItem, extractRev } from '../client/api.js';
29
- import { computeArticleRelativePath, extractDatePrefixFromPath, parseMarkdown, serializeMarkdown, } from '../utils/frontmatter.js';
30
+ import { classifyCodeFenceLines } from '../client/portable-text.js';
31
+ import { computeArticleRelativePath, extractDatePrefixFromPath, formatFrontmatterParseError, parseMarkdown, serializeMarkdown, } from '../utils/frontmatter.js';
30
32
  import { loadLocalTaxonomyMaps } from './taxonomies.js';
31
33
  import { runPreflightChecks } from './preflight.js';
32
- import { calculateHash } from './pull.js';
34
+ import { calculateHash, CONFLICTS_SUBDIR, isQuarantinedRelativePath } from './pull.js';
33
35
  import { hybrid3WayMerge } from './merge.js';
34
36
  import { syncRemoteBylines } from './bylines.js';
37
+ import { fetchRemoteMediaDetail, resolveImageMimeType, toRootRelativeMediaUrl, uploadMediaFile, } from '../client/media.js';
38
+ import { promoteDraftMediaFile } from './media.js';
35
39
  export class PushValidationError extends Error {
36
40
  errors;
37
41
  constructor(message, errors) {
@@ -73,6 +77,286 @@ async function transitionContentStatus(collection, id, targetStatus, currentRev,
73
77
  const json = (await res.json().catch(() => ({})));
74
78
  return extractRev(json, currentRev);
75
79
  }
80
+ /**
81
+ * Determines the featured_image value to send to EmDash, returning any warnings.
82
+ *
83
+ * Contract (confirmed against production EmDash): `featured_image: { id: <ULID> }` is
84
+ * accepted on its own and resolved server-side - the server stores the media id and
85
+ * normalizes `provider` itself for media held in the media library. Clients must never
86
+ * fabricate provider, src, storageKey or dimensions.
87
+ *
88
+ * - undefined : leave the payload untouched (field omitted, remote value preserved).
89
+ * - null : send an explicit null to clear the hero image.
90
+ * - otherwise : if the cached remote entry references the same media ULID, resend the remote
91
+ * object verbatim so its original shape (provider "external" with src, or
92
+ * provider "local" with meta.storageKey, blurhash and dimensions) survives the
93
+ * round-trip byte-for-byte rather than being re-resolved from a bare id.
94
+ * Otherwise send the canonical minimal { id: <ULID> }.
95
+ *
96
+ * Local media/*.yaml is never a payload source: it lacks meta.storageKey, and re-sending
97
+ * possibly stale companion metadata would overwrite authoritative remote state. The companion
98
+ * file is used only to cross-check that a referenced ULID is one this workspace knows about.
99
+ */
100
+ function preserveOrResolveFeaturedImage(payload, featuredImage, cache, id, workspaceRoot) {
101
+ const warnings = [];
102
+ if (featuredImage === undefined)
103
+ return warnings;
104
+ if (featuredImage === null) {
105
+ payload.data.featured_image = null;
106
+ return warnings;
107
+ }
108
+ // Canonicalize once: uppercase Crockford base32. extractMediaUlid() also folds a media
109
+ // URL-shaped value back to its ULID so cached-remote comparison still succeeds.
110
+ const targetUlid = (extractMediaUlid(featuredImage) ?? featuredImage.trim()).toUpperCase();
111
+ // 1. Resend the exact remote object when it already points at this media ULID.
112
+ if (cache) {
113
+ try {
114
+ const cachedEntry = cache.getEntry(id);
115
+ if (cachedEntry) {
116
+ const raw = JSON.parse(cachedEntry.rawJson);
117
+ const item = (raw.item || raw);
118
+ const itemData = (item.data || {});
119
+ const remoteFi = itemData.featured_image;
120
+ if (remoteFi && extractMediaUlid(remoteFi) === targetUlid) {
121
+ payload.data.featured_image = remoteFi;
122
+ return warnings;
123
+ }
124
+ }
125
+ }
126
+ catch (err) {
127
+ // Non-fatal: cache inspection failure falls through to canonical minimal payload.
128
+ warnings.push(`[push] Unable to inspect cache for featured_image restoration: ${err.message}`);
129
+ }
130
+ }
131
+ // 2. Cross-check the reference against the workspace media mirror (verification only).
132
+ // A missing entry here is NOT a payload problem - { id: <ULID> } is a valid request that
133
+ // EmDash resolves. It only means Emit cannot confirm the media exists, which is exactly
134
+ // where a hallucinated or mistyped ULID would surface. A workspace that does not mirror
135
+ // media (no media/, or an empty one) is not warned about.
136
+ if (workspaceRoot) {
137
+ const mediaDir = path.join(workspaceRoot, 'media');
138
+ const mirrored = fs.existsSync(mediaDir) ? fs.readdirSync(mediaDir) : [];
139
+ if (mirrored.length > 0) {
140
+ // Anchored on the id segment so a ULID appearing inside another media item's
141
+ // filename can never be mistaken for its own metadata file.
142
+ const companion = mirrored.find((f) => f.endsWith('.yaml') && (f.includes(`_${targetUlid}-`) || f.startsWith(`${targetUlid}-`)));
143
+ if (companion) {
144
+ try {
145
+ const meta = yaml.load(fs.readFileSync(path.join(mediaDir, companion), 'utf8'));
146
+ const metaId = typeof meta?.id === 'string' ? meta.id.trim().toUpperCase() : undefined;
147
+ if (metaId && metaId !== targetUlid) {
148
+ warnings.push(`Local media metadata '${companion}' describes a different media ID (${metaId}); it was ignored for featuredImage ${targetUlid}.`);
149
+ }
150
+ }
151
+ catch (err) {
152
+ // Non-fatal: metadata inspection is advisory only.
153
+ warnings.push(`[push] Failed to read local media metadata '${companion}': ${err.message}`);
154
+ }
155
+ }
156
+ else {
157
+ warnings.push(`featuredImage ${targetUlid} was not found in the mirrored media under media/, so Emit could not confirm this media ID exists. The ID is sent as-is and EmDash resolves it, but if the ID is wrong the hero image will be missing. Upload the image first (EmDash Admin or media_upload) and use the ULID it returns, or run "emit pull-media" to mirror remote media locally.`);
158
+ }
159
+ }
160
+ }
161
+ // 3. Canonical minimal payload (identical to what localToApiPayload produces).
162
+ payload.data.featured_image = { id: targetUlid };
163
+ return warnings;
164
+ }
165
+ /**
166
+ * Rewrites standalone local draft image lines in Markdown body to their confirmed
167
+ * canonical root-relative URLs (`/_emdash/api/media/file/<storageKey>`), skipping
168
+ * fenced code blocks and opaque block fences.
169
+ */
170
+ function rewriteDraftImagesInBody(body, draftImages, uploadedByAbsPath) {
171
+ if (draftImages.length === 0)
172
+ return body;
173
+ const rawPathToResult = new Map();
174
+ for (const ref of draftImages) {
175
+ const res = uploadedByAbsPath.get(ref.resolvedAbsPath);
176
+ if (res) {
177
+ rawPathToResult.set(ref.rawPath, res);
178
+ rawPathToResult.set(ref.rawPath.trim(), res);
179
+ }
180
+ }
181
+ const lines = body.split('\n');
182
+ // Same CommonMark-aware fence walker that G5 / G11 use, so a line can never be
183
+ // rewritten here while being skipped there (or vice versa).
184
+ const fenceStates = classifyCodeFenceLines(body);
185
+ const standaloneRegex = /^!\[([^\]]*)\]\(([^)]+)\)$/;
186
+ return lines
187
+ .map((line, index) => {
188
+ const state = fenceStates[index];
189
+ if (state.isFenceDelimiter || state.insideCodeFence) {
190
+ return line;
191
+ }
192
+ const hasCr = line.endsWith('\r');
193
+ const cleanLine = hasCr ? line.slice(0, -1) : line;
194
+ const trimmed = cleanLine.trim();
195
+ // Opaque EmDash block fences are managed by G9 and must stay untouched
196
+ if (/^<!--ec:block .+ -->$/.test(trimmed)) {
197
+ return line;
198
+ }
199
+ const match = trimmed.match(standaloneRegex);
200
+ if (!match)
201
+ return line;
202
+ const alt = match[1];
203
+ const rawPath = match[2];
204
+ const uploaded = rawPathToResult.get(rawPath) ?? rawPathToResult.get(rawPath.trim());
205
+ if (!uploaded)
206
+ return line;
207
+ const replaced = `![${alt}](${uploaded.url})`;
208
+ return hasCr ? `${replaced}\r` : replaced;
209
+ })
210
+ .join('\n');
211
+ }
212
+ /**
213
+ * Promotes uploaded draft images from `media/drafts/<filename>` into
214
+ * `media/<yyyyMMdd>_<mediaId>-<name>.<ext>` along with companion `.yaml` metadata,
215
+ * and commits `status = 'ready'` in `media_state`.
216
+ *
217
+ * Protected by try/catch per asset (C-2) so that any local filesystem failure
218
+ * after a successful remote article PUT/POST is downgraded to a warning rather than
219
+ * aborting `saveBaseSnapshot` / `saveSyncState`.
220
+ */
221
+ function finalizePromotedDraftImages(draftImages, uploadedByAbsPath, options, warnings) {
222
+ if (draftImages.length === 0)
223
+ return;
224
+ const processedAbsPaths = new Set();
225
+ const promotedRelPaths = [];
226
+ const reusedRelPaths = [];
227
+ const unverifiedAssets = [];
228
+ for (const ref of draftImages) {
229
+ if (processedAbsPaths.has(ref.resolvedAbsPath))
230
+ continue;
231
+ processedAbsPaths.add(ref.resolvedAbsPath);
232
+ const uploaded = uploadedByAbsPath.get(ref.resolvedAbsPath);
233
+ if (ref.alreadyPromoted) {
234
+ reusedRelPaths.push(ref.alreadyPromoted.promotedRelPath);
235
+ if (uploaded?.remoteVerification === 'unknown') {
236
+ unverifiedAssets.push(`${ref.alreadyPromoted.promotedRelPath} (${ref.alreadyPromoted.mediaId})${uploaded.remoteVerificationNote ? `: ${uploaded.remoteVerificationNote}` : ''}`);
237
+ }
238
+ continue;
239
+ }
240
+ if (!uploaded)
241
+ continue;
242
+ if (uploaded.remoteVerification === 'unknown') {
243
+ unverifiedAssets.push(`${uploaded.filename} (${uploaded.mediaId})${uploaded.remoteVerificationNote ? `: ${uploaded.remoteVerificationNote}` : ''}`);
244
+ }
245
+ try {
246
+ const promotedRelPath = promoteDraftMediaFile({
247
+ workspaceRoot: options.workspaceRoot,
248
+ origin: options.origin,
249
+ draftAbsPath: ref.resolvedAbsPath,
250
+ item: {
251
+ id: uploaded.mediaId,
252
+ filename: uploaded.filename,
253
+ mimeType: uploaded.mimeType,
254
+ size: uploaded.size,
255
+ width: uploaded.width ?? null,
256
+ height: uploaded.height ?? null,
257
+ alt: ref.alt || '',
258
+ caption: '',
259
+ storageKey: uploaded.storageKey,
260
+ contentHash: uploaded.contentHash,
261
+ status: 'ready',
262
+ url: uploaded.url,
263
+ createdAt: uploaded.createdAt || new Date().toISOString(),
264
+ },
265
+ removeDraft: true,
266
+ });
267
+ options.cache.saveMediaState({
268
+ localHash: uploaded.localHash,
269
+ mediaId: uploaded.mediaId,
270
+ storageKey: uploaded.storageKey,
271
+ url: uploaded.url,
272
+ workspacePath: promotedRelPath,
273
+ status: 'ready',
274
+ });
275
+ promotedRelPaths.push(promotedRelPath);
276
+ }
277
+ catch (err) {
278
+ // Keep status='uploaded' in media_state so subsequent runs know the remote upload succeeded
279
+ warnings.push(`[LOCAL_IMAGE_AUTO_UPLOAD] Uploaded '${ref.filename}' (${uploaded.mediaId}) to remote, but failed to promote local file to media/: ${err.message}`);
280
+ }
281
+ }
282
+ if (promotedRelPaths.length > 0) {
283
+ warnings.push(`[LOCAL_IMAGE_AUTO_UPLOAD] Auto-uploaded ${promotedRelPaths.length} draft image(s) and promoted to: ${promotedRelPaths.join(', ')}`);
284
+ }
285
+ if (reusedRelPaths.length > 0) {
286
+ warnings.push(`[LOCAL_IMAGE_AUTO_UPLOAD] Reused ${reusedRelPaths.length} already-promoted media asset(s): ${reusedRelPaths.join(', ')}`);
287
+ }
288
+ if (unverifiedAssets.length > 0) {
289
+ warnings.push(`[MEDIA_EXISTENCE_UNVERIFIED] The remote server did not confirm these reused media records (GET /_emdash/api/media/{id} unsupported or failed): ${unverifiedAssets.join(', ')}. The cached /_emdash/api/media/file/<storageKey> URL was reused as-is; run "emit pull-media" to re-verify or re-upload if the images 404.`);
290
+ }
291
+ }
292
+ /**
293
+ * Executes P2–P4 (upload/resolve draft images and rewrite Markdown body in-memory).
294
+ * Already-promoted assets are verified against the remote before their canonical URL is
295
+ * baked into the body, so a media record deleted on the EmDash side can never produce an
296
+ * article that renders HTTP 404 images in production.
297
+ */
298
+ async function uploadAndRewriteDraftImages(body, draftImages, options, fetchFn) {
299
+ const uploadedByAbsPath = new Map();
300
+ if (draftImages.length === 0) {
301
+ return { body, uploadedByAbsPath };
302
+ }
303
+ for (const draftRef of draftImages) {
304
+ if (uploadedByAbsPath.has(draftRef.resolvedAbsPath)) {
305
+ continue;
306
+ }
307
+ if (draftRef.alreadyPromoted) {
308
+ const promoted = draftRef.alreadyPromoted;
309
+ const remoteCheck = await fetchRemoteMediaDetail(promoted.mediaId, {
310
+ origin: options.origin,
311
+ token: options.token,
312
+ fetchFn,
313
+ });
314
+ if (remoteCheck.exists === false) {
315
+ // Purge the stale local record so the next run does not keep reusing a dead URL
316
+ const staleState = options.cache.getMediaStateByMediaId(promoted.mediaId);
317
+ if (staleState) {
318
+ options.cache.deleteMediaState(staleState.localHash);
319
+ }
320
+ throw new ApiError({
321
+ message: `Image '${draftRef.filename}' was already promoted to '${promoted.promotedRelPath}' (media id ${promoted.mediaId}), but that media record no longer exists on remote.`,
322
+ code: 'PROMOTED_MEDIA_NOT_FOUND_REMOTE',
323
+ status: 404,
324
+ endpoint: `/_emdash/api/media/${promoted.mediaId}`,
325
+ suggestion: 'Restore the media on the EmDash side (then run "emit pull-media"), or place the image back under media/drafts/ and push again so Emit uploads a fresh record.',
326
+ });
327
+ }
328
+ const detail = remoteCheck.exists === true ? remoteCheck.item : undefined;
329
+ const promotedStorageKey = detail?.storageKey || promoted.storageKey;
330
+ uploadedByAbsPath.set(draftRef.resolvedAbsPath, {
331
+ mediaId: promoted.mediaId,
332
+ storageKey: promotedStorageKey,
333
+ url: toRootRelativeMediaUrl(detail?.url || promoted.url, promotedStorageKey, options.origin),
334
+ localHash: '',
335
+ contentHash: '',
336
+ size: 0,
337
+ mimeType: resolveImageMimeType(draftRef.filename) || 'image/png',
338
+ filename: draftRef.filename,
339
+ deduplicated: true,
340
+ remoteVerification: remoteCheck.exists === true ? 'verified' : 'unknown',
341
+ remoteVerificationNote: remoteCheck.exists === 'unknown' ? remoteCheck.reason : undefined,
342
+ });
343
+ continue;
344
+ }
345
+ const uploadRes = await uploadMediaFile({
346
+ filePath: draftRef.resolvedAbsPath,
347
+ filename: draftRef.filename,
348
+ alt: draftRef.alt || undefined,
349
+ origin: options.origin,
350
+ token: options.token,
351
+ refreshToken: options.refreshToken,
352
+ cache: options.cache,
353
+ fetchFn: options.fetchFn,
354
+ });
355
+ uploadedByAbsPath.set(draftRef.resolvedAbsPath, uploadRes);
356
+ }
357
+ const rewrittenBody = rewriteDraftImagesInBody(body, draftImages, uploadedByAbsPath);
358
+ return { body: rewrittenBody, uploadedByAbsPath };
359
+ }
76
360
  /**
77
361
  * Pushes a local markdown article to remote EmDash with full preflight guards,
78
362
  * two-tier lock lease protection, and automatic 3-way merge on conflict.
@@ -85,8 +369,32 @@ export async function pushArticle(targetFilePath, options) {
85
369
  if (!fs.existsSync(fullPath)) {
86
370
  throw new Error(`Target file not found: ${targetFilePath}`);
87
371
  }
372
+ const originalRelPath = path.relative(options.workspaceRoot, fullPath);
373
+ // Rescue copies under "<collection>/conflicts/" are deliberately unpushable. They exist only to
374
+ // retain divergent local content that a pull was about to overwrite; pushing one as-is would
375
+ // replace the canonical article's remote title/slug/body with stale divergent content and
376
+ // regenerate the duplicate-file-for-one-ULID state that quarantine exists to repair.
377
+ if (isQuarantinedRelativePath(originalRelPath)) {
378
+ throw new PushValidationError(`Refusing to push a preserved rescue copy: ${originalRelPath}`, [
379
+ {
380
+ code: 'QUARANTINED_COPY_NOT_PUSHABLE',
381
+ message: `'${originalRelPath}' is a preserved rescue copy under "${CONFLICTS_SUBDIR}/". ` +
382
+ 'Rescue copies hold stale divergent content captured before a pull overwrote it; ' +
383
+ 'pushing one would overwrite the canonical article of the same ULID and recreate duplicate local files.',
384
+ suggestion: 'Merge the valuable lines into the canonical article file (posts/draft/... or posts/published/...), then delete this copy. ' +
385
+ 'To intentionally replace the remote version, copy the rescue file over the canonical path and push that canonical path instead.',
386
+ },
387
+ ]);
388
+ }
88
389
  const rawContent = fs.readFileSync(fullPath, 'utf8');
89
- const parsed = parseMarkdown(rawContent);
390
+ let parsed;
391
+ try {
392
+ parsed = parseMarkdown(rawContent);
393
+ }
394
+ catch (err) {
395
+ const reason = formatFrontmatterParseError(err);
396
+ throw new Error(`Invalid frontmatter in ${targetFilePath}: ${reason} (quote strings starting with "%" or containing special YAML characters, or run "emit pull" to repair)`);
397
+ }
90
398
  const id = parsed.frontmatter.id;
91
399
  const collection = parsed.frontmatter.collection;
92
400
  // Retrieve sync state and base snapshot
@@ -128,12 +436,14 @@ export async function pushArticle(targetFilePath, options) {
128
436
  };
129
437
  }
130
438
  }
131
- // 1. Run Preflight Guards G2 - G9
439
+ // 1. Run Preflight Guards G2 - G11
132
440
  const preflight = runPreflightChecks(targetFilePath, preflightParsed, {
133
441
  allowPublish: options.allowPublish,
134
442
  knownTaxonomies,
135
443
  baseMarkdown: baseSnapshot?.bodyMarkdown,
136
444
  previousStatus: syncState?.status || 'draft',
445
+ workspaceRoot: options.workspaceRoot,
446
+ cache: options.cache,
137
447
  });
138
448
  if (!preflight.valid) {
139
449
  throw new PushValidationError(`Push blocked by Preflight Guards (${preflight.errors.length} error(s)).`, preflight.errors);
@@ -204,7 +514,11 @@ export async function pushArticle(targetFilePath, options) {
204
514
  }
205
515
  };
206
516
  if (isNewArticle) {
517
+ // [P2-P4] Upload/resolve standalone draft images and rewrite body
518
+ const { body: rewrittenBody, uploadedByAbsPath } = await uploadAndRewriteDraftImages(parsed.body, preflight.draftImages, options, fetchFn);
519
+ parsed.body = rewrittenBody;
207
520
  let payload = localToApiPayload(parsed, '', effectiveOptions);
521
+ warnings.push(...preserveOrResolveFeaturedImage(payload, parsed.frontmatter.featuredImage, options.cache, id, options.workspaceRoot));
208
522
  const postUrl = new URL(`/_emdash/api/content/${collection}`, options.origin).toString();
209
523
  const res = await fetchFn(postUrl, {
210
524
  method: 'POST',
@@ -254,6 +568,8 @@ export async function pushArticle(targetFilePath, options) {
254
568
  warnings.push(`Failed to remove provisional file at ${fullPath}: ${unlinkErr.message}.`);
255
569
  }
256
570
  }
571
+ // [P6] Promote uploaded draft images from media/drafts/ into media/ and commit media_state
572
+ finalizePromotedDraftImages(preflight.draftImages, uploadedByAbsPath, options, warnings);
257
573
  // Update Base snapshot and Sync state
258
574
  options.cache.saveBaseSnapshot({
259
575
  id: actualId,
@@ -277,13 +593,19 @@ export async function pushArticle(targetFilePath, options) {
277
593
  id: actualId,
278
594
  rev: finalRev,
279
595
  filePath: newRelPath,
596
+ ...(actualId !== id ? { previousId: id } : {}),
597
+ ...(originalRelPath !== newRelPath ? { previousFilePath: originalRelPath } : {}),
280
598
  conflict: false,
281
599
  warnings,
282
600
  };
283
601
  }
284
- // Existing article: execute within full 7-minute entry lock lease
602
+ // Existing article: execute within full 7-minute entry lock lease (B-3: acquire lock BEFORE uploading media)
285
603
  return await withEntryLock(collection, id, options, async () => {
604
+ // [P2-P4] Upload/resolve standalone draft images and rewrite body after entry lock is acquired
605
+ const { body: rewrittenBody, uploadedByAbsPath } = await uploadAndRewriteDraftImages(parsed.body, preflight.draftImages, options, fetchFn);
606
+ parsed.body = rewrittenBody;
286
607
  let payload = localToApiPayload(parsed, currentRev, effectiveOptions);
608
+ warnings.push(...preserveOrResolveFeaturedImage(payload, parsed.frontmatter.featuredImage, options.cache, id, options.workspaceRoot));
287
609
  const putUrl = new URL(`/_emdash/api/content/${collection}/${id}`, options.origin).toString();
288
610
  let res = await fetchFn(putUrl, {
289
611
  method: 'PUT',
@@ -374,6 +696,7 @@ export async function pushArticle(targetFilePath, options) {
374
696
  parsed.frontmatter = mergeResult.frontmatter;
375
697
  parsed.body = mergeResult.body;
376
698
  payload = localToApiPayload(parsed, remoteParsed.rev, effectiveOptions);
699
+ warnings.push(...preserveOrResolveFeaturedImage(payload, parsed.frontmatter.featuredImage, options.cache, id, options.workspaceRoot));
377
700
  res = await fetchFn(putUrl, {
378
701
  method: 'PUT',
379
702
  headers: {
@@ -442,6 +765,8 @@ export async function pushArticle(targetFilePath, options) {
442
765
  else {
443
766
  fs.writeFileSync(fullPath, serializedContent, 'utf8');
444
767
  }
768
+ // [P6] Promote uploaded draft images from media/drafts/ into media/ and commit media_state
769
+ finalizePromotedDraftImages(preflight.draftImages, uploadedByAbsPath, options, warnings);
445
770
  // Update Base snapshot
446
771
  options.cache.saveBaseSnapshot({
447
772
  id,
@@ -466,6 +791,7 @@ export async function pushArticle(targetFilePath, options) {
466
791
  id,
467
792
  rev: finalRev,
468
793
  filePath: newRelPath,
794
+ ...(originalRelPath !== newRelPath ? { previousFilePath: originalRelPath } : {}),
469
795
  conflict: false,
470
796
  warnings,
471
797
  };
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/sync/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/sync/push.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@ export interface ArticleStatusItem {
4
4
  slug: string;
5
5
  title: string;
6
6
  status: 'draft' | 'published';
7
- syncStatus: 'synced' | 'modified' | 'untracked';
7
+ syncStatus: 'synced' | 'modified' | 'untracked' | 'invalid';
8
8
  filePath: string;
9
9
  rev?: string;
10
+ cached?: boolean;
11
+ error?: string;
10
12
  }
11
13
  export interface WorkspaceStatusResult {
12
14
  items: ArticleStatusItem[];
@@ -15,8 +17,16 @@ export interface WorkspaceStatusResult {
15
17
  synced: number;
16
18
  modified: number;
17
19
  untracked: number;
20
+ invalid: number;
21
+ /** Preserved divergent local copies stored in `<collection>/conflicts/` by a pull. */
22
+ conflicts: number;
18
23
  };
19
24
  }
25
+ /**
26
+ * Counts preserved divergent local copies in `<collection>/conflicts/`.
27
+ * These files are informational rescue copies: they are never tracked, pushed, or pruned.
28
+ */
29
+ export declare function countQuarantinedCopies(workspaceRoot: string, collection?: string): number;
20
30
  /**
21
31
  * Scans the workspace directory and compares files against cache.db to compute sync status.
22
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,EACpB,UAAU,GAAE,MAAgB,GAC3B,qBAAqB,CA+DvB"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AASpD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,sFAAsF;QACtF,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,MAAgB,GAC3B,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,EACpB,UAAU,GAAE,MAAgB,GAC3B,qBAAqB,CAoFvB"}
@@ -21,9 +21,24 @@
21
21
  */
22
22
  import fs from 'node:fs';
23
23
  import path from 'node:path';
24
- import { parseMarkdown } from '../utils/frontmatter.js';
25
- import { calculateHash } from './pull.js';
26
- import { compareArticleFilenameDesc } from '../utils/naming.js';
24
+ import { formatFrontmatterParseError, parseMarkdown } from '../utils/frontmatter.js';
25
+ import { calculateHash, CONFLICTS_SUBDIR } from './pull.js';
26
+ import { compareArticleFilenameDesc, extractUlidFromFilename, stripDatePrefix, } from '../utils/naming.js';
27
+ /**
28
+ * Counts preserved divergent local copies in `<collection>/conflicts/`.
29
+ * These files are informational rescue copies: they are never tracked, pushed, or pruned.
30
+ */
31
+ export function countQuarantinedCopies(workspaceRoot, collection = 'posts') {
32
+ const conflictsDir = path.join(workspaceRoot, collection, CONFLICTS_SUBDIR);
33
+ if (!fs.existsSync(conflictsDir))
34
+ return 0;
35
+ try {
36
+ return fs.readdirSync(conflictsDir).filter((f) => f.endsWith('.md')).length;
37
+ }
38
+ catch {
39
+ return 0;
40
+ }
41
+ }
27
42
  /**
28
43
  * Scans the workspace directory and compares files against cache.db to compute sync status.
29
44
  */
@@ -33,7 +48,7 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
33
48
  if (!fs.existsSync(collectionDir)) {
34
49
  return {
35
50
  items: [],
36
- summary: { total: 0, synced: 0, modified: 0, untracked: 0 },
51
+ summary: { total: 0, synced: 0, modified: 0, untracked: 0, invalid: 0, conflicts: 0 },
37
52
  };
38
53
  }
39
54
  // Scan draft/ and published/ subdirectories
@@ -70,8 +85,25 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
70
85
  rev: syncState?.remoteRev,
71
86
  });
72
87
  }
73
- catch {
74
- // Skip invalid markdown files
88
+ catch (err) {
89
+ const fallbackId = extractUlidFromFilename(file) || 'unknown';
90
+ const baseWithoutDate = stripDatePrefix(file).replace(/\.md$/i, '');
91
+ const fallbackTitle = fallbackId !== 'unknown' && baseWithoutDate.startsWith(`${fallbackId}-`)
92
+ ? baseWithoutDate.slice(fallbackId.length + 1)
93
+ : baseWithoutDate;
94
+ const syncState = fallbackId !== 'unknown' ? cache.getSyncState(fallbackId) : null;
95
+ const errorMsg = formatFrontmatterParseError(err);
96
+ items.push({
97
+ id: fallbackId,
98
+ slug: syncState?.slug || 'invalid-frontmatter',
99
+ title: fallbackTitle,
100
+ status: sub,
101
+ syncStatus: 'invalid',
102
+ filePath: relPath,
103
+ rev: syncState?.remoteRev,
104
+ cached: Boolean(syncState),
105
+ error: errorMsg,
106
+ });
75
107
  }
76
108
  }
77
109
  }
@@ -82,6 +114,8 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
82
114
  synced: items.filter((i) => i.syncStatus === 'synced').length,
83
115
  modified: items.filter((i) => i.syncStatus === 'modified').length,
84
116
  untracked: items.filter((i) => i.syncStatus === 'untracked').length,
117
+ invalid: items.filter((i) => i.syncStatus === 'invalid').length,
118
+ conflicts: countQuarantinedCopies(workspaceRoot, collection),
85
119
  };
86
120
  return { items, summary };
87
121
  }