@grexx/grexxlinter 0.2.350 → 0.2.351

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/cli.js CHANGED
@@ -14951,8 +14951,32 @@ function lintDocument(ctx, input) {
14951
14951
  const schema = validate.schema;
14952
14952
  const forbidden = /* @__PURE__ */ new Set();
14953
14953
  for (const e of errors) if (e.keyword === "false schema") forbidden.add(e.instancePath);
14954
+ const anyOfRe = /^(.*\/anyOf)\/\d+\/required$/;
14955
+ const reqAnyGroups = /* @__PURE__ */ new Map();
14956
+ for (const e of errors) {
14957
+ const m = e.keyword === "required" ? anyOfRe.exec(e.schemaPath) : null;
14958
+ if (!m) continue;
14959
+ const key2 = `${m[1]}@${e.instancePath}`;
14960
+ const g = reqAnyGroups.get(key2) ?? { instancePath: e.instancePath, fields: [], err: e };
14961
+ g.fields.push(String(e.params.missingProperty));
14962
+ reqAnyGroups.set(key2, g);
14963
+ }
14964
+ const emittedReqAny = /* @__PURE__ */ new Set();
14954
14965
  for (const e of errors) {
14955
14966
  if (META_KEYWORDS.has(e.keyword)) continue;
14967
+ if (e.keyword === "required") {
14968
+ const m = anyOfRe.exec(e.schemaPath);
14969
+ const key2 = m ? `${m[1]}@${e.instancePath}` : null;
14970
+ const g = key2 ? reqAnyGroups.get(key2) : null;
14971
+ if (g && g.fields.length >= 2) {
14972
+ if (!emittedReqAny.has(key2)) {
14973
+ emittedReqAny.add(key2);
14974
+ const state = describeState(schema, g.err, input.value, ctx.registry.resolveRef);
14975
+ push("required-field", g.instancePath, null, `missing at least one of: ${g.fields.join(", ")}${state ? ` ${state}` : ""}`);
14976
+ }
14977
+ continue;
14978
+ }
14979
+ }
14956
14980
  const { field, path } = locate(e);
14957
14981
  if ((e.keyword === "additionalProperties" || e.keyword === "unevaluatedProperties") && forbidden.has(path)) {
14958
14982
  continue;
@@ -14966,6 +14990,18 @@ function lintDocument(ctx, input) {
14966
14990
  push("value-case", path, field, `"${String(actual)}" should be "${want}" (case/format mismatch)`);
14967
14991
  continue;
14968
14992
  }
14993
+ const got = actual === void 0 ? "absent" : JSON.stringify(actual);
14994
+ push("invalid-value", path, field, `got ${got} \u2014 ${humanize(e)}`);
14995
+ continue;
14996
+ }
14997
+ if (e.keyword === "type") {
14998
+ const actual = valueAtPointer(input.value, e.instancePath);
14999
+ const recv = actual === null ? "null" : Array.isArray(actual) ? "array" : typeof actual;
15000
+ let val = JSON.stringify(actual) ?? "";
15001
+ if (val.length > 60) val = `${val.slice(0, 57)}\u2026"`;
15002
+ const expected = String(e.params.type);
15003
+ push("invalid-type", path, field, `expected ${expected} but received ${recv}${actual === void 0 ? "" : ` with value ${val}`}`);
15004
+ continue;
14969
15005
  }
14970
15006
  const rule = ruleForKeyword(e.keyword);
14971
15007
  let message = humanize(e);
@@ -15014,7 +15050,7 @@ function isLintableYaml(text) {
15014
15050
  // src/cli.ts
15015
15051
  var PARALLEL_THRESHOLD = 200;
15016
15052
  var MAX_WORKERS = 8;
15017
- var VERSION = true ? "0.2.350" : "0.0.0-dev";
15053
+ var VERSION = true ? "0.2.351" : "0.0.0-dev";
15018
15054
  function isNewer(latest, current) {
15019
15055
  const a = latest.split(".").map(Number);
15020
15056
  const b = current.split(".").map(Number);
@@ -15035,7 +15071,7 @@ function checkForUpdate(disabled) {
15035
15071
  }
15036
15072
  var VALID_RULES = new Set(LINT_RULE_DESCRIPTORS.map((d) => d.id));
15037
15073
  function parseArgs(argv) {
15038
- const args = { paths: [], off: [], format: "text", quiet: false, noUpdateCheck: false };
15074
+ const args = { paths: [], off: [], format: "text", quiet: false, errorsOnly: false, noUpdateCheck: false };
15039
15075
  for (let i = 0; i < argv.length; i++) {
15040
15076
  const a = argv[i];
15041
15077
  if (a === "--settings") args.settingsFile = argv[++i];
@@ -15050,6 +15086,7 @@ function parseArgs(argv) {
15050
15086
  else if (a === "--format") args.format = argv[++i];
15051
15087
  else if (a === "--report") args.report = argv[++i];
15052
15088
  else if (a === "--quiet") args.quiet = true;
15089
+ else if (a === "--errors-only") args.errorsOnly = true;
15053
15090
  else if (a === "--no-update-check") args.noUpdateCheck = true;
15054
15091
  else if (a.startsWith("--")) throw new Error(`unknown option: ${a}`);
15055
15092
  else args.paths.push(a);
@@ -15088,18 +15125,19 @@ var COLORS = { error: "\x1B[31m", warning: "\x1B[33m", info: "\x1B[36m" };
15088
15125
  var RESET = "\x1B[0m";
15089
15126
  var useColor = process.stdout.isTTY;
15090
15127
  var paint = (s, c) => useColor ? `${c}${s}${RESET}` : s;
15091
- function printText(results, settings, quiet) {
15128
+ function printText(results, settings, quiet, errorsOnly) {
15092
15129
  for (const r of results) {
15093
15130
  if (r.skipped) continue;
15094
- if (quiet && r.messages.length === 0) continue;
15131
+ const msgs = errorsOnly ? r.messages.filter((m) => m.severity === "error") : r.messages;
15132
+ if (quiet && msgs.length === 0) continue;
15095
15133
  const rel = r.file ? relative(process.cwd(), r.file) : "<input>";
15096
15134
  const head = `${rel}${r.casetype ? ` (${r.casetype})` : ""}`;
15097
- if (r.messages.length === 0) {
15135
+ if (msgs.length === 0) {
15098
15136
  if (!quiet) console.log(`${paint("ok", COLORS.info)} ${head}`);
15099
15137
  continue;
15100
15138
  }
15101
15139
  console.log(head);
15102
- for (const m of r.messages) {
15140
+ for (const m of msgs) {
15103
15141
  const loc = m.path || "/";
15104
15142
  console.log(` ${paint(m.severity.padEnd(7), COLORS[m.severity])} ${m.rule.padEnd(16)} ${loc} ${m.message}`);
15105
15143
  }
@@ -15111,8 +15149,9 @@ function printText(results, settings, quiet) {
15111
15149
  ${s.files} file(s)${skipped ? `, ${skipped} skipped` : ""} \u2014 ${paint(`${s.errors} error(s)`, COLORS.error)}, ${paint(`${s.warnings} warning(s)`, COLORS.warning)}, ${s.infos} info(s) [fail-on: ${settings.failOn}]`
15112
15150
  );
15113
15151
  }
15114
- function printReport(results, kind) {
15115
- const msgs = results.filter((r) => !r.skipped).flatMap((r) => r.messages);
15152
+ function printReport(results, kind, errorsOnly) {
15153
+ let msgs = results.filter((r) => !r.skipped).flatMap((r) => r.messages);
15154
+ if (errorsOnly) msgs = msgs.filter((m) => m.severity === "error");
15116
15155
  if (kind === "rules") {
15117
15156
  const by2 = /* @__PURE__ */ new Map();
15118
15157
  for (const m of msgs) {
@@ -15231,12 +15270,12 @@ async function main() {
15231
15270
  results = lintFiles(files, ctx, settings);
15232
15271
  }
15233
15272
  if (args.report) {
15234
- printReport(results, args.report);
15273
+ printReport(results, args.report, args.errorsOnly);
15235
15274
  } else if (args.format === "json") {
15236
15275
  const active = results.filter((r) => !r.skipped);
15237
15276
  console.log(JSON.stringify({ summary: summarize(active), results }, null, 2));
15238
15277
  } else {
15239
- printText(results, settings, args.quiet);
15278
+ printText(results, settings, args.quiet, args.errorsOnly);
15240
15279
  }
15241
15280
  const latest = await updatePromise;
15242
15281
  if (latest) {
package/lsp.js CHANGED
@@ -23915,8 +23915,32 @@ function lintDocument(ctx2, input) {
23915
23915
  const schema = validate.schema;
23916
23916
  const forbidden = /* @__PURE__ */ new Set();
23917
23917
  for (const e of errors) if (e.keyword === "false schema") forbidden.add(e.instancePath);
23918
+ const anyOfRe = /^(.*\/anyOf)\/\d+\/required$/;
23919
+ const reqAnyGroups = /* @__PURE__ */ new Map();
23920
+ for (const e of errors) {
23921
+ const m = e.keyword === "required" ? anyOfRe.exec(e.schemaPath) : null;
23922
+ if (!m) continue;
23923
+ const key2 = `${m[1]}@${e.instancePath}`;
23924
+ const g = reqAnyGroups.get(key2) ?? { instancePath: e.instancePath, fields: [], err: e };
23925
+ g.fields.push(String(e.params.missingProperty));
23926
+ reqAnyGroups.set(key2, g);
23927
+ }
23928
+ const emittedReqAny = /* @__PURE__ */ new Set();
23918
23929
  for (const e of errors) {
23919
23930
  if (META_KEYWORDS.has(e.keyword)) continue;
23931
+ if (e.keyword === "required") {
23932
+ const m = anyOfRe.exec(e.schemaPath);
23933
+ const key2 = m ? `${m[1]}@${e.instancePath}` : null;
23934
+ const g = key2 ? reqAnyGroups.get(key2) : null;
23935
+ if (g && g.fields.length >= 2) {
23936
+ if (!emittedReqAny.has(key2)) {
23937
+ emittedReqAny.add(key2);
23938
+ const state = describeState(schema, g.err, input.value, ctx2.registry.resolveRef);
23939
+ push("required-field", g.instancePath, null, `missing at least one of: ${g.fields.join(", ")}${state ? ` ${state}` : ""}`);
23940
+ }
23941
+ continue;
23942
+ }
23943
+ }
23920
23944
  const { field, path } = locate(e);
23921
23945
  if ((e.keyword === "additionalProperties" || e.keyword === "unevaluatedProperties") && forbidden.has(path)) {
23922
23946
  continue;
@@ -23930,6 +23954,18 @@ function lintDocument(ctx2, input) {
23930
23954
  push("value-case", path, field, `"${String(actual)}" should be "${want}" (case/format mismatch)`);
23931
23955
  continue;
23932
23956
  }
23957
+ const got = actual === void 0 ? "absent" : JSON.stringify(actual);
23958
+ push("invalid-value", path, field, `got ${got} \u2014 ${humanize(e)}`);
23959
+ continue;
23960
+ }
23961
+ if (e.keyword === "type") {
23962
+ const actual = valueAtPointer(input.value, e.instancePath);
23963
+ const recv = actual === null ? "null" : Array.isArray(actual) ? "array" : typeof actual;
23964
+ let val = JSON.stringify(actual) ?? "";
23965
+ if (val.length > 60) val = `${val.slice(0, 57)}\u2026"`;
23966
+ const expected = String(e.params.type);
23967
+ push("invalid-type", path, field, `expected ${expected} but received ${recv}${actual === void 0 ? "" : ` with value ${val}`}`);
23968
+ continue;
23933
23969
  }
23934
23970
  const rule = ruleForKeyword(e.keyword);
23935
23971
  let message = humanize(e);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grexx/grexxlinter",
3
- "version": "0.2.350",
3
+ "version": "0.2.351",
4
4
  "description": "Lint Grexx Studio casetype YAML against the studio JSON Schemas.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -106,12 +106,5 @@
106
106
  ],
107
107
  "title": "activityAttribute",
108
108
  "type": "object",
109
- "allOf": [
110
- {
111
- "properties": {
112
- "allowHTML": false
113
- }
114
- }
115
- ],
116
109
  "$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/activityAttribute.json."
117
110
  }
@@ -226,16 +226,6 @@
226
226
  "title": "attribute",
227
227
  "type": "object",
228
228
  "allOf": [
229
- {
230
- "properties": {
231
- "calculatedTemplate": false
232
- }
233
- },
234
- {
235
- "properties": {
236
- "linkToPlatform": false
237
- }
238
- },
239
229
  {
240
230
  "if": {
241
231
  "properties": {
@@ -1,86 +1,67 @@
1
1
  {
2
- "$id": "https://grexx.net/studio-next/schemas/conditionList.schema.json",
3
- "$schema": "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties": false,
5
- "properties": {
6
- "_id": {
7
- "type": "string"
8
- },
9
- "_interfaceID": {
10
- "type": "string"
11
- },
12
- "_isInterface": {
13
- "type": "boolean"
14
- },
15
- "_knownIDs": {
16
- "items": {
17
- "type": "string"
2
+ "$id" : "https://grexx.net/studio-next/schemas/conditionList.schema.json",
3
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties" : false,
5
+ "properties" : {
6
+ "_id" : {
7
+ "type" : "string"
8
+ },
9
+ "_interfaceID" : {
10
+ "type" : "string"
11
+ },
12
+ "_isInterface" : {
13
+ "type" : "boolean"
14
+ },
15
+ "_knownIDs" : {
16
+ "items" : {
17
+ "type" : "string"
18
18
  },
19
- "type": "array"
19
+ "type" : "array"
20
20
  },
21
- "_origin": {
22
- "type": "string"
21
+ "_origin" : {
22
+ "type" : "string"
23
23
  },
24
- "_src": {
25
- "type": "string"
24
+ "_src" : {
25
+ "type" : "string"
26
26
  },
27
- "_type": {
28
- "const": "conditionList"
27
+ "_type" : {
28
+ "const" : "conditionList"
29
29
  },
30
- "_uid": {
31
- "description": "Deterministic UUID derived from case-ID.",
32
- "format": "uuid",
33
- "type": "string"
30
+ "_uid" : {
31
+ "description" : "Deterministic UUID derived from case-ID.",
32
+ "format" : "uuid",
33
+ "type" : "string"
34
34
  },
35
- "conditions": {
36
- "items": {
37
- "$ref": "abstractCondition.schema.json"
35
+ "conditions" : {
36
+ "items" : {
37
+ "$ref" : "abstractCondition.schema.json"
38
38
  },
39
- "type": "array"
39
+ "type" : "array"
40
40
  },
41
- "description": {
42
- "$ref": "template/inlineTemplate.schema.json"
41
+ "description" : {
42
+ "$ref" : "template/inlineTemplate.schema.json"
43
43
  },
44
- "inactive": {
45
- "type": "boolean"
44
+ "inactive" : {
45
+ "type" : "boolean"
46
46
  },
47
- "interfaceStudioProduct": {
48
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
47
+ "interfaceStudioProduct" : {
48
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
49
49
  },
50
- "metaCaseToOtap": {
51
- "type": "boolean"
50
+ "metaCaseToOtap" : {
51
+ "type" : "boolean"
52
52
  },
53
- "negate": {
54
- "type": "boolean"
53
+ "negate" : {
54
+ "type" : "boolean"
55
55
  },
56
- "ourProductId": {
57
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
56
+ "ourProductId" : {
57
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
58
58
  },
59
- "type": {
60
- "enum": [
61
- "AND",
62
- "OR"
63
- ],
64
- "type": "string"
59
+ "type" : {
60
+ "enum" : [ "AND", "OR" ],
61
+ "type" : "string"
65
62
  }
66
63
  },
67
- "required": [
68
- "_type",
69
- "_uid"
70
- ],
71
- "title": "conditionList",
72
- "type": "object",
73
- "allOf": [
74
- {
75
- "properties": {
76
- "hasValidConfiguration": false
77
- }
78
- },
79
- {
80
- "properties": {
81
- "wasEverFullyConfigured": false
82
- }
83
- }
84
- ],
85
- "$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/conditionList.json."
86
- }
64
+ "required" : [ "_type", "_uid" ],
65
+ "title" : "conditionList",
66
+ "type" : "object"
67
+ }
@@ -106,16 +106,6 @@
106
106
  "title": "datasetColumn",
107
107
  "type": "object",
108
108
  "allOf": [
109
- {
110
- "properties": {
111
- "columnType": false
112
- }
113
- },
114
- {
115
- "properties": {
116
- "hasValidConfiguration": false
117
- }
118
- },
119
109
  {
120
110
  "if": {
121
111
  "anyOf": [
@@ -180,11 +170,6 @@
180
170
  }
181
171
  }
182
172
  },
183
- {
184
- "properties": {
185
- "wasEverFullyConfigured": false
186
- }
187
- },
188
173
  {
189
174
  "if": {
190
175
  "properties": {
@@ -75,7 +75,6 @@
75
75
  "required": [
76
76
  "_type",
77
77
  "_uid",
78
- "condition",
79
78
  "roleName",
80
79
  "type"
81
80
  ],
@@ -1,119 +1,103 @@
1
1
  {
2
- "$id": "https://grexx.net/studio-next/schemas/form.schema.json",
3
- "$schema": "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties": false,
5
- "properties": {
6
- "_id": {
7
- "type": "string"
8
- },
9
- "_interfaceID": {
10
- "type": "string"
11
- },
12
- "_isInterface": {
13
- "type": "boolean"
14
- },
15
- "_knownIDs": {
16
- "items": {
17
- "type": "string"
2
+ "$id" : "https://grexx.net/studio-next/schemas/form.schema.json",
3
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties" : false,
5
+ "properties" : {
6
+ "_id" : {
7
+ "type" : "string"
8
+ },
9
+ "_interfaceID" : {
10
+ "type" : "string"
11
+ },
12
+ "_isInterface" : {
13
+ "type" : "boolean"
14
+ },
15
+ "_knownIDs" : {
16
+ "items" : {
17
+ "type" : "string"
18
18
  },
19
- "type": "array"
19
+ "type" : "array"
20
20
  },
21
- "_origin": {
22
- "type": "string"
21
+ "_origin" : {
22
+ "type" : "string"
23
23
  },
24
- "_src": {
25
- "type": "string"
24
+ "_src" : {
25
+ "type" : "string"
26
26
  },
27
- "_type": {
28
- "const": "form"
27
+ "_type" : {
28
+ "const" : "form"
29
29
  },
30
- "_uid": {
31
- "description": "Deterministic UUID derived from case-ID.",
32
- "format": "uuid",
33
- "type": "string"
30
+ "_uid" : {
31
+ "description" : "Deterministic UUID derived from case-ID.",
32
+ "format" : "uuid",
33
+ "type" : "string"
34
34
  },
35
- "condition": {
36
- "$ref": "conditionList.schema.json"
35
+ "condition" : {
36
+ "$ref" : "conditionList.schema.json"
37
37
  },
38
- "cssClass": {
39
- "items": {
40
- "type": "string"
38
+ "cssClass" : {
39
+ "items" : {
40
+ "type" : "string"
41
41
  },
42
- "type": "array"
42
+ "type" : "array"
43
43
  },
44
- "dataset": {
45
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
44
+ "dataset" : {
45
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
46
46
  },
47
- "description": {
48
- "$ref": "template/inlineTemplate.schema.json"
47
+ "description" : {
48
+ "$ref" : "template/inlineTemplate.schema.json"
49
49
  },
50
- "formGroup": {
51
- "$ref": "formGroup.schema.json"
50
+ "formGroup" : {
51
+ "$ref" : "formGroup.schema.json"
52
52
  },
53
- "formLogic": {
54
- "items": {
55
- "$ref": "abstractRule.schema.json"
53
+ "formLogic" : {
54
+ "items" : {
55
+ "$ref" : "abstractRule.schema.json"
56
56
  },
57
- "type": "array"
57
+ "type" : "array"
58
58
  },
59
- "formVersion": {
60
- "type": "string"
59
+ "formVersion" : {
60
+ "type" : "string"
61
61
  },
62
- "inactive": {
63
- "type": "boolean"
62
+ "inactive" : {
63
+ "type" : "boolean"
64
64
  },
65
- "instruction": {
66
- "$ref": "template/inlineTemplate.schema.json"
65
+ "instruction" : {
66
+ "$ref" : "template/inlineTemplate.schema.json"
67
67
  },
68
- "interfaceStudioProduct": {
69
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
68
+ "interfaceStudioProduct" : {
69
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
70
70
  },
71
- "isMultiTaskForm": {
72
- "type": "boolean"
71
+ "isMultiTaskForm" : {
72
+ "type" : "boolean"
73
73
  },
74
- "logic": {
75
- "additionalProperties": true,
76
- "type": "object"
74
+ "logic" : {
75
+ "additionalProperties" : true,
76
+ "type" : "object"
77
77
  },
78
- "metaCaseToOtap": {
79
- "type": "boolean"
78
+ "metaCaseToOtap" : {
79
+ "type" : "boolean"
80
80
  },
81
- "name": {
82
- "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
81
+ "name" : {
82
+ "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
83
83
  },
84
- "onStart": {
85
- "items": {
86
- "$ref": "abstractRule.schema.json"
84
+ "onStart" : {
85
+ "items" : {
86
+ "$ref" : "abstractRule.schema.json"
87
87
  },
88
- "type": "array"
88
+ "type" : "array"
89
89
  },
90
- "ourProductId": {
91
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
90
+ "ourProductId" : {
91
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
92
92
  },
93
- "rights": {
94
- "items": {
95
- "$ref": "formRight.schema.json"
93
+ "rights" : {
94
+ "items" : {
95
+ "$ref" : "formRight.schema.json"
96
96
  },
97
- "type": "array"
97
+ "type" : "array"
98
98
  }
99
99
  },
100
- "required": [
101
- "_type",
102
- "_uid"
103
- ],
104
- "title": "form",
105
- "type": "object",
106
- "allOf": [
107
- {
108
- "properties": {
109
- "isMultiTaskForm": false
110
- }
111
- },
112
- {
113
- "properties": {
114
- "onStart": false
115
- }
116
- }
117
- ],
118
- "$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/form.json."
119
- }
100
+ "required" : [ "_type", "_uid" ],
101
+ "title" : "form",
102
+ "type" : "object"
103
+ }
@@ -75,7 +75,6 @@
75
75
  "required": [
76
76
  "_type",
77
77
  "_uid",
78
- "condition",
79
78
  "roleName",
80
79
  "type"
81
80
  ],
@@ -299,16 +299,6 @@
299
299
  "title": "formfield",
300
300
  "type": "object",
301
301
  "allOf": [
302
- {
303
- "properties": {
304
- "attributeInfo": false
305
- }
306
- },
307
- {
308
- "properties": {
309
- "logic": false
310
- }
311
- },
312
302
  {
313
303
  "if": {
314
304
  "properties": {
@@ -1,94 +1,78 @@
1
1
  {
2
- "$id": "https://grexx.net/studio-next/schemas/ifthenelse.schema.json",
3
- "$schema": "https://json-schema.org/draft/2020-12/schema",
4
- "additionalProperties": false,
5
- "properties": {
6
- "_id": {
7
- "type": "string"
8
- },
9
- "_interfaceID": {
10
- "type": "string"
11
- },
12
- "_isInterface": {
13
- "type": "boolean"
14
- },
15
- "_knownIDs": {
16
- "items": {
17
- "type": "string"
2
+ "$id" : "https://grexx.net/studio-next/schemas/ifthenelse.schema.json",
3
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties" : false,
5
+ "properties" : {
6
+ "_id" : {
7
+ "type" : "string"
8
+ },
9
+ "_interfaceID" : {
10
+ "type" : "string"
11
+ },
12
+ "_isInterface" : {
13
+ "type" : "boolean"
14
+ },
15
+ "_knownIDs" : {
16
+ "items" : {
17
+ "type" : "string"
18
18
  },
19
- "type": "array"
19
+ "type" : "array"
20
20
  },
21
- "_origin": {
22
- "type": "string"
21
+ "_origin" : {
22
+ "type" : "string"
23
23
  },
24
- "_src": {
25
- "type": "string"
24
+ "_src" : {
25
+ "type" : "string"
26
26
  },
27
- "_type": {
28
- "const": "ifthenelse"
27
+ "_type" : {
28
+ "const" : "ifthenelse"
29
29
  },
30
- "_uid": {
31
- "description": "Deterministic UUID derived from case-ID.",
32
- "format": "uuid",
33
- "type": "string"
30
+ "_uid" : {
31
+ "description" : "Deterministic UUID derived from case-ID.",
32
+ "format" : "uuid",
33
+ "type" : "string"
34
34
  },
35
- "description": {
36
- "$ref": "template/inlineTemplate.schema.json"
35
+ "description" : {
36
+ "$ref" : "template/inlineTemplate.schema.json"
37
37
  },
38
- "else": {
39
- "items": {
40
- "$ref": "abstractRule.schema.json"
38
+ "else" : {
39
+ "items" : {
40
+ "$ref" : "abstractRule.schema.json"
41
41
  },
42
- "type": "array"
42
+ "type" : "array"
43
43
  },
44
- "if": {
45
- "$ref": "abstractCondition.schema.json"
44
+ "if" : {
45
+ "$ref" : "abstractCondition.schema.json"
46
46
  },
47
- "inactive": {
48
- "type": "boolean"
47
+ "inactive" : {
48
+ "type" : "boolean"
49
49
  },
50
- "interfaceStudioProduct": {
51
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
50
+ "interfaceStudioProduct" : {
51
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
52
52
  },
53
- "metaCaseToOtap": {
54
- "type": "boolean"
53
+ "metaCaseToOtap" : {
54
+ "type" : "boolean"
55
55
  },
56
- "ourProductId": {
57
- "$ref": "common.schema.json#/$defs/caseIdOrFileReference"
56
+ "ourProductId" : {
57
+ "$ref" : "common.schema.json#/$defs/caseIdOrFileReference"
58
58
  },
59
- "progressTemplate": {
60
- "$ref": "template/inlineTemplate.schema.json"
59
+ "progressTemplate" : {
60
+ "$ref" : "template/inlineTemplate.schema.json"
61
61
  },
62
- "progressTitle": {
63
- "$ref": "common.schema.json#/$defs/multilanguageStringStructure"
62
+ "progressTitle" : {
63
+ "$ref" : "common.schema.json#/$defs/multilanguageStringStructure"
64
64
  },
65
- "showProgress": {
66
- "type": "boolean"
65
+ "showProgress" : {
66
+ "type" : "boolean"
67
67
  },
68
- "then": {
69
- "items": {
70
- "$ref": "abstractRule.schema.json"
68
+ "then" : {
69
+ "items" : {
70
+ "$ref" : "abstractRule.schema.json"
71
71
  },
72
- "type": "array"
72
+ "type" : "array"
73
73
  }
74
74
  },
75
- "required": [
76
- "_type",
77
- "_uid"
78
- ],
79
- "title": "ifthenelse",
80
- "type": "object",
81
- "allOf": [
82
- {
83
- "properties": {
84
- "hasValidConfiguration": false
85
- }
86
- },
87
- {
88
- "properties": {
89
- "wasEverFullyConfigured": false
90
- }
91
- }
92
- ],
93
- "$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/ifthenelse.json."
94
- }
75
+ "required" : [ "_type", "_uid" ],
76
+ "title" : "ifthenelse",
77
+ "type" : "object"
78
+ }
@@ -88,32 +88,5 @@
88
88
  ],
89
89
  "title": "llmModel",
90
90
  "type": "object",
91
- "allOf": [
92
- {
93
- "properties": {
94
- "llmFrequencyPenalty": false
95
- }
96
- },
97
- {
98
- "properties": {
99
- "llmMaxCompletionTokens": false
100
- }
101
- },
102
- {
103
- "properties": {
104
- "llmPresencePenalty": false
105
- }
106
- },
107
- {
108
- "properties": {
109
- "llmTemperature": false
110
- }
111
- },
112
- {
113
- "properties": {
114
- "llmTopP": false
115
- }
116
- }
117
- ],
118
91
  "$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/llmModel.json."
119
92
  }
@@ -92,11 +92,6 @@
92
92
  "title": "requestContext",
93
93
  "type": "object",
94
94
  "allOf": [
95
- {
96
- "properties": {
97
- "hasValidConfiguration": false
98
- }
99
- },
100
95
  {
101
96
  "if": {
102
97
  "anyOf": [
@@ -149,11 +144,6 @@
149
144
  }
150
145
  }
151
146
  },
152
- {
153
- "properties": {
154
- "wasEverFullyConfigured": false
155
- }
156
- },
157
147
  {
158
148
  "if": {
159
149
  "properties": {