emdash-emit 0.1.11 → 0.1.13

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 (91) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +6 -0
  3. package/dist/cli/commands/conflicts.d.ts.map +1 -1
  4. package/dist/cli/commands/conflicts.js +50 -4
  5. package/dist/cli/commands/conflicts.js.map +1 -1
  6. package/dist/cli/commands/doctor.d.ts.map +1 -1
  7. package/dist/cli/commands/doctor.js +2 -0
  8. package/dist/cli/commands/doctor.js.map +1 -1
  9. package/dist/cli/commands/pull.d.ts.map +1 -1
  10. package/dist/cli/commands/pull.js +14 -5
  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 +36 -2
  14. package/dist/cli/commands/push.js.map +1 -1
  15. package/dist/cli/commands/status.d.ts.map +1 -1
  16. package/dist/cli/commands/status.js +25 -1
  17. package/dist/cli/commands/status.js.map +1 -1
  18. package/dist/cli/context.d.ts.map +1 -1
  19. package/dist/cli/context.js +12 -1
  20. package/dist/cli/context.js.map +1 -1
  21. package/dist/client/api.d.ts +6 -0
  22. package/dist/client/api.d.ts.map +1 -1
  23. package/dist/client/api.js +36 -0
  24. package/dist/client/api.js.map +1 -1
  25. package/dist/db/cache.d.ts +15 -0
  26. package/dist/db/cache.d.ts.map +1 -1
  27. package/dist/db/cache.js +157 -43
  28. package/dist/db/cache.js.map +1 -1
  29. package/dist/mcp/heartbeat.d.ts +35 -0
  30. package/dist/mcp/heartbeat.d.ts.map +1 -0
  31. package/dist/mcp/heartbeat.js +135 -0
  32. package/dist/mcp/heartbeat.js.map +1 -0
  33. package/dist/mcp/server.d.ts +1 -0
  34. package/dist/mcp/server.d.ts.map +1 -1
  35. package/dist/mcp/server.js +7 -0
  36. package/dist/mcp/server.js.map +1 -1
  37. package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -1
  38. package/dist/mcp/tools/sync-conflicts.js +28 -5
  39. package/dist/mcp/tools/sync-conflicts.js.map +1 -1
  40. package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
  41. package/dist/mcp/tools/sync-doctor.js +5 -0
  42. package/dist/mcp/tools/sync-doctor.js.map +1 -1
  43. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  44. package/dist/mcp/tools/sync-pull.js +8 -0
  45. package/dist/mcp/tools/sync-pull.js.map +1 -1
  46. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  47. package/dist/mcp/tools/sync-push.js +48 -5
  48. package/dist/mcp/tools/sync-push.js.map +1 -1
  49. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  50. package/dist/mcp/tools/sync-status.js +7 -1
  51. package/dist/mcp/tools/sync-status.js.map +1 -1
  52. package/dist/sync/conflicts.d.ts +25 -1
  53. package/dist/sync/conflicts.d.ts.map +1 -1
  54. package/dist/sync/conflicts.js +121 -4
  55. package/dist/sync/conflicts.js.map +1 -1
  56. package/dist/sync/delete.d.ts.map +1 -1
  57. package/dist/sync/delete.js +66 -3
  58. package/dist/sync/delete.js.map +1 -1
  59. package/dist/sync/doctor.d.ts +10 -0
  60. package/dist/sync/doctor.d.ts.map +1 -1
  61. package/dist/sync/doctor.js +153 -11
  62. package/dist/sync/doctor.js.map +1 -1
  63. package/dist/sync/merge.d.ts +48 -8
  64. package/dist/sync/merge.d.ts.map +1 -1
  65. package/dist/sync/merge.js +89 -24
  66. package/dist/sync/merge.js.map +1 -1
  67. package/dist/sync/orchestrator.d.ts +6 -1
  68. package/dist/sync/orchestrator.d.ts.map +1 -1
  69. package/dist/sync/orchestrator.js +19 -2
  70. package/dist/sync/orchestrator.js.map +1 -1
  71. package/dist/sync/pull.d.ts +14 -1
  72. package/dist/sync/pull.d.ts.map +1 -1
  73. package/dist/sync/pull.js +71 -23
  74. package/dist/sync/pull.js.map +1 -1
  75. package/dist/sync/push.d.ts +8 -0
  76. package/dist/sync/push.d.ts.map +1 -1
  77. package/dist/sync/push.js +262 -31
  78. package/dist/sync/push.js.map +1 -1
  79. package/dist/sync/status.d.ts +11 -0
  80. package/dist/sync/status.d.ts.map +1 -1
  81. package/dist/sync/status.js +13 -1
  82. package/dist/sync/status.js.map +1 -1
  83. package/dist/sync/taxonomies.d.ts +7 -0
  84. package/dist/sync/taxonomies.d.ts.map +1 -1
  85. package/dist/sync/taxonomies.js +28 -1
  86. package/dist/sync/taxonomies.js.map +1 -1
  87. package/dist/sync/terms.d.ts +5 -0
  88. package/dist/sync/terms.d.ts.map +1 -1
  89. package/dist/sync/terms.js +20 -3
  90. package/dist/sync/terms.js.map +1 -1
  91. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { CacheDatabase } from '../db/cache.js';
