@se-studio/contentful-cms 1.0.23 → 1.0.25
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/README.md +50 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +10 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/entry-search.d.ts.map +1 -1
- package/dist/commands/entry-search.js +2 -1
- package/dist/commands/entry-search.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +3 -2
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/rtf.d.ts.map +1 -1
- package/dist/commands/rtf.js +10 -19
- package/dist/commands/rtf.js.map +1 -1
- package/dist/commands/save-pending.d.ts +3 -0
- package/dist/commands/save-pending.d.ts.map +1 -0
- package/dist/commands/save-pending.js +5 -0
- package/dist/commands/save-pending.js.map +1 -0
- package/dist/commands/save.d.ts.map +1 -1
- package/dist/commands/save.js +16 -7
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +21 -0
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/set.d.ts.map +1 -1
- package/dist/commands/set.js +47 -13
- package/dist/commands/set.js.map +1 -1
- package/dist/commands/sitemap.d.ts.map +1 -1
- package/dist/commands/sitemap.js +6 -4
- package/dist/commands/sitemap.js.map +1 -1
- package/dist/config/load.d.ts +7 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +29 -5
- package/dist/config/load.js.map +1 -1
- package/dist/contentful/field-metadata.d.ts +8 -0
- package/dist/contentful/field-metadata.d.ts.map +1 -0
- package/dist/contentful/field-metadata.js +12 -0
- package/dist/contentful/field-metadata.js.map +1 -0
- package/dist/contentful/set-field-schema.d.ts +24 -0
- package/dist/contentful/set-field-schema.d.ts.map +1 -0
- package/dist/contentful/set-field-schema.js +49 -0
- package/dist/contentful/set-field-schema.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +63 -14
- package/dist/mcp/server.js.map +1 -1
- package/dist/rtf/resolveMarkdownInput.d.ts +6 -0
- package/dist/rtf/resolveMarkdownInput.d.ts.map +1 -0
- package/dist/rtf/resolveMarkdownInput.js +28 -0
- package/dist/rtf/resolveMarkdownInput.js.map +1 -0
- package/package.json +3 -2
package/dist/commands/set.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noConsole: Console output is intentional in CLI */
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { loadConfig, resolveSpaceConfig } from '../config/load.js';
|
|
4
|
+
import { createSafeEnvironment } from '../contentful/client.js';
|
|
5
|
+
import { getActiveFieldDef, getContentTypeCached, validateScalarSetAgainstFieldSchema, } from '../contentful/set-field-schema.js';
|
|
6
|
+
import { errorMsg, successMsg, warnMsg } from '../output/print.js';
|
|
5
7
|
import { makeAssetLink, makeEntryLink, resolveRef, resolveRefToId } from '../session/refs.js';
|
|
6
8
|
import { CONTENT_ARRAY_FIELDS } from '../session/state.js';
|
|
7
9
|
import { requireSession, saveSession } from '../session/store.js';
|
|
@@ -21,7 +23,7 @@ export function registerSetCommand(program) {
|
|
|
21
23
|
.option('--append', 'With --links: append to existing array instead of replacing')
|
|
22
24
|
.option('--file <path>', 'Read JSON from a file and set the field as an Object value')
|
|
23
25
|
.option('--json <json>', 'Inline JSON string to set the field as an Object value')
|
|
24
|
-
.action((ref, field, rawValue, opts) => {
|
|
26
|
+
.action(async (ref, field, rawValue, opts, cmd) => {
|
|
25
27
|
try {
|
|
26
28
|
const isObjectMode = !!(opts.file ?? opts.json);
|
|
27
29
|
if (opts.file && opts.json) {
|
|
@@ -51,16 +53,6 @@ export function registerSetCommand(program) {
|
|
|
51
53
|
const session = requireSession();
|
|
52
54
|
const entry = resolveRef(session, ref);
|
|
53
55
|
const locale = session.defaultLocale;
|
|
54
|
-
// Guard: RichText fields cannot be set via `set` — they require `rtf`
|
|
55
|
-
const existingFieldData = entry.fields[field];
|
|
56
|
-
if (existingFieldData) {
|
|
57
|
-
const existingValue = existingFieldData[locale] ?? existingFieldData['en-US'];
|
|
58
|
-
if (isRtfDocument(existingValue)) {
|
|
59
|
-
errorMsg(`'${field}' is a RichText field — use: cms-edit rtf ${ref} ${field}`);
|
|
60
|
-
process.exit(1);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
56
|
if (isObjectMode) {
|
|
65
57
|
const jsonString = opts.file ? readFileStrict(opts.file) : opts.json;
|
|
66
58
|
const parsed = parseJsonStrict(jsonString, opts.file);
|
|
@@ -81,6 +73,27 @@ export function registerSetCommand(program) {
|
|
|
81
73
|
errorMsg('Missing value. Provide a <value> argument, or use --file <path> / --json <json> for Object fields.');
|
|
82
74
|
process.exit(1);
|
|
83
75
|
}
|
|
76
|
+
if (!isObjectMode && !opts.link && !opts.asset && !opts.links) {
|
|
77
|
+
try {
|
|
78
|
+
const parentOpts = cmd.parent?.opts() ?? {};
|
|
79
|
+
const config = loadConfig(parentOpts.config);
|
|
80
|
+
const { space } = resolveSpaceConfig(config, session.spaceKey);
|
|
81
|
+
const env = await createSafeEnvironment(space);
|
|
82
|
+
const ct = await getContentTypeCached(env, session, entry.sys.contentType.sys.id);
|
|
83
|
+
const fieldDef = getActiveFieldDef(ct, field);
|
|
84
|
+
const conflict = validateScalarSetAgainstFieldSchema(fieldDef);
|
|
85
|
+
if (conflict) {
|
|
86
|
+
errorMsg(formatSetSchemaConflict(ref, field, conflict));
|
|
87
|
+
process.exit(1);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
errorMsg(err instanceof Error ? err.message : String(err));
|
|
93
|
+
process.exit(1);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
84
97
|
const effectiveValue = rawValue ?? '';
|
|
85
98
|
if (opts.links) {
|
|
86
99
|
if (!CONTENT_ARRAY_FIELDS.includes(field)) {
|
|
@@ -119,6 +132,12 @@ export function registerSetCommand(program) {
|
|
|
119
132
|
session.modifiedEntryIds.push(entry.sys.id);
|
|
120
133
|
}
|
|
121
134
|
saveSession(session);
|
|
135
|
+
// SEO field warnings
|
|
136
|
+
if (!opts.link && !opts.asset && typeof value === 'string') {
|
|
137
|
+
if (field === 'description' && value.length > 160) {
|
|
138
|
+
warnMsg(`'description' is ${String(value.length)} chars — SEO meta descriptions should be 160 chars or fewer.`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
122
141
|
successMsg(opts.link
|
|
123
142
|
? `Set ${field} on ${ref} to entry link → ${effectiveValue.trim()}`
|
|
124
143
|
: opts.asset
|
|
@@ -146,6 +165,21 @@ function parseJsonStrict(jsonString, sourceFile) {
|
|
|
146
165
|
throw new Error(`Invalid JSON ${source}: ${jsonString.slice(0, 80)}${jsonString.length > 80 ? '…' : ''}`);
|
|
147
166
|
}
|
|
148
167
|
}
|
|
168
|
+
function formatSetSchemaConflict(ref, field, conflict) {
|
|
169
|
+
switch (conflict.kind) {
|
|
170
|
+
case 'richText':
|
|
171
|
+
return `'${field}' is a RichText field — use: cms-edit rtf ${ref} ${field}`;
|
|
172
|
+
case 'entryLink':
|
|
173
|
+
return `'${field}' is an Entry link field — use: cms-edit set ${ref} ${field} <entry-id> --link`;
|
|
174
|
+
case 'assetLink':
|
|
175
|
+
return (`'${field}' is an Asset link field — use: cms-edit asset set ${ref} ${field} <asset-id>\n` +
|
|
176
|
+
` (or use: cms-edit set ${ref} ${field} <asset-id> --asset)`);
|
|
177
|
+
case 'entryLinkArray':
|
|
178
|
+
return `'${field}' holds entry links — use: cms-edit set ${ref} ${field} <refs-or-ids> --links`;
|
|
179
|
+
case 'assetLinkArray':
|
|
180
|
+
return `'${field}' holds asset links — use --file/--json with a valid link array, or manage assets with cms-edit asset.`;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
149
183
|
function parseRefsOrIds(session, raw) {
|
|
150
184
|
const tokens = raw
|
|
151
185
|
.split(',')
|
package/dist/commands/set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/commands/set.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/commands/set.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../src/commands/sitemap.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../src/commands/sitemap.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuI7D"}
|
package/dist/commands/sitemap.js
CHANGED
|
@@ -38,10 +38,9 @@ export function registerSitemapCommand(program) {
|
|
|
38
38
|
while (true) {
|
|
39
39
|
const result = await env.getEntries({
|
|
40
40
|
content_type: ctId,
|
|
41
|
-
select: 'sys,fields.slug,fields.title
|
|
41
|
+
select: 'sys,fields.slug,fields.title',
|
|
42
42
|
limit: pageSize,
|
|
43
43
|
skip,
|
|
44
|
-
order: 'fields.slug',
|
|
45
44
|
});
|
|
46
45
|
for (const raw of result.items) {
|
|
47
46
|
const entry = serializeEntry(raw);
|
|
@@ -51,7 +50,7 @@ export function registerSitemapCommand(program) {
|
|
|
51
50
|
const rawSlug = (slugField?.[locale] ?? slugField?.['en-US'] ?? '');
|
|
52
51
|
const slug = rawSlug.startsWith('/') ? rawSlug : `/${rawSlug}`;
|
|
53
52
|
// Get title
|
|
54
|
-
const titleField = entry.fields['title']
|
|
53
|
+
const titleField = entry.fields['title'];
|
|
55
54
|
const title = (titleField?.[locale] ?? titleField?.['en-US'] ?? '') || entry.sys.id;
|
|
56
55
|
allPages.push({
|
|
57
56
|
entryId: entry.sys.id,
|
|
@@ -104,7 +103,10 @@ export function registerSitemapCommand(program) {
|
|
|
104
103
|
console.log('');
|
|
105
104
|
}
|
|
106
105
|
catch (err) {
|
|
107
|
-
|
|
106
|
+
const raw = err instanceof Error ? err.message : String(err);
|
|
107
|
+
errorMsg(`Failed to fetch sitemap. ${raw}\n` +
|
|
108
|
+
` Check: is --space set correctly? Does the content type have a slug/title field?\n` +
|
|
109
|
+
` Try: cms-edit sitemap --include page or cms-edit sitemap --include article`);
|
|
108
110
|
process.exit(1);
|
|
109
111
|
}
|
|
110
112
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../../src/commands/sitemap.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUrD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,uGAAuG;QACrG,wFAAwF,CAC3F;SACA,MAAM,CAAC,mBAAmB,EAAE,0DAA0D,EAAE,MAAM,CAAC;SAC/F,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,aAAa,EAAE,gEAAgE,EAAE,MAAM,CAAC;SAC/F,MAAM,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,iEAAiE,EAAE,KAAK,CAAC;SAC/F,MAAM,CACL,KAAK,EACH,IAOC,EACD,GAAY,EACZ,EAAE;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAuC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;YAExD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO;iBAC9B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,OAAO,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAgB,EAAE,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACzC,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;wBAClC,YAAY,EAAE,IAAI;wBAClB,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../../src/commands/sitemap.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUrD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,uGAAuG;QACrG,wFAAwF,CAC3F;SACA,MAAM,CAAC,mBAAmB,EAAE,0DAA0D,EAAE,MAAM,CAAC;SAC/F,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,aAAa,EAAE,gEAAgE,EAAE,MAAM,CAAC;SAC/F,MAAM,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,iEAAiE,EAAE,KAAK,CAAC;SAC/F,MAAM,CACL,KAAK,EACH,IAOC,EACD,GAAY,EACZ,EAAE;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAuC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;YAExD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO;iBAC9B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,OAAO,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAgB,EAAE,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACzC,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;wBAClC,YAAY,EAAE,IAAI;wBAClB,MAAM,EAAE,8BAA8B;wBACtC,KAAK,EAAE,QAAQ;wBACf,IAAI;qBACL,CAAC,CAAC;oBAEH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBAC/B,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;wBAClC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAE5C,WAAW;wBACX,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACvC,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAW,CAAC;wBAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;wBAE/D,YAAY;wBACZ,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACzC,MAAM,KAAK,GACR,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAY,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wBAEpF,QAAQ,CAAC,IAAI,CAAC;4BACZ,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;4BACrB,IAAI;4BACJ,KAAK;4BACL,MAAM;4BACN,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS;yBAC/B,CAAC,CAAC;oBACL,CAAC;oBAED,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/B,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAE5B,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAChF,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,SAAS;YACT,IAAI,KAAK,GAAG,QAAQ,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7E,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;YAED,OAAO;YACP,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,UAAU,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjF,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACnG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,QAAQ,CACN,4BAA4B,GAAG,IAAI;gBACjC,qFAAqF;gBACrF,gFAAgF,CACnF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,MAAmD,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,mEAAmE;IACnE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,MAAmD,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,KAAK,EAAE,CACtF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC"}
|
package/dist/config/load.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type { CmsEditConfig, SpaceConfig } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Loads .contentful-cms.json from the given path or searches up from cwd.
|
|
4
|
-
* Also loads .env.local from cwd for token resolution.
|
|
4
|
+
* Also loads .env.local from cwd (and home dir) for token resolution.
|
|
5
|
+
*
|
|
6
|
+
* Config resolution order:
|
|
7
|
+
* 1. --config <path> flag (explicit)
|
|
8
|
+
* 2. CMS_EDIT_CONFIG env var (useful for MCP / Claude Desktop env block)
|
|
9
|
+
* 3. Walk up from cwd
|
|
10
|
+
* 4. Home directory fallback (~/.contentful-cms.json)
|
|
5
11
|
*/
|
|
6
12
|
export declare function loadConfig(configPath?: string): CmsEditConfig;
|
|
7
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiB7D;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CA+D7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAWrC"}
|
package/dist/config/load.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
|
+
import * as os from 'node:os';
|
|
2
3
|
import * as path from 'node:path';
|
|
3
4
|
import { config as loadDotenv } from 'dotenv';
|
|
4
5
|
/**
|
|
@@ -15,18 +16,36 @@ function resolveEnvToken(value) {
|
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
18
|
* Loads .contentful-cms.json from the given path or searches up from cwd.
|
|
18
|
-
* Also loads .env.local from cwd for token resolution.
|
|
19
|
+
* Also loads .env.local from cwd (and home dir) for token resolution.
|
|
20
|
+
*
|
|
21
|
+
* Config resolution order:
|
|
22
|
+
* 1. --config <path> flag (explicit)
|
|
23
|
+
* 2. CMS_EDIT_CONFIG env var (useful for MCP / Claude Desktop env block)
|
|
24
|
+
* 3. Walk up from cwd
|
|
25
|
+
* 4. Home directory fallback (~/.contentful-cms.json)
|
|
19
26
|
*/
|
|
20
27
|
export function loadConfig(configPath) {
|
|
21
28
|
const cwd = process.cwd();
|
|
22
|
-
|
|
29
|
+
const home = os.homedir();
|
|
30
|
+
// Load .env.local from cwd and home dir so tokens like ${CMS_EDIT_TOKEN} can be resolved.
|
|
31
|
+
// Home dir is loaded first (lower priority) so cwd can override.
|
|
32
|
+
const homeEnvLocal = path.join(home, '.env.local');
|
|
33
|
+
if (fs.existsSync(homeEnvLocal)) {
|
|
34
|
+
loadDotenv({ path: homeEnvLocal, override: false, quiet: true });
|
|
35
|
+
}
|
|
23
36
|
const envLocalPath = path.join(cwd, '.env.local');
|
|
24
37
|
if (fs.existsSync(envLocalPath)) {
|
|
25
38
|
loadDotenv({ path: envLocalPath, override: false, quiet: true });
|
|
26
39
|
}
|
|
27
|
-
const
|
|
40
|
+
const envVarConfig = process.env['CMS_EDIT_CONFIG'];
|
|
41
|
+
const resolvedPath = configPath
|
|
42
|
+
? path.resolve(configPath)
|
|
43
|
+
: envVarConfig
|
|
44
|
+
? path.resolve(envVarConfig)
|
|
45
|
+
: findConfigFile(cwd);
|
|
28
46
|
if (!resolvedPath) {
|
|
29
|
-
throw new Error('No .contentful-cms.json found. Create one in your project root
|
|
47
|
+
throw new Error('No .contentful-cms.json found. Create one in your project root or home directory, ' +
|
|
48
|
+
'or set CMS_EDIT_CONFIG=/path/to/.contentful-cms.json (see .contentful-cms.example.json).');
|
|
30
49
|
}
|
|
31
50
|
const raw = fs.readFileSync(resolvedPath, 'utf-8');
|
|
32
51
|
const parsed = JSON.parse(raw);
|
|
@@ -71,6 +90,7 @@ export function resolveSpaceConfig(config, spaceKey) {
|
|
|
71
90
|
}
|
|
72
91
|
/**
|
|
73
92
|
* Walk up the directory tree from start to find .contentful-cms.json.
|
|
93
|
+
* Falls back to the home directory if not found along the path.
|
|
74
94
|
*/
|
|
75
95
|
function findConfigFile(start) {
|
|
76
96
|
let current = start;
|
|
@@ -80,8 +100,12 @@ function findConfigFile(start) {
|
|
|
80
100
|
return candidate;
|
|
81
101
|
const parent = path.dirname(current);
|
|
82
102
|
if (parent === current)
|
|
83
|
-
|
|
103
|
+
break;
|
|
84
104
|
current = parent;
|
|
85
105
|
}
|
|
106
|
+
// Home directory fallback — useful when launched by MCP servers (e.g. Claude Desktop)
|
|
107
|
+
// where the working directory is unrelated to the user's project.
|
|
108
|
+
const homeCandidate = path.join(os.homedir(), '.contentful-cms.json');
|
|
109
|
+
return fs.existsSync(homeCandidate) ? homeCandidate : null;
|
|
86
110
|
}
|
|
87
111
|
//# sourceMappingURL=load.js.map
|
package/dist/config/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG9C;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,2DAA2D,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ContentFields } from 'contentful-management';
|
|
2
|
+
/**
|
|
3
|
+
* Optional per-field description from the Contentful model.
|
|
4
|
+
* The CMA may include `description` on field definitions, but `ContentFields` in
|
|
5
|
+
* `contentful-management` does not list it — so we read it with a small runtime check.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readContentfulFieldDescription(field: ContentFields): string | undefined;
|
|
8
|
+
//# sourceMappingURL=field-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-metadata.d.ts","sourceRoot":"","sources":["../../src/contentful/field-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAIvF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional per-field description from the Contentful model.
|
|
3
|
+
* The CMA may include `description` on field definitions, but `ContentFields` in
|
|
4
|
+
* `contentful-management` does not list it — so we read it with a small runtime check.
|
|
5
|
+
*/
|
|
6
|
+
export function readContentfulFieldDescription(field) {
|
|
7
|
+
if (!('description' in field))
|
|
8
|
+
return undefined;
|
|
9
|
+
const v = field.description;
|
|
10
|
+
return typeof v === 'string' && v.trim() ? v.trim() : undefined;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=field-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-metadata.js","sourceRoot":"","sources":["../../src/contentful/field-metadata.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,KAAoB;IACjE,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,CAAC,GAAI,KAAmD,CAAC,WAAW,CAAC;IAC3E,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ContentFields, ContentTypeProps } from 'contentful-management';
|
|
2
|
+
import type { SessionState } from '../session/state.js';
|
|
3
|
+
import type { SafeEnvironment } from './client.js';
|
|
4
|
+
/** Clears in-process content-type cache (for tests). */
|
|
5
|
+
export declare function clearContentTypeCacheForTests(): void;
|
|
6
|
+
export declare function getContentTypeCached(env: SafeEnvironment, session: SessionState, ctId: string): Promise<ContentTypeProps>;
|
|
7
|
+
export declare function getActiveFieldDef(ct: ContentTypeProps, fieldId: string): ContentFields | undefined;
|
|
8
|
+
export type SetSchemaConflict = {
|
|
9
|
+
kind: 'richText';
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'entryLink';
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'assetLink';
|
|
14
|
+
} | {
|
|
15
|
+
kind: 'entryLinkArray';
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'assetLinkArray';
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* When the user uses scalar `set` (no --link / --asset / --links / --file / --json),
|
|
21
|
+
* ensure the target field is not a RichText or Link type that requires those flags.
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateScalarSetAgainstFieldSchema(fieldDef: ContentFields | undefined): SetSchemaConflict | null;
|
|
24
|
+
//# sourceMappingURL=set-field-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-field-schema.d.ts","sourceRoot":"","sources":["../../src/contentful/set-field-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnD,wDAAwD;AACxD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,gBAAgB,EACpB,OAAO,EAAE,MAAM,GACd,aAAa,GAAG,SAAS,CAE3B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,aAAa,GAAG,SAAS,GAClC,iBAAiB,GAAG,IAAI,CA2B1B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const contentTypeCache = new Map();
|
|
2
|
+
function contentTypeCacheKey(session, ctId) {
|
|
3
|
+
return `${session.spaceId}\0${session.environment}\0${ctId}`;
|
|
4
|
+
}
|
|
5
|
+
/** Clears in-process content-type cache (for tests). */
|
|
6
|
+
export function clearContentTypeCacheForTests() {
|
|
7
|
+
contentTypeCache.clear();
|
|
8
|
+
}
|
|
9
|
+
export async function getContentTypeCached(env, session, ctId) {
|
|
10
|
+
const key = contentTypeCacheKey(session, ctId);
|
|
11
|
+
let ct = contentTypeCache.get(key);
|
|
12
|
+
if (!ct) {
|
|
13
|
+
ct = await env.getContentType(ctId);
|
|
14
|
+
contentTypeCache.set(key, ct);
|
|
15
|
+
}
|
|
16
|
+
return ct;
|
|
17
|
+
}
|
|
18
|
+
export function getActiveFieldDef(ct, fieldId) {
|
|
19
|
+
return ct.fields.find((f) => f.id === fieldId && !f.disabled && !f.omitted);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* When the user uses scalar `set` (no --link / --asset / --links / --file / --json),
|
|
23
|
+
* ensure the target field is not a RichText or Link type that requires those flags.
|
|
24
|
+
*/
|
|
25
|
+
export function validateScalarSetAgainstFieldSchema(fieldDef) {
|
|
26
|
+
if (!fieldDef)
|
|
27
|
+
return null;
|
|
28
|
+
if (fieldDef.type === 'RichText') {
|
|
29
|
+
return { kind: 'richText' };
|
|
30
|
+
}
|
|
31
|
+
if (fieldDef.type === 'Link' && fieldDef.linkType === 'Entry') {
|
|
32
|
+
return { kind: 'entryLink' };
|
|
33
|
+
}
|
|
34
|
+
if (fieldDef.type === 'Link' && fieldDef.linkType === 'Asset') {
|
|
35
|
+
return { kind: 'assetLink' };
|
|
36
|
+
}
|
|
37
|
+
if (fieldDef.type === 'Array' &&
|
|
38
|
+
fieldDef.items?.type === 'Link' &&
|
|
39
|
+
fieldDef.items.linkType === 'Entry') {
|
|
40
|
+
return { kind: 'entryLinkArray' };
|
|
41
|
+
}
|
|
42
|
+
if (fieldDef.type === 'Array' &&
|
|
43
|
+
fieldDef.items?.type === 'Link' &&
|
|
44
|
+
fieldDef.items.linkType === 'Asset') {
|
|
45
|
+
return { kind: 'assetLinkArray' };
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=set-field-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-field-schema.js","sourceRoot":"","sources":["../../src/contentful/set-field-schema.ts"],"names":[],"mappings":"AAIA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAE7D,SAAS,mBAAmB,CAAC,OAAqB,EAAE,IAAY;IAC9D,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,6BAA6B;IAC3C,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAoB,EACpB,OAAqB,EACrB,IAAY;IAEZ,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,EAAoB,EACpB,OAAe;IAEf,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9E,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,QAAmC;IAEnC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IACD,IACE,QAAQ,CAAC,IAAI,KAAK,OAAO;QACzB,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM;QAC/B,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,EACnC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACpC,CAAC;IACD,IACE,QAAQ,CAAC,IAAI,KAAK,OAAO;QACzB,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM;QAC/B,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,EACnC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmFpE,wBAAgB,eAAe,IAAI,SAAS,CAoB3C"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -13,26 +13,75 @@ Workflow: open → snapshot → read/set/rtf/add/remove → diff → save
|
|
|
13
13
|
All saves create drafts only — a human must publish in Contentful.
|
|
14
14
|
|
|
15
15
|
Common command sequences:
|
|
16
|
-
["open", "/pricing"]
|
|
17
|
-
["open", "<entry-id>", "--id"]
|
|
18
|
-
["snapshot"]
|
|
19
|
-
["read", "@c0"]
|
|
20
|
-
["read", "@c0", "heading"]
|
|
21
|
-
["set", "@c0", "heading", "New heading"]
|
|
22
|
-
["rtf", "@c0", "body", "# H1\\n\\nBody."]
|
|
23
|
-
["
|
|
24
|
-
["
|
|
25
|
-
["
|
|
26
|
-
["
|
|
27
|
-
["
|
|
16
|
+
["open", "/pricing"] — load a page by slug
|
|
17
|
+
["open", "<entry-id>", "--id"] — load by Contentful entry ID
|
|
18
|
+
["snapshot"] — print content tree with @refs
|
|
19
|
+
["read", "@c0"] — read all fields of a component
|
|
20
|
+
["read", "@c0", "heading"] — read a specific field
|
|
21
|
+
["set", "@c0", "heading", "New heading"] — set a scalar field
|
|
22
|
+
["rtf", "@c0", "body", "--content", "# H1\\n\\nBody."] — set rich text (preferred for AI)
|
|
23
|
+
["rtf", "@c0", "body", "--base64", "<encoded>"] — set rich text via base64 (no filesystem)
|
|
24
|
+
["diff"] — show pending changes
|
|
25
|
+
["save"] — write drafts to Contentful
|
|
26
|
+
["discard"] — discard unsaved changes
|
|
27
|
+
["health"] — verify config and connectivity
|
|
28
|
+
["--docs"] — print README path for reference
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
Entry creation:
|
|
31
|
+
create = new top-level entries (page, article, template)
|
|
32
|
+
add = new child entries linked into an existing entry's content array
|
|
33
|
+
["create", "article", "--slug", "/blog/x", "--title", "X", "--article-type-id", "<id>"]
|
|
34
|
+
["list", "--type", "articleType"] — find valid article type IDs
|
|
35
|
+
["add", "<type>", "--content-type", "<ct>", "--parent", "@c0", "--target", "content"]
|
|
36
|
+
|
|
37
|
+
Field discovery:
|
|
38
|
+
["schema", "<content-type>"] — show field definitions, descriptions, and SEO hints
|
|
39
|
+
["list", "--type", "<contentType>"] — list entries by type (prefer over search for type-specific queries)
|
|
40
|
+
|
|
41
|
+
Command reference by category:
|
|
42
|
+
|
|
43
|
+
DISCOVERY
|
|
44
|
+
list --type <page|article|component|…> List entries by content type
|
|
45
|
+
search <query> Full-text search across entries
|
|
46
|
+
types <contentType> List type-discriminator enum values
|
|
47
|
+
schema <contentType> Show fields, descriptions, and SEO hints
|
|
48
|
+
sitemap All pages/articles with slugs and status
|
|
49
|
+
|
|
50
|
+
READING
|
|
51
|
+
open <slug> Load a page or article by slug
|
|
52
|
+
open <id> --id Load by Contentful entry ID
|
|
53
|
+
snapshot Show content tree with @refs
|
|
54
|
+
read <ref> Read all fields on an entry
|
|
55
|
+
read <ref> <field> Read a specific field
|
|
56
|
+
peek <id> Quick field preview without opening a session
|
|
57
|
+
|
|
58
|
+
EDITING
|
|
59
|
+
set <ref> <field> <value> Set a text/boolean/number/date field
|
|
60
|
+
asset set <ref> <field> <asset-id> Set an asset/image field (not plain set)
|
|
61
|
+
rtf <ref> <field> --content "<markdown>" Set a rich text field
|
|
62
|
+
links add/remove/move Manage CTA/link arrays
|
|
63
|
+
|
|
64
|
+
CREATING CONTENT
|
|
65
|
+
create article --slug … --title … --article-type-id …
|
|
66
|
+
create page --slug … --title …
|
|
67
|
+
add <type> --content-type <ct> --target content --parent <ref> Add a child component
|
|
68
|
+
remove <ref> Remove a child entry
|
|
69
|
+
move <ref> --after <ref> Reorder entries
|
|
70
|
+
|
|
71
|
+
NAVIGATION & ASSETS
|
|
72
|
+
nav open/add Manage navigation entries
|
|
73
|
+
asset search/info/set Find and set assets
|
|
74
|
+
resolve <id> Resolve entry ID to ref in current session
|
|
30
75
|
|
|
31
76
|
Use --session <name> to isolate concurrent workflows.
|
|
32
77
|
Use --space <name> to target a specific Contentful space.
|
|
33
78
|
Output is always JSON (CMS_EDIT_JSON=1 is forced by the MCP server).
|
|
34
79
|
|
|
35
|
-
|
|
80
|
+
Rich text tips:
|
|
81
|
+
--content "<markdown>" preferred named flag for inline content (any length)
|
|
82
|
+
--base64 "<encoded>" fully environment-agnostic, no filesystem needed
|
|
83
|
+
--file "<abs-path>" platform-native absolute path required (C:\\\\Users\\\\... on Windows)
|
|
84
|
+
stdin ("-") not supported via MCP`;
|
|
36
85
|
export function createMcpServer() {
|
|
37
86
|
const server = new McpServer({ name: 'cms-edit', version: '1.0.0' });
|
|
38
87
|
server.tool('cms_edit', TOOL_DESCRIPTION, {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,4CAA4C;AAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAEzE,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,4CAA4C;AAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAEzE,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA0EwB,CAAC;AAElD,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAErE,MAAM,CAAC,IAAI,CACT,UAAU,EACV,gBAAgB,EAChB;QACE,IAAI,EAAE,CAAC;aACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,CACP,gGAAgG,CACjG;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAc;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,kFAAkF;QAClF,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;QAEnD,6EAA6E;QAC7E,uEAAuE;QACvE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE;YAC1E,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG;YACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,iEAAiE;YACjE,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,gBAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves Markdown source for `cms-edit rtf` from CLI arguments.
|
|
3
|
+
* Precedence: `--base64` → `--content` → `--file` → stdin (`-`) → positional arg.
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolveMarkdownInput(markdownArg: string | undefined, filePath: string | undefined, content?: string, base64?: string): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=resolveMarkdownInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveMarkdownInput.d.ts","sourceRoot":"","sources":["../../src/rtf/resolveMarkdownInput.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves Markdown source for `cms-edit rtf` from CLI arguments.
|
|
4
|
+
* Precedence: `--base64` → `--content` → `--file` → stdin (`-`) → positional arg.
|
|
5
|
+
*/
|
|
6
|
+
export async function resolveMarkdownInput(markdownArg, filePath, content, base64) {
|
|
7
|
+
if (base64) {
|
|
8
|
+
return Buffer.from(base64, 'base64').toString('utf-8');
|
|
9
|
+
}
|
|
10
|
+
if (content !== undefined && content !== '') {
|
|
11
|
+
return content;
|
|
12
|
+
}
|
|
13
|
+
if (filePath) {
|
|
14
|
+
return fs.readFileSync(filePath, 'utf-8');
|
|
15
|
+
}
|
|
16
|
+
if (markdownArg === '-') {
|
|
17
|
+
const chunks = [];
|
|
18
|
+
for await (const chunk of process.stdin) {
|
|
19
|
+
chunks.push(typeof chunk === 'string' ? Buffer.from(chunk, 'utf-8') : chunk);
|
|
20
|
+
}
|
|
21
|
+
return Buffer.concat(chunks).toString('utf-8');
|
|
22
|
+
}
|
|
23
|
+
if (markdownArg !== undefined && markdownArg !== '') {
|
|
24
|
+
return markdownArg;
|
|
25
|
+
}
|
|
26
|
+
throw new Error('Provide markdown as: positional arg, --content <markdown>, --base64 <encoded>, --file <path>, or "-" for stdin.');
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=resolveMarkdownInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveMarkdownInput.js","sourceRoot":"","sources":["../../src/rtf/resolveMarkdownInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAA+B,EAC/B,QAA4B,EAC5B,OAAgB,EAChB,MAAe;IAEf,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACxB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;AACJ,CAAC"}
|