@superdoc/cli 0.35.2-next.1 → 0.36.0-next.2

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.
@@ -139,7 +139,7 @@
139
139
  },
140
140
  {
141
141
  "name": "superdoc_edit",
142
- "description": "The primary tool for inserting content into documents. ALWAYS use action \"insert\" with type \"markdown\" to create headings, paragraphs, or any block content: this is faster and creates proper document structure in one call. Do NOT use superdoc_create for headings or paragraphs. The markdown parser creates headings from # markers (# = Heading1, ## = Heading2), bold from **text**, italic from *text*, and numbered/bullet lists. Position markdown inserts with \"target\" (a BlockNodeAddress like {kind:\"block\", nodeType, nodeId}) and \"placement\" (before, after, insideStart, insideEnd). Without a target, content appends at the end of the document. IMPORTANT: After a markdown insert, analyze the document context (what kind of document, how titles and body text are styled) and follow up with ONE superdoc_mutations call to format inserted blocks so they look like they belong. Each format.apply step accepts \"inline\" (fontFamily, fontSize, bold, underline, color), \"alignment\", and \"scope\" in the same step. Use scope: \"block\" so formatting covers the entire paragraph. Copy the exact property values from the existing get_content blocks (fontFamily, fontSize, color, alignment, bold, underline). Do NOT invent values: use what the blocks show. Also supports replace, delete, and undo/redo. For ordinary replace and delete, pass a \"ref\" from superdoc_search or superdoc_get_content blocks. A search ref covers only the matched substring; a block ref covers the entire block text, so use block refs when rewriting or shortening whole paragraphs. To replace every block in the main body, use action \"replace\" with target:{kind:\"story\",storyType:\"body\"}, one text/value/content payload, and changeMode:\"direct\". This replaces body content, not the DOCX package, and does not require a search first. Tracked whole-body replacement is unsupported. For multi-step redlines or whole-clause rewrites, prefer superdoc_mutations with where:{by:\"block\", nodeType, nodeId} from superdoc_get_content action \"blocks\" includeText:true rather than relying on text selectors. Refs expire after any mutation; always re-search before the next edit. For 2+ edits that must succeed or fail atomically, use superdoc_mutations instead. Before an exact HTML or Markdown insert/replace that must be fidelity-checked, use action \"check_support\", review its outcome and diagnostics, then pass its guard back as \"supportCheck\" on the unchanged write. Supports \"dryRun\" to preview changes and \"changeMode: tracked\" to record edits as tracked changes. Do NOT build \"target\" objects manually when a ref is available; prefer \"ref\" for simpler, more reliable targeting.\n\nEXAMPLES:\n 1. {\"action\":\"insert\",\"type\":\"markdown\",\"target\":{\"kind\":\"block\",\"nodeType\":\"paragraph\",\"nodeId\":\"<nodeId>\"},\"placement\":\"before\",\"value\":\"# Executive Summary\\n\\nThis agreement sets forth the principal terms...\",\"changeMode\":\"direct\"}\n 2. {\"action\":\"insert\",\"type\":\"html\",\"value\":\"<h2>Review heading</h2><p>Tracked rich content.</p>\",\"changeMode\":\"tracked\"}\n 3. {\"action\":\"insert\",\"type\":\"markdown\",\"value\":\"# Section Title\\n\\nParagraph content here.\\n\\n# Another Section\\n\\nMore content with **bold** and *italic*.\"}\n 4. {\"action\":\"replace\",\"ref\":\"<handle.ref>\",\"text\":\"new text here\"}\n 5. {\"action\":\"replace\",\"ref\":\"<handle.ref>\",\"value\":\"**Direct rich replacement**\",\"type\":\"markdown\",\"changeMode\":\"direct\"}\n 6. {\"action\":\"replace\",\"ref\":\"<handle.ref>\",\"value\":\"<strong>Tracked rich replacement</strong>\",\"type\":\"html\",\"changeMode\":\"tracked\"}\n 7. {\"action\":\"check_support\",\"operation\":\"insert\",\"input\":{\"type\":\"markdown\",\"value\":\"# Checked section\"},\"options\":{\"changeMode\":\"direct\"}}\n 8. {\"action\":\"replace\",\"target\":{\"kind\":\"story\",\"storyType\":\"body\"},\"value\":\"# Replacement\\n\\nComplete new body.\",\"type\":\"markdown\",\"changeMode\":\"direct\"}\n 9. {\"action\":\"delete\",\"ref\":\"<handle.ref>\"}\n 10. {\"action\":\"undo\"}",
142
+ "description": "The primary tool for inserting content into documents. ALWAYS use action \"insert\" with type \"markdown\" to create headings, paragraphs, or any block content: this is faster and creates proper document structure in one call. Do NOT use superdoc_create for headings or paragraphs. The markdown parser creates headings from # markers (# = Heading1, ## = Heading2), bold from **text**, italic from *text*, and numbered/bullet lists. Position markdown inserts with \"target\" (a BlockNodeAddress like {kind:\"block\", nodeType, nodeId}) and \"placement\" (before, after, insideStart, insideEnd). Without a target, content appends at the end of the document. IMPORTANT: After a markdown insert, analyze the document context (what kind of document, how titles and body text are styled) and follow up with ONE superdoc_mutations call to format inserted blocks so they look like they belong. Each format.apply step accepts \"inline\" (fontFamily, fontSize, bold, underline, color), \"alignment\", and \"scope\" in the same step. Use scope: \"block\" so formatting covers the entire paragraph. Copy the exact property values from the existing get_content blocks (fontFamily, fontSize, color, alignment, bold, underline). Do NOT invent values: use what the blocks show. Also supports replace, delete, and undo/redo. For ordinary replace and delete, pass a \"ref\" from superdoc_search or superdoc_get_content blocks. Action \"delete\" removes a text range and leaves the block container in place. To remove a whole paragraph, heading, list item, or table, use action \"delete_block\" with target:{kind:\"block\", nodeType, nodeId} from superdoc_get_content action \"blocks\", or action \"delete_block_range\" with \"start\" and \"end\" block addresses to remove a contiguous span of top-level blocks (inclusive). A search ref covers only the matched substring; a block ref covers the entire block text, so use block refs when rewriting or shortening whole paragraphs. To replace every block in the main body, use action \"replace\" with target:{kind:\"story\",storyType:\"body\"}, one text/value/content payload, and changeMode:\"direct\". This replaces body content, not the DOCX package, and does not require a search first. Tracked whole-body replacement is unsupported. For multi-step redlines or whole-clause rewrites, prefer superdoc_mutations with where:{by:\"block\", nodeType, nodeId} from superdoc_get_content action \"blocks\" includeText:true rather than relying on text selectors. Refs expire after any mutation; always re-search before the next edit. For 2+ edits that must succeed or fail atomically, use superdoc_mutations instead. Before an exact HTML or Markdown insert/replace that must be fidelity-checked, use action \"check_support\", review its outcome and diagnostics, then pass its guard back as \"supportCheck\" on the unchanged write. Supports \"dryRun\" to preview changes and \"changeMode: tracked\" to record edits as tracked changes. Do NOT build \"target\" objects manually when a ref is available; prefer \"ref\" for simpler, more reliable targeting.\n\nEXAMPLES:\n 1. {\"action\":\"insert\",\"type\":\"markdown\",\"target\":{\"kind\":\"block\",\"nodeType\":\"paragraph\",\"nodeId\":\"<nodeId>\"},\"placement\":\"before\",\"value\":\"# Executive Summary\\n\\nThis agreement sets forth the principal terms...\",\"changeMode\":\"direct\"}\n 2. {\"action\":\"insert\",\"type\":\"html\",\"value\":\"<h2>Review heading</h2><p>Tracked rich content.</p>\",\"changeMode\":\"tracked\"}\n 3. {\"action\":\"insert\",\"type\":\"markdown\",\"value\":\"# Section Title\\n\\nParagraph content here.\\n\\n# Another Section\\n\\nMore content with **bold** and *italic*.\"}\n 4. {\"action\":\"replace\",\"ref\":\"<handle.ref>\",\"text\":\"new text here\"}\n 5. {\"action\":\"replace\",\"ref\":\"<handle.ref>\",\"value\":\"**Direct rich replacement**\",\"type\":\"markdown\",\"changeMode\":\"direct\"}\n 6. {\"action\":\"replace\",\"ref\":\"<handle.ref>\",\"value\":\"<strong>Tracked rich replacement</strong>\",\"type\":\"html\",\"changeMode\":\"tracked\"}\n 7. {\"action\":\"check_support\",\"operation\":\"insert\",\"input\":{\"type\":\"markdown\",\"value\":\"# Checked section\"},\"options\":{\"changeMode\":\"direct\"}}\n 8. {\"action\":\"replace\",\"target\":{\"kind\":\"story\",\"storyType\":\"body\"},\"value\":\"# Replacement\\n\\nComplete new body.\",\"type\":\"markdown\",\"changeMode\":\"direct\"}\n 9. {\"action\":\"delete\",\"ref\":\"<handle.ref>\"}\n 10. {\"action\":\"delete_block\",\"target\":{\"kind\":\"block\",\"nodeType\":\"heading\",\"nodeId\":\"<nodeId>\"}}\n 11. {\"action\":\"undo\"}",
143
143
  "parameters": {
144
144
  "type": "object",
145
145
  "properties": {
@@ -148,12 +148,14 @@
148
148
  "enum": [
149
149
  "check_support",
150
150
  "delete",
151
+ "delete_block",
152
+ "delete_block_range",
151
153
  "insert",
152
154
  "redo",
153
155
  "replace",
154
156
  "undo"
155
157
  ],
156
- "description": "The action to perform. One of: check_support, delete, insert, redo, replace, undo."
158
+ "description": "The action to perform. One of: check_support, delete, delete_block, delete_block_range, insert, redo, replace, undo."
157
159
  },
158
160
  "force": {
159
161
  "type": "boolean",
@@ -165,7 +167,7 @@
165
167
  },
166
168
  "dryRun": {
167
169
  "type": "boolean",
168
- "description": "Preview the result without applying changes. Only for actions 'insert', 'replace', 'delete'. Omit for other actions."
170
+ "description": "Preview the result without applying changes."
169
171
  },
170
172
  "supportCheck": {
171
173
  "type": "object",
@@ -201,45 +203,53 @@
201
203
  "description": "Guard returned by capabilities check for this exact HTML or Markdown write. Only for actions 'insert', 'replace'. Omit for other actions."
202
204
  },
203
205
  "target": {
204
- "oneOf": [
206
+ "anyOf": [
205
207
  {
206
- "oneOf": [
208
+ "anyOf": [
207
209
  {
208
- "$ref": "#/$defs/BlockNodeAddress",
210
+ "anyOf": [
211
+ {
212
+ "$ref": "#/$defs/BlockNodeAddress",
213
+ "description": "Block address for structural insertion: {kind:'block', nodeType:'...', nodeId:'...'}."
214
+ },
215
+ {
216
+ "type": "object",
217
+ "properties": {
218
+ "kind": {
219
+ "const": "story",
220
+ "type": "string"
221
+ },
222
+ "storyType": {
223
+ "const": "body",
224
+ "type": "string"
225
+ }
226
+ },
227
+ "additionalProperties": false,
228
+ "required": [
229
+ "kind",
230
+ "storyType"
231
+ ]
232
+ }
233
+ ],
209
234
  "description": "Block address for structural insertion: {kind:'block', nodeType:'...', nodeId:'...'}."
210
235
  },
211
236
  {
212
- "type": "object",
213
- "properties": {
214
- "kind": {
215
- "const": "story",
216
- "type": "string"
217
- },
218
- "storyType": {
219
- "const": "body",
220
- "type": "string"
221
- }
222
- },
223
- "additionalProperties": false,
224
- "required": [
225
- "kind",
226
- "storyType"
227
- ]
237
+ "$ref": "#/$defs/SelectionTarget",
238
+ "description": "Selection target: {kind:'selection', start:{kind:'text', blockId, offset}, end:{kind:'text', blockId, offset}}. Use 'ref' instead when you have a search result handle."
228
239
  }
229
240
  ],
230
241
  "description": "Block address for structural insertion: {kind:'block', nodeType:'...', nodeId:'...'}."
231
242
  },
232
243
  {
233
- "$ref": "#/$defs/SelectionTarget",
234
- "description": "Selection target: {kind:'selection', start:{kind:'text', blockId, offset}, end:{kind:'text', blockId, offset}}. Use 'ref' instead when you have a search result handle."
244
+ "$ref": "#/$defs/DeletableBlockNodeAddress"
235
245
  }
236
246
  ],
237
- "description": "Block address for structural insertion: {kind:'block', nodeType:'...', nodeId:'...'}. Only for actions 'insert', 'replace', 'delete'. Omit for other actions."
247
+ "description": "Block address for structural insertion: {kind:'block', nodeType:'...', nodeId:'...'}. Required for action 'delete_block'."
238
248
  },
239
249
  "in": {
240
- "oneOf": [
250
+ "anyOf": [
241
251
  {
242
- "oneOf": [
252
+ "anyOf": [
243
253
  {
244
254
  "$ref": "#/$defs/StoryLocator",
245
255
  "description": "Story scope. Defaults to document body when omitted. Use {kind:'story', storyType:'body'} for body, or other storyType values for headers, footers, footnotes, endnotes."
@@ -423,7 +433,7 @@
423
433
  "description": "Story scope. Defaults to document body when omitted. Use {kind:'story', storyType:'body'} for body, or other storyType values for headers, footers, footnotes, endnotes. Only for actions 'insert', 'replace', 'delete'. Omit for other actions."
424
434
  },
425
435
  "value": {
426
- "oneOf": [
436
+ "anyOf": [
427
437
  {
428
438
  "type": "string",
429
439
  "description": "HTML or Markdown content to convert and insert."
@@ -436,7 +446,7 @@
436
446
  "description": "HTML or Markdown content to convert and insert. Only for actions 'insert', 'replace'. Omit for other actions."
437
447
  },
438
448
  "type": {
439
- "oneOf": [
449
+ "anyOf": [
440
450
  {
441
451
  "type": "string",
442
452
  "oneOf": [
@@ -464,9 +474,9 @@
464
474
  "description": "Only for actions 'insert', 'replace'. Omit for other actions."
465
475
  },
466
476
  "ref": {
467
- "oneOf": [
477
+ "anyOf": [
468
478
  {
469
- "oneOf": [
479
+ "anyOf": [
470
480
  {
471
481
  "type": "string",
472
482
  "description": "Handle ref from superdoc_search result (pass handle.ref value directly). Preferred over building a target object."
@@ -495,7 +505,7 @@
495
505
  "description": "Where to place content relative to target: 'before', 'after', 'insideStart', or 'insideEnd'. Only for action 'insert'. Omit for other actions."
496
506
  },
497
507
  "content": {
498
- "oneOf": [
508
+ "anyOf": [
499
509
  {
500
510
  "oneOf": [
501
511
  {
@@ -529,7 +539,7 @@
529
539
  "description": "Document fragment to insert (structured content). Only for actions 'insert', 'replace'. Omit for other actions."
530
540
  },
531
541
  "nestingPolicy": {
532
- "oneOf": [
542
+ "anyOf": [
533
543
  {
534
544
  "type": "object",
535
545
  "properties": {
@@ -566,14 +576,28 @@
566
576
  "$ref": "#/$defs/DeleteBehavior",
567
577
  "description": "Delete behavior: 'selection' (default) or 'exact'. Only for action 'delete'. Omit for other actions."
568
578
  },
579
+ "start": {
580
+ "$ref": "#/$defs/BlockNodeAddress",
581
+ "description": "Required for action 'delete_block_range'."
582
+ },
583
+ "end": {
584
+ "$ref": "#/$defs/BlockNodeAddress",
585
+ "description": "Required for action 'delete_block_range'."
586
+ },
569
587
  "operation": {
570
- "oneOf": [
588
+ "anyOf": [
571
589
  {
572
- "oneOf": [
590
+ "anyOf": [
573
591
  {
574
- "enum": [
575
- "insert",
576
- "replace"
592
+ "anyOf": [
593
+ {
594
+ "const": "insert",
595
+ "type": "string"
596
+ },
597
+ {
598
+ "const": "replace",
599
+ "type": "string"
600
+ }
577
601
  ]
578
602
  },
579
603
  {
@@ -590,11 +614,11 @@
590
614
  "description": "Required for action 'check_support'."
591
615
  },
592
616
  "input": {
593
- "oneOf": [
617
+ "anyOf": [
594
618
  {
595
- "oneOf": [
619
+ "anyOf": [
596
620
  {
597
- "oneOf": [
621
+ "anyOf": [
598
622
  {
599
623
  "oneOf": [
600
624
  {
@@ -859,11 +883,13 @@
859
883
  },
860
884
  "metadata": {
861
885
  "mutates": true,
862
- "operationCount": 6,
886
+ "operationCount": 8,
863
887
  "operations": [
864
888
  "doc.insert",
865
889
  "doc.replace",
866
890
  "doc.delete",
891
+ "doc.blocks.delete",
892
+ "doc.blocks.deleteRange",
867
893
  "doc.capabilities.check",
868
894
  "doc.history.undo",
869
895
  "doc.history.redo"
@@ -912,19 +938,19 @@
912
938
  "description": "Preview the result without applying changes."
913
939
  },
914
940
  "target": {
915
- "oneOf": [
941
+ "anyOf": [
916
942
  {
917
- "oneOf": [
943
+ "anyOf": [
918
944
  {
919
- "oneOf": [
945
+ "anyOf": [
920
946
  {
921
- "oneOf": [
947
+ "anyOf": [
922
948
  {
923
- "oneOf": [
949
+ "anyOf": [
924
950
  {
925
- "oneOf": [
951
+ "anyOf": [
926
952
  {
927
- "oneOf": [
953
+ "anyOf": [
928
954
  {
929
955
  "$ref": "#/$defs/SelectionTarget",
930
956
  "description": "Selection target: {kind:'selection', start:{kind:'text', blockId, offset}, end:{kind:'text', blockId, offset}}. Use 'ref' instead when you have a search result handle."
@@ -1860,7 +1886,7 @@
1860
1886
  "description": "Handle ref string from a superdoc_search result. Pass the handle.ref value directly (e.g. 'text:eyJ...'). Preferred over 'target' for inline formatting. Only for action 'inline'. Omit for other actions."
1861
1887
  },
1862
1888
  "styleId": {
1863
- "oneOf": [
1889
+ "anyOf": [
1864
1890
  {
1865
1891
  "type": "string",
1866
1892
  "minLength": 1,
@@ -2093,7 +2119,7 @@
2093
2119
  "description": "Story scope. Defaults to document body when omitted. Use {kind:'story', storyType:'body'} for body, or other storyType values for headers, footers, footnotes, endnotes."
2094
2120
  },
2095
2121
  "at": {
2096
- "oneOf": [
2122
+ "anyOf": [
2097
2123
  {
2098
2124
  "description": "Position: {kind:'documentEnd'} to append, {kind:'documentStart'} to prepend, or {kind:'before'|'after', target:{kind:'block', nodeType:'...', nodeId:'...'}} for relative placement.",
2099
2125
  "oneOf": [
@@ -2289,7 +2315,7 @@
2289
2315
  "description": "Position: {kind:'documentEnd'} to append, {kind:'documentStart'} to prepend, or {kind:'before'|'after', target:{kind:'block', nodeType:'...', nodeId:'...'}} for relative placement."
2290
2316
  },
2291
2317
  "text": {
2292
- "oneOf": [
2318
+ "anyOf": [
2293
2319
  {
2294
2320
  "type": "string",
2295
2321
  "description": "Paragraph text content. Each call creates ONE paragraph. For multiple items (e.g. list items), call superdoc_create separately for each item: do NOT use newlines to put multiple items in one paragraph."
@@ -2302,7 +2328,7 @@
2302
2328
  "description": "Paragraph text content. Each call creates ONE paragraph. For multiple items (e.g. list items), call superdoc_create separately for each item: do NOT use newlines to put multiple items in one paragraph."
2303
2329
  },
2304
2330
  "input": {
2305
- "oneOf": [
2331
+ "anyOf": [
2306
2332
  {
2307
2333
  "type": "object",
2308
2334
  "description": "Full paragraph input as JSON (alternative to individual text/at params)."
@@ -2393,29 +2419,29 @@
2393
2419
  "description": "Preview the result without applying changes."
2394
2420
  },
2395
2421
  "target": {
2396
- "oneOf": [
2422
+ "anyOf": [
2397
2423
  {
2398
- "oneOf": [
2424
+ "anyOf": [
2399
2425
  {
2400
- "oneOf": [
2426
+ "anyOf": [
2401
2427
  {
2402
- "oneOf": [
2428
+ "anyOf": [
2403
2429
  {
2404
- "oneOf": [
2430
+ "anyOf": [
2405
2431
  {
2406
- "oneOf": [
2432
+ "anyOf": [
2407
2433
  {
2408
- "oneOf": [
2434
+ "anyOf": [
2409
2435
  {
2410
- "oneOf": [
2436
+ "anyOf": [
2411
2437
  {
2412
- "oneOf": [
2438
+ "anyOf": [
2413
2439
  {
2414
- "oneOf": [
2440
+ "anyOf": [
2415
2441
  {
2416
- "oneOf": [
2442
+ "anyOf": [
2417
2443
  {
2418
- "oneOf": [
2444
+ "anyOf": [
2419
2445
  {
2420
2446
  "$ref": "#/$defs/ListItemAddress",
2421
2447
  "description": "The target list item. For 'insert': the item to insert relative to. For 'create' with mode 'fromParagraphs': use nodeType 'paragraph' instead. Format: {kind:'block', nodeType:'listItem', nodeId:'<id>'}."
@@ -2531,9 +2557,9 @@
2531
2557
  "description": "List type: 'bullet' for bullet points, 'ordered' for numbered lists. Required for action 'set_type'."
2532
2558
  },
2533
2559
  "level": {
2534
- "oneOf": [
2560
+ "anyOf": [
2535
2561
  {
2536
- "oneOf": [
2562
+ "anyOf": [
2537
2563
  {
2538
2564
  "type": "integer",
2539
2565
  "minimum": 0,
@@ -2780,7 +2806,7 @@
2780
2806
  "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
2781
2807
  },
2782
2808
  "text": {
2783
- "oneOf": [
2809
+ "anyOf": [
2784
2810
  {
2785
2811
  "type": "string",
2786
2812
  "description": "Comment text content."
@@ -2793,7 +2819,7 @@
2793
2819
  "description": "Comment text content. Required for action 'create'."
2794
2820
  },
2795
2821
  "target": {
2796
- "oneOf": [
2822
+ "anyOf": [
2797
2823
  {
2798
2824
  "description": "Text range to anchor the comment. Accepts either a single-block TextAddress {kind:'text', blockId, range}, a multi-segment TextTarget {kind:'text', segments:[{blockId, range}, ...]} for selections that span blocks, a SelectionTarget {kind:'selection', start, end} returned by query.match, a TextSearchCommentTarget {text, story?}, or a TrackedChangeCommentTarget ({kind:'trackedChange', trackedChangeId, side?} or {trackedChangeId, side?}) that names a logical tracked-change id as a convenience anchor .",
2799
2825
  "oneOf": [
@@ -5731,46 +5757,46 @@
5731
5757
  "description": "Preview the result without applying changes."
5732
5758
  },
5733
5759
  "target": {
5734
- "oneOf": [
5760
+ "anyOf": [
5735
5761
  {
5736
- "oneOf": [
5762
+ "anyOf": [
5737
5763
  {
5738
- "oneOf": [
5764
+ "anyOf": [
5739
5765
  {
5740
- "oneOf": [
5766
+ "anyOf": [
5741
5767
  {
5742
- "oneOf": [
5768
+ "anyOf": [
5743
5769
  {
5744
- "oneOf": [
5770
+ "anyOf": [
5745
5771
  {
5746
- "oneOf": [
5772
+ "anyOf": [
5747
5773
  {
5748
- "oneOf": [
5774
+ "anyOf": [
5749
5775
  {
5750
- "oneOf": [
5776
+ "anyOf": [
5751
5777
  {
5752
- "oneOf": [
5778
+ "anyOf": [
5753
5779
  {
5754
- "oneOf": [
5780
+ "anyOf": [
5755
5781
  {
5756
- "oneOf": [
5782
+ "anyOf": [
5757
5783
  {
5758
- "oneOf": [
5784
+ "anyOf": [
5759
5785
  {
5760
- "oneOf": [
5786
+ "anyOf": [
5761
5787
  {
5762
- "oneOf": [
5788
+ "anyOf": [
5763
5789
  {
5764
- "oneOf": [
5790
+ "anyOf": [
5765
5791
  {
5766
- "oneOf": [
5792
+ "anyOf": [
5767
5793
  {
5768
5794
  "$ref": "#/$defs/TableAddress"
5769
5795
  },
5770
5796
  {
5771
- "oneOf": [
5797
+ "anyOf": [
5772
5798
  {
5773
- "oneOf": [
5799
+ "anyOf": [
5774
5800
  {
5775
5801
  "$ref": "#/$defs/TableRowAddress"
5776
5802
  },
@@ -5787,7 +5813,7 @@
5787
5813
  ]
5788
5814
  },
5789
5815
  {
5790
- "oneOf": [
5816
+ "anyOf": [
5791
5817
  {
5792
5818
  "$ref": "#/$defs/TableRowAddress"
5793
5819
  },
@@ -5799,7 +5825,7 @@
5799
5825
  ]
5800
5826
  },
5801
5827
  {
5802
- "oneOf": [
5828
+ "anyOf": [
5803
5829
  {
5804
5830
  "$ref": "#/$defs/TableRowAddress"
5805
5831
  },
@@ -5811,7 +5837,7 @@
5811
5837
  ]
5812
5838
  },
5813
5839
  {
5814
- "oneOf": [
5840
+ "anyOf": [
5815
5841
  {
5816
5842
  "$ref": "#/$defs/TableRowAddress"
5817
5843
  },
@@ -5823,7 +5849,7 @@
5823
5849
  ]
5824
5850
  },
5825
5851
  {
5826
- "oneOf": [
5852
+ "anyOf": [
5827
5853
  {
5828
5854
  "$ref": "#/$defs/TableRowAddress"
5829
5855
  },
@@ -5860,7 +5886,7 @@
5860
5886
  ]
5861
5887
  },
5862
5888
  {
5863
- "oneOf": [
5889
+ "anyOf": [
5864
5890
  {
5865
5891
  "$ref": "#/$defs/TableCellAddress"
5866
5892
  },
@@ -5877,7 +5903,7 @@
5877
5903
  ]
5878
5904
  },
5879
5905
  {
5880
- "oneOf": [
5906
+ "anyOf": [
5881
5907
  {
5882
5908
  "$ref": "#/$defs/TableCellAddress"
5883
5909
  },
@@ -5973,7 +5999,7 @@
5973
5999
  "description": "Only for actions 'insert_row', 'delete_row', 'move_row', 'set_row', 'set_row_options', 'unmerge_cells', 'set_cell_text'. Omit for other actions."
5974
6000
  },
5975
6001
  "destination": {
5976
- "oneOf": [
6002
+ "anyOf": [
5977
6003
  {
5978
6004
  "oneOf": [
5979
6005
  {
@@ -6371,9 +6397,15 @@
6371
6397
  "description": "Only for action 'set_style_options'. Omit for other actions."
6372
6398
  },
6373
6399
  "mode": {
6374
- "enum": [
6375
- "applyTo",
6376
- "edges"
6400
+ "anyOf": [
6401
+ {
6402
+ "const": "applyTo",
6403
+ "type": "string"
6404
+ },
6405
+ {
6406
+ "const": "edges",
6407
+ "type": "string"
6408
+ }
6377
6409
  ],
6378
6410
  "description": "Required for action 'set_borders'."
6379
6411
  },