@exellix/graph-composer 2.4.2 → 2.5.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/CHANGELOG.md +18 -0
- package/README.md +2 -0
- package/dist/canonicalGraphWarnings.d.ts.map +1 -1
- package/dist/canonicalGraphWarnings.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/llmCallConfig.d.ts +32 -0
- package/dist/llmCallConfig.d.ts.map +1 -0
- package/dist/llmCallConfig.js +100 -0
- package/dist/studioSkillInvokePreflight.d.ts +60 -0
- package/dist/studioSkillInvokePreflight.d.ts.map +1 -0
- package/dist/studioSkillInvokePreflight.js +104 -0
- package/functions/graph-composer/prompts/shared/graph-format.md +3 -1
- package/package.json +16 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2.5.0
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **Studio skill invoke preflight** (`studioSkillInvokePreflight.ts`): `analyzeTaskNodeRunTaskRequest`, `analyzeRunTaskRequest`, `analyzeRunSkillRequest`, `buildSkillRequestAnalysisPacket`, `formatSkillRequestAnalysisMarkdown`, and FuncX constant `FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID`.
|
|
8
|
+
- **Orchestrator invoke contract** (`llmCallConfig.ts`): `collectGraphOrchestratorInvokeWarnings`, `reasoningEffort` authoring helpers; wired into `collectCanonicalGraphWarnings`.
|
|
9
|
+
- Re-exports **`buildTaskNodeRunTaskRequest`**, **`validateTaskNodeRunTaskConfig`**, **`validateTaskNodeRunTaskInvoke`** from `@exellix/graph-engine` for studio single-import ergonomics.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Worker prompts document **`taskConfiguration.llmCall`** tuning (`reasoningEffort`, no `maxTokens` on `modelConfig`).
|
|
14
|
+
- **Peer dependencies:** `@exellix/graph-engine` ^7.7.3, `@exellix/ai-tasks` ^8.6.0, `@exellix/ai-skills` ^6.1.0 (optional; required for preflight).
|
|
15
|
+
|
|
16
|
+
### Migration
|
|
17
|
+
|
|
18
|
+
- Replace `@exellix/graph-engine` imports of **`analyzeTaskNodeRunTaskRequest`** / **`analyzeRunTaskRequest`** with **`@exellix/graph-composer`**.
|
package/README.md
CHANGED
|
@@ -285,6 +285,8 @@ graph-composer explain-basic
|
|
|
285
285
|
| `loadCatalogCandidatesFromCatalox`, `createCatalox`, `unifiedCatalogItemToSkillDescriptor`, … | Build `catalogCandidates` from **Catalox** catalogs; see [`docs/catalog-metadb-end-state-contract.md`](./docs/catalog-metadb-end-state-contract.md). |
|
|
286
286
|
| `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`. |
|
|
287
287
|
| `collectCanonicalGraphWarnings` | Warn-first **`@exellix/graph-engine`** canonical checks (top-level keys, metadata placement, memory paths, model profile aliases). |
|
|
288
|
+
| `collectGraphOrchestratorInvokeWarnings` | Authoring: **`taskConfiguration.llmCall.reasoningEffort`**, reject **`maxTokens`** on **`modelConfig`**. |
|
|
289
|
+
| **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). |
|
|
288
290
|
| `analyzeGraphModelLayers`, `stampGraphModelLayersOnGraph`, `graphModelLayerLegend` | **Model map** for AI nodes: which `@x12i/ai-profiles` names win (PRE/MAIN/POST), resolved provider ids, precedence layer + color stack — **model JSON only** unless you pass an explicit `runtime` overlay. Stamp with `stampGraphModelLayersOnGraph` before explain/UI. |
|
|
289
291
|
| `formatNodeWinningModelLabel`, `formatGraphDefaultModelLabel` | **Canvas / Agent View labels** — e.g. `balanced (openrouter/…)` on Inference nodes after stamp; see graphs-studio node chrome. |
|
|
290
292
|
| `assertCanonicalGraphDocument` | Re-exported from graph-engine — **`validateCreateModifyOutput` hard-fails** when the canonicalized graph does not pass. |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonicalGraphWarnings.d.ts","sourceRoot":"","sources":["../src/canonicalGraphWarnings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canonicalGraphWarnings.d.ts","sourceRoot":"","sources":["../src/canonicalGraphWarnings.ts"],"names":[],"mappings":"AAyIA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwHrE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getCanonicalGraphDocumentViolations, collectAiTasksNodeExtensionIssues, looksLikeConcreteModelId, } from "./graphEngineBridge.js";
|
|
2
2
|
import { LEGACY_GRAPH_MODEL_ALIAS_TO_PROFILE } from "./graphAiModelConfigCanonicalize.js";
|
|
3
|
+
import { collectGraphOrchestratorInvokeWarnings } from "./llmCallConfig.js";
|
|
3
4
|
/** Local-skill execution keys that belong on taskConfiguration (graph-engine parity). */
|
|
4
5
|
const LOCAL_SKILL_METADATA_KEYS = [
|
|
5
6
|
"firstMatchWins",
|
|
@@ -208,5 +209,6 @@ export function collectCanonicalGraphWarnings(graph) {
|
|
|
208
209
|
}
|
|
209
210
|
}
|
|
210
211
|
warnings.push(...collectModelProfileWarnings(g));
|
|
212
|
+
warnings.push(...collectGraphOrchestratorInvokeWarnings(graph));
|
|
211
213
|
return warnings;
|
|
212
214
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export type { ParsedGraphConcept } from "./parseGraphConceptStory.js";
|
|
|
22
22
|
export { reportTaskNodeProtocolGaps, DEFAULT_LOCAL_SKILL_KEYS, type AiTaskProfileMetadata, type TaskNodeProtocolGap, type TaskNodeProtocolIssueCode, type WebScopingNodeConfig, type InputSynthesisNodeConfig, type InputSynthesisDestination, } from "./aiTaskProfile.js";
|
|
23
23
|
export { assertCanonicalGraphDocument, getCanonicalGraphDocumentViolations, CANONICAL_GRAPH_TOP_LEVEL_KEYS, GRAPH_ENGINE_MEMORY_PATH_ROOTS, isAllowedGraphEngineMemoryPath, collectAiTasksNodeExtensionIssues, assertAiTasksNodeExtensionsValid, resolveGraphEngineMemoryPathValue, buildGraphEngineMemoryResolutionRootFromWorkingMemory, DEFAULT_GRAPH_AI_MODEL_PROFILE_CONFIG, looksLikeConcreteModelId, isGraphAiProfileName, type GraphEngineMemoryResolutionRoot, } from "./graphEngineBridge.js";
|
|
24
24
|
export { collectCanonicalGraphWarnings } from "./canonicalGraphWarnings.js";
|
|
25
|
+
export { OPTIMIXER_REASONING_EFFORT_VALUES, collectGraphOrchestratorInvokeWarnings, isOptimixerReasoningEffort, type GraphTaskNodeLlmCallConfig, type OptimixerReasoningEffort, } from "./llmCallConfig.js";
|
|
26
|
+
export { FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID, FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY, analyzeRunSkillRequest, analyzeRunTaskRequest, analyzeTaskNodeRunTaskRequest, buildTaskNodeRunTaskRequest, validateTaskNodeRunTaskConfig, validateTaskNodeRunTaskInvoke, validateTaskNodeRunTaskInvokeFromGraph, pickRunSkillRequestFields, validateRunTaskConfig, validateRunTaskInvoke, analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, analyzeSkillRequest, buildSkillRequestAnalysisPacket, formatSkillRequestAnalysisMarkdown, type AnalyzeRunTaskRequestOptions, type AnalyzeRunTaskRequestResult, type AnalyzeTaskNodeRunTaskRequestArgs, type AnalyzeTaskNodeRunTaskRequestResult, type AnalyzeSkillRequestOptions, type AnalyzeSkillRequestResult, type SkillRequestAnalysisFinding, type SkillRequestAnalysisReport, type SkillRequestAnalysisVerdict, type BuildSkillRequestAnalysisPacketResult, type ValidateTaskNodeRunTaskConfigArgs, type ValidateTaskNodeRunTaskConfigResult, type ValidateTaskNodeRunTaskInvokeArgs, type ValidateTaskNodeRunTaskInvokeResult, type BuildTaskNodeRunTaskRequestArgs, type BuildTaskNodeRunTaskRequestResult, } from "./studioSkillInvokePreflight.js";
|
|
25
27
|
export { analyzeGraphModelLayers, stampGraphModelLayersOnGraph, graphModelLayerLegend, graphModelProfileAccent, resolveGraphModelProfileName, readNodeGraphModelLayersFromNode, formatNodeWinningModelLabel, formatGraphDefaultModelLabel, type FormatNodeModelLabelOptions, type AnalyzeGraphModelLayersOptions, type GraphModelLayerPhase, type GraphModelLayerSource, type GraphModelLayerStackEntry, type GraphModelLayersAnalysis, type GraphModelLayersRuntimeOverlay, type GraphModelProfilesTriple, type NodeGraphModelLayers, } from "./graphModelLayers.js";
|
|
26
28
|
export { resolveTaskNodeInputs, resolveTaskNodeInputsConfig, resolveTaskNodeTaskVariable, canonicalizeGraphTaskNodeTaskVariable, canonicalizeGraphModel, reportTaskNodeInputsLayoutIssues, taskNodeInputsLayoutWarningMessage, isTaskVariablePathRef, isTaskNode, isFinalizerNode, type TaskNodeInputsLayoutIssue, type TaskNodeInputsLayoutIssueCode, } from "./taskNodeTaskVariable.js";
|
|
27
29
|
export { createCatalox, bindCataloxContext, Catalox, CataloxBound, } from "@x12i/catalox/embedder";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,8 @@ export { parseGraphConceptStory, parseGraphConceptStoryBody, isGraphConceptStory
|
|
|
18
18
|
export { reportTaskNodeProtocolGaps, DEFAULT_LOCAL_SKILL_KEYS, } from "./aiTaskProfile.js";
|
|
19
19
|
export { assertCanonicalGraphDocument, getCanonicalGraphDocumentViolations, CANONICAL_GRAPH_TOP_LEVEL_KEYS, GRAPH_ENGINE_MEMORY_PATH_ROOTS, isAllowedGraphEngineMemoryPath, collectAiTasksNodeExtensionIssues, assertAiTasksNodeExtensionsValid, resolveGraphEngineMemoryPathValue, buildGraphEngineMemoryResolutionRootFromWorkingMemory, DEFAULT_GRAPH_AI_MODEL_PROFILE_CONFIG, looksLikeConcreteModelId, isGraphAiProfileName, } from "./graphEngineBridge.js";
|
|
20
20
|
export { collectCanonicalGraphWarnings } from "./canonicalGraphWarnings.js";
|
|
21
|
+
export { OPTIMIXER_REASONING_EFFORT_VALUES, collectGraphOrchestratorInvokeWarnings, isOptimixerReasoningEffort, } from "./llmCallConfig.js";
|
|
22
|
+
export { FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID, FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY, analyzeRunSkillRequest, analyzeRunTaskRequest, analyzeTaskNodeRunTaskRequest, buildTaskNodeRunTaskRequest, validateTaskNodeRunTaskConfig, validateTaskNodeRunTaskInvoke, validateTaskNodeRunTaskInvokeFromGraph, pickRunSkillRequestFields, validateRunTaskConfig, validateRunTaskInvoke, analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, analyzeSkillRequest, buildSkillRequestAnalysisPacket, formatSkillRequestAnalysisMarkdown, } from "./studioSkillInvokePreflight.js";
|
|
21
23
|
export { analyzeGraphModelLayers, stampGraphModelLayersOnGraph, graphModelLayerLegend, graphModelProfileAccent, resolveGraphModelProfileName, readNodeGraphModelLayersFromNode, formatNodeWinningModelLabel, formatGraphDefaultModelLabel, } from "./graphModelLayers.js";
|
|
22
24
|
export { resolveTaskNodeInputs, resolveTaskNodeInputsConfig, resolveTaskNodeTaskVariable, canonicalizeGraphTaskNodeTaskVariable, canonicalizeGraphModel, reportTaskNodeInputsLayoutIssues, taskNodeInputsLayoutWarningMessage, isTaskVariablePathRef, isTaskNode, isFinalizerNode, } from "./taskNodeTaskVariable.js";
|
|
23
25
|
export { createCatalox, bindCataloxContext, Catalox, CataloxBound, } from "@x12i/catalox/embedder";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph authoring contract for MAIN invoke tuning (`node.taskConfiguration.llmCall`).
|
|
3
|
+
* Runtime: graph-engine merges `llmCall` with resolved `skillModel`; ai-tasks forwards to ai-skills Optimixer.
|
|
4
|
+
*
|
|
5
|
+
* Hosts send: model (runtime-resolved), temperature, topP, reasoningEffort, timeoutMs, outputExpectation.
|
|
6
|
+
* Hosts do not send: maxTokens / max_completion_tokens on modelConfig or as a literal completion budget on llmCall.
|
|
7
|
+
*/
|
|
8
|
+
/** Mirrors `@x12i/optimixer` — kept local so graph-composer does not depend on optimixer directly. */
|
|
9
|
+
export type OptimixerReasoningEffort = "not-applicable" | "none" | "low" | "medium" | "high";
|
|
10
|
+
export declare const OPTIMIXER_REASONING_EFFORT_VALUES: readonly OptimixerReasoningEffort[];
|
|
11
|
+
/** Authoring shape for `taskConfiguration.llmCall` on graph JSON (model set at runtime by graph-engine). */
|
|
12
|
+
export type GraphTaskNodeLlmCallConfig = {
|
|
13
|
+
/** Ignored on graph JSON — graph-engine sets from resolved skillModel at runTask. */
|
|
14
|
+
model?: string;
|
|
15
|
+
temperature?: number;
|
|
16
|
+
topP?: number;
|
|
17
|
+
reasoningEffort?: OptimixerReasoningEffort;
|
|
18
|
+
maxOutputLength?: number;
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
outputExpectation?: Record<string, unknown>;
|
|
21
|
+
/** @deprecated Use outputExpectation; literal caps are Optimixer-owned at invoke. */
|
|
22
|
+
maxTokensCap?: number;
|
|
23
|
+
/** @deprecated Optimixer-owned; do not author on new graphs. */
|
|
24
|
+
maxTokens?: number;
|
|
25
|
+
max_tokens?: number;
|
|
26
|
+
max_completion_tokens?: number;
|
|
27
|
+
max_output_tokens?: number;
|
|
28
|
+
};
|
|
29
|
+
export declare function isOptimixerReasoningEffort(value: unknown): value is OptimixerReasoningEffort;
|
|
30
|
+
/** Warn-only checks for orchestrator invoke contract on static graph JSON. */
|
|
31
|
+
export declare function collectGraphOrchestratorInvokeWarnings(graph: object): string[];
|
|
32
|
+
//# sourceMappingURL=llmCallConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llmCallConfig.d.ts","sourceRoot":"","sources":["../src/llmCallConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sGAAsG;AACtG,MAAM,MAAM,wBAAwB,GAChC,gBAAgB,GAChB,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,CAAC;AAEX,eAAO,MAAM,iCAAiC,EAAE,SAAS,wBAAwB,EAMvE,CAAC;AAEX,4GAA4G;AAC5G,MAAM,MAAM,0BAA0B,GAAG;IACvC,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAwBF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAK5F;AAED,8EAA8E;AAC9E,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA4E9E"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph authoring contract for MAIN invoke tuning (`node.taskConfiguration.llmCall`).
|
|
3
|
+
* Runtime: graph-engine merges `llmCall` with resolved `skillModel`; ai-tasks forwards to ai-skills Optimixer.
|
|
4
|
+
*
|
|
5
|
+
* Hosts send: model (runtime-resolved), temperature, topP, reasoningEffort, timeoutMs, outputExpectation.
|
|
6
|
+
* Hosts do not send: maxTokens / max_completion_tokens on modelConfig or as a literal completion budget on llmCall.
|
|
7
|
+
*/
|
|
8
|
+
export const OPTIMIXER_REASONING_EFFORT_VALUES = [
|
|
9
|
+
"not-applicable",
|
|
10
|
+
"none",
|
|
11
|
+
"low",
|
|
12
|
+
"medium",
|
|
13
|
+
"high",
|
|
14
|
+
];
|
|
15
|
+
const LEGACY_LLM_CALL_TOKEN_KEYS = [
|
|
16
|
+
"maxTokens",
|
|
17
|
+
"max_tokens",
|
|
18
|
+
"max_completion_tokens",
|
|
19
|
+
"max_output_tokens",
|
|
20
|
+
];
|
|
21
|
+
const FORBIDDEN_MODEL_CONFIG_TOKEN_KEYS = [
|
|
22
|
+
"maxTokens",
|
|
23
|
+
"max_tokens",
|
|
24
|
+
"max_completion_tokens",
|
|
25
|
+
"max_output_tokens",
|
|
26
|
+
"maxTokensCap",
|
|
27
|
+
];
|
|
28
|
+
function readRecord(v) {
|
|
29
|
+
if (v === null || v === undefined || typeof v !== "object" || Array.isArray(v)) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return v;
|
|
33
|
+
}
|
|
34
|
+
export function isOptimixerReasoningEffort(value) {
|
|
35
|
+
return (typeof value === "string" &&
|
|
36
|
+
OPTIMIXER_REASONING_EFFORT_VALUES.includes(value));
|
|
37
|
+
}
|
|
38
|
+
/** Warn-only checks for orchestrator invoke contract on static graph JSON. */
|
|
39
|
+
export function collectGraphOrchestratorInvokeWarnings(graph) {
|
|
40
|
+
const warnings = [];
|
|
41
|
+
const g = graph;
|
|
42
|
+
const nodes = g.nodes;
|
|
43
|
+
if (!Array.isArray(nodes))
|
|
44
|
+
return warnings;
|
|
45
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
46
|
+
const node = readRecord(nodes[i]);
|
|
47
|
+
if (node === undefined)
|
|
48
|
+
continue;
|
|
49
|
+
const nodeId = typeof node.id === "string" ? node.id : `nodes[${i}]`;
|
|
50
|
+
const prefix = `node "${nodeId}"`;
|
|
51
|
+
const tc = readRecord(node.taskConfiguration);
|
|
52
|
+
const llmCall = readRecord(tc?.llmCall);
|
|
53
|
+
if (llmCall !== undefined) {
|
|
54
|
+
for (const key of LEGACY_LLM_CALL_TOKEN_KEYS) {
|
|
55
|
+
if (key in llmCall) {
|
|
56
|
+
warnings.push(`${prefix}: taskConfiguration.llmCall.${key} is deprecated — token budget is Optimixer-owned at invoke; use outputExpectation / reasoningEffort instead.`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if ("maxTokensCap" in llmCall) {
|
|
60
|
+
warnings.push(`${prefix}: taskConfiguration.llmCall.maxTokensCap is deprecated in ai-tasks 8.6+ — use outputExpectation; step retry may still bump caps at runtime only.`);
|
|
61
|
+
}
|
|
62
|
+
if (llmCall.reasoningEffort !== undefined &&
|
|
63
|
+
!isOptimixerReasoningEffort(llmCall.reasoningEffort)) {
|
|
64
|
+
warnings.push(`${prefix}: taskConfiguration.llmCall.reasoningEffort must be one of ${OPTIMIXER_REASONING_EFFORT_VALUES.join(", ")}.`);
|
|
65
|
+
}
|
|
66
|
+
if (typeof llmCall.model === "string" && llmCall.model.trim() !== "") {
|
|
67
|
+
warnings.push(`${prefix}: taskConfiguration.llmCall.model is ignored on graph JSON — graph-engine sets llmCall.model from resolved skillModel.`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const modelConfigSel = readRecord(tc?.modelConfig);
|
|
71
|
+
if (modelConfigSel?.cases && Array.isArray(modelConfigSel.cases)) {
|
|
72
|
+
for (let c = 0; c < modelConfigSel.cases.length; c++) {
|
|
73
|
+
const caseRow = readRecord(modelConfigSel.cases[c]);
|
|
74
|
+
const triple = readRecord(caseRow?.modelConfig);
|
|
75
|
+
if (triple === undefined)
|
|
76
|
+
continue;
|
|
77
|
+
for (const key of FORBIDDEN_MODEL_CONFIG_TOKEN_KEYS) {
|
|
78
|
+
if (key in triple) {
|
|
79
|
+
warnings.push(`${prefix}: taskConfiguration.modelConfig.cases[${c}].modelConfig.${key} is forbidden — profile triple only (preActionModel, skillModel, postActionModel).`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const rootSel = readRecord(g.modelConfig);
|
|
86
|
+
if (rootSel?.cases && Array.isArray(rootSel.cases)) {
|
|
87
|
+
for (let c = 0; c < rootSel.cases.length; c++) {
|
|
88
|
+
const caseRow = readRecord(rootSel.cases[c]);
|
|
89
|
+
const triple = readRecord(caseRow?.modelConfig);
|
|
90
|
+
if (triple === undefined)
|
|
91
|
+
continue;
|
|
92
|
+
for (const key of FORBIDDEN_MODEL_CONFIG_TOKEN_KEYS) {
|
|
93
|
+
if (key in triple) {
|
|
94
|
+
warnings.push(`graph.modelConfig.cases[${c}].modelConfig.${key} is forbidden — profile triple only.`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return warnings;
|
|
100
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Studio / graphs-composer preflight — skill invoke analysis and RunTask validation.
|
|
3
|
+
*
|
|
4
|
+
* Moved out of `@exellix/graph-engine` and `@exellix/ai-tasks` runtime exports (8.6+).
|
|
5
|
+
* Studio should depend on `@exellix/graph-composer` for these checks, not graph-engine execute paths.
|
|
6
|
+
*/
|
|
7
|
+
import type { Catalox } from "@x12i/catalox";
|
|
8
|
+
import type { Logxer } from "@x12i/logxer";
|
|
9
|
+
import type { RunTaskRequest } from "@exellix/ai-tasks";
|
|
10
|
+
import { pickRunSkillRequestFields, validateRunTaskConfig, validateRunTaskInvoke, analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, type RunTaskValidationIssue, type ValidateRunTaskInvokeParams } from "@exellix/ai-tasks";
|
|
11
|
+
import { buildTaskNodeRunTaskRequest, validateTaskNodeRunTaskConfig, validateTaskNodeRunTaskInvoke } from "@exellix/graph-engine";
|
|
12
|
+
import type { BuildTaskNodeRunTaskRequestArgs, BuildTaskNodeRunTaskRequestResult, ValidateTaskNodeRunTaskConfigArgs, ValidateTaskNodeRunTaskConfigResult, ValidateTaskNodeRunTaskInvokeArgs, ValidateTaskNodeRunTaskInvokeResult } from "@exellix/graph-engine";
|
|
13
|
+
import { analyzeSkillRequest } from "@exellix/ai-skills/dist/analysis/analyze-skill-request.js";
|
|
14
|
+
import { buildSkillRequestAnalysisPacket } from "@exellix/ai-skills/dist/analysis/build-skill-request-analysis-packet.js";
|
|
15
|
+
import { formatSkillRequestAnalysisMarkdown } from "@exellix/ai-skills/dist/analysis/format-skill-request-analysis-markdown.js";
|
|
16
|
+
import type { AnalyzeSkillRequestOptions, AnalyzeSkillRequestResult, BuildSkillRequestAnalysisPacketResult, SkillRequestAnalysisFinding, SkillRequestAnalysisReport, SkillRequestAnalysisVerdict } from "@exellix/ai-skills/dist/analysis/types.js";
|
|
17
|
+
/** FuncX optional LLM review step (see `@x12i/funcx` GATEWAY-INVOKE-ANALYSIS). */
|
|
18
|
+
export declare const FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID: "ai-skills/analyze-gateway-invoke-request";
|
|
19
|
+
export declare const FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY: "4.3.3";
|
|
20
|
+
export type { AnalyzeSkillRequestOptions, AnalyzeSkillRequestResult, BuildSkillRequestAnalysisPacketResult, SkillRequestAnalysisFinding, SkillRequestAnalysisReport, SkillRequestAnalysisVerdict, BuildTaskNodeRunTaskRequestArgs, BuildTaskNodeRunTaskRequestResult, ValidateTaskNodeRunTaskConfigArgs, ValidateTaskNodeRunTaskConfigResult, ValidateTaskNodeRunTaskInvokeArgs, ValidateTaskNodeRunTaskInvokeResult, };
|
|
21
|
+
export { buildTaskNodeRunTaskRequest, validateTaskNodeRunTaskConfig, validateTaskNodeRunTaskInvoke, pickRunSkillRequestFields, validateRunTaskConfig, validateRunTaskInvoke, analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, analyzeSkillRequest, buildSkillRequestAnalysisPacket, formatSkillRequestAnalysisMarkdown, };
|
|
22
|
+
export type AnalyzeRunTaskRequestOptions = AnalyzeSkillRequestOptions & {
|
|
23
|
+
logger?: Logxer;
|
|
24
|
+
/** When true (default), merge validateRunTaskConfig into the analysis report. */
|
|
25
|
+
includeAiTasksConfigValidation?: boolean;
|
|
26
|
+
};
|
|
27
|
+
export type AnalyzeRunTaskRequestResult = AnalyzeSkillRequestResult & {
|
|
28
|
+
aiTasksConfigValidation?: {
|
|
29
|
+
ok: boolean;
|
|
30
|
+
issues: RunTaskValidationIssue[];
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/** Preflight on a flat {@link RunSkillRequest} slice (Catalox templates + deterministic checks). */
|
|
34
|
+
export declare function analyzeRunSkillRequest(catalox: Catalox, skillRequest: Parameters<typeof analyzeSkillRequest>[1], options?: AnalyzeSkillRequestOptions & {
|
|
35
|
+
logger?: Logxer;
|
|
36
|
+
}): Promise<AnalyzeSkillRequestResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Preflight for a graph-built or hand-authored {@link RunTaskRequest}.
|
|
39
|
+
* Does not invoke runTask, xynthesis, or the gateway.
|
|
40
|
+
*/
|
|
41
|
+
export declare function analyzeRunTaskRequest(catalox: Catalox, request: RunTaskRequest, options?: AnalyzeRunTaskRequestOptions): Promise<AnalyzeRunTaskRequestResult>;
|
|
42
|
+
export type AnalyzeTaskNodeRunTaskRequestArgs = BuildTaskNodeRunTaskRequestArgs & {
|
|
43
|
+
catalox: Catalox;
|
|
44
|
+
analyzeOptions?: AnalyzeRunTaskRequestOptions;
|
|
45
|
+
};
|
|
46
|
+
export type AnalyzeTaskNodeRunTaskRequestResult = {
|
|
47
|
+
skipped: true;
|
|
48
|
+
skillKey: string;
|
|
49
|
+
reason: "local_skill" | "finalizer";
|
|
50
|
+
} | ({
|
|
51
|
+
skipped: false;
|
|
52
|
+
skillKey: string;
|
|
53
|
+
request: RunTaskRequest;
|
|
54
|
+
} & AnalyzeRunTaskRequestResult);
|
|
55
|
+
/** Build the same RunTaskRequest as graph-engine executeNode, then run studio preflight. */
|
|
56
|
+
export declare function analyzeTaskNodeRunTaskRequest(args: AnalyzeTaskNodeRunTaskRequestArgs): Promise<AnalyzeTaskNodeRunTaskRequestResult>;
|
|
57
|
+
export type ValidateTaskNodeRunTaskInvokeWithTemplatesArgs = ValidateTaskNodeRunTaskInvokeArgs & Omit<ValidateRunTaskInvokeParams, "request">;
|
|
58
|
+
/** validateTaskNodeRunTaskInvoke re-export with stable name for studio imports. */
|
|
59
|
+
export { validateTaskNodeRunTaskInvoke as validateTaskNodeRunTaskInvokeFromGraph };
|
|
60
|
+
//# sourceMappingURL=studioSkillInvokePreflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studioSkillInvokePreflight.d.ts","sourceRoot":"","sources":["../src/studioSkillInvokePreflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { pickRunSkillRequestFields, validateRunTaskConfig, validateRunTaskInvoke, analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, } from "@exellix/ai-tasks";
|
|
2
|
+
import { buildTaskNodeRunTaskRequest, validateTaskNodeRunTaskConfig, validateTaskNodeRunTaskInvoke, } from "@exellix/graph-engine";
|
|
3
|
+
import { analyzeSkillRequest } from "@exellix/ai-skills/dist/analysis/analyze-skill-request.js";
|
|
4
|
+
import { buildSkillRequestAnalysisPacket } from "@exellix/ai-skills/dist/analysis/build-skill-request-analysis-packet.js";
|
|
5
|
+
import { formatSkillRequestAnalysisMarkdown } from "@exellix/ai-skills/dist/analysis/format-skill-request-analysis-markdown.js";
|
|
6
|
+
/** FuncX optional LLM review step (see `@x12i/funcx` GATEWAY-INVOKE-ANALYSIS). */
|
|
7
|
+
export const FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID = "ai-skills/analyze-gateway-invoke-request";
|
|
8
|
+
export const FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY = "4.3.3";
|
|
9
|
+
export { buildTaskNodeRunTaskRequest, validateTaskNodeRunTaskConfig, validateTaskNodeRunTaskInvoke, pickRunSkillRequestFields, validateRunTaskConfig, validateRunTaskInvoke, analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, analyzeSkillRequest, buildSkillRequestAnalysisPacket, formatSkillRequestAnalysisMarkdown, };
|
|
10
|
+
function categoryForAiTasksIssue(issue) {
|
|
11
|
+
const p = issue.path ?? "";
|
|
12
|
+
if (p.startsWith("smartInput"))
|
|
13
|
+
return "smartInput";
|
|
14
|
+
if (p.includes("executionPipeline"))
|
|
15
|
+
return "template";
|
|
16
|
+
if (p.includes("executionMemory"))
|
|
17
|
+
return "executionMemory";
|
|
18
|
+
if (p.includes("modelConfig") || p.includes("llmCall") || p.includes("timeoutMs")) {
|
|
19
|
+
return "modelConfig";
|
|
20
|
+
}
|
|
21
|
+
if (p.startsWith("agentId") || p.startsWith("jobTypeId") || p.startsWith("taskTypeId")) {
|
|
22
|
+
return "activix";
|
|
23
|
+
}
|
|
24
|
+
return "catalog";
|
|
25
|
+
}
|
|
26
|
+
function aiTasksIssueToFinding(issue) {
|
|
27
|
+
return {
|
|
28
|
+
id: `AI_TASKS_${issue.code}`,
|
|
29
|
+
severity: issue.severity,
|
|
30
|
+
category: categoryForAiTasksIssue(issue),
|
|
31
|
+
path: issue.path,
|
|
32
|
+
message: issue.message,
|
|
33
|
+
suggestion: "Fix the RunTaskRequest field before runTask() or graph compile.",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function mergeVerdict(a, b) {
|
|
37
|
+
if (a === "errors" || b === "errors")
|
|
38
|
+
return "errors";
|
|
39
|
+
if (a === "warnings" || b === "warnings")
|
|
40
|
+
return "warnings";
|
|
41
|
+
return "ok";
|
|
42
|
+
}
|
|
43
|
+
/** Preflight on a flat {@link RunSkillRequest} slice (Catalox templates + deterministic checks). */
|
|
44
|
+
export async function analyzeRunSkillRequest(catalox, skillRequest, options) {
|
|
45
|
+
return analyzeSkillRequest(catalox, skillRequest, options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Preflight for a graph-built or hand-authored {@link RunTaskRequest}.
|
|
49
|
+
* Does not invoke runTask, xynthesis, or the gateway.
|
|
50
|
+
*/
|
|
51
|
+
export async function analyzeRunTaskRequest(catalox, request, options) {
|
|
52
|
+
const skillRequest = pickRunSkillRequestFields(request);
|
|
53
|
+
let aiTasksConfigValidation;
|
|
54
|
+
const extraFindings = [];
|
|
55
|
+
if (options?.includeAiTasksConfigValidation !== false) {
|
|
56
|
+
const v = validateRunTaskConfig(request);
|
|
57
|
+
aiTasksConfigValidation = { ok: v.ok, issues: v.issues };
|
|
58
|
+
extraFindings.push(...v.issues.map(aiTasksIssueToFinding));
|
|
59
|
+
}
|
|
60
|
+
const skillResult = await analyzeSkillRequest(catalox, skillRequest, options);
|
|
61
|
+
if (extraFindings.length === 0) {
|
|
62
|
+
return { ...skillResult, aiTasksConfigValidation };
|
|
63
|
+
}
|
|
64
|
+
const mergedFindings = [...skillResult.deterministicFindings, ...extraFindings];
|
|
65
|
+
const configVerdict = aiTasksConfigValidation?.ok
|
|
66
|
+
? "ok"
|
|
67
|
+
: aiTasksConfigValidation?.issues.some((issue) => issue.severity === "error")
|
|
68
|
+
? "errors"
|
|
69
|
+
: "warnings";
|
|
70
|
+
const verdict = mergeVerdict(skillResult.verdict, configVerdict);
|
|
71
|
+
const report = {
|
|
72
|
+
...skillResult.report,
|
|
73
|
+
verdict,
|
|
74
|
+
findings: [...skillResult.report.findings, ...extraFindings],
|
|
75
|
+
configAssessment: {
|
|
76
|
+
...skillResult.report.configAssessment,
|
|
77
|
+
issues: [
|
|
78
|
+
...skillResult.report.configAssessment.issues,
|
|
79
|
+
...extraFindings.filter((f) => f.category === "modelConfig" ||
|
|
80
|
+
f.category === "catalog" ||
|
|
81
|
+
f.category === "activix" ||
|
|
82
|
+
f.category === "template"),
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
return {
|
|
87
|
+
...skillResult,
|
|
88
|
+
verdict,
|
|
89
|
+
deterministicFindings: mergedFindings,
|
|
90
|
+
report,
|
|
91
|
+
aiTasksConfigValidation,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Build the same RunTaskRequest as graph-engine executeNode, then run studio preflight. */
|
|
95
|
+
export async function analyzeTaskNodeRunTaskRequest(args) {
|
|
96
|
+
const built = await buildTaskNodeRunTaskRequest(args);
|
|
97
|
+
if (!built.runnable) {
|
|
98
|
+
return { skipped: true, skillKey: built.skillKey, reason: built.reason };
|
|
99
|
+
}
|
|
100
|
+
const analysis = await analyzeRunTaskRequest(args.catalox, built.request, args.analyzeOptions);
|
|
101
|
+
return { ...analysis, skipped: false, skillKey: built.skillKey, request: built.request };
|
|
102
|
+
}
|
|
103
|
+
/** validateTaskNodeRunTaskInvoke re-export with stable name for studio imports. */
|
|
104
|
+
export { validateTaskNodeRunTaskInvoke as validateTaskNodeRunTaskInvokeFromGraph };
|
|
@@ -64,11 +64,13 @@ 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`, local-skill keys (`rules`, `scopingMapId`, `firstMatchWins`, …), … |
|
|
67
|
+
| Execution config | `taskConfiguration.*` | `aiTaskProfile`, `narrix`, `modelConfig`, `executionStrategies`, `aiTasksOutputValidation`, **`llmCall`** (tuning only), 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
|
|
|
71
71
|
- **AI task nodes** must include **`taskConfiguration.aiTaskProfile`** with non-empty **`preStrategyKey`** and **`postStrategyKey`** (deployment catalog row ids). Add **`taskConfiguration.narrix`** when discovery applies. Add **`webScoping`** / **`inputSynthesis`** under **`aiTaskProfile`** when needed. Legacy **`metadata.aiTaskProfile`** is dual-read and canonicalized to **`taskConfiguration`** on output — do not author new graphs under `metadata`.
|
|
72
|
+
- **`taskConfiguration.llmCall`** (MAIN tuning only): optional **`temperature`**, **`topP`**, **`reasoningEffort`** (`not-applicable` | `none` | `low` | `medium` | `high`), **`timeoutMs`**, **`outputExpectation`**. Do **not** author **`maxTokens`**, **`max_completion_tokens`**, or **`maxTokensCap`** — Optimixer owns completion budget at invoke. Do **not** set **`llmCall.model`** on graph JSON (runtime resolves from **`skillModel`**).
|
|
73
|
+
- **`modelConfig`** cases hold **`@x12i/ai-profiles` profile names only** in three slots — never token caps or provider ids on graph JSON.
|
|
72
74
|
- `skillKey` must come from the provided skill catalog unless extensible mode is active.
|
|
73
75
|
- Do **not** put `question`, literals, or `$path` variable refs under `inputsConfig`. Do **not** use deprecated task-node `inputs` or `outputMapping` (graph-composer renames them on output).
|
|
74
76
|
- `taskVariable.question` should be clear and self-contained.
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/graph-composer",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"description": "LLM-backed worox-graph DAG composer
|
|
7
|
+
"description": "LLM-backed worox-graph DAG composer and studio preflight: graph authoring actions, graph-entry patches, skill invoke analysis (analyzeTaskNodeRunTaskRequest), llmCall/reasoningEffort orchestrator contract — OpenRouter via @x12i/funcx; catalog rows from @x12i/catalox",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./dist/index.js",
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"functions",
|
|
24
24
|
"examples",
|
|
25
25
|
"README.md",
|
|
26
|
+
"CHANGELOG.md",
|
|
26
27
|
"LICENSE",
|
|
27
28
|
".env.example"
|
|
28
29
|
],
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
"verify:local": "tsx src/verify-local.ts",
|
|
37
38
|
"verify:catalog-live": "x12i-env run --env-file .env -- tsx scripts/verify-catalog-live.ts",
|
|
38
39
|
"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 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
|
+
"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 test/unit/llm-call-config.test.ts",
|
|
40
41
|
"test:live": "x12i-env run --env-file .env -- node --import tsx/esm --test test/live/all.ts",
|
|
41
42
|
"pack:check": "npm pack --dry-run",
|
|
42
43
|
"suggest-smoke": "x12i-env run --env-file .env -- tsx scripts/run-suggest-concept-smoke.ts"
|
|
@@ -63,11 +64,19 @@
|
|
|
63
64
|
},
|
|
64
65
|
"homepage": "https://github.com/woroces/graph-composer#readme",
|
|
65
66
|
"peerDependencies": {
|
|
66
|
-
"@exellix/
|
|
67
|
+
"@exellix/ai-skills": "^6.1.0",
|
|
68
|
+
"@exellix/ai-tasks": "^8.6.0",
|
|
69
|
+
"@exellix/graph-engine": "^7.7.3"
|
|
67
70
|
},
|
|
68
71
|
"peerDependenciesMeta": {
|
|
69
72
|
"@exellix/graph-engine": {
|
|
70
73
|
"optional": true
|
|
74
|
+
},
|
|
75
|
+
"@exellix/ai-tasks": {
|
|
76
|
+
"optional": true
|
|
77
|
+
},
|
|
78
|
+
"@exellix/ai-skills": {
|
|
79
|
+
"optional": true
|
|
71
80
|
}
|
|
72
81
|
},
|
|
73
82
|
"dependencies": {
|
|
@@ -78,7 +87,9 @@
|
|
|
78
87
|
"@x12i/logxer": "^4.6.0"
|
|
79
88
|
},
|
|
80
89
|
"devDependencies": {
|
|
81
|
-
"@exellix/
|
|
90
|
+
"@exellix/ai-skills": "^6.1.0",
|
|
91
|
+
"@exellix/ai-tasks": "^8.6.1",
|
|
92
|
+
"@exellix/graph-engine": "^7.7.3",
|
|
82
93
|
"@types/node": "^22.10.2",
|
|
83
94
|
"@x12i/rendrix": "^4.3.0",
|
|
84
95
|
"nx-config2": "^3.6.5",
|