@se-studio/contentful-cms 3.10.2 → 3.11.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.
Files changed (119) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/cli/hosted-inline-limit.d.ts +4 -0
  4. package/dist/cli/hosted-inline-limit.d.ts.map +1 -0
  5. package/dist/cli/hosted-inline-limit.js +15 -0
  6. package/dist/cli/hosted-inline-limit.js.map +1 -0
  7. package/dist/cli/read-json-input.d.ts +16 -1
  8. package/dist/cli/read-json-input.d.ts.map +1 -1
  9. package/dist/cli/read-json-input.js +100 -12
  10. package/dist/cli/read-json-input.js.map +1 -1
  11. package/dist/commands/apply-from-json.d.ts.map +1 -1
  12. package/dist/commands/apply-from-json.js +10 -3
  13. package/dist/commands/apply-from-json.js.map +1 -1
  14. package/dist/commands/article-tags-from-json.d.ts.map +1 -1
  15. package/dist/commands/article-tags-from-json.js +12 -3
  16. package/dist/commands/article-tags-from-json.js.map +1 -1
  17. package/dist/commands/asset.d.ts.map +1 -1
  18. package/dist/commands/asset.js +2 -0
  19. package/dist/commands/asset.js.map +1 -1
  20. package/dist/commands/create-from-json.d.ts.map +1 -1
  21. package/dist/commands/create-from-json.js +16 -4
  22. package/dist/commands/create-from-json.js.map +1 -1
  23. package/dist/commands/create-person-from-json.d.ts.map +1 -1
  24. package/dist/commands/create-person-from-json.js +12 -3
  25. package/dist/commands/create-person-from-json.js.map +1 -1
  26. package/dist/commands/create-person.d.ts.map +1 -1
  27. package/dist/commands/create-person.js +20 -5
  28. package/dist/commands/create-person.js.map +1 -1
  29. package/dist/commands/create-taxonomy-from-json.d.ts.map +1 -1
  30. package/dist/commands/create-taxonomy-from-json.js +12 -3
  31. package/dist/commands/create-taxonomy-from-json.js.map +1 -1
  32. package/dist/commands/create-taxonomy.d.ts.map +1 -1
  33. package/dist/commands/create-taxonomy.js +28 -8
  34. package/dist/commands/create-taxonomy.js.map +1 -1
  35. package/dist/commands/open.d.ts.map +1 -1
  36. package/dist/commands/open.js +9 -3
  37. package/dist/commands/open.js.map +1 -1
  38. package/dist/commands/read.d.ts.map +1 -1
  39. package/dist/commands/read.js +3 -0
  40. package/dist/commands/read.js.map +1 -1
  41. package/dist/commands/rtf.d.ts.map +1 -1
  42. package/dist/commands/rtf.js +20 -8
  43. package/dist/commands/rtf.js.map +1 -1
  44. package/dist/commands/run.d.ts.map +1 -1
  45. package/dist/commands/run.js +12 -3
  46. package/dist/commands/run.js.map +1 -1
  47. package/dist/commands/session-diff.d.ts.map +1 -1
  48. package/dist/commands/session-diff.js +13 -0
  49. package/dist/commands/session-diff.js.map +1 -1
  50. package/dist/commands/set.d.ts.map +1 -1
  51. package/dist/commands/set.js +78 -38
  52. package/dist/commands/set.js.map +1 -1
  53. package/dist/commands/staged-upload.d.ts.map +1 -1
  54. package/dist/commands/staged-upload.js +2 -0
  55. package/dist/commands/staged-upload.js.map +1 -1
  56. package/dist/contentful/cma-user-agent.d.ts +1 -1
  57. package/dist/diff/long-text.d.ts +24 -0
  58. package/dist/diff/long-text.d.ts.map +1 -0
  59. package/dist/diff/long-text.js +65 -0
  60. package/dist/diff/long-text.js.map +1 -0
  61. package/dist/generated/help-topics.d.ts.map +1 -1
  62. package/dist/generated/help-topics.js +1 -1
  63. package/dist/generated/help-topics.js.map +1 -1
  64. package/dist/generated/hosted-guide.d.ts +1 -1
  65. package/dist/generated/hosted-guide.d.ts.map +1 -1
  66. package/dist/generated/hosted-guide.js +1 -1
  67. package/dist/generated/hosted-guide.js.map +1 -1
  68. package/dist/generated/version.d.ts +1 -1
  69. package/dist/generated/version.js +1 -1
  70. package/dist/mcp/tools/cms-edit.d.ts +1 -1
  71. package/dist/mcp/tools/cms-edit.d.ts.map +1 -1
  72. package/dist/mcp/tools/cms-edit.js +18 -10
  73. package/dist/mcp/tools/cms-edit.js.map +1 -1
  74. package/dist/mcp/tools/staged-upload.d.ts.map +1 -1
  75. package/dist/mcp/tools/staged-upload.js +27 -10
  76. package/dist/mcp/tools/staged-upload.js.map +1 -1
  77. package/dist/media-pipeline/prepare-source.d.ts.map +1 -1
  78. package/dist/media-pipeline/prepare-source.js +2 -0
  79. package/dist/media-pipeline/prepare-source.js.map +1 -1
  80. package/dist/preview/entry-urls.d.ts.map +1 -1
  81. package/dist/preview/entry-urls.js +8 -6
  82. package/dist/preview/entry-urls.js.map +1 -1
  83. package/dist/rtf/resolveRtfInput.d.ts +7 -2
  84. package/dist/rtf/resolveRtfInput.d.ts.map +1 -1
  85. package/dist/rtf/resolveRtfInput.js +49 -7
  86. package/dist/rtf/resolveRtfInput.js.map +1 -1
  87. package/dist/session/dirty.js +3 -3
  88. package/dist/session/dirty.js.map +1 -1
  89. package/dist/snapshot/fields.d.ts +1 -0
  90. package/dist/snapshot/fields.d.ts.map +1 -1
  91. package/dist/snapshot/fields.js +23 -0
  92. package/dist/snapshot/fields.js.map +1 -1
  93. package/dist/staged-upload/consume-text.d.ts +11 -0
  94. package/dist/staged-upload/consume-text.d.ts.map +1 -0
  95. package/dist/staged-upload/consume-text.js +55 -0
  96. package/dist/staged-upload/consume-text.js.map +1 -0
  97. package/dist/staged-upload/mime.d.ts +9 -1
  98. package/dist/staged-upload/mime.d.ts.map +1 -1
  99. package/dist/staged-upload/mime.js +52 -3
  100. package/dist/staged-upload/mime.js.map +1 -1
  101. package/dist/staged-upload/request.d.ts +2 -0
  102. package/dist/staged-upload/request.d.ts.map +1 -1
  103. package/dist/staged-upload/request.js +24 -12
  104. package/dist/staged-upload/request.js.map +1 -1
  105. package/dist/staged-upload/store.d.ts +2 -0
  106. package/dist/staged-upload/store.d.ts.map +1 -1
  107. package/dist/staged-upload/store.js +13 -7
  108. package/dist/staged-upload/store.js.map +1 -1
  109. package/dist/staged-upload/types.d.ts +4 -0
  110. package/dist/staged-upload/types.d.ts.map +1 -1
  111. package/docs/editor-tasks/create-html-component.md +15 -5
  112. package/docs/editor-tasks/preview-verify.md +6 -5
  113. package/docs/help/create-from-json.md +7 -4
  114. package/docs/help/fields-html-component.md +11 -1
  115. package/docs/help/index.md +1 -1
  116. package/docs/help/workflow.md +1 -1
  117. package/docs/mcp/hosted-guide.md +13 -11
  118. package/package.json +3 -3
  119. package/skills/core/SKILL.md +4 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @se-studio/contentful-cms Changelog
