@exellix/ai-tasks 8.6.8 → 8.7.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 CHANGED
@@ -4,6 +4,14 @@ All notable changes to `@exellix/ai-tasks` are documented here.
4
4
 
5
5
  The published **npm version** always matches **`version`** in [`package.json`](package.json). If this file skips a semver, treat [`BREAKING-CHANGES.md`](BREAKING-CHANGES.md) and [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) as the source of truth for cross-version upgrades.
6
6
 
7
+ ## [8.7.0] - 2026-06-05
8
+
9
+ ### Changed
10
+
11
+ - Bumped **`@exellix/ai-skills`** to **^6.4.0** and **`@exellix/xynthesis`** to **^4.5.0** (gateway **≥ 10.1.0**, **`@x12i/ai-profiles` ^3.0.0**, **`@x12i/activix` ^8.6.0**).
12
+ - Added direct **`@x12i/ai-profiles` ^3.0.0** dependency so orchestrator model resolution aligns with ai-skills / xynthesis (avoids hoisted **2.1.x** from legacy narrix transitive paths).
13
+ - README stack alignment table and gateway 10.x notes updated for the new minimums.
14
+
7
15
  ## [8.6.3] - 2026-06-05
8
16
 
9
17
  ### Fixed (CR-13)
package/README.md CHANGED
@@ -10,12 +10,12 @@ Private Git/npm package for executing **tasks** using the Exellix execution stac
10
10
 
11
11
  | Package | Role in `runTask` | Minimum (this repo) |
12
12
  |---------|-------------------|---------------------|
13
- | `@x12i/ai-profiles` | Profile/choice → wire model (`catalogLane` required on resolve) | **2.1.1** |
14
- | `@exellix/xynthesis` | PRE synthesis, POST audit/polish, scoping, utilities, execution-strategy sidekick actions (`executeXynthesisAction` via `@x12i/funcx`) | **≥ 4.4.9** |
15
- | `@exellix/ai-skills` | MAIN `runSkill` (Optimixer caps, `ModelConfig.reasoningEffort`, gateway invoke) | **≥ 6.3.7** |
16
- | `@x12i/ai-gateway` | LLM wire for MAIN skill (transitive via ai-skills) | **≥ 10.0.6** |
13
+ | `@x12i/ai-profiles` | Profile/choice → wire model (`catalogLane` required on resolve) | **3.0.0** |
14
+ | `@exellix/xynthesis` | PRE synthesis, POST audit/polish, scoping, utilities, execution-strategy sidekick actions (`executeXynthesisAction` via `@x12i/funcx`) | **≥ 4.5.0** |
15
+ | `@exellix/ai-skills` | MAIN `runSkill` (Optimixer caps, `ModelConfig.reasoningEffort`, gateway invoke) | **≥ 6.4.0** |
16
+ | `@x12i/ai-gateway` | LLM wire for MAIN skill (transitive via ai-skills) | **≥ 10.1.0** |
17
17
 
18
- **Gateway 10.x (via `@exellix/ai-skills` ≥ 6.3.7):** The gateway **owns billing** — read **`response.metadata.costUsd`**, **`costStatus`**, and token usage only; do **not** post-price with `@x12i/ai-tools`. Every invoke requires explicit **`model`** and **`maxTokens`** (Optimixer supplies `maxTokens` on MAIN before `gateway.invoke()`). Removed upstream: default model, flex-md token auto-fill, packaged instruction blocks, and the 500 ms between-call rate limit. On Activix rows, prefer root **`cost`** / **`costUsd`** and **`outer.cost`** over **`outer.metadata`** for billing. Failed invokes expose **`error.metadata`** (`GatewayInvokeRejectionMetadata`). Full migration rules: **[UPGRADING_AI_GATEWAY_10.md](../ai-skills/docs/UPGRADING_AI_GATEWAY_10.md)** in `@exellix/ai-skills`.
18
+ **Gateway 10.x (via `@exellix/ai-skills` ≥ 6.4.0):** The gateway **owns billing** — read **`response.metadata.costUsd`**, **`costStatus`**, and token usage only; do **not** post-price with `@x12i/ai-tools`. Every invoke requires explicit **`model`** and **`maxTokens`** (Optimixer supplies `maxTokens` on MAIN before `gateway.invoke()`). Removed upstream: default model, flex-md token auto-fill, packaged instruction blocks, and the 500 ms between-call rate limit. On Activix rows, prefer root **`cost`** / **`costUsd`** and **`outer.cost`** over **`outer.metadata`** for billing. Failed invokes expose **`error.metadata`** (`GatewayInvokeRejectionMetadata`). Full migration rules: **[UPGRADING_AI_GATEWAY_10.md](../ai-skills/docs/UPGRADING_AI_GATEWAY_10.md)** in `@exellix/ai-skills`.
19
19
 