2
2
  import { type MapperOptions } from '../client/mapper.js';
3
3
  import { type TaxonomyCandidates } from '../utils/frontmatter.js';
4
4
  import { type PreflightError } from './preflight.js';
5
+ export type TaxonomyResolutionStrategy = 'union' | 'local' | 'remote';
5
6
  export interface PushOptions extends MapperOptions {
6
7
  workspaceRoot: string;
7
8
  cache: CacheDatabase;
@@ -11,6 +12,12 @@ export interface PushOptions extends MapperOptions {
11
12
  fetchFn?: typeof fetch;
12
13
  candidates?: TaxonomyCandidates;
13
14
  knownTaxonomies?: Record<string, string[]>;
15
+ resolveTaxonomy?: TaxonomyResolutionStrategy;
16
+ allowWipeTaxonomies?: boolean;
17
+ allowUnappliedTaxonomies?: boolean;
18
+ revive?: boolean;
19
+ force?: boolean;
20
+ noTaxonomyAudit?: boolean;
14
21
  }
15
22
  export interface ResolvedTaxonomyItem {
16
23
  input: string;
@@ -25,6 +32,7 @@ export interface PushResult {
25
32
  previousId?: string;
26
33
  previousFilePath?: string;
27
34
  conflict: boolean;
35
+ taxonomyConflict?: boolean;
28
36
  warnings: string[];
29
37
  errors?: PreflightError[];
30
38
  resolvedTaxonomies?: {
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/sync/push.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAgD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAenG,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE;QACnB,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAC9B,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAAC;KACxD,CAAC;CACH;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IACrC,MAAM,EAAE,cAAc,EAAE,CAAC;IAEhC,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAIpD;CACF;AAsZD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAwpBrB"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/sync/push.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAgD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAoBnG,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE;QACnB,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAC9B,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAAC;KACxD,CAAC;CACH;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IACrC,MAAM,EAAE,cAAc,EAAE,CAAC;IAEhC,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAIpD;CACF;AAsZD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAm7BrB"}
package/dist/sync/push.js CHANGED
@@ -31,11 +31,11 @@ import { classifyCodeFenceLines } from '../client/portable-text.js';
31
31
  import { computeArticleRelativePath, extractDatePrefixFromPath, parseMarkdown, serializeMarkdown, } from '../utils/frontmatter.js';
32
32
  import { loadLocalTaxonomyMaps, loadLocalTaxonomyCandidates } from './taxonomies.js';
33
33
  import { runPreflightChecks } from './preflight.js';
34
- import { calculateHash, CONFLICTS_SUBDIR, isQuarantinedRelativePath } from './pull.js';
34
+ import { calculateHash, CONFLICTS_SUBDIR, isQuarantinedRelativePath, quarantineLocalCopy, } from './pull.js';
35
35
  import { hybrid3WayMerge } from './merge.js';
36
36
  import { syncRemoteBylines } from './bylines.js';
37
37
  import { updateConfigSyncedVersion } from '../utils/config.js';
38
- import { fetchAssignedTaxonomies } from './terms.js';
38
+ import { fetchAssignedTaxonomies, computeTaxonomyHash } from './terms.js';
39
39
  import { fetchRemoteMediaDetail, resolveImageMimeType, toRootRelativeMediaUrl, uploadMediaFile, } from '../client/media.js';
40
40
  import { promoteDraftMediaFile } from './media.js';
41
41
  export class PushValidationError extends Error {
@@ -447,6 +447,38 @@ export async function pushArticle(targetFilePath, options) {
447
447
  }
448
448
  }
449
449
  // 1. Run Preflight Guards G2 - G11
450
+ // Guard against blind re-push when article is marked delete_pending (unconfirmed remote deletion)
451
+ if (syncState?.deletePending === 1 && !options.revive && !options.force) {
452
+ throw new ApiError({
453
+ endpoint: `/_emdash/api/content/${collection}/${id}`,
454
+ code: 'DELETE_PENDING_ARTICLE',
455
+ status: 409,
456
+ message: `Article ${id} (${targetFilePath}) is marked as delete-pending (previous remote deletion was unconfirmed).`,
457
+ suggestion: `To intentionally revive and push this article to remote, pass --revive (or --force): "emit push ${targetFilePath} --revive"`,
458
+ });
459
+ }
460
+ // Guard against blind re-push when previous taxonomy conflict is still pending
461
+ if (syncState?.conflictPending === 1 && !options.resolveTaxonomy && !options.force) {
462
+ throw new ApiError({
463
+ endpoint: `/_emdash/api/content/${collection}/${id}`,
464
+ code: 'TAXONOMY_CONFLICT_PENDING',
465
+ status: 409,
466
+ message: `Article ${id} (${targetFilePath}) has an unresolved taxonomy conflict from a previous sync.`,
467
+ suggestion: `Pass --resolve-taxonomy=union|local|remote (or --force) to explicitly resolve and confirm: "emit push ${targetFilePath} --resolve-taxonomy=union"`,
468
+ });
469
+ }
470
+ // Guard against blind re-push when previous taxonomy update failed (unapplied remote terms)
471
+ if (syncState?.taxonomyApplyPending === 1 &&
472
+ !options.allowUnappliedTaxonomies &&
473
+ !options.force) {
474
+ throw new ApiError({
475
+ endpoint: `/_emdash/api/content/${collection}/${id}`,
476
+ code: 'TAXONOMY_APPLY_PENDING',
477
+ status: 409,
478
+ message: `Article ${id} (${targetFilePath}) has an unconfirmed taxonomy assignment from a previous failed update.`,
479
+ suggestion: `Run "emit pull-taxonomies" to synchronize taxonomy definitions, then re-push (or pass --allow-unapplied-taxonomies / --force).`,
480
+ });
481
+ }
450
482
  const preflight = runPreflightChecks(targetFilePath, parsed, {
451
483
  allowPublish: options.allowPublish,
452
484
  knownTaxonomies,
@@ -488,8 +520,9 @@ export async function pushArticle(targetFilePath, options) {
488
520
  const isNewArticle = !syncState;
489
521
  // Helper to synchronize taxonomy assignments
490
522
  const syncArticleTaxonomies = async (articleId) => {
523
+ const failures = [];
491
524
  if (!parsed.frontmatter.taxonomies)
492
- return;
525
+ return failures;
493
526
  const taxMaps = taxonomyMaps;
494
527
  const updateTaxonomy = async (taxonomyName, termSlugsOrIds) => {
495
528
  const slugMap = taxMaps.slugToId[taxonomyName] || {};
@@ -508,6 +541,25 @@ export async function pushArticle(targetFilePath, options) {
508
541
  return slugMap[item] || item;
509
542
  })
510
543
  .filter((tid) => Boolean(tid))));
544
+ if (resolvedTermIds.length === 0) {
545
+ // Check if remote previously had assignments in baseline
546
+ const baseFm = baseSnapshot?.frontmatterYaml
547
+ ? JSON.parse(baseSnapshot.frontmatterYaml)
548
+ : null;
549
+ const prevTerms = taxonomyName === 'category' ? baseFm?.taxonomies?.categories : baseFm?.taxonomies?.tags;
550
+ if (prevTerms && prevTerms.length > 0) {
551
+ if (!options.allowWipeTaxonomies && !options.force) {
552
+ throw new ApiError({
553
+ endpoint: `/_emdash/api/content/${collection}/${articleId}/terms/${taxonomyName}`,
554
+ code: 'DESTRUCTIVE_TAXONOMY_WIPE',
555
+ status: 400,
556
+ message: `Local article specified empty array for ${taxonomyName}, which would remove ${prevTerms.length} existing remote assignment(s).`,
557
+ suggestion: `Pass --allow-wipe-taxonomies (or --force) to confirm wiping all ${taxonomyName} assignments.`,
558
+ });
559
+ }
560
+ warnings.push(`🏷️ Cleared all ${prevTerms.length} ${taxonomyName} assignment(s) from remote (local specified empty array).`);
561
+ }
562
+ }
511
563
  const termsUrl = new URL(`/_emdash/api/content/${collection}/${articleId}/terms/${taxonomyName}`, options.origin).toString();
512
564
  const termRes = await fetchFn(termsUrl, {
513
565
  method: 'POST',
@@ -519,6 +571,12 @@ export async function pushArticle(targetFilePath, options) {
519
571
  });
520
572
  if (!termRes.ok) {
521
573
  const errBody = await termRes.text().catch(() => '');
574
+ failures.push({
575
+ taxonomy: taxonomyName,
576
+ status: termRes.status,
577
+ error: errBody || termRes.statusText,
578
+ endpoint: termsUrl,
579
+ });
522
580
  warnings.push(`Failed to update ${taxonomyName} terms: ${termRes.statusText} ${errBody}`);
523
581
  }
524
582
  };
@@ -528,6 +586,7 @@ export async function pushArticle(targetFilePath, options) {
528
586
  if (parsed.frontmatter.taxonomies.tags) {
529
587
  await updateTaxonomy('tag', parsed.frontmatter.taxonomies.tags);
530
588
  }
589
+ return failures;
531
590
  };
532
591
  if (isNewArticle) {
533
592
  // [P2-P4] Upload/resolve standalone draft images and rewrite body
@@ -561,7 +620,8 @@ export async function pushArticle(targetFilePath, options) {
561
620
  // Update parsed frontmatter with the actual ID returned by EmDash
562
621
  parsed.frontmatter.id = actualId;
563
622
  // Sync taxonomies for newly created article
564
- await syncArticleTaxonomies(actualId);
623
+ const taxFailures = await syncArticleTaxonomies(actualId);
624
+ const hasTaxFailures = taxFailures.length > 0;
565
625
  const currentPrefix = extractDatePrefixFromPath(fullPath);
566
626
  const dateInput = parsed.frontmatter.publishedAt || currentPrefix || createdItem.createdAt || null;
567
627
  const newRelPath = computeArticleRelativePath(parsed.frontmatter.collection, parsed.frontmatter.status, actualId, parsed.frontmatter.title || parsed.frontmatter.slug, dateInput);
@@ -586,6 +646,9 @@ export async function pushArticle(targetFilePath, options) {
586
646
  }
587
647
  // [P6] Promote uploaded draft images from media/drafts/ into media/ and commit media_state
588
648
  finalizePromotedDraftImages(preflight.draftImages, uploadedByAbsPath, options, warnings);
649
+ const finalTaxHash = hasTaxFailures
650
+ ? null
651
+ : computeTaxonomyHash(parsed.frontmatter.taxonomies?.categories, parsed.frontmatter.taxonomies?.tags);
589
652
  // Update Base snapshot and Sync state
590
653
  options.cache.saveBaseSnapshot({
591
654
  id: actualId,
@@ -603,7 +666,20 @@ export async function pushArticle(targetFilePath, options) {
603
666
  status: parsed.frontmatter.status,
604
667
  slug: parsed.frontmatter.slug,
605
668
  lastSyncedAt: Math.floor(Date.now() / 1000),
669
+ conflictPending: 0,
670
+ conflictCopyHash: null,
671
+ remoteTaxonomyHash: finalTaxHash,
672
+ taxonomyApplyPending: hasTaxFailures ? 1 : 0,
606
673
  });
674
+ if (hasTaxFailures) {
675
+ throw new ApiError({
676
+ endpoint: taxFailures[0].endpoint,
677
+ code: 'TAXONOMY_UPDATE_FAILED',
678
+ status: taxFailures[0].status || 400,
679
+ message: `Failed to update ${taxFailures.map((f) => f.taxonomy).join(', ')} terms on remote: ${taxFailures.map((f) => f.error).join('; ')}`,
680
+ suggestion: 'Run "emit pull-taxonomies" to update local definitions, verify taxonomy permissions, and retry push.',
681
+ });
682
+ }
607
683
  return {
608
684
  success: true,
609
685
  id: actualId,
@@ -624,14 +700,63 @@ export async function pushArticle(targetFilePath, options) {
624
700
  let payload = localToApiPayload(parsed, currentRev, effectiveOptions);
625
701
  warnings.push(...preserveOrResolveFeaturedImage(payload, parsed.frontmatter.featuredImage, options.cache, id, options.workspaceRoot));
626
702
  const putUrl = new URL(`/_emdash/api/content/${collection}/${id}`, options.origin).toString();
627
- let res = await fetchFn(putUrl, {
628
- method: 'PUT',
629
- headers: {
630
- Authorization: `Bearer ${options.token}`,
631
- 'Content-Type': 'application/json',
632
- },
633
- body: JSON.stringify(payload),
634
- });
703
+ // R1: Pre-PUT Taxonomy Audit to detect out-of-band remote taxonomy changes
704
+ let remoteTaxAudit = null;
705
+ let taxonomyDivergenceDetected = false;
706
+ const baseFm = baseSnapshot?.frontmatterYaml
707
+ ? JSON.parse(baseSnapshot.frontmatterYaml)
708
+ : null;
709
+ const hasLocalTaxonomies = Boolean(parsed.frontmatter.taxonomies &&
710
+ (parsed.frontmatter.taxonomies.categories !== undefined ||
711
+ parsed.frontmatter.taxonomies.tags !== undefined));
712
+ const hasBaseTaxonomies = Boolean(baseFm?.taxonomies && (baseFm.taxonomies.categories || baseFm.taxonomies.tags));
713
+ if ((hasLocalTaxonomies || hasBaseTaxonomies) && !options.noTaxonomyAudit) {
714
+ remoteTaxAudit = await fetchAssignedTaxonomies({
715
+ origin: options.origin,
716
+ token: options.token,
717
+ collection,
718
+ id,
719
+ fetchFn,
720
+ });
721
+ if (remoteTaxAudit.categories === null && remoteTaxAudit.tags === null) {
722
+ warnings.push('⚠️ Remote taxonomy state unknown (could not audit remote terms).');
723
+ }
724
+ else {
725
+ if (remoteTaxAudit.categories === null) {
726
+ warnings.push('⚠️ Remote category taxonomy state unknown (could not audit categories).');
727
+ }
728
+ if (remoteTaxAudit.tags === null) {
729
+ warnings.push('⚠️ Remote tag taxonomy state unknown (could not audit tags).');
730
+ }
731
+ const baselineTaxHash = syncState?.remoteTaxonomyHash ||
732
+ (baseFm?.taxonomies
733
+ ? computeTaxonomyHash(baseFm.taxonomies.categories, baseFm.taxonomies.tags)
734
+ : null);
735
+ const currentRemoteCats = remoteTaxAudit.categories !== null
736
+ ? remoteTaxAudit.categories
737
+ : baseFm?.taxonomies?.categories || [];
738
+ const currentRemoteTags = remoteTaxAudit.tags !== null ? remoteTaxAudit.tags : baseFm?.taxonomies?.tags || [];
739
+ const currentRemoteTaxHash = computeTaxonomyHash(currentRemoteCats, currentRemoteTags);
740
+ if (baselineTaxHash && currentRemoteTaxHash !== baselineTaxHash) {
741
+ taxonomyDivergenceDetected = true;
742
+ }
743
+ }
744
+ }
745
+ let res = taxonomyDivergenceDetected
746
+ ? {
747
+ status: 409,
748
+ ok: false,
749
+ json: async () => ({ error: { code: 'TAXONOMY_DIVERGENCE' } }),
750
+ text: async () => '',
751
+ }
752
+ : await fetchFn(putUrl, {
753
+ method: 'PUT',
754
+ headers: {
755
+ Authorization: `Bearer ${options.token}`,
756
+ 'Content-Type': 'application/json',
757
+ },
758
+ body: JSON.stringify(payload),
759
+ });
635
760
  // 3. Handle 409 Conflict
636
761
  if (res.status === 409) {
637
762
  const errJson = (await res.json().catch(() => ({})));
@@ -645,7 +770,7 @@ export async function pushArticle(targetFilePath, options) {
645
770
  suggestion: 'Wait for the other user to finish editing or release their lock before retrying.',
646
771
  });
647
772
  }
648
- // True revision mismatch conflict: fetch remote latest and run Hybrid 3-Way Merge
773
+ // True revision mismatch conflict or taxonomy divergence: fetch remote latest and run Hybrid 3-Way Merge
649
774
  const getUrl = new URL(`/_emdash/api/content/${collection}/${id}`, options.origin).toString();
650
775
  const getRes = await fetchFn(getUrl, {
651
776
  method: 'GET',
@@ -665,14 +790,15 @@ export async function pushArticle(targetFilePath, options) {
665
790
  }
666
791
  const remoteItem = (await getRes.json());
667
792
  const remoteParsed = apiResponseToLocal(remoteItem, options);
668
- // Fetch remote taxonomy assignments because GET /content/{collection}/{id} does not include them!
669
- const remoteTax = await fetchAssignedTaxonomies({
670
- origin: options.origin,
671
- token: options.token,
672
- collection,
673
- id,
674
- fetchFn,
675
- });
793
+ // Fetch remote taxonomy assignments (reuse remoteTaxAudit if available)
794
+ const remoteTax = remoteTaxAudit ||
795
+ (await fetchAssignedTaxonomies({
796
+ origin: options.origin,
797
+ token: options.token,
798
+ collection,
799
+ id,
800
+ fetchFn,
801
+ }));
676
802
  if (!remoteParsed.frontmatter.taxonomies) {
677
803
  remoteParsed.frontmatter.taxonomies = {};
678
804
  }
@@ -706,25 +832,91 @@ export async function pushArticle(targetFilePath, options) {
706
832
  body: remoteParsed.body,
707
833
  });
708
834
  warnings.push(...mergeResult.warnings);
709
- // If taxonomy conflict occurred, treat as conflict to prevent silent data loss (D2)
835
+ // Check destructive taxonomy wipe guard during 3-way merge
836
+ if (mergeResult.wipeWarnings && mergeResult.wipeWarnings.length > 0) {
837
+ if (!options.allowWipeTaxonomies && !options.force) {
838
+ const details = mergeResult.wipeWarnings
839
+ .map((w) => `${w.name}: clearing ${w.remoteTerms.length} assignment(s)`)
840
+ .join(', ');
841
+ throw new ApiError({
842
+ endpoint: `/_emdash/api/content/${collection}/${id}`,
843
+ code: 'DESTRUCTIVE_TAXONOMY_WIPE',
844
+ status: 400,
845
+ message: `Local article specified empty array for taxonomies (${details}), which would wipe existing remote assignments.`,
846
+ suggestion: `Pass --allow-wipe-taxonomies (or --force) to confirm clearing: "emit push ${targetFilePath} --allow-wipe-taxonomies"`,
847
+ });
848
+ }
849
+ }
850
+ // Log clean auto-merged taxonomy changes
851
+ if (mergeResult.autoMergedTaxonomies && mergeResult.autoMergedTaxonomies.length > 0) {
852
+ for (const item of mergeResult.autoMergedTaxonomies) {
853
+ const parts = [];
854
+ if (item.remoteAdded.length > 0)
855
+ parts.push(`+${item.remoteAdded.join(', ')}`);
856
+ if (item.remoteRemoved.length > 0)
857
+ parts.push(`-${item.remoteRemoved.join(', ')}`);
858
+ warnings.push(`🏷️ Merged remote taxonomy change(s) for ${item.name}: ${parts.join(' ')}`);
859
+ }
860
+ }
861
+ // If taxonomy conflict occurred, check if resolveTaxonomy strategy was explicitly provided
710
862
  if (mergeResult.taxonomyConflicts && mergeResult.taxonomyConflicts.length > 0) {
711
- mergeResult.hasConflict = true;
712
- warnings.push(`Conflict on taxonomies (${mergeResult.taxonomyConflicts.join(', ')}): local and remote changes could not be cleanly merged. Push aborted to prevent data loss.`);
863
+ if (options.resolveTaxonomy || options.force) {
864
+ const strategy = options.resolveTaxonomy || 'union';
865
+ if (strategy === 'local') {
866
+ mergeResult.frontmatter.taxonomies = parsed.frontmatter.taxonomies;
867
+ }
868
+ else if (strategy === 'remote') {
869
+ mergeResult.frontmatter.taxonomies = remoteParsed.frontmatter.taxonomies;
870
+ }
871
+ else {
872
+ // 'union'
873
+ const unionTaxonomies = {};
874
+ const allTaxNames = new Set([
875
+ ...Object.keys(parsed.frontmatter.taxonomies || {}),
876
+ ...Object.keys(remoteParsed.frontmatter.taxonomies || {}),
877
+ ]);
878
+ for (const tName of allTaxNames) {
879
+ const lTerms = parsed.frontmatter.taxonomies?.[tName] || [];
880
+ const rTerms = remoteParsed.frontmatter.taxonomies?.[tName] || [];
881
+ unionTaxonomies[tName] = Array.from(new Set([...lTerms, ...rTerms]));
882
+ }
883
+ mergeResult.frontmatter.taxonomies = unionTaxonomies;
884
+ }
885
+ warnings.push(`Resolved taxonomy conflicts using strategy '${strategy}'.`);
886
+ }
887
+ else {
888
+ mergeResult.hasConflict = true;
889
+ warnings.push(`Conflict on taxonomies (${mergeResult.taxonomyConflicts.join(', ')}): local and remote changes could not be cleanly merged. Push aborted to prevent data loss.`);
890
+ }
713
891
  }
714
892
  if (mergeResult.hasConflict) {
715
- // Unresolvable conflict in body: write conflict markers to local file for AI/human resolution
893
+ const isTaxonomyOnlyConflict = Boolean(mergeResult.taxonomyConflicts && mergeResult.taxonomyConflicts.length > 0) &&
894
+ !mergeResult.body.includes('<<<<<<< local');
716
895
  const conflictedMarkdown = serializeMarkdown(mergeResult.frontmatter, mergeResult.body, options.candidates);
717
- fs.writeFileSync(fullPath, conflictedMarkdown, 'utf8');
718
- // Update sync state with latest remoteRev and update base snapshot to remote state
719
- // so that once conflict markers are resolved, the subsequent push sends the correct _rev
896
+ let quarantineRel = null;
897
+ // Only write conflict markers into the article body if body actually has conflicts
898
+ if (!isTaxonomyOnlyConflict) {
899
+ const currentDisk = fs.readFileSync(fullPath, 'utf8');
900
+ quarantineRel = quarantineLocalCopy(options.workspaceRoot, collection, targetFilePath, currentDisk, { isForce: false });
901
+ fs.writeFileSync(fullPath, conflictedMarkdown, 'utf8');
902
+ }
903
+ const conflictedHash = calculateHash(conflictedMarkdown);
904
+ // Update sync state:
905
+ // Do NOT overwrite localHash with marker hash, so `status` remains clean when markers are cleaned up!
720
906
  options.cache.saveSyncState({
721
907
  id,
722
908
  localFilePath: targetFilePath,
723
- localHash: calculateHash(conflictedMarkdown),
909
+ localHash: syncState?.localHash || '',
724
910
  remoteRev: remoteParsed.rev,
725
911
  status: parsed.frontmatter.status,
726
912
  slug: parsed.frontmatter.slug,
727
913
  lastSyncedAt: Math.floor(Date.now() / 1000),
914
+ conflictPending: 1,
915
+ conflictCopyHash: conflictedHash,
916
+ conflictCopyPath: quarantineRel,
917
+ conflictAt: Math.floor(Date.now() / 1000),
918
+ remoteTaxonomyHash: computeTaxonomyHash(remoteParsed.frontmatter.taxonomies?.categories, remoteParsed.frontmatter.taxonomies?.tags),
919
+ taxonomyApplyPending: 0,
728
920
  });
729
921
  options.cache.saveBaseSnapshot({
730
922
  id,
@@ -740,6 +932,7 @@ export async function pushArticle(targetFilePath, options) {
740
932
  rev: remoteParsed.rev,
741
933
  filePath: targetFilePath,
742
934
  conflict: true,
935
+ taxonomyConflict: isTaxonomyOnlyConflict,
743
936
  warnings,
744
937
  };
745
938
  }
@@ -758,6 +951,18 @@ export async function pushArticle(targetFilePath, options) {
758
951
  });
759
952
  if (!res.ok) {
760
953
  const errText = await res.text().catch(() => '');
954
+ // Check if server rejected the merged taxonomy union (e.g. single category limit)
955
+ if ((res.status === 400 || res.status === 422) &&
956
+ mergeResult.autoMergedTaxonomies &&
957
+ mergeResult.autoMergedTaxonomies.length > 0) {
958
+ throw new ApiError({
959
+ message: `Remote server rejected the merged taxonomy union (HTTP ${res.status}): ${errText || res.statusText}`,
960
+ code: 'TAXONOMY_UNION_REJECTED',
961
+ status: res.status,
962
+ endpoint: putUrl,
963
+ suggestion: 'The server may enforce constraints such as a single category per post. Pass --resolve-taxonomy=local or --resolve-taxonomy=remote to choose one side explicitly.',
964
+ });
965
+ }
761
966
  throw new ApiError({
762
967
  message: `Retry push after auto-merge failed: ${res.statusText}${errText ? ` - ${errText}` : ''}`,
763
968
  code: 'PUSH_RETRY_FAILED',
@@ -781,7 +986,8 @@ export async function pushArticle(targetFilePath, options) {
781
986
  const newRev = extractRev(updatedJson, currentRev);
782
987
  // 4. Post-push updates & Path tracking
783
988
  // Sync taxonomies on updated article
784
- await syncArticleTaxonomies(id);
989
+ const taxFailures = await syncArticleTaxonomies(id);
990
+ const hasTaxFailures = taxFailures.length > 0;
785
991
  const currentPrefix = extractDatePrefixFromPath(fullPath);
786
992
  const existingSync = options.cache.getSyncState(parsed.frontmatter.id);
787
993
  const dateInput = parsed.frontmatter.publishedAt ||
@@ -819,11 +1025,21 @@ export async function pushArticle(targetFilePath, options) {
819
1025
  // [P6] Promote uploaded draft images from media/drafts/ into media/ and commit media_state
820
1026
  finalizePromotedDraftImages(preflight.draftImages, uploadedByAbsPath, options, warnings);
821
1027
  // Update Base snapshot
1028
+ const savedFrontmatter = { ...parsed.frontmatter };
1029
+ if (hasTaxFailures && baseFm?.taxonomies) {
1030
+ savedFrontmatter.taxonomies = { ...baseFm.taxonomies };
1031
+ }
1032
+ const finalTaxHash = hasTaxFailures
1033
+ ? syncState?.remoteTaxonomyHash ||
1034
+ (baseFm?.taxonomies
1035
+ ? computeTaxonomyHash(baseFm.taxonomies.categories, baseFm.taxonomies.tags)
1036
+ : null)
1037
+ : computeTaxonomyHash(parsed.frontmatter.taxonomies?.categories, parsed.frontmatter.taxonomies?.tags);
822
1038
  options.cache.saveBaseSnapshot({
823
1039
  id,
824
1040
  rev: finalRev,
825
1041
  bodyMarkdown: parsed.body,
826
- frontmatterYaml: JSON.stringify(parsed.frontmatter),
1042
+ frontmatterYaml: JSON.stringify(savedFrontmatter),
827
1043
  hash: newHash,
828
1044
  savedAt: Math.floor(Date.now() / 1000),
829
1045
  });
@@ -836,7 +1052,22 @@ export async function pushArticle(targetFilePath, options) {
836
1052
  status: parsed.frontmatter.status,
837
1053
  slug: parsed.frontmatter.slug,
838
1054
  lastSyncedAt: Math.floor(Date.now() / 1000),
1055
+ conflictPending: hasTaxFailures ? (syncState?.conflictPending ?? 0) : 0,
1056
+ conflictCopyHash: hasTaxFailures ? syncState?.conflictCopyHash : null,
1057
+ conflictCopyPath: hasTaxFailures ? syncState?.conflictCopyPath : null,
1058
+ conflictAt: hasTaxFailures ? syncState?.conflictAt : null,
1059
+ remoteTaxonomyHash: finalTaxHash,
1060
+ taxonomyApplyPending: hasTaxFailures ? 1 : 0,
839
1061
  });
1062
+ if (hasTaxFailures) {
1063
+ throw new ApiError({
1064
+ endpoint: taxFailures[0].endpoint,
1065
+ code: 'TAXONOMY_UPDATE_FAILED',
1066
+ status: taxFailures[0].status || 400,
1067
+ message: `Failed to update ${taxFailures.map((f) => f.taxonomy).join(', ')} terms on remote: ${taxFailures.map((f) => f.error).join('; ')}`,
1068
+ suggestion: 'Run "emit pull-taxonomies" to update local definitions, verify taxonomy permissions, and retry push.',
1069
+ });
1070
+ }
840
1071
  updateConfigSyncedVersion(options.workspaceRoot);
841
1072
  return {
842
1073
  success: true,