@exellix/graph-composer 2.0.0 → 2.0.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.
package/README.md CHANGED
@@ -257,8 +257,8 @@ graph-composer explain-basic
257
257
  | Types: `GraphComposerInput`, `GraphComposerAgentInput`, `GraphComposerIntent`, `CatalogCandidates`, `ScopingMapCandidate`, `NarrixTemplateCandidate`, … | See `dist/index.d.ts`. |
258
258
  | `loadCatalogCandidatesFromCatalox`, `createCatalox`, `unifiedCatalogItemToSkillDescriptor`, … | Build `catalogCandidates` from **Catalox** catalogs; see [`docs/catalog-metadb-end-state-contract.md`](./docs/catalog-metadb-end-state-contract.md). |
259
259
  | `reportTaskNodeProtocolGaps` | Offline list of **AI task** nodes violating **`taskConfiguration.aiTaskProfile`** (pre/post, **`webScoping.questions`** when enabled, **`inputSynthesis`** fields when synthesis is on). See `docs/task-node-execution-protocol.md`. |
260
- | `collectCanonicalGraphWarnings` | Warn-first **`@exellix/graph-engine`** canonical checks (top-level keys, metadata placement, memory paths). **Next minor:** `validateCreateModifyOutput` will call `assertCanonicalGraphDocument` (hard-fail) after canonicalize. |
261
- | `assertCanonicalGraphDocument` | Re-exported from graph-engine — use in host CI when graphs must match runtime 6.x exactly. |
260
+ | `collectCanonicalGraphWarnings` | Warn-first **`@exellix/graph-engine`** canonical checks (top-level keys, metadata placement, memory paths, model profile aliases). |
261
+ | `assertCanonicalGraphDocument` | Re-exported from graph-engine — **`validateCreateModifyOutput` hard-fails** when the canonicalized graph does not pass. |
262
262
  | `GRAPH_ENGINE_MEMORY_PATH_ROOTS` | Re-exported memory path allowlist from graph-engine — use for validation parity, not a forked copy. |
263
263
  | `WoroxScopingMapCatalogCreatePayload`, `WoroxScopedDataDocumentShape` | Host-side CRUD handoff (align field names with your persisted catalog / scoping schema). |
