@exellix/ai-tasks 8.6.5 → 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
@@ -1,22 +1,25 @@
1
1
  # @exellix/ai-tasks
2
2
 
3
- Private Git/npm package for executing **tasks** using the Woreces execution stack.
3
+ Private Git/npm package for executing **tasks** using the Exellix execution stack (`@exellix/ai-tasks` orchestrates `@exellix/ai-skills` MAIN + `@exellix/xynthesis` PRE/POST).
4
4
 
5
- **Breaking — `executionStrategies` (required):** Every `runTask` request must include **`executionStrategies`**: an array of FuncX MAIN wrappers or **`[]`** for plain gateway MAIN. The old **`executionStrategyKey`** field is removed. See [BREAKING-CHANGES.md](BREAKING-CHANGES.md) and [RUNTASK_REQUEST.md](RUNTASK_REQUEST.md). Supported MAIN execution is exactly: **direct** via **`executionStrategies: []`**, **planner** before MAIN, **optimizer** after MAIN, or planner + optimizer together. Default FuncX function ids (generic envelope via **`run()`**, **`@x12i/funcx` 4.2.0** recommended): **`execution/plan`**, **`execution/evaluate-result`** (overridable via each row’s `args.functionId` when the alternate implementation uses the **same** envelope). Planner/optimizer responses are normalized with **`getRunJsonResult`** from `@x12i/funcx/functions` (also re-exported from this package as **`unwrapFuncxRunValue`** → **`getRunJsonResult`**).
5
+ **Breaking — `executionStrategies` (required):** Every `runTask` request must include **`executionStrategies`**: an array of MAIN strategy invocations or **`[]`** for plain gateway MAIN. The old **`executionStrategyKey`** field is removed. See [BREAKING-CHANGES.md](BREAKING-CHANGES.md) and [RUNTASK_REQUEST.md](RUNTASK_REQUEST.md). Supported MAIN execution is exactly: **direct** via **`executionStrategies: []`**, **planner** before MAIN, **optimizer** after MAIN, or planner + optimizer together. **8.5+:** planner and optimizer run via **`@exellix/xynthesis`** sidekick actions (`execution-plan`, `execution-evaluate-result`) not direct FuncX `run()` from ai-tasks. Catalog rows use `runtimeKind: "xynthesis-action"` and `defaultSidekickAction`.
6
6
 
