@exellix/graph-composer 2.0.0 → 2.0.6

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.
@@ -6,7 +6,7 @@ You are a graph architect for the **worox-graph** DAG execution format. You alig
6
6
  Given `existingGraph`, optional `analysisContext`, optional `catalogCandidates`, and optional `catalogMatchHints`, produce **actionable recommendations** for which catalog items each relevant node should use, and list **gaps** where no candidate fits (so the host can plan new catalog entries or adjust the graph).
7
7
 
8
8
  ### Inputs
9
- 1. **`existingGraph`**: Inspect `nodes` (especially `type: "task"`), `metadata.skillKey`, `metadata.scopingMapId`, `metadata.questionId`, `metadata.entityIdPath`, `metadata.narrix`, `metadata.graphReadability`, `metadata.catalogBinding`.
9
+ 1. **`existingGraph`**: Inspect `nodes` (especially `type: "task"`), `node.skillKey`, `taskConfiguration.scopingMapId`, `taskConfiguration.questionId`, `taskConfiguration.entityIdPath`, `taskConfiguration.narrix`, `metadata.graphReadability`, `metadata.catalogBinding`.
10
10
  2. **`catalogCandidates`**: Use merged skill lists (`intent`’s `aiSkills` / `utilitySkills` plus any extra rows in `catalogCandidates`). Use `scopingMaps` and `narrixTemplates` when provided.
11
11
  3. **`catalogMatchHints`**: If present, use `skills` / `scoping` / `narrix` `matches` and `unmatched` as starting points; **override** when the graph contradicts a hint.
12
12
  4. **`intent.focusNodeIds`**: When set, prioritize those nodes; still list others briefly or omit if not applicable.
@@ -24,7 +24,7 @@ Given `existingGraph`, optional `analysisContext`, optional `catalogCandidates`,
24
24
  **`scopingResolution`** — one object per node that reads/writes scoped xmemory data (e.g. `scoped-data-reader`, `scoped-answer-writer`), or `[]` if none:
25
25
  - Include fields that help operators: e.g. `nodeId`, `scopingMapId`, `questionId`, `entityIdPath`, `rationale` (all optional except prefer **`nodeId`** when scoped to a node)
26
26
 
27
- **`narrixResolution`** — one object per node with `metadata.narrix` or LLM-style steps that should use discovery, or `[]`:
27
+ **`narrixResolution`** — one object per node with `taskConfiguration.narrix` or LLM-style steps that should use discovery, or `[]`:
28
28
  - Include e.g. `nodeId`, `datasetId`, `layer`, `narrativeTypeIds` (string[]), `enableWebScope` (boolean), `rationale`
29
29
 
30
30
  **`gaps`** — unmet needs (empty candidate list, no good skill, missing scoping map, missing discovery definition, etc.):
@@ -11,7 +11,7 @@ A graph is a single JSON object. Top-level fields (canonical root keys only):
11
11
  - `variables` (object, optional): graph-level defaults → run as `jobVariables.*` at execution.
12
12
  - `response` (object, required for new graphs): executable final output contract (`missing`, `shape` with selectors such as `outputsMemoryPath`, `executionMemoryPath`, `literal`, `firstPresent`).
13
13
  - `metadata` (object, optional): authoring only (`name`, `description`, `graphEntry`, `graphExecution`, `catalogRequests`, `graphConcept`, …). **No execution wiring under `metadata`.**
14
- - `modelConfig`, `jobKnowledge` (optional): see format docs.
14
+ - `modelConfig`, `jobKnowledge` (optional): see format docs. **`modelConfig` cases use `@x12i/ai-profiles` profile names only** (`cheap`, `balanced`, `deep`, …) — three slots per case: `preActionModel`, `skillModel`, `postActionModel`. Never provider ids like `openrouter/...`. Resolution uses bundled `@x12i/ai-profiles`; `runtime.aliasConfig` is optional.
15
15
 
16
16
  ### Task node shape
17
17
 
