@exellix/graph-engine 6.0.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 (202) hide show
  1. package/.env.example +3 -0
  2. package/CHANGELOG.md +208 -0
  3. package/README.md +827 -0
  4. package/dist/src/errors/ExellixGraphError.d.ts +38 -0
  5. package/dist/src/errors/ExellixGraphError.js +21 -0
  6. package/dist/src/errors/exellixGraphErrorCodes.d.ts +31 -0
  7. package/dist/src/errors/exellixGraphErrorCodes.js +32 -0
  8. package/dist/src/index.d.ts +100 -0
  9. package/dist/src/index.js +75 -0
  10. package/dist/src/inspection/contractInspection.d.ts +21 -0
  11. package/dist/src/inspection/contractInspection.js +526 -0
  12. package/dist/src/inspection/contractTypes.d.ts +137 -0
  13. package/dist/src/inspection/contractTypes.js +1 -0
  14. package/dist/src/inspection/controlInspection.d.ts +22 -0
  15. package/dist/src/inspection/controlInspection.js +130 -0
  16. package/dist/src/inspection/graphInspection.d.ts +51 -0
  17. package/dist/src/inspection/graphInspection.js +467 -0
  18. package/dist/src/inspection/index.d.ts +21 -0
  19. package/dist/src/inspection/index.js +17 -0
  20. package/dist/src/inspection/nodeInspection.d.ts +42 -0
  21. package/dist/src/inspection/nodeInspection.js +474 -0
  22. package/dist/src/inspection/types.d.ts +321 -0
  23. package/dist/src/inspection/types.js +14 -0
  24. package/dist/src/inspection/validateAiTasksNodeExtensions.d.ts +12 -0
  25. package/dist/src/inspection/validateAiTasksNodeExtensions.js +119 -0
  26. package/dist/src/inspection/validateCatalogPlanning.d.ts +21 -0
  27. package/dist/src/inspection/validateCatalogPlanning.js +187 -0
  28. package/dist/src/integrations/ActivityTrackerIntegration.d.ts +86 -0
  29. package/dist/src/integrations/ActivityTrackerIntegration.js +134 -0
  30. package/dist/src/integrations/ActivixGraphRunIntegration.d.ts +34 -0
  31. package/dist/src/integrations/ActivixGraphRunIntegration.js +338 -0
  32. package/dist/src/integrations/ActivixNodeActivityIntegration.d.ts +33 -0
  33. package/dist/src/integrations/ActivixNodeActivityIntegration.js +220 -0
  34. package/dist/src/integrations/cataloxGraphCatalog.d.ts +21 -0
  35. package/dist/src/integrations/cataloxGraphCatalog.js +30 -0
  36. package/dist/src/integrations/createActivixExellixIntegration.d.ts +14 -0
  37. package/dist/src/integrations/createActivixExellixIntegration.js +16 -0
  38. package/dist/src/integrations/createActivixFromEnv.d.ts +31 -0
  39. package/dist/src/integrations/createActivixFromEnv.js +53 -0
  40. package/dist/src/loaders/FileGraphLoader.d.ts +23 -0
  41. package/dist/src/loaders/FileGraphLoader.js +31 -0
  42. package/dist/src/playground/PlaygroundReporter.d.ts +40 -0
  43. package/dist/src/playground/PlaygroundReporter.js +480 -0
  44. package/dist/src/playground/index.d.ts +1 -0
  45. package/dist/src/playground/index.js +1 -0
  46. package/dist/src/runtime/ExellixGraphRuntime.d.ts +263 -0
  47. package/dist/src/runtime/ExellixGraphRuntime.js +1716 -0
  48. package/dist/src/runtime/GraphEngine.d.ts +33 -0
  49. package/dist/src/runtime/GraphEngine.js +4 -0
  50. package/dist/src/runtime/aiTasksObservability.d.ts +6 -0
  51. package/dist/src/runtime/aiTasksObservability.js +37 -0
  52. package/dist/src/runtime/aiTasksStrategyPhases.d.ts +46 -0
  53. package/dist/src/runtime/aiTasksStrategyPhases.js +93 -0
  54. package/dist/src/runtime/applyAiTaskProfileWebScopingToNarrix.d.ts +17 -0
  55. package/dist/src/runtime/applyAiTaskProfileWebScopingToNarrix.js +46 -0
  56. package/dist/src/runtime/buildAiTasksRunTaskRequest.d.ts +67 -0
  57. package/dist/src/runtime/buildAiTasksRunTaskRequest.js +164 -0
  58. package/dist/src/runtime/buildRunLog.d.ts +27 -0
  59. package/dist/src/runtime/buildRunLog.js +234 -0
  60. package/dist/src/runtime/buildRunTaskTaskConfigurationForward.d.ts +9 -0
  61. package/dist/src/runtime/buildRunTaskTaskConfigurationForward.js +80 -0
  62. package/dist/src/runtime/buildTaskNodeJobContext.d.ts +11 -0
  63. package/dist/src/runtime/buildTaskNodeJobContext.js +30 -0
  64. package/dist/src/runtime/canonicalModelUsed.d.ts +6 -0
  65. package/dist/src/runtime/canonicalModelUsed.js +36 -0
  66. package/dist/src/runtime/contextualScope.d.ts +7 -0
  67. package/dist/src/runtime/contextualScope.js +121 -0
  68. package/dist/src/runtime/dataFiltersEvaluation.d.ts +60 -0
  69. package/dist/src/runtime/dataFiltersEvaluation.js +169 -0
  70. package/dist/src/runtime/deepMerge.d.ts +5 -0
  71. package/dist/src/runtime/deepMerge.js +22 -0
  72. package/dist/src/runtime/events.d.ts +92 -0
  73. package/dist/src/runtime/events.js +122 -0
  74. package/dist/src/runtime/executionMatrixHost.d.ts +98 -0
  75. package/dist/src/runtime/executionMatrixHost.js +134 -0
  76. package/dist/src/runtime/executionVariableBuckets.d.ts +67 -0
  77. package/dist/src/runtime/executionVariableBuckets.js +96 -0
  78. package/dist/src/runtime/finalizers/errors.d.ts +9 -0
  79. package/dist/src/runtime/finalizers/errors.js +10 -0
  80. package/dist/src/runtime/finalizers/executeFinalizer.d.ts +40 -0
  81. package/dist/src/runtime/finalizers/executeFinalizer.js +471 -0
  82. package/dist/src/runtime/finalizers/schema.d.ts +18 -0
  83. package/dist/src/runtime/finalizers/schema.js +63 -0
  84. package/dist/src/runtime/finalizers/validateFinalizer.d.ts +16 -0
  85. package/dist/src/runtime/finalizers/validateFinalizer.js +534 -0
  86. package/dist/src/runtime/graphDocumentFingerprint.d.ts +8 -0
  87. package/dist/src/runtime/graphDocumentFingerprint.js +21 -0
  88. package/dist/src/runtime/graphEngineMemoryPaths.d.ts +12 -0
  89. package/dist/src/runtime/graphEngineMemoryPaths.js +55 -0
  90. package/dist/src/runtime/graphResponseMapping.d.ts +23 -0
  91. package/dist/src/runtime/graphResponseMapping.js +156 -0
  92. package/dist/src/runtime/graphResponseMigration.d.ts +7 -0
  93. package/dist/src/runtime/graphResponseMigration.js +44 -0
  94. package/dist/src/runtime/graphRunExecutionSeed.d.ts +29 -0
  95. package/dist/src/runtime/graphRunExecutionSeed.js +61 -0
  96. package/dist/src/runtime/graphRunIdentity.d.ts +7 -0
  97. package/dist/src/runtime/graphRunIdentity.js +18 -0
  98. package/dist/src/runtime/localSkills/deterministicRule.d.ts +137 -0
  99. package/dist/src/runtime/localSkills/deterministicRule.js +196 -0
  100. package/dist/src/runtime/localSkills/index.d.ts +12 -0
  101. package/dist/src/runtime/localSkills/index.js +14 -0
  102. package/dist/src/runtime/localSkills/memorixItemToScopedOutput.d.ts +7 -0
  103. package/dist/src/runtime/localSkills/memorixItemToScopedOutput.js +104 -0
  104. package/dist/src/runtime/localSkills/memorixRuntime.d.ts +9 -0
  105. package/dist/src/runtime/localSkills/memorixRuntime.js +70 -0
  106. package/dist/src/runtime/localSkills/memorixScopedConfig.d.ts +16 -0
  107. package/dist/src/runtime/localSkills/memorixScopedConfig.js +18 -0
  108. package/dist/src/runtime/localSkills/scopedAnswerAssembler.d.ts +23 -0
  109. package/dist/src/runtime/localSkills/scopedAnswerAssembler.js +35 -0
  110. package/dist/src/runtime/localSkills/scopedAnswerFields.d.ts +12 -0
  111. package/dist/src/runtime/localSkills/scopedAnswerFields.js +66 -0
  112. package/dist/src/runtime/localSkills/scopedAnswerWriter.d.ts +32 -0
  113. package/dist/src/runtime/localSkills/scopedAnswerWriter.js +156 -0
  114. package/dist/src/runtime/localSkills/scopedDataReader.d.ts +47 -0
  115. package/dist/src/runtime/localSkills/scopedDataReader.js +89 -0
  116. package/dist/src/runtime/localSkills/utils.d.ts +12 -0
  117. package/dist/src/runtime/localSkills/utils.js +39 -0
  118. package/dist/src/runtime/materializeStructuredRunTaskInput.d.ts +9 -0
  119. package/dist/src/runtime/materializeStructuredRunTaskInput.js +34 -0
  120. package/dist/src/runtime/memory.d.ts +51 -0
  121. package/dist/src/runtime/memory.js +250 -0
  122. package/dist/src/runtime/mergeExellixGraphRuntimeInvocation.d.ts +18 -0
  123. package/dist/src/runtime/mergeExellixGraphRuntimeInvocation.js +32 -0
  124. package/dist/src/runtime/modelConfigSelection.d.ts +7 -0
  125. package/dist/src/runtime/modelConfigSelection.js +37 -0
  126. package/dist/src/runtime/narrixIngestEnv.d.ts +9 -0
  127. package/dist/src/runtime/narrixIngestEnv.js +18 -0
  128. package/dist/src/runtime/pathExpr.d.ts +36 -0
  129. package/dist/src/runtime/pathExpr.js +131 -0
  130. package/dist/src/runtime/predicates.d.ts +14 -0
  131. package/dist/src/runtime/predicates.js +86 -0
  132. package/dist/src/runtime/readTaskNodeInputsConfig.d.ts +23 -0
  133. package/dist/src/runtime/readTaskNodeInputsConfig.js +27 -0
  134. package/dist/src/runtime/resolveExecutionPipelineForTaskNode.d.ts +11 -0
  135. package/dist/src/runtime/resolveExecutionPipelineForTaskNode.js +93 -0
  136. package/dist/src/runtime/resolveGraphEngineMemoryPaths.d.ts +63 -0
  137. package/dist/src/runtime/resolveGraphEngineMemoryPaths.js +213 -0
  138. package/dist/src/runtime/resolveModelConfigForNode.d.ts +20 -0
  139. package/dist/src/runtime/resolveModelConfigForNode.js +69 -0
  140. package/dist/src/runtime/resolveNarrixForTaskNode.d.ts +14 -0
  141. package/dist/src/runtime/resolveNarrixForTaskNode.js +19 -0
  142. package/dist/src/runtime/resolveTaskKey.d.ts +11 -0
  143. package/dist/src/runtime/resolveTaskKey.js +28 -0
  144. package/dist/src/runtime/resolveTaskNodeInputs.d.ts +25 -0
  145. package/dist/src/runtime/resolveTaskNodeInputs.js +140 -0
  146. package/dist/src/runtime/runTaskAugments.d.ts +17 -0
  147. package/dist/src/runtime/runTaskAugments.js +37 -0
  148. package/dist/src/runtime/runTaskResponse.d.ts +4 -0
  149. package/dist/src/runtime/runTaskResponse.js +13 -0
  150. package/dist/src/runtime/runtimeObjects.d.ts +85 -0
  151. package/dist/src/runtime/runtimeObjects.js +50 -0
  152. package/dist/src/runtime/smartInputPaths.d.ts +13 -0
  153. package/dist/src/runtime/smartInputPaths.js +38 -0
  154. package/dist/src/runtime/stepRetry.d.ts +21 -0
  155. package/dist/src/runtime/stepRetry.js +238 -0
  156. package/dist/src/runtime/synthesizedContextPipeline.d.ts +12 -0
  157. package/dist/src/runtime/synthesizedContextPipeline.js +28 -0
  158. package/dist/src/runtime/taskNodeConditionsEvaluation.d.ts +27 -0
  159. package/dist/src/runtime/taskNodeConditionsEvaluation.js +140 -0
  160. package/dist/src/runtime/taskNodeMainReadiness.d.ts +45 -0
  161. package/dist/src/runtime/taskNodeMainReadiness.js +164 -0
  162. package/dist/src/runtime/taskNodeRunTaskPreflight.d.ts +89 -0
  163. package/dist/src/runtime/taskNodeRunTaskPreflight.js +204 -0
  164. package/dist/src/runtime/validateCanonicalGraphDocument.d.ts +25 -0
  165. package/dist/src/runtime/validateCanonicalGraphDocument.js +567 -0
  166. package/dist/src/runtime/variables.d.ts +2 -0
  167. package/dist/src/runtime/variables.js +1 -0
  168. package/dist/src/runtime/withTimeout.d.ts +5 -0
  169. package/dist/src/runtime/withTimeout.js +20 -0
  170. package/dist/src/types/aiTaskProfile.d.ts +41 -0
  171. package/dist/src/types/aiTaskProfile.js +6 -0
  172. package/dist/src/types/aiTasksDerivedTypes.d.ts +5 -0
  173. package/dist/src/types/aiTasksDerivedTypes.js +1 -0
  174. package/dist/src/types/events.d.ts +23 -0
  175. package/dist/src/types/events.js +1 -0
  176. package/dist/src/types/job.d.ts +9 -0
  177. package/dist/src/types/job.js +1 -0
  178. package/dist/src/types/narrix.d.ts +60 -0
  179. package/dist/src/types/narrix.js +1 -0
  180. package/dist/src/types/options.d.ts +122 -0
  181. package/dist/src/types/options.js +1 -0
  182. package/dist/src/types/refs.d.ts +747 -0
  183. package/dist/src/types/refs.js +12 -0
  184. package/dist/src/types/results.d.ts +103 -0
  185. package/dist/src/types/results.js +1 -0
  186. package/dist/src/types/runLog.d.ts +72 -0
  187. package/dist/src/types/runLog.js +18 -0
  188. package/dist/src/types/taskNodeConfiguration.d.ts +95 -0
  189. package/dist/src/types/taskNodeConfiguration.js +3 -0
  190. package/dist/src/util/packageVersion.d.ts +2 -0
  191. package/dist/src/util/packageVersion.js +12 -0
  192. package/dist/testkit/RealTasksClient.d.ts +16 -0
  193. package/dist/testkit/RealTasksClient.js +143 -0
  194. package/dist/testkit/depGraphEngineFactory.d.ts +6 -0
  195. package/dist/testkit/depGraphEngineFactory.js +54 -0
  196. package/dist/testkit/exellixRuntimeObjects.d.ts +7 -0
  197. package/dist/testkit/exellixRuntimeObjects.js +25 -0
  198. package/dist/testkit/inMemoryGraphLoader.d.ts +6 -0
  199. package/dist/testkit/inMemoryGraphLoader.js +12 -0
  200. package/dist/testkit/index.d.ts +4 -0
  201. package/dist/testkit/index.js +4 -0
  202. package/package.json +70 -0
