@tiwater/office-mcp 0.15.1 → 0.15.3

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 (91) hide show
  1. package/_shared/tool-runtime.mjs +2 -1
  2. package/office/README.md +8 -0
  3. package/office/contracts/docx_apply_font_policy.schema.json +6 -3
  4. package/office/contracts/docx_apply_toc_style_policy.schema.json +6 -3
  5. package/office/contracts/docx_collapse_trailing_empty_paragraphs.schema.json +6 -3
  6. package/office/contracts/docx_collapse_trailing_empty_section.schema.json +6 -3
  7. package/office/contracts/docx_compare.schema.json +4 -2
  8. package/office/contracts/docx_copy_table_range.schema.json +8 -4
  9. package/office/contracts/docx_delete_body_drawing_before_paragraph.schema.json +6 -3
  10. package/office/contracts/docx_delete_body_paragraph.schema.json +6 -3
  11. package/office/contracts/docx_delete_body_range.schema.json +6 -3
  12. package/office/contracts/docx_delete_comments.schema.json +6 -3
  13. package/office/contracts/docx_delete_table_rows.schema.json +6 -3
  14. package/office/contracts/docx_export_json.schema.json +4 -2
  15. package/office/contracts/docx_find_literal.schema.json +2 -1
  16. package/office/contracts/docx_freeze_fields.schema.json +6 -3
  17. package/office/contracts/docx_insert_body_image.schema.json +8 -4
  18. package/office/contracts/docx_insert_body_range.schema.json +8 -4
  19. package/office/contracts/docx_insert_table_columns.schema.json +6 -3
  20. package/office/contracts/docx_insert_table_rows.schema.json +6 -3
  21. package/office/contracts/docx_inspect.schema.json +4 -2
  22. package/office/contracts/docx_inspect_tables.schema.json +4 -2
  23. package/office/contracts/docx_list_objects.schema.json +2 -1
  24. package/office/contracts/docx_mark_fields_dirty.schema.json +6 -3
  25. package/office/contracts/docx_merge_table_cells.schema.json +6 -3
  26. package/office/contracts/docx_read_object.schema.json +2 -1
  27. package/office/contracts/docx_replace_body_text.schema.json +6 -3
  28. package/office/contracts/docx_replace_drawing_image.schema.json +8 -4
  29. package/office/contracts/docx_replace_header_text.schema.json +6 -3
  30. package/office/contracts/docx_replace_style_ids.schema.json +4 -2
  31. package/office/contracts/docx_replace_table_rows.schema.json +6 -3
  32. package/office/contracts/docx_sanitize_fields.schema.json +6 -3
  33. package/office/contracts/docx_set_anchored_text.schema.json +6 -3
  34. package/office/contracts/docx_set_body_paragraph_keep_lines.schema.json +6 -3
  35. package/office/contracts/docx_set_body_paragraph_keep_next.schema.json +6 -3
  36. package/office/contracts/docx_set_footer_paragraph_text.schema.json +6 -3
  37. package/office/contracts/docx_set_footer_run_text.schema.json +6 -3
  38. package/office/contracts/docx_set_footer_table_cell_run_text.schema.json +6 -3
  39. package/office/contracts/docx_set_footer_table_cell_text.schema.json +6 -3
  40. package/office/contracts/docx_set_header_paragraph_font_size.schema.json +6 -3
  41. package/office/contracts/docx_set_header_paragraph_text.schema.json +6 -3
  42. package/office/contracts/docx_set_header_run_text.schema.json +6 -3
  43. package/office/contracts/docx_set_header_table_cell_run_text.schema.json +6 -3
  44. package/office/contracts/docx_set_header_table_cell_text.schema.json +6 -3
  45. package/office/contracts/docx_set_paragraph_run_text.schema.json +6 -3
  46. package/office/contracts/docx_set_paragraph_text.schema.json +6 -3
  47. package/office/contracts/docx_set_table_cell_alignment.schema.json +6 -3
  48. package/office/contracts/docx_set_table_cell_font_size.schema.json +6 -3
  49. package/office/contracts/docx_set_table_cell_no_wrap.schema.json +6 -3
  50. package/office/contracts/docx_set_table_cell_rich_text.schema.json +6 -3
  51. package/office/contracts/docx_set_table_cell_run_text.schema.json +6 -3
  52. package/office/contracts/docx_set_table_cell_text.schema.json +6 -3
  53. package/office/contracts/docx_set_table_row_cant_split.schema.json +6 -3
  54. package/office/contracts/docx_set_table_row_height.schema.json +6 -3
  55. package/office/contracts/docx_set_table_row_keep_next.schema.json +6 -3
  56. package/office/contracts/docx_set_table_row_repeat_as_header.schema.json +6 -3
  57. package/office/contracts/docx_set_table_width.schema.json +6 -3
  58. package/office/contracts/docx_start_section.schema.json +6 -3
  59. package/office/contracts/docx_strip_direct_formatting.schema.json +4 -2
  60. package/office/contracts/docx_unmerge_table_column_cells.schema.json +6 -3
  61. package/office/contracts/docx_unmerge_table_row_cells.schema.json +6 -3
  62. package/office/contracts/docx_validate.schema.json +2 -1
  63. package/office/contracts/docx_validate_font_policy.schema.json +2 -1
  64. package/office/contracts/docx_validate_toc_style_policy.schema.json +2 -1
  65. package/office/contracts/office_render_pdf.schema.json +6 -3
  66. package/office/contracts/pptx_apply_format.schema.json +6 -3
  67. package/office/contracts/pptx_apply_template.schema.json +8 -4
  68. package/office/contracts/pptx_export_json.schema.json +4 -2
  69. package/office/contracts/pptx_inspect.schema.json +4 -2
  70. package/office/contracts/pptx_replace_picture_image.schema.json +8 -4
  71. package/office/contracts/pptx_set_shape_geometry.schema.json +6 -3
  72. package/office/contracts/pptx_validate.schema.json +2 -1
  73. package/office/contracts/tiwater-office-provider-contract-manifest-v1.json +173 -173
  74. package/office/contracts/xlsx_convert_legacy.schema.json +6 -3
  75. package/office/contracts/xlsx_copy_row.schema.json +6 -3
  76. package/office/contracts/xlsx_delete_rows.schema.json +6 -3
  77. package/office/contracts/xlsx_expand_section_rows.schema.json +6 -3
  78. package/office/contracts/xlsx_export_json.schema.json +4 -2
  79. package/office/contracts/xlsx_insert_rows.schema.json +6 -3
  80. package/office/contracts/xlsx_inspect.schema.json +4 -2
  81. package/office/contracts/xlsx_set_cell_number_format.schema.json +6 -3
  82. package/office/contracts/xlsx_set_cell_value.schema.json +6 -3
  83. package/office/contracts/xlsx_set_column_width.schema.json +6 -3
  84. package/office/contracts/xlsx_set_page_setup.schema.json +6 -3
  85. package/office/contracts/xlsx_set_print_area.schema.json +6 -3
  86. package/office/contracts/xlsx_set_range_values.schema.json +6 -3
  87. package/office/contracts/xlsx_set_rich_text_cell_value.schema.json +6 -3
  88. package/office/contracts/xlsx_set_row_page_breaks.schema.json +6 -3
  89. package/office/contracts/xlsx_validate.schema.json +2 -1
  90. package/office/index.mjs +4 -1
  91. package/package.json +1 -1
