emdash-emit 0.1.25 → 0.1.31

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 (212) hide show
  1. package/CHANGELOG.md +154 -4
  2. package/dist/cli/commands/conflicts.d.ts.map +1 -1
  3. package/dist/cli/commands/conflicts.js +2 -22
  4. package/dist/cli/commands/conflicts.js.map +1 -1
  5. package/dist/cli/commands/delete.d.ts.map +1 -1
  6. package/dist/cli/commands/delete.js +1 -13
  7. package/dist/cli/commands/delete.js.map +1 -1
  8. package/dist/cli/commands/doctor.d.ts.map +1 -1
  9. package/dist/cli/commands/doctor.js +1 -13
  10. package/dist/cli/commands/doctor.js.map +1 -1
  11. package/dist/cli/commands/media.d.ts.map +1 -1
  12. package/dist/cli/commands/media.js +1 -13
  13. package/dist/cli/commands/media.js.map +1 -1
  14. package/dist/cli/commands/new.d.ts.map +1 -1
  15. package/dist/cli/commands/new.js +1 -13
  16. package/dist/cli/commands/new.js.map +1 -1
  17. package/dist/cli/commands/pull.d.ts +3 -3
  18. package/dist/cli/commands/pull.d.ts.map +1 -1
  19. package/dist/cli/commands/pull.js +142 -88
  20. package/dist/cli/commands/pull.js.map +1 -1
  21. package/dist/cli/commands/push.d.ts +1 -1
  22. package/dist/cli/commands/push.d.ts.map +1 -1
  23. package/dist/cli/commands/push.js +32 -90
  24. package/dist/cli/commands/push.js.map +1 -1
  25. package/dist/cli/context.d.ts +12 -0
  26. package/dist/cli/context.d.ts.map +1 -1
  27. package/dist/cli/context.js +27 -1
  28. package/dist/cli/context.js.map +1 -1
  29. package/dist/cli/report-failure.d.ts +6 -0
  30. package/dist/cli/report-failure.d.ts.map +1 -0
  31. package/dist/cli/report-failure.js +71 -0
  32. package/dist/cli/report-failure.js.map +1 -0
  33. package/dist/client/api.d.ts.map +1 -1
  34. package/dist/client/api.js +1 -1
  35. package/dist/client/api.js.map +1 -1
  36. package/dist/client/lock.js.map +1 -1
  37. package/dist/client/mapper.js.map +1 -1
  38. package/dist/client/media.d.ts.map +1 -1
  39. package/dist/client/media.js.map +1 -1
  40. package/dist/db/baseline.d.ts +16 -1
  41. package/dist/db/baseline.d.ts.map +1 -1
  42. package/dist/db/baseline.js +25 -0
  43. package/dist/db/baseline.js.map +1 -1
  44. package/dist/db/cache.d.ts +2 -3
  45. package/dist/db/cache.d.ts.map +1 -1
  46. package/dist/db/cache.js +3 -295
  47. package/dist/db/cache.js.map +1 -1
  48. package/dist/db/migrations.d.ts +7 -0
  49. package/dist/db/migrations.d.ts.map +1 -0
  50. package/dist/db/migrations.js +320 -0
  51. package/dist/db/migrations.js.map +1 -0
  52. package/dist/mcp/heartbeat.d.ts +1 -34
  53. package/dist/mcp/heartbeat.d.ts.map +1 -1
  54. package/dist/mcp/heartbeat.js +1 -113
  55. package/dist/mcp/heartbeat.js.map +1 -1
  56. package/dist/mcp/tool-errors.d.ts +12 -1
  57. package/dist/mcp/tool-errors.d.ts.map +1 -1
  58. package/dist/mcp/tool-errors.js +29 -0
  59. package/dist/mcp/tool-errors.js.map +1 -1
  60. package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -1
  61. package/dist/mcp/tools/sync-conflicts.js +46 -58
  62. package/dist/mcp/tools/sync-conflicts.js.map +1 -1
  63. package/dist/mcp/tools/sync-delete.d.ts.map +1 -1
  64. package/dist/mcp/tools/sync-delete.js +18 -30
  65. package/dist/mcp/tools/sync-delete.js.map +1 -1
  66. package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
  67. package/dist/mcp/tools/sync-diff.js +10 -31
  68. package/dist/mcp/tools/sync-diff.js.map +1 -1
  69. package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
  70. package/dist/mcp/tools/sync-doctor.js +18 -30
  71. package/dist/mcp/tools/sync-doctor.js.map +1 -1
  72. package/dist/mcp/tools/sync-media-search.d.ts.map +1 -1
  73. package/dist/mcp/tools/sync-media-search.js +40 -52
  74. package/dist/mcp/tools/sync-media-search.js.map +1 -1
  75. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  76. package/dist/mcp/tools/sync-new.js +34 -55
  77. package/dist/mcp/tools/sync-new.js.map +1 -1
  78. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  79. package/dist/mcp/tools/sync-pull.js +202 -222
  80. package/dist/mcp/tools/sync-pull.js.map +1 -1
  81. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  82. package/dist/mcp/tools/sync-push.js +64 -84
  83. package/dist/mcp/tools/sync-push.js.map +1 -1
  84. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  85. package/dist/mcp/tools/sync-status.js +3 -13
  86. package/dist/mcp/tools/sync-status.js.map +1 -1
  87. package/dist/presentation/article_report.d.ts +5 -0
  88. package/dist/presentation/article_report.d.ts.map +1 -1
  89. package/dist/presentation/article_report.js +17 -0
  90. package/dist/presentation/article_report.js.map +1 -1
  91. package/dist/sync/baseline-reconstruction.d.ts +43 -0
  92. package/dist/sync/baseline-reconstruction.d.ts.map +1 -0
  93. package/dist/sync/baseline-reconstruction.js +103 -0
  94. package/dist/sync/baseline-reconstruction.js.map +1 -0
  95. package/dist/sync/bylines.d.ts +5 -0
  96. package/dist/sync/bylines.d.ts.map +1 -1
  97. package/dist/sync/bylines.js +29 -0
  98. package/dist/sync/bylines.js.map +1 -1
  99. package/dist/sync/conflicts.d.ts.map +1 -1
  100. package/dist/sync/conflicts.js +21 -4
  101. package/dist/sync/conflicts.js.map +1 -1
  102. package/dist/sync/delete.d.ts.map +1 -1
  103. package/dist/sync/delete.js +12 -1
  104. package/dist/sync/delete.js.map +1 -1
  105. package/dist/sync/diff.d.ts.map +1 -1
  106. package/dist/sync/diff.js +58 -27
  107. package/dist/sync/diff.js.map +1 -1
  108. package/dist/sync/doctor.d.ts.map +1 -1
  109. package/dist/sync/doctor.js +13 -3
  110. package/dist/sync/doctor.js.map +1 -1
  111. package/dist/sync/guards.d.ts +1 -1
  112. package/dist/sync/guards.d.ts.map +1 -1
  113. package/dist/sync/guards.js +2 -1
  114. package/dist/sync/guards.js.map +1 -1
  115. package/dist/sync/media/companions.d.ts.map +1 -1
  116. package/dist/sync/media/companions.js.map +1 -1
  117. package/dist/sync/media/naming_mirror.d.ts.map +1 -1
  118. package/dist/sync/media/naming_mirror.js +11 -2
  119. package/dist/sync/media/naming_mirror.js.map +1 -1
  120. package/dist/sync/media/pull_article.d.ts +2 -0
  121. package/dist/sync/media/pull_article.d.ts.map +1 -1
  122. package/dist/sync/media/pull_article.js +74 -25
  123. package/dist/sync/media/pull_article.js.map +1 -1
  124. package/dist/sync/media/pull_library.d.ts.map +1 -1
  125. package/dist/sync/media/pull_library.js +34 -61
  126. package/dist/sync/media/pull_library.js.map +1 -1
  127. package/dist/sync/media/remote_index.d.ts +16 -1
  128. package/dist/sync/media/remote_index.d.ts.map +1 -1
  129. package/dist/sync/media/remote_index.js +2 -2
  130. package/dist/sync/media/remote_index.js.map +1 -1
  131. package/dist/sync/merge.d.ts.map +1 -1
  132. package/dist/sync/merge.js +5 -5
  133. package/dist/sync/merge.js.map +1 -1
  134. package/dist/sync/new.d.ts.map +1 -1
  135. package/dist/sync/new.js +5 -4
  136. package/dist/sync/new.js.map +1 -1
  137. package/dist/sync/orchestrator.d.ts +39 -0
  138. package/dist/sync/orchestrator.d.ts.map +1 -1
  139. package/dist/sync/orchestrator.js +93 -80
  140. package/dist/sync/orchestrator.js.map +1 -1
  141. package/dist/sync/preflight/image_probe.d.ts +28 -0
  142. package/dist/sync/preflight/image_probe.d.ts.map +1 -0
  143. package/dist/sync/preflight/image_probe.js +70 -0
  144. package/dist/sync/preflight/image_probe.js.map +1 -0
  145. package/dist/sync/preflight.d.ts.map +1 -1
  146. package/dist/sync/preflight.js +48 -45
  147. package/dist/sync/preflight.js.map +1 -1
  148. package/dist/sync/pull/fast_path.d.ts +9 -0
  149. package/dist/sync/pull/fast_path.d.ts.map +1 -0
  150. package/dist/sync/pull/fast_path.js +383 -0
  151. package/dist/sync/pull/fast_path.js.map +1 -0
  152. package/dist/sync/pull/index.d.ts +15 -0
  153. package/dist/sync/pull/index.d.ts.map +1 -0
  154. package/dist/sync/pull/index.js +372 -0
  155. package/dist/sync/pull/index.js.map +1 -0
  156. package/dist/sync/pull/list.d.ts +22 -0
  157. package/dist/sync/pull/list.d.ts.map +1 -0
  158. package/dist/sync/pull/list.js +175 -0
  159. package/dist/sync/pull/list.js.map +1 -0
  160. package/dist/sync/pull/media_stage.d.ts +67 -0
  161. package/dist/sync/pull/media_stage.d.ts.map +1 -0
  162. package/dist/sync/pull/media_stage.js +599 -0
  163. package/dist/sync/pull/media_stage.js.map +1 -0
  164. package/dist/sync/pull/quarantine.d.ts +22 -0
  165. package/dist/sync/pull/quarantine.d.ts.map +1 -0
  166. package/dist/sync/pull/quarantine.js +174 -0
  167. package/dist/sync/pull/quarantine.js.map +1 -0
  168. package/dist/sync/pull/types.d.ts +135 -0
  169. package/dist/sync/pull/types.d.ts.map +1 -0
  170. package/dist/sync/pull/types.js +23 -0
  171. package/dist/sync/pull/types.js.map +1 -0
  172. package/dist/sync/pull.d.ts +1 -114
  173. package/dist/sync/pull.d.ts.map +1 -1
  174. package/dist/sync/pull.js +1 -861
  175. package/dist/sync/pull.js.map +1 -1
  176. package/dist/sync/push/commit.d.ts.map +1 -1
  177. package/dist/sync/push/commit.js +1 -2
  178. package/dist/sync/push/commit.js.map +1 -1
  179. package/dist/sync/push/index.d.ts.map +1 -1
  180. package/dist/sync/push/index.js +4 -3
  181. package/dist/sync/push/index.js.map +1 -1
  182. package/dist/sync/push/merge_stage.js +1 -1
  183. package/dist/sync/push/merge_stage.js.map +1 -1
  184. package/dist/sync/push/taxonomy_plan.d.ts +4 -0
  185. package/dist/sync/push/taxonomy_plan.d.ts.map +1 -1
  186. package/dist/sync/push/taxonomy_plan.js +22 -10
  187. package/dist/sync/push/taxonomy_plan.js.map +1 -1
  188. package/dist/sync/push/transport.d.ts +1 -1
  189. package/dist/sync/push/transport.d.ts.map +1 -1
  190. package/dist/sync/push/transport.js +1 -1
  191. package/dist/sync/push/transport.js.map +1 -1
  192. package/dist/sync/status.d.ts.map +1 -1
  193. package/dist/sync/status.js +11 -57
  194. package/dist/sync/status.js.map +1 -1
  195. package/dist/sync/taxonomies.d.ts +45 -0
  196. package/dist/sync/taxonomies.d.ts.map +1 -1
  197. package/dist/sync/taxonomies.js +258 -119
  198. package/dist/sync/taxonomies.js.map +1 -1
  199. package/dist/utils/frontmatter.d.ts.map +1 -1
  200. package/dist/utils/frontmatter.js.map +1 -1
  201. package/dist/utils/mcp-heartbeat.d.ts +36 -0
  202. package/dist/utils/mcp-heartbeat.d.ts.map +1 -0
  203. package/dist/utils/mcp-heartbeat.js +126 -0
  204. package/dist/utils/mcp-heartbeat.js.map +1 -0
  205. package/dist/utils/media-body-refs.d.ts.map +1 -1
  206. package/dist/utils/media-body-refs.js +2 -2
  207. package/dist/utils/media-body-refs.js.map +1 -1
  208. package/dist/utils/taxonomy-key.d.ts +44 -0
  209. package/dist/utils/taxonomy-key.d.ts.map +1 -0
  210. package/dist/utils/taxonomy-key.js +63 -0
  211. package/dist/utils/taxonomy-key.js.map +1 -0
  212. package/package.json +1 -1