2
2
 
3
+ ## 3.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Hosted cms-edit can stage HTML/CSS/JS and from-json payloads via curl (kind=text|json), summarize long Text in diff, and reject inline MCP args over 8k. Staged slots are kind-gated; create from-json does not consume on partial save; `--staged` is available on set JSON, rtf, batch, and import commands.
8
+
9
+ ## 3.10.3
10
+
11
+ ### Patch Changes
12
+
13
+ - Bump toolchain to Next.js 16.3.4 and Biome 2.5.12. The dest Flight debug-info OOM patch still matches 16.3.4 runtimes.
14
+
3
15
  ## 3.10.2
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -162,7 +162,7 @@ cms-edit discard
162
162
  |---------|-------------|
163
163
  | `open --page-slug <slug>` | Load a page (see [docs/help/lookup.md](./docs/help/lookup.md)); hard-fails if session is dirty |
164
164
  | `open --resume` | Re-print active session without refetch (keeps staged edits) |
165
- | `open --overwrite …` | Replace session even if dirty (discards staged field edits) |
165
+ | `open --overwrite --confirm-discard …` | Replace session even if dirty (discards staged field edits) |
166
166
  | `open --id <id>` | Load by Contentful entry ID |
167
167
  | `snapshot [-c]` | Re-print content tree (`-c` for compact) |
