@exellix/ai-tasks 8.2.9 → 8.4.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 +26 -0
- package/README.md +17 -13
- 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 +10 -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 +43 -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 +15 -5
- 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.map +1 -1
- package/dist/utils/aiProfileModelFormat.js +8 -65
- package/dist/utils/aiProfileModelFormat.js.map +1 -1
- package/dist/utils/resolveAiProfileModel.d.ts +5 -2
- package/dist/utils/resolveAiProfileModel.d.ts.map +1 -1
- package/dist/utils/resolveAiProfileModel.js +3 -1
- 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 +21 -0
- package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md +151 -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 +175 -0
- package/package.json +5 -5
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# `@exellix/ai-tasks` — wrap-up after upstream invoke-contract fixes
|
|
2
|
+
|
|
3
|
+
Status: **blocked** on upstream PRs until both packages ship items in:
|
|
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,175 @@
|
|
|
1
|
+
# `@exellix/xynthesis` — orchestrator invoke contract fixes (≥ 4.2)
|
|
2
|
+
|
|
3
|
+
Status: **open** — blocks clean `@exellix/ai-tasks` 8.4+ integration
|
|
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.2.2`
|
|
8
|
+
|
|
9
|
+
Related (older, partially superseded): [`xynthesis-llm-observability.md`](./xynthesis-llm-observability.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Summary
|
|
14
|
+
|
|
15
|
+
Xynthesis **4.2** moved token budgeting **inside** the package (`executeXynthesisAction` → `resolveEffectiveMaxTokens` + Optimixer). That is the right design.
|
|
16
|
+
|
|
17
|
+
Remaining gaps for orchestrators (`@exellix/ai-tasks`, graph-engine):
|
|
18
|
+
|
|
19
|
+
| Orchestrator sends | Package owns internally |
|
|
20
|
+
|--------------------|-------------------------|
|
|
21
|
+
| Wire **model** | — |
|
|
22
|
+
| **outputExpectation** (sizing / density intent for Optimixer) | — |
|
|
23
|
+
| **temperature**, **topP** | — |
|
|
24
|
+
| **reasoningEffort** | — |
|
|
25
|
+
| — | **max completion tokens** (Optimixer) |
|
|
26
|
+
|
|
27
|
+
**Do not** require hosts to call removed exports (`resolveMaxTokens` from `@exellix/xynthesis/ai-actions`). Hosts must not pre-compute token counts.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Already correct in 4.2.2 (no change needed)
|
|
32
|
+
|
|
33
|
+
### 1. Token resolution inside `executeXynthesisAction`
|
|
34
|
+
|
|
35
|
+
- Requires `outputExpectation` on every hop (throws if missing).
|
|
36
|
+
- Calls `resolveEffectiveMaxTokens` (async, Optimixer) with `templateId` derived from `sidekickAction` / `activixActionType` / `trace.kind`.
|
|
37
|
+
- Optional `maxTokens` on the request is only a **ceiling** (`callerMaxTokens`), not the primary API.
|
|
38
|
+
|
|
39
|
+
### 2. Public export surface
|
|
40
|
+
|
|
41
|
+
- `@exellix/xynthesis/ai-actions` exports `resolveEffectiveMaxTokens`, `completeOptimixerMaxTokensPrediction`.
|
|
42
|
+
- Sync `resolveMaxTokens` is **not** exported from `ai-actions` (internal legacy paths may still use it).
|
|
43
|
+
|
|
44
|
+
### 3. Structured gateway
|
|
45
|
+
|
|
46
|
+
- `runStructuredSynthesisGatewayCall` accepts `outputExpectation` and forwards to sidekick / execute path.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Required fixes
|
|
51
|
+
|
|
52
|
+
### 1. Accept `reasoningEffort` on all host-facing hop APIs
|
|
53
|
+
|
|
54
|
+
#### Today
|
|
55
|
+
|
|
56
|
+
- `reasoningEffort` exists only on **`EffectiveMaxTokensResolutionInput`** (internal to `resolveEffectiveMaxTokens`).
|
|
57
|
+
- **`ExecuteXynthesisActionRequest` has no `reasoningEffort` field.**
|
|
58
|
+
- `executeXynthesisAction` calls Optimixer with `reasoningEffort: input.reasoningEffort ?? "not-applicable"` — hosts cannot override per call.
|
|
59
|
+
|
|
60
|
+
#### Why it hurts
|
|
61
|
+
|
|
62
|
+
`@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.
|
|
63
|
+
|
|
64
|
+
#### Asked behavior
|
|
65
|
+
|
|
66
|
+
Add optional `reasoningEffort?: OptimixerReasoningEffort` to:
|
|
67
|
+
|
|
68
|
+
- `ExecuteXynthesisActionRequest`
|
|
69
|
+
- `RunStructuredSynthesisParams` (and `RunSidekickExecConfig` / gateway exec config if separate)
|
|
70
|
+
- `RunXynthesisFinalizeExecConfig`
|
|
71
|
+
- `RunXynthesisAiActionRequest` / config slice if applicable
|
|
72
|
+
|
|
73
|
+
Forward into `resolveEffectiveMaxTokens({ …, reasoningEffort })`.
|
|
74
|
+
|
|
75
|
+
**Resolution order:**
|
|
76
|
+
|
|
77
|
+
1. Request field
|
|
78
|
+
2. Catalox sidekick / action catalog default (if loaded for that template)
|
|
79
|
+
3. `"not-applicable"`
|
|
80
|
+
|
|
81
|
+
#### Acceptance
|
|
82
|
+
|
|
83
|
+
- `executeXynthesisAction({ …, reasoningEffort: "high", outputExpectation: { … } })` passes `"high"` to Optimixer predict.
|
|
84
|
+
- `invokeSummary` / `tokenResolution` diagnostics echo effective reasoning effort when available.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### 2. Accept and forward `temperature` + `topP` on every public hop (audit)
|
|
89
|
+
|
|
90
|
+
#### Today
|
|
91
|
+
|
|
92
|
+
- `ExecuteXynthesisActionRequest` includes `topP`; temperature is often set on `gateway` only.
|
|
93
|
+
- `@exellix/ai-tasks` `runPostStepLlmCall` sets `gateway.temperature` but **does not pass `topP`** today.
|
|
94
|
+
- Older FR in [`xynthesis-llm-observability.md` §1](./xynthesis-llm-observability.md) may be partially addressed — **verify end-to-end** on:
|
|
95
|
+
- `executeXynthesisAction`
|
|
96
|
+
- `runStructuredSynthesisGatewayCall` / `runSidekickGatewayCall`
|
|
97
|
+
- `runXynthesisFinalize`
|
|
98
|
+
|
|
99
|
+
#### Asked behavior
|
|
100
|
+
|
|
101
|
+
- Document where `temperature` lives (`gateway` vs top-level) and support **one** canonical shape (or accept both with merge rules).
|
|
102
|
+
- Ensure `topP` is forwarded to Funcx / gateway invoker on **all** paths above.
|
|
103
|
+
- Echo applied values in `invokeSummary.executionMetadata`.
|
|
104
|
+
|
|
105
|
+
#### Acceptance
|
|
106
|
+
|
|
107
|
+
- Integration test: `executeXynthesisAction({ topP: 0.8, gateway: { temperature: 0.2, … }, … })` → provider request includes both.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
### 3. Orchestrator documentation: do not pre-resolve `maxTokens`
|
|
112
|
+
|
|
113
|
+
#### Today
|
|
114
|
+
|
|
115
|
+
- Integrators (including ai-tasks 8.4) still import `resolveMaxTokens` from `@exellix/xynthesis/ai-actions` — **removed**, causes runtime `SyntaxError`.
|
|
116
|
+
- README / ai-actions example should steer hosts to:
|
|
117
|
+
- Pass **`outputExpectation`** (required)
|
|
118
|
+
- Optionally pass **`maxTokens` only as a rare ceiling** if product keeps that knob
|
|
119
|
+
- Let **`executeXynthesisAction`** run Optimixer
|
|
120
|
+
|
|
121
|
+
#### Asked behavior
|
|
122
|
+
|
|
123
|
+
- **BREAKING / CHANGELOG** entry: `resolveMaxTokens` removed from `ai-actions`; use `executeXynthesisAction` or `resolveEffectiveMaxTokens` for advanced callers.
|
|
124
|
+
- **ai-actions** module doc example updated (already mentions `resolveEffectiveMaxTokens` — expand with `reasoningEffort` once §1 ships).
|
|
125
|
+
|
|
126
|
+
#### Acceptance
|
|
127
|
+
|
|
128
|
+
- `import { resolveMaxTokens } from "@exellix/xynthesis/ai-actions"` fails at build time with a clear migration note.
|
|
129
|
+
- Document that **`outputExpectation` is not a token count** — it is Optimixer input; the numeric cap is internal.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### 4. Clarify or remove host `maxTokens` on `ExecuteXynthesisActionRequest`
|
|
134
|
+
|
|
135
|
+
#### Today
|
|
136
|
+
|
|
137
|
+
- `maxTokens?: number` acts as `callerMaxTokens` ceiling on Optimixer result.
|
|
138
|
+
|
|
139
|
+
#### Product decision (pick one and document)
|
|
140
|
+
|
|
141
|
+
**A (recommended for graph-engine parity):** Deprecate host `maxTokens`; ceiling only via catalog / Optimixer constraints. Orchestrators send `outputExpectation` + `reasoningEffort` only.
|
|
142
|
+
|
|
143
|
+
**B:** Keep `maxTokens` as **optional hard ceiling** for cost guardrails; rename in docs to `maxTokensCeiling` in a future major to avoid confusion.
|
|
144
|
+
|
|
145
|
+
ai-tasks will follow whichever contract is published; default integration is **no host cap**.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Stale items in `xynthesis-llm-observability.md`
|
|
150
|
+
|
|
151
|
+
| Old § | Status in 4.2.2 |
|
|
152
|
+
|-------|------------------|
|
|
153
|
+
| §1 temperature / topP | Re-verify all paths; close or narrow if only sidekick gaps remain |
|
|
154
|
+
| §2 `outputExpectation` on `runSynthesisCall` | Superseded by `executeXynthesisAction` requiring `outputExpectation` |
|
|
155
|
+
| § resolveMaxTokens on ai-actions | **Removed** — replace with this doc |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Verification checklist (for xynthesis PR)
|
|
160
|
+
|
|
161
|
+
- [ ] `ExecuteXynthesisActionRequest.reasoningEffort` (and gateway wrappers).
|
|
162
|
+
- [ ] Optimixer predict receives resolved `reasoningEffort`.
|
|
163
|
+
- [ ] `temperature` + `topP` integration tests on `executeXynthesisAction` + structured gateway.
|
|
164
|
+
- [ ] CHANGELOG: `resolveMaxTokens` not in `ai-actions` exports; migration path documented.
|
|
165
|
+
- [ ] Public contract: hosts send `outputExpectation`, not precomputed `maxTokens`.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## After this ships — ai-tasks follow-up
|
|
170
|
+
|
|
171
|
+
See [`ai-tasks-wrap-up-after-upstream.md`](./ai-tasks-wrap-up-after-upstream.md):
|
|
172
|
+
|
|
173
|
+
- Remove `resolveMaxTokens` imports and `resolveLlmCallForXynthesis` token math.
|
|
174
|
+
- Pass `outputExpectation` + `temperature` + `topP` + `reasoningEffort` into every `executeXynthesisAction` call.
|
|
175
|
+
- 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.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",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@x12i/logxer": "$@x12i/logxer"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@exellix/ai-skills": "^5.9.
|
|
69
|
+
"@exellix/ai-skills": "^5.9.12",
|
|
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": "^
|
|
83
|
+
"@x12i/ai-profiles": "^2.0.1",
|
|
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.2",
|
|
88
88
|
"@x12i/logxer": "^4.6.0",
|
|
89
89
|
"@x12i/rendrix": "^4.3.0",
|
|
90
90
|
"@x12i/search-adapter": "^1.5.1",
|