7
7
  **Breaking — 8.4+ LLM invoke contract (no legacy):** Every `runTask` requires **`modelConfig.preActionModel`**, **`modelConfig.skillModel`**, and **`modelConfig.postActionModel`**. Do **not** send `xynthesisModel`, root `modelConfig.model`, `maxTokens`, `maxTokensCap`, or graph-era tier names (`weak` / `strong`). Token budgets are owned by **Optimixer** in `@exellix/ai-skills` (MAIN) and `@exellix/xynthesis` (PRE/POST). Send **`outputExpectation`** (xynthesis) and optional **`reasoningEffort`**, **`temperature`**, **`topP`**. See [How completion budgets work](#how-completion-budgets-work-84) and [Model profile aliases](#model-profile-aliases-x12iai-profiles).
8
8
 
9
9
  ### Stack alignment (8.4+)
10
10
 
11
- | Package | Role in `runTask` | Minimum |
12
- |---------|-------------------|---------|
13
- | `@x12i/ai-profiles` | Profile/choice → wire model (`catalogLane` required on resolve) | **2.1.0** |
14
- | `@exellix/xynthesis` | PRE synthesis, POST audit/polish, scoping, utilities (`executeXynthesisAction`) | **≥ 4.3.1** |
15
- | `@exellix/ai-skills` | MAIN `runSkill` (Optimixer caps, `ModelConfig.reasoningEffort`) | **6.0.0** |
11
+ | Package | Role in `runTask` | Minimum (this repo) |
12
+ |---------|-------------------|---------------------|
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** |
16
17
 
17
- Use explicit **ai-profiles** **`profile/choice`** keys (`cheap/default`, `pro/default`, …) or bare profile keys (`cheap`, `pro`) expanded at invoke not legacy tier aliases or removed sync helpers.
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`.
18
19
 
19
- **FuncX catalog / hosting:** Those function ids must exist in your FuncX content resolver for live **`run()`** calls see [`documenations/funcx-catalog-hosting-checklist.md`](documenations/funcx-catalog-hosting-checklist.md).
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
+
22
+ **Monorepo dev:** `npm test` syncs sibling **`xynthesis/dist`** and **`ai-skills/dist`** into `node_modules` before compile (see `scripts/ensure-xynthesis-dist.mjs` and `scripts/ensure-ai-skills-dist.mjs`).
20
23
 
21
24
  **Execution pipeline (optional):** You can use `executionPipeline` (array of pre/main/post steps) instead of a single `executionType`. PRE steps include `synthesized-context`; POST steps include `audit` (quality-gate loop) and `polish` (refinement checklist). See [BREAKING-CHANGES.md](BREAKING-CHANGES.md) for migration. When `executionPipeline` is omitted, existing `executionType` behavior is unchanged.
22
25
 
@@ -43,30 +46,30 @@ This package implements the canonical `runTask()` flow (every request carries **
43
46
  - preferred: `SynthesisConfig.synthesisMode: "markdown" | "structured"`
44
47
  - legacy-compatible: `SynthesisConfig.synthesisOutputFormat` still works.
45
48
  - Structured mode uses detected `templateCores` + resolved question, then builds clean MAIN context from validated synthesized payload.
46
- - Core discovery reads raw templates (instructions/prompt) via **`WorecesSkillsClient.resolveRawTemplate`** (templates loaded from the Catalox **`ai-skills`** catalog in `@woroces/ai-skills` 4.1+) before normal rendering; if no core directives are declared, structured synthesis is rejected as a template-definition error.
49
+ - Core discovery reads raw templates (instructions/prompt) via **`ExellixSkillsClient.resolveRawTemplate`** (templates loaded from the Catalox **`ai-skills`** catalog in `@exellix/ai-skills` 4.1+) before normal rendering; if no core directives are declared, structured synthesis is rejected as a template-definition error.
47
50
  - Raw/enriched materials (`_narrix`, memory bundle, `webContext`) remain in memory; synthesized output is also stored at **`executionMemory.synthesizedContext`** for MAIN traceability unless a PRE step opts out via **`SynthesisConfig.xynthesizedOutput.alsoWriteLegacySynthesizedContext: false`** (see [Xynthesized memory and smart input](#xynthesized-memory-and-smart-input)).
48
51
  - Optional **`RunTaskRequest.xynthesized`** holds **job-scoped**, **task-scoped**, and **execution-scoped** synthesized material for graph execution (distinct from raw memories). Optional **`smartInput`** matches **`SmartInputConfig`** from **`@exellix/ai-skills`** / Rendrix (**`paths`** as **`{ title, path, required? }[]`**). Callers may still send legacy **`paths: string[]`**; **`runTask`** validates and **normalizes** each string to **`{ title: path, path }`** before **`runSkill`**. Paths under **`xynthesized.*`** must use scope **`job`**, **`task`**, or **`execution`**; full path resolution for **`{{smartInput}}`** happens in the gateway/Rendrix stack. Optional **`smartInputRenderOptions`** is passed through like other **`RunSkillRequest`** fields.
49
52
  - Backward compatibility is preserved by default: existing flows continue unchanged unless structured mode is explicitly selected.
50
53
 
51
54
  Task responses may optionally include **`intermediateSteps`** when a task (or skill) runs multiple logical steps in one call (e.g. to-cni + enrich + triage); see [Intermediate steps (multi-step tasks)](#intermediate-steps-multi-step-tasks).
52
55
 
53
- `@exellix/ai-tasks` reuses `@woroces/ai-skills` directly (private packages; naming leakage is explicitly acceptable).
56
+ `@exellix/ai-tasks` depends on `@exellix/ai-skills` (MAIN) and `@exellix/xynthesis` (PRE/POST) and re-exports their catalog, invoke, and observability surfaces for single-package consumers.
54
57
 
55
58
  ### Gateway template rendering (v4)
56
59
 
57
- Task execution goes through **`WorecesSkillsClient.runSkill`** (or the skills client’s executor), which uses **`gateway.invoke()`** — not `invokeChat()` — so instruction, prompt, and context templates are built via **`buildMessages`**, nx-content resolution, and **`@x12i/rendrix`** `render`. The gateway rejects a top-level **`input`** field on invoke requests; **`runSkill` / `runAudit`** map caller **`input`** (and related fields) into **`workingMemory.input`** (merged with `variables`, memories, object `context`, `knowledge`) so `.prompt` templates can use **`{{input}}`**.
60
+ Task execution goes through **`ExellixSkillsClient.runSkill`** (or the skills client’s executor), which uses **`gateway.invoke()`** — not `invokeChat()` — so instruction, prompt, and context templates are built via **`buildMessages`**, nx-content resolution, and **`@x12i/rendrix`** `render`. The gateway rejects a top-level **`input`** field on invoke requests; **`runSkill` / `runAudit`** map caller **`input`** (and related fields) into **`workingMemory.input`** (merged with `variables`, memories, object `context`, `knowledge`) so `.prompt` templates can use **`{{input}}`**.
58
61
 
59
62
  On the **`runTask`** MAIN path, **`variables`** is the **job/graph bucket** forwarded **as-is** (align with **`executionMemory.jobVariables`**). **`executionMemory.taskVariables`** holds node scope. **`input`**, **`xynthesized`**, and **`smartInput`** are separate top-level fields — ai-tasks does **not** fold them into **`variables`**. Templates and Rendrix resolve **`jobVariables.*`**, **`taskVariables.*`**, **`xynthesized.*`**, and **`smartInput`** against the forwarded payload. Optional host helper **`mergeSkillTemplateVariables`** merges maps outside default MAIN.
60
63
 
61
64
  **In this package:**
62
65
 
63
66
  - **`runTask({ ... })`** accepts the same optional fields as **`RunSkillRequest`**: **`templateRenderOptions`**, **`templateTokens`**, **`smartInputRenderOptions`** (with **`smartInput`**). They are passed through unchanged to **`runSkill`** on the DIRECT / pipeline MAIN path.
64
- - **Default parser options** for all skill runs: set **`templateRendering`** on **`WorecesSkillsClientOptions`** when constructing **`WorecesSkillsClient`** (or configure **`templateRendering`** on a gateway instance you pass as **`options.gateway`**). Per-call overrides use **`templateRenderOptions`** on the request.
67
+ - **Default parser options** for all skill runs: set **`templateRendering`** on **`ExellixSkillsClientOptions`** when constructing **`ExellixSkillsClient`** (or configure **`templateRendering`** on a gateway instance you pass as **`options.gateway`**). Per-call overrides use **`templateRenderOptions`** on the request.
65
68
  - **Synthesis, audit, polish, and AI scoping** are executed via **`@exellix/xynthesis`** (and therefore inherit xynthesis behavior for retries/repair and diagnostics when enabled).
66
69
 
67
70
  | Mechanism | Where | Effect |
68
71
  |-----------|--------|--------|
69
- | **`WorecesSkillsClientOptions.templateRendering`** | Client constructor | Sets gateway defaults when this package (or your app) constructs **`AIGateway`**. If you inject **`options.gateway`**, set **`templateRendering`** on that instance. |
72
+ | **`ExellixSkillsClientOptions.templateRendering`** | Client constructor | Sets gateway defaults when this package (or your app) constructs **`AIGateway`**. If you inject **`options.gateway`**, set **`templateRendering`** on that instance. |
70
73
  | **`RunTaskRequest.templateRenderOptions`** | Per **`runTask`** | Deep-merged on gateway defaults for that invoke only. |
71
74
  | **`RunTaskRequest.templateTokens`** | Per **`runTask`** | Passed through as gateway **`templateTokens`** (highest overlay priority during render). |
72
75
 
@@ -74,7 +77,7 @@ Types **`TemplateRenderOptions`**, **`SmartInputConfig`**, **`SmartInputRenderOp
74
77
 
75
78
  **Errors:** **`TemplateResolutionError`** (or codes like **`TEMPLATE_RESOLUTION_ERROR`** / **`TEMPLATE_VARIABLE_MISSING`**) means a **required** template path was **`undefined`** after the gateway merged memory. Fix **`variables` / memories / input**, use optional fragments (**`{{path \|}}`**) in templates, or see the v4 guide for legacy **`silentMissingMustTokens`**. Template resolution failures are **not** treated as missing registry content (they do not go through **`RegistryManager.diagnose`** the same way as “content not found”).
76
79
 
77
- Full protocol (MUST vs optional tokens, **`subPathSearch`**, errors): **[GATEWAY_TEMPLATE_PROTOCOL_V4.md](https://github.com/woroces/ai-skills/blob/main/GATEWAY_TEMPLATE_PROTOCOL_V4.md)** in **`@woroces/ai-skills`**. Nx-content layout: **`@x12i/ai-gateway`** [Content Resolver — Upstream Guide](https://github.com/athenices/ai-gateway/blob/main/CONTENT_RESOLVER_UPSTREAM_GUIDE.md).
80
+ Full protocol (MUST vs optional tokens, **`subPathSearch`**, errors): **[GATEWAY_TEMPLATE_PROTOCOL_V4.md](https://github.com/exellix/ai-skills/blob/main/GATEWAY_TEMPLATE_PROTOCOL_V4.md)** in **`@exellix/ai-skills`**. Nx-content layout: **`@x12i/ai-gateway`** [Content Resolver — Upstream Guide](https://github.com/athenices/ai-gateway/blob/main/CONTENT_RESOLVER_UPSTREAM_GUIDE.md).
78
81
 
79
82
  ---
80
83
 
@@ -86,13 +89,13 @@ Full protocol (MUST vs optional tokens, **`subPathSearch`**, errors): **[GATEWAY
86
89
  npm install @exellix/ai-tasks
87
90
  ```
88
91
 
89
- **Custom gateway / advanced injection:** add `@woroces/ai-skills` and construct `WorexClientTasks` with your own client + executor.
92
+ **Custom gateway / advanced injection:** add `@exellix/ai-skills` and construct `WorexClientTasks` with your own client + executor.
90
93
 
91
94
  ```bash
92
- npm install @exellix/ai-tasks @woroces/ai-skills
95
+ npm install @exellix/ai-tasks @exellix/ai-skills
93
96
  ```
94
97
 
95
- **Bundled x12i stack (direct dependencies of this package):** `@x12i/catalox` (catalog reads / publish script), `@x12i/env` (env conventions aligned with the Woreces stack), and `@x12i/logxer` **4.4.2+** — **`createLogxer`**, **`warnCode`/`errorCode`** with shipped diagnostic catalog (`.metadata/log-diagnostics.json`), **`DebugLogAbstract`**, **`fieldEvidence`**, **`runWithLogContext`** (wired in **`runTask()`** via **`runAiTasksWithLogContext`**), and in-process **`getAiTasksJobLogs`** for debug tooling. Per-package thresholds: **`AI_TASKS_LOGS_LEVEL`**, **`ACTIVIX_LOGS_LEVEL`**. Older names `logs-gateway` and `nx-config2` are not direct dependencies here.
98
+ **Bundled x12i stack (direct dependencies of this package):** `@x12i/catalox` (catalog reads / publish script), `@x12i/env` (env conventions aligned with the Exellix stack), and `@x12i/logxer` **4.6.0+** — **`createLogxer`**, **`warnCode`/`errorCode`** with shipped diagnostic catalog (`.metadata/log-diagnostics.json`), **`DebugLogAbstract`**, **`fieldEvidence`**, **`runWithLogContext`** (wired in **`runTask()`** via **`runAiTasksWithLogContext`**), and in-process **`getAiTasksJobLogs`** for debug tooling. Per-package thresholds: **`AI_TASKS_LOGS_LEVEL`**, **`ACTIVIX_LOGS_LEVEL`**. Older names `logs-gateway` and `nx-config2` are not direct dependencies here.
96
99
 
97
100
  ### Narrix (v5+)
98
101
 
@@ -115,7 +118,7 @@ From **v5.0.0**, the local **`skills/skill.local:narrixRun`** path and **`narrix
115
118
  | **`ai-task-input-strategies`** | Optional authoring hints: `inputStrategyKey` on `RunTaskRequest` (does not drive Narrix invocation). |
116
119
  | **`execution-strategy`** | Preferred catalog for supported MAIN execution metadata: **`direct`**, **`planner`**, **`optimizer`**. |
117
120
  | **`ai-task-execution-strategies`** | Compatibility MAIN wrappers metadata catalog: same seeded rows as **`execution-strategy`**. |
118
- | **`ai-task-main-execution-wrappers`** | Compatibility MAIN FuncX wrappers catalog: same seeded rows as **`execution-strategy`**. |
121
+ | **`ai-task-main-execution-wrappers`** | Compatibility MAIN execution-strategy catalog: same seeded rows as **`execution-strategy`**. |
119
122
  | **`ai-task-narrix-modes`** | Narrix invocation: `narrixMode` (`off` \| `preprocessor` \| `handler`). |
120
123
 
121
124
  Runtime **does not require** Catalox to be configured for these keys. Catalogs seed console metadata, and `execution-strategy` rows may be passed to `runTask` as `executionStrategyCatalogItems` for guarded metadata consumption. The runtime still code-validates supported strategy keys, phases, and retry rules; malformed or conflicting catalog rows are ignored. **Consumption order:** optional Narrix → optional web (preprocessor path) → optional Xynthesis **PRE** steps → **MAIN**.
@@ -127,12 +130,12 @@ The runtime supports three MAIN execution strategy records:
127
130
  | Strategy | Request shape | Runtime behavior |
128
131
  |----------|---------------|------------------|
129
132
  | **`direct`** | **`executionStrategies: []`** | Plain MAIN. Calls `runSkill` once. `direct` is catalog metadata only and is **not** valid as a row inside `executionStrategies[]`. |
130
- | **`planner`** | **`{ strategyKey: "planner", phase: "before", priority }`** | Runs FuncX **`execution/plan`** before MAIN and can merge instructions, prompt, variables, and template tokens into the request. |
131
- | **`optimizer`** | **`{ strategyKey: "optimizer", phase: "after", priority, maxIterations? }`** | Runs FuncX **`execution/evaluate-result`** after MAIN. If not satisfied, retries MAIN with feedback until satisfied or `maxIterations` is reached. |
133
+ | **`planner`** | **`{ strategyKey: "planner", phase: "before", priority }`** | Runs xynthesis **`execution-plan`** before MAIN and can merge instructions, prompt, variables, and template tokens into the request. |
134
+ | **`optimizer`** | **`{ strategyKey: "optimizer", phase: "after", priority, maxIterations? }`** | Runs xynthesis **`execution-evaluate-result`** after MAIN. If not satisfied, retries MAIN with feedback until satisfied or `maxIterations` is reached. |
132
135
 
133
136
  `planner` must use `phase: "before"` and `optimizer` must use `phase: "after"`. `optimizer.maxIterations` controls MAIN attempts; when omitted it falls back to `AI_TASKS_OPTIMIZER_MAX_ITERATIONS` or the package default. Per-invocation `args.functionId` always wins over catalog metadata and code defaults.
134
137
 
135
- `execution-strategy` catalog items are structured metadata, not an open behavior plug-in. Safe runtime consumption is currently limited to fields explicitly marked in `safeRuntimeFields`, such as wrapper `defaultFunctionId`, and only when the catalog row matches the already-validated strategy key, phase, request shape, and generic FuncX envelope.
138
+ `execution-strategy` catalog items are structured metadata, not an open behavior plug-in. Safe runtime consumption is currently limited to fields explicitly marked in `safeRuntimeFields`, such as `defaultSidekickAction` / `runtimeKind: "xynthesis-action"`, and only when the catalog row matches the already-validated strategy key, phase, and request shape.
136
139
 
137
140
  Legacy monolith id **`ai-task-strategies`** is no longer written by this repo; use the catalogs above.
138
141
 
@@ -148,7 +151,7 @@ That provisions **`apps/ai-tasks`**, all six native catalogs, bindings, descript
148
151
 
149
152
  ### Reading catalogs and items (from `@exellix/ai-tasks`)
150
153
 
151
- Construct a **`Catalox`** instance (for example `createCataloxFromEnv()` from `@exellix/ai-tasks`, which re-exports it from `@woroces/ai-skills`), then use any of:
154
+ Construct a **`Catalox`** instance (for example `createCataloxFromEnv()` from `@exellix/ai-tasks`, which re-exports it from `@exellix/ai-skills`), then use any of:
152
155
 
153
156
  | Export | Purpose |
154
157
  |--------|---------|
@@ -180,7 +183,7 @@ const { listOutcome, items } = await catalox.listCatalogItems(
180
183
 
181
184
  ### Skill templates (`ai-skills` app)
182
185
 
183
- Skill definitions and template bodies for execution live under Catalox **`appId: ai-skills`** (owned by **`@woroces/ai-skills`**). This package re-exports the Catalox skill surface from **`@woroces/ai-skills`** via the same entrypoint (e.g. `listAiSkillsCatalogItems`, `fetchSkillTemplatesFromCatalox`, `createCataloxFromEnv`, `initFirebaseAdminFromEnv`, …) so you can **view and edit skill catalog items** while depending only on **`@exellix/ai-tasks`**.
186
+ Skill definitions and template bodies for execution live under Catalox **`appId: ai-skills`** (owned by **`@exellix/ai-skills`**). This package re-exports the Catalox skill surface from **`@exellix/ai-skills`** via the same entrypoint (e.g. `listAiSkillsCatalogItems`, `fetchSkillTemplatesFromCatalox`, `createCataloxFromEnv`, `initFirebaseAdminFromEnv`, …) so you can **view and edit skill catalog items** while depending only on **`@exellix/ai-tasks`**.
184
187
 
185
188
  ---
186
189
 
@@ -303,11 +306,11 @@ const res = await runTask({
303
306
  ### Class-Based API (custom `ai-skills` client)
304
307
 
305
308
  ```typescript
306
- import { WorexClientSkills } from "@exellix/ai-tasks"; // re-export, or import from @woroces/ai-skills
307
- import { WorexClientTasks, ExecutionType } from "@exellix/ai-tasks";
309
+ import { ExellixSkillsClient, WorexClientTasks, ExecutionType } from "@exellix/ai-tasks";
310
+ // `WorexClientSkills` is a type alias for `ExellixSkillsClient`
308
311
 
309
312
  // skills client is the shared execution + helper layer
310
- const skills = new WorexClientSkills({
313
+ const skills = new ExellixSkillsClient({
311
314
  // ... your existing ai-skills config (gateway/provider/router)
312
315
  });
313
316
 
@@ -325,8 +328,8 @@ const res = await tasks.runTask({
325
328
  // optional
326
329
  variables: { orgName: "Acme" },
327
330
  modelConfig: {
328
- preActionModel: "cheap",
329
- postActionModel: "cheap",
331
+ preActionModel: "cheap/default",
332
+ postActionModel: "cheap/default",
330
333
  skillModel: "openai/gpt-5",
331
334
  temperature: 0.7,
332
335
  topP: 0.9,
@@ -370,7 +373,7 @@ Given a request, `runTask()` performs:
370
373
  4. **Local task dispatch**: If `getLocalTask(skillKey)` returns a handler, call `{ input, ctx }`. **`ctx`** includes **`skillKey`**, **`jobMemory`**, **`taskMemory`**, **`executionMemory`**, **`variables`**, **`xynthesized`**, **`smartInput`**, and graph/correlation ids. Returns **`RunTaskResponse`**; **skips LLM MAIN path below**.
371
374
  5. **LLM path** (pipeline or default MAIN): If **`executionPipeline`** is non-empty, run PRE (**`synthesized-context`** only), then MAIN, then optional POST (**`audit`** / **`polish`**). PRE synthesis may write **`request.xynthesized`** and **`response.xynthesizedPatch`** ([details](#execution-pipeline-and-synthesized-context-pre-step)). Otherwise behave as a single MAIN **`direct`** step.
372
375
  6. **MAIN execution** (inside pipeline MAIN or default path): Build **`memoryBundle = { jobMemory, taskMemory, executionMemory }`**, **`enrichMemoriesWithScoping(skillKey, 'task', bundle)`**, generate **`context`** when **`includeContextInPrompt`** (or pipeline synthesis overrides context). Optionally run **`aiScoping`** into **`input.aiScoped`**. Build **`enrichedInput`**: memories, **`context`**, **`input`**, top-level **`xynthesized`** and **`smartInput`**, and **`variables` = passthroughJobTemplateVariables(request.variables)` (job bucket only; see [Gateway template rendering](#gateway-template-rendering-v4)).
373
- 7. **Execute MAIN**: Apply **`executionStrategies`** (planner/optimizer FuncX wrappers when non-empty) and call **`runSkill`** / gateway via the configured executor.
376
+ 7. **Execute MAIN**: Apply **`executionStrategies`** (planner/optimizer xynthesis sidekick actions when non-empty) and call **`runSkill`** / gateway via the configured executor.
374
377
  8. **Finalize response**: Identity / task metadata as today; attach **`xynthesizedPatch`** when PRE synthesis produced **`job`**, **`task`**, or **`execution`** writes; when the executor returns **`SmartInputRenderResult`**, lift it to **`response.smartInputRenderResult`** and **`metadata.smartInputRenderResult`** (also accepts shaped **`metadata.smartInput`** from downstream).
375
378
  9. **Not-found**: Executor may invoke registry diagnostics when content is missing.
376
379
 
@@ -1057,8 +1060,8 @@ Orchestrators send **model** + **sampling** + **`reasoningEffort`** + (for xynth
1057
1060
 
1058
1061
  | Phase | Package | Caller sends | Package owns |
1059
1062
  |-------|---------|--------------|--------------|
1060
- | **MAIN** | `@exellix/ai-skills` ≥6 | `modelConfig` → `{ model, temperature, topP, reasoningEffort, … }` | Optimixer + Catalox skill catalog (`maxTokens` on `ModelConfig` is rejected); **one automatic re-invoke** when output hits token limit and Optimixer returns `retryPrediction` |
1061
- | **PRE / POST / scoping / utility** | `@exellix/xynthesis` ≥4.3 | `outputExpectation` (required on every hop), optional `reasoningEffort`, `temperature`, `topP` | `resolveEffectiveMaxTokens` inside `executeXynthesisAction`; **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` |
1062
1065
 
1063
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`).
1064
1067
 
@@ -1066,6 +1069,8 @@ Orchestrators send **model** + **sampling** + **`reasoningEffort`** + (for xynth
1066
1069
 
1067
1070
  **Trace:** use `usage.maxTokensRequested` / `invokeSummary` diagnostics after invoke — not pre-set caps on the request.
1068
1071
 
1072
+ **Billing (gateway 10.x):** MAIN cost is authoritative from `@x12i/ai-gateway` invoke **`metadata`** only — ai-tasks and ai-skills do not re-price. When `costStatus === 'unpriced'`, tokens are recorded but there is no authoritative USD total (do not price locally). See **[UPGRADING_AI_GATEWAY_10.md](../ai-skills/docs/UPGRADING_AI_GATEWAY_10.md)** §1.
1073
+
1069
1074
  ---
1070
1075
 
1071
1076
  ## Model profile aliases (`@x12i/ai-profiles`)
@@ -1079,15 +1084,18 @@ Orchestrators send **model** + **sampling** + **`reasoningEffort`** + (for xynth
1079
1084
 
1080
1085
  **Accepted alias shapes** (`@x12i/ai-profiles` v2.1+):
1081
1086
 
1082
- - **Profile/choice keys:** `cheap/default`, `pro/default`, `cyber/default`, …
1083
- - **Bare profile + implicit default choice:** `cheap`, `pro`, `cyber` (expanded to `profile/default` at invoke)
1084
- - **Explicit `@` form:** `cheap@default`, `pro@fast`, …
1087
+ - **Profile/choice keys (required on stored `modelConfig` and xynthesis `llmCall.model`):** `cheap/default`, `pro/default`, `cyber/default`, …
1088
+ - **Concrete provider wire ids on MAIN only:** `openrouter/...`, `anthropic/claude-sonnet-4`, bare vendor SKUs like `gpt-4o-mini` accepted on **`skillModel`** / MAIN `llmCall.model` only
1085
1089
 
1086
- **List available keys:** `listAiTasksProfileChoices()` / `listAiTasksProfileChoiceKeys()` (re-exported from `@x12i/ai-profiles` via `@exellix/ai-tasks`). Same registry as xynthesis (`listAIProfiles` / `listAIProfileChoices` on `@exellix/xynthesis`).
1090
+ **Rejected on stored config:**
1091
+
1092
+ - Bare profile names (`cheap`, `pro`) — use `cheap/default`, `pro/default`
1093
+ - `profile@choice` (`cheap@default`) — use `profile/choice` slash form
1094
+ - Legacy graph tiers (`weak`, `strong`), deprecated `xynthesisModel`, root `modelConfig.model`
1087
1095
 
1088
- **Not accepted:** legacy graph tiers (`weak`, `strong`), deprecated `xynthesisModel`, or sync-only alias guessing removed in ai-profiles 2.1. Unknown keys fail at **`resolveAIProfile`** with a clear error.
1096
+ **List available keys:** `listAiTasksProfileChoices()` / `listAiTasksProfileChoiceKeys()` (re-exported from `@x12i/ai-profiles` via `@exellix/ai-tasks`). Same registry as xynthesis (`listAIProfiles` / `listAIProfileChoices` on `@exellix/xynthesis`).
1089
1097
 
1090
- **Example (aliases on the request — resolved inside `runTask`):**
1098
+ **Example (canonical triplet — resolved inside `runTask`):**
1091
1099
 
1092
1100
  ```typescript
1093
1101
  await runTask({
@@ -1098,24 +1106,46 @@ await runTask({
1098
1106
  executionStrategies: [],
1099
1107
  input: { topic: "Q1 risks" },
1100
1108
  modelConfig: {
1101
- preActionModel: "cheap", // PRE synthesis
1102
- postActionModel: "cheap", // POST audit/polish
1103
- skillModel: "pro/default", // MAIN skill
1109
+ preActionModel: "cheap/default", // PRE synthesis (xynthesis)
1110
+ postActionModel: "cheap/default", // POST audit/polish (xynthesis)
1111
+ skillModel: "pro/default", // MAIN skill (ai-skills → ai-gateway)
1104
1112
  },
1105
1113
  });
1106
1114
  ```
1107
1115
 
1108
- Concrete ids (`openrouter/...`, `anthropic/claude-sonnet-4`, `openai/gpt-5`, …) pass through unchanged on **`skillModel`** / MAIN `llmCall.model`. **`preActionModel`** / **`postActionModel`** and xynthesis **`llmCall.model`** must stay **ai-profiles aliases** under `@exellix/xynthesis` ≥4 (concrete ids are rejected).
1116
+ Concrete ids pass through unchanged on **`skillModel`** / MAIN `llmCall.model`. **`preActionModel`** / **`postActionModel`** and xynthesis **`llmCall.model`** must stay **profile/choice aliases** concrete ids are rejected with **`XYNTHESIS_CONCRETE_MODEL_REJECTED`**.
1109
1117
 
1110
1118
  **Client impact:**
1111
1119
 
1112
- - **`skillModel` / MAIN `llmCall.model`:** concrete provider ids pass through unchanged (alias or concrete accepted).
1113
- - **`preActionModel` / `postActionModel`:** must be ai-profiles aliases **do not** send concrete OpenRouter/OpenAI ids (rejected with `XYNTHESIS_CONCRETE_MODEL_REJECTED`).
1114
- - **New:** you may send ai-profiles aliases on `modelConfig`, `llmCall.model`, and pipeline step configs graph-engine must not pre-resolve xynthesis slots to concrete ids.
1115
- - **Validation:** alias tokens on `modelConfig` slots are accepted; unknown aliases fail at resolution with `XYNTHESIS_ALIAS_RESOLUTION_FAILED`.
1116
- - **Helpers:** `resolveModelReference`, `resolveRunTaskModelReferences`, `isRunTaskModelResolutionError`, `isResolvableModelAlias` (true only for **`profile/choice`** keys — bare profile keys are resolved at invoke, not sync-listed).
1120
+ - **`skillModel` / MAIN `llmCall.model`:** profile/choice alias or concrete provider wire id.
1121
+ - **`preActionModel` / `postActionModel`:** profile/choice only — graph-engine must not pre-resolve xynthesis slots to concrete ids.
1122
+ - **Validation:** `validateRunTaskConfig` / `resolveRunTaskModelReferences` enforce slot shapes before invoke; unknown aliases fail at resolution with **`XYNTHESIS_ALIAS_RESOLUTION_FAILED`**.
1123
+ - **Helpers:** `resolveModelReference`, `resolveModelReferenceForXynthesis`, `resolveRunTaskModelReferences`, `resolveInvocationPlan`, `isRunTaskModelResolutionError`, `isResolvableModelAlias` (true only for known **`profile/choice`** keys).
1124
+
1125
+ ### Pre-run invocation plan (`resolveInvocationPlan`)
1117
1126
 
1118
- Resolution uses the ai-profiles registry (`auto`: remote refresh with bundled fallback). See [`.docs/ai-tasks-model-profile-aliases-7x.md`](.docs/ai-tasks-model-profile-aliases-7x.md).
1127
+ Side-effect-free preview of which **engine + wire model** each phase will use (same routing path as execute):
1128
+
1129
+ ```typescript
1130
+ import { resolveInvocationPlan } from "@exellix/ai-tasks";
1131
+
1132
+ const plan = await resolveInvocationPlan({
1133
+ profiles: {
1134
+ preActionModel: "cheap/default",
1135
+ skillModel: "pro/default",
1136
+ postActionModel: "cheap/default",
1137
+ },
1138
+ policy: {
1139
+ preferOpenRouter: true, // default: read from env when omitted
1140
+ openrouterApiKeyPresent: true, // fallback to vendor-direct when false
1141
+ },
1142
+ });
1143
+ // plan.phases[] → { phase: "preAction"|"skill"|"postAction", routing, modelId, engineLabel, ... }
1144
+ ```
1145
+
1146
+ **OpenRouter routing (`preferOpenRouter`):** when `true` and an OpenRouter API key is present, MAIN (ai-gateway) and PRE/POST (funcx) resolve to different wire shapes — skill phases use `openrouter/...` gateway ids; xynthesis phases use Funcx API slugs. Helpers: `resolvePreferOpenRouterPolicy`, `readPreferOpenRouterFromEnv`, `detectOpenRouterApiKeyPresent`, `resolveProfileInvocationRouting`. See **`@exellix/ai-skills`** [`PREFER_OPENROUTER_ROUTING.md`](../ai-skills/docs/PREFER_OPENROUTER_ROUTING.md).
1147
+
1148
+ Resolution uses the ai-profiles registry (`auto`: remote refresh with bundled fallback). See [`MODEL-CONFIGURATION.md`](MODEL-CONFIGURATION.md) and [`BREAKING-CHANGES.md`](BREAKING-CHANGES.md) (8.4+ triplet contract).
1119
1149
 
1120
1150
  ---
1121
1151
 
@@ -1174,7 +1204,7 @@ type LlmCallConfig = {
1174
1204
  |----------------|--------|
1175
1205
  | `POST_STEP_MODEL` | Default model for any POST step that didn't get a specific value |
1176
1206
  | `POST_STEP_TIMEOUT_MS` | Default timeout |
1177
- | `POST_STEP_MAX_TOKENS_CAP` | Default hard ceiling |
1207
+ | `POST_STEP_MAX_TOKENS_CAP` | **Deprecated** rejected on `llmCall`; Optimixer owns caps |
1178
1208
  | `POST_STEP_TEMPERATURE` | Default temperature |
1179
1209
  | `POST_STEP_TOP_P` | Default Top-P |
1180
1210
  | `POST_STEP_MAX_OUTPUT_LENGTH` | Default char truncation |
@@ -1215,9 +1245,9 @@ type LlmCallObservation =
1215
1245
  };
1216
1246
  ```
1217
1247
 
1218
- **`InvokeAttemptSummary`** (xynthesis ≥ 3.1) carries `{ jobId, taskId, modelRequested, modelResolved, maxTokensFromCaller, maxTokensEffective, modelUsedFromProvider, usage, routing, costUsd, traceKind, executionMetadata }`.
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.
1219
1249
 
1220
- **`RunSkillDiagnostics`** (ai-skills ≥ 5.0) carries `{ trace: { step, timing, routing, usage, costUsd, modelUsed, attempts[], rawProviderPayload?, invokeRequest? }, ... }`.
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.
1221
1251
 
1222
1252
  ### Typed errors (instanceof-friendly)
1223
1253
 
@@ -1244,6 +1274,9 @@ import {
1244
1274
  type RunSkillDiagnostics,
1245
1275
  resolveOutputExpectation,
1246
1276
  ACTION_OUTPUT_DEFAULTS,
1277
+ mapGatewayInvokeToTrace,
1278
+ traceToDiagnostics,
1279
+ buildInvokeAttemptSummary,
1247
1280
  getModelCapabilities,
1248
1281
  } from "@exellix/ai-tasks";
1249
1282
  ```
@@ -1274,7 +1307,7 @@ const result = await runTask({
1274
1307
  input: { assetId: "a-123" },
1275
1308
  executionMode: "trace",
1276
1309
  llmCall,
1277
- aiScopingOptions: { llmCall: { model: "cheap", outputExpectation: { size: { kind: "absolute", maxWords: 200 }, density: "concise" } } },
1310
+ aiScopingOptions: { llmCall: { model: "cheap/default", outputExpectation: { size: { kind: "absolute", maxWords: 200 }, density: "concise" } } },
1278
1311
  // executionPipeline: [{ phase: "pre", type: "synthesized-context", config: { llmCall } }, { phase: "main", type: "direct" }],
1279
1312
  });
1280
1313
 
@@ -1294,7 +1327,7 @@ console.log("polish calls:", m.postSteps?.polish?.llmCalls?.length ?? 0);
1294
1327
 
1295
1328
  `@exellix/ai-tasks` supports optional graph execution context fields that enable smarter activity tracking and identity for nodes executing within graph workflows. When executing tasks in a graph (e.g., via `worex-graphs`), you can provide additional context fields to improve activity tracking and debugging.
1296
1329
 
1297
- The client automatically passes these fields through to `@woroces/ai-skills`, which then passes them to `@x12i/ai-gateway`. The gateway maps them to the activity identity structure according to `@x12i/activix-tracking` v3.5.0+ mapping rules.
1330
+ The client automatically passes these fields through to `@exellix/ai-skills`, which then passes them to `@x12i/ai-gateway`. The gateway maps them to the activity identity structure according to `@x12i/activix-tracking` v3.5.0+ mapping rules.
1298
1331
 
1299
1332
  ### Optional Fields
1300
1333
 
@@ -1409,7 +1442,7 @@ const result = await tasks.runTask({
1409
1442
 
1410
1443
  ### Field Mapping
1411
1444
 
1412
- The client automatically passes graph/node fields through `@woroces/ai-skills` to the underlying `@x12i/ai-gateway`, which maps them to the activity identity structure. The gateway uses the following priority rules:
1445
+ The client automatically passes graph/node fields through `@exellix/ai-skills` to the underlying `@x12i/ai-gateway`, which maps them to the activity identity structure. The gateway uses the following priority rules:
1413
1446
 
1414
1447
  #### Graph ID Mapping
1415
1448
 
@@ -1440,7 +1473,7 @@ This enables:
1440
1473
 
1441
1474
  ### Complete Field Mapping Guide
1442
1475
 
1443
- | @exellix/ai-tasks Field | @woroces/ai-skills Field | @x12i/ai-gateway Field | Identity Field | Mapping Priority |
1476
+ | @exellix/ai-tasks Field | @exellix/ai-skills Field | @x12i/ai-gateway Field | Identity Field | Mapping Priority |
1444
1477
  |-------------------------|--------------------------|----------------------------|----------------|------------------|
1445
1478
  | `masterSkillId` | `masterSkillId` | `masterSkillId` (AIRequest) | `identity.graphId` | Priority 1 (primary) |
1446
1479
  | `graphId` | `graphId` | `graphId` | `identity.graphId` | Priority 2 (fallback) |
@@ -1770,8 +1803,8 @@ interface RunTaskRequest {
1770
1803
 
1771
1804
  ### Related Documentation
1772
1805
 
1773
- - [Activity Tracking](#) - Main documentation with usage examples
1774
- - [@woroces/ai-skills Graph Execution Support](https://github.com/woroces/ai-skills#graph-execution-support) - Skills-level documentation
1806
+ - [@exellix/ai-skills — UPGRADING_AI_GATEWAY_10.md](../ai-skills/docs/UPGRADING_AI_GATEWAY_10.md) gateway 10.x migration (billing, required fields, Activix persistence)
1807
+ - [@exellix/ai-skills Graph Execution Support](https://github.com/exellix/ai-skills#graph-execution-support) - Skills-level documentation
1775
1808
  - [@x12i/ai-gateway Graph Execution Support](https://github.com/athenices/ai-gateway#graph-execution-support) - Gateway-level documentation
1776
1809
  - [@x12i/activix-tracking](https://github.com/athenices/ai-activities-tracking) - Activity tracking specification
1777
1810
 
@@ -1846,7 +1879,7 @@ Builder class for constructing task requests with a fluent API.
1846
1879
 
1847
1880
  - `withSkillKey(skillKey: string): this` - Set the skill key
1848
1881
  - `withInput(input: Record<string, any> | string): this` - Set input data
1849
- - `withExecutionStrategies(invocations: ExecutionStrategyInvocation[]): this` — MAIN FuncX wrappers (**required** on the built request; defaults to **`[]`** in **`build()`** when unset)
1882
+ - `withExecutionStrategies(invocations: ExecutionStrategyInvocation[]): this` — MAIN strategy invocations (**required** on the built request; defaults to **`[]`** in **`build()`** when unset)
1850
1883
  - `withExecutionPipeline(steps: ExecutionStep[]): this` - Set execution pipeline (pre/main/post steps)
1851
1884
  - `withSynthesizedContextPreStep(modelOrConfig?: string | SynthesisConfig): this` - Add synthesized-context PRE step and set `includeContextInPrompt: true`. Pass a **`SynthesisConfig`** object to set **`contextSourcePolicy`**, **`webEvidence`**, **`memoryPaths`**, etc.
1852
1885
  - `withAuditPostStep(config: AuditConfig): this` - Add audit POST step (quality-gate loop)
@@ -1887,8 +1920,8 @@ const request = new TaskRequestBuilder()
1887
1920
  .withAiSkillsCorrelation("my-agent", "my-job-type", "my-task-type")
1888
1921
  .withExecutionStrategies([]) // [] = plain MAIN; omit only if you rely on build() defaulting strategies to []
1889
1922
  .withModelConfig({
1890
- preActionModel: "cheap",
1891
- postActionModel: "cheap",
1923
+ preActionModel: "cheap/default",
1924
+ postActionModel: "cheap/default",
1892
1925
  skillModel: "gpt-5",
1893
1926
  temperature: 0.7,
1894
1927
  })
@@ -1913,7 +1946,7 @@ interface RunTaskRequest {
1913
1946
  agentId: string; // Required — @exellix/ai-skills correlation
1914
1947
  jobTypeId: string; // Required — catalog / telemetry job classification
1915
1948
  taskTypeId: string; // Required — catalog / telemetry task classification
1916
- /** Required: MAIN FuncX wrappers; use [] for plain gateway MAIN (see BREAKING-CHANGES / RUNTASK_REQUEST). */
1949
+ /** Required: MAIN strategy invocations; use [] for plain gateway MAIN (see BREAKING-CHANGES / RUNTASK_REQUEST). */
1917
1950
  executionStrategies: ExecutionStrategyInvocation[];
1918
1951
  /** Optional guarded metadata rows from catalogId `execution-strategy`; code validation remains authoritative. */
1919
1952
  executionStrategyCatalogItems?: TaskStrategyItemData[];
@@ -2130,8 +2163,8 @@ interface RunTaskModelConfig {
2130
2163
  **Example:**
2131
2164
  ```typescript
2132
2165
  const modelConfig: RunTaskModelConfig = {
2133
- preActionModel: "cheap",
2134
- postActionModel: "cheap",
2166
+ preActionModel: "cheap/default",
2167
+ postActionModel: "cheap/default",
2135
2168
  skillModel: "cyber",
2136
2169
  temperature: 0.7,
2137
2170
  topP: 0.9,
@@ -2146,7 +2179,7 @@ const result = await runTask({
2146
2179
  });
2147
2180
  ```
2148
2181
 
2149
- **Note:** Root `RunTaskRequest.modelConfig` uses canonical slots (`RunTaskModelConfig`: `preActionModel`, `skillModel`, `postActionModel`). Profile aliases are resolved via `@x12i/ai-profiles` v2 at `runTask` entry and on each xynthesis / ai-skills call boundary. See [Model profile aliases](#model-profile-aliases-x12iai-profiles) and [`.docs/ai-tasks-model-profile-aliases-7x.md`](.docs/ai-tasks-model-profile-aliases-7x.md).
2182
+ **Note:** Root `RunTaskRequest.modelConfig` uses canonical slots (`RunTaskModelConfig`: `preActionModel`, `skillModel`, `postActionModel`). Profile/choice keys are validated at `runTask` entry and resolved at each xynthesis / ai-skills call boundary via `@x12i/ai-profiles` v2. See [Model profile aliases](#model-profile-aliases-x12iai-profiles) and [`MODEL-CONFIGURATION.md`](MODEL-CONFIGURATION.md).
2150
2183
 
2151
2184
  ### `JobHistory`, `TaskHistory`, and `ExecutionHistory`
2152
2185
 
@@ -2255,7 +2288,7 @@ For a concise breakdown of what ai-tasks uses vs downstream, see [documenations/
2255
2288
  ### Basic Usage
2256
2289
 
2257
2290
  ```typescript
2258
- import { WorexClientSkills } from "@woroces/ai-skills";
2291
+ import { WorexClientSkills } from "@exellix/ai-skills";
2259
2292
  import { WorexClientTasks, ExecutionType } from "@exellix/ai-tasks";
2260
2293
 
2261
2294
  const skills = new WorexClientSkills();
@@ -2281,7 +2314,7 @@ console.log(result.flexMd.payloads);
2281
2314
  ### With Memory Management
2282
2315
 
2283
2316
  ```typescript
2284
- import { WorexClientSkills } from "@woroces/ai-skills";
2317
+ import { WorexClientSkills } from "@exellix/ai-skills";
2285
2318
  import { WorexClientTasks, ExecutionType } from "@exellix/ai-tasks";
2286
2319
  import type { JobHistory, TaskHistory, ExecutionHistory } from "@exellix/ai-tasks";
2287
2320
 
@@ -2317,7 +2350,7 @@ const result = await tasks.runTask({
2317
2350
  ### With Model Configuration
2318
2351
 
2319
2352
  ```typescript
2320
- import { WorexClientSkills } from "@woroces/ai-skills";
2353
+ import { WorexClientSkills } from "@exellix/ai-skills";
2321
2354
  import { WorexClientTasks, ExecutionType } from "@exellix/ai-tasks";
2322
2355
 
2323
2356
  const skills = new WorexClientSkills();
@@ -2334,8 +2367,8 @@ const result = await tasks.runTask({
2334
2367
  executionType: ExecutionType.DIRECT,
2335
2368
  input: { data: "analyze this" },
2336
2369
  modelConfig: {
2337
- preActionModel: "cheap",
2338
- postActionModel: "cheap",
2370
+ preActionModel: "cheap/default",
2371
+ postActionModel: "cheap/default",
2339
2372
  skillModel: "gpt-5",
2340
2373
  temperature: 0.7,
2341
2374
  topP: 0.9,
@@ -2351,8 +2384,8 @@ const request = new TaskRequestBuilder()
2351
2384
  .withAiSkillsCorrelation("agent-1", "analysis-job", "analysis-task")
2352
2385
  .withExecutionStrategies([])
2353
2386
  .withModelConfig({
2354
- preActionModel: "cheap",
2355
- postActionModel: "cheap",
2387
+ preActionModel: "cheap/default",
2388
+ postActionModel: "cheap/default",
2356
2389
  skillModel: "gpt-5",
2357
2390
  temperature: 0.5,
2358
2391
  })
@@ -2364,7 +2397,7 @@ const result2 = await tasks.runTask(request);
2364
2397
  ### With Graph Execution Context
2365
2398
 
2366
2399
  ```typescript
2367
- import { WorexClientSkills } from "@woroces/ai-skills";
2400
+ import { WorexClientSkills } from "@exellix/ai-skills";
2368
2401
  import { WorexClientTasks, ExecutionType } from "@exellix/ai-tasks";
2369
2402
 
2370
2403
  const skills = new WorexClientSkills();
@@ -2473,7 +2506,7 @@ Crashed or hung tasks leave records stuck in `started`. Call `ax.markStaleRecord
2473
2506
  ## Development Notes
2474
2507
 
2475
2508
  - This is a **private package**; we optimize for reuse and speed.
2476
- - `@woroces/ai-skills` is treated as the shared helper + execution layer.
2509
+ - `@exellix/ai-skills` is treated as the shared helper + execution layer.
2477
2510
  - Naming leakage is explicitly acceptable (private monorepo + private packages).
2478
2511
  - Task-level enrichment always uses `level: 'task'` (not `'skill'`).
2479
2512
  - The executor must be a "no-enrichment execute primitive" to avoid double-enrichment.
@@ -2556,13 +2589,17 @@ ISC
2556
2589
 
2557
2590
  ## Related Packages
2558
2591
 
2559
- - [`@woroces/ai-skills`](https://github.com/woroces/ai-skills) - Full SDK with additional features
2560
- - [`@x12i/ai-gateway`](https://github.com/athenices/ai-gateway) - AI Gateway for LLM interactions
2561
- - [`@x12i/execution-memory-manager`](https://github.com/athenices/execution-memory-manager) - Memory management utilities
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
+ - [`@x12i/execution-memory-manager`](https://github.com/athenices/execution-memory-manager) — Memory management utilities
2562
2596
 
2563
2597
  ## Related Documentation
2564
2598
 
2565
- - [@woroces/ai-skills — GATEWAY_TEMPLATE_PROTOCOL_V4.md](https://github.com/woroces/ai-skills/blob/main/GATEWAY_TEMPLATE_PROTOCOL_V4.md) — Gateway + parser template protocol (MUST tokens, `subPathSearch`, errors)
2599
+ - [@exellix/ai-skills — UPGRADING_AI_GATEWAY_10.md](../ai-skills/docs/UPGRADING_AI_GATEWAY_10.md) — **gateway 10.x migration** (billing ownership, required `model` + `maxTokens`, removed defaults, Activix persistence, `error.metadata`)
2600
+ - [@exellix/ai-skills — MODEL_INVOKE_CONTRACT.md](../ai-skills/docs/MODEL_INVOKE_CONTRACT.md) — MAIN wire model, Optimixer caps, gateway billing ownership
2601
+ - [@exellix/ai-skills — AI_GATEWAY_INVOKE_EXECUTION_METADATA.md](../ai-skills/docs/AI_GATEWAY_INVOKE_EXECUTION_METADATA.md) — gateway invoke metadata (`costUsd`, rejection `metadata`, routing)
2602
+ - [@exellix/ai-skills — SKILLS_MANAGER_CLIENT_GUIDE.md](../ai-skills/docs/SKILLS_MANAGER_CLIENT_GUIDE.md) — studio vs runtime boundaries
2566
2603
  - [documenations/intermediate-steps.md](./documenations/intermediate-steps.md) - Structured intermediate results for combined/multi-step tasks (`intermediateSteps` response field)
2567
2604
  - [HISTORY-OBJECTS.md](./HISTORY-OBJECTS.md) - Comprehensive guide to `JobHistory`, `TaskHistory`, and `ExecutionHistory` objects
2568
2605
  - [HISTORY-OBJECTS-DOWNSTREAM.md](./HISTORY-OBJECTS-DOWNSTREAM.md) - How history objects flow downstream through the execution pipeline
@@ -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";
@@ -1 +1 @@
1
- {"version":3,"file":"resolveRunTaskModelReferences.d.ts","sourceRoot":"","sources":["../../src/utils/resolveRunTaskModelReferences.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAiO7D;;;GAGG;AACH,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAyBpG"}
1
+ {"version":3,"file":"resolveRunTaskModelReferences.d.ts","sourceRoot":"","sources":["../../src/utils/resolveRunTaskModelReferences.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA+O7D;;;GAGG;AACH,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAyBpG"}
@@ -1,8 +1,18 @@
1
1
  import { isRecord } from "../types/model-config.js";
2
- import { throwRunTaskModelResolutionError, } from "../errors/runTaskModelResolutionError.js";
2
+ import { formatXynthesisConcreteModelRejectedMessage, throwRunTaskModelResolutionError, } from "../errors/runTaskModelResolutionError.js";
3
3
  import { requireSkillModelReference, requireXynthesisModelReference, } from "./aiProfileModelFormat.js";
4
+ import { isConcreteModelId } from "./concreteModelId.js";
4
5
  import { resolveModelReferenceForXynthesis } from "./resolveAiProfileModel.js";
5
6
  function assertXynthesisModelSlot(value, slotPath, ctx) {
7
+ const trimmed = value.trim();
8
+ if (isConcreteModelId(trimmed)) {
9
+ throwRunTaskModelResolutionError({
10
+ code: "XYNTHESIS_CONCRETE_MODEL_REJECTED",
11
+ skillKey: ctx?.skillKey,
12
+ invocationPhase: "model-resolution",
13
+ diagnostics: { slotPath, offendingValue: trimmed },
14
+ }, formatXynthesisConcreteModelRejectedMessage(trimmed, slotPath));
15
+ }
6
16
  try {
7
17
  requireXynthesisModelReference(value, slotPath);
8
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolveRunTaskModelReferences.js","sourceRoot":"","sources":["../../src/utils/resolveRunTaskModelReferences.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAGL,gCAAgC,GACjC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,0BAA0B,EAE1B,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAQ/E,SAAS,wBAAwB,CAAC,KAAa,EAAE,QAAgB,EAAE,GAAgC;IACjG,IAAI,CAAC;QACH,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gCAAgC,CAC9B;YACE,IAAI,EAAE,sCAAsC;YAC5C,QAAQ,EAAE,GAAG,EAAE,QAAQ;YACvB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE;SACjD,EACD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,QAAgB,EAAE,GAAgC;IAC7F,IAAI,CAAC;QACH,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gCAAgC,CAC9B;YACE,IAAI,EAAE,sCAAsC;YAC5C,QAAQ,EAAE,GAAG,EAAE,QAAQ;YACvB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE;gBACX,QAAQ;gBACR,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aACjE;SACF,EACD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAkC,EAClC,MAA0B,EAC1B,QAAgB,EAChB,GAAgC;IAEhC,IAAI,CAAC,OAAO,EAAE,KAAK;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,MAAM,iCAAiC,CAAC,OAAO,CAAC,KAAK,EAAE;YACrD,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,WAAgD,EAChD,OAA0F;IAE1F,IAAI,CAAC,WAAW;QAAE,OAAO,WAAW,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,aAAa,CAAC;IAEpD,IAAI,WAAW,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,CAAU,EAAE,CAAC;QACxF,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;YAAE,SAAS;QACjD,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;QACtC,IACE,GAAG,KAAK,gBAAgB;YACxB,GAAG,KAAK,iBAAiB;YACzB,CAAC,OAAO,EAAE,aAAa,IAAI,GAAG,KAAK,OAAO,CAAC,EAC3C,CAAC;YACD,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC5C,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAA+B,EAC/B,QAAgB,EAChB,GAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACzB,MAAM,iCAAiC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;YAC3D,QAAQ,EAAE,GAAG,QAAQ,QAAQ;YAC7B,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,iCAAiC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/D,QAAQ,EAAE,GAAG,QAAQ,YAAY;YACjC,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAuB,EACvB,QAAgB,EAChB,GAAgC;IAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC1B,MAAM,iCAAiC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5D,QAAQ,EAAE,GAAG,QAAQ,UAAU;YAC/B,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,yBAAyB,CAAC,MAAM,CAAC,WAAW,EAAE;YAClD,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,QAAQ,cAAc;YACnC,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAmB,EACnB,QAAgB,EAChB,GAAgC;IAEhC,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,UAAU,EAAE,GAAG,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,MAAM,CAAC,gBAAuD,CAAC,EAAE,CAAC;QAC7E,MAAM,yBAAyB,CAAC,MAAM,CAAC,gBAA2C,EAAE;YAClF,QAAQ,EAAE,GAAG,QAAQ,mBAAmB;YACxC,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,oBAA2D,CAAC,EAAE,CAAC;QACjF,MAAM,yBAAyB,CAAC,MAAM,CAAC,oBAA+C,EAAE;YACtF,QAAQ,EAAE,GAAG,QAAQ,uBAAuB;YAC5C,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAoB,EACpB,QAAgB,EAChB,GAAgC;IAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC1B,MAAM,iCAAiC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5D,QAAQ,EAAE,GAAG,QAAQ,UAAU;YAC/B,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAkD,CAAC,EAAE,CAAC;QACxE,MAAM,yBAAyB,CAAC,MAAM,CAAC,WAAsC,EAAE;YAC7E,QAAQ,EAAE,GAAG,QAAQ,cAAc;YACnC,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAmB,EACnB,SAAiB,EACjB,GAAgC;IAEhC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiC,CAAC;IACnD,MAAM,QAAQ,GAAG,qBAAqB,SAAS,UAAU,CAAC;IAE1D,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,uBAAuB,CAAC,GAAsB,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,mBAAmB,CAAC,GAA6B,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,oBAAoB,CAAC,GAA8B,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAQ,GAAG,CAAC,OAAyB,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtF,MAAM,oBAAoB,CAAC,GAAG,CAAC,OAAwB,EAAE,WAAW,EAAE,GAAG,QAAQ,UAAU,EAAE,GAAG,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAuB;IACzE,MAAM,GAAG,GAA+B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEvE,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,oBAAoB,CACxB,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAChC,WAAW,EACX,0BAA0B,EAC1B,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"resolveRunTaskModelReferences.js","sourceRoot":"","sources":["../../src/utils/resolveRunTaskModelReferences.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAEL,2CAA2C,EAE3C,gCAAgC,GACjC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,0BAA0B,EAE1B,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAQ/E,SAAS,wBAAwB,CAAC,KAAa,EAAE,QAAgB,EAAE,GAAgC;IACjG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,gCAAgC,CAC9B;YACE,IAAI,EAAE,mCAAmC;YACzC,QAAQ,EAAE,GAAG,EAAE,QAAQ;YACvB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE;SACnD,EACD,2CAA2C,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC/D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gCAAgC,CAC9B;YACE,IAAI,EAAE,sCAAsC;YAC5C,QAAQ,EAAE,GAAG,EAAE,QAAQ;YACvB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE;SACjD,EACD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,QAAgB,EAAE,GAAgC;IAC7F,IAAI,CAAC;QACH,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gCAAgC,CAC9B;YACE,IAAI,EAAE,sCAAsC;YAC5C,QAAQ,EAAE,GAAG,EAAE,QAAQ;YACvB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE;gBACX,QAAQ;gBACR,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aACjE;SACF,EACD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAkC,EAClC,MAA0B,EAC1B,QAAgB,EAChB,GAAgC;IAEhC,IAAI,CAAC,OAAO,EAAE,KAAK;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,MAAM,iCAAiC,CAAC,OAAO,CAAC,KAAK,EAAE;YACrD,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,WAAgD,EAChD,OAA0F;IAE1F,IAAI,CAAC,WAAW;QAAE,OAAO,WAAW,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,aAAa,CAAC;IAEpD,IAAI,WAAW,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,CAAU,EAAE,CAAC;QACxF,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;YAAE,SAAS;QACjD,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;QACtC,IACE,GAAG,KAAK,gBAAgB;YACxB,GAAG,KAAK,iBAAiB;YACzB,CAAC,OAAO,EAAE,aAAa,IAAI,GAAG,KAAK,OAAO,CAAC,EAC3C,CAAC;YACD,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC5C,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAA+B,EAC/B,QAAgB,EAChB,GAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACzB,MAAM,iCAAiC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;YAC3D,QAAQ,EAAE,GAAG,QAAQ,QAAQ;YAC7B,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,iCAAiC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;YAC/D,QAAQ,EAAE,GAAG,QAAQ,YAAY;YACjC,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAuB,EACvB,QAAgB,EAChB,GAAgC;IAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC1B,MAAM,iCAAiC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5D,QAAQ,EAAE,GAAG,QAAQ,UAAU;YAC/B,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,yBAAyB,CAAC,MAAM,CAAC,WAAW,EAAE;YAClD,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,QAAQ,cAAc;YACnC,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAmB,EACnB,QAAgB,EAChB,GAAgC;IAEhC,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,UAAU,EAAE,GAAG,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,MAAM,CAAC,gBAAuD,CAAC,EAAE,CAAC;QAC7E,MAAM,yBAAyB,CAAC,MAAM,CAAC,gBAA2C,EAAE;YAClF,QAAQ,EAAE,GAAG,QAAQ,mBAAmB;YACxC,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,oBAA2D,CAAC,EAAE,CAAC;QACjF,MAAM,yBAAyB,CAAC,MAAM,CAAC,oBAA+C,EAAE;YACtF,QAAQ,EAAE,GAAG,QAAQ,uBAAuB;YAC5C,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAoB,EACpB,QAAgB,EAChB,GAAgC;IAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC1B,MAAM,iCAAiC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5D,QAAQ,EAAE,GAAG,QAAQ,UAAU;YAC/B,QAAQ,EAAE,GAAG,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAkD,CAAC,EAAE,CAAC;QACxE,MAAM,yBAAyB,CAAC,MAAM,CAAC,WAAsC,EAAE;YAC7E,QAAQ,EAAE,GAAG,QAAQ,cAAc;YACnC,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAmB,EACnB,SAAiB,EACjB,GAAgC;IAEhC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiC,CAAC;IACnD,MAAM,QAAQ,GAAG,qBAAqB,SAAS,UAAU,CAAC;IAE1D,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,uBAAuB,CAAC,GAAsB,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,mBAAmB,CAAC,GAA6B,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,oBAAoB,CAAC,GAA8B,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAQ,GAAG,CAAC,OAAyB,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtF,MAAM,oBAAoB,CAAC,GAAG,CAAC,OAAwB,EAAE,WAAW,EAAE,GAAG,QAAQ,UAAU,EAAE,GAAG,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAuB;IACzE,MAAM,GAAG,GAA+B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEvE,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,oBAAoB,CACxB,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAChC,WAAW,EACX,0BAA0B,EAC1B,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exellix/ai-tasks",
3
- "version": "8.6.5",
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",
@@ -23,7 +23,7 @@
23
23
  "dev": "ts-node src/index.ts",
24
24
  "prepublishOnly": "npm run build && node scripts/ensure-nx-content-md-variants.mjs",
25
25
  "deps:latest": "npx npm-check-updates -u && npm install",
26
- "test": "node scripts/ensure-xynthesis-dist.mjs && node scripts/clean-dist-test.mjs && tsc -p tsconfig.test.json && node scripts/copy-test-fixtures.mjs && node --test --test-force-exit --test-concurrency=1 dist-test/test/narrix/*.js dist-test/test/narrix-then-execute/*.js dist-test/test/aiScoping/*.js dist-test/test/intermediateSteps/*.js dist-test/test/post-steps/*.js dist-test/test/planWebScopeQuestions/*.js dist-test/test/synthesis/*.js dist-test/test/utils/*.js dist-test/test/errors/*.js dist-test/test/validation/*.js dist-test/test/compile/*.js dist-test/test/task-strategies/*.js dist-test/test/observability/*.js dist-test/test/run-task/*.js dist-test/test/internal/*.js dist-test/test/execution-strategies/*.js dist-test/test/invocation/*.js dist-test/test/e2e/*.js",
26
+ "test": "node scripts/ensure-xynthesis-dist.mjs && node scripts/ensure-ai-skills-dist.mjs && node scripts/clean-dist-test.mjs && tsc -p tsconfig.test.json && node scripts/copy-test-fixtures.mjs && node --test --test-force-exit --test-concurrency=1 dist-test/test/narrix/*.js dist-test/test/narrix-then-execute/*.js dist-test/test/aiScoping/*.js dist-test/test/intermediateSteps/*.js dist-test/test/post-steps/*.js dist-test/test/planWebScopeQuestions/*.js dist-test/test/synthesis/*.js dist-test/test/utils/*.js dist-test/test/errors/*.js dist-test/test/validation/*.js dist-test/test/compile/*.js dist-test/test/task-strategies/*.js dist-test/test/observability/*.js dist-test/test/run-task/*.js dist-test/test/internal/*.js dist-test/test/execution-strategies/*.js dist-test/test/invocation/*.js dist-test/test/e2e/*.js",
27
27
  "test:with-narrix-ingest": "node scripts/run-npm-test-with-narrix-ingest.mjs",
28
28
  "test:e2e:intermediateSteps": "node scripts/run-with-env.mjs RUN_INTERMEDIATE_STEPS_E2E=1 npm run test",
29
29
  "test:e2e:synthesis": "node scripts/run-synthesis-e2e.mjs",
@@ -60,7 +60,7 @@
60
60
  "node": ">=20"
61
61
  },
62
62
  "dependencies": {
63
- "@exellix/ai-skills": "^6.3.3",
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",