168
168
  | `read [ref] [field]` | Read all fields of a ref, or a specific field |
@@ -0,0 +1,4 @@
1
+ /** Hosted MCP tool args must stay small; larger payloads use staged upload. */
2
+ export declare const HOSTED_INLINE_MAX_BYTES = 8192;
3
+ export declare function assertHostedInlinePayloadSize(byteLength: number, source: string): void;
4
+ //# sourceMappingURL=hosted-inline-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-inline-limit.d.ts","sourceRoot":"","sources":["../../src/cli/hosted-inline-limit.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAYtF"}
@@ -0,0 +1,15 @@
1
+ import { isHostedMcpMode } from '../telemetry/enrich.js';
2
+ /** Hosted MCP tool args must stay small; larger payloads use staged upload. */
3
+ export const HOSTED_INLINE_MAX_BYTES = 8192;
4
+ export function assertHostedInlinePayloadSize(byteLength, source) {
5
+ if (!isHostedMcpMode()) {
6
+ return;
7
+ }
8
+ if (byteLength <= HOSTED_INLINE_MAX_BYTES) {
9
+ return;
10
+ }
11
+ throw new Error(`${source} is ${String(byteLength)} bytes; hosted MCP rejects inline JSON/text over ` +
12
+ `${String(HOSTED_INLINE_MAX_BYTES)} bytes. Use cms_edit_request_staged_upload ` +
13
+ `(kind=text or kind=json), curl, then the same command with --staged <id>.`);
14
+ }
15
+ //# sourceMappingURL=hosted-inline-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-inline-limit.js","sourceRoot":"","sources":["../../src/cli/hosted-inline-limit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C,MAAM,UAAU,6BAA6B,CAAC,UAAkB,EAAE,MAAc;IAC9E,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,IAAI,UAAU,IAAI,uBAAuB,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,OAAO,MAAM,CAAC,UAAU,CAAC,mDAAmD;QACnF,GAAG,MAAM,CAAC,uBAAuB,CAAC,6CAA6C;QAC/E,2EAA2E,CAC9E,CAAC;AACJ,CAAC"}
@@ -1,17 +1,24 @@
1
1
  export interface JsonInputOptions {
2
2
  json?: string;
3
3
  jsonBase64?: string;
4
+ staged?: string;
4
5
  /** Command name for error messages (e.g. "create from-json"). */
5
6
  label?: string;
6
7
  }
7
8
  export interface TextInputOptions {
8
9
  content?: string;
9
10
  base64?: string;
11
+ staged?: string;
10
12
  /** Flag names for error messages. */
11
13
  contentFlag?: string;
12
14
  base64Flag?: string;
13
15
  label?: string;
14
16
  }
17
+ export declare function formatJsonParseError(source: string, str: string, err: unknown, extras?: {
18
+ decodedBytes?: number;
19
+ label?: string;
20
+ }): string;
21
+ export declare function parseJsonString(source: string, str: string, label: string, decodedBytes?: number): unknown;
15
22
  /**
16
23
  * Returns raw JSON text from --json or --json-base64 (exactly one required).
17
24
  */
@@ -20,8 +27,16 @@ export declare function readJsonString(opts: JsonInputOptions): string;
20
27
  * Parses JSON from --json or --json-base64 (exactly one required).
21
28
  */
22
29
  export declare function readJsonInput(opts: JsonInputOptions): unknown;
30
+ export declare function readJsonInputWithOptionalStaged(opts: JsonInputOptions): Promise<{
31
+ value: unknown;
32
+ consumeStaged: (() => Promise<void>) | null;
33
+ }>;
23
34
  /**
24
- * Returns plain text from --content or --base64 (exactly one required).
35
+ * Returns plain text from --content, --base64, or --staged (exactly one required).
25
36
  */
