@exellix/graph-composer 2.10.0 → 2.12.0

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 (40) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +2 -2
  3. package/dist/aiTaskProfile.d.ts +10 -8
  4. package/dist/aiTaskProfile.d.ts.map +1 -1
  5. package/dist/aiTaskProfile.js +27 -19
  6. package/dist/canonicalGraphDocument.d.ts.map +1 -1
  7. package/dist/canonicalGraphDocument.js +22 -60
  8. package/dist/canonicalGraphWarnings.d.ts.map +1 -1
  9. package/dist/canonicalGraphWarnings.js +2 -1
  10. package/dist/catalogMatchAssist.d.ts.map +1 -1
  11. package/dist/catalogMatchAssist.js +10 -2
  12. package/dist/cataloxCatalogBridge.js +1 -1
  13. package/dist/exampleGeneration.d.ts.map +1 -1
  14. package/dist/exampleGeneration.js +7 -17
  15. package/dist/graphComposerActions.d.ts.map +1 -1
  16. package/dist/graphComposerActions.js +1 -10
  17. package/dist/graphComposerOutputValidation.d.ts +1 -1
  18. package/dist/graphComposerOutputValidation.d.ts.map +1 -1
  19. package/dist/graphComposerOutputValidation.js +8 -5
  20. package/dist/graphEntryContract.d.ts +0 -23
  21. package/dist/graphEntryContract.d.ts.map +1 -1
  22. package/dist/graphEntryContract.js +1 -125
  23. package/dist/graphEntryOutputValidation.d.ts +0 -1
  24. package/dist/graphEntryOutputValidation.d.ts.map +1 -1
  25. package/dist/graphEntryOutputValidation.js +3 -48
  26. package/dist/graphEntryPostProcess.d.ts.map +1 -1
  27. package/dist/graphEntryPostProcess.js +3 -7
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/types.d.ts +4 -2
  32. package/dist/types.d.ts.map +1 -1
  33. package/examples/network-vuln-subnet-triage.v2.json +0 -3
  34. package/functions/graph-composer/meta.json +1 -1
  35. package/functions/graph-composer/prompts/action-create.md +9 -7
  36. package/functions/graph-composer/prompts/action-review-concept.md +3 -3
  37. package/functions/graph-composer/prompts/judge-rules.md +2 -2
  38. package/functions/graph-composer/prompts/shared/graph-format.md +2 -2
  39. package/functions/graph-composer/prompts/shared/structural-validation.md +2 -2
  40. package/package.json +18 -17
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.12.0 — Graphenix 2.7.3 + webQueryTemplate authoring
4
+
5
+ ### Breaking
6
+
7
+ - **Legacy web scope:** Create/modify validation rejects `webScoping` on task nodes and requirements; canonicalizer strips `aiTaskProfile.webScoping` if present. Use **`webQueryTemplate`** / **`webQueryTemplates[]`** under **`taskConfiguration.aiTaskProfile`**.
8
+ - **Narrix web keys:** Validation rejects `enableWebScope`, `forceWebScope`, `webScopeQuestions` on **`taskConfiguration.narrix`** (discovery-only narrix remains).
9
+
10
+ ### Changed
11
+
12
+ - **Peer / dev:** `@exellix/graph-engine` **^8.6.0**, `@exellix/ai-tasks` **^10.0.13**, `@exellix/ai-skills` **^6.12.5**.
13
+ - **npm overrides** — `@x12i/graphenix-*` **^2.7.3** (format ^2.0.0).
14
+ - **Prompts / judge rules** — aligned with webQueryTemplate + no legacy narrix web keys.
15
+
16
+ ### Downstream
17
+
18
+ - **graphs-studio:** `docs/handoff/graphs-studio-graphenix-2.7.3.md` — pin composer **2.12.0** + engine **8.6.0**.
19
+
20
+ ## 2.11.0 — Graphenix 2.7.0 + CR-006 alignment
21
+
22
+ ### Breaking
23
+
24
+ - **CR-006:** Removed `suggestGraphEntryInputs` action, `GraphEntryInputRow` / `inputs` patch types, `validateGraphEntryInputRows`, and entity-binding helpers tied to graph-entry inputs. Graphs must not declare `metadata.graphEntry.inputs`.
25
+
26
+ ### Changed
27
+
28
+ - **Peer / dev dependencies:** `@exellix/graph-engine` ^8.5.0, `@exellix/ai-tasks` ^10.0.9, `@exellix/ai-skills` ^6.12.3.
29
+ - **npm overrides** — `@x12i/graphenix-*` **^2.7.0** (format ^2.0.0).
30
+ - **`buildGraphEntryExampleGuidance`** — uses `requiredExecutionPaths` only (no inputs-based schema).
31
+
3
32
  ## 2.10.0 — Graphenix 2.5.0 jobMemory.context alignment
4
33
 
5
34
  ### Changed
