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.
- package/CHANGELOG.md +154 -4
- package/dist/cli/commands/conflicts.d.ts.map +1 -1
- package/dist/cli/commands/conflicts.js +2 -22
- package/dist/cli/commands/conflicts.js.map +1 -1
- package/dist/cli/commands/delete.d.ts.map +1 -1
- package/dist/cli/commands/delete.js +1 -13
- package/dist/cli/commands/delete.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +1 -13
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/media.d.ts.map +1 -1
- package/dist/cli/commands/media.js +1 -13
- package/dist/cli/commands/media.js.map +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +1 -13
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/pull.d.ts +3 -3
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +142 -88
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +32 -90
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/context.d.ts +12 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +27 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/report-failure.d.ts +6 -0
- package/dist/cli/report-failure.d.ts.map +1 -0
- package/dist/cli/report-failure.js +71 -0
- package/dist/cli/report-failure.js.map +1 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +1 -1
- package/dist/client/api.js.map +1 -1
- package/dist/client/lock.js.map +1 -1
- package/dist/client/mapper.js.map +1 -1
- package/dist/client/media.d.ts.map +1 -1
- package/dist/client/media.js.map +1 -1
- package/dist/db/baseline.d.ts +16 -1
- package/dist/db/baseline.d.ts.map +1 -1
- package/dist/db/baseline.js +25 -0
- package/dist/db/baseline.js.map +1 -1
- package/dist/db/cache.d.ts +2 -3
- package/dist/db/cache.d.ts.map +1 -1
- package/dist/db/cache.js +3 -295
- package/dist/db/cache.js.map +1 -1
- package/dist/db/migrations.d.ts +7 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +320 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/mcp/heartbeat.d.ts +1 -34
- package/dist/mcp/heartbeat.d.ts.map +1 -1
- package/dist/mcp/heartbeat.js +1 -113
- package/dist/mcp/heartbeat.js.map +1 -1
- package/dist/mcp/tool-errors.d.ts +12 -1
- package/dist/mcp/tool-errors.d.ts.map +1 -1
- package/dist/mcp/tool-errors.js +29 -0
- package/dist/mcp/tool-errors.js.map +1 -1
- package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -1
- package/dist/mcp/tools/sync-conflicts.js +46 -58
- package/dist/mcp/tools/sync-conflicts.js.map +1 -1
- package/dist/mcp/tools/sync-delete.d.ts.map +1 -1
- package/dist/mcp/tools/sync-delete.js +18 -30
- package/dist/mcp/tools/sync-delete.js.map +1 -1
- package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
- package/dist/mcp/tools/sync-diff.js +10 -31
- package/dist/mcp/tools/sync-diff.js.map +1 -1
- package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
- package/dist/mcp/tools/sync-doctor.js +18 -30
- package/dist/mcp/tools/sync-doctor.js.map +1 -1
- package/dist/mcp/tools/sync-media-search.d.ts.map +1 -1
- package/dist/mcp/tools/sync-media-search.js +40 -52
- package/dist/mcp/tools/sync-media-search.js.map +1 -1
- package/dist/mcp/tools/sync-new.d.ts.map +1 -1
- package/dist/mcp/tools/sync-new.js +34 -55
- package/dist/mcp/tools/sync-new.js.map +1 -1
- package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
- package/dist/mcp/tools/sync-pull.js +202 -222
- package/dist/mcp/tools/sync-pull.js.map +1 -1
- package/dist/mcp/tools/sync-push.d.ts.map +1 -1
- package/dist/mcp/tools/sync-push.js +64 -84
- package/dist/mcp/tools/sync-push.js.map +1 -1
- package/dist/mcp/tools/sync-status.d.ts.map +1 -1
- package/dist/mcp/tools/sync-status.js +3 -13
- package/dist/mcp/tools/sync-status.js.map +1 -1
- package/dist/presentation/article_report.d.ts +5 -0
- package/dist/presentation/article_report.d.ts.map +1 -1
- package/dist/presentation/article_report.js +17 -0
- package/dist/presentation/article_report.js.map +1 -1
- package/dist/sync/baseline-reconstruction.d.ts +43 -0
- package/dist/sync/baseline-reconstruction.d.ts.map +1 -0
- package/dist/sync/baseline-reconstruction.js +103 -0
- package/dist/sync/baseline-reconstruction.js.map +1 -0
- package/dist/sync/bylines.d.ts +5 -0
- package/dist/sync/bylines.d.ts.map +1 -1
- package/dist/sync/bylines.js +29 -0
- package/dist/sync/bylines.js.map +1 -1
- package/dist/sync/conflicts.d.ts.map +1 -1
- package/dist/sync/conflicts.js +21 -4
- package/dist/sync/conflicts.js.map +1 -1
- package/dist/sync/delete.d.ts.map +1 -1
- package/dist/sync/delete.js +12 -1
- package/dist/sync/delete.js.map +1 -1
- package/dist/sync/diff.d.ts.map +1 -1
- package/dist/sync/diff.js +58 -27
- package/dist/sync/diff.js.map +1 -1
- package/dist/sync/doctor.d.ts.map +1 -1
- package/dist/sync/doctor.js +13 -3
- package/dist/sync/doctor.js.map +1 -1
- package/dist/sync/guards.d.ts +1 -1
- package/dist/sync/guards.d.ts.map +1 -1
- package/dist/sync/guards.js +2 -1
- package/dist/sync/guards.js.map +1 -1
- package/dist/sync/media/companions.d.ts.map +1 -1
- package/dist/sync/media/companions.js.map +1 -1
- package/dist/sync/media/naming_mirror.d.ts.map +1 -1
- package/dist/sync/media/naming_mirror.js +11 -2
- package/dist/sync/media/naming_mirror.js.map +1 -1
- package/dist/sync/media/pull_article.d.ts +2 -0
- package/dist/sync/media/pull_article.d.ts.map +1 -1
- package/dist/sync/media/pull_article.js +74 -25
- package/dist/sync/media/pull_article.js.map +1 -1
- package/dist/sync/media/pull_library.d.ts.map +1 -1
- package/dist/sync/media/pull_library.js +34 -61
- package/dist/sync/media/pull_library.js.map +1 -1
- package/dist/sync/media/remote_index.d.ts +16 -1
- package/dist/sync/media/remote_index.d.ts.map +1 -1
- package/dist/sync/media/remote_index.js +2 -2
- package/dist/sync/media/remote_index.js.map +1 -1
- package/dist/sync/merge.d.ts.map +1 -1
- package/dist/sync/merge.js +5 -5
- package/dist/sync/merge.js.map +1 -1
- package/dist/sync/new.d.ts.map +1 -1
- package/dist/sync/new.js +5 -4
- package/dist/sync/new.js.map +1 -1
- package/dist/sync/orchestrator.d.ts +39 -0
- package/dist/sync/orchestrator.d.ts.map +1 -1
- package/dist/sync/orchestrator.js +93 -80
- package/dist/sync/orchestrator.js.map +1 -1
- package/dist/sync/preflight/image_probe.d.ts +28 -0
- package/dist/sync/preflight/image_probe.d.ts.map +1 -0
- package/dist/sync/preflight/image_probe.js +70 -0
- package/dist/sync/preflight/image_probe.js.map +1 -0
- package/dist/sync/preflight.d.ts.map +1 -1
- package/dist/sync/preflight.js +48 -45
- package/dist/sync/preflight.js.map +1 -1
- package/dist/sync/pull/fast_path.d.ts +9 -0
- package/dist/sync/pull/fast_path.d.ts.map +1 -0
- package/dist/sync/pull/fast_path.js +383 -0
- package/dist/sync/pull/fast_path.js.map +1 -0
- package/dist/sync/pull/index.d.ts +15 -0
- package/dist/sync/pull/index.d.ts.map +1 -0
- package/dist/sync/pull/index.js +372 -0
- package/dist/sync/pull/index.js.map +1 -0
- package/dist/sync/pull/list.d.ts +22 -0
- package/dist/sync/pull/list.d.ts.map +1 -0
- package/dist/sync/pull/list.js +175 -0
- package/dist/sync/pull/list.js.map +1 -0
- package/dist/sync/pull/media_stage.d.ts +67 -0
- package/dist/sync/pull/media_stage.d.ts.map +1 -0
- package/dist/sync/pull/media_stage.js +599 -0
- package/dist/sync/pull/media_stage.js.map +1 -0
- package/dist/sync/pull/quarantine.d.ts +22 -0
- package/dist/sync/pull/quarantine.d.ts.map +1 -0
- package/dist/sync/pull/quarantine.js +174 -0
- package/dist/sync/pull/quarantine.js.map +1 -0
- package/dist/sync/pull/types.d.ts +135 -0
- package/dist/sync/pull/types.d.ts.map +1 -0
- package/dist/sync/pull/types.js +23 -0
- package/dist/sync/pull/types.js.map +1 -0
- package/dist/sync/pull.d.ts +1 -114
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +1 -861
- package/dist/sync/pull.js.map +1 -1
- package/dist/sync/push/commit.d.ts.map +1 -1
- package/dist/sync/push/commit.js +1 -2
- package/dist/sync/push/commit.js.map +1 -1
- package/dist/sync/push/index.d.ts.map +1 -1
- package/dist/sync/push/index.js +4 -3
- package/dist/sync/push/index.js.map +1 -1
- package/dist/sync/push/merge_stage.js +1 -1
- package/dist/sync/push/merge_stage.js.map +1 -1
- package/dist/sync/push/taxonomy_plan.d.ts +4 -0
- package/dist/sync/push/taxonomy_plan.d.ts.map +1 -1
- package/dist/sync/push/taxonomy_plan.js +22 -10
- package/dist/sync/push/taxonomy_plan.js.map +1 -1
- package/dist/sync/push/transport.d.ts +1 -1
- package/dist/sync/push/transport.d.ts.map +1 -1
- package/dist/sync/push/transport.js +1 -1
- package/dist/sync/push/transport.js.map +1 -1
- package/dist/sync/status.d.ts.map +1 -1
- package/dist/sync/status.js +11 -57
- package/dist/sync/status.js.map +1 -1
- package/dist/sync/taxonomies.d.ts +45 -0
- package/dist/sync/taxonomies.d.ts.map +1 -1
- package/dist/sync/taxonomies.js +258 -119
- package/dist/sync/taxonomies.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/mcp-heartbeat.d.ts +36 -0
- package/dist/utils/mcp-heartbeat.d.ts.map +1 -0
- package/dist/utils/mcp-heartbeat.js +126 -0
- package/dist/utils/mcp-heartbeat.js.map +1 -0
- package/dist/utils/media-body-refs.d.ts.map +1 -1
- package/dist/utils/media-body-refs.js +2 -2
- package/dist/utils/media-body-refs.js.map +1 -1
- package/dist/utils/taxonomy-key.d.ts +44 -0
- package/dist/utils/taxonomy-key.d.ts.map +1 -0
- package/dist/utils/taxonomy-key.js +63 -0
- package/dist/utils/taxonomy-key.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type TaxonomyCandidates } from '../utils/frontmatter.js';
|
|
2
|
+
import { type PrunedTaxonomiesDetail, type TaxonomyLookupMaps } from '../utils/taxonomy-key.js';
|
|
3
|
+
export type { PrunedTaxonomiesDetail, TaxonomyLookupMaps };
|
|
2
4
|
export interface TaxonomyTerm {
|
|
3
5
|
id: string;
|
|
4
6
|
name?: string;
|
|
@@ -37,7 +39,14 @@ export interface PullTaxonomiesResult {
|
|
|
37
39
|
export declare function pullTaxonomies(options: PullTaxonomiesOptions): Promise<PullTaxonomiesResult>;
|
|
38
40
|
export interface LocalTaxonomyItem {
|
|
39
41
|
id: string;
|
|
42
|
+
/** Human-readable decoded slug for disk and prompts (e.g. 'ローカルガイド' or 'camera') */
|
|
40
43
|
slug: string;
|
|
44
|
+
/**
|
|
45
|
+
* Raw server canonical slug for Layer A transport/hashes (e.g. '%e3%83...' or 'camera').
|
|
46
|
+
* Optional in interface to preserve compatibility with hand-authored fixtures,
|
|
47
|
+
* but guaranteed to be populated by readTaxonomyDir() (defaults to slug when omitted).
|
|
48
|
+
*/
|
|
49
|
+
canonicalSlug?: string;
|
|
41
50
|
name: string;
|
|
42
51
|
parentId?: string | null;
|
|
43
52
|
count?: number;
|
|
@@ -57,6 +66,18 @@ export declare const DEFAULT_MAX_CATEGORIES = 50;
|
|
|
57
66
|
* Single source of truth for reading local category and tag YAML files.
|
|
58
67
|
*/
|
|
59
68
|
export declare function readTaxonomyDir(dir: string): LocalTaxonomyItem[];
|
|
69
|
+
/**
|
|
70
|
+
* Deterministic collision winner ordering: highest count first, ties broken by newest ULID (descending).
|
|
71
|
+
* Shared between Layer A (`loadLocalTaxonomyMaps`) and Layer B (`getLocalTaxonomiesSummary`)
|
|
72
|
+
* so duplicate canonical/decoded slugs always resolve to the identical winner term ID.
|
|
73
|
+
*/
|
|
74
|
+
export declare function compareTaxonomyTermDeterministically(a: {
|
|
75
|
+
id: string;
|
|
76
|
+
count?: number;
|
|
77
|
+
}, b: {
|
|
78
|
+
id: string;
|
|
79
|
+
count?: number;
|
|
80
|
+
}): number;
|
|
60
81
|
/**
|
|
61
82
|
* Loads local taxonomy mapping between term ULID and slug from categories/ and tags/ directories.
|
|
62
83
|
*/
|
|
@@ -75,6 +96,12 @@ export declare function loadLocalTaxonomyMaps(workspaceRoot: string): {
|
|
|
75
96
|
* Single source of truth for taxonomy candidate resolution across pull, push, and diff.
|
|
76
97
|
*/
|
|
77
98
|
export declare function loadLocalTaxonomyCandidates(workspaceRoot: string): TaxonomyCandidates;
|
|
99
|
+
/**
|
|
100
|
+
* Sorts taxonomy terms deterministically and deduplicates by slug, keeping the winner term.
|
|
101
|
+
* Mode 'slug-grouped' orders by slug ASC first (used for categories display).
|
|
102
|
+
* Mode 'frequency' orders by highest count first, newest ULID break (used for tags display).
|
|
103
|
+
*/
|
|
104
|
+
export declare function dedupeTermsBySlug(items: LocalTaxonomyItem[], mode?: 'slug-grouped' | 'frequency'): LocalTaxonomyItem[];
|
|
78
105
|
/**
|
|
79
106
|
* Reads local categories/ and tags/ YAML definitions and returns structured summary.
|
|
80
107
|
* Tags are sorted by count descending (most used first), then by ULID descending (newest first).
|
|
@@ -97,4 +124,22 @@ export declare function levenshteinDistance(a: string, b: string): number;
|
|
|
97
124
|
* Returns formatted suggestions (e.g. `未分類 -> "%e6%9c%aa%e5%88%86%e9%a1%9e"` or `"diary"`).
|
|
98
125
|
*/
|
|
99
126
|
export declare function findClosestTaxonomySuggestions(input: string, items: LocalTaxonomyItem[], maxSuggestions?: number): string[];
|
|
127
|
+
/**
|
|
128
|
+
* Checks whether frontmatter contains taxonomy terms that no longer exist in local definitions.
|
|
129
|
+
*/
|
|
130
|
+
export declare function carriesPrunedTaxonomies(taxonomies: Record<string, string[]> | undefined, maps: TaxonomyLookupMaps): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Filters out pruned taxonomy terms, preserving valid terms.
|
|
133
|
+
* If all terms in a taxonomy are pruned, keeps an explicit empty array [] so remote cleanup can execute.
|
|
134
|
+
*/
|
|
135
|
+
export declare function pruneNonexistentTaxonomies(taxonomies: Record<string, string[]> | undefined, maps: TaxonomyLookupMaps): {
|
|
136
|
+
prunedTaxonomies: Record<string, string[]>;
|
|
137
|
+
removedTerms: PrunedTaxonomiesDetail;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Normalizes taxonomies for Layer A (base_snapshots.frontmatter_yaml).
|
|
141
|
+
* CRITICAL: Preserves ULID inputs verbatim (protecting loser terms in slug collisions),
|
|
142
|
+
* and resolves slug/name inputs to canonical slugs.
|
|
143
|
+
*/
|
|
144
|
+
export declare function canonicalizeTaxonomiesForBaseline(taxonomies: Record<string, string[]>, maps: TaxonomyLookupMaps): Record<string, string[]>;
|
|
100
145
|
//# sourceMappingURL=taxonomies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomies.d.ts","sourceRoot":"","sources":["../../src/sync/taxonomies.ts"],"names":[],"mappings":"AAyBA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"taxonomies.d.ts","sourceRoot":"","sources":["../../src/sync/taxonomies.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/taxonomies.js
CHANGED
|
@@ -23,6 +23,7 @@ import fs from 'node:fs';
|
|
|
23
23
|
import path from 'node:path';
|
|
24
24
|
import yaml from 'js-yaml';
|
|
25
25
|
import { formatYamlScalar, sanitizeTitleForFilename, tryDecodeTaxonomyTerm, } from '../utils/frontmatter.js';
|
|
26
|
+
import { aliasesOf, canonicalSlugOf, isKnownTaxonomyTerm, } from '../utils/taxonomy-key.js';
|
|
26
27
|
/**
|
|
27
28
|
* Recursively flattens hierarchical taxonomy terms (parent terms with nested children)
|
|
28
29
|
* preserving parentId for each child.
|
|
@@ -53,6 +54,64 @@ import { ApiError } from '../client/error.js';
|
|
|
53
54
|
import { createAuthedFetch } from '../client/http.js';
|
|
54
55
|
import { unwrapEnvelope } from '../client/api.js';
|
|
55
56
|
import { taxonomiesTermsEndpoint } from '../client/endpoints.js';
|
|
57
|
+
/**
|
|
58
|
+
* Serializes a category or tag definition to YAML.
|
|
59
|
+
* Emits decoded slug on disk and keeps raw percent-encoded slug as canonicalSlug when they differ.
|
|
60
|
+
* Uses formatYamlScalar to prevent type coercion of reserved words or numeric strings,
|
|
61
|
+
* and ensures 1-line scalar output to prevent js-yaml folded blocks (> -).
|
|
62
|
+
*/
|
|
63
|
+
function serializeTaxonomyYaml(doc) {
|
|
64
|
+
const lines = [
|
|
65
|
+
`id: ${formatYamlScalar(doc.id)}`,
|
|
66
|
+
`name: ${formatYamlScalar(doc.name)}`,
|
|
67
|
+
`slug: ${formatYamlScalar(doc.slug)}`,
|
|
68
|
+
];
|
|
69
|
+
if (doc.canonicalSlug && doc.canonicalSlug !== doc.slug) {
|
|
70
|
+
lines.push(`canonicalSlug: ${formatYamlScalar(doc.canonicalSlug)}`);
|
|
71
|
+
}
|
|
72
|
+
lines.push(`taxonomy: ${formatYamlScalar(doc.taxonomy)}`);
|
|
73
|
+
lines.push(`parentId: ${doc.parentId ? formatYamlScalar(doc.parentId) : 'null'}`);
|
|
74
|
+
lines.push(`count: ${doc.count}`);
|
|
75
|
+
return lines.join('\n') + '\n';
|
|
76
|
+
}
|
|
77
|
+
function writeAndPruneTaxonomyDir(params) {
|
|
78
|
+
fs.mkdirSync(params.dir, { recursive: true });
|
|
79
|
+
const activeFileNames = new Set();
|
|
80
|
+
for (const item of params.items) {
|
|
81
|
+
const label = item.label || item.slug;
|
|
82
|
+
const sanitized = sanitizeTitleForFilename(label);
|
|
83
|
+
const fileName = `${item.id}-${sanitized}.yaml`;
|
|
84
|
+
activeFileNames.add(fileName);
|
|
85
|
+
const filePath = path.join(params.dir, fileName);
|
|
86
|
+
const rawSlug = item.slug;
|
|
87
|
+
const decodedSlug = tryDecodeTaxonomyTerm(rawSlug);
|
|
88
|
+
const doc = {
|
|
89
|
+
id: item.id,
|
|
90
|
+
name: label,
|
|
91
|
+
slug: decodedSlug,
|
|
92
|
+
...(decodedSlug !== rawSlug ? { canonicalSlug: rawSlug } : {}),
|
|
93
|
+
taxonomy: params.taxonomy,
|
|
94
|
+
parentId: item.parentId || null,
|
|
95
|
+
count: item.count ?? 0,
|
|
96
|
+
};
|
|
97
|
+
fs.writeFileSync(filePath, serializeTaxonomyYaml(doc), 'utf8');
|
|
98
|
+
}
|
|
99
|
+
let deletedCount = 0;
|
|
100
|
+
if (fs.existsSync(params.dir)) {
|
|
101
|
+
for (const file of fs.readdirSync(params.dir)) {
|
|
102
|
+
if (file.endsWith('.yaml') && !activeFileNames.has(file)) {
|
|
103
|
+
try {
|
|
104
|
+
fs.unlinkSync(path.join(params.dir, file));
|
|
105
|
+
deletedCount++;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Ignore unlink errors
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { count: params.items.length, deletedCount };
|
|
114
|
+
}
|
|
56
115
|
/**
|
|
57
116
|
* Pulls categories and tags from EmDash API and saves them to local YAML files:
|
|
58
117
|
* categories/<id>-<sanitizedLabel>.yaml
|
|
@@ -95,77 +154,25 @@ export async function pullTaxonomies(options) {
|
|
|
95
154
|
let deletedCategoriesCount = 0;
|
|
96
155
|
// Save categories and prune deleted ones (only if fetch succeeded; preserve on failure)
|
|
97
156
|
if (categories !== null) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
activeCategoryFileNames.add(fileName);
|
|
106
|
-
const filePath = path.join(categoriesDir, fileName);
|
|
107
|
-
const doc = {
|
|
108
|
-
id: cat.id,
|
|
109
|
-
name: label,
|
|
110
|
-
slug: cat.slug,
|
|
111
|
-
taxonomy: 'category',
|
|
112
|
-
parentId: cat.parentId || null,
|
|
113
|
-
count: cat.count ?? 0,
|
|
114
|
-
};
|
|
115
|
-
fs.writeFileSync(filePath, yaml.dump(doc, { indent: 2, quotingType: '"', forceQuotes: false }), 'utf8');
|
|
116
|
-
}
|
|
117
|
-
// Prune local category YAMLs not present on remote
|
|
118
|
-
if (fs.existsSync(categoriesDir)) {
|
|
119
|
-
for (const file of fs.readdirSync(categoriesDir)) {
|
|
120
|
-
if (file.endsWith('.yaml') && !activeCategoryFileNames.has(file)) {
|
|
121
|
-
try {
|
|
122
|
-
fs.unlinkSync(path.join(categoriesDir, file));
|
|
123
|
-
deletedCategoriesCount++;
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
// Ignore unlink errors
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
157
|
+
const res = writeAndPruneTaxonomyDir({
|
|
158
|
+
dir: categoriesDir,
|
|
159
|
+
items: categories,
|
|
160
|
+
taxonomy: 'category',
|
|
161
|
+
});
|
|
162
|
+
categoriesCount = res.count;
|
|
163
|
+
deletedCategoriesCount = res.deletedCount;
|
|
131
164
|
}
|
|
132
165
|
let tagsCount = 0;
|
|
133
166
|
let deletedTagsCount = 0;
|
|
134
167
|
// Save tags and prune deleted ones (only if fetch succeeded; preserve on failure)
|
|
135
168
|
if (tags !== null) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
activeTagFileNames.add(fileName);
|
|
144
|
-
const filePath = path.join(tagsDir, fileName);
|
|
145
|
-
const doc = {
|
|
146
|
-
id: tag.id,
|
|
147
|
-
name: label,
|
|
148
|
-
slug: tag.slug,
|
|
149
|
-
taxonomy: 'tag',
|
|
150
|
-
parentId: tag.parentId || null,
|
|
151
|
-
count: tag.count ?? 0,
|
|
152
|
-
};
|
|
153
|
-
fs.writeFileSync(filePath, yaml.dump(doc, { indent: 2, quotingType: '"', forceQuotes: false }), 'utf8');
|
|
154
|
-
}
|
|
155
|
-
// Prune local tag YAMLs not present on remote
|
|
156
|
-
if (fs.existsSync(tagsDir)) {
|
|
157
|
-
for (const file of fs.readdirSync(tagsDir)) {
|
|
158
|
-
if (file.endsWith('.yaml') && !activeTagFileNames.has(file)) {
|
|
159
|
-
try {
|
|
160
|
-
fs.unlinkSync(path.join(tagsDir, file));
|
|
161
|
-
deletedTagsCount++;
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
// Ignore unlink errors
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
+
const res = writeAndPruneTaxonomyDir({
|
|
170
|
+
dir: tagsDir,
|
|
171
|
+
items: tags,
|
|
172
|
+
taxonomy: 'tag',
|
|
173
|
+
});
|
|
174
|
+
tagsCount = res.count;
|
|
175
|
+
deletedTagsCount = res.deletedCount;
|
|
169
176
|
}
|
|
170
177
|
return {
|
|
171
178
|
categoriesCount,
|
|
@@ -193,10 +200,35 @@ export function readTaxonomyDir(dir) {
|
|
|
193
200
|
const content = fs.readFileSync(path.join(dir, file), 'utf8');
|
|
194
201
|
const data = yaml.load(content);
|
|
195
202
|
if (data && typeof data.id === 'string' && typeof data.slug === 'string') {
|
|
203
|
+
const rawSlug = String(data.slug).trim();
|
|
204
|
+
if (!rawSlug)
|
|
205
|
+
continue;
|
|
206
|
+
const rawCanonical = typeof data.canonicalSlug === 'string' && data.canonicalSlug.trim()
|
|
207
|
+
? data.canonicalSlug.trim()
|
|
208
|
+
: undefined;
|
|
209
|
+
let slug;
|
|
210
|
+
let canonicalSlug;
|
|
211
|
+
if (rawCanonical && rawSlug) {
|
|
212
|
+
// New format (v0.1.26): canonicalSlug is explicit
|
|
213
|
+
slug = rawSlug;
|
|
214
|
+
canonicalSlug = rawCanonical;
|
|
215
|
+
}
|
|
216
|
+
else if (rawSlug.includes('%')) {
|
|
217
|
+
// Legacy format (v0.1.25): slug is percent-encoded
|
|
218
|
+
const decoded = tryDecodeTaxonomyTerm(rawSlug);
|
|
219
|
+
slug = decoded;
|
|
220
|
+
canonicalSlug = rawSlug;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// Standard ASCII slug
|
|
224
|
+
slug = rawSlug;
|
|
225
|
+
canonicalSlug = rawSlug;
|
|
226
|
+
}
|
|
196
227
|
items.push({
|
|
197
228
|
id: data.id,
|
|
198
|
-
slug
|
|
199
|
-
|
|
229
|
+
slug,
|
|
230
|
+
canonicalSlug,
|
|
231
|
+
name: typeof data.name === 'string' ? data.name : slug,
|
|
200
232
|
parentId: typeof data.parentId === 'string' ? data.parentId : null,
|
|
201
233
|
count: typeof data.count === 'number' ? data.count : undefined,
|
|
202
234
|
});
|
|
@@ -212,33 +244,38 @@ export function readTaxonomyDir(dir) {
|
|
|
212
244
|
return [];
|
|
213
245
|
}
|
|
214
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Deterministic collision winner ordering: highest count first, ties broken by newest ULID (descending).
|
|
249
|
+
* Shared between Layer A (`loadLocalTaxonomyMaps`) and Layer B (`getLocalTaxonomiesSummary`)
|
|
250
|
+
* so duplicate canonical/decoded slugs always resolve to the identical winner term ID.
|
|
251
|
+
*/
|
|
252
|
+
export function compareTaxonomyTermDeterministically(a, b) {
|
|
253
|
+
const countDiff = (b.count ?? 0) - (a.count ?? 0);
|
|
254
|
+
if (countDiff !== 0)
|
|
255
|
+
return countDiff;
|
|
256
|
+
return b.id < a.id ? -1 : b.id > a.id ? 1 : 0;
|
|
257
|
+
}
|
|
215
258
|
/**
|
|
216
259
|
* Loads local taxonomy mapping between term ULID and slug from categories/ and tags/ directories.
|
|
217
260
|
*/
|
|
218
261
|
export function loadLocalTaxonomyMaps(workspaceRoot) {
|
|
219
262
|
const catItems = readTaxonomyDir(path.join(workspaceRoot, 'categories'));
|
|
220
263
|
const tagItems = readTaxonomyDir(path.join(workspaceRoot, 'tags'));
|
|
221
|
-
|
|
222
|
-
// Ensures the chosen mapping for duplicate slugs matches getLocalTaxonomiesSummary.
|
|
223
|
-
const sortDeterministically = (items) => [...items].sort((a, b) => {
|
|
224
|
-
const countDiff = (b.count ?? 0) - (a.count ?? 0);
|
|
225
|
-
if (countDiff !== 0)
|
|
226
|
-
return countDiff;
|
|
227
|
-
return b.id < a.id ? -1 : b.id > a.id ? 1 : 0;
|
|
228
|
-
});
|
|
264
|
+
const sortDeterministically = (items) => [...items].sort(compareTaxonomyTermDeterministically);
|
|
229
265
|
const toMaps = (items) => {
|
|
230
266
|
const slugToId = {};
|
|
231
267
|
const idToSlug = {};
|
|
232
268
|
const sorted = sortDeterministically(items);
|
|
233
|
-
// 1
|
|
269
|
+
// Phase 1: Register canonical slugs first (Track 1 / Layer A truth)
|
|
234
270
|
for (const item of sorted) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
271
|
+
const canonical = canonicalSlugOf(item);
|
|
272
|
+
idToSlug[item.id] = canonical;
|
|
273
|
+
if (!slugToId[canonical]) {
|
|
274
|
+
slugToId[canonical] = item.id;
|
|
238
275
|
}
|
|
239
276
|
}
|
|
240
|
-
// 2
|
|
241
|
-
// Only register an alias if it does not collide with
|
|
277
|
+
// Phase 2: Collect candidate aliases (decoded slug and human-readable name)
|
|
278
|
+
// Only register an alias if it does not collide with ANY canonical slug and maps uniquely to 1 term ID.
|
|
242
279
|
const aliasToIds = new Map();
|
|
243
280
|
const recordAliasCandidate = (alias, id) => {
|
|
244
281
|
if (!alias || !alias.trim())
|
|
@@ -253,14 +290,10 @@ export function loadLocalTaxonomyMaps(workspaceRoot) {
|
|
|
253
290
|
};
|
|
254
291
|
for (const item of sorted) {
|
|
255
292
|
recordAliasCandidate(item.name, item.id);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
// Ignore malformed percent-encoding (URIError)
|
|
263
|
-
}
|
|
293
|
+
const canonical = canonicalSlugOf(item);
|
|
294
|
+
const isCanonicalOwner = slugToId[canonical] === item.id;
|
|
295
|
+
if (isCanonicalOwner && item.slug && item.slug !== canonical) {
|
|
296
|
+
recordAliasCandidate(item.slug, item.id);
|
|
264
297
|
}
|
|
265
298
|
}
|
|
266
299
|
for (const [alias, ids] of aliasToIds.entries()) {
|
|
@@ -299,6 +332,9 @@ export function loadLocalTaxonomyCandidates(workspaceRoot) {
|
|
|
299
332
|
if (decoded !== c.slug) {
|
|
300
333
|
catMap[decoded] = c.name;
|
|
301
334
|
}
|
|
335
|
+
if (c.canonicalSlug && c.canonicalSlug !== c.slug) {
|
|
336
|
+
catMap[c.canonicalSlug] = c.name;
|
|
337
|
+
}
|
|
302
338
|
}
|
|
303
339
|
}
|
|
304
340
|
const tagMap = {};
|
|
@@ -309,11 +345,14 @@ export function loadLocalTaxonomyCandidates(workspaceRoot) {
|
|
|
309
345
|
if (decoded !== t.slug) {
|
|
310
346
|
tagMap[decoded] = t.name;
|
|
311
347
|
}
|
|
348
|
+
if (t.canonicalSlug && t.canonicalSlug !== t.slug) {
|
|
349
|
+
tagMap[t.canonicalSlug] = t.name;
|
|
350
|
+
}
|
|
312
351
|
}
|
|
313
352
|
}
|
|
314
353
|
return {
|
|
315
|
-
categories: Array.from(new Set(summary.categories.
|
|
316
|
-
tags: Array.from(new Set(summary.tags.
|
|
354
|
+
categories: Array.from(new Set(summary.categories.flatMap((c) => aliasesOf(c)))),
|
|
355
|
+
tags: Array.from(new Set(summary.tags.flatMap((t) => aliasesOf(t)))),
|
|
317
356
|
slugToName: {
|
|
318
357
|
category: catMap,
|
|
319
358
|
tag: tagMap,
|
|
@@ -328,6 +367,31 @@ export function loadLocalTaxonomyCandidates(workspaceRoot) {
|
|
|
328
367
|
};
|
|
329
368
|
}
|
|
330
369
|
}
|
|
370
|
+
/**
|
|
371
|
+
* Sorts taxonomy terms deterministically and deduplicates by slug, keeping the winner term.
|
|
372
|
+
* Mode 'slug-grouped' orders by slug ASC first (used for categories display).
|
|
373
|
+
* Mode 'frequency' orders by highest count first, newest ULID break (used for tags display).
|
|
374
|
+
*/
|
|
375
|
+
export function dedupeTermsBySlug(items, mode = 'frequency') {
|
|
376
|
+
const sorted = [...items].sort((a, b) => {
|
|
377
|
+
if (mode === 'slug-grouped') {
|
|
378
|
+
if (a.slug < b.slug)
|
|
379
|
+
return -1;
|
|
380
|
+
if (a.slug > b.slug)
|
|
381
|
+
return 1;
|
|
382
|
+
}
|
|
383
|
+
return compareTaxonomyTermDeterministically(a, b);
|
|
384
|
+
});
|
|
385
|
+
const seen = new Set();
|
|
386
|
+
const result = [];
|
|
387
|
+
for (const item of sorted) {
|
|
388
|
+
if (!seen.has(item.slug)) {
|
|
389
|
+
seen.add(item.slug);
|
|
390
|
+
result.push(item);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return result;
|
|
394
|
+
}
|
|
331
395
|
/**
|
|
332
396
|
* Reads local categories/ and tags/ YAML definitions and returns structured summary.
|
|
333
397
|
* Tags are sorted by count descending (most used first), then by ULID descending (newest first).
|
|
@@ -337,34 +401,12 @@ export function loadLocalTaxonomyCandidates(workspaceRoot) {
|
|
|
337
401
|
export function getLocalTaxonomiesSummary(workspaceRoot) {
|
|
338
402
|
const categoriesDir = path.join(workspaceRoot, 'categories');
|
|
339
403
|
const tagsDir = path.join(workspaceRoot, 'tags');
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
if (!seen.has(item.slug)) {
|
|
345
|
-
seen.add(item.slug);
|
|
346
|
-
result.push(item);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
return result;
|
|
350
|
-
};
|
|
351
|
-
const categories = dedupeBySlug(readTaxonomyDir(categoriesDir).sort((a, b) => {
|
|
352
|
-
if (a.slug < b.slug)
|
|
353
|
-
return -1;
|
|
354
|
-
if (a.slug > b.slug)
|
|
355
|
-
return 1;
|
|
356
|
-
const countDiff = (b.count ?? 0) - (a.count ?? 0);
|
|
357
|
-
if (countDiff !== 0)
|
|
358
|
-
return countDiff;
|
|
359
|
-
return b.id < a.id ? -1 : b.id > a.id ? 1 : 0;
|
|
360
|
-
}));
|
|
404
|
+
// Primary sort key `slug` asc orders distinct categories for display; within identical `slug` groups
|
|
405
|
+
// (`a.slug === b.slug`), `compareTaxonomyTermDeterministically` decides the winner kept by `dedupeTermsBySlug`,
|
|
406
|
+
// guaranteeing 100% winner parity with `loadLocalTaxonomyMaps`.
|
|
407
|
+
const categories = dedupeTermsBySlug(readTaxonomyDir(categoriesDir), 'slug-grouped');
|
|
361
408
|
// Sort tags: highest count (usage frequency) first; ties broken by newest ULID (descending)
|
|
362
|
-
const tags =
|
|
363
|
-
const countDiff = (b.count ?? 0) - (a.count ?? 0);
|
|
364
|
-
if (countDiff !== 0)
|
|
365
|
-
return countDiff;
|
|
366
|
-
return b.id < a.id ? -1 : b.id > a.id ? 1 : 0;
|
|
367
|
-
}));
|
|
409
|
+
const tags = dedupeTermsBySlug(readTaxonomyDir(tagsDir), 'frequency');
|
|
368
410
|
return { categories, tags };
|
|
369
411
|
}
|
|
370
412
|
/**
|
|
@@ -471,4 +513,101 @@ export function findClosestTaxonomySuggestions(input, items, maxSuggestions = 3)
|
|
|
471
513
|
}
|
|
472
514
|
return uniqueDisplays;
|
|
473
515
|
}
|
|
516
|
+
/**
|
|
517
|
+
* Checks whether frontmatter contains taxonomy terms that no longer exist in local definitions.
|
|
518
|
+
*/
|
|
519
|
+
export function carriesPrunedTaxonomies(taxonomies, maps) {
|
|
520
|
+
if (!taxonomies)
|
|
521
|
+
return false;
|
|
522
|
+
for (const [taxName, terms] of Object.entries(taxonomies)) {
|
|
523
|
+
if (taxName !== 'category' &&
|
|
524
|
+
taxName !== 'tag' &&
|
|
525
|
+
taxName !== 'categories' &&
|
|
526
|
+
taxName !== 'tags') {
|
|
527
|
+
continue;
|
|
528
|
+
}
|
|
529
|
+
const kind = taxName === 'categories' || taxName === 'category' ? 'category' : 'tag';
|
|
530
|
+
if (!Array.isArray(terms))
|
|
531
|
+
continue;
|
|
532
|
+
for (const term of terms) {
|
|
533
|
+
if (!isKnownTaxonomyTerm(term, kind, maps)) {
|
|
534
|
+
return true;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
return false;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Filters out pruned taxonomy terms, preserving valid terms.
|
|
542
|
+
* If all terms in a taxonomy are pruned, keeps an explicit empty array [] so remote cleanup can execute.
|
|
543
|
+
*/
|
|
544
|
+
export function pruneNonexistentTaxonomies(taxonomies, maps) {
|
|
545
|
+
const prunedTaxonomies = {};
|
|
546
|
+
const removedTerms = {};
|
|
547
|
+
if (!taxonomies)
|
|
548
|
+
return { prunedTaxonomies, removedTerms };
|
|
549
|
+
for (const [key, terms] of Object.entries(taxonomies)) {
|
|
550
|
+
if (!Array.isArray(terms))
|
|
551
|
+
continue;
|
|
552
|
+
const kind = key === 'categories' || key === 'category'
|
|
553
|
+
? 'category'
|
|
554
|
+
: key === 'tags' || key === 'tag'
|
|
555
|
+
? 'tag'
|
|
556
|
+
: null;
|
|
557
|
+
if (!kind) {
|
|
558
|
+
prunedTaxonomies[key] = [...terms];
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
const retained = [];
|
|
562
|
+
const removed = [];
|
|
563
|
+
for (const term of terms) {
|
|
564
|
+
if (isKnownTaxonomyTerm(term, kind, maps)) {
|
|
565
|
+
retained.push(term);
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
removed.push(term);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
prunedTaxonomies[key] = retained;
|
|
572
|
+
if (removed.length > 0) {
|
|
573
|
+
if (kind === 'category') {
|
|
574
|
+
removedTerms.categories = [...(removedTerms.categories ?? []), ...removed];
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
removedTerms.tags = [...(removedTerms.tags ?? []), ...removed];
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
return { prunedTaxonomies, removedTerms };
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Normalizes taxonomies for Layer A (base_snapshots.frontmatter_yaml).
|
|
585
|
+
* CRITICAL: Preserves ULID inputs verbatim (protecting loser terms in slug collisions),
|
|
586
|
+
* and resolves slug/name inputs to canonical slugs.
|
|
587
|
+
*/
|
|
588
|
+
export function canonicalizeTaxonomiesForBaseline(taxonomies, maps) {
|
|
589
|
+
const canon = {};
|
|
590
|
+
for (const [key, terms] of Object.entries(taxonomies)) {
|
|
591
|
+
const kind = key === 'categories' || key === 'category'
|
|
592
|
+
? 'category'
|
|
593
|
+
: key === 'tags' || key === 'tag'
|
|
594
|
+
? 'tag'
|
|
595
|
+
: null;
|
|
596
|
+
if (!kind) {
|
|
597
|
+
canon[key] = [...terms];
|
|
598
|
+
continue;
|
|
599
|
+
}
|
|
600
|
+
canon[key] = terms.map((term) => {
|
|
601
|
+
// If already a valid ULID, keep ULID verbatim (prevents silent replacement of loser term)
|
|
602
|
+
if (maps.idToSlug[kind]?.[term])
|
|
603
|
+
return term;
|
|
604
|
+
const id = maps.slugToId[kind]?.[term];
|
|
605
|
+
if (id && maps.idToSlug[kind]?.[id]) {
|
|
606
|
+
return maps.idToSlug[kind][id];
|
|
607
|
+
}
|
|
608
|
+
return term;
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
return canon;
|
|
612
|
+
}
|
|
474
613
|
//# sourceMappingURL=taxonomies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomies.js","sourceRoot":"","sources":["../../src/sync/taxonomies.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taxonomies.js","sourceRoot":"","sources":["../../src/sync/taxonomies.ts"],"names":[],"mappings":"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"}
|