264
264
  | `parseGraphConceptStory`, `isGraphConceptStoryDescription`, `GRAPH_CONCEPT_STORY_MARKER`, … | Parse **graph concept story** text for `create` / `modify` / reviews. |
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalGraphDocument.d.ts","sourceRoot":"","sources":["../src/canonicalGraphDocument.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmTH,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAc7E;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA8BtF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAQpF"}
1
+ {"version":3,"file":"canonicalGraphDocument.d.ts","sourceRoot":"","sources":["../src/canonicalGraphDocument.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6aH,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAc7E;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAgCtF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAUpF"}
@@ -38,6 +38,42 @@ const FORBIDDEN_NARRIX_WEB_KEYS = [
38
38
  "forceWebScope",
39
39
  "webScopeEntityIdPath",
40
40
  ];
41
+ /** Authoring-only keys that must live under graph `metadata`, not the document root. */
42
+ const GRAPH_SHELL_TO_METADATA = [
43
+ "name",
44
+ "description",
45
+ "woroxContractTarget",
46
+ "exellixContractTarget",
47
+ "graphEntry",
48
+ "graphExecution",
49
+ "catalogRequests",
50
+ "graphConcept",
51
+ "graphReadability",
52
+ "catalogBinding",
53
+ "catalogRequest",
54
+ ];
55
+ /**
56
+ * Local-skill and graph-engine-only execution keys (must not remain on task `metadata`).
57
+ * Mirrors `@exellix/graph-engine` `TASK_CONFIGURATION_GRAPH_ENGINE_ONLY_KEYS`.
58
+ */
59
+ const LOCAL_SKILL_METADATA_KEYS = [
60
+ "firstMatchWins",
61
+ "defaultOutput",
62
+ "sensitivityAnalysis",
63
+ "questionId",
64
+ "pack",
65
+ "opDb",
66
+ "entityTypePath",
67
+ "staticEntityType",
68
+ "payloadPath",
69
+ "questionTitle",
70
+ "phase",
71
+ "seedThingIdPath",
72
+ "artifactThingType",
73
+ "xmemoryNamespace",
74
+ "mergeInferencePaths",
75
+ "mergeDecisionPaths",
76
+ ];
41
77
  /** Metadata execution keys → taskConfiguration target (value transform optional). */
42
78
  const METADATA_EXECUTION_LIFT = {
43
79
  aiTaskProfile: { target: "aiTaskProfile" },
@@ -57,7 +93,7 @@ const METADATA_EXECUTION_LIFT = {
57
93
  },
58
94
  executionStrategyKey: {
59
95
  target: "executionStrategies",
60
- transform: (v) => (typeof v === "string" && v.trim() !== "" ? [{ strategyKey: v.trim() }] : v),
96
+ transform: (v) => typeof v === "string" && v.trim() !== "" ? [{ key: v.trim() }] : v,
61
97
  },
62
98
  executionStrategies: { target: "executionStrategies" },
63
99
  outputConstraints: {
@@ -85,6 +121,7 @@ const METADATA_EXECUTION_LIFT = {
85
121
  scopingMapId: { target: "scopingMapId" },
86
122
  entityIdPath: { target: "entityIdPath" },
87
123
  rules: { target: "rules" },
124
+ ...Object.fromEntries(LOCAL_SKILL_METADATA_KEYS.map((k) => [k, { target: k }])),
88
125
  };
89
126
  const NODE_ROOT_TO_TASK_CONFIGURATION = [
90
127
  "smartInput",
@@ -101,6 +138,82 @@ function readRecord(v) {
101
138
  function nonEmptyString(v) {
102
139
  return typeof v === "string" && v.trim().length > 0;
103
140
  }
141
+ function canonicalizeExecutionStrategies(value) {
142
+ if (!Array.isArray(value))
143
+ return value;
144
+ let changed = false;
145
+ const next = value.map((item) => {
146
+ const row = readRecord(item);
147
+ if (row === undefined)
148
+ return item;
149
+ if ("strategyKey" in row && !("key" in row)) {
150
+ changed = true;
151
+ const { strategyKey, ...rest } = row;
152
+ return { ...rest, key: strategyKey };
153
+ }
154
+ return item;
155
+ });
156
+ return changed ? next : value;
157
+ }
158
+ function renameWoroxContractTargetOnNodeMetadata(node) {
159
+ const meta = readRecord(node.metadata);
160
+ if (meta === undefined || meta.woroxContractTarget === undefined)
161
+ return false;
162
+ if (meta.exellixContractTarget === undefined) {
163
+ meta.exellixContractTarget = meta.woroxContractTarget;
164
+ }
165
+ delete meta.woroxContractTarget;
166
+ node.metadata = meta;
167
+ return true;
168
+ }
169
+ function liftGraphShellToMetadata(graph) {
170
+ let changed = false;
171
+ const metadata = {
172
+ ...readRecord(graph.metadata),
173
+ };
174
+ for (const key of GRAPH_SHELL_TO_METADATA) {
175
+ if (graph[key] === undefined)
176
+ continue;
177
+ if (metadata[key] === undefined) {
178
+ metadata[key] = graph[key];
179
+ }
180
+ delete graph[key];
181
+ changed = true;
182
+ }
183
+ if (!changed)
184
+ return false;
185
+ graph.metadata = metadata;
186
+ return true;
187
+ }
188
+ function ensureGraphResponse(graph) {
189
+ let changed = false;
190
+ const response = readRecord(graph.response);
191
+ if (response === undefined) {
192
+ graph.response = { missing: "null", shape: [] };
193
+ return true;
194
+ }
195
+ if (response.missing === "error") {
196
+ response.missing = "null";
197
+ changed = true;
198
+ }
199
+ if (!("shape" in response)) {
200
+ response.shape = [];
201
+ changed = true;
202
+ }
203
+ if (changed)
204
+ graph.response = response;
205
+ return changed;
206
+ }
207
+ function canonicalizeTaskConfigurationExecutionStrategies(node) {
208
+ const tc = readRecord(node.taskConfiguration);
209
+ if (tc === undefined || tc.executionStrategies === undefined)
210
+ return false;
211
+ const normalized = canonicalizeExecutionStrategies(tc.executionStrategies);
212
+ if (normalized === tc.executionStrategies)
213
+ return false;
214
+ node.taskConfiguration = { ...tc, executionStrategies: normalized };
215
+ return true;
216
+ }
104
217
  function extractWebQuestionsFromNarrix(narrix) {
105
218
  const raw = narrix.webScopeQuestions;
106
219
  if (!Array.isArray(raw))
@@ -304,6 +417,10 @@ export function canonicalizeGraphDocumentShell(graph) {
304
417
  let changed = false;
305
418
  if (normalizeNodesToArray(graph))
306
419
  changed = true;
420
+ if (liftGraphShellToMetadata(graph))
421
+ changed = true;
422
+ if (ensureGraphResponse(graph))
423
+ changed = true;
307
424
  for (const key of Object.keys(graph)) {
308
425
  if (!CANONICAL_TOP_LEVEL_KEYS.has(key)) {
309
426
  if (FORBIDDEN_ROOT_RUNTIME_KEYS.has(key)) {
@@ -334,8 +451,12 @@ export function canonicalizeTaskNodePlacement(node) {
334
451
  changed = true;
335
452
  if (liftMetadataExecutionToTaskConfiguration(node))
336
453
  changed = true;
454
+ if (renameWoroxContractTargetOnNodeMetadata(node))
455
+ changed = true;
337
456
  if (liftNodeRootToTaskConfiguration(node))
338
457
  changed = true;
458
+ if (canonicalizeTaskConfigurationExecutionStrategies(node))
459
+ changed = true;
339
460
  if (canonicalizeNarrixWebOnNode(node))
340
461
  changed = true;
341
462
  if (removeLegacySynthesisFlags(node))
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Warn-first canonical inspection (does not throw). Use before enabling
3
- * `assertCanonicalGraphDocument` hard-fail in a future minor.
2
+ * Warn-first canonical inspection (does not throw). Complements
3
+ * `assertCanonicalGraphDocument` hard-fail in create/modify output validation.
4
4
  */
5
5
  export declare function collectCanonicalGraphWarnings(graph: object): string[];
6
6
  //# sourceMappingURL=canonicalGraphWarnings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalGraphWarnings.d.ts","sourceRoot":"","sources":["../src/canonicalGraphWarnings.ts"],"names":[],"mappings":"AAwDA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAsHrE"}
1
+ {"version":3,"file":"canonicalGraphWarnings.d.ts","sourceRoot":"","sources":["../src/canonicalGraphWarnings.ts"],"names":[],"mappings":"AA+HA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAuHrE"}
@@ -1,4 +1,23 @@
1
1
  import { getCanonicalGraphDocumentViolations, collectAiTasksNodeExtensionIssues, } from "./graphEngineBridge.js";
2
+ /** Local-skill execution keys that belong on taskConfiguration (graph-engine parity). */
3
+ const LOCAL_SKILL_METADATA_KEYS = [
4
+ "firstMatchWins",
5
+ "defaultOutput",
6
+ "sensitivityAnalysis",
7
+ "questionId",
8
+ "pack",
9
+ "opDb",
10
+ "entityTypePath",
11
+ "staticEntityType",
12
+ "payloadPath",
13
+ "questionTitle",
14
+ "phase",
15
+ "seedThingIdPath",
16
+ "artifactThingType",
17
+ "xmemoryNamespace",
18
+ "mergeInferencePaths",
19
+ "mergeDecisionPaths",
20
+ ];
2
21
  function readRecord(v) {
3
22
  if (v === null || v === undefined || typeof v !== "object" || Array.isArray(v)) {
4
23
  return undefined;
@@ -29,6 +48,8 @@ const FORBIDDEN_TASK_METADATA_EXECUTION_KEYS = new Set([
29
48
  "executionMemory",
30
49
  "outputsMemory",
31
50
  "aliasConfig",
51
+ ...LOCAL_SKILL_METADATA_KEYS,
52
+ "woroxContractTarget",
32
53
  ]);
33
54
  const FORBIDDEN_NARRIX_WEB_KEYS = [
34
55
  "webScopeQuestions",
@@ -46,9 +67,51 @@ const PURE_TASK_METADATA_KEYS = new Set([
46
67
  "exellixContractTarget",
47
68
  "__exellixVirtualBoundary",
48
69
  ]);
70
+ function looksLikeProviderModelId(value) {
71
+ return typeof value === "string" && value.includes("/");
72
+ }
73
+ function collectModelAliasWarnings(graph) {
74
+ const warnings = [];
75
+ const checkPair = (pair, path) => {
76
+ const o = pair;
77
+ if (o === undefined || typeof o !== "object" || Array.isArray(o))
78
+ return;
79
+ for (const field of ["xynthesisModel", "skillModel"]) {
80
+ const v = o[field];
81
+ if (looksLikeProviderModelId(v)) {
82
+ warnings.push(`${path}.${field} looks like a provider model id ("${v}") — graph JSON must use profile aliases (e.g. default, strong, weak); bind concrete ids in runtime.aliasConfig.`);
83
+ }
84
+ }
85
+ };
86
+ const rootMc = graph.modelConfig;
87
+ if (rootMc && Array.isArray(rootMc.cases)) {
88
+ for (let i = 0; i < rootMc.cases.length; i++) {
89
+ const c = rootMc.cases[i];
90
+ checkPair(c?.modelConfig, `graph.modelConfig.cases[${i}].modelConfig`);
91
+ }
92
+ }
93
+ const nodes = graph.nodes;
94
+ if (!Array.isArray(nodes))
95
+ return warnings;
96
+ for (let i = 0; i < nodes.length; i++) {
97
+ const node = readRecord(nodes[i]);
98
+ if (node === undefined)
99
+ continue;
100
+ const nodeId = typeof node.id === "string" ? node.id : `nodes[${i}]`;
101
+ const tc = readRecord(node.taskConfiguration);
102
+ const mc = tc?.modelConfig;
103
+ if (mc && Array.isArray(mc.cases)) {
104
+ for (let j = 0; j < mc.cases.length; j++) {
105
+ const c = mc.cases[j];
106
+ checkPair(c?.modelConfig, `node "${nodeId}": taskConfiguration.modelConfig.cases[${j}].modelConfig`);
107
+ }
108
+ }
109
+ }
110
+ return warnings;
111
+ }
49
112
  /**
50
- * Warn-first canonical inspection (does not throw). Use before enabling
51
- * `assertCanonicalGraphDocument` hard-fail in a future minor.
113
+ * Warn-first canonical inspection (does not throw). Complements
114
+ * `assertCanonicalGraphDocument` hard-fail in create/modify output validation.
52
115
  */
53
116
  export function collectCanonicalGraphWarnings(graph) {
54
117
  const warnings = [];
@@ -136,5 +199,6 @@ export function collectCanonicalGraphWarnings(graph) {
136
199
  warnings.push(`graph.response: editor-only key(s) should be removed: ${bad.join(", ")}.`);
137
200
  }
138
201
  }
202
+ warnings.push(...collectModelAliasWarnings(g));
139
203
  return warnings;
140
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graphComposerOutputValidation.d.ts","sourceRoot":"","sources":["../src/graphComposerOutputValidation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,YAAY,CAAC;AAE3E,mHAAmH;AACnH,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,CAAC,EAAE,uBAAuB,KAC1B,IAAI,CAAC;AAuBV,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAIN;AAmYD,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwGN;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,IAAI,CAqCN;AAuBD,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAmBN;AAsBD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,CAAC,EAAE,uBAAuB,GAC5B,IAAI,CAwBN;AAmBD,wBAAgB,sCAAsC,CACpD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAkDN;AAED,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAiCN;AAUD,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwDN;AAED,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwDN"}
1
+ {"version":3,"file":"graphComposerOutputValidation.d.ts","sourceRoot":"","sources":["../src/graphComposerOutputValidation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,YAAY,CAAC;AAE3E,mHAAmH;AACnH,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,CAAC,EAAE,uBAAuB,KAC1B,IAAI,CAAC;AAuBV,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAIN;AAmYD,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwGN;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,IAAI,CAqCN;AAuBD,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAmBN;AAsBD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,CAAC,EAAE,uBAAuB,GAC5B,IAAI,CA8BN;AAmBD,wBAAgB,sCAAsC,CACpD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAkDN;AAED,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAiCN;AAUD,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwDN;AAED,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwDN"}
@@ -1,5 +1,6 @@
1
1
  import { reportTaskNodeProtocolGaps } from "./aiTaskProfile.js";
2
2
  import { collectCanonicalGraphWarnings } from "./canonicalGraphWarnings.js";
3
+ import { assertCanonicalGraphDocument } from "./graphEngineBridge.js";
3
4
  import { canonicalizeGraphModel, reportTaskNodeInputsLayoutIssues, taskNodeInputsLayoutWarningMessage, } from "./taskNodeTaskVariable.js";
4
5
  const PRIMARY_INTENT_TYPES = new Set([
5
6
  "question",
@@ -515,6 +516,13 @@ export function validateCreateModifyOutput(out, ctx) {
515
516
  if (gaps.length > 0) {
516
517
  throw new Error(`create/modify graph violates task node protocol (taskConfiguration.aiTaskProfile / webScoping / inputSynthesis): ${JSON.stringify(gaps)}`);
517
518
  }
519
+ try {
520
+ assertCanonicalGraphDocument(canonicalized);
521
+ }
522
+ catch (err) {
523
+ const msg = err instanceof Error ? err.message : String(err);
524
+ throw new Error(`create/modify graph is not a canonical graph document: ${msg}`);
525
+ }
518
526
  appendWarnings(out, collectCanonicalGraphWarnings(canonicalized));
519
527
  out.graph = canonicalized;
520
528
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taskNodeTaskVariable.d.ts","sourceRoot":"","sources":["../src/taskNodeTaskVariable.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,MAAM,MAAM,6BAA6B,GAErC,qBAAqB,GAErB,oBAAoB,GAEpB,yBAAyB,GAEzB,oCAAoC,GAEpC,2BAA2B,GAE3B,0BAA0B,GAE1B,iBAAiB,GAEjB,wBAAwB,CAAC;AAI7B,MAAM,MAAM,yBAAyB,GAAG;IAEtC,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,6BAA6B,CAAC;IAEpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;CAEtB,CAAC;AAsDF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAItE;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAQjE;AAkBD,0EAA0E;AAE1E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAgBzD;AAID,iEAAiE;AAEjE,wBAAgB,2BAA2B,CAEzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAE5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAID,qDAAqD;AAErD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAErC;AAID,wBAAgB,2BAA2B,CAEzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAE5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAgCD,wBAAgB,gCAAgC,CAE9C,KAAK,EAAE,MAAM,GAEZ,yBAAyB,EAAE,CAwH7B;AAoOD;;;;;;;;;;;;GAYG;AAEH,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3E;AAID,kEAAkE;AAElE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoD5D;AAID,wBAAgB,kCAAkC,CAEhD,MAAM,EAAE,yBAAyB,EAAE,GAElC,MAAM,CA8HR"}
1
+ {"version":3,"file":"taskNodeTaskVariable.d.ts","sourceRoot":"","sources":["../src/taskNodeTaskVariable.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,MAAM,MAAM,6BAA6B,GAErC,qBAAqB,GAErB,oBAAoB,GAEpB,yBAAyB,GAEzB,oCAAoC,GAEpC,2BAA2B,GAE3B,0BAA0B,GAE1B,iBAAiB,GAEjB,wBAAwB,CAAC;AAI7B,MAAM,MAAM,yBAAyB,GAAG;IAEtC,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,6BAA6B,CAAC;IAEpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;CAEtB,CAAC;AA4EF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAItE;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAQjE;AAkBD,0EAA0E;AAE1E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAgBzD;AAID,iEAAiE;AAEjE,wBAAgB,2BAA2B,CAEzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAE5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAID,qDAAqD;AAErD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAErC;AAID,wBAAgB,2BAA2B,CAEzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAE5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAgCD,wBAAgB,gCAAgC,CAE9C,KAAK,EAAE,MAAM,GAEZ,yBAAyB,EAAE,CAwH7B;AAoOD;;;;;;;;;;;;GAYG;AAEH,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3E;AAID,kEAAkE;AAElE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoD5D;AAID,wBAAgB,kCAAkC,CAEhD,MAAM,EAAE,yBAAyB,EAAE,GAElC,MAAM,CA8HR"}
@@ -24,6 +24,17 @@ const METADATA_EXECUTION_KEYS = new Set([
24
24
  "synthesizedInput",
25
25
  "skillKey",
26
26
  "variables",
27
+ "scopingMapId",
28
+ "entityIdPath",
29
+ "rules",
30
+ "firstMatchWins",
31
+ "defaultOutput",
32
+ "mergeInferencePaths",
33
+ "mergeDecisionPaths",
34
+ "staticEntityType",
35
+ "payloadPath",
36
+ "questionTitle",
37
+ "woroxContractTarget",
27
38
  ]);
28
39
  function readRecord(v) {
29
40
  if (v === null || v === undefined || typeof v !== "object" || Array.isArray(v)) {