emdash-emit 0.1.9 → 0.1.10

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 (129) hide show
  1. package/README.md +78 -9
  2. package/dist/bin/emit.d.ts.map +1 -1
  3. package/dist/bin/emit.js +6 -0
  4. package/dist/bin/emit.js.map +1 -1
  5. package/dist/cli/commands/conflicts.d.ts +4 -0
  6. package/dist/cli/commands/conflicts.d.ts.map +1 -0
  7. package/dist/cli/commands/conflicts.js +153 -0
  8. package/dist/cli/commands/conflicts.js.map +1 -0
  9. package/dist/cli/commands/delete.d.ts +4 -0
  10. package/dist/cli/commands/delete.d.ts.map +1 -0
  11. package/dist/cli/commands/delete.js +89 -0
  12. package/dist/cli/commands/delete.js.map +1 -0
  13. package/dist/cli/commands/doctor.d.ts +4 -0
  14. package/dist/cli/commands/doctor.d.ts.map +1 -0
  15. package/dist/cli/commands/doctor.js +82 -0
  16. package/dist/cli/commands/doctor.js.map +1 -0
  17. package/dist/cli/commands/new.d.ts.map +1 -1
  18. package/dist/cli/commands/new.js +52 -22
  19. package/dist/cli/commands/new.js.map +1 -1
  20. package/dist/cli/commands/pull.d.ts.map +1 -1
  21. package/dist/cli/commands/pull.js +23 -0
  22. package/dist/cli/commands/pull.js.map +1 -1
  23. package/dist/cli/commands/push.d.ts.map +1 -1
  24. package/dist/cli/commands/push.js +22 -0
  25. package/dist/cli/commands/push.js.map +1 -1
  26. package/dist/cli/commands/status.d.ts.map +1 -1
  27. package/dist/cli/commands/status.js +20 -4
  28. package/dist/cli/commands/status.js.map +1 -1
  29. package/dist/cli/context.d.ts +3 -1
  30. package/dist/cli/context.d.ts.map +1 -1
  31. package/dist/cli/context.js +17 -6
  32. package/dist/cli/context.js.map +1 -1
  33. package/dist/db/cache.d.ts +3 -0
  34. package/dist/db/cache.d.ts.map +1 -1
  35. package/dist/db/cache.js +39 -0
  36. package/dist/db/cache.js.map +1 -1
  37. package/dist/mcp/context.d.ts +7 -0
  38. package/dist/mcp/context.d.ts.map +1 -1
  39. package/dist/mcp/server.d.ts.map +1 -1
  40. package/dist/mcp/server.js +39 -2
  41. package/dist/mcp/server.js.map +1 -1
  42. package/dist/mcp/tool-errors.d.ts +7 -2
  43. package/dist/mcp/tool-errors.d.ts.map +1 -1
  44. package/dist/mcp/tool-errors.js +80 -5
  45. package/dist/mcp/tool-errors.js.map +1 -1
  46. package/dist/mcp/tools/profile.d.ts.map +1 -1
  47. package/dist/mcp/tools/profile.js +4 -0
  48. package/dist/mcp/tools/profile.js.map +1 -1
  49. package/dist/mcp/tools/sync-conflicts.d.ts +4 -0
  50. package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -0
  51. package/dist/mcp/tools/sync-conflicts.js +100 -0
  52. package/dist/mcp/tools/sync-conflicts.js.map +1 -0
  53. package/dist/mcp/tools/sync-delete.d.ts +4 -0
  54. package/dist/mcp/tools/sync-delete.d.ts.map +1 -0
  55. package/dist/mcp/tools/sync-delete.js +77 -0
  56. package/dist/mcp/tools/sync-delete.js.map +1 -0
  57. package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
  58. package/dist/mcp/tools/sync-diff.js +3 -2
  59. package/dist/mcp/tools/sync-diff.js.map +1 -1
  60. package/dist/mcp/tools/sync-doctor.d.ts +4 -0
  61. package/dist/mcp/tools/sync-doctor.d.ts.map +1 -0
  62. package/dist/mcp/tools/sync-doctor.js +57 -0
  63. package/dist/mcp/tools/sync-doctor.js.map +1 -0
  64. package/dist/mcp/tools/sync-new.d.ts.map +1 -1
  65. package/dist/mcp/tools/sync-new.js +16 -3
  66. package/dist/mcp/tools/sync-new.js.map +1 -1
  67. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  68. package/dist/mcp/tools/sync-pull.js +41 -11
  69. package/dist/mcp/tools/sync-pull.js.map +1 -1
  70. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  71. package/dist/mcp/tools/sync-push.js +16 -2
  72. package/dist/mcp/tools/sync-push.js.map +1 -1
  73. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  74. package/dist/mcp/tools/sync-status.js +63 -22
  75. package/dist/mcp/tools/sync-status.js.map +1 -1
  76. package/dist/sync/conflicts.d.ts +89 -0
  77. package/dist/sync/conflicts.d.ts.map +1 -0
  78. package/dist/sync/conflicts.js +374 -0
  79. package/dist/sync/conflicts.js.map +1 -0
  80. package/dist/sync/delete.d.ts +58 -0
  81. package/dist/sync/delete.d.ts.map +1 -0
  82. package/dist/sync/delete.js +221 -0
  83. package/dist/sync/delete.js.map +1 -0
  84. package/dist/sync/diff.d.ts.map +1 -1
  85. package/dist/sync/diff.js +6 -3
  86. package/dist/sync/diff.js.map +1 -1
  87. package/dist/sync/doctor.d.ts +31 -0
  88. package/dist/sync/doctor.d.ts.map +1 -0
  89. package/dist/sync/doctor.js +224 -0
  90. package/dist/sync/doctor.js.map +1 -0
  91. package/dist/sync/media.d.ts +22 -0
  92. package/dist/sync/media.d.ts.map +1 -1
  93. package/dist/sync/media.js +342 -94
  94. package/dist/sync/media.js.map +1 -1
  95. package/dist/sync/new.d.ts +31 -0
  96. package/dist/sync/new.d.ts.map +1 -1
  97. package/dist/sync/new.js +139 -2
  98. package/dist/sync/new.js.map +1 -1
  99. package/dist/sync/orchestrator.d.ts.map +1 -1
  100. package/dist/sync/orchestrator.js +2 -0
  101. package/dist/sync/orchestrator.js.map +1 -1
  102. package/dist/sync/preflight.d.ts.map +1 -1
  103. package/dist/sync/preflight.js +29 -3
  104. package/dist/sync/preflight.js.map +1 -1
  105. package/dist/sync/pull.d.ts +4 -0
  106. package/dist/sync/pull.d.ts.map +1 -1
  107. package/dist/sync/pull.js +143 -52
  108. package/dist/sync/pull.js.map +1 -1
  109. package/dist/sync/push.d.ts +10 -0
  110. package/dist/sync/push.d.ts.map +1 -1
  111. package/dist/sync/push.js +49 -31
  112. package/dist/sync/push.js.map +1 -1
  113. package/dist/sync/status.d.ts +10 -0
  114. package/dist/sync/status.d.ts.map +1 -1
  115. package/dist/sync/status.js +26 -0
  116. package/dist/sync/status.js.map +1 -1
  117. package/dist/sync/taxonomies.d.ts +14 -5
  118. package/dist/sync/taxonomies.d.ts.map +1 -1
  119. package/dist/sync/taxonomies.js +104 -6
  120. package/dist/sync/taxonomies.js.map +1 -1
  121. package/dist/utils/config.d.ts +12 -0
  122. package/dist/utils/config.d.ts.map +1 -1
  123. package/dist/utils/config.js +27 -0
  124. package/dist/utils/config.js.map +1 -1
  125. package/dist/utils/frontmatter.d.ts +40 -3
  126. package/dist/utils/frontmatter.d.ts.map +1 -1
  127. package/dist/utils/frontmatter.js +188 -5
  128. package/dist/utils/frontmatter.js.map +1 -1
  129. package/package.json +1 -1