26
37
  export declare function readTextInput(opts: TextInputOptions): string;
38
+ export declare function readTextInputWithOptionalStaged(opts: TextInputOptions): Promise<{
39
+ text: string;
40
+ consumeStaged: (() => Promise<void>) | null;
41
+ }>;
27
42
  //# sourceMappingURL=read-json-input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-json-input.d.ts","sourceRoot":"","sources":["../../src/cli/read-json-input.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAqB7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAS7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAuB5D"}
1
+ {"version":3,"file":"read-json-input.d.ts","sourceRoot":"","sources":["../../src/cli/read-json-input.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,OAAO,EACZ,MAAM,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,MAAM,CAgBR;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAgC7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAY7D;AAED,wBAAsB,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACrF,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7C,CAAC,CAgBD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAkC5D;AAED,wBAAsB,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7C,CAAC,CAsBD"}
@@ -1,6 +1,32 @@
1
+ import { consumeStagedUpload, peekStagedUtf8 } from '../staged-upload/consume-text.js';
2
+ import { assertHostedInlinePayloadSize } from './hosted-inline-limit.js';
1
3
  function inputLabel(opts) {
2
4
  return opts.label ?? 'command';
3
5
  }
6
+ export function formatJsonParseError(source, str, err, extras) {
7
+ const label = extras?.label ?? 'command';
8
+ const detail = err instanceof SyntaxError ? err.message : String(err);
9
+ const posMatch = /position (\d+)/i.exec(detail);
10
+ let near = '';
11
+ if (posMatch?.[1]) {
12
+ const pos = Number.parseInt(posMatch[1], 10);
13
+ if (Number.isFinite(pos)) {
14
+ const start = Math.max(0, pos - 40);
15
+ const end = Math.min(str.length, pos + 40);
16
+ near = ` Near: ${JSON.stringify(str.slice(start, end))}`;
17
+ }
18
+ }
19
+ const decoded = extras?.decodedBytes !== undefined ? ` Decoded ${String(extras.decodedBytes)} bytes.` : '';
20
+ return `Invalid JSON in ${source} for ${label}: ${detail}.${decoded}${near}`;
21
+ }
22
+ export function parseJsonString(source, str, label, decodedBytes) {
23
+ try {
24
+ return JSON.parse(str);
25
+ }
26
+ catch (err) {
27
+ throw new Error(formatJsonParseError(source, str, err, { decodedBytes, label }));
28
+ }
29
+ }
4
30
  /**
5
31
  * Returns raw JSON text from --json or --json-base64 (exactly one required).
6
32
  */
@@ -8,6 +34,10 @@ export function readJsonString(opts) {
8
34
  const label = inputLabel(opts);
9
35
  const hasJson = opts.json !== undefined && opts.json !== '';
10
36
  const hasBase64 = opts.jsonBase64 !== undefined && opts.jsonBase64 !== '';
37
+ const hasStaged = opts.staged !== undefined && opts.staged !== '';
38
+ if (hasStaged) {
39
+ throw new Error(`Use readJsonInputWithOptionalStaged for --staged (${label}).`);
40
+ }
11
41
  if (hasJson && hasBase64) {
12
42
  throw new Error(`Cannot use both --json and --json-base64 for ${label}.`);
13
43
  }
@@ -16,29 +46,54 @@ export function readJsonString(opts) {
16
46
  }
17
47
  if (hasBase64) {
18
48
  try {
19
- return Buffer.from(opts.jsonBase64, 'base64').toString('utf8');
49
+ const decoded = Buffer.from(opts.jsonBase64, 'base64').toString('utf8');
50
+ assertHostedInlinePayloadSize(Buffer.byteLength(decoded, 'utf8'), '--json-base64');
51
+ return decoded;
20
52
  }
21
- catch {
53
+ catch (err) {
54
+ if (err instanceof Error && err.message.includes('hosted MCP rejects')) {
55
+ throw err;
56
+ }
22
57
  throw new Error(`Invalid --json-base64 for ${label}: could not decode base64.`);
23
58
  }
24
59
  }
25
- return opts.json;
60
+ const inline = opts.json;
61
+ assertHostedInlinePayloadSize(Buffer.byteLength(inline, 'utf8'), '--json');
62
+ return inline;
26
63
  }
27
64
  /**
28
65
  * Parses JSON from --json or --json-base64 (exactly one required).
29
66
  */
30
67
  export function readJsonInput(opts) {
68
+ if (opts.staged) {
69
+ throw new Error('Use readJsonInputWithOptionalStaged for --staged.');
70
+ }
31
71
  const source = opts.jsonBase64 !== undefined && opts.jsonBase64 !== '' ? '--json-base64' : '--json';
32
72
  const str = readJsonString(opts);
33
- try {
34
- return JSON.parse(str);
35
- }
36
- catch {
37
- throw new Error(`Invalid JSON in ${source} for ${inputLabel(opts)}.`);
73
+ const decodedBytes = opts.jsonBase64 !== undefined && opts.jsonBase64 !== ''
74
+ ? Buffer.byteLength(str, 'utf8')
75
+ : undefined;
76
+ return parseJsonString(source, str, inputLabel(opts), decodedBytes);
77
+ }
78
+ export async function readJsonInputWithOptionalStaged(opts) {
79
+ if (opts.staged) {
80
+ if ((opts.json && opts.json !== '') || (opts.jsonBase64 && opts.jsonBase64 !== '')) {
81
+ throw new Error(`Cannot combine --staged with --json/--json-base64 for ${inputLabel(opts)}.`);
82
+ }
83
+ const peeked = await peekStagedUtf8(opts.staged, ['json']);
84
+ const value = parseJsonString('--staged', peeked.text, inputLabel(opts), peeked.byteLength);
85
+ const uploadId = opts.staged;
86
+ return {
87
+ value,
88
+ consumeStaged: async () => {
89
+ await consumeStagedUpload(uploadId);
90
+ },
91
+ };
38
92
  }
93
+ return { value: readJsonInput(opts), consumeStaged: null };
39
94
  }
40
95
  /**
41
- * Returns plain text from --content or --base64 (exactly one required).
96
+ * Returns plain text from --content, --base64, or --staged (exactly one required).
42
97
  */
43
98
  export function readTextInput(opts) {
44
99
  const label = inputLabel(opts);
@@ -46,6 +101,10 @@ export function readTextInput(opts) {
46
101
  const base64Flag = opts.base64Flag ?? '--base64';
47
102
  const hasContent = opts.content !== undefined && opts.content !== '';
48
103
  const hasBase64 = opts.base64 !== undefined && opts.base64 !== '';
104
+ const hasStaged = opts.staged !== undefined && opts.staged !== '';
105
+ if (hasStaged) {
106
+ throw new Error('Use readTextInputWithOptionalStaged for --staged.');
107
+ }
49
108
  if (hasContent && hasBase64) {
50
109
  throw new Error(`Cannot use both ${contentFlag} and ${base64Flag} for ${label}.`);
51
110
  }
@@ -54,12 +113,41 @@ export function readTextInput(opts) {
54
113
  }
55
114
  if (hasBase64) {
56
115
  try {
57
- return Buffer.from(opts.base64, 'base64').toString('utf8');
116
+ const decoded = Buffer.from(opts.base64, 'base64').toString('utf8');
117
+ assertHostedInlinePayloadSize(Buffer.byteLength(decoded, 'utf8'), base64Flag);
118
+ return decoded;
58
119
  }
59
- catch {
120
+ catch (err) {
121
+ if (err instanceof Error && err.message.includes('hosted MCP rejects')) {
122
+ throw err;
123
+ }
60
124
  throw new Error(`Invalid ${base64Flag} for ${label}: could not decode base64.`);
61
125
  }
62
126
  }
63
- return opts.content;
127
+ const content = opts.content;
128
+ assertHostedInlinePayloadSize(Buffer.byteLength(content, 'utf8'), contentFlag);
129
+ return content;
130
+ }
131
+ export async function readTextInputWithOptionalStaged(opts) {
132
+ const label = inputLabel(opts);
133
+ const contentFlag = opts.contentFlag ?? '--content';
134
+ const base64Flag = opts.base64Flag ?? '--base64';
135
+ const hasContent = opts.content !== undefined && opts.content !== '';
136
+ const hasBase64 = opts.base64 !== undefined && opts.base64 !== '';
137
+ const hasStaged = opts.staged !== undefined && opts.staged !== '';
138
+ if (hasStaged && (hasContent || hasBase64)) {
139
+ throw new Error(`Cannot combine --staged with ${contentFlag}/${base64Flag} for ${label}.`);
140
+ }
141
+ if (hasStaged) {
142
+ const peeked = await peekStagedUtf8(opts.staged, ['text']);
143
+ const uploadId = opts.staged;
144
+ return {
145
+ text: peeked.text,
146
+ consumeStaged: async () => {
147
+ await consumeStagedUpload(uploadId);
148
+ },
149
+ };
150
+ }
151
+ return { text: readTextInput(opts), consumeStaged: null };
64
152
  }
65
153
  //# sourceMappingURL=read-json-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-json-input.js","sourceRoot":"","sources":["../../src/cli/read-json-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-json-input.js","sourceRoot":"","sources":["../../src/cli/read-json-input.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"apply-from-json.d.ts","sourceRoot":"","sources":["../../src/commands/apply-from-json.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BzC,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAyJpE"}
1
+ {"version":3,"file":"apply-from-json.d.ts","sourceRoot":"","sources":["../../src/commands/apply-from-json.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAqKpE"}
@@ -1,5 +1,5 @@
1
1
  /** biome-ignore-all lint/suspicious/noConsole: Console output is intentional in CLI */
2
- import { readJsonInput } from '../cli/read-json-input.js';
2
+ import { readJsonInputWithOptionalStaged } from '../cli/read-json-input.js';
3
3
  import { loadConfig, resolveSpaceConfig } from '../config/load.js';
4
4
  import { createSafeEnvironment } from '../contentful/client.js';
5
5
  import { buildEntryFieldsFromSpec, entryFieldsSpecFromCreateFromJson, } from '../contentful/entry-fields.js';
@@ -11,26 +11,32 @@ import { isJsonMode } from '../output/mode.js';
11
11
  import { errorMsg, infoMsg, successMsg, warnMsg } from '../output/print.js';
12
12
  import { makeEntryLink } from '../session/refs.js';
13
13
  import { requireSession, saveSession } from '../session/store.js';
14
+ import { tryConsumeStagedUpload } from '../staged-upload/consume-text.js';
14
15
  import { cleanupCreatedEntries, processComponentSpec } from './create-from-json.js';
15
16
  const ROOT_TREE_FIELDS = new Set(['content', 'topContent', 'bottomContent', 'contents']);
16
17
  export function registerApplyFromJsonCommand(applyCmd) {
17
18
  applyCmd
18
19
  .command('from-json')
19
20
  .description('Apply a from-json document to the open session: update existing ids (exported versions), create new nodes, splice parent links.\n' +
20
- 'Provide --json or --json-base64. Use --dry-run to validate without CMA writes.')
21
+ 'Provide --json, --json-base64, or --staged <id>. Use --dry-run to validate without CMA writes.')
21
22
  .option('--json <json>', 'Inline JSON entry definition')
22
23
  .option('--json-base64 <encoded>', 'Base64-encoded JSON entry definition')
24
+ .option('--staged <id>', 'JSON from cms_edit_request_staged_upload (kind=json). Hosted only. Dry-run peeks without consuming.')
23
25
  .option('--dry-run', 'Validate and print the plan without writing to Contentful')
24
26
  .action(async (opts, cmd) => {
25
27
  const parentOpts = cmd.parent?.parent?.opts() ?? {};
26
28
  try {
27
29
  let parsed;
30
+ let consumeStaged = null;
28
31
  try {
29
- parsed = readJsonInput({
32
+ const loaded = await readJsonInputWithOptionalStaged({
30
33
  json: opts.json,
31
34
  jsonBase64: opts.jsonBase64,
35
+ staged: opts.staged,
32
36
  label: 'apply from-json',
33
37
  });
38
+ parsed = loaded.value;
39
+ consumeStaged = loaded.consumeStaged;
34
40
  }
35
41
  catch (err) {
36
42
  errorMsg(err instanceof Error ? err.message : String(err));
@@ -122,6 +128,7 @@ export function registerApplyFromJsonCommand(applyCmd) {
122
128
  saved: saved.length,
123
129
  created: createdEntryIds.length,
124
130
  };
131
+ await tryConsumeStagedUpload(consumeStaged, 'Apply succeeded');
125
132
  if (isJsonMode()) {
126
133
  console.log(JSON.stringify(summary));
127
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apply-from-json.js","sourceRoot":"","sources":["../../src/commands/apply-from-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-from-json.js","sourceRoot":"","sources":["../../src/commands/apply-from-json.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"article-tags-from-json.d.ts","sourceRoot":"","sources":["../../src/commands/article-tags-from-json.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuDzE"}
1
+ {"version":3,"file":"article-tags-from-json.d.ts","sourceRoot":"","sources":["../../src/commands/article-tags-from-json.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiEzE"}
@@ -1,26 +1,32 @@
1
1
  /** biome-ignore-all lint/suspicious/noConsole: Console output is intentional in CLI */
2
- import { readJsonInput } from '../cli/read-json-input.js';
2
+ import { readJsonInputWithOptionalStaged } from '../cli/read-json-input.js';
3
3
  import { runArticleTagsFromJson, } from '../contentful/article-tags-from-json.js';
4
4
  import { isJsonMode } from '../output/mode.js';
5
5
  import { errorMsg, infoMsg, warnMsg } from '../output/print.js';
6
+ import { tryConsumeStagedUpload } from '../staged-upload/consume-text.js';
6
7
  export function registerArticleTagsFromJsonCommand(program) {
7
8
  program
8
9
  .command('article-tags-from-json')
9
10
  .description('Set tags on one or more articles from JSON.\n' +
10
- 'Provide --json or --json-base64. Resolves tag slugs via the local index (run index sync first).\n' +
11
+ 'Provide --json, --json-base64, or --staged <id>. Resolves tag slugs via the local index (run index sync first).\n' +
11
12
  'Continues on per-item errors and reports successes and failures.')
12
13
  .option('--json <json>', 'Inline article-tags batch JSON')
13
14
  .option('--json-base64 <encoded>', 'Base64-encoded article-tags batch JSON')
15
+ .option('--staged <id>', 'JSON from cms_edit_request_staged_upload (kind=json). Hosted only.')
14
16
  .option('--dry-run', 'Validate and preview without saving')
15
17
  .action(async (opts) => {
16
18
  const parentOpts = program.opts();
17
19
  let spec;
20
+ let consumeStaged = null;
18
21
  try {
19
- spec = readJsonInput({
22
+ const loaded = await readJsonInputWithOptionalStaged({
20
23
  json: opts.json,
21
24
  jsonBase64: opts.jsonBase64,
25
+ staged: opts.staged,
22
26
  label: 'article-tags-from-json',
23
27
  });
28
+ spec = loaded.value;
29
+ consumeStaged = loaded.consumeStaged;
24
30
  }
25
31
  catch (err) {
26
32
  errorMsg(err instanceof Error ? err.message : String(err));
@@ -50,6 +56,9 @@ export function registerArticleTagsFromJsonCommand(program) {
50
56
  if (!batch.ok) {
51
57
  process.exit(1);
52
58
  }
59
+ if (!opts.dryRun) {
60
+ await tryConsumeStagedUpload(consumeStaged, 'Article tags updated');
61
+ }
53
62
  });
54
63
  }
55
64
  //# sourceMappingURL=article-tags-from-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"article-tags-from-json.js","sourceRoot":"","sources":["../../src/commands/article-tags-from-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"article-tags-from-json.js","sourceRoot":"","sources":["../../src/commands/article-tags-from-json.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/commands/asset.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAk1B3D"}
1
+ {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/commands/asset.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAm1B3D"}
@@ -22,6 +22,7 @@ import { errorMsg, infoMsg, successMsg, warnMsg } from '../output/print.js';
22
22
  import { getRuntimeContext } from '../runtime/context.js';
23
23
  import { makeAssetLink, makeEntryLink, resolveRef } from '../session/refs.js';
24
24
  import { requireSession, saveSession } from '../session/store.js';
25
+ import { assertStagedKind } from '../staged-upload/mime.js';
25
26
  function handleAssetCommandError(err) {
26
27
  if (err instanceof ContentIndexSyncError) {
27
28
  errorMsg(err.message);
@@ -388,6 +389,7 @@ export function registerAssetCommand(program) {
388
389
  process.exit(1);
389
390
  }
390
391
  const staged = await stagedStore.consume(userId, opts.staged);
392
+ assertStagedKind(staged.kind, ['asset']);
391
393
  summary = await uploadAssetBuffer(env, staged.buffer, {
392
394
  title: opts.title,
393
395
  description,