package/README.md CHANGED
@@ -26,7 +26,7 @@ FuncX pack / example-generation contract: [docs/funcx-generic-pack-spec.md](./do
26
26
  ## Install
27
27
 
28
28
  ```bash
29
- npm install @exellix/graph-composer @exellix/graph-engine@^8.1.0 @exellix/ai-tasks@^9.0.0
29
+ npm install @exellix/graph-composer @exellix/graph-engine@^8.6.0 @exellix/ai-tasks@^10.0.13
30
30
  ```
31
31
 
32
32
  Requires **Node.js 20+** (Catalox embedder and this package align on `>=20`).
@@ -298,7 +298,7 @@ graph-composer explain-basic
298
298
  | `validateSuggestCatalogResolutionOutput`, `validateSuggestCatalogCreationsOutput`, `validateSuggestScopingNeedMatchOutput`, `validateSuggestScopingMapCreationOutput`, `validateReviewConceptOutput` | Offline output validators for tests / hosts. |
299
299
  | Types: `GraphComposerInput`, `GraphComposerAgentInput`, `GraphComposerIntent`, `CatalogCandidates`, `ScopingMapCandidate`, `NarrixTemplateCandidate`, … | See `dist/index.d.ts`. |
300
300
  | `loadCatalogCandidatesFromCatalox`, `createCatalox`, `unifiedCatalogItemToSkillDescriptor`, … | Build `catalogCandidates` from **Catalox** catalogs; see [`docs/catalog-metadb-end-state-contract.md`](./docs/catalog-metadb-end-state-contract.md). |
301
- | `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`. |
301
+ | `reportTaskNodeProtocolGaps` | Offline list of **AI task** nodes violating **`taskConfiguration.aiTaskProfile`** (pre/post, **`webQueryTemplate`** when web scope is needed, **`inputSynthesis`** fields when synthesis is on). See `docs/task-node-execution-protocol.md`. |
302
302
  | `collectCanonicalGraphWarnings` | Warn-first **`@exellix/graph-engine`** canonical checks (top-level keys, metadata placement, memory paths, model profile aliases). |
303
303
  | `collectGraphOrchestratorInvokeWarnings` | Authoring: **`taskConfiguration.llmCall.reasoningEffort`**, reject **`maxTokens`** on **`modelConfig`**. |
304
304
  | **Studio preflight** | **`analyzeTaskNodeRunTaskRequest`**, **`analyzeRunTaskRequest`**, **`buildSkillRequestAnalysisPacket`**, **`formatSkillRequestAnalysisMarkdown`**, **`FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID`** — moved from graph-engine / ai-tasks 8.6; see [`docs/graph-entry-agent-contract.md`](./docs/graph-entry-agent-contract.md). |
@@ -1,12 +1,12 @@
1
1
  import type { SkillDescriptor } from "./types.js";
2
2
  /**
3
- * Web scoping for this node: explicit flag + question list for the scoper / ai-tasks.
3
+ * Web scope for this node: Rendrix query template compiled to PRE `webScope` unit (Graphenix 2.7.3+).
4
4
  * See `docs/task-node-execution-protocol.md`.
5
5
  */
6
- export type WebScopingNodeConfig = {
7
- enabled: boolean;
8
- /** When `enabled` is true, must be a non-empty list of non-empty strings. */
9
- questions?: string[];
6
+ export type WebQueryTemplateConfig = {
7
+ webQueryTemplate?: string;
8
+ webQueryTemplates?: string[];
9
+ webScopeOptions?: Record<string, unknown>;
10
10
  };
11
11
  export type InputSynthesisDestination = "job" | "task" | "execution";
12
12
  /**
@@ -44,12 +44,14 @@ export type InputSynthesisNodeConfig = {
44
44
  export type AiTaskProfileMetadata = {
45
45
  preStrategyKey: string;
46
46
  postStrategyKey: string;
47
- webScoping?: WebScopingNodeConfig;
47
+ webQueryTemplate?: string;
48
+ webQueryTemplates?: string[];
49
+ webScopeOptions?: Record<string, unknown>;
48
50
  inputSynthesis?: InputSynthesisNodeConfig;
49
51
  };
50
52
  /** Built-in worox-graph local skills — no aiTaskProfile required. */
51
53
  export declare const DEFAULT_LOCAL_SKILL_KEYS: readonly string[];
52
- export type TaskNodeProtocolIssueCode = "missing_preStrategyKey" | "missing_postStrategyKey" | "web_scoping_enabled_without_questions" | "web_scoping_questions_without_enabled" | "synthesis_enabled_without_catalogId" | "synthesis_enabled_without_strategyKey" | "synthesis_enabled_without_outputKey" | "synthesis_enabled_without_sources" | "synthesis_enabled_without_destination" | "synthesis_pipeline_conflict";
54
+ export type TaskNodeProtocolIssueCode = "missing_preStrategyKey" | "missing_postStrategyKey" | "legacy_web_scoping" | "web_query_template_invalid" | "synthesis_enabled_without_catalogId" | "synthesis_enabled_without_strategyKey" | "synthesis_enabled_without_outputKey" | "synthesis_enabled_without_sources" | "synthesis_enabled_without_destination" | "synthesis_pipeline_conflict";
53
55
  export type TaskNodeProtocolGap = {
54
56
  nodeId: string;
55
57
  skillKey: string;
@@ -57,7 +59,7 @@ export type TaskNodeProtocolGap = {
57
59
  };
58
60
  /**
59
61
  * Lists **AI task** nodes that violate the **task node execution protocol**
60
- * (pre/post strategies, web scoping questions, input synthesis strategy).
62
+ * (pre/post strategies, web query template, input synthesis strategy).
61
63
  */
62
64
  export declare function reportTaskNodeProtocolGaps(graph: object, options?: {
63
65
  utilitySkills?: SkillDescriptor[];
@@ -1 +1 @@
1
- {"version":3,"file":"aiTaskProfile.d.ts","sourceRoot":"","sources":["../src/aiTaskProfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAK5C,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACjC,wBAAwB,GACxB,yBAAyB,GACzB,uCAAuC,GACvC,uCAAuC,GACvC,qCAAqC,GACrC,uCAAuC,GACvC,qCAAqC,GACrC,mCAAmC,GACnC,uCAAuC,GACvC,6BAA6B,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACrC,CAAC;AAsHF;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACxC,GACA,mBAAmB,EAAE,CAsEvB"}
1
+ {"version":3,"file":"aiTaskProfile.d.ts","sourceRoot":"","sources":["../src/aiTaskProfile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAK5C,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACjC,wBAAwB,GACxB,yBAAyB,GACzB,oBAAoB,GACpB,4BAA4B,GAC5B,qCAAqC,GACrC,uCAAuC,GACvC,qCAAqC,GACrC,mCAAmC,GACnC,uCAAuC,GACvC,6BAA6B,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACrC,CAAC;AAkIF;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACxC,GACA,mBAAmB,EAAE,CA0EvB"}
@@ -26,16 +26,14 @@ function readAiTaskProfileFromRecord(container) {
26
26
  const p = readRecord(raw);
27
27
  if (p === undefined)
28
28
  return {};
29
- const webRaw = readRecord(p.webScoping);
30
- let web;
31
- if (webRaw !== undefined) {
32
- const enabled = webRaw.enabled === true;
33
- const qraw = webRaw.questions;
34
- const questions = Array.isArray(qraw)
35
- ? qraw.filter((x) => nonEmptyString(x)).map((s) => s.trim())
36
- : undefined;
37
- web = { enabled, ...(questions !== undefined && questions.length > 0 ? { questions } : {}) };
38
- }
29
+ const legacyWebScoping = p.webScoping !== undefined;
30
+ const webQueryTemplate = nonEmptyString(p.webQueryTemplate)
31
+ ? p.webQueryTemplate.trim()
32
+ : undefined;
33
+ const qraw = p.webQueryTemplates;
34
+ const webQueryTemplates = Array.isArray(qraw)
35
+ ? qraw.filter((x) => nonEmptyString(x)).map((s) => s.trim())
36
+ : undefined;
39
37
  const synRaw = readRecord(p.inputSynthesis);
40
38
  let synthesis;
41
39
  if (synRaw !== undefined) {
@@ -72,10 +70,19 @@ function readAiTaskProfileFromRecord(container) {
72
70
  return {
73
71
  pre: nonEmptyString(p.preStrategyKey) ? p.preStrategyKey.trim() : undefined,
74
72
  post: nonEmptyString(p.postStrategyKey) ? p.postStrategyKey.trim() : undefined,
75
- ...(web !== undefined ? { web } : {}),
73
+ ...(webQueryTemplate !== undefined ? { webQueryTemplate } : {}),
74
+ ...(webQueryTemplates !== undefined && webQueryTemplates.length > 0
75
+ ? { webQueryTemplates }
76
+ : {}),
77
+ ...(legacyWebScoping ? { legacyWebScoping: true } : {}),
76
78
  ...(synthesis !== undefined ? { synthesis } : {}),
77
79
  };
78
80
  }
81
+ function hasWebQueryAuthoring(profile) {
82
+ if (nonEmptyString(profile.webQueryTemplate))
83
+ return true;
84
+ return (profile.webQueryTemplates?.length ?? 0) > 0;
85
+ }
79
86
  function hasSynthesisPipelineConflict(node) {
80
87
  const tc = readRecord(node.taskConfiguration);
81
88
  const profile = readRecord(tc?.aiTaskProfile);
@@ -109,7 +116,7 @@ function localSkillKeySet(utilitySkills, extraLocal) {
109
116
  }
110
117
  /**
111
118
  * Lists **AI task** nodes that violate the **task node execution protocol**
112
- * (pre/post strategies, web scoping questions, input synthesis strategy).
119
+ * (pre/post strategies, web query template, input synthesis strategy).
113
120
  */
114
121
  export function reportTaskNodeProtocolGaps(graph, options) {
115
122
  const localKeys = localSkillKeySet(options?.utilitySkills, options?.extraLocalSkillKeys);
@@ -136,20 +143,21 @@ export function reportTaskNodeProtocolGaps(graph, options) {
136
143
  const fromMeta = readAiTaskProfileFromRecord(meta);
137
144
  const pre = fromTaskConfig.pre ?? fromMeta.pre;
138
145
  const post = fromTaskConfig.post ?? fromMeta.post;
139
- const web = fromTaskConfig.web ?? fromMeta.web;
146
+ const webQueryTemplate = fromTaskConfig.webQueryTemplate ?? fromMeta.webQueryTemplate;
147
+ const webQueryTemplates = fromTaskConfig.webQueryTemplates ?? fromMeta.webQueryTemplates;
148
+ const legacyWebScoping = fromTaskConfig.legacyWebScoping === true || fromMeta.legacyWebScoping === true;
140
149
  const synthesis = fromTaskConfig.synthesis ?? fromMeta.synthesis;
141
150
  const issues = [];
142
151
  if (pre === undefined)
143
152
  issues.push("missing_preStrategyKey");
144
153
  if (post === undefined)
145
154
  issues.push("missing_postStrategyKey");
146
- const wsEnabled = web?.enabled === true;
147
- const questions = web?.questions ?? [];
148
- if (wsEnabled && questions.length === 0) {
149
- issues.push("web_scoping_enabled_without_questions");
155
+ if (legacyWebScoping) {
156
+ issues.push("legacy_web_scoping");
150
157
  }
151
- if (!wsEnabled && questions.length > 0) {
152
- issues.push("web_scoping_questions_without_enabled");
158
+ if (hasWebQueryAuthoring({ webQueryTemplate, webQueryTemplates }) &&
159
+ webQueryTemplate === "input.question") {
160
+ issues.push("web_query_template_invalid");
153
161
  }
154
162
  if (synthesis?.enabled === true) {
155
163
  if (!nonEmptyString(synthesis.catalogId)) {
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalGraphDocument.d.ts","sourceRoot":"","sources":["../src/canonicalGraphDocument.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwcH,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAc7E;AAyBD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAkCtF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAWpF"}
1
+ {"version":3,"file":"canonicalGraphDocument.d.ts","sourceRoot":"","sources":["../src/canonicalGraphDocument.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0ZH,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAc7E;AAyBD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAkCtF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAWpF"}
@@ -33,6 +33,7 @@ const FORBIDDEN_GRAPH_RESPONSE_KEYS = [
33
33
  "mappingPreset",
34
34
  ];
35
35
  const FORBIDDEN_NARRIX_WEB_KEYS = [
36
+ "enableWebScope",
36
37
  "webScopeQuestions",
37
38
  "webScoping",
38
39
  "webScopeTemplates",
@@ -234,45 +235,8 @@ function canonicalizeTaskConfigurationExecutionStrategies(node) {
234
235
  }
235
236
  return changed;
236
237
  }
237
- function extractWebQuestionsFromNarrix(narrix) {
238
- const raw = narrix.webScopeQuestions;
239
- if (!Array.isArray(raw))
240
- return [];
241
- const out = [];
242
- for (const item of raw) {
243
- if (typeof item === "string" && item.trim() !== "") {
244
- out.push(item.trim());
245
- continue;
246
- }
247
- const o = readRecord(item);
248
- const q = o?.question;
249
- if (typeof q === "string" && q.trim() !== "")
250
- out.push(q.trim());
251
- }
252
- return out;
253
- }
254
- function mergeWebScopingFromNarrix(taskConfiguration, narrix) {
238
+ function stripForbiddenNarrixWebKeys(narrix) {
255
239
  let changed = false;
256
- const questions = extractWebQuestionsFromNarrix(narrix);
257
- const enabled = narrix.enableWebScope === true ||
258
- narrix.forceWebScope === true ||
259
- questions.length > 0;
260
- const profile = {
261
- ...readRecord(taskConfiguration.aiTaskProfile),
262
- };
263
- const existingWeb = readRecord(profile.webScoping);
264
- const existingQuestions = Array.isArray(existingWeb?.questions)
265
- ? existingWeb.questions.filter((x) => nonEmptyString(x))
266
- : [];
267
- if (questions.length > 0 || enabled) {
268
- const mergedQuestions = [...new Set([...existingQuestions, ...questions])];
269
- profile.webScoping = {
270
- enabled: existingWeb?.enabled === true || enabled || mergedQuestions.length > 0,
271
- ...(mergedQuestions.length > 0 ? { questions: mergedQuestions } : {}),
272
- };
273
- taskConfiguration.aiTaskProfile = profile;
274
- changed = true;
275
- }
276
240
  for (const k of FORBIDDEN_NARRIX_WEB_KEYS) {
277
241
  if (k in narrix) {
278
242
  delete narrix[k];
@@ -281,14 +245,28 @@ function mergeWebScopingFromNarrix(taskConfiguration, narrix) {
281
245
  }
282
246
  return changed;
283
247
  }
284
- function stripForbiddenNarrixWebKeys(narrix) {
248
+ function rejectLegacyWebScopingOnProfile(taskConfiguration) {
249
+ const profile = readRecord(taskConfiguration.aiTaskProfile);
250
+ if (profile === undefined || !("webScoping" in profile))
251
+ return false;
252
+ delete profile.webScoping;
253
+ taskConfiguration.aiTaskProfile = profile;
254
+ return true;
255
+ }
256
+ function canonicalizeNarrixWebOnNode(node) {
257
+ const tc = readRecord(node.taskConfiguration);
258
+ if (tc === undefined)
259
+ return false;
285
260
  let changed = false;
286
- for (const k of FORBIDDEN_NARRIX_WEB_KEYS) {
287
- if (k in narrix) {
288
- delete narrix[k];
289
- changed = true;
290
- }
261
+ const narrix = readRecord(tc.narrix);
262
+ if (narrix !== undefined && stripForbiddenNarrixWebKeys(narrix)) {
263
+ changed = true;
264
+ }
265
+ if (rejectLegacyWebScopingOnProfile(tc)) {
266
+ changed = true;
291
267
  }
268
+ if (changed)
269
+ node.taskConfiguration = tc;
292
270
  return changed;
293
271
  }
294
272
  function liftSkillKeyAndVariables(node) {
@@ -398,22 +376,6 @@ function removeLegacySynthesisFlags(node) {
398
376
  node.taskConfiguration = { ...tc, aiTaskProfile: nextProfile };
399
377
  return true;
400
378
  }
401
- function canonicalizeNarrixWebOnNode(node) {
402
- const tc = readRecord(node.taskConfiguration);
403
- if (tc === undefined)
404
- return false;
405
- let changed = false;
406
- const narrix = readRecord(tc.narrix);
407
- if (narrix !== undefined && mergeWebScopingFromNarrix(tc, narrix)) {
408
- changed = true;
409
- }
410
- if (narrix !== undefined && stripForbiddenNarrixWebKeys(narrix)) {
411
- changed = true;
412
- }
413
- if (changed)
414
- node.taskConfiguration = tc;
415
- return changed;
416
- }
417
379
  /** Convert record-keyed `nodes` to an array; returns whether conversion happened. */
418
380
  export function normalizeNodesToArray(graph) {
419
381
  const nodes = graph.nodes;
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalGraphWarnings.d.ts","sourceRoot":"","sources":["../src/canonicalGraphWarnings.ts"],"names":[],"mappings":"AAkIA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAgIrE"}
1
+ {"version":3,"file":"canonicalGraphWarnings.d.ts","sourceRoot":"","sources":["../src/canonicalGraphWarnings.ts"],"names":[],"mappings":"AAmIA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAgIrE"}
@@ -53,6 +53,7 @@ const FORBIDDEN_TASK_METADATA_EXECUTION_KEYS = new Set([
53
53
  "woroxContractTarget",
54
54
  ]);
55
55
  const FORBIDDEN_NARRIX_WEB_KEYS = [
56
+ "enableWebScope",
56
57
  "webScopeQuestions",
57
58
  "webScoping",
58
59
  "webScopeTemplates",
@@ -165,7 +166,7 @@ export function collectCanonicalGraphWarnings(graph) {
165
166
  if (narrix !== undefined) {
166
167
  for (const k of FORBIDDEN_NARRIX_WEB_KEYS) {
167
168
  if (k in narrix) {
168
- warnings.push(`${prefix}: taskConfiguration.narrix.${k} is forbidden — author web scope under taskConfiguration.aiTaskProfile.webScoping.`);
169
+ warnings.push(`${prefix}: taskConfiguration.narrix.${k} is forbidden — author web scope under taskConfiguration.aiTaskProfile.webQueryTemplate.`);
169
170
  }
170
171
  }
171
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalogMatchAssist.d.ts","sourceRoot":"","sources":["../src/catalogMatchAssist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAEV,kBAAkB,EAGlB,eAAe,EAChB,MAAM,YAAY,CAAC;AAgKpB,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,kBAAkB,GAAG;IAC1B,SAAS,EAAE,QAAQ,GAAG,YAAY,CAAC;IACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC,EACD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAmF9C"}
1
+ {"version":3,"file":"catalogMatchAssist.d.ts","sourceRoot":"","sources":["../src/catalogMatchAssist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAEV,kBAAkB,EAGlB,eAAe,EAChB,MAAM,YAAY,CAAC;AA0KpB,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,kBAAkB,GAAG;IAC1B,SAAS,EAAE,QAAQ,GAAG,YAAY,CAAC;IACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC,EACD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAmF9C"}
@@ -1,5 +1,11 @@
1
1
  import { matchLists } from "@x12i/funcx/functions";
2
2
  import { resolveFuncxModel } from "./funcxModel.js";
3
+ function readRecord(v) {
4
+ if (v === null || v === undefined || typeof v !== "object" || Array.isArray(v)) {
5
+ return undefined;
6
+ }
7
+ return v;
8
+ }
3
9
  function mergeBySkillKey(a, b) {
4
10
  if (!b?.length)
5
11
  return [...a];
@@ -93,6 +99,8 @@ function narrixNodeSummary(node) {
93
99
  return null;
94
100
  }
95
101
  const n = narrix;
102
+ const tc = readRecord(node.taskConfiguration);
103
+ const profile = readRecord(tc?.aiTaskProfile);
96
104
  const id = typeof node.id === "string" ? node.id : "(no-id)";
97
105
  const skillKey = typeof node.skillKey === "string" ? node.skillKey : undefined;
98
106
  return {
@@ -101,9 +109,9 @@ function narrixNodeSummary(node) {
101
109
  narrix: {
102
110
  datasetId: n.datasetId,
103
111
  layer: n.layer,
104
- enableWebScope: n.enableWebScope,
105
112
  narrativeTypeIds: n.narrativeTypeIds,
106
113
  },
114
+ webQueryTemplate: typeof profile?.webQueryTemplate === "string" ? profile.webQueryTemplate : undefined,
107
115
  };
108
116
  }
109
117
  function skillCatalogItems(skills) {
@@ -131,7 +139,7 @@ function narrixCatalogItems(templates) {
131
139
  datasetId: t.datasetId,
132
140
  layer: t.layer,
133
141
  narrativeTypeIds: t.narrativeTypeIds ?? [],
134
- enableWebScope: t.enableWebScope ?? false,
142
+ ...(t.webQueryTemplate !== undefined ? { webQueryTemplate: t.webQueryTemplate } : {}),
135
143
  tags: t.tags ?? [],
136
144
  }));
137
145
  }
@@ -127,7 +127,7 @@ export function unifiedCatalogItemToNarrixTemplateCandidate(item) {
127
127
  datasetId: pickStr(d.datasetId) ?? pickStr(d.dataset_id),
128
128
  layer: pickStr(d.layer),
129
129
  narrativeTypeIds: pickStrArray(d.narrativeTypeIds) ?? pickStrArray(d.narrative_type_ids),
130
- enableWebScope: pickBool(d.enableWebScope) ?? pickBool(d.enable_web_scope),
130
+ webQueryTemplate: pickStr(d.webQueryTemplate) ?? pickStr(d.web_query_template),
131
131
  tags: pickStrArray(d.tags),
132
132
  };
133
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exampleGeneration.d.ts","sourceRoot":"","sources":["../src/exampleGeneration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,MAAM,mCAAmC,GAAG,oBAAoB,GAAG;IACvE,+DAA+D;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AA0DF,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,QAAQ,GAAE,MAAM,EAAO,GACtB,MAAM,EAAE,CASV;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,mCAAmC,GAC1C,OAAO,CAAC,yBAAyB,CAAC,CAcpC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,EACxD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,cAAc,CAAC,EAAE,0BAA0B,EAC3C,aAAa,GAAE,MAAM,EAAO,GAC3B,MAAM,EAAE,CAmCV;AAED,MAAM,MAAM,oCAAoC,GAAG,oBAAoB,GAAG;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC9C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC,yBAAyB,CAAC,CAoCpC;AAED,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC7B,CAAC"}
1
+ {"version":3,"file":"exampleGeneration.d.ts","sourceRoot":"","sources":["../src/exampleGeneration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,MAAM,mCAAmC,GAAG,oBAAoB,GAAG;IACvE,+DAA+D;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AA0DF,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,QAAQ,GAAE,MAAM,EAAO,GACtB,MAAM,EAAE,CASV;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,mCAAmC,GAC1C,OAAO,CAAC,yBAAyB,CAAC,CAcpC;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,EACxD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,cAAc,CAAC,EAAE,0BAA0B,EAC3C,aAAa,GAAE,MAAM,EAAO,GAC3B,MAAM,EAAE,CA0BV;AAED,MAAM,MAAM,oCAAoC,GAAG,oBAAoB,GAAG;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC9C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC,yBAAyB,CAAC,CAmCpC;AAED,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC7B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { generateContentExample, generateJsonExample, generateMdExample, } from "@x12i/funcx/functions";
2
- import { buildGraphEntryExampleJsonSchema, resolveEffectiveGraphEntry, } from "./graphEntryContract.js";
2
+ import { resolveEffectiveGraphEntry, } from "./graphEntryContract.js";
3
3
  function asObject(v) {
4
4
  return v !== null && typeof v === "object" && !Array.isArray(v)
5
5
  ? v
@@ -74,24 +74,11 @@ export function buildGraphEntryExampleGuidance(graphEntry, graphConcept, entityB
74
74
  const entry = resolveEffectiveGraphEntry(graphEntry !== undefined && typeof graphEntry === "object"
75
75
  ? graphEntry
76
76
  : undefined);
77
- const inputs = Array.isArray(entry.inputs) ? entry.inputs : [];
78
- const pathHints = inputs
79
- .slice(0, 12)
80
- .map((row, i) => {
81
- const r = row;
82
- const path = typeof r.path === "string" ? r.path : "";
83
- const kind = typeof r.kind === "string" ? r.kind : "scalar";
84
- return path ? `${i + 1}. ${kind} @ ${path}` : undefined;
85
- })
86
- .filter((x) => x !== undefined);
87
77
  const hints = [
88
78
  "Generate example rows for metadata.graphEntry.exampleInputs (graph job-start contract).",
89
79
  "Each example value must be a string; use format json with parseable JSON in value.",
90
- "Paths must align with metadata.graphEntry.inputs under execution.input.*.",
80
+ "Paths are dot-paths under execution.input (e.g. execution.input.subnetId).",
91
81
  ];
92
- if (pathHints.length > 0) {
93
- hints.push(`Declared entry inputs: ${pathHints.join(" | ")}.`);
94
- }
95
82
  if (entityBindings?.coreEntityCollectionId) {
96
83
  hints.push(`Core entity collection: ${entityBindings.coreEntityCollectionId}.`);
97
84
  }
@@ -99,6 +86,10 @@ export function buildGraphEntryExampleGuidance(graphEntry, graphConcept, entityB
99
86
  if (typeof expected === "string" && expected.trim()) {
100
87
  hints.push(`Concept expectedInput: ${truncate(expected)}.`);
101
88
  }
89
+ const requiredPaths = entry.requiredExecutionPaths;
90
+ if (Array.isArray(requiredPaths) && requiredPaths.length > 0) {
91
+ hints.push(`Required execution paths: ${requiredPaths.join(", ")}.`);
92
+ }
102
93
  return [...hints, ...extraGuidance];
103
94
  }
104
95
  export async function generateGraphEntryInputExample(params) {
@@ -108,8 +99,7 @@ export async function generateGraphEntryInputExample(params) {
108
99
  : graph !== undefined
109
100
  ? resolveEffectiveGraphEntry(graph)
110
101
  : {};
111
- const inputs = (Array.isArray(entry.inputs) ? entry.inputs : []);
112
- const jsonSchema = buildGraphEntryExampleJsonSchema(inputs, entityBindings);
102
+ const jsonSchema = { type: "object", additionalProperties: true };
113
103
  const concept = graph !== null && graph !== undefined && typeof graph === "object"
114
104
  ? graph.metadata?.graphConcept
115
105
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"graphComposerActions.d.ts","sourceRoot":"","sources":["../src/graphComposerActions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,KAAK,eAAe,EASrB,MAAM,oCAAoC,CAAC;AAY5C,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAEhE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;CAC1C,CAAC;AAaF,eAAO,MAAM,8BAA8B,EAAE,SAAS,6BAA6B,EAwMvE,CAAC;AAYb,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GACb,6BAA6B,CAQ/B;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,GACf,6BAA6B,GAAG,SAAS,CAE3C;AAED,uEAAuE;AACvE,wBAAgB,+BAA+B,IAAI,MAAM,EAAE,CAQ1D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAS1E"}
1
+ {"version":3,"file":"graphComposerActions.d.ts","sourceRoot":"","sources":["../src/graphComposerActions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,KAAK,eAAe,EASrB,MAAM,oCAAoC,CAAC;AAW5C,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAEhE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;CAC1C,CAAC;AAaF,eAAO,MAAM,8BAA8B,EAAE,SAAS,6BAA6B,EA8LvE,CAAC;AAYb,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GACb,6BAA6B,CAQ/B;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,GACf,6BAA6B,GAAG,SAAS,CAE3C;AAED,uEAAuE;AACvE,wBAAgB,+BAA+B,IAAI,MAAM,EAAE,CAQ1D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAS1E"}
@@ -2,7 +2,7 @@ import { readFileSync, existsSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { graphComposerPackRoot } from "./packDir.js";
4
4
  import { validateCreateModifyOutput, validateExplainOutput, validateSuggestCatalogCreationsOutput, validateSuggestCatalogResolutionOutput, validateSuggestConceptOutput, validateSuggestScopingMapCreationOutput, validateSuggestScopingNeedMatchOutput, validateReviewConceptOutput, } from "./graphComposerOutputValidation.js";
5
- import { validateReviewGraphEntryContractOutput, validateSuggestGraphEntryInputsOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphEntryOutputValidation.js";
5
+ import { validateReviewGraphEntryContractOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphEntryOutputValidation.js";
6
6
  import { GRAPH_ENTRY_SHARED_INCLUDES } from "./graphEntryPostProcess.js";
7
7
  function readPromptRelative(rel) {
8
8
  const root = graphComposerPackRoot();
@@ -142,15 +142,6 @@ export const GRAPH_COMPOSER_ACTION_REGISTRY = [
142
142
  toolDescription: "Review job-start graphEntry contract, job defaults, and alignment with graphConcept Lane 1. Returns verdict, graph-scoped findings, optional partial patches. No graph JSON.",
143
143
  validateOutput: validateReviewGraphEntryContractOutput,
144
144
  },
145
- {
146
- action: "suggestGraphEntryInputs",
147
- promptFile: "action-suggest-graph-entry-inputs.md",
148
- sharedIncludes: GRAPH_ENTRY_SHARED_INCLUDES,
149
- requiresExistingGraph: true,
150
- toolName: "graph_suggest_graph_entry_inputs",
151
- toolDescription: "Propose metadata.graphEntry.inputs rows (execution.input.* paths). No graph JSON.",
152
- validateOutput: validateSuggestGraphEntryInputsOutput,
153
- },
154
145
  {
155
146
  action: "suggestGraphEntryExamples",
156
147
  promptFile: "action-suggest-graph-entry-examples.md",
@@ -4,7 +4,7 @@ export type OutputValidationContext = {
4
4
  input?: GraphComposerInput;
5
5
  };
6
6
  export type OutputValidator = (out: Record<string, unknown>, ctx?: OutputValidationContext) => void;
7
- export { validateReviewGraphEntryContractOutput, validateSuggestGraphEntryInputsOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphEntryOutputValidation.js";
7
+ export { validateReviewGraphEntryContractOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphEntryOutputValidation.js";
8
8
  export declare function validateExplainOutput(out: Record<string, unknown>, _ctx?: OutputValidationContext): void;
9
9
  export declare function validateReviewConceptOutput(out: Record<string, unknown>, _ctx?: OutputValidationContext): void;
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"graphComposerOutputValidation.d.ts","sourceRoot":"","sources":["../src/graphComposerOutputValidation.ts"],"names":[],"mappings":"AASA,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;AAEV,OAAO,EACL,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,yCAAyC,EACzC,qCAAqC,EACrC,qCAAqC,EACrC,2CAA2C,GAC5C,MAAM,iCAAiC,CAAC;AAuBzC,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,CA+BN;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":"AASA,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;AAEV,OAAO,EACL,sCAAsC,EACtC,uCAAuC,EACvC,yCAAyC,EACzC,qCAAqC,EACrC,qCAAqC,EACrC,2CAA2C,GAC5C,MAAM,iCAAiC,CAAC;AAuBzC,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAIN;AAwYD,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,CA+BN;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"}
@@ -3,7 +3,7 @@ import { collectAuthoringGraphValidationWarnings } from "./authoringGraphValidat
3
3
  import { collectCanonicalGraphWarnings } from "./canonicalGraphWarnings.js";
4
4
  import { assertCanonicalGraphDocument } from "./graphEngineBridge.js";
5
5
  import { canonicalizeGraphModel, reportTaskNodeInputsLayoutIssues, taskNodeInputsLayoutWarningMessage, } from "./taskNodeTaskVariable.js";
6
- export { validateReviewGraphEntryContractOutput, validateSuggestGraphEntryInputsOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphEntryOutputValidation.js";
6
+ export { validateReviewGraphEntryContractOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphEntryOutputValidation.js";
7
7
  const PRIMARY_INTENT_TYPES = new Set([
8
8
  "question",
9
9
  "decision",
@@ -229,9 +229,12 @@ function validateReviewConceptCoreTaskPatchItem(t, ctxPrefix) {
229
229
  }
230
230
  }
231
231
  if ("webScoping" in t && t.webScoping !== undefined) {
232
- const w = t.webScoping;
233
- if (w === null || typeof w !== "object" || Array.isArray(w)) {
234
- throw new Error(`${ctxPrefix}.webScoping must be an object when present`);
232
+ throw new Error(`${ctxPrefix}.webScoping is not allowed — use requirements.webQueryTemplate or aiTaskProfile.webQueryTemplate on materialized nodes`);
233
+ }
234
+ if ("webQueryTemplate" in t && t.webQueryTemplate !== undefined) {
235
+ const wqt = t.webQueryTemplate;
236
+ if (typeof wqt !== "string" || wqt.trim() === "") {
237
+ throw new Error(`${ctxPrefix}.webQueryTemplate must be a non-empty string when present`);
235
238
  }
236
239
  }
237
240
  if ("synthesis" in t && t.synthesis !== undefined) {
@@ -516,7 +519,7 @@ export function validateCreateModifyOutput(out, ctx) {
516
519
  utilitySkills: ctx?.input?.utilitySkills,
517
520
  });
518
521
  if (gaps.length > 0) {
519
- throw new Error(`create/modify graph violates task node protocol (taskConfiguration.aiTaskProfile / webScoping / inputSynthesis): ${JSON.stringify(gaps)}`);
522
+ throw new Error(`create/modify graph violates task node protocol (taskConfiguration.aiTaskProfile / webQueryTemplate / inputSynthesis): ${JSON.stringify(gaps)}`);
520
523
  }
521
524
  try {
522
525
  assertCanonicalGraphDocument(canonicalized);
@@ -1,4 +1,3 @@
1
- import type { GraphConceptEntityBindings } from "./types.js";
2
1
  export type ComposerAgentSurface = "graph-entry" | "task-node";
3
2
  /** Studio `buildGraphEntryAgentContext` envelope (FR-G1). */
4
3
  export type GraphEntryAgentContext = {
@@ -18,15 +17,6 @@ export type TaskNodeAgentContext = {
18
17
  lastRunMeta?: Record<string, unknown>;
19
18
  };
20
19
  export type GraphComposerAgentContext = GraphEntryAgentContext | TaskNodeAgentContext;
21
- export type GraphEntryInputKind = "scalar" | "record";
22
- export type GraphEntryInputRow = {
23
- kind?: GraphEntryInputKind | string;
24
- path: string;
25
- required?: boolean;
26
- entityIds?: string[];
27
- label?: string;
28
- description?: string;
29
- };
30
20
  export type GraphEntryExampleFormat = "json" | "markdown" | "text";
31
21
  export type GraphEntryExampleRow = {
32
22
  path?: string;
@@ -39,7 +29,6 @@ export type GraphEntryConditionsPatch = {
39
29
  aiCondition?: Record<string, unknown>;
40
30
  };
41
31
  export type GraphEntryPatch = {
42
- inputs?: GraphEntryInputRow[];
43
32
  exampleInputs?: GraphEntryExampleRow[];
44
33
  conditions?: GraphEntryConditionsPatch;
45
34
  };
@@ -83,21 +72,9 @@ export type GraphResponsePatch = {
83
72
  studio?: Record<string, unknown>;
84
73
  };
85
74
  export declare const GRAPH_ENTRY_FINDING_CATEGORIES: Set<string>;
86
- export declare const GRAPH_ENTRY_PATH_PREFIX = "execution.input.";
87
75
  export declare const GRAPH_EXECUTION_PATCH_ALLOWLIST: Set<string>;
88
76
  /** Read `metadata.graphEntry` and normalize legacy `exampleInput` → `exampleInputs`. */
89
77
  export declare function resolveEffectiveGraphEntry(graphOrEntry: object | Record<string, unknown> | undefined): Record<string, unknown>;
90
- export declare function isValidGraphEntryPath(path: string): boolean;
91
- export declare function validateGraphEntryPaths(paths: string[]): string[];
92
- /** Infer JSON Schema for example generation from declared graph-entry inputs (FR-G4). */
93
- export declare function buildGraphEntryExampleJsonSchema(inputs: GraphEntryInputRow[] | unknown[], _entityBindings?: GraphConceptEntityBindings): Record<string, unknown>;
94
- export type EntityBindingMismatch = {
95
- inputPath: string;
96
- entityIds: string[];
97
- message: string;
98
- };
99
- /** FR-G3: flag when graphEntry.inputs[].entityIds disagree with graphConcept.entityBindings. */
100
- export declare function findGraphEntryEntityBindingMismatches(inputs: GraphEntryInputRow[] | unknown[], graphConcept: Record<string, unknown> | undefined): EntityBindingMismatch[];
101
78
  export declare function parseJsonExampleValue(value: string): {
102
79
  ok: boolean;
103
80
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"graphEntryContract.d.ts","sourceRoot":"","sources":["../src/graphEntryContract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphEntryContract.d.ts","sourceRoot":"","sources":["../src/graphEntryContract.ts"],"names":[],"mappings":"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"}