@@ -19,13 +19,18 @@
19
19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
20
  * SOFTWARE.
21
21
  */
22
- import { pullArticle, formatQuarantineNotice } from '../../sync/pull.js';
23
- import { pullBatch, SyncPruneConflictError } from '../../sync/orchestrator.js';
22
+ import path from 'node:path';
23
+ import { formatQuarantineNotice } from '../../sync/pull.js';
24
+ import { pullBatch, pullSingleArticle } from '../../sync/orchestrator.js';
25
+ import { resolveArticleTarget } from '../../sync/diff.js';
26
+ import { ApiError } from '../../client/error.js';
24
27
  import { pullTaxonomies, getLocalTaxonomiesSummary, formatTaxonomiesHint, } from '../../sync/taxonomies.js';
25
28
  import { pullMedia } from '../../sync/media.js';
26
- import { persistLocalMediaRefs, DEFAULT_CONFIG } from '../../utils/config.js';
29
+ import { DEFAULT_CONFIG } from '../../utils/config.js';
27
30
  import { toStorageKey } from '../../utils/media-id.js';
28
- import { ApiError } from '../../client/error.js';
31
+ import { isCanonicalUlid } from '../../utils/ulid.js';
32
+ import { resolveAndPersistLocalMediaRefs, resolveExplicitBooleanOption, } from '../context.js';
33
+ import { reportActionFailure } from '../report-failure.js';
29
34
  /** Prints the unresolved media warning when a pull could not resolve body storageKeys locally. */
