@exellix/ai-tasks 8.2.9 → 8.4.1
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 +26 -0
- package/README.md +92 -75
- package/RUNTASK_REQUEST.md +3 -3
- package/dist/aiSkillsUpstreamExports.d.ts +1 -1
- package/dist/aiSkillsUpstreamExports.d.ts.map +1 -1
- package/dist/aiSkillsUpstreamExports.js +1 -1
- package/dist/aiSkillsUpstreamExports.js.map +1 -1
- package/dist/analysis/analyzeRunTaskRequest.d.ts +2 -2
- package/dist/analysis/analyzeRunTaskRequest.d.ts.map +1 -1
- package/dist/analysis/analyzeRunTaskRequest.js +11 -4
- package/dist/analysis/analyzeRunTaskRequest.js.map +1 -1
- package/dist/builders/task-request-builder.d.ts +9 -12
- package/dist/builders/task-request-builder.d.ts.map +1 -1
- package/dist/builders/task-request-builder.js +22 -15
- package/dist/builders/task-request-builder.js.map +1 -1
- package/dist/compile/compileTaskConfiguration.d.ts.map +1 -1
- package/dist/compile/compileTaskConfiguration.js +4 -3
- package/dist/compile/compileTaskConfiguration.js.map +1 -1
- package/dist/core/task-sdk.d.ts.map +1 -1
- package/dist/core/task-sdk.js +11 -11
- package/dist/core/task-sdk.js.map +1 -1
- package/dist/errors/modelConfigRequiredError.d.ts +9 -0
- package/dist/errors/modelConfigRequiredError.d.ts.map +1 -0
- package/dist/errors/modelConfigRequiredError.js +20 -0
- package/dist/errors/modelConfigRequiredError.js.map +1 -0
- package/dist/errors/runTaskExecutionError.d.ts +2 -1
- package/dist/errors/runTaskExecutionError.d.ts.map +1 -1
- package/dist/errors/runTaskExecutionError.js +1 -1
- package/dist/errors/runTaskExecutionError.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/resolveLlmCallForXynthesis.d.ts +17 -40
- package/dist/internal/resolveLlmCallForXynthesis.d.ts.map +1 -1
- package/dist/internal/resolveLlmCallForXynthesis.js +15 -55
- package/dist/internal/resolveLlmCallForXynthesis.js.map +1 -1
- package/dist/internal/runPostStepLlmCall.d.ts +3 -17
- package/dist/internal/runPostStepLlmCall.d.ts.map +1 -1
- package/dist/internal/runPostStepLlmCall.js +31 -30
- package/dist/internal/runPostStepLlmCall.js.map +1 -1
- package/dist/invocation/defaultAiProfilesResolveOptions.d.ts +27 -0
- package/dist/invocation/defaultAiProfilesResolveOptions.d.ts.map +1 -0
- package/dist/invocation/defaultAiProfilesResolveOptions.js +44 -0
- package/dist/invocation/defaultAiProfilesResolveOptions.js.map +1 -0
- package/dist/invocation/resolveProfileInvocationRouting.d.ts +4 -2
- package/dist/invocation/resolveProfileInvocationRouting.d.ts.map +1 -1
- package/dist/invocation/resolveProfileInvocationRouting.js +20 -19
- package/dist/invocation/resolveProfileInvocationRouting.js.map +1 -1
- package/dist/logxer/packageLogxers.d.ts +0 -1
- package/dist/logxer/packageLogxers.d.ts.map +1 -1
- package/dist/observability/classifyRunTaskFailure.js +2 -2
- package/dist/observability/classifyRunTaskFailure.js.map +1 -1
- package/dist/observability/logLlmProviderInvocation.d.ts +1 -2
- package/dist/observability/logLlmProviderInvocation.d.ts.map +1 -1
- package/dist/observability/logLlmProviderInvocation.js +3 -3
- package/dist/observability/logLlmProviderInvocation.js.map +1 -1
- package/dist/packaged-tasks-client.js +1 -1
- package/dist/packaged-tasks-client.js.map +1 -1
- package/dist/post-steps/audit/runAudit.d.ts.map +1 -1
- package/dist/post-steps/audit/runAudit.js +6 -16
- package/dist/post-steps/audit/runAudit.js.map +1 -1
- package/dist/post-steps/polish/runPolish.d.ts +2 -0
- package/dist/post-steps/polish/runPolish.d.ts.map +1 -1
- package/dist/post-steps/polish/runPolish.js +5 -9
- package/dist/post-steps/polish/runPolish.js.map +1 -1
- package/dist/post-steps/resolvePostStepConfig.d.ts +4 -35
- package/dist/post-steps/resolvePostStepConfig.d.ts.map +1 -1
- package/dist/post-steps/resolvePostStepConfig.js +9 -36
- package/dist/post-steps/resolvePostStepConfig.js.map +1 -1
- package/dist/strategies/direct-execution-strategy.d.ts.map +1 -1
- package/dist/strategies/direct-execution-strategy.js +6 -3
- package/dist/strategies/direct-execution-strategy.js.map +1 -1
- package/dist/synthesis/runStructuredSynthesisRobust.d.ts +0 -1
- package/dist/synthesis/runStructuredSynthesisRobust.d.ts.map +1 -1
- package/dist/synthesis/runStructuredSynthesisRobust.js +20 -58
- package/dist/synthesis/runStructuredSynthesisRobust.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/llmCall.d.ts +18 -47
- package/dist/types/llmCall.d.ts.map +1 -1
- package/dist/types/llmCall.js +1 -10
- package/dist/types/llmCall.js.map +1 -1
- package/dist/types/model-config.d.ts +22 -9
- package/dist/types/model-config.d.ts.map +1 -1
- package/dist/types/model-config.js +62 -13
- package/dist/types/model-config.js.map +1 -1
- package/dist/types/task-types.d.ts +16 -12
- package/dist/types/task-types.d.ts.map +1 -1
- package/dist/types/task-types.js.map +1 -1
- package/dist/utilities/runUtility.d.ts.map +1 -1
- package/dist/utilities/runUtility.js +8 -11
- package/dist/utilities/runUtility.js.map +1 -1
- package/dist/utils/aiProfileModelFormat.d.ts +13 -5
- package/dist/utils/aiProfileModelFormat.d.ts.map +1 -1
- package/dist/utils/aiProfileModelFormat.js +40 -85
- package/dist/utils/aiProfileModelFormat.js.map +1 -1
- package/dist/utils/concreteModelId.d.ts.map +1 -1
- package/dist/utils/concreteModelId.js +4 -2
- package/dist/utils/concreteModelId.js.map +1 -1
- package/dist/utils/resolveAiProfileModel.d.ts +6 -3
- package/dist/utils/resolveAiProfileModel.d.ts.map +1 -1
- package/dist/utils/resolveAiProfileModel.js +4 -7
- package/dist/utils/resolveAiProfileModel.js.map +1 -1
- package/dist/utils/resolveRunTaskModelReferences.d.ts +1 -1
- package/dist/utils/resolveRunTaskModelReferences.d.ts.map +1 -1
- package/dist/utils/resolveRunTaskModelReferences.js +8 -3
- package/dist/utils/resolveRunTaskModelReferences.js.map +1 -1
- package/dist/utils/routeModelConfigSlots.d.ts +1 -1
- package/dist/utils/routeModelConfigSlots.d.ts.map +1 -1
- package/dist/utils/routeModelConfigSlots.js +1 -1
- package/dist/utils/routeModelConfigSlots.js.map +1 -1
- package/dist/validation/helpers.d.ts +5 -2
- package/dist/validation/helpers.d.ts.map +1 -1
- package/dist/validation/helpers.js +65 -22
- package/dist/validation/helpers.js.map +1 -1
- package/dist/validation/types.d.ts +1 -1
- package/dist/validation/types.d.ts.map +1 -1
- package/dist/validation/validateRunTaskConfig.d.ts.map +1 -1
- package/dist/validation/validateRunTaskConfig.js +2 -1
- package/dist/validation/validateRunTaskConfig.js.map +1 -1
- package/documenations/upstream-feature-requests/README.md +22 -0
- package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md +150 -0
- package/documenations/upstream-feature-requests/ai-tasks-wrap-up-after-upstream.md +126 -0
- package/documenations/upstream-feature-requests/xynthesis-orchestrator-invoke-contract-4.2.md +184 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validation/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,yBAAyB,CAAC;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validation/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,yBAAyB,CAAC;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,gEAAgE;IAChE,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC,YAAY,GACZ,uBAAuB,GACvB,iBAAiB,CAAC;AAEtB,mEAAmE;AACnE,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,0DAA0D;IAC1D,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,sFAAsF;IACtF,cAAc,EAAE;QACd,YAAY,EAAE,OAAO,eAAe,EAAE,gBAAgB,EAAE,CAAC;QACzD,MAAM,EAAE,OAAO,eAAe,EAAE,gBAAgB,EAAE,CAAC;KACpD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG;IACpE,aAAa,EAAE,iCAAiC,CAAC;IACjD,gGAAgG;IAChG,iBAAiB,EAAE,wBAAwB,EAAE,CAAC;IAC9C,sEAAsE;IACtE,kBAAkB,EAAE,KAAK,CAAC,wBAAwB,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateRunTaskConfig.d.ts","sourceRoot":"","sources":["../../src/validation/validateRunTaskConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAmB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"validateRunTaskConfig.d.ts","sourceRoot":"","sources":["../../src/validation/validateRunTaskConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAgB7F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA4E1D;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,uBAAuB,CA2FtF"}
|
|
@@ -4,7 +4,7 @@ import { isTaskConfigurationCompileError } from "../errors/taskConfigurationComp
|
|
|
4
4
|
import { collectExecutionPipelineWarnings } from "../utils/runTaskRequestShape.js";
|
|
5
5
|
import { resolveRunTaskRuntimeKnobs } from "../internal/resolveRunTaskRuntimeKnobs.js";
|
|
6
6
|
import { collectSmartInputValidationIssues } from "./collectSmartInputValidationIssues.js";
|
|
7
|
-
import { finalizeValidationResult, isNonEmptyString, pushIssue, validateLlmCallFields, validateModelConfigFields, validateRunTaskModelConfig, } from "./helpers.js";
|
|
7
|
+
import { finalizeValidationResult, isNonEmptyString, pushIssue, validateLlmCallFields, validateModelConfigFields, validateRunTaskModelConfig, validateRootLlmCallModelScope, } from "./helpers.js";
|
|
8
8
|
function validateExecutionPipeline(pipeline, issues) {
|
|
9
9
|
if (!pipeline?.length)
|
|
10
10
|
return;
|
|
@@ -139,6 +139,7 @@ export function validateRunTaskConfig(request) {
|
|
|
139
139
|
issues.push(...collectSmartInputValidationIssues(resolved.smartInput, skillKey));
|
|
140
140
|
validateRunTaskModelConfig(resolved.modelConfig, "modelConfig", issues);
|
|
141
141
|
validateLlmCallFields(resolved.llmCall, "llmCall", issues);
|
|
142
|
+
validateRootLlmCallModelScope(resolved.modelConfig, resolved.llmCall, issues);
|
|
142
143
|
if (resolved.timeoutMs !== undefined) {
|
|
143
144
|
if (typeof resolved.timeoutMs !== "number" || !Number.isFinite(resolved.timeoutMs) || resolved.timeoutMs < 1) {
|
|
144
145
|
pushIssue(issues, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateRunTaskConfig.js","sourceRoot":"","sources":["../../src/validation/validateRunTaskConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,wCAAwC,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"validateRunTaskConfig.js","sourceRoot":"","sources":["../../src/validation/validateRunTaskConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Upstream feature requests (from `@exellix/ai-tasks`)
|
|
2
|
+
|
|
3
|
+
Fix reports filed for sibling packages. Hand these to the package owners; after they ship, complete the ai-tasks wrap-up.
|
|
4
|
+
|
|
5
|
+
## Invoke contract (8.4+) — **current priority**
|
|
6
|
+
|
|
7
|
+
| Package | Document | Status |
|
|
8
|
+
|---------|----------|--------|
|
|
9
|
+
| `@exellix/ai-skills` 6.0 | [ai-skills-orchestrator-invoke-contract-5.9.md](./ai-skills-orchestrator-invoke-contract-5.9.md) | **shipped** — `ModelConfig.reasoningEffort` |
|
|
10
|
+
| `@exellix/xynthesis` 4.3 | [xynthesis-orchestrator-invoke-contract-4.2.md](./xynthesis-orchestrator-invoke-contract-4.2.md) | **shipped** — `reasoningEffort` on `ExecuteXynthesisActionRequest` (xynthesis should drop `isKnownProfileOrShortcut` import for ai-profiles 2.1) |
|
|
11
|
+
| `@x12i/ai-profiles` 2.1 | — | **shipped** — `catalogLane` required; sync `isKnownProfileOrShortcut` removed (safer — resolve at invoke) |
|
|
12
|
+
| `@exellix/ai-tasks` | [ai-tasks-wrap-up-after-upstream.md](./ai-tasks-wrap-up-after-upstream.md) | **done** in 8.4 — no legacy tiers; resolve at invoke via `resolveAIProfile` |
|
|
13
|
+
|
|
14
|
+
## Older / parallel tracks
|
|
15
|
+
|
|
16
|
+
| Package | Document |
|
|
17
|
+
|---------|----------|
|
|
18
|
+
| `@exellix/ai-skills` | [ai-skills-llm-observability.md](./ai-skills-llm-observability.md) |
|
|
19
|
+
| `@exellix/xynthesis` | [xynthesis-llm-observability.md](./xynthesis-llm-observability.md) |
|
|
20
|
+
| `@x12i/logxer` | [logxer-failure-classification-and-causal-diagnostics.md](./logxer-failure-classification-and-causal-diagnostics.md) |
|
|
21
|
+
| `@x12i/funcx` | [funcx-openrouter-model-id-pass-through.md](./funcx-openrouter-model-id-pass-through.md) |
|
|
22
|
+
| `@exellix/xynthesis` | [xynthesis-openrouter-wire-model-double-prefix-bug.md](./xynthesis-openrouter-wire-model-double-prefix-bug.md) |
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# `@exellix/ai-skills` — orchestrator invoke contract fixes (≥ 5.9)
|
|
2
|
+
|
|
3
|
+
Status: **shipped** in **6.0.0** (`ModelConfig.reasoningEffort`)
|
|
4
|
+
Owner: `@exellix/ai-skills`
|
|
5
|
+
Filed by: `@exellix/ai-tasks`
|
|
6
|
+
Consumer: `@exellix/ai-tasks` 8.4.0, graph-engine 7.x (`RunTaskRequest.modelConfig` triplet)
|
|
7
|
+
Pinned in ai-tasks today: `@exellix/ai-skills@6.0.0`
|
|
8
|
+
|
|
9
|
+
Related (older, partially superseded): [`ai-skills-llm-observability.md`](./ai-skills-llm-observability.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Summary
|
|
14
|
+
|
|
15
|
+
**MAIN** skill invocation should follow the same contract as xynthesis 4.2+:
|
|
16
|
+
|
|
17
|
+
| Orchestrator sends | Package owns internally |
|
|
18
|
+
|--------------------|-------------------------|
|
|
19
|
+
| Wire **model** (`model` / `modelId`) | — |
|
|
20
|
+
| **temperature**, **topP**, other sampling knobs | — |
|
|
21
|
+
| **reasoningEffort** (for Optimixer / provider) | — |
|
|
22
|
+
| — | **max completion tokens** (Optimixer + Catalox catalog) |
|
|
23
|
+
|
|
24
|
+
ai-skills **5.9.11 already enforces the right side** (`ModelConfig.maxTokens?: never`, Optimixer merge before invoke). The remaining gap is the **left side**: the public request must **ask for `reasoningEffort`**, not only read it from Catalox.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Already correct in 5.9.11 (no change needed)
|
|
29
|
+
|
|
30
|
+
### 1. Caller must not set completion token caps on `ModelConfig`
|
|
31
|
+
|
|
32
|
+
- `ModelConfig.maxTokens` is typed `never` and validated/rejected at invoke.
|
|
33
|
+
- `mergeOptimixerPredictionIntoModelConfig` / `skills-optimixer` set the effective cap.
|
|
34
|
+
- Trace echo uses `maxTokensRequested` on `SkillDiagnosticsTrace`, not `invokeRequest.modelConfig.maxTokens`.
|
|
35
|
+
|
|
36
|
+
**Acceptance (already met):** Hosts that pass `modelConfig: { model, temperature, topP }` without `maxTokens` succeed; hosts that pass `maxTokens` get a clear rejection or strip + anomaly log.
|
|
37
|
+
|
|
38
|
+
### 2. Catalox catalog carries Optimixer metadata
|
|
39
|
+
|
|
40
|
+
- `SkillOptimixerCatalogSpec` includes mandatory `reasoningEffort`, `outputIntent`, etc. (`skill-optimixer-catalog.ts`).
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Required fixes
|
|
45
|
+
|
|
46
|
+
### 1. Accept `reasoningEffort` on `RunSkillRequest` (or explicit `ModelConfig` extension) — **shipped in 6.0.0**
|
|
47
|
+
|
|
48
|
+
#### Today (6.0.0)
|
|
49
|
+
|
|
50
|
+
- **`ModelConfig.reasoningEffort`** is optional; resolution: request → Catalox catalog → `"not-applicable"`.
|
|
51
|
+
- ai-tasks forwards via `buildAiSkillsModelConfigForMain` (`modelConfig` tuning passthrough + `llmCall` overlay).
|
|
52
|
+
|
|
53
|
+
#### Why it hurts
|
|
54
|
+
|
|
55
|
+
Orchestrators (graph-engine, ai-tasks) are the **source of truth** for per-node tuning. Catalog defaults are not enough when one skill key is reused with different reasoning depth per graph node. xynthesis 4.2 already threads `reasoningEffort` into Optimixer predict input internally; ai-skills should expose the same knob on the **host-facing** API.
|
|
56
|
+
|
|
57
|
+
#### Asked behavior
|
|
58
|
+
|
|
59
|
+
Add optional:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import type { OptimixerReasoningEffort } from "@x12i/optimixer";
|
|
63
|
+
|
|
64
|
+
// Option A — on ModelConfig (preferred for parity with temperature/topP):
|
|
65
|
+
interface ModelConfig {
|
|
66
|
+
// ...existing fields...
|
|
67
|
+
reasoningEffort?: OptimixerReasoningEffort;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Option B — top-level on RunSkillRequest:
|
|
71
|
+
interface RunSkillRequest {
|
|
72
|
+
reasoningEffort?: OptimixerReasoningEffort;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Resolution order** (document and implement consistently):
|
|
77
|
+
|
|
78
|
+
1. Request override (`modelConfig.reasoningEffort` or `RunSkillRequest.reasoningEffort`)
|
|
79
|
+
2. Catalox `SkillOptimixerCatalogSpec.reasoningEffort`
|
|
80
|
+
3. Package default (e.g. `"not-applicable"`)
|
|
81
|
+
|
|
82
|
+
Forward the resolved value into `buildAiMaxTokensPredictionInput` / Optimixer predict (same as xynthesis `resolveEffectiveMaxTokens`).
|
|
83
|
+
|
|
84
|
+
#### Acceptance
|
|
85
|
+
|
|
86
|
+
- `runSkill({ modelConfig: { model: "…", reasoningEffort: "high" } })` uses `"high"` in Optimixer predict even when catalog says `"medium"`.
|
|
87
|
+
- Trace / `invokeRequest` echo includes effective `reasoningEffort` (or Optimixer diagnostics slice).
|
|
88
|
+
- Omitting the field keeps today’s catalog-only behavior unchanged.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### 2. Document the orchestrator ↔ MAIN invoke contract (README / BREAKING)
|
|
93
|
+
|
|
94
|
+
Add a short **“Host responsibilities”** section:
|
|
95
|
+
|
|
96
|
+
- **Send:** concrete or resolved wire `model`, optional `temperature`, `topP`, `reasoningEffort`, `timeoutMs`.
|
|
97
|
+
- **Do not send:** `maxTokens`, `max_completion_tokens`, `max_output_tokens` on `modelConfig` (rejected).
|
|
98
|
+
- **Token budget:** owned by Optimixer from catalog + prompts; echo `usage.maxTokensRequested` / `metadata.maxTokensRequested` after invoke.
|
|
99
|
+
|
|
100
|
+
Point `@exellix/ai-tasks` integrators to this section instead of legacy `modelConfig.maxTokens` docs.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### 3. Update §2 in `ai-skills-llm-observability.md` (stale)
|
|
105
|
+
|
|
106
|
+
The open item **“`outputExpectation` passthrough + xynthesis-style auto-sizer on RunSkillRequest”** assumed hosts still set `modelConfig.maxTokens`. With 5.9 Optimixer, revise to:
|
|
107
|
+
|
|
108
|
+
- **Optional:** `outputExpectation` on `RunSkillRequest` to steer Optimixer output intent (parity with xynthesis), **not** to supply a literal token count.
|
|
109
|
+
- **Not asked:** restoring caller `modelConfig.maxTokens`.
|
|
110
|
+
|
|
111
|
+
(Can be a separate FR or folded into §1 if output intent is also catalog-only today.)
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Integration note (5.9.12 — ai-tasks)
|
|
116
|
+
|
|
117
|
+
### `analyzeSkillRequest` root export removed
|
|
118
|
+
|
|
119
|
+
- **Today:** `analyzeSkillRequest(catalox, …)` exists in `dist/analysis/` but is **not** re-exported from `@exellix/ai-skills` package root. Use **`ExellixSkillsClient.analyzeSkillRequest`** (or export the function again from `index.js` for Catalox-only callers).
|
|
120
|
+
- **ai-tasks:** `analyzeRunTaskRequest` uses a short-lived `ExellixSkillsClient` until root export returns.
|
|
121
|
+
|
|
122
|
+
### `testContentRegistryConnection` renamed
|
|
123
|
+
|
|
124
|
+
- Use **`ExellixSkillsClient.testCatalogConnection()`** (Catalox reachability; replaces gateway content-registry check).
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Optional (lower priority)
|
|
129
|
+
|
|
130
|
+
### 4. `SkillExecutionError` in default mode
|
|
131
|
+
|
|
132
|
+
Still valuable; see [`ai-skills-llm-observability.md` §1](./ai-skills-llm-observability.md). Independent of token / reasoning contract.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Verification checklist (for ai-skills PR)
|
|
137
|
+
|
|
138
|
+
- [ ] TypeScript: `ModelConfig` / `RunSkillRequest` exposes `reasoningEffort`.
|
|
139
|
+
- [ ] Unit test: request override beats catalog default in Optimixer predict input.
|
|
140
|
+
- [ ] Unit test: `modelConfig.maxTokens` still rejected.
|
|
141
|
+
- [ ] README/BREAKING: host must not send max token caps on `modelConfig`.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## After this ships — ai-tasks follow-up
|
|
146
|
+
|
|
147
|
+
See [`ai-tasks-wrap-up-after-upstream.md`](./ai-tasks-wrap-up-after-upstream.md):
|
|
148
|
+
|
|
149
|
+
- Add `reasoningEffort` to `LlmCallConfig` / tuning passthrough → `buildAiSkillsModelConfigForMain`.
|
|
150
|
+
- Stop forwarding any `maxTokens` / `maxTokensCap` to `runSkill`.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# `@exellix/ai-tasks` — wrap-up after upstream invoke-contract fixes
|
|
2
|
+
|
|
3
|
+
Status: **blocked** on **@exellix/xynthesis ≥ 4.3.1** fixing ai-profiles 2.1 import ([§0](./xynthesis-orchestrator-invoke-contract-4.2.md)); invoke-contract items below are otherwise shipped in **ai-skills 6.0** / **xynthesis 4.3**:
|
|
4
|
+
|
|
5
|
+
- [`ai-skills-orchestrator-invoke-contract-5.9.md`](./ai-skills-orchestrator-invoke-contract-5.9.md)
|
|
6
|
+
- [`xynthesis-orchestrator-invoke-contract-4.2.md`](./xynthesis-orchestrator-invoke-contract-4.2.md)
|
|
7
|
+
|
|
8
|
+
Owner: `@exellix/ai-tasks`
|
|
9
|
+
Target release: **8.4.x** (or **8.5.0** if breaking `llmCall` surface)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Contract (locked with product)
|
|
14
|
+
|
|
15
|
+
**ai-tasks sends to lower layers:**
|
|
16
|
+
|
|
17
|
+
- Model ids via `RunTaskModelConfig` triplet (`preActionModel`, `skillModel`, `postActionModel`) + optional `llmCall.model` overrides.
|
|
18
|
+
- `temperature`, `topP`, **`reasoningEffort`** (once upstream exposes it).
|
|
19
|
+
- **`outputExpectation`** on xynthesis-backed hops only (sizing intent — **not** a token count).
|
|
20
|
+
|
|
21
|
+
**ai-tasks does not send:**
|
|
22
|
+
|
|
23
|
+
- `maxTokens` / `maxTokensCap` on `modelConfig`, `runSkill`, `executeXynthesisAction`, or direct gateway repair (unless product later revives an explicit ceiling knob with a new name).
|
|
24
|
+
|
|
25
|
+
**Lower layers own:**
|
|
26
|
+
|
|
27
|
+
- MAIN caps → `@exellix/ai-skills` Optimixer + Catalox skill catalog.
|
|
28
|
+
- PRE/POST/scoping/utility caps → `@exellix/xynthesis` `resolveEffectiveMaxTokens` inside `executeXynthesisAction`.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Already done in ai-tasks (this branch)
|
|
33
|
+
|
|
34
|
+
- [x] `RunTaskRequest.modelConfig` typed as `RunTaskModelConfig` (not ai-skills `ModelConfig` with `maxTokens`).
|
|
35
|
+
- [x] Removed `maxTokens` from `RunTaskModelConfig`; strip legacy key at ai-skills boundary.
|
|
36
|
+
- [x] Stopped mapping `llmCall.maxTokensCap` → `modelConfig.maxTokens` in `buildAiSkillsModelConfigForMain`.
|
|
37
|
+
- [x] Trace repair: `mapGatewayInvokeToTrace` uses `maxTokensRequested` only (not `modelConfig.maxTokens`).
|
|
38
|
+
- [x] README / BREAKING-CHANGES partial updates for modelConfig + MAIN Optimixer.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## TODO after upstream ships
|
|
43
|
+
|
|
44
|
+
### 1. Remove broken / duplicate token budgeting
|
|
45
|
+
|
|
46
|
+
| File / area | Change |
|
|
47
|
+
|-------------|--------|
|
|
48
|
+
| `src/internal/resolveLlmCallForXynthesis.ts` | Remove `resolveMaxTokens` import; either delete token resolution or reduce to **outputExpectation-only** helper (rename e.g. `resolveLlmOutputExpectationForXynthesis`). |
|
|
49
|
+
| `src/internal/runPostStepLlmCall.ts` | Drop `maxTokens` / `resolveLlmCallForXynthesis` pre-resolution; pass **`outputExpectation`** (required). |
|
|
50
|
+
| `src/synthesis/runStructuredSynthesisRobust.ts` | Repair path: stop `resolveMaxTokens`; do not push `maxTokens` into raw AIGateway `config` unless gateway documents a non-Optimixer escape hatch. |
|
|
51
|
+
| `src/index.ts` | Stop re-exporting `resolveMaxTokens`; export `resolveEffectiveMaxTokens` only if graph-engine needs it (prefer not). |
|
|
52
|
+
| `src/utilities/runUtility.ts` | Remove `maxTokens` forward to xynthesis finalize. |
|
|
53
|
+
| `src/post-steps/resolvePostStepConfig.ts` | Remove env `*_MAX_TOKENS_CAP` wiring if contract is zero host caps (or keep env as deprecated no-op one release). |
|
|
54
|
+
|
|
55
|
+
### 2. Add `reasoningEffort` to ai-tasks surface
|
|
56
|
+
|
|
57
|
+
| File | Change |
|
|
58
|
+
|------|--------|
|
|
59
|
+
| `src/types/llmCall.ts` | `reasoningEffort?: OptimixerReasoningEffort` (re-export type from `@x12i/optimixer` or xynthesis). |
|
|
60
|
+
| `src/types/model-config.ts` | Optional tuning field; passthrough in `modelConfigTuningPassthrough` (not stripped). |
|
|
61
|
+
| `src/types/task-types.ts` | Document on `llmCall` and post-step configs. |
|
|
62
|
+
| `buildAiSkillsModelConfigForMain` | Forward to ai-skills `modelConfig` when upstream §1 ships. |
|
|
63
|
+
| `runPostStepLlmCall` / `task-sdk` synthesis | Forward to `executeXynthesisAction` / structured params. |
|
|
64
|
+
| `src/validation/helpers.ts` | Optional enum validation if finite set. |
|
|
65
|
+
| `src/builders/task-request-builder.ts` | Document in `withLlmCall` JSDoc. |
|
|
66
|
+
|
|
67
|
+
### 3. Fix xynthesis call sites (no new upstream needed except §1–2)
|
|
68
|
+
|
|
69
|
+
| Call site | Pass |
|
|
70
|
+
|-----------|------|
|
|
71
|
+
| `runPostStepLlmCall` → `executeXynthesisAction` | `outputExpectation`, `temperature`, `topP`, `sidekickAction` / `activixActionType`, `reasoningEffort` (when exists) |
|
|
72
|
+
| PRE structured / markdown synthesis (`task-sdk`) | Same via gateway / `runStructuredSynthesisGatewayCall` params |
|
|
73
|
+
| AI scoping | `outputExpectation` (already defaulted in `runScopingCall`) |
|
|
74
|
+
|
|
75
|
+
### 4. Remove / deprecate `maxTokensCap` on `LlmCallConfig`
|
|
76
|
+
|
|
77
|
+
- **Breaking:** remove `maxTokensCap` from `LlmCallConfig`, `RunUtilityRequest.exec`, post-step env fallbacks, validation, README.
|
|
78
|
+
- **Or soft:** mark deprecated in 8.4.1, ignore at runtime, remove in 8.5.0.
|
|
79
|
+
|
|
80
|
+
Confirm with graph-engine before hard removal.
|
|
81
|
+
|
|
82
|
+
### 5. Tests & docs
|
|
83
|
+
|
|
84
|
+
- [ ] `npm run build` + `tsc -p tsconfig.test.json` green (no `resolveMaxTokens` import).
|
|
85
|
+
- [ ] `npm run test` green (mocks via `setSynthesisInvoker` unchanged).
|
|
86
|
+
- [ ] Update [`README.md`](../../README.md) token-budget section (remove `llmCall.maxTokensCap` → `modelConfig.maxTokens` overlay story).
|
|
87
|
+
- [ ] Update [`ai-skills-llm-observability.md`](./ai-skills-llm-observability.md) §2 (stale maxTokens wording).
|
|
88
|
+
- [ ] Update [`xynthesis-llm-observability.md`](./xynthesis-llm-observability.md) superseded sections.
|
|
89
|
+
- [ ] Link all three contract docs from [`BREAKING-CHANGES.md`](../../BREAKING-CHANGES.md) 8.4 section.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Dependency order
|
|
94
|
+
|
|
95
|
+
```mermaid
|
|
96
|
+
flowchart LR
|
|
97
|
+
A[ai-skills: reasoningEffort on RunSkillRequest]
|
|
98
|
+
B[xynthesis: reasoningEffort on ExecuteXynthesisActionRequest]
|
|
99
|
+
C[xynthesis: verify temperature topP all paths]
|
|
100
|
+
D[ai-tasks: remove maxTokens forwarding]
|
|
101
|
+
E[ai-tasks: wire reasoningEffort + outputExpectation]
|
|
102
|
+
A --> E
|
|
103
|
+
B --> E
|
|
104
|
+
C --> E
|
|
105
|
+
D --> E
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Recommended sequence:
|
|
109
|
+
|
|
110
|
+
1. Merge **xynthesis** + **ai-skills** contract PRs (can be parallel).
|
|
111
|
+
2. Bump `package.json` minimums in ai-tasks.
|
|
112
|
+
3. Execute **this wrap-up** checklist in one ai-tasks PR.
|
|
113
|
+
4. Release note in **8.4.x** or **8.5.0** with graph-engine migration (drop `maxTokensCap` on task payloads if removed).
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Quick smoke test after wrap-up
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
npm run build
|
|
121
|
+
npm run test
|
|
122
|
+
# Optional live:
|
|
123
|
+
# npm run test:e2e:synthesis
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Expect: no import of `resolveMaxTokens` from `@exellix/xynthesis/ai-actions`; live POST/PRE calls succeed with `outputExpectation` only (no `maxTokens` on request).
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# `@exellix/xynthesis` — orchestrator invoke contract fixes (≥ 4.2)
|
|
2
|
+
|
|
3
|
+
Status: **partial** — `reasoningEffort` shipped in **4.3.0**; **runtime break** with `@x12i/ai-profiles` **2.1.0** (see §0)
|
|
4
|
+
Owner: `@exellix/xynthesis`
|
|
5
|
+
Filed by: `@exellix/ai-tasks`
|
|
6
|
+
Consumer: `@exellix/ai-tasks` 8.4.0 (PRE / POST / scoping / utilities / structured synthesis)
|
|
7
|
+
Pinned in ai-tasks today: `@exellix/xynthesis@4.3.0`
|
|
8
|
+
|
|
9
|
+
Related (older, partially superseded): [`xynthesis-llm-observability.md`](./xynthesis-llm-observability.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 0. Blocker: `isKnownProfileOrShortcut` import vs ai-profiles 2.1.0
|
|
14
|
+
|
|
15
|
+
**`@exellix/xynthesis@4.3.0`** (and **4.2.x**) still import and re-export **`isKnownProfileOrShortcut`** from **`@x12i/ai-profiles`**. That symbol was **removed from the package root in ai-profiles 2.1.0** (implementation remains under `dist/isKnownProfileOrShortcut.js`).
|
|
16
|
+
|
|
17
|
+
With **`@x12i/ai-profiles@2.1.0`** (required by **`@x12i/ai-tools`** for `formatProfileChoiceKey`), **`import "@exellix/xynthesis"` fails at runtime** before any `executeXynthesisAction` call.
|
|
18
|
+
|
|
19
|
+
**Ask:** Replace with **`isKnownProfileChoice`** + **`matchDiscoveryProfileInput`** (or re-export `isKnownProfileOrShortcut` from ai-profiles 2.1.1). Release **≥ 4.3.1**.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
Xynthesis **4.2** moved token budgeting **inside** the package (`executeXynthesisAction` → `resolveEffectiveMaxTokens` + Optimixer). That is the right design.
|
|
26
|
+
|
|
27
|
+
Remaining gaps for orchestrators (`@exellix/ai-tasks`, graph-engine):
|
|
28
|
+
|
|
29
|
+
| Orchestrator sends | Package owns internally |
|
|
30
|
+
|--------------------|-------------------------|
|
|
31
|
+
| Wire **model** | — |
|
|
32
|
+
| **outputExpectation** (sizing / density intent for Optimixer) | — |
|
|
33
|
+
| **temperature**, **topP** | — |
|
|
34
|
+
| **reasoningEffort** | — |
|
|
35
|
+
| — | **max completion tokens** (Optimixer) |
|
|
36
|
+
|
|
37
|
+
**Do not** require hosts to call removed exports (`resolveMaxTokens` from `@exellix/xynthesis/ai-actions`). Hosts must not pre-compute token counts.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Already correct in 4.2.2 (no change needed)
|
|
42
|
+
|
|
43
|
+
### 1. Token resolution inside `executeXynthesisAction`
|
|
44
|
+
|
|
45
|
+
- Requires `outputExpectation` on every hop (throws if missing).
|
|
46
|
+
- Calls `resolveEffectiveMaxTokens` (async, Optimixer) with `templateId` derived from `sidekickAction` / `activixActionType` / `trace.kind`.
|
|
47
|
+
- Optional `maxTokens` on the request is only a **ceiling** (`callerMaxTokens`), not the primary API.
|
|
48
|
+
|
|
49
|
+
### 2. Public export surface
|
|
50
|
+
|
|
51
|
+
- `@exellix/xynthesis/ai-actions` exports `resolveEffectiveMaxTokens`, `completeOptimixerMaxTokensPrediction`.
|
|
52
|
+
- Sync `resolveMaxTokens` is **not** exported from `ai-actions` (internal legacy paths may still use it).
|
|
53
|
+
|
|
54
|
+
### 3. Structured gateway
|
|
55
|
+
|
|
56
|
+
- `runStructuredSynthesisGatewayCall` accepts `outputExpectation` and forwards to sidekick / execute path.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Required fixes
|
|
61
|
+
|
|
62
|
+
### 1. Accept `reasoningEffort` on all host-facing hop APIs — **shipped in 4.3.0**
|
|
63
|
+
|
|
64
|
+
#### Today (4.3.0)
|
|
65
|
+
|
|
66
|
+
- **`ExecuteXynthesisActionRequest.reasoningEffort`** and **`RunStructuredSynthesisParams.reasoningEffort`** are present and forwarded to Optimixer.
|
|
67
|
+
- ai-tasks forwards `LlmCallConfig.reasoningEffort` on POST steps and structured PRE synthesis.
|
|
68
|
+
|
|
69
|
+
#### Why it hurts
|
|
70
|
+
|
|
71
|
+
`@exellix/ai-tasks` unifies tuning in `LlmCallConfig` for every stage. MAIN gets `reasoningEffort` from ai-skills catalog (once fixed); PRE/POST/scoping must be able to send the same knob into xynthesis without forking Catalox-only configuration.
|
|
72
|
+
|
|
73
|
+
#### Asked behavior
|
|
74
|
+
|
|
75
|
+
Add optional `reasoningEffort?: OptimixerReasoningEffort` to:
|
|
76
|
+
|
|
77
|
+
- `ExecuteXynthesisActionRequest`
|
|
78
|
+
- `RunStructuredSynthesisParams` (and `RunSidekickExecConfig` / gateway exec config if separate)
|
|
79
|
+
- `RunXynthesisFinalizeExecConfig`
|
|
80
|
+
- `RunXynthesisAiActionRequest` / config slice if applicable
|
|
81
|
+
|
|
82
|
+
Forward into `resolveEffectiveMaxTokens({ …, reasoningEffort })`.
|
|
83
|
+
|
|
84
|
+
**Resolution order:**
|
|
85
|
+
|
|
86
|
+
1. Request field
|
|
87
|
+
2. Catalox sidekick / action catalog default (if loaded for that template)
|
|
88
|
+
3. `"not-applicable"`
|
|
89
|
+
|
|
90
|
+
#### Acceptance
|
|
91
|
+
|
|
92
|
+
- `executeXynthesisAction({ …, reasoningEffort: "high", outputExpectation: { … } })` passes `"high"` to Optimixer predict.
|
|
93
|
+
- `invokeSummary` / `tokenResolution` diagnostics echo effective reasoning effort when available.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### 2. Accept and forward `temperature` + `topP` on every public hop (audit)
|
|
98
|
+
|
|
99
|
+
#### Today
|
|
100
|
+
|
|
101
|
+
- `ExecuteXynthesisActionRequest` includes `topP`; temperature is often set on `gateway` only.
|
|
102
|
+
- `@exellix/ai-tasks` `runPostStepLlmCall` sets `gateway.temperature` but **does not pass `topP`** today.
|
|
103
|
+
- Older FR in [`xynthesis-llm-observability.md` §1](./xynthesis-llm-observability.md) may be partially addressed — **verify end-to-end** on:
|
|
104
|
+
- `executeXynthesisAction`
|
|
105
|
+
- `runStructuredSynthesisGatewayCall` / `runSidekickGatewayCall`
|
|
106
|
+
- `runXynthesisFinalize`
|
|
107
|
+
|
|
108
|
+
#### Asked behavior
|
|
109
|
+
|
|
110
|
+
- Document where `temperature` lives (`gateway` vs top-level) and support **one** canonical shape (or accept both with merge rules).
|
|
111
|
+
- Ensure `topP` is forwarded to Funcx / gateway invoker on **all** paths above.
|
|
112
|
+
- Echo applied values in `invokeSummary.executionMetadata`.
|
|
113
|
+
|
|
114
|
+
#### Acceptance
|
|
115
|
+
|
|
116
|
+
- Integration test: `executeXynthesisAction({ topP: 0.8, gateway: { temperature: 0.2, … }, … })` → provider request includes both.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### 3. Orchestrator documentation: do not pre-resolve `maxTokens`
|
|
121
|
+
|
|
122
|
+
#### Today
|
|
123
|
+
|
|
124
|
+
- Integrators (including ai-tasks 8.4) still import `resolveMaxTokens` from `@exellix/xynthesis/ai-actions` — **removed**, causes runtime `SyntaxError`.
|
|
125
|
+
- README / ai-actions example should steer hosts to:
|
|
126
|
+
- Pass **`outputExpectation`** (required)
|
|
127
|
+
- Optionally pass **`maxTokens` only as a rare ceiling** if product keeps that knob
|
|
128
|
+
- Let **`executeXynthesisAction`** run Optimixer
|
|
129
|
+
|
|
130
|
+
#### Asked behavior
|
|
131
|
+
|
|
132
|
+
- **BREAKING / CHANGELOG** entry: `resolveMaxTokens` removed from `ai-actions`; use `executeXynthesisAction` or `resolveEffectiveMaxTokens` for advanced callers.
|
|
133
|
+
- **ai-actions** module doc example updated (already mentions `resolveEffectiveMaxTokens` — expand with `reasoningEffort` once §1 ships).
|
|
134
|
+
|
|
135
|
+
#### Acceptance
|
|
136
|
+
|
|
137
|
+
- `import { resolveMaxTokens } from "@exellix/xynthesis/ai-actions"` fails at build time with a clear migration note.
|
|
138
|
+
- Document that **`outputExpectation` is not a token count** — it is Optimixer input; the numeric cap is internal.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### 4. Clarify or remove host `maxTokens` on `ExecuteXynthesisActionRequest`
|
|
143
|
+
|
|
144
|
+
#### Today
|
|
145
|
+
|
|
146
|
+
- `maxTokens?: number` acts as `callerMaxTokens` ceiling on Optimixer result.
|
|
147
|
+
|
|
148
|
+
#### Product decision (pick one and document)
|
|
149
|
+
|
|
150
|
+
**A (recommended for graph-engine parity):** Deprecate host `maxTokens`; ceiling only via catalog / Optimixer constraints. Orchestrators send `outputExpectation` + `reasoningEffort` only.
|
|
151
|
+
|
|
152
|
+
**B:** Keep `maxTokens` as **optional hard ceiling** for cost guardrails; rename in docs to `maxTokensCeiling` in a future major to avoid confusion.
|
|
153
|
+
|
|
154
|
+
ai-tasks will follow whichever contract is published; default integration is **no host cap**.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Stale items in `xynthesis-llm-observability.md`
|
|
159
|
+
|
|
160
|
+
| Old § | Status in 4.2.2 |
|
|
161
|
+
|-------|------------------|
|
|
162
|
+
| §1 temperature / topP | Re-verify all paths; close or narrow if only sidekick gaps remain |
|
|
163
|
+
| §2 `outputExpectation` on `runSynthesisCall` | Superseded by `executeXynthesisAction` requiring `outputExpectation` |
|
|
164
|
+
| § resolveMaxTokens on ai-actions | **Removed** — replace with this doc |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Verification checklist (for xynthesis PR)
|
|
169
|
+
|
|
170
|
+
- [ ] `ExecuteXynthesisActionRequest.reasoningEffort` (and gateway wrappers).
|
|
171
|
+
- [ ] Optimixer predict receives resolved `reasoningEffort`.
|
|
172
|
+
- [ ] `temperature` + `topP` integration tests on `executeXynthesisAction` + structured gateway.
|
|
173
|
+
- [ ] CHANGELOG: `resolveMaxTokens` not in `ai-actions` exports; migration path documented.
|
|
174
|
+
- [ ] Public contract: hosts send `outputExpectation`, not precomputed `maxTokens`.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## After this ships — ai-tasks follow-up
|
|
179
|
+
|
|
180
|
+
See [`ai-tasks-wrap-up-after-upstream.md`](./ai-tasks-wrap-up-after-upstream.md):
|
|
181
|
+
|
|
182
|
+
- Remove `resolveMaxTokens` imports and `resolveLlmCallForXynthesis` token math.
|
|
183
|
+
- Pass `outputExpectation` + `temperature` + `topP` + `reasoningEffort` into every `executeXynthesisAction` call.
|
|
184
|
+
- Do not forward `maxTokens` / `maxTokensCap` from `RunTaskRequest`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/ai-tasks",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.4.1",
|
|
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",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@x12i/logxer": "$@x12i/logxer"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@exellix/ai-skills": "^
|
|
69
|
+
"@exellix/ai-skills": "^6.0.0",
|
|
70
70
|
"@exellix/memorix-narrix-adapter": "^2.0.0",
|
|
71
71
|
"@exellix/narrix-adapter-chat": "^2.0.0",
|
|
72
72
|
"@exellix/narrix-adapter-docs": "^2.0.0",
|
|
@@ -78,13 +78,13 @@
|
|
|
78
78
|
"@exellix/narrix-ingest": "^2.0.0",
|
|
79
79
|
"@exellix/narrix-runner": "^2.0.0",
|
|
80
80
|
"@exellix/narrix-web-scoper": "^2.0.0",
|
|
81
|
-
"@exellix/xynthesis": "^4.
|
|
81
|
+
"@exellix/xynthesis": "^4.3.0",
|
|
82
82
|
"@x12i/activix": "^8.5.0",
|
|
83
|
-
"@x12i/ai-profiles": "^1.
|
|
83
|
+
"@x12i/ai-profiles": "^2.1.0",
|
|
84
84
|
"@x12i/catalox": "^5.1.3",
|
|
85
85
|
"@x12i/env": "^4.0.1",
|
|
86
86
|
"@x12i/execution-memory-manager": "^1.2.0",
|
|
87
|
-
"@x12i/funcx": "^4.3.
|
|
87
|
+
"@x12i/funcx": "^4.3.3",
|
|
88
88
|
"@x12i/logxer": "^4.6.0",
|
|
89
89
|
"@x12i/rendrix": "^4.3.0",
|
|
90
90
|
"@x12i/search-adapter": "^1.5.1",
|