20
20
  **Stored `modelConfig` slots** must use explicit **ai-profiles** **`profile/choice`** keys (`cheap/default`, `pro/default`, …). Bare profile names (`cheap`, `pro`), `profile@choice`, registry shortcuts, and legacy tier aliases (`weak` / `strong`) are **rejected** at validation — not expanded at invoke.
21
21
 
@@ -1060,8 +1060,8 @@ Orchestrators send **model** + **sampling** + **`reasoningEffort`** + (for xynth
1060
1060
 
1061
1061
  | Phase | Package | Caller sends | Package owns |
1062
1062
  |-------|---------|--------------|--------------|
1063
- | **MAIN** | `@exellix/ai-skills` ≥6.3 | `modelConfig` → `{ model, temperature, topP, reasoningEffort, … }` | Optimixer + Catalox skill catalog (`maxTokens` on `ModelConfig` is rejected); gateway **`@x12i/ai-gateway` ≥10.0.6** supplies wire `maxTokens` and authoritative **`costUsd`** / **`costStatus`** on invoke metadata; **one automatic re-invoke** when output hits token limit and Optimixer returns `retryPrediction` |
1064
- | **PRE / POST / scoping / utility** | `@exellix/xynthesis` ≥4.4 | `outputExpectation` (required on every hop), optional `reasoningEffort`, `temperature`, `topP` | `resolveEffectiveMaxTokens` inside `executeXynthesisAction` (default **`@x12i/funcx`** invoker); authoritative billing from funcx/gateway engines — xynthesis is pass-through only; **same one-shot max-token retry** via Optimixer `retryPrediction` |
1063
+ | **MAIN** | `@exellix/ai-skills` ≥6.4 | `modelConfig` → `{ model, temperature, topP, reasoningEffort, … }` | Optimixer + Catalox skill catalog (`maxTokens` on `ModelConfig` is rejected); gateway **`@x12i/ai-gateway` ≥10.1** supplies wire `maxTokens` and authoritative **`costUsd`** / **`costStatus`** on invoke metadata; **one automatic re-invoke** when output hits token limit and Optimixer returns `retryPrediction` |
1064
+ | **PRE / POST / scoping / utility** | `@exellix/xynthesis` ≥4.5 | `outputExpectation` (required on every hop), optional `reasoningEffort`, `temperature`, `topP` | `resolveEffectiveMaxTokens` inside `executeXynthesisAction` (default **`@x12i/funcx`** invoker); authoritative billing from funcx/gateway engines — xynthesis is pass-through only; **same one-shot max-token retry** via Optimixer `retryPrediction` |
1065
1065
 
1066
1066
  **Xynthesis `outputExpectation`** is sizing/density **intent** for Optimixer — not a literal token count. ai-tasks resolves a per-stage default when the caller omits it (`resolveOutputExpectation` / `resolveLlmOutputExpectationForXynthesis`).
1067
1067
 
@@ -1245,9 +1245,9 @@ type LlmCallObservation =
1245
1245
  };
