@exellix/ai-tasks 8.5.3 → 8.6.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/CHANGELOG.md +6 -0
- package/README.md +4 -18
- package/dist/aiSkillsUpstreamExports.d.ts +2 -2
- package/dist/aiSkillsUpstreamExports.d.ts.map +1 -1
- package/dist/aiSkillsUpstreamExports.js +1 -1
- package/dist/aiSkillsUpstreamExports.js.map +1 -1
- package/dist/compile/compileTaskConfiguration.d.ts.map +1 -1
- package/dist/compile/compileTaskConfiguration.js +13 -0
- package/dist/compile/compileTaskConfiguration.js.map +1 -1
- package/dist/core/task-sdk.d.ts.map +1 -1
- package/dist/core/task-sdk.js +6 -1
- package/dist/core/task-sdk.js.map +1 -1
- package/dist/errors/runTaskModelResolutionError.d.ts +1 -1
- package/dist/errors/runTaskModelResolutionError.d.ts.map +1 -1
- package/dist/errors/runTaskModelResolutionError.js +17 -3
- package/dist/errors/runTaskModelResolutionError.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/invocation/resolveProfileInvocationRouting.d.ts.map +1 -1
- package/dist/invocation/resolveProfileInvocationRouting.js +6 -6
- package/dist/invocation/resolveProfileInvocationRouting.js.map +1 -1
- package/dist/strategies/direct-execution-strategy.d.ts.map +1 -1
- package/dist/strategies/direct-execution-strategy.js +3 -16
- package/dist/strategies/direct-execution-strategy.js.map +1 -1
- package/dist/utils/aiProfileModelFormat.d.ts +21 -4
- package/dist/utils/aiProfileModelFormat.d.ts.map +1 -1
- package/dist/utils/aiProfileModelFormat.js +73 -28
- package/dist/utils/aiProfileModelFormat.js.map +1 -1
- package/dist/utils/prepareMainSkillModelConfigForInvoke.d.ts +12 -0
- package/dist/utils/prepareMainSkillModelConfigForInvoke.d.ts.map +1 -0
- package/dist/utils/prepareMainSkillModelConfigForInvoke.js +78 -0
- package/dist/utils/prepareMainSkillModelConfigForInvoke.js.map +1 -0
- package/dist/utils/resolveAiProfileModel.d.ts +2 -2
- package/dist/utils/resolveAiProfileModel.d.ts.map +1 -1
- package/dist/utils/resolveAiProfileModel.js +19 -15
- package/dist/utils/resolveAiProfileModel.js.map +1 -1
- package/dist/utils/resolveRunTaskModelReferences.d.ts +2 -2
- package/dist/utils/resolveRunTaskModelReferences.d.ts.map +1 -1
- package/dist/utils/resolveRunTaskModelReferences.js +120 -178
- package/dist/utils/resolveRunTaskModelReferences.js.map +1 -1
- package/dist/utils/routeModelConfigSlots.d.ts +3 -1
- package/dist/utils/routeModelConfigSlots.d.ts.map +1 -1
- package/dist/utils/routeModelConfigSlots.js +2 -1
- package/dist/utils/routeModelConfigSlots.js.map +1 -1
- package/dist/validation/helpers.d.ts.map +1 -1
- package/dist/validation/helpers.js +37 -7
- package/dist/validation/helpers.js.map +1 -1
- package/documenations/studio-skill-invoke-preflight.md +298 -0
- package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md +3 -3
- package/package.json +3 -4
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# Studio skill invoke preflight (suggested design)
|
|
2
|
+
|
|
3
|
+
**Status:** Reference for **studio / skills-manager** products — **not** implemented by `@exellix/ai-tasks` or `@exellix/ai-skills` at runtime.
|
|
4
|
+
|
|
5
|
+
**Intent:** This document captures functionality that **used to ship inside the runtime stack** (through `@exellix/ai-tasks` 8.5.x and older `@exellix/ai-skills` exports) and describes a **suggested** way to provide it in studio. Studio teams may follow this design, adapt it, or replace it entirely. Nothing here is required for `runTask()` or `runSkill()` to work.
|
|
6
|
+
|
|
7
|
+
**Related (runtime, still supported):**
|
|
8
|
+
|
|
9
|
+
| Package | Runtime preflight (orchestrator / engine) |
|
|
10
|
+
|---------|---------------------------------------------|
|
|
11
|
+
| `@exellix/ai-tasks` | `validateRunTaskConfig`, `validateRunTaskInvoke`, `analyzeExpectedRunTaskInput`, `checkExpectedInputAgainstRequest` |
|
|
12
|
+
| `@exellix/ai-skills` | `validateModelConfigForInvoke`, `diagnoseSkillInCatalog`, Catalox template fetch helpers |
|
|
13
|
+
| `@exellix/ai-skills` | [`SKILLS_MANAGER_CLIENT_GUIDE.md`](../../ai-skills/docs/SKILLS_MANAGER_CLIENT_GUIDE.md) — responsibility split |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Why this moved out of runtime
|
|
18
|
+
|
|
19
|
+
| Layer | Should do | Should not do |
|
|
20
|
+
|-------|-----------|----------------|
|
|
21
|
+
| **Runtime** (`ai-tasks`, `ai-skills`, `xynthesis`) | Execute hops; minimal shape validation; Optimixer budgets; gateway/funcx invoke | Authoring “Run analysis”, invoke-packet UI, FuncX wiring for studio |
|
|
22
|
+
| **Studio / skills-manager** | Preflight before save or before “Run task”; template/smartInput review; optional LLM critique | Replace `runSkill` or bypass Optimixer on invoke |
|
|
23
|
+
|
|
24
|
+
From **`@exellix/ai-tasks` 8.6.0** and **`@exellix/ai-skills` ≥ 6.1.0**, the following were **removed from runtime exports** (see [CHANGELOG](../CHANGELOG.md)).
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Removed from `@exellix/ai-tasks` (8.6.0)
|
|
29
|
+
|
|
30
|
+
### Functions
|
|
31
|
+
|
|
32
|
+
| Removed export | Former role |
|
|
33
|
+
|----------------|-------------|
|
|
34
|
+
| **`analyzeRunTaskRequest(catalox, request, options?)`** | Ran skill-level preflight on `pickRunSkillRequestFields(request)`, then merged **`validateRunTaskConfig`** findings into the same report shape. |
|
|
35
|
+
| Re-export **`buildSkillRequestAnalysisPacket`** | Built sanitized gateway invoke packet + deterministic findings for a flat **`RunSkillRequest`**. |
|
|
36
|
+
| Re-export **`formatSkillRequestAnalysisMarkdown`** | Rendered **`SkillRequestAnalysisReport`** as markdown for studio UI / logs. |
|
|
37
|
+
| Re-export **`FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID`** | Constant: `"ai-skills/analyze-gateway-invoke-request"`. |
|
|
38
|
+
| Re-export **`FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY`** | Constant: `"4.3.3"` (minimum FuncX with analyzer seed). |
|
|
39
|
+
|
|
40
|
+
### Types (re-exports removed)
|
|
41
|
+
|
|
42
|
+
`AnalyzeSkillRequestOptions`, `AnalyzeSkillRequestResult`, `BuildSkillRequestAnalysisPacketResult`, `SkillRequestAnalysisCategory`, `SkillRequestAnalysisFinding`, `SkillRequestAnalysisReport`, `SkillRequestAnalysisSeverity`, `SkillRequestAnalysisVerdict`, `AnalyzeGatewayInvokeRequestPacket`.
|
|
43
|
+
|
|
44
|
+
### Removed from `@exellix/ai-skills` (≥ 6.1.0 public API)
|
|
45
|
+
|
|
46
|
+
The engine no longer exports **`analyzeSkillRequest`**, **`ExellixSkillsClient.analyzeSkillRequest`**, packet builders, or FuncX constants. Historical implementation lived under `dist/analysis/` in older builds; **source was removed** from the engine package intentionally.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## What the former preflight did (behavior reference)
|
|
51
|
+
|
|
52
|
+
This section describes the **old runtime behavior** so studio can reproduce equivalent UX if desired.
|
|
53
|
+
|
|
54
|
+
### End-to-end flow (historical)
|
|
55
|
+
|
|
56
|
+
```mermaid
|
|
57
|
+
sequenceDiagram
|
|
58
|
+
participant Studio as Studio / manager
|
|
59
|
+
participant Preflight as analyzeSkillRequest / analyzeRunTaskRequest
|
|
60
|
+
participant Catalox as Catalox ai-skills catalog
|
|
61
|
+
participant FuncX as FuncX optional LLM review
|
|
62
|
+
|
|
63
|
+
Studio->>Preflight: RunSkillRequest or RunTaskRequest slice
|
|
64
|
+
Preflight->>Catalox: fetchSkillTemplatesFromCatalox (unless templateOverride)
|
|
65
|
+
Preflight->>Preflight: buildSkillGatewayInvokePayload (no gateway.invoke)
|
|
66
|
+
Preflight->>Preflight: Rendrix template render → workingMemory
|
|
67
|
+
Preflight->>Preflight: collectDeterministicFindings
|
|
68
|
+
Preflight-->>Studio: report, markdownReport, gatewayPayload preview
|
|
69
|
+
opt Optional LLM review
|
|
70
|
+
Studio->>FuncX: analyze-gateway-invoke-request(packet)
|
|
71
|
+
FuncX-->>Studio: enriched narrative / findings
|
|
72
|
+
end
|
|
73
|
+
Studio->>Runtime: runTask / runSkill when satisfied
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Important:** Preflight never called **`gateway.invoke()`** or **`runSkill()`**. Optimixer **`maxTokens`** were typically **not** on the preview payload (engine merges Optimixer output immediately before invoke).
|
|
77
|
+
|
|
78
|
+
### `analyzeSkillRequest` (flat `RunSkillRequest`)
|
|
79
|
+
|
|
80
|
+
1. **`buildSkillRequestAnalysisPacket`**
|
|
81
|
+
- Load templates from Catalox (or use `templateOverride`).
|
|
82
|
+
- Build **`buildSkillGatewayInvokePayload`** with resolved `jobId` / `taskId`.
|
|
83
|
+
- Render templates with Rendrix (`renderSkillTemplatesWithRendrix`) using the same working memory as invoke.
|
|
84
|
+
- Run **`collectDeterministicFindings`** (see catalog below).
|
|
85
|
+
- Sanitize packet fields (truncate templates, strip secrets) for FuncX / UI.
|
|
86
|
+
2. Assemble **`SkillRequestAnalysisReport`** from findings (verdict, assessments, expected response shape hints).
|
|
87
|
+
3. **`formatSkillRequestAnalysisMarkdown`** for display.
|
|
88
|
+
4. Optional **`strictDeterministic`**: throw if any finding has `severity: "error"`.
|
|
89
|
+
|
|
90
|
+
**Options (`AnalyzeSkillRequestOptions`):**
|
|
91
|
+
|
|
92
|
+
| Option | Default | Purpose |
|
|
93
|
+
|--------|---------|---------|
|
|
94
|
+
| `templateOverride` | — | Skip Catalox fetch; use supplied instructions/prompt strings. |
|
|
95
|
+
| `maxTemplateCharsInPacket` | `12000` | Truncate template bodies in the analyze packet. |
|
|
96
|
+
| `strictDeterministic` | `false` | Fail fast on error-level deterministic findings. |
|
|
97
|
+
| `cataloxAppId` | env default | Catalox app context for catalog fetch. |
|
|
98
|
+
|
|
99
|
+
**Result (`AnalyzeSkillRequestResult`):** `functionId`, `skillKey`, `verdict`, `confidence`, `report`, `markdownReport`, `deterministicFindings`, optional `gatewayPayload`.
|
|
100
|
+
|
|
101
|
+
### `analyzeRunTaskRequest` (orchestrator `RunTaskRequest`)
|
|
102
|
+
|
|
103
|
+
Same as **`analyzeSkillRequest`** on **`pickRunSkillRequestFields(request)`**, plus:
|
|
104
|
+
|
|
105
|
+
- **`includeAiTasksConfigValidation`** (default `true`): merge **`validateRunTaskConfig`** issues as additional findings (`AI_TASKS_<code>` ids), mapped to categories (`smartInput`, `modelConfig`, `activix`, `template`, `executionMemory`, `catalog`).
|
|
106
|
+
- Recompute merged **`verdict`** from skill + config validation.
|
|
107
|
+
|
|
108
|
+
**Replacement at runtime today:** call **`validateRunTaskConfig(request)`** (and optionally **`validateRunTaskInvoke`**) directly from `@exellix/ai-tasks` — without skill template packet preview.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Suggested studio requirements
|
|
113
|
+
|
|
114
|
+
Studio **may** implement some or all of the following. Treat as a checklist, not a contract.
|
|
115
|
+
|
|
116
|
+
### Functional
|
|
117
|
+
|
|
118
|
+
1. **Catalog** — Skill exists in Catalox **`ai-skills`**, published/runnable; surface catalog status in UI.
|
|
119
|
+
2. **Activix linkage** — Non-empty `agentId`, `jobTypeId`, `taskTypeId`; warn on missing `jobId` / `taskId`.
|
|
120
|
+
3. **Model** — After `@exellix/ai-tasks` **`resolveInvocationPlan`**, wire model is concrete (not a bare profile alias); warn if caller set `maxTokens` on `modelConfig` (Optimixer-owned at invoke).
|
|
121
|
+
4. **Templates** — Fetch same bodies as `runSkill`; render with Rendrix; flag unresolved `{{tokens}}` and large payloads.
|
|
122
|
+
5. **Smart input** — Paths resolve against merged working memory; required paths fail preflight.
|
|
123
|
+
6. **Output contract** — Contract fields reflected in template headings or FlexMD hints.
|
|
124
|
+
7. **Invoke packet preview** — Sanitized view of what **`buildSkillGatewayInvokePayload`** would send (no secrets, truncated bodies).
|
|
125
|
+
8. **RunTask slice** — When analyzing a graph node, apply orchestrator validation (`validateRunTaskConfig`) in addition to skill checks.
|
|
126
|
+
9. **Optional FuncX review** — LLM narrative / deeper critique via **`ai-skills/analyze-gateway-invoke-request`** (does not replace deterministic checks).
|
|
127
|
+
|
|
128
|
+
### Non-functional
|
|
129
|
+
|
|
130
|
+
- **No live LLM invoke** for deterministic preflight (FuncX optional step is separate).
|
|
131
|
+
- **No duplicate Optimixer predict** required for preflight (note in UI that invoke budget is applied at runtime).
|
|
132
|
+
- **Stable finding ids** for studio filtering (see catalog below).
|
|
133
|
+
- **Markdown + structured report** for authoring UI.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Suggested API surface (studio-owned)
|
|
138
|
+
|
|
139
|
+
Studio can define its own module names. This mirrors the **former** public types for migration.
|
|
140
|
+
|
|
141
|
+
### Verdict and findings
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
type SkillRequestAnalysisSeverity = "error" | "warning" | "info";
|
|
145
|
+
type SkillRequestAnalysisVerdict = "ok" | "warnings" | "errors";
|
|
146
|
+
|
|
147
|
+
type SkillRequestAnalysisCategory =
|
|
148
|
+
| "activix"
|
|
149
|
+
| "session"
|
|
150
|
+
| "workingMemory"
|
|
151
|
+
| "smartInput"
|
|
152
|
+
| "template"
|
|
153
|
+
| "outputContract"
|
|
154
|
+
| "modelConfig"
|
|
155
|
+
| "executionMemory"
|
|
156
|
+
| "catalog"
|
|
157
|
+
| "prediction"
|
|
158
|
+
| "runtime";
|
|
159
|
+
|
|
160
|
+
interface SkillRequestAnalysisFinding {
|
|
161
|
+
id: string;
|
|
162
|
+
severity: SkillRequestAnalysisSeverity;
|
|
163
|
+
category: SkillRequestAnalysisCategory;
|
|
164
|
+
path?: string;
|
|
165
|
+
message: string;
|
|
166
|
+
suggestion?: string;
|
|
167
|
+
evidence?: string;
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Verdict rule (suggested):** any `error` → `"errors"`; else any `warning` → `"warnings"`; else `"ok"`.
|
|
172
|
+
|
|
173
|
+
### Analyze packet (for FuncX or internal UI)
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
interface AnalyzeGatewayInvokeRequestPacket {
|
|
177
|
+
functionId: string; // same as skillKey / actionRef
|
|
178
|
+
aiRequestId?: string;
|
|
179
|
+
jobId?: string;
|
|
180
|
+
taskId?: string;
|
|
181
|
+
agentId?: string;
|
|
182
|
+
jobTypeId?: string;
|
|
183
|
+
taskTypeId?: string;
|
|
184
|
+
gatewayPayload: Record<string, unknown>; // sanitized
|
|
185
|
+
runSkillRequest?: Record<string, unknown>; // sanitized
|
|
186
|
+
templates?: {
|
|
187
|
+
raw?: { instructions?: string; prompt?: string };
|
|
188
|
+
rendered?: { instructions?: string; prompt?: string };
|
|
189
|
+
catalogStatus?: string;
|
|
190
|
+
};
|
|
191
|
+
outputContract?: OutputContract;
|
|
192
|
+
resolvedOutputFields?: string[];
|
|
193
|
+
deterministicFindings?: SkillRequestAnalysisFinding[];
|
|
194
|
+
flexMdFrameHint?: string;
|
|
195
|
+
templateTokenInventory?: string[];
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Use **`functionId`** on FuncX packets (not deprecated top-level `skillKey` alone).
|
|
200
|
+
|
|
201
|
+
### FuncX (optional LLM step)
|
|
202
|
+
|
|
203
|
+
| Constant (historical name) | Value |
|
|
204
|
+
|----------------------------|--------|
|
|
205
|
+
| FuncX function id | `ai-skills-analyze-gateway-invoke-request` |
|
|
206
|
+
| Slash alias | `ai-skills/analyze-gateway-invoke-request` |
|
|
207
|
+
| Suggested minimum `@x12i/funcx` | `4.3.3` (ships analyzer seed) |
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
import { run } from "@x12i/funcx/functions";
|
|
211
|
+
|
|
212
|
+
const report = await run("ai-skills/analyze-gateway-invoke-request", packet, {
|
|
213
|
+
mode: "strong",
|
|
214
|
+
validateOutput: true,
|
|
215
|
+
includeUsage: false,
|
|
216
|
+
});
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Seed location: `@x12i/funcx` → `content-seed/functions/ai-skills/analyze-gateway-invoke-request/`.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Deterministic finding catalog (historical ids)
|
|
224
|
+
|
|
225
|
+
Studio implementations **may** emit the same ids for continuity with older UIs.
|
|
226
|
+
|
|
227
|
+
| Id | Severity | Category | Trigger (summary) |
|
|
228
|
+
|----|----------|----------|-------------------|
|
|
229
|
+
| `ACTIVIX_MANDATORY_FIELDS_MISSING` | error | activix | Missing agentId / jobTypeId / taskTypeId |
|
|
230
|
+
| `JOB_ID_MISSING` | warning | activix | Empty jobId on request and identity |
|
|
231
|
+
| `TASK_ID_MISSING` | warning | activix | Empty taskId on request and identity |
|
|
232
|
+
| `SESSION_ID_MISMATCH` | error | session | `sessionId` vs `identity.sessionId` disagree |
|
|
233
|
+
| `MODEL_CONFIG_MISSING` | error | modelConfig | No wire `model` / `modelId` on modelConfig |
|
|
234
|
+
| `CALLER_MAX_TOKENS_IGNORED` | warning | modelConfig | Caller sent maxTokens (Optimixer owns budget) |
|
|
235
|
+
| `AI_ENGINE_ID_UNKNOWN` | error | catalog | Invalid / unknown aiEngineId |
|
|
236
|
+
| `INPUT_EMPTY` | warning | workingMemory | Empty `input` |
|
|
237
|
+
| `SMART_INPUT_PATH_EMPTY` | warning | smartInput | Empty path entry |
|
|
238
|
+
| `SMART_INPUT_PATH_MISSING` | error | smartInput | Required path not in workingMemory |
|
|
239
|
+
| `SMART_INPUT_PATH_EMPTY_VALUE` | warning | smartInput | Optional path empty |
|
|
240
|
+
| `TEMPLATE_RENDER_FAILED` | error | template | Rendrix render threw |
|
|
241
|
+
| `TEMPLATE_TOKEN_UNRESOLVED` | warning | template | `{{token}}` left after render |
|
|
242
|
+
| `OUTPUT_CONTRACT_FIELD_NOT_IN_TEMPLATE` | warning | outputContract | Contract field missing from template sections |
|
|
243
|
+
| `TEMPLATE_TOKEN_LIKELY_MISSING` | info | template | Template references path not in workingMemory |
|
|
244
|
+
| `TEMPLATE_PAYLOAD_LARGE` | warning | template | Combined template chars over threshold (~80k default) |
|
|
245
|
+
| `SKILL_KEY_MISSING` | error | catalog | Empty skillKey |
|
|
246
|
+
| `AI_TASKS_<code>` | varies | varies | From `validateRunTaskConfig` when analyzing RunTaskRequest |
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Suggested implementation building blocks
|
|
251
|
+
|
|
252
|
+
Reuse runtime packages; do **not** fork invoke logic into studio long-term.
|
|
253
|
+
|
|
254
|
+
| Step | Suggested reuse |
|
|
255
|
+
|------|-----------------|
|
|
256
|
+
| Resolve wire model | `@exellix/ai-tasks` → `resolveInvocationPlan` / slot helpers |
|
|
257
|
+
| Orchestrator shape | `@exellix/ai-tasks` → `validateRunTaskConfig`, `buildRunTaskValidationContext` |
|
|
258
|
+
| Fetch templates | `@exellix/ai-skills` → `fetchSkillTemplatesFromCatalox`, `defaultAiSkillsCataloxContext` |
|
|
259
|
+
| Build invoke shape | Mirror `@exellix/ai-skills` → `buildSkillGatewayInvokePayload` (same fields as `runSkill`) |
|
|
260
|
+
| Template render | `@exellix/ai-skills` / Rendrix path used by `renderSkillTemplatesWithRendrix` |
|
|
261
|
+
| Wire model check | `@exellix/ai-skills` → `assessModelConfigForInvoke` |
|
|
262
|
+
| Smart input / tokens | `@exellix/ai-tasks` re-exports Rendrix helpers (`renderSmartInput`, `analyzeTemplateResolution`, …) |
|
|
263
|
+
| Execute | `@exellix/ai-skills` → `runSkill` only after preflight passes |
|
|
264
|
+
|
|
265
|
+
**Reference implementation (historical):** `@exellix/ai-skills` `dist/analysis/` in releases **before** 6.1.0 source removal — useful as a migration guide, not a supported import path.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Suggested studio UX flow
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
Graph / studio plan
|
|
273
|
+
→ @exellix/ai-tasks (resolveInvocationPlan, validateRunTaskConfig)
|
|
274
|
+
→ Studio preflight service (deterministic packet + findings)
|
|
275
|
+
→ [optional] FuncX ai-skills/analyze-gateway-invoke-request
|
|
276
|
+
→ User approves / fixes
|
|
277
|
+
→ @exellix/ai-skills runSkill() (Optimixer merge + gateway.invoke)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Migration notes (8.5.x → 8.6.0+)
|
|
283
|
+
|
|
284
|
+
| If you used… | Suggested replacement |
|
|
285
|
+
|--------------|----------------------|
|
|
286
|
+
| `analyzeRunTaskRequest` from `@exellix/ai-tasks` | Studio service + `validateRunTaskConfig`; optional port of old analysis module |
|
|
287
|
+
| `buildSkillRequestAnalysisPacket` re-export | Implement in studio (see building blocks) or copy historical `dist/analysis` |
|
|
288
|
+
| `formatSkillRequestAnalysisMarkdown` re-export | Studio formatter from `SkillRequestAnalysisReport` |
|
|
289
|
+
| `ExellixSkillsClient.analyzeSkillRequest` | Studio service; engine no longer exposes this |
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Out of scope for this preflight
|
|
294
|
+
|
|
295
|
+
- PRE/POST xynthesis hops (use xynthesis-specific studio tools if needed).
|
|
296
|
+
- Live LLM execution tests (`test:live`, gateway smoke).
|
|
297
|
+
- Replacing Optimixer sizing or max-token retry (runtime owns retry via `retryPrediction`).
|
|
298
|
+
- Mandatory enforcement at `runTask()` — runtime validation remains minimal by design; studio may **choose** to block “Run” in UI only.
|
package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md
CHANGED
|
@@ -114,10 +114,10 @@ The open item **“`outputExpectation` passthrough + xynthesis-style auto-sizer
|
|
|
114
114
|
|
|
115
115
|
## Integration note (5.9.12 — ai-tasks)
|
|
116
116
|
|
|
117
|
-
### `analyzeSkillRequest`
|
|
117
|
+
### `analyzeSkillRequest` — studio / manager only (not runtime)
|
|
118
118
|
|
|
119
|
-
- **
|
|
120
|
-
-
|
|
119
|
+
- **`@exellix/ai-skills` ≥ 6.1.0** does not export **`analyzeSkillRequest`**, packet builders, or FuncX analyzer constants — preflight belongs in **studio / skills-manager** (see **`SKILLS_MANAGER_CLIENT_GUIDE.md`**) via **`@x12i/funcx`** (`ai-skills/analyze-gateway-invoke-request`).
|
|
120
|
+
- **`@exellix/ai-tasks`** does not re-export or wrap skill invoke analysis. Use **`validateRunTaskConfig`** / **`analyzeExpectedRunTaskInput`** for orchestrator request shape checks before **`runTask()`**. For a **suggested** studio preflight design (everything removed from runtime, requirements, former behavior), see **`@exellix/ai-tasks`** [`documenations/studio-skill-invoke-preflight.md`](../../ai-tasks/documenations/studio-skill-invoke-preflight.md).
|
|
121
121
|
|
|
122
122
|
### `testContentRegistryConnection` renamed
|
|
123
123
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/ai-tasks",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.2",
|
|
4
4
|
"description": "Task orchestration for the Exellix stack: runTask() with local handlers or LLM-backed execution, task-scoped memory/context enrichment, and executor dispatch via @exellix/ai-skills. ERC-compliant.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"node": ">=20"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@exellix/ai-skills": "^6.
|
|
63
|
+
"@exellix/ai-skills": "^6.2.1",
|
|
64
64
|
"@exellix/memorix-narrix-adapter": "^2.0.0",
|
|
65
65
|
"@exellix/narrix-adapter-chat": "^2.0.0",
|
|
66
66
|
"@exellix/narrix-adapter-docs": "^2.0.0",
|
|
@@ -72,9 +72,8 @@
|
|
|
72
72
|
"@exellix/narrix-ingest": "^2.0.0",
|
|
73
73
|
"@exellix/narrix-runner": "^2.0.0",
|
|
74
74
|
"@exellix/narrix-web-scoper": "^2.0.0",
|
|
75
|
-
"@exellix/xynthesis": "^4.4.
|
|
75
|
+
"@exellix/xynthesis": "^4.4.7",
|
|
76
76
|
"@x12i/activix": "^8.5.0",
|
|
77
|
-
"@x12i/ai-profiles": "^2.1.0",
|
|
78
77
|
"@x12i/catalox": "^5.1.3",
|
|
79
78
|
"@x12i/env": "^4.0.1",
|
|
80
79
|
"@x12i/execution-memory-manager": "^1.2.0",
|