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.
- package/README.md +237 -82
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +3 -1
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/profile.d.ts.map +1 -1
- package/dist/cli/commands/profile.js +67 -13
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/pull.d.ts +5 -0
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +96 -39
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +17 -2
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/status.d.ts +19 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +93 -4
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/context.d.ts +35 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +112 -10
- package/dist/cli/context.js.map +1 -1
- package/dist/client/auth.d.ts +1 -0
- package/dist/client/auth.d.ts.map +1 -1
- package/dist/client/auth.js +1 -0
- package/dist/client/auth.js.map +1 -1
- package/dist/client/http.d.ts.map +1 -1
- package/dist/client/http.js +27 -10
- package/dist/client/http.js.map +1 -1
- package/dist/client/mapper.d.ts +12 -0
- package/dist/client/mapper.d.ts.map +1 -1
- package/dist/client/mapper.js +65 -0
- package/dist/client/mapper.js.map +1 -1
- package/dist/client/media.d.ts +141 -0
- package/dist/client/media.d.ts.map +1 -0
- package/dist/client/media.js +582 -0
- package/dist/client/media.js.map +1 -0
- package/dist/client/portable-text.d.ts +22 -1
- package/dist/client/portable-text.d.ts.map +1 -1
- package/dist/client/portable-text.js +85 -5
- package/dist/client/portable-text.js.map +1 -1
- package/dist/db/cache.d.ts +16 -0
- package/dist/db/cache.d.ts.map +1 -1
- package/dist/db/cache.js +67 -0
- package/dist/db/cache.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/context.d.ts +1 -0
- package/dist/mcp/context.d.ts.map +1 -1
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +60 -15
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-errors.d.ts +11 -0
- package/dist/mcp/tool-errors.d.ts.map +1 -0
- package/dist/mcp/tool-errors.js +62 -0
- package/dist/mcp/tool-errors.js.map +1 -0
- package/dist/mcp/tools/profile.d.ts +9 -2
- package/dist/mcp/tools/profile.d.ts.map +1 -1
- package/dist/mcp/tools/profile.js +49 -36
- package/dist/mcp/tools/profile.js.map +1 -1
- package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
- package/dist/mcp/tools/sync-diff.js +18 -70
- package/dist/mcp/tools/sync-diff.js.map +1 -1
- package/dist/mcp/tools/sync-new.d.ts.map +1 -1
- package/dist/mcp/tools/sync-new.js +40 -21
- package/dist/mcp/tools/sync-new.js.map +1 -1
- package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
- package/dist/mcp/tools/sync-pull.js +110 -86
- package/dist/mcp/tools/sync-pull.js.map +1 -1
- package/dist/mcp/tools/sync-push.d.ts.map +1 -1
- package/dist/mcp/tools/sync-push.js +24 -32
- package/dist/mcp/tools/sync-push.js.map +1 -1
- package/dist/mcp/tools/sync-status.d.ts.map +1 -1
- package/dist/mcp/tools/sync-status.js +55 -4
- package/dist/mcp/tools/sync-status.js.map +1 -1
- package/dist/sync/diff.d.ts +36 -0
- package/dist/sync/diff.d.ts.map +1 -1
- package/dist/sync/diff.js +118 -0
- package/dist/sync/diff.js.map +1 -1
- package/dist/sync/media.d.ts +16 -0
- package/dist/sync/media.d.ts.map +1 -1
- package/dist/sync/media.js +180 -26
- package/dist/sync/media.js.map +1 -1
- package/dist/sync/merge.d.ts.map +1 -1
- package/dist/sync/merge.js +1 -0
- package/dist/sync/merge.js.map +1 -1
- package/dist/sync/orchestrator.d.ts +6 -0
- package/dist/sync/orchestrator.d.ts.map +1 -1
- package/dist/sync/orchestrator.js +52 -27
- package/dist/sync/orchestrator.js.map +1 -1
- package/dist/sync/preflight.d.ts +30 -2
- package/dist/sync/preflight.d.ts.map +1 -1
- package/dist/sync/preflight.js +274 -10
- package/dist/sync/preflight.js.map +1 -1
- package/dist/sync/pull.d.ts +47 -0
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +148 -8
- package/dist/sync/pull.js.map +1 -1
- package/dist/sync/push.d.ts +2 -0
- package/dist/sync/push.d.ts.map +1 -1
- package/dist/sync/push.js +332 -6
- package/dist/sync/push.js.map +1 -1
- package/dist/sync/status.d.ts +11 -1
- package/dist/sync/status.d.ts.map +1 -1
- package/dist/sync/status.js +40 -6
- package/dist/sync/status.js.map +1 -1
- package/dist/sync/taxonomies.d.ts.map +1 -1
- package/dist/sync/taxonomies.js +39 -4
- package/dist/sync/taxonomies.js.map +1 -1
- package/dist/utils/config.d.ts +11 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +14 -4
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +16 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +66 -7
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/profile.d.ts +3 -3
- package/dist/utils/profile.d.ts.map +1 -1
- package/dist/utils/profile.js +105 -8
- package/dist/utils/profile.js.map +1 -1
- 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 {
|
|
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 = ``;
|
|
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
|
-
|
|
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 -
|
|
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
|
};
|
package/dist/sync/push.js.map
CHANGED
|
@@ -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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"}
|
package/dist/sync/status.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/sync/status.js
CHANGED
|
@@ -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
|
-
|
|
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
|
}
|