emdash-emit 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +237 -82
  2. package/dist/cli/commands/new.d.ts.map +1 -1
  3. package/dist/cli/commands/new.js +3 -1
  4. package/dist/cli/commands/new.js.map +1 -1
  5. package/dist/cli/commands/profile.d.ts.map +1 -1
  6. package/dist/cli/commands/profile.js +67 -13
  7. package/dist/cli/commands/profile.js.map +1 -1
  8. package/dist/cli/commands/pull.d.ts +5 -0
  9. package/dist/cli/commands/pull.d.ts.map +1 -1
  10. package/dist/cli/commands/pull.js +96 -39
  11. package/dist/cli/commands/pull.js.map +1 -1
  12. package/dist/cli/commands/push.d.ts.map +1 -1
  13. package/dist/cli/commands/push.js +17 -2
  14. package/dist/cli/commands/push.js.map +1 -1
  15. package/dist/cli/commands/status.d.ts +19 -0
  16. package/dist/cli/commands/status.d.ts.map +1 -1
  17. package/dist/cli/commands/status.js +93 -4
  18. package/dist/cli/commands/status.js.map +1 -1
  19. package/dist/cli/context.d.ts +35 -0
  20. package/dist/cli/context.d.ts.map +1 -1
  21. package/dist/cli/context.js +112 -10
  22. package/dist/cli/context.js.map +1 -1
  23. package/dist/client/auth.d.ts +1 -0
  24. package/dist/client/auth.d.ts.map +1 -1
  25. package/dist/client/auth.js +1 -0
  26. package/dist/client/auth.js.map +1 -1
  27. package/dist/client/http.d.ts.map +1 -1
  28. package/dist/client/http.js +27 -10
  29. package/dist/client/http.js.map +1 -1
  30. package/dist/client/mapper.d.ts +12 -0
  31. package/dist/client/mapper.d.ts.map +1 -1
  32. package/dist/client/mapper.js +65 -0
  33. package/dist/client/mapper.js.map +1 -1
  34. package/dist/client/media.d.ts +141 -0
  35. package/dist/client/media.d.ts.map +1 -0
  36. package/dist/client/media.js +582 -0
  37. package/dist/client/media.js.map +1 -0
  38. package/dist/client/portable-text.d.ts +22 -1
  39. package/dist/client/portable-text.d.ts.map +1 -1
  40. package/dist/client/portable-text.js +85 -5
  41. package/dist/client/portable-text.js.map +1 -1
  42. package/dist/db/cache.d.ts +16 -0
  43. package/dist/db/cache.d.ts.map +1 -1
  44. package/dist/db/cache.js +67 -0
  45. package/dist/db/cache.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/mcp/context.d.ts +1 -0
  51. package/dist/mcp/context.d.ts.map +1 -1
  52. package/dist/mcp/server.d.ts +8 -0
  53. package/dist/mcp/server.d.ts.map +1 -1
  54. package/dist/mcp/server.js +60 -15
  55. package/dist/mcp/server.js.map +1 -1
  56. package/dist/mcp/tool-errors.d.ts +11 -0
  57. package/dist/mcp/tool-errors.d.ts.map +1 -0
  58. package/dist/mcp/tool-errors.js +62 -0
  59. package/dist/mcp/tool-errors.js.map +1 -0
  60. package/dist/mcp/tools/profile.d.ts +9 -2
  61. package/dist/mcp/tools/profile.d.ts.map +1 -1
  62. package/dist/mcp/tools/profile.js +49 -36
  63. package/dist/mcp/tools/profile.js.map +1 -1
  64. package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
  65. package/dist/mcp/tools/sync-diff.js +18 -70
  66. package/dist/mcp/tools/sync-diff.js.map +1 -1
  67. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  68. package/dist/mcp/tools/sync-new.js +40 -21
  69. package/dist/mcp/tools/sync-new.js.map +1 -1
  70. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  71. package/dist/mcp/tools/sync-pull.js +110 -86
  72. package/dist/mcp/tools/sync-pull.js.map +1 -1
  73. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  74. package/dist/mcp/tools/sync-push.js +24 -32
  75. package/dist/mcp/tools/sync-push.js.map +1 -1
  76. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  77. package/dist/mcp/tools/sync-status.js +55 -4
  78. package/dist/mcp/tools/sync-status.js.map +1 -1
  79. package/dist/sync/diff.d.ts +36 -0
  80. package/dist/sync/diff.d.ts.map +1 -1
  81. package/dist/sync/diff.js +118 -0
  82. package/dist/sync/diff.js.map +1 -1
  83. package/dist/sync/media.d.ts +16 -0
  84. package/dist/sync/media.d.ts.map +1 -1
  85. package/dist/sync/media.js +180 -26
  86. package/dist/sync/media.js.map +1 -1
  87. package/dist/sync/merge.d.ts.map +1 -1
  88. package/dist/sync/merge.js +1 -0
  89. package/dist/sync/merge.js.map +1 -1
  90. package/dist/sync/orchestrator.d.ts +6 -0
  91. package/dist/sync/orchestrator.d.ts.map +1 -1
  92. package/dist/sync/orchestrator.js +52 -27
  93. package/dist/sync/orchestrator.js.map +1 -1
  94. package/dist/sync/preflight.d.ts +30 -2
  95. package/dist/sync/preflight.d.ts.map +1 -1
  96. package/dist/sync/preflight.js +274 -10
  97. package/dist/sync/preflight.js.map +1 -1
  98. package/dist/sync/pull.d.ts +47 -0
  99. package/dist/sync/pull.d.ts.map +1 -1
  100. package/dist/sync/pull.js +148 -8
  101. package/dist/sync/pull.js.map +1 -1
  102. package/dist/sync/push.d.ts +2 -0
  103. package/dist/sync/push.d.ts.map +1 -1
  104. package/dist/sync/push.js +332 -6
  105. package/dist/sync/push.js.map +1 -1
  106. package/dist/sync/status.d.ts +11 -1
  107. package/dist/sync/status.d.ts.map +1 -1
  108. package/dist/sync/status.js +40 -6
  109. package/dist/sync/status.js.map +1 -1
  110. package/dist/sync/taxonomies.d.ts.map +1 -1
  111. package/dist/sync/taxonomies.js +39 -4
  112. package/dist/sync/taxonomies.js.map +1 -1
  113. package/dist/utils/config.d.ts +11 -0
  114. package/dist/utils/config.d.ts.map +1 -1
  115. package/dist/utils/config.js +14 -4
  116. package/dist/utils/config.js.map +1 -1
  117. package/dist/utils/frontmatter.d.ts +16 -1
  118. package/dist/utils/frontmatter.d.ts.map +1 -1
  119. package/dist/utils/frontmatter.js +66 -7
  120. package/dist/utils/frontmatter.js.map +1 -1
  121. package/dist/utils/profile.d.ts +3 -3
  122. package/dist/utils/profile.d.ts.map +1 -1
  123. package/dist/utils/profile.js +105 -8
  124. package/dist/utils/profile.js.map +1 -1
  125. package/package.json +4 -1