@@ -8,8 +8,9 @@ import { spawn } from 'node:child_process';
8
8
  const sharedDir = path.dirname(fileURLToPath(import.meta.url));
9
9
  export const repoRoot = path.resolve(sharedDir, '..', '..');
10
10
 
11
- export function createToolResult(payload) {
11
+ export function createToolResult(payload, { isError = false } = {}) {
12
12
  return {
13
+ ...(isError ? { isError: true } : {}),
13
14
  structuredContent: payload,
14
15
  content: [
15
16
  {
package/office/README.md CHANGED
@@ -6,6 +6,11 @@ The server owns technical observation, native conversion, fixed-action edits,
6
6
  package validation, and native WPS rendering. Callers own document selections,
7
7
  values, business mappings, workflow decisions, and delivery status.
8
8
 
9
+ Every filesystem argument is identified in the published MCP input schema by
10
+ `x-tiwater-file-role`. `read` marks an existing provider input; `write` marks a
11
+ new provider artifact. Strings without this metadata are document values or
12
+ OpenXML-internal identifiers, not filesystem arguments.
13
+
9
14
  ## Capability families
10
15
 
11
16
  - DOCX: inspect document/tables, export, compare, validate OpenXML, font, and table-of-contents styles
@@ -22,6 +27,9 @@ Each mutation tool fixes its provider operation type. Callers submit only the
22
27
  coordinates and values for that action, so they cannot provide an arbitrary
23
28
  operation discriminator or a multi-action plan language. A call may batch
24
29
  multiple changes only when every change has the same action kind.
30
+ When a completed mutation receipt reports `summary.pass=false`, the MCP result
31
+ also sets the standard `isError` field; consumers do not need a private failure
32
+ interpretation.
25
33
 
26
34
  Structural worksheet row deletion is exposed as `xlsx_delete_rows`. Each change
27
35
  contains only `sheet`, `startRow`, and `count`; unsupported dependent workbook
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  }
19
22
  },
20
23
  "required": [
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  }
19
22
  },
20
23
  "required": [
@@ -4,11 +4,13 @@
4
4
  "properties": {
5
5
  "baseline": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "updated": {
10
11
  "type": "string",
11
- "minLength": 1
12
+ "minLength": 1,
13
+ "x-tiwater-file-role": "read"
12
14
  }
13
15
  },
14
16
  "required": [
@@ -11,7 +11,8 @@
11
11
  "properties": {
12
12
  "input": {
13
13
  "type": "string",
14
- "minLength": 1
14
+ "minLength": 1,
15
+ "x-tiwater-file-role": "read"
15
16
  },
16
17
  "revision": {
17
18
  "type": "string",
@@ -38,7 +39,8 @@
38
39
  "properties": {
39
40
  "input": {
40
41
  "type": "string",
41
- "minLength": 1
42
+ "minLength": 1,
43
+ "x-tiwater-file-role": "read"
42
44
  },
43
45
  "revision": {
44
46
  "type": "string",
@@ -91,11 +93,13 @@
91
93
  },
92
94
  "output": {
93
95
  "type": "string",
94
- "minLength": 1
96
+ "minLength": 1,
97
+ "x-tiwater-file-role": "write"
95
98
  },
96
99
  "receiptOutput": {
97
100
  "type": "string",
98
- "minLength": 1
101
+ "minLength": 1,
102
+ "x-tiwater-file-role": "write"
99
103
  }
100
104
  },
101
105
  "required": [
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,12 +4,14 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New JSON artifact path. Existing files are never overwritten."
13
+ "description": "New JSON artifact path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  }
14
16
  },
15
17
  "required": [
@@ -4,7 +4,8 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "literal": {
10
11
  "type": "string",
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  }
19
22
  },
20
23
  "required": [
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -29,7 +32,8 @@
29
32
  },
30
33
  "image": {
31
34
  "type": "string",
32
- "minLength": 1
35
+ "minLength": 1,
36
+ "x-tiwater-file-role": "read"
33
37
  },
34
38
  "widthEmu": {
35
39
  "type": "integer",
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -24,7 +27,8 @@
24
27
  "properties": {
25
28
  "source": {
26
29
  "type": "string",
27
- "minLength": 1
30
+ "minLength": 1,
31
+ "x-tiwater-file-role": "read"
28
32
  },
29
33
  "sourceStartBodyIndex": {
30
34
  "type": "integer",
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,12 +4,14 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New JSON artifact path. Existing files are never overwritten."
13
+ "description": "New JSON artifact path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  }
14
16
  },
15
17
  "required": [
@@ -4,12 +4,14 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New JSON artifact path. Existing files are never overwritten."
13
+ "description": "New JSON artifact path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  }
14
16
  },
15
17
  "required": [
@@ -4,7 +4,8 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "kind": {
10
11
  "type": "string",
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  }
19
22
  },
20
23
  "required": [
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,7 +4,8 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "ref": {
10
11
  "type": "string",
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -4,17 +4,20 @@
4
4
  "properties": {
5
5
  "input": {
6
6
  "type": "string",
7
- "minLength": 1
7
+ "minLength": 1,
8
+ "x-tiwater-file-role": "read"
8
9
  },
9
10
  "output": {
10
11
  "type": "string",
11
12
  "minLength": 1,
12
- "description": "New document output path. Existing files are never overwritten."
13
+ "description": "New document output path. Existing files are never overwritten.",
14
+ "x-tiwater-file-role": "write"
13
15
  },
14
16
  "receiptOutput": {
15
17
  "type": "string",
16
18
  "minLength": 1,
17
- "description": "New JSON receipt path. Existing files are never overwritten."
19
+ "description": "New JSON receipt path. Existing files are never overwritten.",
20
+ "x-tiwater-file-role": "write"
18
21
  },
19
22
  "changes": {
20
23
  "minItems": 1,
@@ -34,7 +37,8 @@
34
37
  },
35
38
  "image": {
36
39
  "type": "string",
37
- "minLength": 1
40
+ "minLength": 1,
41
+ "x-tiwater-file-role": "read"
38
42
  }
39
43
  },
40
44
  "required": [