@exellix/graph-composer 2.2.1 → 2.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/catalogMatchAssist.d.ts +1 -2
- package/dist/catalogMatchAssist.d.ts.map +1 -1
- package/dist/catalogMatchAssist.js +3 -4
- package/dist/cataloxCatalogBridge.d.ts +1 -2
- package/dist/cataloxCatalogBridge.d.ts.map +1 -1
- package/dist/cataloxCatalogBridge.js +2 -2
- package/dist/exampleGeneration.d.ts +11 -0
- package/dist/exampleGeneration.d.ts.map +1 -1
- package/dist/exampleGeneration.js +54 -0
- package/dist/funcxModel.d.ts +8 -0
- package/dist/funcxModel.d.ts.map +1 -0
- package/dist/funcxModel.js +10 -0
- package/dist/graphComposerActions.d.ts.map +1 -1
- package/dist/graphComposerActions.js +65 -0
- package/dist/graphComposerOutputValidation.d.ts +1 -0
- package/dist/graphComposerOutputValidation.d.ts.map +1 -1
- package/dist/graphComposerOutputValidation.js +1 -0
- package/dist/graphEntryContract.d.ts +114 -0
- package/dist/graphEntryContract.d.ts.map +1 -0
- package/dist/graphEntryContract.js +206 -0
- package/dist/graphEntryOutputValidation.d.ts +9 -0
- package/dist/graphEntryOutputValidation.d.ts.map +1 -0
- package/dist/graphEntryOutputValidation.js +276 -0
- package/dist/graphEntryPostProcess.d.ts +11 -0
- package/dist/graphEntryPostProcess.d.ts.map +1 -0
- package/dist/graphEntryPostProcess.js +114 -0
- package/dist/graphModelLayers.d.ts +19 -0
- package/dist/graphModelLayers.d.ts.map +1 -1
- package/dist/graphModelLayers.js +109 -9
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/modelConfigPatchMerge.d.ts +6 -0
- package/dist/modelConfigPatchMerge.d.ts.map +1 -0
- package/dist/modelConfigPatchMerge.js +38 -0
- package/dist/runGraphComposer.d.ts +3 -2
- package/dist/runGraphComposer.d.ts.map +1 -1
- package/dist/runGraphComposer.js +25 -11
- package/dist/scopingNeedMatchAssist.d.ts +1 -2
- package/dist/scopingNeedMatchAssist.d.ts.map +1 -1
- package/dist/scopingNeedMatchAssist.js +3 -3
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/functions/graph-composer/meta.json +130 -4
- package/functions/graph-composer/prompts/README.md +8 -0
- package/functions/graph-composer/prompts/action-review-graph-entry-contract.md +37 -0
- package/functions/graph-composer/prompts/action-suggest-graph-entry-conditions.md +13 -0
- package/functions/graph-composer/prompts/action-suggest-graph-entry-examples.md +14 -0
- package/functions/graph-composer/prompts/action-suggest-graph-entry-inputs.md +14 -0
- package/functions/graph-composer/prompts/action-suggest-graph-execution-defaults.md +15 -0
- package/functions/graph-composer/prompts/action-suggest-job-knowledge-refs.md +12 -0
- package/functions/graph-composer/prompts/action-suggest-job-model-defaults.md +14 -0
- package/functions/graph-composer/prompts/shared/graph-entry-scope.md +19 -0
- package/functions/graph-composer/prompts/shared/request-context.md +2 -1
- package/package.json +8 -7
|
@@ -93,6 +93,86 @@
|
|
|
93
93
|
"source": { "type": "string" }
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
|
+
"GraphEntryInputRow": {
|
|
97
|
+
"type": "object",
|
|
98
|
+
"required": ["path"],
|
|
99
|
+
"properties": {
|
|
100
|
+
"kind": { "enum": ["scalar", "record"] },
|
|
101
|
+
"path": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"description": "Must start with execution.input."
|
|
104
|
+
},
|
|
105
|
+
"required": { "type": "boolean" },
|
|
106
|
+
"entityIds": { "type": "array", "items": { "type": "string" } },
|
|
107
|
+
"label": { "type": "string" },
|
|
108
|
+
"description": { "type": "string" }
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"GraphEntryExampleRow": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"required": ["format", "value"],
|
|
114
|
+
"properties": {
|
|
115
|
+
"path": { "type": "string" },
|
|
116
|
+
"format": { "enum": ["json", "markdown", "text"] },
|
|
117
|
+
"value": { "type": "string" }
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"GraphEntryPatch": {
|
|
121
|
+
"type": "object",
|
|
122
|
+
"properties": {
|
|
123
|
+
"inputs": {
|
|
124
|
+
"type": "array",
|
|
125
|
+
"items": { "$ref": "#/$defs/GraphEntryInputRow" }
|
|
126
|
+
},
|
|
127
|
+
"exampleInputs": {
|
|
128
|
+
"type": "array",
|
|
129
|
+
"items": { "$ref": "#/$defs/GraphEntryExampleRow" }
|
|
130
|
+
},
|
|
131
|
+
"conditions": { "type": "object" }
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"ModelConfigPatch": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"properties": {
|
|
137
|
+
"mode": { "enum": ["appendCase", "replaceDefault"] },
|
|
138
|
+
"cases": { "type": "array", "items": { "type": "object" } },
|
|
139
|
+
"modelConfig": {
|
|
140
|
+
"type": "object",
|
|
141
|
+
"properties": {
|
|
142
|
+
"preActionModel": { "type": "string" },
|
|
143
|
+
"skillModel": { "type": "string" },
|
|
144
|
+
"postActionModel": { "type": "string" }
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"JobPagentiKnowledgePatch": {
|
|
150
|
+
"type": "object",
|
|
151
|
+
"properties": {
|
|
152
|
+
"refs": {
|
|
153
|
+
"type": "array",
|
|
154
|
+
"items": {
|
|
155
|
+
"type": "object",
|
|
156
|
+
"required": ["catalogId", "itemId"],
|
|
157
|
+
"properties": {
|
|
158
|
+
"catalogId": { "type": "string" },
|
|
159
|
+
"itemId": { "type": "string" }
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"append": {
|
|
164
|
+
"type": "array",
|
|
165
|
+
"items": {
|
|
166
|
+
"type": "object",
|
|
167
|
+
"required": ["catalogId", "itemId"],
|
|
168
|
+
"properties": {
|
|
169
|
+
"catalogId": { "type": "string" },
|
|
170
|
+
"itemId": { "type": "string" }
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
},
|
|
96
176
|
"RequirementOptionEntry": {
|
|
97
177
|
"type": "object",
|
|
98
178
|
"description": "Ambiguous requirement field: candidates and whether a new catalog artifact is needed",
|
|
@@ -238,7 +318,14 @@
|
|
|
238
318
|
"suggestCatalogCreations",
|
|
239
319
|
"suggestScopingNeedMatch",
|
|
240
320
|
"suggestScopingMapCreation",
|
|
241
|
-
"reviewConcept"
|
|
321
|
+
"reviewConcept",
|
|
322
|
+
"reviewGraphEntryContract",
|
|
323
|
+
"suggestGraphEntryInputs",
|
|
324
|
+
"suggestGraphEntryExamples",
|
|
325
|
+
"suggestGraphEntryConditions",
|
|
326
|
+
"suggestJobModelDefaults",
|
|
327
|
+
"suggestJobKnowledgeRefs",
|
|
328
|
+
"suggestGraphExecutionDefaults"
|
|
242
329
|
]
|
|
243
330
|
},
|
|
244
331
|
"description": {
|
|
@@ -265,9 +352,13 @@
|
|
|
265
352
|
}
|
|
266
353
|
},
|
|
267
354
|
"existingGraph": {
|
|
268
|
-
"description": "Required for modify, explain, suggestConceptObjective, suggestCatalogResolution, suggestCatalogCreations, reviewConcept. Optional for suggestScopingNeedMatch (context) and suggestScopingMapCreation (alignment).",
|
|
355
|
+
"description": "Required for modify, explain, suggestConceptObjective, suggestCatalogResolution, suggestCatalogCreations, reviewConcept, and graph-entry actions. Optional for suggestScopingNeedMatch (context) and suggestScopingMapCreation (alignment).",
|
|
269
356
|
"type": "object"
|
|
270
357
|
},
|
|
358
|
+
"agentContext": {
|
|
359
|
+
"type": "object",
|
|
360
|
+
"description": "graphs-studio Agent View envelope (surface graph-entry | task-node, graphEntry, jobDefaults, …)"
|
|
361
|
+
},
|
|
271
362
|
"analysisContext": {
|
|
272
363
|
"type": "object",
|
|
273
364
|
"description": "Optional graph analysis output (execution order, IO, issues, …). Strongly recommended for suggestConceptObjective, reviewConcept, and suggestCatalog*."
|
|
@@ -336,7 +427,14 @@
|
|
|
336
427
|
"suggestCatalogCreations",
|
|
337
428
|
"suggestScopingNeedMatch",
|
|
338
429
|
"suggestScopingMapCreation",
|
|
339
|
-
"reviewConcept"
|
|
430
|
+
"reviewConcept",
|
|
431
|
+
"reviewGraphEntryContract",
|
|
432
|
+
"suggestGraphEntryInputs",
|
|
433
|
+
"suggestGraphEntryExamples",
|
|
434
|
+
"suggestGraphEntryConditions",
|
|
435
|
+
"suggestJobModelDefaults",
|
|
436
|
+
"suggestJobKnowledgeRefs",
|
|
437
|
+
"suggestGraphExecutionDefaults"
|
|
340
438
|
]
|
|
341
439
|
},
|
|
342
440
|
"graph": {
|
|
@@ -426,13 +524,41 @@
|
|
|
426
524
|
"summary": { "type": "string" }
|
|
427
525
|
}
|
|
428
526
|
},
|
|
527
|
+
"graphEntryPatch": {
|
|
528
|
+
"$ref": "#/$defs/GraphEntryPatch",
|
|
529
|
+
"description": "Partial metadata.graphEntry patch for graph-entry actions"
|
|
530
|
+
},
|
|
531
|
+
"suggestedGraphEntryPatch": {
|
|
532
|
+
"$ref": "#/$defs/GraphEntryPatch",
|
|
533
|
+
"description": "Alias for graphEntryPatch on reviewGraphEntryContract"
|
|
534
|
+
},
|
|
535
|
+
"modelConfigPatch": {
|
|
536
|
+
"$ref": "#/$defs/ModelConfigPatch",
|
|
537
|
+
"description": "Root modelConfig patch (suggestJobModelDefaults / reviewGraphEntryContract)"
|
|
538
|
+
},
|
|
539
|
+
"jobPagentiKnowledgePatch": {
|
|
540
|
+
"$ref": "#/$defs/JobPagentiKnowledgePatch",
|
|
541
|
+
"description": "Root jobPagentiKnowledge refs patch"
|
|
542
|
+
},
|
|
543
|
+
"graphExecutionPatch": {
|
|
544
|
+
"type": "object",
|
|
545
|
+
"description": "Partial metadata.graphExecution patch"
|
|
546
|
+
},
|
|
547
|
+
"graphResponsePatch": {
|
|
548
|
+
"type": "object",
|
|
549
|
+
"description": "Layer 08 response / studio persistency patch (separate from graphEntry)"
|
|
550
|
+
},
|
|
429
551
|
"findings": {
|
|
430
552
|
"type": "array",
|
|
431
|
-
"description": "Present for reviewConcept — categorized review findings",
|
|
553
|
+
"description": "Present for reviewConcept and reviewGraphEntryContract — categorized review findings",
|
|
432
554
|
"items": {
|
|
433
555
|
"type": "object",
|
|
434
556
|
"required": ["category", "severity", "summary"],
|
|
435
557
|
"properties": {
|
|
558
|
+
"scopeType": {
|
|
559
|
+
"type": "string",
|
|
560
|
+
"description": "graph for reviewGraphEntryContract findings"
|
|
561
|
+
},
|
|
436
562
|
"category": { "type": "string" },
|
|
437
563
|
"severity": { "type": "string" },
|
|
438
564
|
"summary": { "type": "string" },
|
|
@@ -17,6 +17,14 @@ Each **`intent.action`** maps to one **worker prompt file** plus optional **shar
|
|
|
17
17
|
| `action-explain.md` | Worker for `explain` only |
|
|
18
18
|
| `action-suggest-concept-objective.md` | Worker for `suggestConceptObjective` only |
|
|
19
19
|
| `action-review-concept.md` | Worker for `reviewConcept` only (concept review, no graph JSON) |
|
|
20
|
+
| `shared/graph-entry-scope.md` | Job-start / Layer 01 scope for graph-entry agent actions |
|
|
21
|
+
| `action-review-graph-entry-contract.md` | Worker for `reviewGraphEntryContract` |
|
|
22
|
+
| `action-suggest-graph-entry-inputs.md` | Worker for `suggestGraphEntryInputs` |
|
|
23
|
+
| `action-suggest-graph-entry-examples.md` | Worker for `suggestGraphEntryExamples` |
|
|
24
|
+
| `action-suggest-graph-entry-conditions.md` | Worker for `suggestGraphEntryConditions` |
|
|
25
|
+
| `action-suggest-job-model-defaults.md` | Worker for `suggestJobModelDefaults` |
|
|
26
|
+
| `action-suggest-job-knowledge-refs.md` | Worker for `suggestJobKnowledgeRefs` |
|
|
27
|
+
| `action-suggest-graph-execution-defaults.md` | Worker for `suggestGraphExecutionDefaults` |
|
|
20
28
|
| `orchestrator-system.md` | System prompt for `runGraphComposerAgent` (tool loop) |
|
|
21
29
|
|
|
22
30
|
## Appended for every worker
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
You are a **senior graph architect** reviewing the **job-start contract** (Layer 01) for a worox-graph. Audience: product owners and operators configuring **Start Job**.
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "reviewGraphEntryContract"` in this call.** Do not return full graph JSON, changelog, or `explanation`.
|
|
4
|
+
|
|
5
|
+
### Inputs
|
|
6
|
+
1. **`existingGraph`** (required): Canonical graph snapshot.
|
|
7
|
+
2. **`agentContext`** (when present): Effective **`graphEntry`**, **`jobDefaults`**, **`graphResponse`**, **`graphExecution`**, **`graphConcept`**, **`diagnostics`**, **`virtualIO`**, **`lastGraphRun`**.
|
|
8
|
+
3. **`intent.description`**: User question or review angle.
|
|
9
|
+
4. **`analysisContext`**: Optional; use when consistent with the graph.
|
|
10
|
+
|
|
11
|
+
Treat **`metadata.graphEntry`** on the graph plus **`agentContext.graphEntry`** as the entry contract under review.
|
|
12
|
+
|
|
13
|
+
### Review axes
|
|
14
|
+
- **Inputs**: `inputs[]` rows (`kind` scalar/record, `path` under `execution.input.*`, `required`, `entityIds`).
|
|
15
|
+
- **Examples**: `exampleInputs[]` with parseable JSON when `format` is `json`; coverage for required paths.
|
|
16
|
+
- **Conditions**: `conditions` (narratives, dataFilters, aiCondition) — clarify what blocks **job start** vs step gating in **`suggestedChange`**.
|
|
17
|
+
- **Job models**: root **`modelConfig`** vs per-node overrides; warn when root is empty and nodes lack overrides.
|
|
18
|
+
- **Knowledge**: root **`jobPagentiKnowledge`** refs — not **`jobKnowledge`** strings or task **`taskPagentiKnowledge`**.
|
|
19
|
+
- **Execution defaults**: **`metadata.graphExecution`** keys; flag incompatible combos (e.g. backward mode without `goalNodeId`).
|
|
20
|
+
- **Response contract**: **`graphResponse`** / root **`response`** — use **`graphResponsePatch`** only, never fold into **`graphEntryPatch`**.
|
|
21
|
+
- **Concept alignment (FR-G3)**: When **`graphConcept.entityBindings`** exists, flag **`entityIds`** on inputs that disagree; align **`graphConceptPatch.expectedInput`** text with declared paths.
|
|
22
|
+
|
|
23
|
+
### Findings
|
|
24
|
+
Each finding **MUST** include **`scopeType`: `"graph"`** and **`category`** one of: `graph_entry`, `expected_input`, `job_models`, `job_knowledge`, `graph_execution`, `graph_conditions`. **`severity`**: `info` | `warning` | `error`.
|
|
25
|
+
|
|
26
|
+
### Optional patches (partial only)
|
|
27
|
+
- **`graphEntryPatch`** or **`suggestedGraphEntryPatch`** (same shape; prefer one)
|
|
28
|
+
- **`modelConfigPatch`** with **`mode`**: `appendCase` | `replaceDefault`
|
|
29
|
+
- **`jobPagentiKnowledgePatch`**: `{ refs: [{ catalogId, itemId }] }`
|
|
30
|
+
- **`graphExecutionPatch`**: known keys only (`failFast`, `nodeTimeoutMs`, `mode`, `goalNodeId`, …)
|
|
31
|
+
- **`graphResponsePatch`**: separate from graph entry
|
|
32
|
+
- **`graphConceptPatch`**: Lane 1 only (`entityBindings`, `expectedInput`, …) — no `coreTasks` memoryIO
|
|
33
|
+
|
|
34
|
+
### Output
|
|
35
|
+
Single JSON object with **`action": "reviewGraphEntryContract"`**, **`verdict`** (`coherent`, `summary`), **`findings`** (array, may be empty), optional patches and **`requirementOptions`** when ambiguous example shapes exist.
|
|
36
|
+
|
|
37
|
+
No markdown fences.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
You propose **`metadata.graphEntry.conditions`** for **job-start gating** (graph-entry scope only).
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "suggestGraphEntryConditions"` in this call.**
|
|
4
|
+
|
|
5
|
+
### Rules
|
|
6
|
+
- Do **not** copy task-node **`conditions`** wholesale; conditions here gate **starting the job**.
|
|
7
|
+
- Preserve shape: **`narratives`**, **`dataFilters`**, **`aiCondition`** (same families as task Conditions).
|
|
8
|
+
- When **`catalogGateId`** is used, reference valid catalog ids; explain in **`rationale`** which arm blocks job start.
|
|
9
|
+
|
|
10
|
+
### Output
|
|
11
|
+
JSON with **`action": "suggestGraphEntryConditions"`**, **`graphEntryPatch.conditions`**, optional **`rationale`**.
|
|
12
|
+
|
|
13
|
+
No markdown fences.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
You propose **`metadata.graphEntry.exampleInputs[]`** for the job-start contract.
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "suggestGraphEntryExamples"` in this call.**
|
|
4
|
+
|
|
5
|
+
### Rules
|
|
6
|
+
- Return **`graphEntryPatch.exampleInputs`**: array of `{ format, value }` where **`value`** is a string.
|
|
7
|
+
- For **`format": "json"`**, **`value`** must be parseable JSON (object or array serialized as string).
|
|
8
|
+
- Cover **required** input paths from **`graphEntry.inputs`** / **`agentContext.graphEntry`**.
|
|
9
|
+
- When multiple plausible example shapes exist, add **`requirementOptions`** (ranked candidates) instead of guessing one.
|
|
10
|
+
|
|
11
|
+
### Output
|
|
12
|
+
JSON with **`action": "suggestGraphEntryExamples"`**, **`graphEntryPatch`**, optional **`requirementOptions`**, optional **`rationale`**.
|
|
13
|
+
|
|
14
|
+
No markdown fences.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
You propose **`metadata.graphEntry.inputs[]`** rows for the **job-start contract** (graph-entry scope).
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "suggestGraphEntryInputs"` in this call.**
|
|
4
|
+
|
|
5
|
+
### Rules
|
|
6
|
+
- Return **`graphEntryPatch.inputs`** only (partial patch). No full graph.
|
|
7
|
+
- Every **`path`** must start with **`execution.input.`** (e.g. `execution.input.raw`, `execution.input.scope`).
|
|
8
|
+
- Use **`kind`**: `scalar` or `record`. Include **`required`** and optional **`entityIds`** when the graph is about xmemory entity collections.
|
|
9
|
+
- When current inputs are empty, propose **at least one** row (typically `execution.input.raw` scalar or a `record` for structured scope).
|
|
10
|
+
|
|
11
|
+
### Output
|
|
12
|
+
JSON with **`action": "suggestGraphEntryInputs"`**, **`graphEntryPatch`**: `{ "inputs": [ ... ] }`, optional **`rationale`**.
|
|
13
|
+
|
|
14
|
+
No markdown fences.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
You propose **`metadata.graphExecution`** runtime defaults forwarded to execute requests.
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "suggestGraphExecutionDefaults"` in this call.**
|
|
4
|
+
|
|
5
|
+
### Allowed keys
|
|
6
|
+
`failFast`, `nodeTimeoutMs`, `mode`, `goalNodeId`, `dimension`, `outputMode`, `coreObjective`, `nodesResponses`, `flowOutline`, `pipeline` — only keys you intend to change.
|
|
7
|
+
|
|
8
|
+
### Rules
|
|
9
|
+
- Flag incompatible combinations in **`rationale`** (e.g. backward **`mode`** without **`goalNodeId`**).
|
|
10
|
+
- Partial patch only; studio deep-merges into existing **`graphExecution`**.
|
|
11
|
+
|
|
12
|
+
### Output
|
|
13
|
+
JSON with **`action": "suggestGraphExecutionDefaults"`**, **`graphExecutionPatch`**, optional **`rationale`**.
|
|
14
|
+
|
|
15
|
+
No markdown fences.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
You propose root **`jobPagentiKnowledge`** Catalox refs (Pagenti knowledge tab).
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "suggestJobKnowledgeRefs"` in this call.**
|
|
4
|
+
|
|
5
|
+
### Rules
|
|
6
|
+
- Return **`jobPagentiKnowledgePatch.refs`** (or **`append`**) as `[{ "catalogId", "itemId" }]`.
|
|
7
|
+
- Do **not** confuse with **`jobKnowledge`** string list or per-node **`taskPagentiKnowledge`**.
|
|
8
|
+
|
|
9
|
+
### Output
|
|
10
|
+
JSON with **`action": "suggestJobKnowledgeRefs"`**, **`jobPagentiKnowledgePatch`**, optional **`rationale`**.
|
|
11
|
+
|
|
12
|
+
No markdown fences.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
You propose **root** **`modelConfig`** job defaults (Start Job → Models tab).
|
|
2
|
+
|
|
3
|
+
**You ONLY perform `action = "suggestJobModelDefaults"` in this call.**
|
|
4
|
+
|
|
5
|
+
### Rules
|
|
6
|
+
- Patch **graph root `modelConfig`** only unless the user explicitly names a **node id** (then explain in **`rationale`** that node overrides belong on **`nodes[].taskConfiguration.modelConfig`**).
|
|
7
|
+
- Use **`@x12i/ai-profiles` profile names** (`cheap`, `balanced`, `deep`, …) in three slots: `preActionModel`, `skillModel`, `postActionModel`.
|
|
8
|
+
- **`modelConfigPatch.mode`**: `appendCase` (default, additive) or `replaceDefault` when replacing the sole default case.
|
|
9
|
+
- Do **not** drop existing **`cases`** without `replaceDefault` and explicit rationale.
|
|
10
|
+
|
|
11
|
+
### Output
|
|
12
|
+
JSON with **`action": "suggestJobModelDefaults"`**, **`modelConfigPatch`**, optional **`rationale`**.
|
|
13
|
+
|
|
14
|
+
No markdown fences.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Graph-entry agent scope (Start Job / Layer 01)
|
|
2
|
+
|
|
3
|
+
When **`agentContext.surface`** is **`graph-entry`** (or **`virtualRole`** is graph-entry):
|
|
4
|
+
|
|
5
|
+
- You are editing **job-start contract** and **graph-level defaults**, not a single task step.
|
|
6
|
+
- Do **not** refer to “this step” or patch **`nodes[].taskConfiguration`** unless the user explicitly names a **node id** for comparison.
|
|
7
|
+
- Do **not** return a full graph JSON. Return **partial patches** only (`graphEntryPatch`, `modelConfigPatch`, `jobPagentiKnowledgePatch`, `graphExecutionPatch`, `graphResponsePatch`, optional `graphConceptPatch` for Lane 1 alignment).
|
|
8
|
+
- Do **not** put per-step execution memory in patches: never emit **`coreTasks[].requirements.memoryIO`** from graph-entry actions (that belongs on task-node / concept review).
|
|
9
|
+
- Every graph-entry **input path** must use the **`execution.input.*`** prefix (caller / graph-entry bag), not `input.*` alone.
|
|
10
|
+
|
|
11
|
+
**Lane alignment (when `graphConcept` is present):**
|
|
12
|
+
|
|
13
|
+
| Lane | Patch target |
|
|
14
|
+
|------|----------------|
|
|
15
|
+
| Graph subject (entity collections) | `graphConceptPatch.entityBindings` and/or `graphEntry.inputs[].entityIds` |
|
|
16
|
+
| Caller payload contract | `graphEntryPatch.inputs`, `exampleInputs`, `conditions` |
|
|
17
|
+
| Per-step execution IO | **Out of scope** here — task nodes / `reviewConcept` |
|
|
18
|
+
|
|
19
|
+
**`graphResponsePatch`** is separate from **`graphEntryPatch`**. Never move exit shape into `metadata.graphEntry`.
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
- **`intent.focusNodeIds`**: When set on `modify` or `explain`, prioritize those nodes (and their edges); still keep the rest consistent or summarized as required by the action.
|
|
6
6
|
- **`constraints`**: Honor `maxNodes`, `requireFinalizer`, `allowConditionalEdges`, and any `executionMemorySchema` hints from the request when building or changing graphs.
|
|
7
7
|
- **`skillMode`**: Governs whether you may introduce new `skillKey` values (see the skill-mode section appended after the catalogs).
|
|
8
|
-
- **`
|
|
8
|
+
- **`agentContext`**: When present (graphs-studio Agent View), includes **`surface`** (`graph-entry` | `task-node`) and effective contracts (`graphEntry`, `jobDefaults`, `graphResponse`, `graphExecution`, `graphConcept`, diagnostics). Required semantics for graph-entry actions — see **`shared/graph-entry-scope.md`**.
|
|
9
|
+
- **`analysisContext`**: When present on `suggestConceptObjective`, treat it as **structured analysis** (execution order, per-node IO, issues, layers, etc.). Prefer it over re-deriving the same facts from scratch when it is consistent with `existingGraph`. Legacy hosts may duplicate graph-entry keys here with **`surface`: `graph-entry`**.
|
|
9
10
|
- **`catalogCandidates`**: When present on `suggestCatalogResolution` / `suggestCatalogCreations`, extra managed-catalog rows from the host (e.g. **Catalox** via `loadCatalogCandidatesFromCatalox`): `aiSkills`, `utilitySkills`, `scopingMaps`, `narrixTemplates`. These extend the inline `aiSkills` / `utilitySkills` arrays for matching.
|
|
10
11
|
- **`catalogMatchHints`**: When present, a server-injected object with optional `skills`, `scoping`, `narrix` entries from `matchLists` pre-pass. Treat as **non-authoritative hints**; reconcile with `existingGraph` and produce your own final recommendations.
|
|
11
12
|
- **`suggestScopingNeedMatch`**: Requires non-empty **`catalogCandidates.scopingMaps`**. **`intent.description`** is the data need. **`existingGraph`** optional.
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/graph-composer",
|
|
3
|
-
"version": "2.2
|
|
3
|
+
"version": "2.4.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"description": "LLM-backed worox-graph DAG composer: create, modify, explain, suggestConceptObjective, reviewConcept, catalog resolution/creation, scoping need match and scoping map creation plans, plus optional orchestrator — OpenRouter via @x12i/funcx; catalog rows from @x12i/catalox (loadCatalogCandidatesFromCatalox)",
|
|
7
|
+
"description": "LLM-backed worox-graph DAG composer: create, modify, explain, suggestConceptObjective, reviewConcept, graph-entry agent patches (reviewGraphEntryContract, suggestGraphEntry*), catalog resolution/creation, scoping need match and scoping map creation plans, plus optional orchestrator — OpenRouter via @x12i/funcx; catalog rows from @x12i/catalox (loadCatalogCandidatesFromCatalox)",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./dist/index.js",
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"verify:local": "tsx src/verify-local.ts",
|
|
37
37
|
"verify:catalog-live": "x12i-env run --env-file .env -- tsx scripts/verify-catalog-live.ts",
|
|
38
38
|
"test": "npm run test:unit && npm run test:live",
|
|
39
|
-
"test:unit": "node --import tsx/esm --test --test-force-exit test/unit/explain-shape.test.ts test/unit/graph-concept-patch.test.ts test/unit/graph-concept-story-parse.test.ts test/unit/review-concept-output-validation.test.ts test/unit/review-concept-catalog-alias.test.ts test/unit/redact-for-log.test.ts test/unit/graph-composer-logging.test.ts test/unit/worker-instructions.test.ts test/unit/catalog-output-validation.test.ts test/unit/catalox-catalog-bridge.test.ts test/unit/ai-task-profile.test.ts test/unit/create-modify-output-validation.test.ts test/unit/task-node-task-variable.test.ts test/unit/canonical-graph-document.test.ts test/unit/graph-engine-bridge.test.ts test/unit/graph-model-layers.test.ts test/unit/example-generation.test.ts",
|
|
39
|
+
"test:unit": "node --import tsx/esm --test --test-force-exit test/unit/explain-shape.test.ts test/unit/graph-concept-patch.test.ts test/unit/graph-concept-story-parse.test.ts test/unit/review-concept-output-validation.test.ts test/unit/review-concept-catalog-alias.test.ts test/unit/redact-for-log.test.ts test/unit/graph-composer-logging.test.ts test/unit/worker-instructions.test.ts test/unit/catalog-output-validation.test.ts test/unit/catalox-catalog-bridge.test.ts test/unit/ai-task-profile.test.ts test/unit/create-modify-output-validation.test.ts test/unit/task-node-task-variable.test.ts test/unit/canonical-graph-document.test.ts test/unit/graph-engine-bridge.test.ts test/unit/graph-model-layers.test.ts test/unit/example-generation.test.ts test/unit/graph-entry-schema.test.ts test/unit/graph-entry-patch-validation.test.ts test/unit/graph-entry-entity-alignment.test.ts test/unit/graph-entry-example-generation.test.ts test/unit/model-config-patch-merge.test.ts test/unit/graph-entry-registry.test.ts test/unit/graph-model-label-format.test.ts",
|
|
40
40
|
"test:live": "x12i-env run --env-file .env -- node --import tsx/esm --test test/live/all.ts",
|
|
41
41
|
"pack:check": "npm pack --dry-run",
|
|
42
42
|
"suggest-smoke": "x12i-env run --env-file .env -- tsx scripts/run-suggest-concept-smoke.ts"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
},
|
|
64
64
|
"homepage": "https://github.com/woroces/graph-composer#readme",
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@exellix/graph-engine": "^7.
|
|
66
|
+
"@exellix/graph-engine": "^7.7.1"
|
|
67
67
|
},
|
|
68
68
|
"peerDependenciesMeta": {
|
|
69
69
|
"@exellix/graph-engine": {
|
|
@@ -71,15 +71,16 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@x12i/ai-profiles": "^1.
|
|
74
|
+
"@x12i/ai-profiles": "^2.1.0",
|
|
75
75
|
"@x12i/catalox": "^5.1.3",
|
|
76
76
|
"@x12i/env": "^4.0.1",
|
|
77
|
-
"@x12i/funcx": "^4.
|
|
77
|
+
"@x12i/funcx": "^4.4.0",
|
|
78
78
|
"@x12i/logxer": "^4.6.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@exellix/graph-engine": "^7.
|
|
81
|
+
"@exellix/graph-engine": "^7.7.1",
|
|
82
82
|
"@types/node": "^22.10.2",
|
|
83
|
+
"@x12i/rendrix": "^4.3.0",
|
|
83
84
|
"nx-config2": "^3.6.5",
|
|
84
85
|
"tsx": "^4.19.2",
|
|
85
86
|
"typescript": "^5.7.2"
|