@@ -0,0 +1,57 @@
1
+ /*
2
+ * Copyright (C) 2026 SPORT-SERVICE RS★R
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+ import { z } from 'zod';
23
+ import { runWorkspaceDoctor } from '../../sync/doctor.js';
24
+ import { formatToolError, formatToolSuccess } from '../tool-errors.js';
25
+ export function registerSyncDoctorTool(server, resolveContext) {
26
+ server.tool('sync_doctor', 'Run comprehensive workspace diagnostics: verifies version compatibility, profile/config origin consistency, frontmatter syntax integrity across all articles, quarantined conflict copies, unpushed modifications, and referenced media existence.', {
27
+ collection: z
28
+ .string()
29
+ .optional()
30
+ .describe('Collection to diagnose (defaults to defaultCollection or "posts")'),
31
+ profile: z.string().optional().describe('Target profile name for multi-site setups'),
32
+ }, async (args) => {
33
+ let ctx;
34
+ try {
35
+ ctx = resolveContext(args.profile);
36
+ }
37
+ catch (error) {
38
+ return formatToolError(error);
39
+ }
40
+ try {
41
+ const collection = args.collection || ctx.config.defaultCollection || 'posts';
42
+ const report = await runWorkspaceDoctor({
43
+ workspaceRoot: ctx.root,
44
+ cache: ctx.cache,
45
+ config: ctx.config,
46
+ profileName: ctx.auth.profileName,
47
+ profileOrigin: ctx.auth.origin,
48
+ collection,
49
+ });
50
+ return formatToolSuccess(report, ctx.meta);
51
+ }
52
+ catch (err) {
53
+ return formatToolError(err, ctx.meta);
54
+ }
55
+ });
56
+ }
57
+ //# sourceMappingURL=sync-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-doctor.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,cAA+B;IACvF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,oPAAoP,EACpP;QACE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mEAAmE,CAAC;QAChF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACrF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,GAAkB,CAAC;QACvB,IAAI,CAAC;YACH,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC;YAC9E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;gBACtC,aAAa,EAAE,GAAG,CAAC,IAAI;gBACvB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW;gBACjC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;gBAC9B,UAAU;aACX,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC,MAA4C,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-new.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-new.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAKpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CAwD5F"}
1
+ {"version":3,"file":"sync-new.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-new.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AASpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CAwE5F"}
@@ -20,7 +20,7 @@
20
20
  * SOFTWARE.
21
21
  */
