isc-transforms-mcp 1.0.3 → 1.0.5

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.
@@ -27,29 +27,11 @@
27
27
  "type": "object",
28
28
  "description": "Conditional logic configuration, plus optional dynamic variables (per docs).",
29
29
  "additionalProperties": {
30
- "description": "Dynamic variables referenced via $variableName. Can be literals or nested transforms.",
31
- "oneOf": [
30
+ "description": "Dynamic variables referenced via $variableName. Can be string literals or nested transforms.",
31
+ "anyOf": [
32
32
  {
33
33
  "type": "string"
34
34
  },
35
- {
36
- "type": "number"
37
- },
38
- {
39
- "type": "integer"
40
- },
41
- {
42
- "type": "boolean"
43
- },
44
- {
45
- "type": "array"
46
- },
47
- {
48
- "type": "object"
49
- },
50
- {
51
- "type": "null"
52
- },
53
35
  {
54
36
  "$ref": "#/$defs/NestedTransform"
55
37
  }
@@ -36,29 +36,11 @@
36
36
  }
37
37
  },
38
38
  "additionalProperties": {
39
- "description": "Dynamic variables referenced in Velocity template. Can be literals or nested transforms.",
40
- "oneOf": [
39
+ "description": "Dynamic variables referenced in Velocity template. Can be string literals or nested transforms.",
40
+ "anyOf": [
41
41
  {
42
42
  "type": "string"
43
43
  },
44
- {
45
- "type": "number"
46
- },
47
- {
48
- "type": "integer"
49
- },
50
- {
51
- "type": "boolean"
52
- },
53
- {
54
- "type": "array"
55
- },
56
- {
57
- "type": "object"
58
- },
59
- {
60
- "type": "null"
61
- },
62
44
  {
63
45
  "$ref": "#/$defs/NestedTransform"
64
46
  }
@@ -45,7 +45,7 @@ const ALLOWED_ATTRS = {
45
45
  rightPad: new Set(["length", "padding", "input"]),
46
46
  rule: "open", // rule-specific attributes vary
47
47
  split: new Set(["delimiter", "index", "input"]),
48
- static: new Set(["value"]),
48
+ static: "open", // value + any named VTL dynamic variable keys allowed per docs
49
49
  substring: new Set(["begin", "end", "input"]),
50
50
  trim: new Set(["input"]),
51
51
  upper: new Set(["input"]),
@@ -704,9 +704,12 @@ function lintSubstring(attrs) {
704
704
  // ---------------------------------------------------------------------------
705
705
  function lintStatic(attrs) {
706
706
  const msgs = [];
707
- if (attrs?.value !== undefined && typeof attrs.value !== "string") {
707
+ // Presence check is handled by checkRequired (spec.requiredAttributes).
708
+ // Here we only validate the type when value is present.
709
+ if (attrs?.value !== undefined && attrs?.value !== null && typeof attrs.value !== "string") {
708
710
  push(msgs, "error", "value must be a string.", "attributes.value");
709
711
  }
712
+ // Any other keys in attributes are valid dynamic VTL variable definitions — no unknown-attribute errors.
710
713
  return msgs;
711
714
  }
712
715
  // ---------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isc-transforms-mcp",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "description": "MCP server for SailPoint Identity Security Cloud (ISC) Transform authoring — scaffold, strict lint, catalog, and safe upsert to live tenants.",
6
6
  "author": {