30
35
  function reportOrphanStorageKeys(orphanStorageKeys) {
31
36
  const warning = formatOrphanMediaWarning(orphanStorageKeys);
@@ -43,8 +48,8 @@ export function formatPullWindowLabel(status, limit) {
43
48
  * the media library by storageKey (or the migration mapping) and only then register anything, since a
44
49
  * blind INSERT risks a duplicate registration. Emit mirrors records and never repairs server data.
45
50
  */
46
- import { formatOrphanMediaWarning, formatMediaCoverageLine, } from '../../presentation/article_report.js';
47
- export { formatOrphanMediaWarning, formatMediaCoverageLine };
51
+ import { formatOrphanMediaWarning, formatMediaCoverageLine, formatPrunedTaxonomiesNotice, } from '../../presentation/article_report.js';
52
+ export { formatOrphanMediaWarning, formatMediaCoverageLine, formatPrunedTaxonomiesNotice };
48
53
  /**
49
54
  * Renders the per-article media summary. A migrated corpus bakes R2 storageKeys into body URLs, so the
50
55
  * ids collected from those URLs mostly resolve to nothing; that is reported as expected resolution data,
@@ -70,68 +75,99 @@ export function formatPullStatusBreakdown(status, items) {
70
75
  const draftCount = items.filter((i) => !i.deleted && i.status === 'draft').length;
71
76
  return ` [${publishedCount} published, ${draftCount} draft]`;
72
77
  }
78
+ function printTaxonomySyncSummary(res, indent = '', successLabel = 'Taxonomies:', suffix = '') {
79
+ const prunedCat = res.deletedCategoriesCount
80
+ ? `, ${res.deletedCategoriesCount} categories pruned`
81
+ : '';
82
+ const prunedTag = res.deletedTagsCount ? `, ${res.deletedTagsCount} tags pruned` : '';
83
+ if (res.categoriesFailed) {
84
+ console.warn(`${indent}⚠️ Failed to fetch remote categories: preserved existing local definitions.`);
85
+ }
86
+ if (res.tagsFailed) {
87
+ console.warn(`${indent}⚠️ Failed to fetch remote tags: preserved existing local definitions.`);
88
+ }
89
+ if (!res.categoriesFailed || !res.tagsFailed) {
90
+ console.log(`${indent}✅ ${successLabel} ${res.categoriesCount} categories, ${res.tagsCount} tags${prunedCat}${prunedTag}${suffix}`);
91
+ }
92
+ }
73
93
  export function registerPullCommands(program, resolveContext) {
74
- // emit pull [id]
94
+ // emit pull [target]
75
95
  program
76
- .command('pull [id]')
77
- .description('Pull articles and taxonomies from remote EmDash into workspace (or specific article by ID)')
96
+ .command('pull [target]')
97
+ .description('Pull articles and taxonomies from remote EmDash into workspace (or specific article by ID or file path)')
78
98
  .option('-c, --collection <collection>', 'Collection name (defaults to "posts")')
79
99
  .option('-s, --status <status>', 'Filter by status: "all", "draft", or "published"', 'all')
80
100
  .option('--no-prune', 'Do not prune local articles outside the sync window')
81
101
  .option('--concurrency <number>', 'Number of parallel article processing tasks (default: 8 or config)')
82
102
  .option('--force', 'Force overwrite local files and bypass differential skip')
83
103
  .option('--posts-only', 'Skip automatic taxonomy (categories/tags) sync. Pull articles only.')
104
+ .option('--no-media', 'Skip automatic on-demand media mirroring')
84
105
  .option('--media', 'Additionally pull the FULL remote media library into media/ (not just assets referenced by pulled articles). Local-first mirroring of referenced assets is already default-ON.')
85
106
  .option('--metadata-only', 'With --media: download only metadata YAML, skip binary file downloads.')
86
107
  .option('--local-media-refs', 'Write mirrored body images as article-relative "../../media/<storageKey>" references so Markdown preview resolves them locally. Remembered in .emit/config.json.')
87
108
  .option('--no-local-media-refs', 'Disable a remembered local-media-ref preference and store canonical EmDash URLs on disk again.')
88
109
  .option('-p, --profile <name>', 'Explicitly use a specific connection profile')
89
- .action(async (id, options) => {
110
+ .action(async (target, options, command) => {
90
111
  const ctx = resolveContext(options.profile);
91
112
  const collection = options.collection || ctx.config.defaultCollection;
92
113
  const postsOnly = options.postsOnly === true;
93
- const includeMedia = options.media === true;
94
- // `--local-media-refs` is a workspace preference, not a per-run switch: remember it so every later
95
- // pull and push keeps the same spelling without having to repeat the flag. `--no-local-media-refs` clears
96
- // that preference again, because commander defaults the paired option to true and only an explicit negation
97
- // means the user asked to go back to canonical URLs.
98
- const localMediaRefs = options.localMediaRefs === false
99
- ? false
100
- : options.localMediaRefs === true
101
- ? true
102
- : ctx.config.localMediaRefs;
103
- if (options.localMediaRefs === true && ctx.config.localMediaRefs !== true) {
104
- persistLocalMediaRefs(ctx.root, true);
114
+ // Distinguish explicit --no-media vs --media.
115
+ // Note: options.media is intentionally unreferenced; resolveExplicitBooleanOption(command, 'media')
116
+ // is the single source of truth to avoid Commander's synthetic boolean defaults on --no-* options.
117
+ const explicitMedia = resolveExplicitBooleanOption(command, 'media');
118
+ let mediaSync = !postsOnly;
119
+ let includeMedia = false;
120
+ if (explicitMedia === false) {
121
+ mediaSync = false;
122
+ includeMedia = false;
105
123
  }
106
- else if (options.localMediaRefs === false && ctx.config.localMediaRefs === true) {
107
- persistLocalMediaRefs(ctx.root, false);
124
+ else if (explicitMedia === true) {
125
+ mediaSync = !postsOnly;
126
+ includeMedia = true;
108
127
  }
128
+ const localMediaRefs = resolveAndPersistLocalMediaRefs(ctx, options.localMediaRefs);
109
129
  try {
110
- if (!id) {
130
+ let targetId = undefined;
131
+ if (target) {
132
+ const isUlid = isCanonicalUlid(target.trim());
133
+ const isPathLike = !isUlid &&
134
+ (target.includes('/') || target.includes(path.sep) || target.endsWith('.md'));
135
+ const resolved = resolveArticleTarget({
136
+ workspaceRoot: ctx.root,
137
+ filePath: isPathLike ? target : undefined,
138
+ id: !isPathLike ? target.trim() : undefined,
139
+ cache: ctx.cache,
140
+ });
141
+ if (!resolved.id) {
142
+ throw new ApiError({
143
+ message: `Could not resolve article target: "${target}"`,
144
+ code: 'ARTICLE_TARGET_UNRESOLVED',
145
+ status: 400,
146
+ suggestion: `Verify that target "${target}" is a valid 26-character ULID or a path to an existing article file.`,
147
+ });
148
+ }
149
+ targetId = resolved.id;
150
+ }
151
+ if (!targetId) {
111
152
  // Batch mode: taxonomies + articles (+ media if --media)
112
153
  // 1. Pull taxonomies (unless --posts-only)
154
+ let taxonomiesFailed = false;
113
155
  if (!postsOnly) {
114
156
  console.log('Syncing categories and tags...');
115
- const taxResult = await pullTaxonomies({
116
- workspaceRoot: ctx.root,
117
- origin: ctx.origin,
118
- token: ctx.auth.token,
119
- refreshToken: ctx.auth.refreshToken,
120
- });
121
- const taxPrunedCat = taxResult.deletedCategoriesCount
122
- ? `, ${taxResult.deletedCategoriesCount} categories pruned`
123
- : '';
124
- const taxPrunedTag = taxResult.deletedTagsCount
125
- ? `, ${taxResult.deletedTagsCount} tags pruned`
126
- : '';
127
- if (taxResult.categoriesFailed) {
128
- console.warn(' ⚠️ Failed to fetch remote categories: preserved existing local definitions.');
129
- }
130
- if (taxResult.tagsFailed) {
131
- console.warn(' ⚠️ Failed to fetch remote tags: preserved existing local definitions.');
157
+ try {
158
+ const taxResult = await pullTaxonomies({
159
+ workspaceRoot: ctx.root,
160
+ origin: ctx.origin,
161
+ token: ctx.auth.token,
162
+ refreshToken: ctx.auth.refreshToken,
163
+ });
164
+ if (taxResult.categoriesFailed || taxResult.tagsFailed) {
165
+ taxonomiesFailed = true;
166
+ }
167
+ printTaxonomySyncSummary(taxResult, ' ', 'Taxonomies:');
132
168
  }
133
- if (!taxResult.categoriesFailed || !taxResult.tagsFailed) {
134
- console.log(` ✅ Taxonomies: ${taxResult.categoriesCount} categories, ${taxResult.tagsCount} tags${taxPrunedCat}${taxPrunedTag}`);
169
+ catch {
170
+ taxonomiesFailed = true;
135
171
  }
136
172
  }
137
173
  const taxSummary = getLocalTaxonomiesSummary(ctx.root);
@@ -160,14 +196,23 @@ export function registerPullCommands(program, resolveContext) {
160
196
  concurrency,
161
197
  prune: options.prune,
162
198
  // Local-first media mirroring is default-ON for a batch pull. `--posts-only` skips it entirely;
163
- // the full-library walk stays on the dedicated `emit pull-media --all` command below.
199
+ // the full-library walk stays on the dedicated `emit pull-media --all` command below. The shared
200
+ // walk is bounded by `mediaSyncLimit`, so a fleet-scale library never costs an unbounded scan.
164
201
  mediaSync: !postsOnly,
202
+ mediaSyncLimit: ctx.config.mediaSyncLimit || DEFAULT_CONFIG.mediaSyncLimit,
203
+ canPruneTaxonomies: !postsOnly && !taxonomiesFailed,
165
204
  onProgress: ({ current, total, item }) => {
166
205
  if (item.deleted) {
167
206
  console.log(` [${current}/${total}] 🗑️ Pruned ${item.slug} -> ${item.filePath}`);
168
207
  }
169
208
  else if (item.healed) {
170
- console.log(` [${current}/${total}] 🛠️ Repaired frontmatter syntax for ${item.slug} (${item.filePath}, local body preserved). Push the file to apply changes to the server.`);
209
+ if (item.prunedTaxonomies) {
210
+ const notice = formatPrunedTaxonomiesNotice(item.prunedTaxonomies);
211
+ console.log(` [${current}/${total}] ${notice ?? `🛠️ Repaired frontmatter for ${item.slug}`}`);
212
+ }
213
+ else {
214
+ console.log(` [${current}/${total}] 🛠️ Repaired frontmatter syntax for ${item.slug} (${item.filePath}, local body preserved). Push the file to apply changes to the server.`);
215
+ }
171
216
  }
172
217
  else if (item.localEditsPreserved) {
173
218
  console.log(`\n [${current}/${total}] 🛡️ Kept local edits for ${item.slug} (${item.filePath}; remote changes NOT applied)`);
@@ -227,29 +272,47 @@ export function registerPullCommands(program, resolveContext) {
227
272
  }
228
273
  else {
229
274
  // Single article mode: pull article and synchronize taxonomies (unless --posts-only)
230
- if (!options.postsOnly) {
231
- await pullTaxonomies({
232
- workspaceRoot: ctx.root,
233
- origin: ctx.origin,
234
- token: ctx.auth.token,
235
- refreshToken: ctx.auth.refreshToken,
236
- }).catch(() => null);
275
+ if (includeMedia) {
276
+ console.log('Pulling media library assets...');
237
277
  }
238
- const res = await pullArticle(collection, id, {
278
+ const singlePull = await pullSingleArticle({
279
+ collection,
280
+ targetId,
239
281
  workspaceRoot: ctx.root,
240
282
  cache: ctx.cache,
241
283
  origin: ctx.origin,
242
284
  token: ctx.auth.token,
243
285
  refreshToken: ctx.auth.refreshToken,
244
286
  force: options.force,
287
+ postsOnly,
245
288
  localMediaRefs,
289
+ mediaSync,
290
+ includeMedia,
291
+ metadataOnly: options.metadataOnly === true,
292
+ mediaSyncLimit: ctx.config.mediaSyncLimit || DEFAULT_CONFIG.mediaSyncLimit,
246
293
  });
294
+ if (singlePull.taxonomies) {
295
+ if (singlePull.taxonomies.error) {
296
+ console.warn(`⚠️ Warning: Failed to sync taxonomies: ${singlePull.taxonomies.error}`);
297
+ }
298
+ else if (singlePull.taxonomies.categoriesFailed || singlePull.taxonomies.tagsFailed) {
299
+ console.warn('⚠️ Warning: Failed to sync some remote taxonomies (preserved existing local definitions).');
300
+ }
301
+ }
302
+ const res = singlePull.article;
247
303
  if (res.deleted) {
248
304
  console.log(`🗑️ Remote article was deleted. Pruned local file: ${res.filePath}`);
249
305
  }
250
306
  else if (res.healed) {
251
- console.log(`🛠️ Repaired frontmatter syntax for ${res.slug} (${res.filePath}; unpushed local body was strictly preserved).`);
252
- console.log(` Push the file to apply changes to the server: "emit push ${res.filePath}"`);
307
+ if (res.prunedTaxonomies) {
308
+ const notice = formatPrunedTaxonomiesNotice(res.prunedTaxonomies);
309
+ console.log(notice ?? `🛠️ Repaired frontmatter for ${res.slug}`);
310
+ console.log(` Push the file to apply changes to the server: "emit push ${res.filePath}"`);
311
+ }
312
+ else {
313
+ console.log(`🛠️ Repaired frontmatter syntax for ${res.slug} (${res.filePath}; unpushed local body was strictly preserved).`);
314
+ console.log(` Push the file to apply changes to the server: "emit push ${res.filePath}"`);
315
+ }
253
316
  }
254
317
  else if (res.localEditsPreserved) {
255
318
  console.log(`🛡️ Kept 1 local edit(s); 1 remote change(s) NOT applied (${res.filePath}).`);
@@ -261,21 +324,23 @@ export function registerPullCommands(program, resolveContext) {
261
324
  else {
262
325
  console.log(`✅ Pulled ${res.slug} -> ${res.filePath}`);
263
326
  }
327
+ if (res.media && res.media.total > 0) {
328
+ console.log(` ✅ Media: ${res.media.total} item(s) (${res.media.downloaded} downloaded, ${res.media.skipped} up-to-date)`);
329
+ const orphanWarning = formatOrphanMediaWarning(res.media.orphanStorageKeys);
330
+ if (orphanWarning) {
331
+ console.log(`\n${orphanWarning}`);
332
+ }
333
+ }
334
+ if (singlePull.libraryMedia) {
335
+ console.log(` ✅ Media library: ${singlePull.libraryMedia.total} items (${singlePull.libraryMedia.downloaded} downloaded, ${singlePull.libraryMedia.skipped} up-to-date)`);
336
+ }
264
337
  const quarantineNotice = formatQuarantineNotice(res.quarantined);
265
338
  if (quarantineNotice)
266
339
  console.log(`\n${quarantineNotice}`);
267
340
  }
268
341
  }
269
342
  catch (error) {
270
- if (error instanceof SyncPruneConflictError) {
271
- console.error(`\n❌ ${error.message}`);
272
- process.exit(1);
273
- }
274
- if (error instanceof ApiError) {
275
- console.error(`\n${error.toActionableString()}`);
276
- process.exit(1);
277
- }
278
- throw error;
343
+ reportActionFailure(error);
279
344
  }
280
345
  });
281
346
  // emit pull-taxonomies (standalone; taxonomies are also pulled automatically by emit pull)
@@ -293,19 +358,7 @@ export function registerPullCommands(program, resolveContext) {
293
358
  token: ctx.auth.token,
294
359
  refreshToken: ctx.auth.refreshToken,
295
360
  });
296
- const prunedCatMsg = res.deletedCategoriesCount
297
- ? `, ${res.deletedCategoriesCount} categories pruned`
298
- : '';
299
- const prunedTagMsg = res.deletedTagsCount ? `, ${res.deletedTagsCount} tags pruned` : '';
300
- if (res.categoriesFailed) {
301
- console.warn('⚠️ Failed to fetch remote categories: preserved existing local definitions.');
302
- }
303
- if (res.tagsFailed) {
304
- console.warn('⚠️ Failed to fetch remote tags: preserved existing local definitions.');
305
- }
306
- if (!res.categoriesFailed || !res.tagsFailed) {
307
- console.log(`✅ Successfully synced taxonomies: ${res.categoriesCount} categories, ${res.tagsCount} tags${prunedCatMsg}${prunedTagMsg}.`);
308
- }
361
+ printTaxonomySyncSummary(res, '', 'Successfully synced taxonomies:', '.');
309
362
  const taxSummary = getLocalTaxonomiesSummary(ctx.root);
310
363
  const taxHint = formatTaxonomiesHint(taxSummary, { maxTags: 60 });
311
364
  if (taxHint) {
@@ -316,11 +369,7 @@ export function registerPullCommands(program, resolveContext) {
316
369
  }
317
370
  }
318
371
  catch (error) {
319
- if (error instanceof ApiError) {
320
- console.error(`\n${error.toActionableString()}`);
321
- process.exit(1);
322
- }
323
- throw error;
372
+ reportActionFailure(error);
324
373
  }
325
374
  });
326
375
  // emit pull-media
@@ -374,6 +423,15 @@ export function registerPullCommands(program, resolveContext) {
374
423
  reportOrphanStorageKeys(res.orphanStorageKeys);
375
424
  process.exit(1);
376
425
  }
426
+ // Nothing was (re)downloaded and nothing failed either: the walk left the key outside its window, or
427
+ // local mirror metadata already confirms it. Report that instead of claiming a successful sync.
428
+ if (res.total === 0) {
429
+ const reason = res.verifiedStorageKeys && res.verifiedStorageKeys.length > 0
430
+ ? 'confirmed by local mirror metadata already in media/'
431
+ : 'not found within the bounded library walk';
432
+ console.log(`ℹ️ Targeted storageKey(s) not downloaded: ${keys.join(', ')} (${reason}). Run "emit pull-media --all" (or a larger --limit) for a complete library pass.`);
433
+ return;
434
+ }
377
435
  console.log(`✅ Media sync complete: ${res.total} total items (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date).`);
378
436
  reportOrphanStorageKeys(res.orphanStorageKeys);
379
437
  return;
@@ -410,11 +468,7 @@ export function registerPullCommands(program, resolveContext) {
410
468
  console.log(`✅ Media sync complete: ${res.total} total items (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date${deletedMsg}).${formatMediaCoverageLine(res)}`);
411
469
  }
412
470
  catch (error) {
413
- if (error instanceof ApiError) {
414
- console.error(`\n${error.toActionableString()}`);
415
- process.exit(1);
416
- }
417
- throw error;
471
+ reportActionFailure(error);
418
472
  }
419
473
  });
420
474
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { Command } from 'commander';
2
- import type { CliContextResolver } from '../context.js';
2
+ import { type CliContextResolver } from '../context.js';
3
3
  export declare function registerPushCommand(program: Command, resolveContext: CliContextResolver): void;
4
4
  //# sourceMappingURL=push.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CA6N9F"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAiCzF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAsI9F"}
@@ -19,11 +19,35 @@
19
19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
20
  * SOFTWARE.
21
21
  */
22
- import { pushArticle, PushValidationError } from '../../sync/push.js';
22
+ import { pushArticle } from '../../sync/push.js';
23
23
  import { pushAll } from '../../sync/orchestrator.js';
24
- import { ApiError } from '../../client/error.js';
25
- import { FrontmatterParseError } from '../../utils/frontmatter.js';
26
- import { persistLocalMediaRefs } from '../../utils/config.js';
24
+ import { resolveAndPersistLocalMediaRefs } from '../context.js';
25
+ import { reportActionFailure } from '../report-failure.js';
26
+ function printPushArticleDetails(res, warningHeaderPrefix = ' ⚠️', warningItemPrefix = ' 👉') {
27
+ if (res.previousId) {
28
+ console.log(` 🆔 Server assigned ULID: ${res.previousId} -> ${res.id}`);
29
+ }
30
+ if (res.previousFilePath) {
31
+ console.log(` 📄 Renamed local file: ${res.previousFilePath} -> ${res.filePath}`);
32
+ }
33
+ if (res.resolvedTaxonomies) {
34
+ for (const [tax, items] of Object.entries(res.resolvedTaxonomies)) {
35
+ if (Array.isArray(items)) {
36
+ for (const item of items) {
37
+ if (item.input !== item.resolved) {
38
+ console.log(` 🏷️ Canonicalized ${tax}: '${item.input}' -> '${item.resolved}'`);
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ if (res.warnings && res.warnings.length > 0) {
45
+ console.warn(`${warningHeaderPrefix} Warnings (${res.warnings.length}):`);
46
+ for (const w of res.warnings) {
47
+ console.warn(`${warningItemPrefix} ${w}`);
48
+ }
49
+ }
50
+ }
27
51
  export function registerPushCommand(program, resolveContext) {
28
52
  program
29
53
  .command('push [file]')
@@ -41,19 +65,7 @@ export function registerPushCommand(program, resolveContext) {
41
65
  .option('-p, --profile <name>', 'Explicitly use a specific connection profile')
42
66
  .action(async (file, options) => {
43
67
  const ctx = resolveContext(options.profile);
44
- // Same workspace-preference rule as pull: honour the remembered setting, persist an explicit flag, and
45
- // let `--no-local-media-refs` clear a previously remembered preference.
46
- const localMediaRefs = options.localMediaRefs === false
47
- ? false
48
- : options.localMediaRefs === true
49
- ? true
50
- : ctx.config.localMediaRefs;
51
- if (options.localMediaRefs === true && ctx.config.localMediaRefs !== true) {
52
- persistLocalMediaRefs(ctx.root, true);
53
- }
54
- else if (options.localMediaRefs === false && ctx.config.localMediaRefs === true) {
55
- persistLocalMediaRefs(ctx.root, false);
56
- }
68
+ const localMediaRefs = resolveAndPersistLocalMediaRefs(ctx, options.localMediaRefs);
57
69
  try {
58
70
  if (options.all) {
59
71
  const pushResult = await pushAll({
@@ -80,29 +92,7 @@ export function registerPushCommand(program, resolveContext) {
80
92
  }
81
93
  for (const res of pushResult.results) {
82
94
  console.log(`✅ Pushed ${res.id} (${res.filePath})`);
83
- if (res.previousId) {
84
- console.log(` 🆔 Server assigned ULID: ${res.previousId} -> ${res.id}`);
85
- }
86
- if (res.previousFilePath) {
87
- console.log(` 📄 Renamed local file: ${res.previousFilePath} -> ${res.filePath}`);
88
- }
89
- if (res.resolvedTaxonomies) {
90
- for (const [tax, items] of Object.entries(res.resolvedTaxonomies)) {
91
- if (Array.isArray(items)) {
92
- for (const item of items) {
93
- if (item.input !== item.resolved) {
94
- console.log(` 🏷️ Canonicalized ${tax}: '${item.input}' -> '${item.resolved}'`);
95
- }
96
- }
97
- }
98
- }
99
- }
100
- if (res.warnings && res.warnings.length > 0) {
101
- console.warn(` ⚠️ Warnings (${res.warnings.length}):`);
102
- for (const w of res.warnings) {
103
- console.warn(` 👉 ${w}`);
104
- }
105
- }
95
+ printPushArticleDetails(res);
106
96
  }
107
97
  return;
108
98
  }
@@ -150,59 +140,11 @@ export function registerPushCommand(program, resolveContext) {
150
140
  }
151
141
  else {
152
142
  console.log(`✅ Successfully pushed ${res.id} -> ${res.filePath} (rev: ${res.rev})`);
153
- if (res.previousId) {
154
- console.log(` 🆔 Server assigned ULID: ${res.previousId} -> ${res.id}`);
155
- }
156
- if (res.previousFilePath) {
157
- console.log(` 📄 Renamed local file: ${res.previousFilePath} -> ${res.filePath}`);
158
- }
159
- if (res.resolvedTaxonomies) {
160
- for (const [tax, items] of Object.entries(res.resolvedTaxonomies)) {
161
- if (Array.isArray(items)) {
162
- for (const item of items) {
163
- if (item.input !== item.resolved) {
164
- console.log(` 🏷️ Canonicalized ${tax}: '${item.input}' -> '${item.resolved}'`);
165
- }
166
- }
167
- }
168
- }
169
- }
170
- if (res.warnings && res.warnings.length > 0) {
171
- console.warn(`\n⚠️ Warnings (${res.warnings.length}):`);
172
- for (const w of res.warnings) {
173
- console.warn(` 👉 ${w}`);
174
- }
175
- }
143
+ printPushArticleDetails(res, '\n⚠️', ' 👉');
176
144
  }
177
145
  }
178
146
  catch (err) {
179
- if (err instanceof PushValidationError) {
180
- console.error(`\n❌ Push blocked by Preflight Guards (${err.errors.length} error(s)):`);
181
- for (const e of err.errors) {
182
- console.error(` - [${e.code}] ${e.message}`);
183
- if (e.suggestion) {
184
- console.error(` 👉 Suggestion: ${e.suggestion}`);
185
- }
186
- }
187
- process.exit(1);
188
- }
189
- if (err instanceof FrontmatterParseError) {
190
- console.error(`\n❌ Error: [${err.code}] ${err.message}`);
191
- if (err.suggestion) {
192
- console.error(` 💡 Suggestion: ${err.suggestion}`);
193
- }
194
- process.exit(1);
195
- }
196
- if (err instanceof ApiError) {
197
- console.error(`\n${err.toActionableString()}`);
198
- process.exit(1);
199
- }
200
- if (err instanceof Error) {
201
- console.error(`\n❌ Error: ${err.message}`);
202
- process.exit(1);
203
- }
204
- console.error(`\n❌ Error: ${String(err)}`);
205
- process.exit(1);
147
+ reportActionFailure(err);
206
148
  }
207
149
  });
208
150
  }