22
22
  import { z } from 'zod';
23
- import { createArticleScaffold } from '../../sync/new.js';
23
+ import { createArticleScaffold, checkRemoteDuplicateSlug, DuplicateSlugError, } from '../../sync/new.js';
24
24
  import { getLocalTaxonomiesSummary, formatTaxonomiesHint } from '../../sync/taxonomies.js';
25
25
  import { formatToolError } from '../tool-errors.js';
26
26
  export function registerSyncNewTool(server, resolveContext) {
@@ -47,6 +47,18 @@ export function registerSyncNewTool(server, resolveContext) {
47
47
  }
48
48
  try {
49
49
  const collection = args.collection || ctx.config.defaultCollection;
50
+ // Best-effort remote duplicate check if connected
51
+ if (ctx.origin && ctx.auth?.token) {
52
+ const remoteDup = await checkRemoteDuplicateSlug({
53
+ origin: ctx.origin,
54
+ token: ctx.auth.token,
55
+ collection,
56
+ slug: args.slug,
57
+ }).catch(() => null);
58
+ if (remoteDup) {
59
+ throw new DuplicateSlugError(remoteDup);
60
+ }
61
+ }
50
62
  const res = createArticleScaffold({
51
63
  slug: args.slug,
52
64
  workspaceRoot: ctx.root,
@@ -59,18 +71,19 @@ export function registerSyncNewTool(server, resolveContext) {
59
71
  const taxSummary = getLocalTaxonomiesSummary(ctx.root);
60
72
  const taxHint = formatTaxonomiesHint(taxSummary, { maxTags: 60 });
61
73
  const hintBlock = taxHint ? `\n\n${taxHint}` : '';
74
+ const metaSuffix = `\n\n_meta: ${JSON.stringify(ctx.meta)}`;
62
75
  return {
63
76
  content: [
64
77
  {
65
78
  type: 'text',
66
- text: `✅ Created new draft article '${args.slug}' (ID: ${res.id}) at ${res.filePath}.${hintBlock}\n\nYou can now edit the file directly and sync it with sync_push.`,
79
+ text: `✅ Created new draft article '${args.slug}' (ID: ${res.id}) at ${res.filePath}.${hintBlock}\n\nYou can now edit the file directly and sync it with sync_push.${metaSuffix}`,
67
80
  },
68
81
  ],
69
82
  };
70
83
  }
71
84
  catch (error) {
72
85
  // Slug validation, byline resolution, and taxonomy hint reads all fail here.
73
- return formatToolError(error);
86
+ return formatToolError(error, ctx?.meta);
74
87
  }
75
88
  });
76
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-new.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,cAA+B;IACpF,MAAM,CAAC,IAAI,CACT,UAAU,EACV,iRAAiR,EACjR;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtD,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mDAAmD,CAAC;QAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC3E,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wEAAwE,CAAC;QACrF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACrF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,GAAkB,CAAC;QACvB,IAAI,CAAC;YACH,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACnE,MAAM,GAAG,GAAG,qBAAqB,CAAC;gBAChC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,aAAa,EAAE,GAAG,CAAC,IAAI;gBACvB,UAAU;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa;gBAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gCAAgC,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,QAAQ,IAAI,SAAS,oEAAoE;qBACrK;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6EAA6E;YAC7E,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sync-new.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-new.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-pull.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-pull.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAapE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CA2R9F"}
1
+ {"version":3,"file":"sync-pull.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-pull.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAapE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CA6T9F"}
@@ -95,11 +95,13 @@ export function registerSyncPullTools(server, resolveContext) {
95
95
  catch (error) {
96
96
  return formatToolError(error);
97
97
  }
98
- const actionText = res.localEditsPreserved
99
- ? 'ℹ️ Local edits preserved (remote changes were NOT applied)'
100
- : res.skipped
101
- ? 'ℹ️ Article is already up-to-date'
102
- : '✅ Successfully pulled article';
98
+ const actionText = res.healed
99
+ ? '🛠️ Repaired frontmatter syntax (unpushed local body was strictly preserved)'
100
+ : res.localEditsPreserved
101
+ ? 'ℹ️ Local edits preserved (remote changes were NOT applied)'
102
+ : res.skipped
103
+ ? 'ℹ️ Article is already up-to-date'
104
+ : '✅ Successfully pulled article';
103
105
  const titleText = res.title ? ` "${res.title}"` : '';
104
106
  const warnLine = ctx.originWarning ? `\n\n${ctx.originWarning}` : '';
105
107
  const quarantineNotice = formatQuarantineNotice(res.quarantined);
@@ -108,11 +110,12 @@ export function registerSyncPullTools(server, resolveContext) {
108
110
  ? '\n\nYour local version is intact. Push it with sync_push to publish your edits, ' +
109
111
  'or re-run sync_pull with force: true to accept the remote version instead.'
110
112
  : '\n\nYou can now read or edit this local Markdown file directly.';
113
+ const metaSuffix = `\n\n_meta: ${JSON.stringify(ctx.meta)}`;
111
114
  return {
112
115
  content: [
113
116
  {
114
117
  type: 'text',
115
- text: `${actionText}${titleText} (${res.slug})\nFile path: ${res.filePath}\nStatus: ${res.status}${quarantineLine}${warnLine}${nextStep}`,
118
+ text: `${actionText}${titleText} (${res.slug})\nFile path: ${res.filePath}\nStatus: ${res.status}${quarantineLine}${warnLine}${nextStep}${metaSuffix}`,
116
119
  },
117
120
  ],
118
121
  };
@@ -192,17 +195,18 @@ export function registerSyncPullTools(server, resolveContext) {
192
195
  mediaMsg = `\nMedia: ${mediaResult.total} items (${mediaResult.downloaded} downloaded, ${mediaResult.skipped} up-to-date).`;
193
196
  }
194
197
  const warnLine = ctx.originWarning ? `\n\n${ctx.originWarning}` : '';
198
+ const metaSuffix = `\n\n_meta: ${JSON.stringify(ctx.meta)}`;
195
199
  return {
196
200
  content: [
197
201
  {
198
202
  type: 'text',
199
- text: `✅ Synced ${batchResult.total} articles (${batchResult.updated} updated, ${batchResult.skipped} up-to-date/skipped${deletedMsg}).${taxonomiesMsg}${mediaMsg}${preservedMsg}${quarantineMsg}${detailBlock}${warnLine}\n\nYou can now read or edit these local Markdown files directly.`,
203
+ text: `✅ Synced ${batchResult.total} articles (${batchResult.updated} updated, ${batchResult.skipped} up-to-date/skipped${deletedMsg}).${taxonomiesMsg}${mediaMsg}${preservedMsg}${quarantineMsg}${detailBlock}${warnLine}${metaSuffix}\n\nYou can now read or edit these local Markdown files directly.`,
200
204
  },
201
205
  ],
202
206
  };
203
207
  }
204
208
  catch (error) {
205
- return formatToolError(error);
209
+ return formatToolError(error, ctx?.meta);
206
210
  }
207
211
  });
208
212
  // sync_pull_taxonomies
@@ -228,11 +232,12 @@ export function registerSyncPullTools(server, resolveContext) {
228
232
  const statusLine = failNotes.length > 0
229
233
  ? `⚠️ Warning: Failed to fetch remote ${failNotes.join(' and ')} (preserved existing local definitions in categories/ and tags/).`
230
234
  : `✅ Successfully pulled taxonomies (${res.categoriesCount} categories, ${res.tagsCount} tags) into categories/ and tags/.`;
235
+ const metaSuffix = `\n\n_meta: ${JSON.stringify(ctx.meta)}`;
231
236
  return {
232
237
  content: [
233
238
  {
234
239
  type: 'text',
235
- text: `${statusLine}${hintBlock}`,
240
+ text: `${statusLine}${hintBlock}${metaSuffix}`,
236
241
  },
237
242
  ],
238
243
  };
@@ -242,7 +247,15 @@ export function registerSyncPullTools(server, resolveContext) {
242
247
  }
243
248
  });