@@ -64,7 +64,7 @@ A graph is a single JSON object. Top-level fields (canonical root keys only):
64
64
  | Dynamic task config | `taskVariable` | `question`, literals, `$path` to `jobVariables.*` / `taskVariables.*`. |
65
65
  | Node templates | `variables` | Node-only defaults → `taskVariables.*` at run time. |
66
66
  | Graph templates | top-level `variables` | Run-wide defaults → `jobVariables.*` (legacy path alias `variables.*`). |
67
- | Execution config | `taskConfiguration.*` | `aiTaskProfile`, `narrix`, `modelConfig`, `executionStrategies`, `aiTasksOutputValidation`, … |
67
+ | Execution config | `taskConfiguration.*` | `aiTaskProfile`, `narrix`, `modelConfig`, `executionStrategies`, `aiTasksOutputValidation`, local-skill keys (`rules`, `scopingMapId`, `firstMatchWins`, ), |
68
68
  | Planning / UX | `metadata.*` | `graphReadability`, `catalogBinding`, `name`, `description` — **not** `aiTaskProfile` or `narrix`. |
69
69
  | Result wiring | `executionMapping` | Writes into execution memory after the task succeeds. |
70
70
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exellix/graph-composer",
3
- "version": "2.0.0",
3
+ "version": "2.0.6",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -27,7 +27,7 @@
27
27
  ".env.example"
28
28
  ],
29
29
  "scripts": {
30
- "postinstall": "node -e \"const fs=require('fs'),p=require('path');const s=p.join('node_modules','nx-config2','bin','nx-config2.js'),d=p.join('node_modules','@x12i','env','bin','nx-config2.js');try{if(fs.existsSync(s)&&!fs.existsSync(d))fs.copyFileSync(s,d);}catch(_){}\"",
30
+ "postinstall": "node -e \"const fs=require('fs'),p=require('path'),cp=require('child_process');const s=p.join('node_modules','nx-config2','bin','nx-config2.js'),d=p.join('node_modules','@x12i','env','bin','nx-config2.js');try{if(fs.existsSync(s)&&!fs.existsSync(d))fs.copyFileSync(s,d);}catch(_){}const patch=p.join('node_modules','@exellix','graph-engine','scripts','patch-ai-tasks-xynthesis-export.mjs');if(fs.existsSync(patch))cp.execFileSync(process.execPath,[patch],{stdio:'inherit'});\"",
31
31
  "build": "tsc -p tsconfig.build.json",
32
32
  "prepublishOnly": "npm run build",
33
33
  "start": "x12i-env run --env-file .env -- node dist/cli.js",
@@ -50,7 +50,7 @@
50
50
  "openrouter",
51
51
  "funcx"
52
52
  ],
53
- "license": "MIT",
53
+ "license": "exellix-license",
54
54
  "engines": {
55
55
  "node": ">=20"
56
56
  },
@@ -63,7 +63,7 @@
63
63
  },
64
64
  "homepage": "https://github.com/woroces/graph-composer#readme",
65
65
  "peerDependencies": {
66
- "@exellix/graph-engine": "^6.0.0"
66
+ "@exellix/graph-engine": "^7.2.0"
67
67
  },
68
68
  "peerDependenciesMeta": {
69
69
  "@exellix/graph-engine": {
@@ -71,13 +71,14 @@
71
71
  }
72
72
  },
73
73
  "dependencies": {
74
+ "@x12i/ai-profiles": "^1.2.3",
74
75
  "@x12i/catalox": "^5.1.1",
75
76
  "@x12i/env": "^4.0.1",
76
- "@x12i/funcx": "^4.0.2",
77
+ "@x12i/funcx": "^4.2.0",
77
78
  "@x12i/logxer": "^4.3.5"
78
79
  },
79
80
  "devDependencies": {
80
- "@exellix/graph-engine": "^6.0.0",
81
+ "@exellix/graph-engine": "^7.2.0",
81
82
  "@types/node": "^22.10.2",
82
83
  "nx-config2": "^3.6.5",
83
84
  "tsx": "^4.19.2",