@se-studio/contentful-cms 2.6.0 → 2.7.0
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 +12 -0
- package/dist/audit/asset-usage.d.ts +14 -0
- package/dist/audit/asset-usage.d.ts.map +1 -1
- package/dist/audit/asset-usage.js +18 -0
- package/dist/audit/asset-usage.js.map +1 -1
- package/dist/audit/media-review.d.ts +4 -0
- package/dist/audit/media-review.d.ts.map +1 -1
- package/dist/audit/media-review.js.map +1 -1
- package/dist/commands/asset.d.ts.map +1 -1
- package/dist/commands/asset.js +19 -9
- package/dist/commands/asset.js.map +1 -1
- package/dist/commands/create-from-json.d.ts.map +1 -1
- package/dist/commands/create-from-json.js +11 -0
- package/dist/commands/create-from-json.js.map +1 -1
- package/dist/commands/create-taxonomy.d.ts.map +1 -1
- package/dist/commands/create-taxonomy.js +5 -3
- package/dist/commands/create-taxonomy.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +13 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/nav.d.ts.map +1 -1
- package/dist/commands/nav.js +14 -0
- package/dist/commands/nav.js.map +1 -1
- package/dist/commands/save.d.ts.map +1 -1
- package/dist/commands/save.js +13 -0
- package/dist/commands/save.js.map +1 -1
- package/dist/generated/hosted-guide.d.ts +1 -1
- package/dist/generated/hosted-guide.d.ts.map +1 -1
- package/dist/generated/hosted-guide.js +1 -1
- package/dist/generated/hosted-guide.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/hosted/index.d.ts +1 -0
- package/dist/hosted/index.d.ts.map +1 -1
- package/dist/hosted/index.js +1 -0
- package/dist/hosted/index.js.map +1 -1
- package/dist/hosted/next/redis.d.ts.map +1 -1
- package/dist/hosted/next/redis.js +11 -3
- package/dist/hosted/next/redis.js.map +1 -1
- package/dist/hosted/next/routes/mcp.d.ts.map +1 -1
- package/dist/hosted/next/routes/mcp.js +2 -1
- package/dist/hosted/next/routes/mcp.js.map +1 -1
- package/dist/index/blob.d.ts +5 -0
- package/dist/index/blob.d.ts.map +1 -0
- package/dist/index/blob.js +15 -0
- package/dist/index/blob.js.map +1 -0
- package/dist/index/cache-keys.d.ts +9 -0
- package/dist/index/cache-keys.d.ts.map +1 -0
- package/dist/index/cache-keys.js +13 -0
- package/dist/index/cache-keys.js.map +1 -0
- package/dist/index/cache-store.d.ts +31 -0
- package/dist/index/cache-store.d.ts.map +1 -0
- package/dist/index/cache-store.js +17 -0
- package/dist/index/cache-store.js.map +1 -0
- package/dist/index/distributed-sync-lock.d.ts +3 -0
- package/dist/index/distributed-sync-lock.d.ts.map +1 -0
- package/dist/index/distributed-sync-lock.js +22 -0
- package/dist/index/distributed-sync-lock.js.map +1 -0
- package/dist/index/file-index-cache.d.ts +16 -0
- package/dist/index/file-index-cache.d.ts.map +1 -0
- package/dist/index/file-index-cache.js +103 -0
- package/dist/index/file-index-cache.js.map +1 -0
- package/dist/index/hydrate.d.ts +4 -0
- package/dist/index/hydrate.d.ts.map +1 -0
- package/dist/index/hydrate.js +24 -0
- package/dist/index/hydrate.js.map +1 -0
- package/dist/index/invalidate.d.ts +24 -0
- package/dist/index/invalidate.d.ts.map +1 -0
- package/dist/index/invalidate.js +60 -0
- package/dist/index/invalidate.js.map +1 -0
- package/dist/index/patch-index.d.ts +12 -0
- package/dist/index/patch-index.d.ts.map +1 -0
- package/dist/index/patch-index.js +40 -0
- package/dist/index/patch-index.js.map +1 -0
- package/dist/index/publish-cache.d.ts +5 -0
- package/dist/index/publish-cache.d.ts.map +1 -0
- package/dist/index/publish-cache.js +26 -0
- package/dist/index/publish-cache.js.map +1 -0
- package/dist/index/redis-index-cache.d.ts +24 -0
- package/dist/index/redis-index-cache.d.ts.map +1 -0
- package/dist/index/redis-index-cache.js +83 -0
- package/dist/index/redis-index-cache.js.map +1 -0
- package/dist/index/require.d.ts +5 -4
- package/dist/index/require.d.ts.map +1 -1
- package/dist/index/require.js +17 -6
- package/dist/index/require.js.map +1 -1
- package/dist/index/run-sync.d.ts +2 -0
- package/dist/index/run-sync.d.ts.map +1 -1
- package/dist/index/run-sync.js +16 -9
- package/dist/index/run-sync.js.map +1 -1
- package/dist/index/sync.d.ts +9 -1
- package/dist/index/sync.d.ts.map +1 -1
- package/dist/index/sync.js +53 -0
- package/dist/index/sync.js.map +1 -1
- package/dist/runtime/context.d.ts +3 -0
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js.map +1 -1
- package/dist/session/session-store.d.ts +2 -1
- package/dist/session/session-store.d.ts.map +1 -1
- package/docs/help/asset-review.md +4 -2
- package/docs/help/index-sync.md +9 -3
- package/docs/mcp/e2e-test-prompt.md +159 -0
- package/docs/mcp/hosted-guide.md +6 -0
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { indexCacheKeySuffix } from './cache-keys.js';
|
|
2
|
+
import { INDEX_BLOB_TTL_SECONDS, } from './cache-store.js';
|
|
3
|
+
function prefix(key) {
|
|
4
|
+
return `cms-edit:index:${indexCacheKeySuffix(key)}`;
|
|
5
|
+
}
|
|
6
|
+
function parseJson(raw) {
|
|
7
|
+
if (!raw)
|
|
8
|
+
return null;
|
|
9
|
+
if (typeof raw === 'string') {
|
|
10
|
+
try {
|
|
11
|
+
return JSON.parse(raw);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (typeof raw === 'object')
|
|
18
|
+
return raw;
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
export class RedisIndexCacheStore {
|
|
22
|
+
redis;
|
|
23
|
+
blobTtlSeconds;
|
|
24
|
+
constructor(redis, blobTtlSeconds = INDEX_BLOB_TTL_SECONDS) {
|
|
25
|
+
this.redis = redis;
|
|
26
|
+
this.blobTtlSeconds = blobTtlSeconds;
|
|
27
|
+
}
|
|
28
|
+
invalidationKey(key) {
|
|
29
|
+
return `${prefix(key)}:invalidation`;
|
|
30
|
+
}
|
|
31
|
+
blobMetaKey(key) {
|
|
32
|
+
return `${prefix(key)}:meta`;
|
|
33
|
+
}
|
|
34
|
+
blobDataKey(key) {
|
|
35
|
+
return `${prefix(key)}:blob`;
|
|
36
|
+
}
|
|
37
|
+
syncLockKey(key) {
|
|
38
|
+
return `${prefix(key)}:lock`;
|
|
39
|
+
}
|
|
40
|
+
async getInvalidation(key) {
|
|
41
|
+
return parseJson(await this.redis.get(this.invalidationKey(key)));
|
|
42
|
+
}
|
|
43
|
+
async setInvalidation(key, inv) {
|
|
44
|
+
await this.redis.set(this.invalidationKey(key), JSON.stringify(inv));
|
|
45
|
+
}
|
|
46
|
+
async clearInvalidation(key) {
|
|
47
|
+
await this.redis.del(this.invalidationKey(key));
|
|
48
|
+
}
|
|
49
|
+
async getBlob(key) {
|
|
50
|
+
const meta = parseJson(await this.redis.get(this.blobMetaKey(key)));
|
|
51
|
+
const raw = await this.redis.get(this.blobDataKey(key));
|
|
52
|
+
if (!meta || raw == null)
|
|
53
|
+
return null;
|
|
54
|
+
const encoded = typeof raw === 'string' ? raw : String(raw);
|
|
55
|
+
const data = Buffer.from(encoded, 'base64');
|
|
56
|
+
return { meta, data };
|
|
57
|
+
}
|
|
58
|
+
async putBlob(key, meta, data) {
|
|
59
|
+
const encoded = Buffer.from(data).toString('base64');
|
|
60
|
+
await this.redis.set(this.blobMetaKey(key), JSON.stringify(meta), {
|
|
61
|
+
ex: this.blobTtlSeconds,
|
|
62
|
+
});
|
|
63
|
+
await this.redis.set(this.blobDataKey(key), encoded, { ex: this.blobTtlSeconds });
|
|
64
|
+
}
|
|
65
|
+
async deleteBlob(key) {
|
|
66
|
+
await this.redis.del(this.blobMetaKey(key));
|
|
67
|
+
await this.redis.del(this.blobDataKey(key));
|
|
68
|
+
}
|
|
69
|
+
async tryAcquireSyncLock(key, holderId, ttlSeconds) {
|
|
70
|
+
const result = await this.redis.set(this.syncLockKey(key), holderId, {
|
|
71
|
+
ex: ttlSeconds,
|
|
72
|
+
nx: true,
|
|
73
|
+
});
|
|
74
|
+
return result === true;
|
|
75
|
+
}
|
|
76
|
+
async releaseSyncLock(key, holderId) {
|
|
77
|
+
const current = await this.redis.get(this.syncLockKey(key));
|
|
78
|
+
if (current === holderId) {
|
|
79
|
+
await this.redis.del(this.syncLockKey(key));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=redis-index-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-index-cache.js","sourceRoot":"","sources":["../../src/index/redis-index-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/index/require.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SpaceConfig } from '../config/types.js';
|
|
2
2
|
import { type IndexSyncMode } from './run-sync.js';
|
|
3
|
-
import { INDEX_STALE_MS } from './sync.js';
|
|
3
|
+
import { getIndexSyncReason, INDEX_STALE_MS } from './sync.js';
|
|
4
4
|
export interface EnsureContentIndexOptions {
|
|
5
5
|
preview?: boolean;
|
|
6
6
|
/** Called when an automatic sync starts (missing, stale, or schema mismatch). */
|
|
@@ -13,9 +13,10 @@ export interface EnsureContentIndexResult {
|
|
|
13
13
|
syncMode?: IndexSyncMode;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Ensures the local content index exists and is current (schema
|
|
17
|
-
* Auto-sync: full rebuild when missing
|
|
16
|
+
* Ensures the local content index exists and is current (schema v4, synced within 24h,
|
|
17
|
+
* and not invalidated by a committed write). Auto-sync: full rebuild when missing, schema
|
|
18
|
+
* outdated, or fully invalidated; incremental when only stale or incrementally invalidated.
|
|
18
19
|
*/
|
|
19
20
|
export declare function ensureContentIndex(space: SpaceConfig, opts?: EnsureContentIndexOptions): Promise<EnsureContentIndexResult>;
|
|
20
|
-
export { INDEX_STALE_MS };
|
|
21
|
+
export { getIndexSyncReason, INDEX_STALE_MS };
|
|
21
22
|
//# sourceMappingURL=require.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require.d.ts","sourceRoot":"","sources":["../../src/index/require.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"require.d.ts","sourceRoot":"","sources":["../../src/index/require.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKtD,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,eAAe,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,cAAc,EAKf,MAAM,WAAW,CAAC;AAInB,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAmBD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CA+CnC;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/index/require.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ContentIndexSyncError } from './errors.js';
|
|
2
|
+
import { tryHydrateIndexFromCache } from './hydrate.js';
|
|
2
3
|
import { resolveIndexPreview } from './mode.js';
|
|
3
4
|
import { getIndexSyncedAt } from './query.js';
|
|
4
5
|
import { runContentIndexSync } from './run-sync.js';
|
|
5
|
-
import { getIndexSyncReason, INDEX_STALE_MS, isSyncedAtStale, } from './sync.js';
|
|
6
|
+
import { getIndexSyncReason, INDEX_STALE_MS, indexSyncModeForReason, isSyncedAtStale, resolveIndexSyncReason, } from './sync.js';
|
|
6
7
|
import { IndexSyncLockError } from './sync-lock.js';
|
|
7
8
|
import { isIndexSyncVerbose } from './sync-log.js';
|
|
8
9
|
function rebuildMessage(reason) {
|
|
@@ -13,17 +14,23 @@ function rebuildMessage(reason) {
|
|
|
13
14
|
return 'Rebuilding content index (schema outdated)…';
|
|
14
15
|
case 'stale':
|
|
15
16
|
return 'Refreshing content index (stale >24h, incremental)…';
|
|
17
|
+
case 'invalidated-incremental':
|
|
18
|
+
return 'Refreshing content index (recent edits, incremental)…';
|
|
19
|
+
case 'invalidated-full':
|
|
20
|
+
return 'Rebuilding content index (catalog change, full)…';
|
|
16
21
|
default:
|
|
17
22
|
return 'Syncing content index…';
|
|
18
23
|
}
|
|
19
24
|
}
|
|
20
25
|
/**
|
|
21
|
-
* Ensures the local content index exists and is current (schema
|
|
22
|
-
* Auto-sync: full rebuild when missing
|
|
26
|
+
* Ensures the local content index exists and is current (schema v4, synced within 24h,
|
|
27
|
+
* and not invalidated by a committed write). Auto-sync: full rebuild when missing, schema
|
|
28
|
+
* outdated, or fully invalidated; incremental when only stale or incrementally invalidated.
|
|
23
29
|
*/
|
|
24
30
|
export async function ensureContentIndex(space, opts = {}) {
|
|
25
31
|
const preview = resolveIndexPreview(opts.preview);
|
|
26
|
-
|
|
32
|
+
await tryHydrateIndexFromCache(space, preview);
|
|
33
|
+
const reason = await resolveIndexSyncReason(space, preview);
|
|
27
34
|
if (reason === 'current') {
|
|
28
35
|
const syncedAt = getIndexSyncedAt(space, preview);
|
|
29
36
|
return {
|
|
@@ -32,7 +39,11 @@ export async function ensureContentIndex(space, opts = {}) {
|
|
|
32
39
|
rebuilt: false,
|
|
33
40
|
};
|
|
34
41
|
}
|
|
35
|
-
const mode = reason
|
|
42
|
+
const mode = indexSyncModeForReason(reason);
|
|
43
|
+
if (!mode) {
|
|
44
|
+
const syncedAt = getIndexSyncedAt(space, preview);
|
|
45
|
+
return { syncedAt, stale: false, rebuilt: false };
|
|
46
|
+
}
|
|
36
47
|
opts.onRebuild?.(rebuildMessage(reason));
|
|
37
48
|
try {
|
|
38
49
|
const result = await runContentIndexSync(space, {
|
|
@@ -56,5 +67,5 @@ export async function ensureContentIndex(space, opts = {}) {
|
|
|
56
67
|
throw new ContentIndexSyncError(`Content index sync failed (${detail}). Run: cms-edit index sync`, { cause: err });
|
|
57
68
|
}
|
|
58
69
|
}
|
|
59
|
-
export { INDEX_STALE_MS };
|
|
70
|
+
export { getIndexSyncReason, INDEX_STALE_MS };
|
|
60
71
|
//# sourceMappingURL=require.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require.js","sourceRoot":"","sources":["../../src/index/require.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAsB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,cAAc,EAEd,eAAe,
|
|
1
|
+
{"version":3,"file":"require.js","sourceRoot":"","sources":["../../src/index/require.ts"],"names":[],"mappings":"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"}
|
package/dist/index/run-sync.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export interface RunContentIndexSyncOptions {
|
|
|
12
12
|
mode?: IndexSyncMode;
|
|
13
13
|
/** Progress on stderr; also enabled with `LOG_CMS_INDEX=1`. */
|
|
14
14
|
verbose?: boolean;
|
|
15
|
+
/** When false, skip publishing the SQLite blob to the shared cache (internal). */
|
|
16
|
+
publishCache?: boolean;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Fetches CDA/CPA payload and rebuilds or merges into the local SQLite index.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-sync.d.ts","sourceRoot":"","sources":["../../src/index/run-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-sync.d.ts","sourceRoot":"","sources":["../../src/index/run-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYtD,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAGnB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnD,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAkBD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,eAAe,CAAC,CAsE1B"}
|
package/dist/index/run-sync.js
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { fetchCdaIndexPayload } from '../contentful/cda-sync.js';
|
|
2
2
|
import { DEFAULT_DELIVERY_KEY_NAME, resolveDeliveryAccessToken, } from '../contentful/delivery-token.js';
|
|
3
3
|
import { warnMsg } from '../output/print.js';
|
|
4
|
+
import { withDistributedIndexSyncLock } from './distributed-sync-lock.js';
|
|
4
5
|
import { resolveIndexPreview } from './mode.js';
|
|
5
6
|
import { ensureIndexDirectory, getIndexDbPath } from './paths.js';
|
|
7
|
+
import { publishIndexCache } from './publish-cache.js';
|
|
6
8
|
import { getIndexSyncedAt } from './query.js';
|
|
7
|
-
import { getIndexSyncReason, mergeIndexFromPayload, rebuildIndexFromPayload, } from './sync.js';
|
|
8
|
-
import { withIndexSyncLock } from './sync-lock.js';
|
|
9
|
+
import { getIndexSyncReason, indexSyncModeForReason, mergeIndexFromPayload, rebuildIndexFromPayload, resolveIndexSyncReason, } from './sync.js';
|
|
9
10
|
import { indexSyncVerbose, isIndexSyncVerbose } from './sync-log.js';
|
|
10
|
-
function resolveSyncMode(space, preview, requested) {
|
|
11
|
+
async function resolveSyncMode(space, preview, requested) {
|
|
11
12
|
if (requested === 'full')
|
|
12
13
|
return 'full';
|
|
13
14
|
if (requested === 'incremental')
|
|
14
15
|
return 'incremental';
|
|
15
|
-
const reason =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const reason = await resolveIndexSyncReason(space, preview);
|
|
17
|
+
const fromReason = indexSyncModeForReason(reason);
|
|
18
|
+
if (fromReason)
|
|
19
|
+
return fromReason;
|
|
20
|
+
const legacyReason = getIndexSyncReason(space, preview);
|
|
21
|
+
return indexSyncModeForReason(legacyReason) ?? 'full';
|
|
19
22
|
}
|
|
20
23
|
/**
|
|
21
24
|
* Fetches CDA/CPA payload and rebuilds or merges into the local SQLite index.
|
|
@@ -24,9 +27,10 @@ export async function runContentIndexSync(space, opts = {}) {
|
|
|
24
27
|
const preview = resolveIndexPreview(opts.preview);
|
|
25
28
|
ensureIndexDirectory(space, preview);
|
|
26
29
|
const dbPath = getIndexDbPath(space, preview);
|
|
27
|
-
const mode = resolveSyncMode(space, preview, opts.mode);
|
|
30
|
+
const mode = await resolveSyncMode(space, preview, opts.mode);
|
|
28
31
|
const verbose = opts.verbose === true || isIndexSyncVerbose();
|
|
29
|
-
|
|
32
|
+
const publishCache = opts.publishCache !== false;
|
|
33
|
+
return withDistributedIndexSyncLock(space, preview, dbPath, async () => {
|
|
30
34
|
if (verbose) {
|
|
31
35
|
indexSyncVerbose(`Starting ${mode} sync → ${dbPath}${preview ? ' (preview/draft)' : ' (published)'}`);
|
|
32
36
|
}
|
|
@@ -63,6 +67,9 @@ export async function runContentIndexSync(space, opts = {}) {
|
|
|
63
67
|
indexSyncVerbose(`Done (${result.syncMode}): ${String(result.assetCount)} assets, ` +
|
|
64
68
|
`${String(result.mediaCount)} media, ${String(result.referenceCount)} catalog in index`);
|
|
65
69
|
}
|
|
70
|
+
if (publishCache) {
|
|
71
|
+
await publishIndexCache(space, preview, result);
|
|
72
|
+
}
|
|
66
73
|
return result;
|
|
67
74
|
});
|
|
68
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-sync.js","sourceRoot":"","sources":["../../src/index/run-sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"run-sync.js","sourceRoot":"","sources":["../../src/index/run-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/index/sync.d.ts
CHANGED
|
@@ -15,16 +15,24 @@ export interface SyncIndexResult {
|
|
|
15
15
|
/** `full` replaced all rows; `incremental` merged updates since last sync. */
|
|
16
16
|
syncMode: 'full' | 'incremental';
|
|
17
17
|
}
|
|
18
|
-
export type IndexSyncReason = 'missing' | 'schema' | 'stale' | 'current';
|
|
18
|
+
export type IndexSyncReason = 'missing' | 'schema' | 'stale' | 'invalidated-full' | 'invalidated-incremental' | 'current';
|
|
19
|
+
export type IndexSyncMode = 'full' | 'incremental';
|
|
20
|
+
export declare function indexSyncModeForReason(reason: IndexSyncReason): IndexSyncMode | null;
|
|
19
21
|
export declare function rebuildIndexFromPayload(space: SpaceConfig, options: SyncIndexOptions): SyncIndexResult;
|
|
20
22
|
/** Merges CDA rows into an existing index (upsert). Used for stale refresh with same schema. */
|
|
21
23
|
export declare function mergeIndexFromPayload(space: SpaceConfig, options: SyncIndexOptions): SyncIndexResult;
|
|
22
24
|
/** Upsert a single asset row after CMA upload (optional dedup freshness). */
|
|
23
25
|
export declare function upsertAssetRow(space: SpaceConfig, asset: CdaAssetRecord, preview?: boolean): void;
|
|
26
|
+
/** Removes a catalog row after a committed delete. */
|
|
27
|
+
export declare function deleteReferenceRow(space: SpaceConfig, entryId: string, preview?: boolean): void;
|
|
28
|
+
/** Removes an asset row after a committed delete. */
|
|
29
|
+
export declare function deleteAssetRow(space: SpaceConfig, assetId: string, preview?: boolean): void;
|
|
24
30
|
/** Upsert a single reference row after taxonomy/template create. */
|
|
25
31
|
export declare function upsertReferenceRow(space: SpaceConfig, reference: CdaReferenceRecord, preview?: boolean): void;
|
|
26
32
|
export declare function getStoredSchemaVersion(space: SpaceConfig, preview?: boolean): number | null;
|
|
27
33
|
export declare function getIndexSyncReason(space: SpaceConfig, preview?: boolean): IndexSyncReason;
|
|
34
|
+
/** Resolves sync reason including shared invalidation markers (Redis or file). */
|
|
35
|
+
export declare function resolveIndexSyncReason(space: SpaceConfig, preview?: boolean): Promise<IndexSyncReason>;
|
|
28
36
|
/** True when the index must be synced (missing, schema mismatch, or older than 24h). */
|
|
29
37
|
export declare function indexNeedsRebuild(space: SpaceConfig, preview?: boolean): boolean;
|
|
30
38
|
export declare function readIndexStatus(space: SpaceConfig, preview?: boolean): {
|
package/dist/index/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/index/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,cAAc,EACf,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/index/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/index/sync.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { hashDeliveryToken } from '../contentful/delivery-token.js';
|
|
2
|
+
import { indexCacheKeyFromSpace } from './cache-keys.js';
|
|
3
|
+
import { getIndexCacheStore } from './cache-store.js';
|
|
2
4
|
import { getMeta, openIndexDatabase, setMeta } from './db.js';
|
|
3
5
|
import { DEFAULT_INDEX_PREVIEW, resolveIndexPreview } from './mode.js';
|
|
4
6
|
import { ensureIndexDirectory, getIndexDbPath, indexExists } from './paths.js';
|
|
7
|
+
import { getIndexSyncedAt } from './query.js';
|
|
5
8
|
import { SCHEMA_VERSION } from './schema.js';
|
|
9
|
+
export function indexSyncModeForReason(reason) {
|
|
10
|
+
switch (reason) {
|
|
11
|
+
case 'missing':
|
|
12
|
+
case 'schema':
|
|
13
|
+
case 'invalidated-full':
|
|
14
|
+
return 'full';
|
|
15
|
+
case 'stale':
|
|
16
|
+
case 'invalidated-incremental':
|
|
17
|
+
return 'incremental';
|
|
18
|
+
case 'current':
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
6
22
|
function clearTables(db) {
|
|
7
23
|
db.exec('DELETE FROM assets; DELETE FROM media; DELETE FROM reference_entries;');
|
|
8
24
|
}
|
|
@@ -157,6 +173,26 @@ function refreshReferenceCountMeta(db) {
|
|
|
157
173
|
const row = db.prepare(`SELECT COUNT(*) AS count FROM reference_entries`).get();
|
|
158
174
|
setMeta(db, 'referenceCount', String(row.count));
|
|
159
175
|
}
|
|
176
|
+
/** Removes a catalog row after a committed delete. */
|
|
177
|
+
export function deleteReferenceRow(space, entryId, preview = DEFAULT_INDEX_PREVIEW) {
|
|
178
|
+
const dbPath = getIndexDbPath(space, preview);
|
|
179
|
+
if (!indexExists(space, preview))
|
|
180
|
+
return;
|
|
181
|
+
const db = openIndexDatabase(dbPath);
|
|
182
|
+
db.prepare('DELETE FROM reference_entries WHERE id = ?').run(entryId);
|
|
183
|
+
refreshReferenceCountMeta(db);
|
|
184
|
+
db.close();
|
|
185
|
+
}
|
|
186
|
+
/** Removes an asset row after a committed delete. */
|
|
187
|
+
export function deleteAssetRow(space, assetId, preview = DEFAULT_INDEX_PREVIEW) {
|
|
188
|
+
const dbPath = getIndexDbPath(space, preview);
|
|
189
|
+
if (!indexExists(space, preview))
|
|
190
|
+
return;
|
|
191
|
+
const db = openIndexDatabase(dbPath);
|
|
192
|
+
db.prepare('DELETE FROM assets WHERE id = ?').run(assetId);
|
|
193
|
+
db.prepare('DELETE FROM media WHERE assetId = ?').run(assetId);
|
|
194
|
+
db.close();
|
|
195
|
+
}
|
|
160
196
|
/** Upsert a single reference row after taxonomy/template create. */
|
|
161
197
|
export function upsertReferenceRow(space, reference, preview = DEFAULT_INDEX_PREVIEW) {
|
|
162
198
|
const dbPath = getIndexDbPath(space, preview);
|
|
@@ -191,6 +227,23 @@ export function getIndexSyncReason(space, preview) {
|
|
|
191
227
|
return 'stale';
|
|
192
228
|
return 'current';
|
|
193
229
|
}
|
|
230
|
+
/** Resolves sync reason including shared invalidation markers (Redis or file). */
|
|
231
|
+
export async function resolveIndexSyncReason(space, preview) {
|
|
232
|
+
const base = getIndexSyncReason(space, preview);
|
|
233
|
+
if (base !== 'current')
|
|
234
|
+
return base;
|
|
235
|
+
const usePreview = resolveIndexPreview(preview);
|
|
236
|
+
const inv = await getIndexCacheStore().getInvalidation(indexCacheKeyFromSpace(space, usePreview));
|
|
237
|
+
if (!inv)
|
|
238
|
+
return 'current';
|
|
239
|
+
const syncedAt = getIndexSyncedAt(space, usePreview);
|
|
240
|
+
if (!syncedAt)
|
|
241
|
+
return 'current';
|
|
242
|
+
if (Date.parse(inv.invalidatedAt) > Date.parse(syncedAt)) {
|
|
243
|
+
return inv.mode === 'full' ? 'invalidated-full' : 'invalidated-incremental';
|
|
244
|
+
}
|
|
245
|
+
return 'current';
|
|
246
|
+
}
|
|
194
247
|
/** True when the index must be synced (missing, schema mismatch, or older than 24h). */
|
|
195
248
|
export function indexNeedsRebuild(space, preview) {
|
|
196
249
|
return getIndexSyncReason(space, preview) !== 'current';
|
package/dist/index/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/index/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/index/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
2
|
import type { CmsEditConfig } from '../config/types.js';
|
|
3
|
+
import type { IndexCacheStore } from '../index/cache-store.js';
|
|
3
4
|
import type { SessionStore } from '../session/session-store.js';
|
|
4
5
|
export interface ContentfulUserIdentity {
|
|
5
6
|
userId: string;
|
|
@@ -10,6 +11,8 @@ export interface CmsEditRuntimeContext {
|
|
|
10
11
|
config?: CmsEditConfig;
|
|
11
12
|
/** Session persistence backend (filesystem default when omitted). */
|
|
12
13
|
sessionStore?: SessionStore;
|
|
14
|
+
/** Shared content index cache (Redis on hosted; file fallback locally). */
|
|
15
|
+
indexCacheStore?: IndexCacheStore;
|
|
13
16
|
/** Contentful user for session key isolation in hosted mode. */
|
|
14
17
|
user?: ContentfulUserIdentity;
|
|
15
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,qEAAqE;IACrE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gEAAgE;IAChE,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B;AAED,eAAO,MAAM,cAAc,0CAAiD,CAAC;AAE7E,wBAAgB,iBAAiB,IAAI,qBAAqB,GAAG,SAAS,CAErE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,qBAAqB,EAC9B,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB"}
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,qEAAqE;IACrE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2EAA2E;IAC3E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gEAAgE;IAChE,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B;AAED,eAAO,MAAM,cAAc,0CAAiD,CAAC;AAE7E,wBAAgB,iBAAiB,IAAI,qBAAqB,GAAG,SAAS,CAErE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,qBAAqB,EAC9B,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAqBrD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAyB,CAAC;AAE7E,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAA8B,EAC9B,EAAwB;IAExB,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -10,7 +10,8 @@ export interface RedisClient {
|
|
|
10
10
|
get(key: string): Promise<unknown>;
|
|
11
11
|
set(key: string, value: string, options?: {
|
|
12
12
|
ex?: number;
|
|
13
|
-
|
|
13
|
+
nx?: boolean;
|
|
14
|
+
}): Promise<boolean | void>;
|
|
14
15
|
del(key: string): Promise<void>;
|
|
15
16
|
keys(pattern: string): Promise<string[]>;
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,CACF,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,CACF,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAClG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElE"}
|
|
@@ -15,10 +15,11 @@ Default: **Preview API** (includes drafts). Use `--published` on sync/review for
|
|
|
15
15
|
```bash
|
|
16
16
|
cms-edit asset review
|
|
17
17
|
cms-edit --json asset review --space brightline > media-review.json
|
|
18
|
-
cms-edit --json asset review --include-usage --
|
|
18
|
+
cms-edit --json asset review --include-usage --usage-limit 5
|
|
19
|
+
cms-edit --json asset review --include-usage --include-passing --usage-limit 0 > image-inventory.json
|
|
19
20
|
```
|
|
20
21
|
|
|
21
|
-
`--include-usage` adds slug-bearing page/article ancestry per asset (slower; uses CMA walk-up). Use with `--include-passing` for a full image inventory (replaces the old `audit images` command).
|
|
22
|
+
`--include-usage` adds slug-bearing page/article ancestry per asset (slower; uses CMA walk-up). By default only the first **50** assets in the report get usages (`--usage-limit 50`). Raise the limit for larger batches, or pass `--usage-limit 0` for unlimited (fine locally; hosted MCP may timeout on large spaces). Use with `--include-passing` for a full image inventory (replaces the old `audit images` command).
|
|
22
23
|
|
|
23
24
|
## Checks
|
|
24
25
|
|
|
@@ -39,6 +40,7 @@ cms-edit --json asset review --include-usage --include-passing > image-inventory
|
|
|
39
40
|
| `--max-lottie-kb` | 400 |
|
|
40
41
|
| `--include-passing` | off (failures only) |
|
|
41
42
|
| `--include-usage` | off (no usage ancestry in JSON) |
|
|
43
|
+
| `--usage-limit` | 50 when `--include-usage` is set (`0` = unlimited) |
|
|
42
44
|
| `--published` | off (Preview index) |
|
|
43
45
|
|
|
44
46
|
Exit code **1** when any asset has failing issues.
|
package/docs/help/index-sync.md
CHANGED
|
@@ -82,16 +82,22 @@ Commands that depend on the index call **`ensureContentIndex`** internally. You
|
|
|
82
82
|
|
|
83
83
|
| Condition | Auto-sync behaviour |
|
|
84
84
|
|-----------|---------------------|
|
|
85
|
-
| Index missing | **
|
|
85
|
+
| Index missing | **Hydrate** from shared cache blob if valid, else **full** rebuild |
|
|
86
86
|
| Schema version outdated (e.g. v2 → v3) | **Full** rebuild |
|
|
87
|
+
| Committed write invalidated index (incremental) | **Incremental** upsert on next index command |
|
|
88
|
+
| Committed write invalidated index (full — slug change or catalog delete) | **Full** rebuild on next index command |
|
|
87
89
|
| Last sync older than **24 hours** | **Incremental** upsert (`sys.updatedAt[gte]` last `syncedAt`) |
|
|
88
90
|
| Index fresh | No sync |
|
|
89
91
|
|
|
90
92
|
Manual `cms-edit index sync` always performs a **full** rebuild.
|
|
91
93
|
|
|
92
|
-
**
|
|
94
|
+
**Invalidation (lazy, no thrashing):** `save`, `create page|article|…`, `asset upload`, and similar **committed** writes mark the index dirty (Redis on hosted MCP; `invalidation.json` locally). They do **not** sync immediately. The next `list`, `open`, `asset search`, etc. refreshes the index. In-session `set` / `rtf` edits do **not** invalidate.
|
|
93
95
|
|
|
94
|
-
**
|
|
96
|
+
**Shared cache (hosted MCP):** After sync, the SQLite file is gzipped into Redis (~sub-MB for typical spaces). Cold serverless instances restore from Redis instead of re-fetching all assets from the Preview API.
|
|
97
|
+
|
|
98
|
+
**Incremental limitations:** Only rows changed since the last sync are fetched. Entries deleted in Contentful may remain in the index until the next **full** invalidation/sync. Duplicate slug/label/cmsLabel rows in the index cause lookup commands to fail with an explicit error (fix in Contentful, then full sync).
|
|
99
|
+
|
|
100
|
+
**Single writer:** File lock beside `media.db` plus a shared Redis lock on hosted MCP. If another sync is in progress, the command **fails immediately** (exit code 1). Stale file locks (>30 min or dead pid) are removed automatically.
|
|
95
101
|
|
|
96
102
|
## Preview / delivery API token
|
|
97
103
|
|