@exellix/graph-engine 8.2.0 → 8.4.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.
- package/.env.example +16 -3
- package/CHANGELOG.md +28 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/runtime/validateCanonicalGraphDocument.js +20 -1
- package/package.json +15 -15
package/.env.example
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
#
|
|
1
|
+
# Graph-engine host environment (copy to .env and fill in secrets)
|
|
2
|
+
|
|
3
|
+
# Mongo — job runs (@exellix/exellix-db) and Memorix entity/event stores
|
|
4
|
+
MONGO_URI=mongodb://localhost:27017
|
|
5
|
+
|
|
6
|
+
# Memorix databases (bridged to Xronox via applyMemorixEnvBridgeToProcess)
|
|
7
|
+
MEMORIX_ENTITIES_DB=memorix-entities
|
|
8
|
+
MEMORIX_EVENTS_DB=memorix-events
|
|
9
|
+
|
|
10
|
+
# Catalox — descriptor resolution for Memorix read/write local skills
|
|
11
|
+
CATALOX_APP_ID=your-app-id
|
|
12
|
+
CATALOX_STORE_ID=your-store-id
|
|
13
|
+
|
|
14
|
+
# LLM keys — required when graphs include ai-tasks nodes
|
|
15
|
+
# OPENROUTER_API_KEY=
|
|
16
|
+
# GEMINI_API_KEY=
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 8.4.0 — Graphenix 2.5.0 coordinated release
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- **`@x12i/graphenix-*` ^2.5.0** — CRS-FRS-003 `jobMemory.context` on graph model; authoring validation + plan-compiler preservation.
|
|
8
|
+
- **`check:no-legacy`** — floors graphenix-core/plan-compiler/plan-format ≥2.5.0.
|
|
9
|
+
|
|
10
|
+
## 8.3.0 — Graphenix 2.4.0 PRE synthesis input contract alignment
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`@x12i/graphenix-*` ^2.4.0** — PRE synthesis reads decoupled from `inputsConfig` / `smartInput`; empty `memoryPaths` / `reads` valid (runtime default trio).
|
|
15
|
+
- **`@exellix/ai-tasks` ^10.0.4**, **`@exellix/ai-skills` ^6.12.0** — PRE path resolver + default `jobVariables`, `taskVariables`, `input` reads.
|
|
16
|
+
- **`check:no-legacy`** — floors ai-tasks ≥10.0.4, ai-skills ≥6.12.0, graphenix-core/plan-compiler/plan-format ≥2.4.0; rejects `executionMemory.input` in fixture `smartInput.paths`.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **`assertCanonicalTaskNode`** rejects `executionMemory.input` in `smartInput.paths` and `inputSynthesis.sources`.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **`graph-qcrbz6t-pre-synthesis` fixture** — removed legacy `smartInput: executionMemory.input` on synthesis task nodes (matches studio Part 2 target export).
|
|
25
|
+
- **Integration tests** — expect PRE synthesis unit `memoryPaths: []`, `reads: []`; no `smartInput` on wire when absent.
|
|
26
|
+
|
|
27
|
+
### Downstream
|
|
28
|
+
|
|
29
|
+
- Studio handoff split: `temp/downstream/graphs-studio/CRS-FRS-005-PART-1` (UI housekeeping) and `PART-2` (PRE emission).
|
|
30
|
+
|
|
3
31
|
## 8.1.12 — Graphenix 2.1.0 path-only synthesis release
|
|
4
32
|
|
|
5
33
|
### Changed
|
package/dist/src/index.d.ts
CHANGED
|
@@ -119,4 +119,5 @@ export type { CreatePlaygroundReporterOptions, PlaygroundDebugArtifact, Playgrou
|
|
|
119
119
|
export { getNodeScopingQuestion, getNodeMemoryShape, getNodeNarrixDiscovery, fetchNodeScopingData, inspectNode, resolveNodeSkillKey, getGraphNodes, getGraphCatalogs, inspectGraph, collectPredicatePaths, executionMemoryPathTail, executionMemoryTailsMatch, getNodeExecutionMemoryWriteTails, getNodeControlDependencies, getNodeSideEffects, inspectFinalizer, inspectNodeContract, inspectGraphContracts, EXELLIX_VIRTUAL_GRAPH_ENTRY_NODE_ID, EXELLIX_VIRTUAL_GRAPH_RESPONSE_NODE_ID, EXELLIX_VIRTUAL_BOUNDARY_NODE_METADATA_KEY, EXELLIX_VIRTUAL_BOUNDARY_EDGE_FLAG_KEY, getVirtualGraphEntryLayer, getVirtualGraphResponseLayer, materializeVirtualBoundaryDiagram, stripMaterializedVirtualBoundaryDiagram, validateCatalogPlanning, isCatalogBinding, isCatalogRequestEntry, inspectGraphModelSelection, } from './inspection/index.js';
|
|
120
120
|
export type { GraphModelSelectionInspection, NodeModelSelection, ModelSelectionSource, NodeScopingQuestion, NodeScopeSource, NodeScopeTarget, NodeScopingData, NodeMemoryShape, MemoryPath, NodeNarrixDiscovery, NodeInspection, GraphInspection, NodeIOEdge, GraphCatalogs, CatalogBindingSummary, CatalogPlanningValidationIssue, GraphVirtualIO, GraphVirtualIONode, GraphVirtualIOEdge, GraphVirtualIONodeRole, VirtualGraphEntryLayer, VirtualGraphResponseLayer, MaterializeVirtualBoundaryDiagramOptions, MaterializedVirtualBoundaryDiagram, MaterializedVirtualBoundaryDiagramMeta, InspectNodeContractOptions, LocalSkillKey, NodeExecutionType, FactProvenance, ProvenancedSection, NodeInputBindingEntry, ScopedDataDependency, NodeInputContract, ExecutionMemoryWriteSpec, NodeOutputContract, NodeSideEffects, ControlBranchEntry, NodeControlContract, NodeValidationContract, FinalizerContractInspection, NodeContractInspection, GraphContractsInspection, } from './inspection/index.js';
|
|
121
121
|
export type { NarrixPreProcessorConfig, WebScopeQuestion, LocalTaskHandler, LocalTaskContext } from './types/narrix.js';
|
|
122
|
+
export { shutdownMemorixRuntime } from './runtime/localSkills/memorixRuntime.js';
|
|
122
123
|
export type { ScopedDataReaderConfig, ScopedDataReaderOutput, ScopedDataReaderPackOutput, ScopedAnswerAssemblerConfig, ScopedAnswerAssemblerOutput, ScopedAnswerWriterConfig, ScopedAnswerWriterOutput, } from './runtime/localSkills/index.js';
|
package/dist/src/index.js
CHANGED
|
@@ -87,4 +87,5 @@ export { composeEventEmitters } from './runtime/events.js';
|
|
|
87
87
|
export { createPlaygroundReporter } from './playground/index.js';
|
|
88
88
|
// Graph Inspection API
|
|
89
89
|
export { getNodeScopingQuestion, getNodeMemoryShape, getNodeNarrixDiscovery, fetchNodeScopingData, inspectNode, resolveNodeSkillKey, getGraphNodes, getGraphCatalogs, inspectGraph, collectPredicatePaths, executionMemoryPathTail, executionMemoryTailsMatch, getNodeExecutionMemoryWriteTails, getNodeControlDependencies, getNodeSideEffects, inspectFinalizer, inspectNodeContract, inspectGraphContracts, EXELLIX_VIRTUAL_GRAPH_ENTRY_NODE_ID, EXELLIX_VIRTUAL_GRAPH_RESPONSE_NODE_ID, EXELLIX_VIRTUAL_BOUNDARY_NODE_METADATA_KEY, EXELLIX_VIRTUAL_BOUNDARY_EDGE_FLAG_KEY, getVirtualGraphEntryLayer, getVirtualGraphResponseLayer, materializeVirtualBoundaryDiagram, stripMaterializedVirtualBoundaryDiagram, validateCatalogPlanning, isCatalogBinding, isCatalogRequestEntry, inspectGraphModelSelection, } from './inspection/index.js';
|
|
90
|
+
export { shutdownMemorixRuntime } from './runtime/localSkills/memorixRuntime.js';
|
|
90
91
|
// Web context rendering — consume execution.webContext → markdown for prompts (Layer 04)
|
|
@@ -6,6 +6,7 @@ import { getStructuredDataFilterPathViolations } from './dataFiltersEvaluation.j
|
|
|
6
6
|
import { conditionWhenSignature, countDefaultModelConfigCases, isEmptyConditionWhen, isGraphAiModelConfig, isModelConfigSelection, isPartialGraphAiModelConfig, } from './modelConfigSelection.js';
|
|
7
7
|
import { assertGraphAiProfileNameString } from './graphAiModelConfig.js';
|
|
8
8
|
import { assertCanonicalGraphDocumentMetadata } from './graphModelStudioSeparation.js';
|
|
9
|
+
import { collectSmartInputPaths } from './smartInputPaths.js';
|
|
9
10
|
/** Top-level keys permitted on a canonical exellix-graph executable graph JSON document. */
|
|
10
11
|
export const CANONICAL_GRAPH_TOP_LEVEL_KEYS = [
|
|
11
12
|
'id',
|
|
@@ -544,7 +545,7 @@ export function assertCanonicalTaskNode(node, context, options) {
|
|
|
544
545
|
}
|
|
545
546
|
}
|
|
546
547
|
if (legacyPreInputPaths.length > 0) {
|
|
547
|
-
throw new ExellixGraphError(ExellixGraphErrorCode.NON_CANONICAL_TASK_NODE, `Task node "${String(node.id)}": ${legacyPreInputPaths.join(', ')} is not allowed —
|
|
548
|
+
throw new ExellixGraphError(ExellixGraphErrorCode.NON_CANONICAL_TASK_NODE, `Task node "${String(node.id)}": ${legacyPreInputPaths.join(', ')} is not allowed — use optional taskConfiguration.aiTaskProfile.inputSynthesis.sources for explicit PRE read scope; otherwise runtime applies the platform default trio (jobVariables, taskVariables, input). Template key is skill-catalog-only.`, { jobId: context?.jobId, graphId: context?.graphId, nodeId: String(node.id) });
|
|
548
549
|
}
|
|
549
550
|
}
|
|
550
551
|
const narrixTc = tc && isPlainObject(tc.narrix) ? tc.narrix : undefined;
|
|
@@ -593,6 +594,24 @@ export function assertCanonicalTaskNode(node, context, options) {
|
|
|
593
594
|
}
|
|
594
595
|
}
|
|
595
596
|
}
|
|
597
|
+
for (const path of collectSmartInputPaths(taskNode)) {
|
|
598
|
+
if (path === 'executionMemory.input' || path.startsWith('executionMemory.input.')) {
|
|
599
|
+
throw new ExellixGraphError(ExellixGraphErrorCode.NON_CANONICAL_TASK_NODE, `Task node "${String(node.id)}": smartInput.paths must not use executionMemory.input — use path "input" for invoke payload or omit smartInput on synthesis nodes (runtime PRE default reads apply).`, { jobId: context?.jobId, graphId: context?.graphId, nodeId: String(node.id) });
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
const synthesisSources = inputSynthesis?.sources;
|
|
603
|
+
if (Array.isArray(synthesisSources)) {
|
|
604
|
+
for (const entry of synthesisSources) {
|
|
605
|
+
const path = typeof entry === 'string'
|
|
606
|
+
? entry.trim()
|
|
607
|
+
: isPlainObject(entry) && typeof entry.path === 'string'
|
|
608
|
+
? entry.path.trim()
|
|
609
|
+
: '';
|
|
610
|
+
if (path === 'executionMemory.input' || path.startsWith('executionMemory.input.')) {
|
|
611
|
+
throw new ExellixGraphError(ExellixGraphErrorCode.NON_CANONICAL_TASK_NODE, `Task node "${String(node.id)}": inputSynthesis.sources must not use executionMemory.input — use path "input" for invoke payload.`, { jobId: context?.jobId, graphId: context?.graphId, nodeId: String(node.id) });
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
596
615
|
}
|
|
597
616
|
/**
|
|
598
617
|
* Throws {@link ExellixGraphError} when the value is not a canonical graph document
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/graph-engine",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Graph executor SDK",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -52,27 +52,27 @@
|
|
|
52
52
|
"access": "public"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@exellix/ai-skills": "^6.
|
|
56
|
-
"@exellix/ai-tasks": "^10.0.
|
|
55
|
+
"@exellix/ai-skills": "^6.12.0",
|
|
56
|
+
"@exellix/ai-tasks": "^10.0.4",
|
|
57
57
|
"@x12i/activix": "^8.6.3",
|
|
58
58
|
"@x12i/catalox": "^5.9.7",
|
|
59
59
|
"@x12i/env": "^4.0.1",
|
|
60
60
|
"@x12i/funcx": "^4.9.13",
|
|
61
61
|
"@x12i/graphenix": "^2.5.0",
|
|
62
|
-
"@x12i/graphenix-authoring-format": "^2.
|
|
63
|
-
"@x12i/graphenix-core": "^2.
|
|
64
|
-
"@x12i/graphenix-executable-contracts": "^2.
|
|
65
|
-
"@x12i/graphenix-executable-format": "^2.
|
|
66
|
-
"@x12i/graphenix-execute-envelope": "^2.
|
|
62
|
+
"@x12i/graphenix-authoring-format": "^2.5.0",
|
|
63
|
+
"@x12i/graphenix-core": "^2.5.0",
|
|
64
|
+
"@x12i/graphenix-executable-contracts": "^2.5.0",
|
|
65
|
+
"@x12i/graphenix-executable-format": "^2.5.0",
|
|
66
|
+
"@x12i/graphenix-execute-envelope": "^2.5.0",
|
|
67
67
|
"@x12i/graphenix-format": "^2.0.0",
|
|
68
|
-
"@x12i/graphenix-plan-compiler": "^2.
|
|
69
|
-
"@x12i/graphenix-plan-format": "^2.
|
|
70
|
-
"@x12i/graphenix-task-node-format": "^2.
|
|
71
|
-
"@x12i/graphenix-trace-format": "^2.
|
|
68
|
+
"@x12i/graphenix-plan-compiler": "^2.5.0",
|
|
69
|
+
"@x12i/graphenix-plan-format": "^2.5.0",
|
|
70
|
+
"@x12i/graphenix-task-node-format": "^2.5.0",
|
|
71
|
+
"@x12i/graphenix-trace-format": "^2.5.0",
|
|
72
72
|
"@x12i/logxer": "^4.6.0",
|
|
73
|
-
"@x12i/memorix-descriptors": "
|
|
74
|
-
"@x12i/memorix-retrieval": "
|
|
75
|
-
"@x12i/memorix-writer": "
|
|
73
|
+
"@x12i/memorix-descriptors": "1.7.0",
|
|
74
|
+
"@x12i/memorix-retrieval": "1.12.0",
|
|
75
|
+
"@x12i/memorix-writer": "1.1.0",
|
|
76
76
|
"@x12i/rendrix": "^4.3.0",
|
|
77
77
|
"@x12i/runx": "^1.3.2"
|
|
78
78
|
},
|