244
249
  // sync_pull_media
245
- server.tool('sync_pull_media', 'Download remote media assets and companion YAML metadata into the local media/ directory (media/<yyyyMMdd>_<id>-<name>.<ext> and .yaml). Enables offline browsing and referencing of uploaded images.', {
250
+ server.tool('sync_pull_media', 'Download remote media assets and companion YAML metadata into the local media/ directory (media/<yyyyMMdd>_<id>-<name>.<ext> and .yaml). Can pull all media, a limited batch, or targeted media referenced by a specific article.', {
251
+ article: z
252
+ .string()
253
+ .optional()
254
+ .describe('Target article ULID or Markdown file path to pull only media referenced by that article'),
255
+ collection: z
256
+ .string()
257
+ .optional()
258
+ .describe('Collection name when using article (defaults to "posts")'),
246
259
  limit: z
247
260
  .number()
248
261
  .optional()
@@ -258,15 +271,32 @@ export function registerSyncPullTools(server, resolveContext) {
258
271
  origin: ctx.origin,
259
272
  token: ctx.auth.token,
260
273
  refreshToken: ctx.auth.refreshToken,
274
+ article: args.article,
275
+ collection: args.collection || ctx.config.defaultCollection,
261
276
  limit: args.limit || ctx.config.mediaSyncLimit || 300,
262
277
  all: args.all,
263
278
  downloadFiles: args.downloadFiles,
264
279
  });
280
+ const metaSuffix = `\n\n_meta: ${JSON.stringify(ctx.meta)}`;
281
+ if (args.article) {
282
+ const failedMsg = res.failed ? `, ${res.failed} failed` : '';
283
+ const idsList = res.mediaIds && res.mediaIds.length > 0
284
+ ? `\nMedia IDs: ${res.mediaIds.join(', ')}`
285
+ : '';
286
+ return {
287
+ content: [
288
+ {
289
+ type: 'text',
290
+ text: `✅ Successfully pulled media for article '${res.articleId || args.article}': ${res.total} referenced item(s) (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date${failedMsg}).${idsList}${metaSuffix}`,
291
+ },
292
+ ],
293
+ };
294
+ }
265
295
  return {
266
296
  content: [
267
297
  {
268
298
  type: 'text',
269
- text: `✅ Successfully pulled media: ${res.total} items (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date).`,
299
+ text: `✅ Successfully pulled media: ${res.total} items (${res.downloaded} downloaded, ${res.skipped} skipped/up-to-date).${metaSuffix}`,
270
300
  },
271
301
  ],
272
302
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sync-pull.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-pull.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-pull.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-push.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-push.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CAsF7F"}
1
+ {"version":3,"file":"sync-push.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-push.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CAyG7F"}
@@ -71,11 +71,24 @@ export function registerSyncPushTool(server, resolveContext) {
71
71
  if (res.previousFilePath) {
72
72
  transitionLines.push(`📄 Local file renamed: "${res.previousFilePath}" -> "${res.filePath}" (use the new path for subsequent edits/pushes).`);
73
73
  }
74
+ const taxonomyLines = [];
75
+ if (res.resolvedTaxonomies) {
76
+ for (const [tax, items] of Object.entries(res.resolvedTaxonomies)) {
77
+ if (Array.isArray(items)) {
78
+ for (const item of items) {
79
+ if (item.input !== item.resolved) {
80
+ taxonomyLines.push(`🏷️ Canonicalized ${tax}: '${item.input}' -> '${item.resolved}'.`);
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
74
86
  const allWarnings = [
75
87
  ...(ctx.originWarning ? [ctx.originWarning] : []),
76
88
  ...(res.warnings || []),
77
89
  ];
78
90
  const warningLines = allWarnings.length > 0 ? ['', '⚠️ Warnings:', ...allWarnings.map((w) => ` - ${w}`)] : [];
91
+ const metaSuffix = `\n\n_meta: ${JSON.stringify(ctx.meta)}`;
79
92
  return {
80
93
  content: [
81
94
  {
@@ -83,14 +96,15 @@ export function registerSyncPushTool(server, resolveContext) {
83
96
  text: [
84
97
  `✅ Successfully pushed '${res.id}' to remote (${res.filePath}, rev: ${res.rev}).`,
85
98
  ...transitionLines,
99
+ ...taxonomyLines,
86
100
  ...warningLines,
87
- ].join('\n'),
101
+ ].join('\n') + metaSuffix,
88
102
  },
89
103
  ],
90
104
  };
91
105
  }
92
106
  catch (err) {
93
- return formatToolError(err);
107
+ return formatToolError(err, ctx.meta);
94
108
  }
95
109
  });
96
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-push.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-push.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-status.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAMpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CA+E/F"}
1
+ {"version":3,"file":"sync-status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sync-status.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAWpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,CA2H/F"}
@@ -20,15 +20,29 @@
20
20
  * SOFTWARE.
21
21
  */
22
22
  import { z } from 'zod';
23
- import { getWorkspaceStatus } from '../../sync/status.js';
24
- import { formatToolError } from '../tool-errors.js';
25
- const MAX_INVALID_MCP_ITEMS = 10;
23
+ import { getWorkspaceStatus, filterStatusItems, } from '../../sync/status.js';
24
+ import { formatToolError, formatToolSuccess } from '../tool-errors.js';
25
+ const MAX_ACTION_REQUIRED = 30;
26
+ const MAX_RECENT_SYNCED = 5;
26
27
  export function registerSyncStatusTool(server, resolveContext) {
27
- server.tool('sync_status', 'Inspect local workspace sync status. Returns all tracked articles sorted newest-first (descending by date), with relative file paths (e.g. posts/published/YYYYMMDD_<id>-<title>.md), publication status (draft/published), and modification state (synced/modified/untracked/invalid). ALWAYS use this tool first to locate local files instead of querying remote APIs.', {
28
+ server.tool('sync_status', 'Inspect local workspace sync status with articles sorted newest-first. Returns a summary-first payload (concise summary, up to 30 action-required articles, and 5 recent synced articles) to conserve LLM context. Use "search" or "slugFilter" to find specific articles across the full workspace.', {
28
29
  collection: z
29
30
  .string()
30
31
  .optional()
31
32
  .describe('Collection name to inspect (defaults to "posts")'),
33
+ search: z
34
+ .string()
35
+ .optional()
36
+ .describe('Search query matching article title, slug, ID, or file path'),
37
+ slugFilter: z.string().optional().describe('Filter articles by exact or partial slug'),
38
+ status: z
39
+ .enum(['draft', 'published'])
40
+ .optional()
41
+ .describe('Filter by article publication status (draft or published)'),
42
+ syncStatus: z
43
+ .enum(['synced', 'modified', 'untracked', 'invalid'])
44
+ .optional()
45
+ .describe('Filter by synchronization state'),
32
46
  profile: z.string().optional().describe('Target profile name for multi-site setups'),
33
47
  }, async (args) => {
34
48
  // Resolve context inside the guard too: workspace/profile resolution can throw
@@ -49,20 +63,49 @@ export function registerSyncStatusTool(server, resolveContext) {
49
63
  catch (error) {
50
64
  return formatToolError(error);
51
65
  }
52
- // Cap invalid items in MCP output to prevent context window flooding when many files are broken
66
+ const isFiltered = Boolean(args.search || args.slugFilter || args.status || args.syncStatus);
67
+ const filteredList = isFiltered
68
+ ? filterStatusItems(status.items, {
69
+ search: args.search,
70
+ slugFilter: args.slugFilter,
71
+ status: args.status,
72
+ syncStatus: args.syncStatus,
73
+ })
74
+ : null;
75
+ // Extract action-required items (modified, invalid, untracked)
76
+ // Cap invalid items at 10 to prevent verbose error stack traces from blowing the token budget
77
+ const MAX_INVALID_MCP_ITEMS = 10;
53
78
  let invalidSeen = 0;
54
- const filteredItems = status.items.filter((item) => {
55
- if (item.syncStatus !== 'invalid')
56
- return true;
57
- invalidSeen++;
58
- return invalidSeen <= MAX_INVALID_MCP_ITEMS;
79
+ const cappedActionItems = status.items.filter((item) => {
80
+ if (item.syncStatus === 'synced')
81
+ return false;
82
+ if (item.syncStatus === 'invalid') {
83
+ invalidSeen++;
84
+ return invalidSeen <= MAX_INVALID_MCP_ITEMS;
85
+ }
86
+ return true;
59
87
  });
60
88
  const invalidTruncated = Math.max(0, status.summary.invalid - MAX_INVALID_MCP_ITEMS);
89
+ const actionRequired = cappedActionItems.slice(0, MAX_ACTION_REQUIRED);
90
+ const rawActionRequiredCount = status.items.filter((i) => i.syncStatus !== 'synced').length;
91
+ const actionRequiredTruncated = rawActionRequiredCount > MAX_ACTION_REQUIRED || invalidTruncated > 0;
92
+ // Extract recent synced articles
93
+ const allSynced = status.items.filter((item) => item.syncStatus === 'synced');
94
+ const recentArticles = allSynced.slice(0, MAX_RECENT_SYNCED);
95
+ const recentArticlesTruncated = allSynced.length > MAX_RECENT_SYNCED;
61
96
  const uncachedInvalid = status.items.filter((item) => item.syncStatus === 'invalid' && item.cached === false);
62
97
  const exampleUncachedId = uncachedInvalid.find((i) => i.id && i.id !== 'unknown')?.id || '<ULID>';
63
98
  const responsePayload = {
64
- items: filteredItems,
65
99
  summary: status.summary,
100
+ actionRequired,
101
+ actionRequiredTruncated,
102
+ recentArticles,
103
+ recentArticlesTruncated,
104
+ total: status.summary.total,
105
+ searchQuery: args.search || args.slugFilter || null,
106
+ ...(isFiltered ? { filteredArticles: filteredList } : {}),
107
+ // Fallback for callers expecting .items:
108
+ items: isFiltered ? filteredList : [...actionRequired, ...recentArticles],
66
109
  ...(ctx.originWarning ? { warnings: [ctx.originWarning] } : {}),
67
110
  ...(invalidTruncated > 0
68
111
  ? {
@@ -70,27 +113,25 @@ export function registerSyncStatusTool(server, resolveContext) {
70
113
  invalidNote: `...and ${invalidTruncated} more invalid frontmatter file(s) omitted to conserve context.`,
71
114
  }
72
115
  : {}),
116
+ ...(actionRequiredTruncated && invalidTruncated === 0
117
+ ? {
118
+ actionRequiredNote: `...and ${rawActionRequiredCount - MAX_ACTION_REQUIRED} more action-required item(s) omitted. Use search or slugFilter to narrow down.`,
119
+ }
120
+ : {}),
73
121
  ...(status.summary.invalid > 0
74
122
  ? {
75
123
  repairHint: uncachedInvalid.length > 0
76
- ? `Run sync_pull to automatically repair cached invalid frontmatter files. For ${uncachedInvalid.length} uncached file(s) outside the sliding window, run sync_pull with id: "${exampleUncachedId}" (or "emit pull ${exampleUncachedId}" in CLI).`
77
- : 'Run sync_pull (or "emit pull" in CLI) to automatically re-serialize and repair unquoted %-prefixed frontmatter files.',
124
+ ? `Run sync_pull to automatically repair cached invalid frontmatter (local body is strictly preserved). For ${uncachedInvalid.length} uncached file(s) outside the sliding window, run sync_pull with id: "${exampleUncachedId}" (or "emit pull ${exampleUncachedId}" in CLI).`
125
+ : 'Run sync_pull (or "emit pull" in CLI) to automatically re-serialize and repair frontmatter syntax (local body is strictly preserved).',
78
126
  }
79
127
  : {}),
80
128
  ...(status.summary.conflicts > 0
81
129
  ? {
82
- conflictsNote: `${status.summary.conflicts} preserved local copy(ies) exist in ${collection}/conflicts/ because a pull found content that diverged from the last synced baseline. Review each copy, merge valuable content manually, then delete it. Preserved copies are never pushed or pruned automatically, and sync_push refuses a posts/conflicts/ path with QUARANTINED_COPY_NOT_PUSHABLE.`,
130
+ conflictsNote: `${status.summary.conflicts} preserved local copy(ies) exist in ${collection}/conflicts/ (sync conflicts and deletion rescue backups are both preserved here). Review each copy, merge valuable content manually, or use sync_conflicts (action: 'list' | 'diff' | 'resolve'). Preserved copies are never pushed or pruned automatically, and sync_push refuses a posts/conflicts/ path with QUARANTINED_COPY_NOT_PUSHABLE.`,
83
131
  }
84
132
  : {}),
85
133
  };
86
- return {
87
- content: [
88
- {
89
- type: 'text',
90
- text: JSON.stringify(responsePayload, null, 2),
91
- },
92
- ],
93
- };
134
+ return formatToolSuccess(responsePayload, ctx.meta);
94
135
  });
95
136
  }
96
137
  //# sourceMappingURL=sync-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/sync-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { CacheDatabase } from '../db/cache.js';
2
+ export type ConflictFileType = 'conflict' | 'deleted' | 'unknown';
3
+ export interface ConflictItem {
4
+ filePath: string;
5
+ fileName: string;
6
+ type: ConflictFileType;
7
+ id?: string;
8
+ slug?: string;
9
+ title?: string;
10
+ status?: string;
11
+ canonicalPath?: string | null;
12
+ sizeBytes: number;
13
+ createdAt: string;
14
+ }
15
+ export interface ConflictDiffResult {
16
+ conflictFilePath: string;
17
+ canonicalFilePath: string | null;
18
+ type: ConflictFileType;
19
+ id?: string;
20
+ slug?: string;
21
+ hasDifferences: boolean;
22
+ additions: number;
23
+ deletions: number;
24
+ diffText: string;
25
+ }
26
+ export interface ConflictResolutionResult {
27
+ success: boolean;
28
+ strategy: 'accept-local' | 'accept-canonical';
29
+ conflictFilePath: string;
30
+ canonicalFilePath?: string | null;
31
+ message: string;
32
+ warnings?: string[];
33
+ }
34
+ export declare class CanonicalHasUnpushedEditsError extends Error {
35
+ code: string;
36
+ canonicalFilePath: string;
37
+ conflictFilePath: string;
38
+ id: string;
39
+ suggestion: string;
40
+ constructor(details: {
41
+ canonicalFilePath: string;
42
+ conflictFilePath: string;
43
+ id: string;
44
+ });
45
+ }
46
+ export declare class QuarantinedPathRequiredError extends Error {
47
+ code: string;
48
+ filePath: string;
49
+ collection: string;
50
+ suggestion: string;
51
+ constructor(details: {
52
+ filePath: string;
53
+ collection: string;
54
+ });
55
+ }
56
+ /**
57
+ * Strips the conflict/deletion suffix to recover the original article filename base.
58
+ * e.g. "20261108_01M6...-my-slug.conflict.md" -> "20261108_01M6...-my-slug"
59
+ * "20261108_01M6...-my-slug.deleted.md" -> "20261108_01M6...-my-slug"
60
+ */
61
+ export declare function extractBaseArticleName(fileName: string): string;
62
+ /**
63
+ * Resolves the canonical live file corresponding to a quarantined conflict or deleted backup.
64
+ */
65
+ export declare function findCanonicalArticlePath(workspaceRoot: string, baseName: string, articleId?: string, collection?: string): string | null;
66
+ /**
67
+ * Lists all quarantined conflict files and deleted rescue copies in posts/conflicts/.
68
+ */
69
+ export declare function listConflicts(workspaceRoot: string, collection?: string): ConflictItem[];
70
+ /**
71
+ * Computes a diff between the quarantined conflict/deleted copy and the canonical article.
72
+ */
73
+ export declare function diffConflict(options: {
74
+ workspaceRoot: string;
75
+ filePath: string;
76
+ collection?: string;
77
+ }): ConflictDiffResult;
78
+ /**
79
+ * Resolves a quarantined conflict file with either accept-local or accept-canonical strategy.
80
+ */
81
+ export declare function resolveConflict(options: {
82
+ workspaceRoot: string;
83
+ cache: CacheDatabase;
84
+ filePath: string;
85
+ strategy: 'accept-local' | 'accept-canonical';
86
+ force?: boolean;
87
+ collection?: string;
88
+ }): ConflictResolutionResult;
89
+ //# sourceMappingURL=conflicts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflicts.d.ts","sourceRoot":"","sources":["../../src/sync/conflicts.ts"],"names":[],"mappings":"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"}