@@ -21,6 +21,17 @@
21
21
  */
22
22
  import { loadProfilesFile, setProfile, setActiveProfile, removeProfile, resolveTargetProfile, } from '../../utils/profile.js';
23
23
  export function registerProfileCommands(program) {
24
+ /**
25
+ * Profile management is local-file work, and its failures (unknown profile name, ambiguous
26
+ * multi-profile resolution) are user-correctable. Report them as one actionable line with a
27
+ * non-zero exit instead of leaking a raw Node stack trace, matching how pull/push already
28
+ * format errors.
29
+ */
30
+ const reportProfileFailure = (error) => {
31
+ const message = error instanceof Error ? error.message : String(error);
32
+ console.error(`❌ ${message}`);
33
+ process.exit(1);
34
+ };
24
35
  const profileCmd = program
25
36
  .command('profile')
26
37
  .description('Manage EmDash site connection profiles (multi-site support)');
@@ -58,31 +69,67 @@ export function registerProfileCommands(program) {
58
69
  .option('--workspace <path>', 'Default local workspace directory for this site')
59
70
  .option('--active', 'Set this profile as active immediately')
60
71
  .action((name, options) => {
61
- setProfile(name, {
62
- origin: options.origin,
63
- token: options.token,
64
- workspace: options.workspace,
65
- });
66
- if (options.active) {
67
- setActiveProfile(name);
72
+ try {
73
+ /**
74
+ * `add` doubles as "update", so unspecified options must fall back to what is already
75
+ * stored. Re-running `emit profile add <name> --origin <new>` used to rebuild the entry
76
+ * from scratch, silently wiping a stored token and the workspace link that `emit init`
77
+ * created - the next command then failed with "No authentication found" and directory
78
+ * based profile resolution broke.
79
+ */
80
+ const existing = loadProfilesFile().profiles[name];
81
+ const token = options.token ?? existing?.token ?? '';
82
+ const workspace = options.workspace ?? existing?.workspace;
83
+ const profileConfig = {
84
+ origin: options.origin,
85
+ token,
86
+ ...(workspace ? { workspace } : {}),
87
+ ...(existing?.defaultCollection ? { defaultCollection: existing.defaultCollection } : {}),
88
+ ...(existing?.defaultLocale ? { defaultLocale: existing.defaultLocale } : {}),
89
+ };
90
+ setProfile(name, profileConfig);
91
+ if (options.active) {
92
+ setActiveProfile(name);
93
+ }
94
+ const kept = [];
95
+ if (!options.token && existing?.token)
96
+ kept.push('token');
97
+ if (!options.workspace && workspace)
98
+ kept.push('workspace link');
99
+ console.log(`✅ Profile "${name}" ${existing ? 'updated' : 'configured'} successfully.` +
100
+ (kept.length
101
+ ? ` Kept the existing ${kept.join(' and ')}; pass --token/--workspace to replace them.`
102
+ : ''));
103
+ }
104
+ catch (error) {
105
+ reportProfileFailure(error);
68
106
  }
69
- console.log(`✅ Profile "${name}" configured successfully.`);
70
107
  });
71
108
  // emit profile use <name>
72
109
  profileCmd
73
110
  .command('use <name>')
74
111
  .description('Set active default profile')
75
112
  .action((name) => {
76
- setActiveProfile(name);
77
- console.log(`✅ Active profile set to "${name}".`);
113
+ try {
114
+ setActiveProfile(name);
115
+ console.log(`✅ Active profile set to "${name}".`);
116
+ }
117
+ catch (error) {
118
+ reportProfileFailure(error);
119
+ }
78
120
  });
79
121
  // emit profile remove <name>
80
122
  profileCmd
81
123
  .command('remove <name>')
82
124
  .description('Remove a profile')
83
125
  .action((name) => {
84
- removeProfile(name);
85
- console.log(`✅ Profile "${name}" removed.`);
126
+ try {
127
+ removeProfile(name);
128
+ console.log(`✅ Profile "${name}" removed.`);
129
+ }
130
+ catch (error) {
131
+ reportProfileFailure(error);
132
+ }
86
133
  });
87
134
  // emit profile current
88
135
  profileCmd
@@ -90,7 +137,14 @@ export function registerProfileCommands(program) {
90
137
  .description('Show currently resolved profile and origin')
91
138
  .option('-p, --profile <name>', 'Explicit profile name to inspect')
92
139
  .action((options) => {
93
- const resolved = resolveTargetProfile({ profile: options.profile });
140
+ let resolved;
141
+ try {
142
+ resolved = resolveTargetProfile({ profile: options.profile });
143
+ }
144
+ catch (error) {
145
+ reportProfileFailure(error);
146
+ return;
147
+ }
94
148
  if (!resolved) {
95
149
  console.log('No profile resolved (relying on environment variables or defaults).');
96
150
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/cli/commands/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/cli/commands/profile.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import type { Command } from 'commander';
2
2
  import type { CliContextResolver } from '../context.js';
3
+ export declare function formatPullWindowLabel(status: string | undefined, limit: number): string;
4
+ export declare function formatPullStatusBreakdown(status: string | undefined, items: Array<{
5
+ deleted?: boolean;
6
+ status?: string;
7
+ }>): string;
3
8
  export declare function registerPullCommands(program: Command, resolveContext: CliContextResolver): void;
4
9
  //# sourceMappingURL=pull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAyO/F"}
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,KAAK,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAKR;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CA4R/F"}
@@ -19,10 +19,21 @@
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 } from '../../sync/pull.js';
22
+ import { pullArticle, formatQuarantineNotice } from '../../sync/pull.js';
23
23
  import { pullBatch, SyncPruneConflictError } from '../../sync/orchestrator.js';
24
24
  import { pullTaxonomies, getLocalTaxonomiesSummary, formatTaxonomiesHint, } from '../../sync/taxonomies.js';
25
25
  import { pullMedia } from '../../sync/media.js';
26
+ import { ApiError } from '../../client/error.js';
27
+ export function formatPullWindowLabel(status, limit) {
28
+ return status === 'all' ? `${limit}/status` : `${limit}`;
29
+ }
30
+ export function formatPullStatusBreakdown(status, items) {
31
+ if (status !== 'all')
32
+ return '';
33
+ const publishedCount = items.filter((i) => !i.deleted && i.status === 'published').length;
34
+ const draftCount = items.filter((i) => !i.deleted && i.status === 'draft').length;
35
+ return ` [${publishedCount} published, ${draftCount} draft]`;
36
+ }
26
37
  export function registerPullCommands(program, resolveContext) {
27
38
  // emit pull [id]
28
39
  program
@@ -80,7 +91,8 @@ export function registerPullCommands(program, resolveContext) {
80
91
  const concurrency = options.concurrency
81
92
  ? parseInt(options.concurrency, 10)
82
93
  : ctx.config.concurrency || 8;
83
- console.log(`Fetching articles from remote (${collection}, status: ${options.status}, window: ${limit}, concurrency: ${concurrency})...`);
94
+ const windowLabel = formatPullWindowLabel(options.status, limit);
95
+ console.log(`Fetching articles from remote (${collection}, status: ${options.status}, window: ${windowLabel}, concurrency: ${concurrency})...`);
84
96
  const batchResult = await pullBatch({
85
97
  collection,
86
98
  workspaceRoot: ctx.root,
@@ -97,6 +109,9 @@ export function registerPullCommands(program, resolveContext) {
97
109
  if (item.deleted) {
98
110
  console.log(` [${current}/${total}] 🗑️ Pruned ${item.slug} -> ${item.filePath}`);
99
111
  }
112
+ else if (item.localEditsPreserved) {
113
+ console.log(`\n [${current}/${total}] 🛡️ Kept local edits for ${item.slug} (${item.filePath})`);
114
+ }
100
115
  else if (!item.skipped) {
101
116
  console.log(` [${current}/${total}] ✅ Pulled ${item.slug} -> ${item.filePath}`);
102
117
  }
@@ -110,7 +125,17 @@ export function registerPullCommands(program, resolveContext) {
110
125
  return;
111
126
  }
112
127
  const deletedMsg = batchResult.deleted ? `, ${batchResult.deleted} pruned` : '';
113
- console.log(`\n🎉 Articles: ${batchResult.total} total (${batchResult.updated} updated, ${batchResult.skipped} skipped/up-to-date${deletedMsg})`);
128
+ const statusBreakdown = formatPullStatusBreakdown(options.status, batchResult.items);
129
+ console.log(`\n🎉 Articles: ${batchResult.total} total${statusBreakdown} (${batchResult.updated} updated, ${batchResult.skipped} skipped/up-to-date${deletedMsg})`);
130
+ if (batchResult.preserved && batchResult.preserved > 0) {
131
+ console.log(`🛡️ ${batchResult.preserved} article(s) had unpushed local edits: Emit kept your local version (remote changes were NOT applied). ` +
132
+ `Push them with "emit push <filePath>", or re-run with --force to accept the remote version.`);
133
+ }
134
+ for (const item of batchResult.items) {
135
+ const notice = formatQuarantineNotice(item.quarantined);
136
+ if (notice)
137
+ console.log(`\n${notice}`);
138
+ }
114
139
  // 3. Pull media (if --media)
115
140
  if (includeMedia) {
116
141
  const mediaLimit = ctx.config.mediaSyncLimit || 300;
@@ -140,12 +165,19 @@ export function registerPullCommands(program, resolveContext) {
140
165
  if (res.deleted) {
141
166
  console.log(`🗑️ Remote article was deleted. Pruned local file: ${res.filePath}`);
142
167
  }
168
+ else if (res.localEditsPreserved) {
169
+ console.log(`🛡️ Kept your local edits for ${res.slug} (${res.filePath}); remote changes were NOT applied.`);
170
+ console.log(` Push them with "emit push ${res.filePath}", or re-run with --force to accept the remote version.`);
171
+ }
143
172
  else if (res.skipped) {
144
173
  console.log(`ℹ️ Article ${res.slug} is already up-to-date (${res.filePath})`);
145
174
  }
146
175
  else {
147
176
  console.log(`✅ Pulled ${res.slug} -> ${res.filePath}`);
148
177
  }
178
+ const quarantineNotice = formatQuarantineNotice(res.quarantined);
179
+ if (quarantineNotice)
180
+ console.log(`\n${quarantineNotice}`);
149
181
  }
150
182
  }
151
183
  catch (error) {
@@ -153,6 +185,10 @@ export function registerPullCommands(program, resolveContext) {
153
185
  console.error(`\n❌ ${error.message}`);
154
186
  process.exit(1);
155
187
  }
188
+ if (error instanceof ApiError) {
189
+ console.error(`\n${error.toActionableString()}`);
190
+ process.exit(1);
191
+ }
156
192
  throw error;
157
193
  }
158
194
  });
@@ -163,30 +199,42 @@ export function registerPullCommands(program, resolveContext) {
163
199
  .option('-p, --profile <name>', 'Explicitly use a specific connection profile')
164
200
  .action(async (options) => {
165
201
  const ctx = resolveContext(options.profile);
166
- console.log('Pulling categories and tags from remote...');
167
- const res = await pullTaxonomies({
168
- workspaceRoot: ctx.root,
169
- origin: ctx.origin,
170
- token: ctx.auth.token,
171
- refreshToken: ctx.auth.refreshToken,
172
- });
173
- const prunedCatMsg = res.deletedCategoriesCount
174
- ? `, ${res.deletedCategoriesCount} categories pruned`
175
- : '';
176
- const prunedTagMsg = res.deletedTagsCount ? `, ${res.deletedTagsCount} tags pruned` : '';
177
- if (res.categoriesFailed) {
178
- console.warn('⚠️ Failed to fetch remote categories: preserved existing local definitions.');
179
- }
180
- if (res.tagsFailed) {
181
- console.warn('⚠️ Failed to fetch remote tags: preserved existing local definitions.');
182
- }
183
- if (!res.categoriesFailed || !res.tagsFailed) {
184
- console.log(`✅ Successfully synced taxonomies: ${res.categoriesCount} categories, ${res.tagsCount} tags${prunedCatMsg}${prunedTagMsg}.`);
202
+ try {
203
+ console.log('Pulling categories and tags from remote...');
204
+ const res = await pullTaxonomies({
205
+ workspaceRoot: ctx.root,
206
+ origin: ctx.origin,
207
+ token: ctx.auth.token,
208
+ refreshToken: ctx.auth.refreshToken,
209
+ });
210
+ const prunedCatMsg = res.deletedCategoriesCount
211
+ ? `, ${res.deletedCategoriesCount} categories pruned`
212
+ : '';
213
+ const prunedTagMsg = res.deletedTagsCount ? `, ${res.deletedTagsCount} tags pruned` : '';
214
+ if (res.categoriesFailed) {
215
+ console.warn('⚠️ Failed to fetch remote categories: preserved existing local definitions.');
216
+ }
217
+ if (res.tagsFailed) {
218
+ console.warn('⚠️ Failed to fetch remote tags: preserved existing local definitions.');
219
+ }
220
+ if (!res.categoriesFailed || !res.tagsFailed) {
221
+ console.log(`✅ Successfully synced taxonomies: ${res.categoriesCount} categories, ${res.tagsCount} tags${prunedCatMsg}${prunedTagMsg}.`);
222
+ }
223
+ const taxSummary = getLocalTaxonomiesSummary(ctx.root);
224
+ const taxHint = formatTaxonomiesHint(taxSummary, { maxTags: 60 });
225
+ if (taxHint) {
226
+ console.log(`\n${taxHint}`);
227
+ }
228
+ if (res.categoriesFailed && res.tagsFailed) {
229
+ process.exit(1);
230
+ }
185
231
  }
186
- const taxSummary = getLocalTaxonomiesSummary(ctx.root);
187
- const taxHint = formatTaxonomiesHint(taxSummary, { maxTags: 60 });
188
- if (taxHint) {
189
- console.log(`\n${taxHint}`);
232
+ catch (error) {
233
+ if (error instanceof ApiError) {
234
+ console.error(`\n${error.toActionableString()}`);
235
+ process.exit(1);
236
+ }
237
+ throw error;
190
238
  }
191
239
  });
192
240
  // emit pull-media
@@ -205,19 +253,28 @@ export function registerPullCommands(program, resolveContext) {
205
253
  : options.limit
206
254
  ? parseInt(options.limit, 10)
207
255
  : ctx.config.mediaSyncLimit || 300;
208
- console.log(`Pulling media from remote (${options.all ? 'all' : `limit: ${limit}`})...`);
209
- const res = await pullMedia({
210
- workspaceRoot: ctx.root,
211
- origin: ctx.origin,
212
- token: ctx.auth.token,
213
- refreshToken: ctx.auth.refreshToken,
214
- limit,
215
- all: options.all,
216
- prune: options.prune,
217
- downloadFiles: !options.metadataOnly,
218
- });
219
- const deletedMsg = res.deleted ? `, ${res.deleted} pruned` : '';
220
- console.log(`✅ Media sync complete: ${res.total} total items (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date${deletedMsg}).`);
256
+ try {
257
+ console.log(`Pulling media from remote (${options.all ? 'all' : `limit: ${limit}`})...`);
258
+ const res = await pullMedia({
259
+ workspaceRoot: ctx.root,
260
+ origin: ctx.origin,
261
+ token: ctx.auth.token,
262
+ refreshToken: ctx.auth.refreshToken,
263
+ limit,
264
+ all: options.all,
265
+ prune: options.prune,
266
+ downloadFiles: !options.metadataOnly,
267
+ });
268
+ const deletedMsg = res.deleted ? `, ${res.deleted} pruned` : '';
269
+ console.log(`✅ Media sync complete: ${res.total} total items (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date${deletedMsg}).`);
270
+ }
271
+ catch (error) {
272
+ if (error instanceof ApiError) {
273
+ console.error(`\n${error.toActionableString()}`);
274
+ process.exit(1);
275
+ }
276
+ throw error;
277
+ }
221
278
  });
222
279
  }
223
280
  //# sourceMappingURL=pull.js.map
@@ -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 +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;AAIzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAuF9F"}
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;AAIzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CA2G9F"}
@@ -25,7 +25,7 @@ import { ApiError } from '../../client/error.js';
25
25
  export function registerPushCommand(program, resolveContext) {
26
26
  program
27
27
  .command('push [file]')
28
- .description('Push local markdown article(s) to remote EmDash')
28
+ .description('Push local markdown article(s) to remote EmDash (auto-uploads media/drafts/* images)')
29
29
  .option('--allow-publish', 'Confirm publishing live to remote')
30
30
  .option('--all', 'Push all modified files in workspace')
31
31
  .option('-p, --profile <name>', 'Explicitly use a specific connection profile')
@@ -41,12 +41,21 @@ export function registerPushCommand(program, resolveContext) {
41
41
  refreshToken: ctx.auth.refreshToken,
42
42
  allowPublish: options.allowPublish,
43
43
  });
44
+ if (pushResult.invalid > 0) {
45
+ console.warn(`⚠️ Skipped ${pushResult.invalid} file(s) with invalid YAML frontmatter (run "emit status" or "emit pull" to inspect/repair).`);
46
+ }
44
47
  if (pushResult.total === 0) {
45
- console.log('✨ All articles are already in sync. Nothing to push.');
48
+ console.log('✨ All valid articles are already in sync. Nothing to push.');
46
49
  return;
47
50
  }
48
51
  for (const res of pushResult.results) {
49
52
  console.log(`✅ Pushed ${res.id} (${res.filePath})`);
53
+ if (res.previousId) {
54
+ console.log(` 🆔 Server assigned ULID: ${res.previousId} -> ${res.id}`);
55
+ }
56
+ if (res.previousFilePath) {
57
+ console.log(` 📄 Renamed local file: ${res.previousFilePath} -> ${res.filePath}`);
58
+ }
50
59
  if (res.warnings && res.warnings.length > 0) {
51
60
  console.warn(` ⚠️ Warnings (${res.warnings.length}):`);
52
61
  for (const w of res.warnings) {
@@ -77,6 +86,12 @@ export function registerPushCommand(program, resolveContext) {
77
86
  }
78
87
  else {
79
88
  console.log(`✅ Successfully pushed ${res.id} -> ${res.filePath} (rev: ${res.rev})`);
89
+ if (res.previousId) {
90
+ console.log(` 🆔 Server assigned ULID: ${res.previousId} -> ${res.id}`);
91
+ }
92
+ if (res.previousFilePath) {
93
+ console.log(` 📄 Renamed local file: ${res.previousFilePath} -> ${res.filePath}`);
94
+ }
80
95
  if (res.warnings && res.warnings.length > 0) {
81
96
  console.warn(`\n⚠️ Warnings (${res.warnings.length}):`);
82
97
  for (const w of res.warnings) {
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,23 @@
1
1
  import type { Command } from 'commander';
2
2
  import type { CliContextResolver } from '../context.js';
3
+ import type { ResolveProfileResult } from '../../utils/profile.js';
4
+ export interface InitPlanResult {
5
+ effectiveOrigin?: string;
6
+ shouldLinkProfile: boolean;
7
+ /** Actionable warning when a higher-precedence origin source silently overrides a lower one. */
8
+ warning: string | null;
9
+ }
10
+ /**
11
+ * Determines the effective origin for `emit init` and whether the resolved profile
12
+ * should be automatically linked to the workspace (3-guard check: link enabled,
13
+ * profile workspace unset, and profile origin matches effective origin).
14
+ *
15
+ * Origin precedence mirrors runtime resolution (`resolveOriginPriority`):
16
+ * explicit `--origin` > `EMDASH_ORIGIN` > auto-resolved profile.
17
+ */
18
+ export declare function resolveInitPlan(options: {
19
+ origin?: string;
20
+ link?: boolean;
21
+ }, resolvedProfile: ResolveProfileResult | null, envOrigin?: string): InitPlanResult;
3
22
  export declare function registerStatusInitCommands(program: Command, resolveContext: CliContextResolver): void;
4
23
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,kBAAkB,GACjC,IAAI,CAoFN"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gGAAgG;IAChG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5C,eAAe,EAAE,oBAAoB,GAAG,IAAI,EAC5C,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAiBhB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,kBAAkB,GACjC,IAAI,CA6KN"}
@@ -20,6 +20,30 @@
20
20
  * SOFTWARE.
21
21
  */
22
22
  import { getWorkspaceStatus } from '../../sync/status.js';
23
+ import { inspectArticleDiff } from '../../sync/diff.js';
24
+ import { sameOrigin } from '../context.js';
25
+ /**
26
+ * Determines the effective origin for `emit init` and whether the resolved profile
27
+ * should be automatically linked to the workspace (3-guard check: link enabled,
28
+ * profile workspace unset, and profile origin matches effective origin).
29
+ *
30
+ * Origin precedence mirrors runtime resolution (`resolveOriginPriority`):
31
+ * explicit `--origin` > `EMDASH_ORIGIN` > auto-resolved profile.
32
+ */
33
+ export function resolveInitPlan(options, resolvedProfile, envOrigin) {
34
+ const effectiveOrigin = options.origin || envOrigin || resolvedProfile?.config.origin;
35
+ const shouldLinkProfile = Boolean(options.link !== false &&
36
+ resolvedProfile &&
37
+ !resolvedProfile.config.workspace &&
38
+ sameOrigin(resolvedProfile.config.origin, effectiveOrigin || ''));
39
+ let warning = null;
40
+ if (envOrigin && resolvedProfile && !sameOrigin(envOrigin, resolvedProfile.config.origin)) {
41
+ warning = options.origin
42
+ ? null
43
+ : `⚠️ Warning: EMDASH_ORIGIN (${envOrigin}) overrides resolved profile "${resolvedProfile.name}" origin (${resolvedProfile.config.origin}). The workspace was initialized for EMDASH_ORIGIN and was not linked to that profile.`;
44
+ }
45
+ return { effectiveOrigin, shouldLinkProfile, warning };
46
+ }
23
47
  export function registerStatusInitCommands(program, resolveContext) {
24
48
  // emit status
25
49
  program
@@ -43,11 +67,54 @@ export function registerStatusInitCommands(program, resolveContext) {
43
67
  icon = '⚪';
44
68
  label = 'untracked';
45
69
  }
70
+ else if (item.syncStatus === 'invalid') {
71
+ icon = '🔴';
72
+ label = 'invalid ';
73
+ }
46
74
  const titleDisplay = item.title ? ` (${item.title})` : '';
75
+ const cacheTag = item.syncStatus === 'invalid' && item.cached === false ? ' [uncached]' : '';
76
+ const errorDisplay = item.error ? ` — ${item.error}` : '';
47
77
  const paddedStatus = (item.status || '').padEnd(9, ' ');
48
- console.log(` ${icon} [${label}] ${paddedStatus} ${item.filePath}${titleDisplay}`);
78
+ console.log(` ${icon} [${label}] ${paddedStatus} ${item.filePath}${titleDisplay}${cacheTag}${errorDisplay}`);
79
+ }
80
+ const invalidSuffix = status.summary.invalid > 0 ? `, ${status.summary.invalid} invalid` : '';
81
+ console.log(`\nSummary: ${status.summary.total} total (${status.summary.synced} synced, ${status.summary.modified} modified, ${status.summary.untracked} untracked${invalidSuffix})\n`);
82
+ if (status.summary.invalid > 0) {
83
+ const uncachedInvalid = status.items.filter((i) => i.syncStatus === 'invalid' && i.cached === false);
84
+ if (uncachedInvalid.length > 0) {
85
+ const exampleId = uncachedInvalid.find((i) => i.id && i.id !== 'unknown')?.id || '<ULID>';
86
+ console.log(`💡 Hint: Run "emit pull" to repair cached invalid files. For ${uncachedInvalid.length} uncached file(s) outside the sync window, run "emit pull ${exampleId}".\n`);
87
+ }
88
+ else {
89
+ console.log('💡 Hint: Run "emit pull" to automatically re-serialize and repair invalid frontmatter files.\n');
90
+ }
91
+ }
92
+ if (status.summary.conflicts > 0) {
93
+ console.log(`🩹 ${status.summary.conflicts} preserved local copy(ies) in ${collection}/conflicts/ ` +
94
+ `(rescue copies created when a pull found divergent content).`);
95
+ console.log(' Review each copy, merge any valuable content into the canonical article, then delete it. ' +
96
+ 'They are never pushed or pruned; pushing one directly is refused (QUARANTINED_COPY_NOT_PUSHABLE).\n');
49
97
  }
50
- console.log(`\nSummary: ${status.summary.total} total (${status.summary.synced} synced, ${status.summary.modified} modified, ${status.summary.untracked} untracked)\n`);
98
+ });
99
+ // emit diff [filePath]
100
+ program
101
+ .command('diff [filePath]')
102
+ .description('Display line-by-line differences between local edits and baseline snapshot')
103
+ .option('-i, --id <id>', 'Article ID (ULID) to inspect')
104
+ .option('-p, --profile <name>', 'Explicitly use a specific connection profile')
105
+ .action((filePath, options) => {
106
+ const ctx = resolveContext(options.profile);
107
+ const inspection = inspectArticleDiff({
108
+ workspaceRoot: ctx.root,
109
+ cache: ctx.cache,
110
+ filePath,
111
+ id: options.id,
112
+ });
113
+ if (!inspection.ok) {
114
+ console.error(inspection.formattedOutput);
115
+ process.exit(1);
116
+ }
117
+ console.log(inspection.formattedOutput);
51
118
  });
52
119
  // emit guide
53
120
  program
@@ -65,8 +132,10 @@ export function registerStatusInitCommands(program, resolveContext) {
65
132
  2. Write & Edit: Freely edit posts/draft/*.md with editor or AI.
66
133
  --> No need to write a redundant # Title header in the body.
67
134
  --> Reference frontmatter taxonomies for categories and tags.
135
+ --> Place offline images in media/drafts/<file> and reference them on a
136
+ standalone line: ![alt](../../media/drafts/<file>)
68
137
  3. Push Draft: emit push <file>
69
- --> Safely syncs to EmDash remote as staged draft.
138
+ --> Auto-uploads media/drafts/* images, rewrites URLs, and syncs draft.
70
139
  4. Publish Live: Update frontmatter status to "published", then run:
71
140
  emit push <file> --allow-publish
72
141
 
@@ -86,15 +155,35 @@ export function registerStatusInitCommands(program, resolveContext) {
86
155
  .command('init')
87
156
  .description('Initialize current directory as an Emit local workspace')
88
157
  .option('--origin <url>', 'EmDash instance origin URL')
158
+ .option('--no-link', 'Do not automatically link this workspace directory to the resolved profile')
89
159
  .action(async (options) => {
90
160
  const root = process.cwd();
91
161
  const { initWorkspace } = await import('../../utils/config.js');
92
162
  const { getWorkspacePaths } = await import('../../utils/workspace.js');
93
- initWorkspace(root, options.origin ? { origin: options.origin } : undefined);
163
+ const { resolveTargetProfile, setProfile } = await import('../../utils/profile.js');
164
+ let resolvedProfile = null;
165
+ try {
166
+ resolvedProfile = resolveTargetProfile({ cwd: root });
167
+ }
168
+ catch {
169
+ // Ignore AmbiguousProfileError during init; user can pass --origin explicitly
170
+ }
171
+ const { effectiveOrigin, shouldLinkProfile, warning } = resolveInitPlan(options, resolvedProfile, process.env.EMDASH_ORIGIN);
172
+ if (warning) {
173
+ console.warn(warning);
174
+ }
175
+ initWorkspace(root, effectiveOrigin ? { origin: effectiveOrigin } : undefined);
94
176
  const paths = getWorkspacePaths(root);
95
177
  console.log(`✅ Initialized Emit workspace at: ${root}`);
96
178
  console.log(` Config: ${paths.configPath}`);
97
179
  console.log(` Database: ${paths.dbPath}`);
180
+ if (shouldLinkProfile && resolvedProfile) {
181
+ setProfile(resolvedProfile.name, {
182
+ ...resolvedProfile.config,
183
+ workspace: root,
184
+ });
185
+ console.log(`🔗 Linked profile "${resolvedProfile.name}" -> workspace ${root}`);
186
+ }
98
187
  });
99
188
  }
100
189
  //# sourceMappingURL=status.js.map