1246
1246
  ```
1247
1247
 
1248
- **`InvokeAttemptSummary`** (xynthesis ≥ 4.4) carries `{ jobId, taskId, modelRequested, modelResolved, maxTokensFromCaller, maxTokensEffective, modelUsedFromProvider, usage, routing, costUsd, costStatus, traceKind, executionMetadata }`. USD cost is **authoritative from `@x12i/funcx`** — xynthesis does not calculate pricing locally.
1248
+ **`InvokeAttemptSummary`** (xynthesis ≥ 4.5) carries `{ jobId, taskId, modelRequested, modelResolved, maxTokensFromCaller, maxTokensEffective, modelUsedFromProvider, usage, routing, costUsd, costStatus, traceKind, executionMetadata }`. USD cost is **authoritative from `@x12i/funcx`** — xynthesis does not calculate pricing locally.
1249
1249
 
1250
- **`RunSkillDiagnostics`** (ai-skills ≥ 6.3) carries `{ trace: { step, timing, routing, usage, costUsd, costStatus, modelUsed, attempts[], rawProviderPayload?, invokeRequest? }, ... }`. USD cost is **authoritative from `@x12i/ai-gateway` ≥10.0.6** — ai-skills normalizes gateway `metadata` only (`mapGatewayInvokeToTrace`, `traceToDiagnostics` re-exported from `@exellix/ai-tasks`). Gateway `costStatus: "priced"` is represented as `costUsd`; `"unpriced"` surfaces as `costStatus: "unpriced"`. For non-trace MAIN failures, read **`(error as Error & { metadata?: GatewayInvokeRejectionMetadata }).metadata`** (re-exported from `@exellix/ai-tasks`) — do not scrape error strings.
1250
+ **`RunSkillDiagnostics`** (ai-skills ≥ 6.4) carries `{ trace: { step, timing, routing, usage, costUsd, costStatus, modelUsed, attempts[], rawProviderPayload?, invokeRequest? }, ... }`. USD cost is **authoritative from `@x12i/ai-gateway` ≥10.1** — ai-skills normalizes gateway `metadata` only (`mapGatewayInvokeToTrace`, `traceToDiagnostics` re-exported from `@exellix/ai-tasks`). Gateway `costStatus: "priced"` is represented as `costUsd`; `"unpriced"` surfaces as `costStatus: "unpriced"`. For non-trace MAIN failures, read **`(error as Error & { metadata?: GatewayInvokeRejectionMetadata }).metadata`** (re-exported from `@exellix/ai-tasks`) — do not scrape error strings.
1251
1251
 
1252
1252
  ### Typed errors (instanceof-friendly)
1253
1253
 
@@ -2589,9 +2589,9 @@ ISC
2589
2589
 
2590
2590
  ## Related Packages
2591
2591
 
2592
- - [`@exellix/ai-skills`](https://github.com/exellix/ai-skills) — MAIN skill execution (`runSkill`, Catalox catalog, gateway invoke; **≥ 6.3.7** / gateway **≥ 10.0.6**)
2593
- - [`@exellix/xynthesis`](https://github.com/exellix/xynthesis) — PRE/POST LLM hops (`executeXynthesisAction`, sidekick actions)
2594
- - [`@x12i/ai-gateway`](https://github.com/athenices/ai-gateway) — LLM gateway for MAIN skill (transitive via ai-skills ≥6.3.7, **≥ 10.0.6**)
2592
+ - [`@exellix/ai-skills`](https://github.com/exellix/ai-skills) — MAIN skill execution (`runSkill`, Catalox catalog, gateway invoke; **≥ 6.4.0** / gateway **≥ 10.1.0**)
2593
+ - [`@exellix/xynthesis`](https://github.com/exellix/xynthesis) — PRE/POST LLM hops (`executeXynthesisAction`, sidekick actions; **≥ 4.5.0**)
2594
+ - [`@x12i/ai-gateway`](https://github.com/athenices/ai-gateway) — LLM gateway for MAIN skill (transitive via ai-skills ≥6.4, **≥ 10.1.0**)
2595
2595
  - [`@x12i/execution-memory-manager`](https://github.com/athenices/execution-memory-manager) — Memory management utilities
2596
2596
 
2597
2597
  ## Related Documentation
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Planner / optimizer via `@exellix/xynthesis` execution-strategy actions (≥ 4.4.0).
2
+ * Planner / optimizer via `@exellix/xynthesis` execution-strategy actions (≥ 4.5.0).
3
3
  */
4
4
  import { setExecutionStrategyActionInvoker } from "@exellix/xynthesis";
5
5
  import type { RunTaskModelConfig } from "../types/model-config.js";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Planner / optimizer via `@exellix/xynthesis` execution-strategy actions (≥ 4.4.0).
2
+ * Planner / optimizer via `@exellix/xynthesis` execution-strategy actions (≥ 4.5.0).
3
3
  */
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { runExecutionPlan, runExecutionEvaluateResult, setExecutionStrategyActionInvoker, resolveOutputExpectation, } from "@exellix/xynthesis";
@@ -1,5 +1,5 @@
1
1
  import type { ProfileCatalogLane, RegistrySourceMode, ResolveAIProfileOptions } from "@x12i/ai-profiles";
2
- /** Matches `@exellix/xynthesis` `XYNTHESIS_DEFAULT_CATALOG_LANE` (ai-profiles v2 text lane). */
2
+ /** Matches `@exellix/xynthesis` `XYNTHESIS_DEFAULT_CATALOG_LANE` (ai-profiles v3 text lane). */
3
3
  export declare const AI_TASKS_DEFAULT_CATALOG_LANE: "text";
4
4
  /** Matches `@exellix/xynthesis` `getXynthesisAiProfilesSource()` (honors `XYNTHESIS_AI_PROFILES_SOURCE`). */
5
5
  export declare function getAiTasksAiProfilesSource(): RegistrySourceMode;
@@ -1,7 +1,7 @@
1
1
  import { normalizeProfileSlotInput } from "../utils/aiProfileModelFormat.js";
2
2
  import { resolvePreferOpenRouterPolicy, } from "./preferOpenRouterPolicy.js";
3
3
  import { parseProfileSlot } from "./parseProfileSlot.js";
4
- /** Matches `@exellix/xynthesis` `XYNTHESIS_DEFAULT_CATALOG_LANE` (ai-profiles v2 text lane). */
4
+ /** Matches `@exellix/xynthesis` `XYNTHESIS_DEFAULT_CATALOG_LANE` (ai-profiles v3 text lane). */
5
5
  export const AI_TASKS_DEFAULT_CATALOG_LANE = "text";
6
6
  /** Matches `@exellix/xynthesis` `getXynthesisAiProfilesSource()` (honors `XYNTHESIS_AI_PROFILES_SOURCE`). */
7
7
  export function getAiTasksAiProfilesSource() {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * AI-driven planning of explicit web-scope questions (Studio → `narrix.webScopeQuestions`).
3
- * Default path: xynthesis `plan-web-scope-questions` (≥ `@exellix/xynthesis` 4.4.0).
3
+ * Default path: xynthesis `plan-web-scope-questions` (≥ `@exellix/xynthesis` 4.5.0).
4
4
  */
5
5
  import { setPlanWebScopeQuestionsActionInvoker } from "@exellix/xynthesis";
6
6
  export { setPlanWebScopeQuestionsActionInvoker };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * AI-driven planning of explicit web-scope questions (Studio → `narrix.webScopeQuestions`).
3
- * Default path: xynthesis `plan-web-scope-questions` (≥ `@exellix/xynthesis` 4.4.0).
3
+ * Default path: xynthesis `plan-web-scope-questions` (≥ `@exellix/xynthesis` 4.5.0).
4
4
  */
5
5
  import { randomUUID } from "node:crypto";
6
6
  import { runPlanWebScopeQuestionsAction, setPlanWebScopeQuestionsActionInvoker, resolveOutputExpectation, } from "@exellix/xynthesis";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exellix/ai-tasks",
3
- "version": "8.6.8",
3
+ "version": "8.7.0",
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.3.7",
63
+ "@exellix/ai-skills": "^6.4.0",
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,12 +72,14 @@
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.9",
76
- "@x12i/activix": "^8.5.0",
75
+ "@exellix/xynthesis": "^4.5.0",
76
+ "@x12i/activix": "^8.6.0",
77
+ "@x12i/ai-profiles": "^3.0.0",
77
78
  "@x12i/catalox": "^5.1.3",
78
79
  "@x12i/env": "^4.0.1",
79
80
  "@x12i/execution-memory-manager": "^1.2.0",
80
81
  "@x12i/logxer": "^4.6.0",
82
+ "@x12i/optimixer": "^3.4.0",
81
83
  "@x12i/rendrix": "^4.3.0",
82
84
  "@x12i/search-adapter": "^1.5.1",
83
85
  "handlebars": "^4.7.8",