package/.env.example ADDED
@@ -0,0 +1,3 @@
1
+ # ============================================
2
+ # nx-mongo Configuration
3
+ # ============================================
package/CHANGELOG.md ADDED
@@ -0,0 +1,208 @@
1
+ # Changelog
2
+
3
+ ## 5.16.0
4
+
5
+ ### Breaking
6
+
7
+ - **Flat MAIN `input` only:** Removed automatic `execution.input.raw` / `jobMemory.raw` seeding from `job.raw` / `job.input.raw` in `seedGraphRunExecutionState`. Hosts must pass entity fields directly on `runtime.input` (no nested `input.raw` wrapper). In-repo graphs and docs migrated to `input` / `input.*` paths; use `inputsConfig` with `path: "input"` when aliasing the full MAIN bucket onto `runTask.input.record`.
8
+
9
+ ## 5.15.0
10
+
11
+ ### Added
12
+
13
+ - **Task-node runTask preflight:** `buildTaskNodeRunTaskRequest`, `validateTaskNodeRunTaskConfig`, `validateTaskNodeRunTaskInvoke`, and `analyzeTaskNodeRunTaskRequest` build the same outbound `RunTaskRequest` as `executeNode` and delegate to `@exellix/ai-tasks` validation/analysis (no LLM invoke).
14
+ - **Re-exports:** `validateRunTaskConfig`, `validateRunTaskInvoke`, `analyzeRunTaskRequest`, `analyzeSkillRequest`, `formatSkillRequestAnalysisMarkdown`, Rendrix template helpers, and related types from the package root so hosts can depend on graph-engine only.
15
+
16
+ ## 5.13.0
17
+
18
+ ### Breaking
19
+
20
+ - **Two variable buckets only:** Graph and job scopes share `execution.jobVariables` (paths `jobVariables.*`; legacy alias `variables.*`). Removed separate `execution.variables`. Task/node scope remains `execution.taskVariables` (`taskVariables.*`). Outbound `runTask.variables` carries the job bucket (ai-tasks ≥ 7.6.2 passthrough).
21
+
22
+ ## 5.12.0
23
+
24
+ ### Breaking
25
+
26
+ - **No merged variables bag:** Removed `mergeVariables` and `buildVariablesForTaskNode`. Graph/job/task scopes are mirrored separately on `executionMemory` as `variables`, `jobVariables`, and `taskVariables`. Memory paths `variables.*`, `jobVariables.*`, and `taskVariables.*` resolve against distinct buckets (no cross-bucket fallback). Outbound `runTask.variables` carries the graph bucket only; job/task scopes are on `executionMemory`.
27
+
28
+ ### Added
29
+
30
+ - **Variable bucket helpers:** `readExecutionVariableBuckets`, `seedGraphVariableBucketsOnExecution`, `mirrorTaskVariablesOnExecution`, `buildMemoryResolutionRootFromExecution`, `buildPredicateEvalContextForNode`.
31
+ - **`GraphRuntimeObject.jobVariables` / `taskVariables`** top-level runtime fields mirrored to execution.
32
+
33
+ ## 5.11.0
34
+
35
+ ### Added
36
+
37
+ - **`inputsConfig` on task nodes:** Canonical name for runtime payload bindings (replaces confusing `node.inputs`). Dual read: `inputsConfig` → `inputBindings` → `inputs`. Export `readTaskNodeInputsConfig`.
38
+ - **`nodeInputsConfig` response selector:** Replaces `nodeInputs`; reads `inputsConfig` + `taskVariable` on the referenced node. Legacy `nodeInputs` selector type still accepted.
39
+
40
+ ### Changed
41
+
42
+ - Docs and inspection label bindings as `inputsConfig.*`. Finalizer nodes still use `inputs`.
43
+
44
+ ## 5.10.0
45
+
46
+ ### Added
47
+
48
+ - **`taskVariable` on task nodes:** Dynamic task configuration (prompts, literals, `{ "$path": "variables.*" }`) is resolved separately from runtime payload bindings in `inputs` / `inputBindings`. `resolveTaskNodeInputsForRunTask` merges `taskVariable` + bindings into MAIN `input` (legacy literals and `variables.*` refs still under `inputs` are supported until graphs are composer-canonicalized).
49
+ - **Exports:** `resolveTaskNodeTaskVariableForRunTask`, `resolveTaskNodeInputBindingsForRunTask`.
50
+
51
+ ### Changed
52
+
53
+ - **Inspection:** `getNodeScopingQuestion` reads `taskVariable.question` and classifies input bindings vs variable refs separately.
54
+
55
+ ## 5.9.0
56
+
57
+ ### Breaking
58
+
59
+ - **No legacy input shims:** Removed `coalesceRunTaskInputBucket`, `canonicalizeGraphEngineMemoryPath`, `mapInputsMemoryPathToInputRoot`, `mapSmartInputPathsInputsToInput`, `canonicalizeSmartInputConfig`, `normalizeNodeAiTasksMemoryPaths`, `materializeStructuredRunTaskInput`, `parseLooseJsonObject`, and `isDeprecatedGraphEngineMemoryPath`. `input.*` and `inputs.*` resolve as **distinct roots** (no cross-fallback). MAIN `input` must be a plain object (no stringified JSON blob promotion). `extractNonSystemFields` variable leak removed — use `node.variables` only.
60
+
61
+ ### Changed
62
+
63
+ - **MAIN `input` vs caller `inputs`:** `buildRunTaskMainInput` builds outbound `RunTaskRequest.input` from runtime MAIN plus node bindings only; caller bag on `inputs` separately.
64
+
65
+ ## 5.8.0
66
+
67
+ ### Changed
68
+
69
+ - **MAIN `input` vs caller `inputs`:** `buildRunTaskMainInput` builds outbound `RunTaskRequest.input` from runtime MAIN (`executionMemory.input`) plus materialized node bindings only. The caller bag (`runtime.inputs`) is forwarded separately on `inputs` and is no longer merged into `input`.
70
+
71
+ ### Added
72
+
73
+ - **Smart-input / MAIN readiness (G1, G3, G4):** `materializeStructuredRunTaskInput` promotes fields from legacy string `input` blobs; `executionMemory.input` is mirrored before `runTask`. `input.*` paths alias to `inputs.*` via `resolveGraphEngineMemoryPathValue`. Configurable `mainReadinessPolicy` (`fail` | `warn` | `off`) with check ids `execution_input_empty` and `synthesis_context_empty` before MAIN `runTask`.
74
+ - **Graph response mapping (G7):** `finalOutput` mapping snapshots full accumulated `executionMemory` / `outputsMemory` after parallel batches complete.
75
+ - **Canonical model (G9):** `resolveCanonicalModelUsed` and `buildAiTasksObservabilityRecord` emit authoritative `modelUsed` from gateway metadata.
76
+
77
+ ## 5.7.0
78
+
79
+ ### Breaking
80
+
81
+ - **Task-node `conditions`:** Removed `conditions.aiFilter` and structured `conditions.dataFilters` v1 on task nodes. Use `jsonConditions`, `jsConditionFunction`, and `aiCondition` (runx). Opaque `conditions.dataFilters: string[]` remains declarative only.
82
+ - **`modelConfig`:** Flat `{ xynthesisModel, skillModel }` at graph root and `taskConfiguration` replaced by `{ cases: ModelConfigCase[] }` with exactly one no-`when` default case. Migrate: `{ cases: [{ modelConfig: { xynthesisModel, skillModel } }] }`.
83
+ - **`scope.contextualKnowledge.filter.where`:** Removed `cidrContains`. Use `eq` / `eqAny` on host-prepared fields only.
84
+
85
+ ### Added
86
+
87
+ - **runx integration:** `evaluateTaskNodeConditions`, `evaluateConditionWhen`, conditional `modelConfig` resolution via `resolveModelConfigForNode`.
88
+ - **Runtime options:** `runx`, `runxCreateOptions` on `createExellixGraphRuntime`.
89
+ - **Docs:** [`.docs/task-node-conditions-evaluation.md`](.docs/task-node-conditions-evaluation.md), [`.docs/platform-generic-vs-implementation.md`](.docs/platform-generic-vs-implementation.md).
90
+
91
+ ## 5.5.0
92
+
93
+ ### Changed
94
+
95
+ - **Dual memory roots `input` and `inputs`:** Both are allowlisted for `smartInput.paths` and `inputSynthesis.sources`; paths are no longer rewritten to `input.*` at validation or runtime. Optional migration via `mapInputsMemoryPathToInputRoot` / `mapSmartInputPathsInputsToInput`.
96
+ - **`runTask` wire:** Forwards `inputs` (caller bag) alongside coalesced `input` when present. See [CR-input-and-inputs-dual-root.md](.docs/CR-input-and-inputs-dual-root.md) for downstream `@exellix/ai-tasks` and graphs-studio work.
97
+
98
+ ## 5.4.0
99
+
100
+ ### Added
101
+
102
+ - **`canonicalizeGraphEngineMemoryPath`** — maps legacy `inputs` / `inputs.*` smart-input and input-synthesis paths to canonical `input` / `input.*` without adding `inputs` as a public memory root.
103
+ - **`coalesceRunTaskInputBucket`**, **`resolveGraphEngineMemoryPathValue`**, **`buildGraphEngineMemoryResolutionRootFromWorkingMemory`** — resolve smart-input paths against working-memory shapes (caller `inputs` bag, stringified `input` JSON, bare `input`, `xynthesized.job`); runtime `runTask` uses coalesced `input` for ai-tasks.
104
+ - **`isAllowedGraphEngineMemoryPath`**, **`graphEngineMemoryPathValidationMessage`**, **`canonicalizeSmartInputConfig`**, **`normalizeNodeAiTasksMemoryPaths`**, **`collectAiTasksNodeExtensionIssues`**, and **`assertAiTasksNodeExtensionsValid`** exported from the package root for hosts (e.g. graphs-studio).
105
+
106
+ ### Fixed
107
+
108
+ - **`validateCatalogPlanning`** now runs ai-tasks extension checks (`smartInput`, `inputSynthesis`) on all non-finalizer task nodes, not only nodes with `metadata`.
109
+ - Runtime **`runTask`** forwards canonicalized `smartInput.paths`; input-synthesis PRE `memoryPaths` are canonicalized when the pipeline is built.
110
+
111
+ ## 5.0.3
112
+
113
+ ### Added
114
+
115
+ - **`executeGraph` inline graph contract.** Optional **`ExecuteGraphInput.graph`** (canonical full document) skips **`graphLoader`** when validation succeeds. Callers may omit **`graphId`** / **`job.graphId`** when the document includes a non-empty **`id`**. If inline validation fails and **`graphId ?? job.graphId`** is set, the engine loads by that id instead.
116
+ - **`ExecuteGraphResult.graphAudit`.** `{ source: 'inline' | 'loader', contentSha256 }` fingerprints the resolved graph (stable sorted JSON + SHA-256) for matrix / host persistence alongside catalog **`graphVersion`**.
117
+ - **`computeGraphDocumentContentSha256`** and **`stableStringifyGraphDocument`** exported from the package root.
118
+
119
+ ## 5.0.0 — Canonical no-legacy
120
+
121
+ > **Hard-break release.** Every legacy / dual-path surface is removed in one cut.
122
+ > See [`BREAKING-CHANGES.md`](BREAKING-CHANGES.md) for the full migration matrix
123
+ > (every deleted alias, every renamed key, before / after JSON snippets).
124
+
125
+ ### Breaking
126
+
127
+ - **Single client surface.** `createExellixGraphRuntime` + `ExecuteGraphInput` is the only public executor. The functional `executeGraph` / `executeNode` and the `ExellixGraphClient` class are deleted; their re-exports and the `HYBRID_MODE_REQUIRES_INJECTED_RUNTIME` error code are gone.
128
+ - **Canonical graph JSON.** [`assertCanonicalGraphDocument`](src/runtime/validateCanonicalGraphDocument.ts) now rejects every legacy alias at load time:
129
+ - `graph.nodes` must be a `GraphNode[]` (record-keyed `Record<string, GraphNode>` is rejected with `NON_CANONICAL_GRAPH_DOCUMENT`).
130
+ - Task nodes must use `node.skillKey` / `node.variables` only — `node.data.skillKey`, `node.data.variables`, `node.metadata.skillKey`, `node.metadata.variables` are rejected with `NON_CANONICAL_TASK_NODE`.
131
+ - `metadata.synthesizedContext`, `metadata.executionStrategyKey`, `metadata.outputConstraints`, and the web-scope keys on `metadata.narrix` (`enableWebScope`, `forceWebScope`, `webScopeQuestions`, `webScoping`, `webScopeTemplates`, `webScopeQuestionTemplate`, `webScopeObjects`, `webScopeEntityIdPath`, `webScopeEntityTypePath`, `enrichWebScopeQuestionFromExecutionRaw`) are rejected. Web scoping authoring lives only on `metadata.aiTaskProfile.webScoping`; structured output validation lives only on `metadata.aiTasksOutputValidation`.
132
+ - **`RunTaskRequest` builder.** `metadata.executionStrategyKey` is no longer typed or forwarded; only `metadata.executionStrategies` is honored. `taskKind ∈ {decision, utility, content}`.
133
+ - **Run-log metadata keys.** `EXELLIX_RUN_LOG_METADATA_KEY` (`exellixRunLog`) and `EXELLIX_LOGXER_CORRELATION_METADATA_KEY` (`logxerCorrelationId`) are removed from the public surface. Only `runLog` (`AI_TASKS_RUN_LOG_METADATA_KEY`) and `logxerRunId` (`AI_TASKS_LOGXER_RUN_ID_METADATA_KEY`) are read by `extractTaskRunLogFromMetadata` / `extractLogxerCorrelationFromMetadata`.
134
+ - **Narrix authoring split.** `NarrixPreProcessorConfig` (graph JSON) no longer carries web-scope fields; the outbound wire payload (`RunTaskRequest.narrix`, type `ResolvedNarrixWirePayload`) is composed by [`applyAiTaskProfileWebScopingToNarrix`](src/runtime/applyAiTaskProfileWebScopingToNarrix.ts) from `metadata.aiTaskProfile.webScoping`. The `WOROX_LOCAL_WEB_SCOPE_*` and `WOROX_ENRICH_WEB_SCOPE_QUESTION_FROM_RAW` env vars no longer affect graph-engine.
135
+
136
+ ### Added
137
+
138
+ - **Runtime parity ports.** Local-skill interception (`isLocalSkillKey` + `runScopedDataReader` / `runDeterministicRule` / `runScopedAnswerWriter` / `runScopedAnswerAssembler`), `evaluateGraphPredicate` conditional-edge filtering, `eventEmitter` lifecycle hooks, and `debugMode` per-node trace are now native to `ExellixGraphRuntime`. Local skills short-circuit `tasksClient.runTask`.
139
+ - **`ExecuteGraphResult.debug`.** Populated only when `ExecuteGraphInput.debugMode === true`; surfaces `nodes: NodeTraceEntry[]` (sorted by `startedAt`).
140
+ - **Compile-time `RunTaskRequest` parity test.** [`tests/passthrough-parity.test.ts`](tests/passthrough-parity.test.ts) classifies every `keyof RunTaskRequest` as REQUIRED / BUILT / STRATEGY / PASSTHROUGH / IGNORED via an exhaustive `Record<keyof RunTaskRequest, true>`. Adding a field upstream without classifying it breaks the build.
141
+ - **`npm run check:no-legacy`.** Greps `src/`, `testkit/`, and `graphs/` for removed identifiers (`executeGraph`, `executeNode`, `ExellixGraphClient`, `EXELLIX_RUN_LOG_METADATA_KEY`, `EXELLIX_LOGXER_CORRELATION_METADATA_KEY`, `executionStrategyKey`, `synthesizedContext`, `outputConstraints`, `enableWebScope`) and fails on hits.
142
+
143
+ ### Removed
144
+
145
+ - `src/client/ExellixGraphClient.ts`, `src/runtime/executeGraph.ts`, `src/runtime/executeNode.ts`, `src/loaders/GraphLoader.ts` (the wrapper class — `FileGraphLoader` and the runtime's `GraphLoader` interface stay).
146
+ - Legacy types from [`src/types/options.ts`](src/types/options.ts) (`ExecuteGraphOptions`, `ExecuteNodeOptions`, `ExellixGraphClientConfig`, `GraphLoader`, `GraphenixEngine`, `AITasksClient`) and [`src/types/results.ts`](src/types/results.ts) (`ExecuteGraphResponse`, `ExecuteGraphFinalizedResponse`, `ExecuteGraphDebugResponse`, `GraphExecutionResult`).
147
+ - `getGraphVariables`, `getNodeVariables`, `getGraphMemory`, `getNodeMemory` from `src/runtime/variables.ts` and `src/runtime/memory.ts`.
148
+ - `HYBRID_MODE_REQUIRES_INJECTED_RUNTIME` from `exellixGraphErrorCodes.ts`.
149
+
150
+ ### Migration
151
+
152
+ See [`BREAKING-CHANGES.md`](BREAKING-CHANGES.md) for before/after JSON snippets and code substitutions.
153
+
154
+ ## 4.7.1
155
+
156
+ ### Fixed
157
+
158
+ - **`executeNode` vs `ExellixGraphRuntime` parity:** Shared [`buildTaskNodeJobContext`](src/runtime/buildTaskNodeJobContext.ts) (jobContextMapping + `scope.contextualKnowledge`) and [`resolveNarrixForTaskNode`](src/runtime/resolveNarrixForTaskNode.ts) (graph `variables.narrix` defaults + `aiTaskProfile` web merge). Injected runtime previously omitted contextual scope and graph-level Narrix defaults.
159
+ - **`ExellixGraphRuntime` variables:** Merges `graph.variables` and `mergeGraphDocumentModel` → `variables.__graphModel` into the template `variables` bucket before `runTask`, matching functional `getNodeVariables` / `mergeVariables` precedence.
160
+ - **MAIN `runTask`:** `node.data.upstreamNodeIds` is now forwarded into canonical `input` on the functional path (already present on `ExellixGraphRuntime`).
161
+
162
+ ### Documentation
163
+
164
+ - **[`.docs/exellix-graph-engine-format.md`](.docs/exellix-graph-engine-format.md):** Align **Narrix / web scoping** with runtime (`executeNode` forwards **`narrix`** only; **`@exellix/ai-tasks`** owns internal web scoper). Replace stale "local web scoping" narrative; cite **`documenations/web-scoping-in-ai-tasks.md`**. Document **`@exellix/ai-tasks`** semver from **`package.json`** (^7.3.8) and **run-log** metadata keys (`runLog` / `exellixRunLog`, `logxerRunId` / `logxerCorrelationId`); note **`RunLogEntry`** has no **`schemaVersion`** yet.
165
+ - **[`README.md`](README.md):** Same compatibility wording for ai-tasks and optional CI note.
166
+
167
+ ### Added
168
+
169
+ - **Metadata passthrough:** [`extractRunTaskMetadataPassthrough`](src/runtime/buildAiTasksRunTaskRequest.ts) whitelists optional `@exellix/ai-tasks` **7.2.x** request fields from task-node `metadata` (`narrixScope`, `aiScoping`, `aiScopingOptions`, `timeoutMs`, template tokens/options, `aiEngineId`, `sessionId`, `agentType`, `gatewayDiagnostics`, `context`, `knowledge`), merged inside [`buildAiTasksRunTaskRequest`](src/runtime/buildAiTasksRunTaskRequest.ts).
170
+ - **Exports:** `extractRunTaskMetadataPassthrough`, `RunTaskMetadataPassthrough`, `buildTaskNodeJobContext`, `resolveNarrixForTaskNode` from the package root.
171
+
172
+ ## 4.6.0
173
+
174
+ ### Changed
175
+
176
+ - **Naming / docs:** Internal module `xynthesisStrategyPhases.ts` → **`aiTasksStrategyPhases.ts`**; **`runEngineAiTasksStrategyPhase`** replaces `runEngineXynthesisStrategyPhase`. Documentation states explicitly that PRE/POST strategy utilities call **`@exellix/ai-tasks` `runTask` only** — graph-engine does **not** import **`@exellix/xynthesis`**.
177
+ - **`@exellix/ai-tasks`:** Dependency **`^7.1.2`**. **`src/types/aiTasksDerivedTypes.ts`** re-exports stable request subtree types from the ai-tasks package root (`XynthesizedMemory`, `SmartInputConfig`, `ExecutionStrategyInvocation`, …).
178
+
179
+ ## 4.4.0
180
+
181
+ ### Added
182
+
183
+ - **Graph format / ai-tasks v7:** Task node `metadata` may include **`narrixMode`**, **`inputStrategyKey`**, and **`narrixInput`** — forwarded on MAIN `runTask` via **`extractRunTaskStrategyOverrides`** (classic `executeNode` + `ExellixGraphRuntime`). **`metadata.executionStrategies`** maps to **`RunTaskRequest.executionStrategies`** (engine sends **`[]`** when omitted). **`metadata.executionStrategyKey`** is **authoring-only** and is **not** forwarded (use **`executionStrategies`** per ai-tasks **7.1.x**). Root **`executionType`** is not forwarded.
184
+ - **Docs:** [`.docs/exellix-graph-engine-format.md`](.docs/exellix-graph-engine-format.md) — “`metadata` — `@exellix/ai-tasks` runtime strategy & Narrix wiring”.
185
+
186
+ ## 4.0.0 (historical — pre-4.4.0 cutover to ai-tasks v6)
187
+
188
+ > Note: this entry was previously labeled `5.0.0` in the changelog but
189
+ > chronologically predates `4.4.0` / `4.6.0` / `4.7.1`. Renamed to `4.0.0` for
190
+ > the canonical no-legacy 5.0 release; the real 5.0.0 entry is at the top of
191
+ > this file.
192
+
193
+ ### Breaking
194
+
195
+ - **`@exellix/ai-tasks` ≥ 6.0.1:** Every MAIN `runTask` now carries **`jobTypeId`**, **`taskTypeId`**, canonical **`input`**, and graph telemetry **`nodeId`** / **`coreSkillId`**. Graph-engine **no longer** spreads duplicate root-level task fields (`inputs`, root `question`, etc.). Stub clients that read **`req.skillId`** should use **`req.nodeId`** or **`req.coreSkillId`** (see `src/tests/test-finalizers-runtime.ts`).
196
+ - **Public types:** `RunTaskRequest` / `RunTaskResponse` align with `@exellix/ai-tasks`; adapters may still add **`success`** / **`ok`** / **`output`** (e.g. `RealTasksClient`).
197
+
198
+ ### Added
199
+
200
+ - **`buildAiTasksRunTaskRequest`** (`src/runtime/buildAiTasksRunTaskRequest.ts`): single canonical builder for MAIN node requests (classic `executeNode` + injected `ExellixGraphRuntime`).
201
+ - **Engine PRE/POST strategy utilities:** `metadata.aiTaskProfile.preStrategyKey` / `postStrategyKey` → extra `@exellix/ai-tasks` **`runTask`** calls (no direct Xynthesis SDK in graph-engine); merge **`execution.xynthesis.pre`** / **`execution.xynthesis.post`**.
202
+ - **`copyExecutionContextFields`** exported from `memory.ts`; runtime success path copies **`webContext`** / **`synthesizedContext`** like classic `executeNode`.
203
+ - **`Job.jobTypeId`** optional field for explicit `runTask.jobTypeId`.
204
+
205
+ ### Changed
206
+
207
+ - **`RealTasksClient`:** Forwards requests without pre-merging `variables` via `mergeSkillTemplateVariables` (ai-tasks owns merge order per `RUNTASK_REQUEST.md`).
208
+ - **Finalizer synthesize `runTask`:** Supplies `jobTypeId`, `taskTypeId`, `coreSkillId`, `nodeId`, and non-empty `input`.