@exellix/ai-tasks 9.0.6 → 9.1.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 +22 -4
- package/README.md +5 -5
- package/RUNTASK_REQUEST.md +17 -15
- package/dist/compile/compileTaskConfiguration.d.ts.map +1 -1
- package/dist/compile/compileTaskConfiguration.js +3 -0
- package/dist/compile/compileTaskConfiguration.js.map +1 -1
- package/dist/core/task-sdk.d.ts.map +1 -1
- package/dist/core/task-sdk.js +112 -166
- package/dist/core/task-sdk.js.map +1 -1
- package/dist/invocation/types.d.ts +1 -1
- package/dist/narrix/narrixUnitExecution.js +2 -2
- package/dist/narrix/narrixUnitExecution.js.map +1 -1
- package/dist/node-execution/buildRequestFromNodePlan.d.ts +4 -0
- package/dist/node-execution/buildRequestFromNodePlan.d.ts.map +1 -1
- package/dist/node-execution/buildRequestFromNodePlan.js +4 -13
- package/dist/node-execution/buildRequestFromNodePlan.js.map +1 -1
- package/dist/node-execution/compileProfessionalAnswerRequest.d.ts +2 -0
- package/dist/node-execution/compileProfessionalAnswerRequest.d.ts.map +1 -0
- package/dist/node-execution/compileProfessionalAnswerRequest.js +4 -0
- package/dist/node-execution/compileProfessionalAnswerRequest.js.map +1 -0
- package/dist/node-execution/rejectForbiddenWireFields.d.ts +2 -0
- package/dist/node-execution/rejectForbiddenWireFields.d.ts.map +1 -1
- package/dist/node-execution/rejectForbiddenWireFields.js +42 -7
- package/dist/node-execution/rejectForbiddenWireFields.js.map +1 -1
- package/dist/node-execution/resolveUnitModelSelection.d.ts.map +1 -1
- package/dist/node-execution/resolveUnitModelSelection.js +10 -1
- package/dist/node-execution/resolveUnitModelSelection.js.map +1 -1
- package/dist/observability/graphExecutionRunLogContract.d.ts +1 -1
- package/dist/observability/graphExecutionRunLogContract.js +1 -1
- package/dist/post-steps/audit/auditChecklistFuncxEnvelope.d.ts +19 -3
- package/dist/post-steps/audit/auditChecklistFuncxEnvelope.d.ts.map +1 -1
- package/dist/post-steps/audit/auditChecklistFuncxEnvelope.js +7 -1
- package/dist/post-steps/audit/auditChecklistFuncxEnvelope.js.map +1 -1
- package/dist/post-steps/audit/loadAuditTemplates.d.ts +2 -55
- package/dist/post-steps/audit/loadAuditTemplates.d.ts.map +1 -1
- package/dist/post-steps/audit/loadAuditTemplates.js +3 -38
- package/dist/post-steps/audit/loadAuditTemplates.js.map +1 -1
- package/dist/post-steps/audit/parseAuditFuncxOutput.d.ts +8 -0
- package/dist/post-steps/audit/parseAuditFuncxOutput.d.ts.map +1 -0
- package/dist/post-steps/audit/parseAuditFuncxOutput.js +62 -0
- package/dist/post-steps/audit/parseAuditFuncxOutput.js.map +1 -0
- package/dist/post-steps/audit/parseAuditOutput.d.ts +2 -0
- package/dist/post-steps/audit/parseAuditOutput.d.ts.map +1 -1
- package/dist/post-steps/audit/parseAuditOutput.js +56 -0
- package/dist/post-steps/audit/parseAuditOutput.js.map +1 -1
- package/dist/post-steps/audit/runAudit.d.ts.map +1 -1
- package/dist/post-steps/audit/runAudit.js +53 -113
- package/dist/post-steps/audit/runAudit.js.map +1 -1
- package/dist/post-steps/audit/runAuditFuncxCall.d.ts +18 -0
- package/dist/post-steps/audit/runAuditFuncxCall.d.ts.map +1 -0
- package/dist/post-steps/audit/runAuditFuncxCall.js +59 -0
- package/dist/post-steps/audit/runAuditFuncxCall.js.map +1 -0
- package/dist/synthesis/resolveSourceMaterial.d.ts.map +1 -1
- package/dist/synthesis/resolveSourceMaterial.js +14 -0
- package/dist/synthesis/resolveSourceMaterial.js.map +1 -1
- package/dist/types/task-types.d.ts +4 -3
- package/dist/types/task-types.d.ts.map +1 -1
- package/dist/utils/bridgeRunSkillGatewayMemory.d.ts.map +1 -1
- package/dist/utils/bridgeRunSkillGatewayMemory.js +1 -0
- package/dist/utils/bridgeRunSkillGatewayMemory.js.map +1 -1
- package/dist/utils/executionMemoryInputRecord.d.ts +12 -0
- package/dist/utils/executionMemoryInputRecord.d.ts.map +1 -0
- package/dist/utils/executionMemoryInputRecord.js +28 -0
- package/dist/utils/executionMemoryInputRecord.js.map +1 -0
- package/dist/utils/resolveAiProfileModel.d.ts +1 -1
- package/dist/utils/resolveAiProfileModel.d.ts.map +1 -1
- package/dist/utils/skillTemplateVariables.d.ts +3 -2
- package/dist/utils/skillTemplateVariables.d.ts.map +1 -1
- package/dist/utils/skillTemplateVariables.js +3 -2
- package/dist/utils/skillTemplateVariables.js.map +1 -1
- package/dist/validation/validateProfessionalAnswerContract.d.ts +8 -0
- package/dist/validation/validateProfessionalAnswerContract.d.ts.map +1 -0
- package/dist/validation/validateProfessionalAnswerContract.js +45 -0
- package/dist/validation/validateProfessionalAnswerContract.js.map +1 -0
- package/dist/validation/validateRunTaskConfig.d.ts.map +1 -1
- package/dist/validation/validateRunTaskConfig.js +2 -0
- package/dist/validation/validateRunTaskConfig.js.map +1 -1
- package/documenations/record-and-template-variables.md +21 -13
- package/documenations/run-task-execution-flow.md +1 -1
- package/documenations/schemas/v1/run-task-request.json +1 -1
- package/documenations/upstream-feature-requests/README.md +9 -5
- package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md +1 -1
- package/documenations/upstream-feature-requests/funcx-4.9.13-open-items.md +62 -0
- package/documenations/upstream-feature-requests/funcx-gap-analysis-cr-fr.md +401 -0
- package/documenations/upstream-feature-requests/funcx-pre-post-sidekick-actions.md +1 -0
- package/documenations/upstream-feature-requests/graph-engine-runtask-contract-alignment-investigation.md +370 -0
- package/documenations/upstream-feature-requests/xynthesis-ai-profiles-2.1-import-break.md +2 -2
- package/documenations/upstream-feature-requests/xynthesis-openrouter-wire-model-double-prefix-bug.md +1 -1
- package/documenations/upstream-feature-requests/xynthesis-orchestrator-invoke-contract-4.2.md +1 -1
- package/package.json +14 -17
- package/.docs/DOWNSTREAM_ENV.md +0 -42
- package/.docs/FEEDBACK_TO_CLIENT_DOWNSTREAM_FIXES.md +0 -64
- package/.docs/INTERMEDIATE_STEPS.md +0 -82
- package/.docs/activity-structure.md +0 -31
- package/.docs/ai-task-ai-scoping-spec.md +0 -338
- package/.docs/ai-tasks-model-profile-aliases-7x.md +0 -96
- package/.docs/blockers-and-issues.md +0 -346
- package/.docs/building-runTask-sdk.md +0 -659
- package/.docs/building-skill-execution-orchestrator.md +0 -968
- package/.docs/code-used-before/run-task.txt +0 -39
- package/.docs/code-used-before/task-executor.ts.old +0 -57
- package/.docs/code-used-before/test-run-task.ts.old +0 -42
- package/.docs/code-used-before/types.txt +0 -23
- package/.docs/env-ready-policy.md +0 -40
- package/.docs/flow-io/flow-README.md +0 -76
- package/.docs/flow-io/narrix.md +0 -124
- package/.docs/flow-io/web-scoping.md +0 -135
- package/.docs/flow-io/xynthesis-post.md +0 -154
- package/.docs/flow-io/xynthesis-pre.md +0 -181
- package/.docs/gap-analysis.md +0 -201
- package/.docs/integration-facts-ai-tasks.md +0 -109
- package/.docs/investigation/ai-skills.md +0 -170
- package/.docs/investigation/external-packages-assignments.md +0 -66
- package/.docs/investigation/integration-summary.md +0 -20
- package/.docs/investigation/narrix-catalox.md +0 -29
- package/.docs/investigation/workplan-close-graph-engine-gaps.md +0 -101
- package/.docs/logging-stack.md +0 -30
- package/.docs/memory-narrix-adapter-developer-guide.md +0 -402
- package/.docs/memory-narrix-adapter-requirements.md +0 -112
- package/.docs/narrix-context-consumption-gap.md +0 -184
- package/.docs/narrix-context-downstream-report.md +0 -30
- package/.docs/narrix-ingest-and-packs-library-spec.md +0 -240
- package/.docs/narrix-record-input-current-design.md +0 -48
- package/.docs/pacakge.md +0 -48
- package/.docs/possible-components/README.md +0 -11
- package/.docs/possible-components/integration/README.md +0 -10
- package/.docs/possible-components/integration/gaps-when-merging.md +0 -16
- package/.docs/possible-components/integration/platform.md +0 -54
- package/.docs/possible-components/integration/reintegrate-into-ai-tasks.md +0 -26
- package/.docs/possible-components/integration/roadmap-and-checklists.md +0 -54
- package/.docs/possible-components/post-component/README.md +0 -18
- package/.docs/possible-components/post-component/builder-guide.md +0 -175
- package/.docs/possible-components/post-component/gaps-and-artifacts.md +0 -52
- package/.docs/possible-components/post-component/handler-audit.md +0 -47
- package/.docs/possible-components/post-component/handler-polish.md +0 -41
- package/.docs/possible-components/post-component/unified-protocol.md +0 -59
- package/.docs/possible-components/pre-component/README.md +0 -22
- package/.docs/possible-components/pre-component/builder-guide.md +0 -127
- package/.docs/possible-components/pre-component/gaps-and-artifacts.md +0 -35
- package/.docs/possible-components/pre-component/handler-ai-scoping.md +0 -45
- package/.docs/possible-components/pre-component/handler-narrix-preprocessor.md +0 -49
- package/.docs/possible-components/pre-component/handler-narrix-system2.md +0 -35
- package/.docs/possible-components/pre-component/handler-synthesized-context.md +0 -65
- package/.docs/possible-components/pre-component/handler-web-scope.md +0 -29
- package/.docs/possible-components/pre-component/unified-protocol.md +0 -89
- package/.docs/prefer-openrouter-routing-policy.md +0 -114
- package/.docs/questions-for-ai-skills.md +0 -123
- package/.docs/realtime-narrixing-gap-analysis.md +0 -40
- package/.docs/realtime-narrixing.md +0 -433
- package/.docs/run-context-object.md +0 -32
- package/.docs/session-id-usage.md +0 -26
- package/.docs/skill-library-spec.md +0 -249
- package/.docs/synthesized-context-strategy-spec.md +0 -906
- package/.docs/upstream-issue/2026-03-21_woroces-ai-tasks_ISSUE-006_web-scope-question-from-cni-entity.md +0 -46
- package/.docs/web-scopper-embed.md +0 -93
- package/.docs/xynthesis-wiring-and-io.md +0 -12
- package/documenations/activix-feature-request-identity.md +0 -123
- package/documenations/bug-report-xynthesis-and-synthesis-call.md +0 -217
- package/documenations/feature-request-ai-skills-raw-template-access.md +0 -82
- package/documenations/feature-request-athenix-core-directive.md +0 -145
- package/documenations/feature-request-athenix-token-extraction.md +0 -124
- package/documenations/funcx-upstream-github-issues-draft.md +0 -153
- package/documenations/identity-metadata-contract.md +0 -165
- package/documenations/run-task-single-run-checklist.md +0 -109
- package/documenations/sessions/2026-06-08-subnets-model-resolution/CR-1-no-concrete-wire-in-graph-plans.md +0 -93
- package/documenations/sessions/2026-06-08-subnets-model-resolution/CR-2-skillModel-profile-only-at-storage.md +0 -88
- package/documenations/sessions/2026-06-08-subnets-model-resolution/CR-3-reject-concrete-models-in-catalog-rows.md +0 -76
- package/documenations/sessions/2026-06-08-subnets-model-resolution/FR-1-suggested-profile-in-catalogs.md +0 -96
- package/documenations/sessions/2026-06-08-subnets-model-resolution/FR-2-graph-engine-failure-phase-attribution.md +0 -92
- package/documenations/sessions/2026-06-08-subnets-model-resolution/INVESTIGATION-original-bug.md +0 -182
- package/documenations/sessions/2026-06-08-subnets-model-resolution/PROBLEM.md +0 -236
- package/documenations/sessions/2026-06-08-subnets-model-resolution/README.md +0 -11
- package/documenations/sessions/2026-06-08-subnets-model-resolution/funcx-test-resolveModel.cheapDefaultWireSlug.test.ts +0 -117
- package/documenations/upstream-feature-requests/ai-tasks-wrap-up-after-upstream.md +0 -129
- package/documenations/upstream-feedback-request-shape-clarification.md +0 -101
- package/documenations/web-context-precedence.md +0 -33
- package/documenations/xynthesis-activix-telemetry.md +0 -28
|
@@ -1,32 +1,40 @@
|
|
|
1
1
|
# Record fields and template variables (`runTask`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
How **task input**, **execution memory buckets**, and **record-shaped** payloads reach gateway templates and skills — and how that relates to NARRIX pre-processing.
|
|
4
|
+
|
|
5
|
+
## Scope buckets (graph-engine 5.13+)
|
|
6
|
+
|
|
7
|
+
| Scope | Authoring / wire | Template tokens |
|
|
8
|
+
|--------|------------------|-----------------|
|
|
9
|
+
| **Job / graph** | `executionMemory.jobVariables` (legacy top-level `variables` ≡ job bag on MAIN) | `{{jobVariables.*}}` |
|
|
10
|
+
| **Node / task** | `executionMemory.taskVariables` | `{{taskVariables.*}}` |
|
|
11
|
+
| **Payload** | top-level `input`, `xynthesized`, `smartInput` | `{{input}}`, `{{smartInput}}`, … |
|
|
12
|
+
|
|
13
|
+
Node-scoped values such as **`question`** for `skills/professional-answer` belong in **`executionMemory.taskVariables.question`**, not in `variables` or merged into `input` alone.
|
|
4
14
|
|
|
5
15
|
## Default: forward opaque fields (no allowlist)
|
|
6
16
|
|
|
7
|
-
|
|
17
|
+
On the **MAIN** LLM path, `mergeSkillTemplateVariables` builds the job-scope **`variables`** object for legacy templates. It does **not** fold `executionMemory.taskVariables` into that bag.
|
|
8
18
|
|
|
9
19
|
- **`jobContext`** is merged first (lowest precedence).
|
|
10
|
-
- Explicit **`variables`** are merged on top.
|
|
11
|
-
- When **`input`** is a plain object,
|
|
12
|
-
|
|
13
|
-
There is **no** stripping of unknown or “enrichment” keys such as **`mitreAttack`**, nested blobs, or vendor-specific fields, as long as they live on the **`input`** object (or on nested objects under `input`, e.g. `input.record.mitreAttack`).
|
|
20
|
+
- Explicit **`variables`** (job scope) are merged on top.
|
|
21
|
+
- When **`input`** is a plain object, enumerable keys are copied into **`variables.inputs`**.
|
|
14
22
|
|
|
15
|
-
|
|
23
|
+
There is **no** stripping of unknown keys on **`input`** (e.g. `input.record.mitreAttack`).
|
|
16
24
|
|
|
17
25
|
## Reserved / runtime-owned names (conventions)
|
|
18
26
|
|
|
19
|
-
|
|
27
|
+
Avoid using these on **`input`** for domain data when they conflict with runtime injection:
|
|
20
28
|
|
|
21
|
-
- **`aiScoped`** —
|
|
22
|
-
- **`
|
|
29
|
+
- **`aiScoped`** — injected by the AI scoping pre-step when configured.
|
|
30
|
+
- **`outputContract`** — belongs on the run request / `taskVariable`, not inside `input` for `professional-answer`.
|
|
23
31
|
|
|
24
|
-
Memory surfaces (**`jobMemory`**, **`taskMemory`**, **`executionMemory`**) use their own keys (`_narrix`, `webContext`, `synthesizedContext`, `
|
|
32
|
+
Memory surfaces (**`jobMemory`**, **`taskMemory`**, **`executionMemory`**) use their own keys (`_narrix`, `webContext`, `synthesizedContext`, `taskVariables`, `jobVariables`, etc.). Domain records are usually under **`input`**, **`executionMemory.input`** (flat MAIN bucket — not `input.raw`), or NARRIX attachments. See [run-task-execution-flow.md](./run-task-execution-flow.md).
|
|
25
33
|
|
|
26
34
|
## NARRIX `record` medium
|
|
27
35
|
|
|
28
|
-
For **`medium: "record"`**, the object passed to Narrix is produced by **`@woroces/memory-narrix-adapter`** from configured memory paths.
|
|
36
|
+
For **`medium: "record"`**, the object passed to Narrix is produced by **`@woroces/memory-narrix-adapter`** from configured memory paths. Enrichment fields on that object are preserved unless a future blocklist is introduced.
|
|
29
37
|
|
|
30
38
|
## Regression expectation
|
|
31
39
|
|
|
32
|
-
A record that includes **`mitreAttack`** on
|
|
40
|
+
A record that includes **`mitreAttack`** on task **`input`** (e.g. under **`input.record`**) is reflected unchanged under **`variables.inputs`** for the MAIN skill invocation when using the legacy merge helper.
|
|
@@ -144,7 +144,7 @@ flowchart LR
|
|
|
144
144
|
|
|
145
145
|
## Diagnostics, trace mode, and observability digest
|
|
146
146
|
|
|
147
|
-
**Current `runTask` implementation (`task-sdk.ts`)** does **not** implement **`request.diagnostics`**, **`appendRunLog`**, **`RunLogEntry` buffering**, or a Logxer-shaped sink on the request. Orchestrators that merge **`runLog`** / **`exellixRunLog`** / **`logxerRunId`** / **`logxerCorrelationId`** into **`response.metadata`** own that contract — see [
|
|
147
|
+
**Current `runTask` implementation (`task-sdk.ts`)** does **not** implement **`request.diagnostics`**, **`appendRunLog`**, **`RunLogEntry` buffering**, or a Logxer-shaped sink on the request. Orchestrators that merge **`runLog`** / **`exellixRunLog`** / **`logxerRunId`** / **`logxerCorrelationId`** into **`response.metadata`** own that contract — see [external-packages-assignments.md](../../archived/ai-tasks/.docs/investigation/external-packages-assignments.md).
|
|
148
148
|
|
|
149
149
|
- **`executionMode: "trace"`**: forwards trace-related flags to **`@exellix/ai-skills`** `runSkill`; see **`RunSkillDiagnostics`** / **`SkillDiagnosticsTrace`** on that package. Structured **SDK log lines** use **`@x12i/logxer`** from ai-skills execution — not the orchestrator run-log row shape.
|
|
150
150
|
- **`extractAiTasksObservabilityFromRunTaskResponse`**: builds a versioned **`AiTasksObservabilityDigest`** from `metadata` + execution memory for graph UIs (optional attachment).
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"executionTrace": {
|
|
16
16
|
"type": "object",
|
|
17
|
-
"description": "Optional mutable
|
|
17
|
+
"description": "Optional mutable execution-trace v2 handle; executor appends unit.* and model.invocation.* events.",
|
|
18
18
|
"additionalProperties": true
|
|
19
19
|
},
|
|
20
20
|
"skillKey": { "type": "string", "minLength": 1 },
|
|
@@ -11,16 +11,20 @@ Fix reports filed for sibling packages. Hand these to the package owners; after
|
|
|
11
11
|
| `@exellix/xynthesis` 4.3 | [xynthesis-orchestrator-invoke-contract-4.2.md](./xynthesis-orchestrator-invoke-contract-4.2.md) | **partial** — `reasoningEffort` shipped in 4.3.0; ai-profiles 2.1 import fixed in **4.3.1** (see CR above) |
|
|
12
12
|
| `@exellix/xynthesis` 4.4 | [**xynthesis-execution-strategies-option-a.md**](./xynthesis-execution-strategies-option-a.md) | **shipped** — execution-strategy sidekick actions; ai-tasks 8.5+ uses xynthesis (FuncX path deprecated) |
|
|
13
13
|
| `@x12i/ai-profiles` 2.1 | — | **shipped** — `catalogLane` required; sync `isKnownProfileOrShortcut` removed (safer — resolve at invoke) |
|
|
14
|
-
| `@exellix/ai-tasks` | [ai-tasks-wrap-up-after-upstream.md](
|
|
14
|
+
| `@exellix/ai-tasks` | [ai-tasks-wrap-up-after-upstream.md](../../../archived/ai-tasks/documenations/upstream-feature-requests/superseded/ai-tasks-wrap-up-after-upstream.md) | **done** in 8.4 — no legacy tiers; resolve at invoke via `resolveAIProfile` |
|
|
15
15
|
|
|
16
16
|
## FuncX generic hosting (xynthesis domain)
|
|
17
17
|
|
|
18
18
|
| Package | Document | Status |
|
|
19
19
|
|---------|----------|--------|
|
|
20
|
-
| `@x12i/funcx` **4.
|
|
21
|
-
| `@x12i/funcx` | [
|
|
22
|
-
| `@
|
|
23
|
-
| `@
|
|
20
|
+
| `@x12i/funcx` **4.9.13** | [**funcx-4.9.13-open-items.md**](./funcx-4.9.13-open-items.md) | **No open FuncX items** @ 4.9.13 — consumer follow-up only |
|
|
21
|
+
| `@x12i/funcx` **4.9.11** | [funcx-4.9.11-open-items.md](../../../archived/ai-tasks/documenations/upstream-feature-requests/superseded/funcx-4.9.11-open-items.md) | Superseded — historical open list |
|
|
22
|
+
| `@x12i/funcx` **4.9.9** | [**funcx-4.9.9-residual-upstream-cr-fr.md**](../../../archived/ai-tasks/documenations/upstream-feature-requests/superseded/funcx-4.9.9-residual-upstream-cr-fr.md) | Superseded for filing — historical @ 4.9.9 |
|
|
23
|
+
| `@x12i/funcx` | [**funcx-gap-analysis-cr-fr.md**](./funcx-gap-analysis-cr-fr.md) | Full history + closed items; §10 = 4.9.11 recheck |
|
|
24
|
+
| `@x12i/funcx` **4.4.0+** | [**funcx-generic-xynthesis-hosting.md**](./funcx-generic-xynthesis-hosting.md) | **mostly shipped** @ 4.9.9 — FR-GEN-1, FR-GEN-4 closed |
|
|
25
|
+
| `@x12i/funcx` | [**funcx-pre-post-sidekick-actions.md**](./funcx-pre-post-sidekick-actions.md) | **mostly shipped** @ 4.9.9 — built-ins callable; CR-FUNCX-2 + FR-GEN-11 remain |
|
|
26
|
+
| `@exellix/xynthesis` | `invokeFuncxRun.ts`, `sidekickFuncxCatalogMap.ts` | **shipped** — FuncX `run()` only in gateway + execution strategy (no flag) |
|
|
27
|
+
| `@exellix/ai-tasks` | `runAuditFuncxCall.ts`, `parseAuditChecklistOutput` | **shipped** — audit checklist/merge via FuncX only |
|
|
24
28
|
|
|
25
29
|
## Older / parallel tracks
|
|
26
30
|
|
package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md
CHANGED
|
@@ -144,7 +144,7 @@ Still valuable; see [`ai-skills-llm-observability.md` §1](./ai-skills-llm-obser
|
|
|
144
144
|
|
|
145
145
|
## After this ships — ai-tasks follow-up
|
|
146
146
|
|
|
147
|
-
See [`ai-tasks-wrap-up-after-upstream.md`](
|
|
147
|
+
See [`ai-tasks-wrap-up-after-upstream.md`](../../../archived/ai-tasks/documenations/upstream-feature-requests/superseded/ai-tasks-wrap-up-after-upstream.md):
|
|
148
148
|
|
|
149
149
|
- Add `reasoningEffort` to `LlmCallConfig` / tuning passthrough → `buildAiSkillsModelConfigForMain`.
|
|
150
150
|
- Stop forwarding any `maxTokens` / `maxTokensCap` to `runSkill`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# `@x12i/funcx` — open items @ 4.9.13
|
|
2
|
+
|
|
3
|
+
**Validated:** `@x12i/funcx` **4.9.13** (live OpenRouter, 2026-06-12)
|
|
4
|
+
**Filed by:** `@exellix/ai-tasks` + `@exellix/xynthesis`
|
|
5
|
+
**Evidence:** `temp/funcx-functions/` (`live-run-summary.md`, `_live-results.json`)
|
|
6
|
+
|
|
7
|
+
**No open FuncX upstream items remain** from the 4.9.11 tracker. All four prior gaps are closed in the package @ 4.9.13.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Recheck results
|
|
12
|
+
|
|
13
|
+
| Suite | Result |
|
|
14
|
+
|-------|--------|
|
|
15
|
+
| Mock (`npm run test:mock`) | **10/10** |
|
|
16
|
+
| Live batch, `transportRetries: 0` | **9/10** — `pre/synthesize` `fetch failed` @ ~30s |
|
|
17
|
+
| Live `pre/synthesize` + `transportRetries: 2` | **OK** (~5s) |
|
|
18
|
+
| `post/audit-checklist` output | Markdown string (`### Checks` / `### Overall feedback`) |
|
|
19
|
+
| `post/audit-merge` output | Plain text string |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Closed @ 4.9.13 (was open @ 4.9.11)
|
|
24
|
+
|
|
25
|
+
| Id | Was | Fixed in |
|
|
26
|
+
|----|-----|----------|
|
|
27
|
+
| **CR-FUNCX-5** | Opaque `fetch failed`; flaky `pre/synthesize` | **4.9.9** `error.cause` on `NxAiApiError`; **4.9.12** embedder retry docs; **4.9.13** `RunOptions.transportRetries` |
|
|
28
|
+
| **FR-GEN-3** | Output types drifted from runtime | **4.9.12** — `getFuncxOutputSchema` CI; **4.9.13** manifest `outputSchemaType: "string"` for checklist + merge |
|
|
29
|
+
| **FR-GEN-9** | No FuncX parity CI | **4.9.12+** — `sidekickPromptParity.test.ts`, `@x12i/funcx/fixtures` + `promptHash`, `normalizePromptForParity` / `hashSidekickPrompt` exports |
|
|
30
|
+
| **FR-GEN-11** | Thin merge prompt | **4.9.13** — `post-audit-merge` Catalox `prompt.md` includes `original_input`, rich `candidate_a/b` checks; golden envelope in fixtures |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Consumer follow-up (mono-repo)
|
|
35
|
+
|
|
36
|
+
**Shipped @ 4.9.13 cutover (2026-06):**
|
|
37
|
+
|
|
38
|
+
| Task | Status |
|
|
39
|
+
|------|--------|
|
|
40
|
+
| `transportRetries: 2` in `invokeFuncxRun.ts` | **Done** |
|
|
41
|
+
| FR-GEN-9 parity CI (`sidekickFuncxPromptParity.unit.ts` vs `@x12i/funcx/content-seed`) | **Done** — wired in `xynthesis` `npm test` |
|
|
42
|
+
| FuncX-only sidekick / execution-strategy / audit (no `XYNTHESIS_FUNCX_SIDEKICK` flag) | **Done** |
|
|
43
|
+
| Structured-only PRE synthesis (no markdown path) | **Done** |
|
|
44
|
+
| Catalox seed from `@x12i/funcx/content-seed` | **Done** |
|
|
45
|
+
| Delete disk sidekick templates under `xynthesis/templates/` | **Done** (finalize retained) |
|
|
46
|
+
| Delete audit Handlebars templates (`system.md`, `user.txt`, `synthesis.md`) | **Done** (`feedback-injection.md` kept) |
|
|
47
|
+
|
|
48
|
+
**Out of scope here:** live golden e2e with OpenRouter (run `xynthesis` `test:integration` when key is available).
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Evidence snippets
|
|
53
|
+
|
|
54
|
+
**`transportRetries` (4.9.13 README):**
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
await run("pre-synthesize", envelope, { client, transportRetries: 2 });
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Rich merge fixture** — `@x12i/funcx/fixtures/sidekicks/post-audit-merge-envelope.json` includes `candidateA`/`candidateB` with `cycle`, `score`, `failedChecks[]`, `passedChecks[]`, `customSynthesisGuidelines`.
|
|
61
|
+
|
|
62
|
+
**Output types** — `postAuditChecklistOutput = string`, `postAuditMergeOutput = string` in `@x12i/funcx/functions` `.d.ts`.
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
# `@x12i/funcx` — gap analysis (CRs & FRs for upstream)
|
|
2
|
+
|
|
3
|
+
**Filed by:** `@exellix/ai-tasks` + `@exellix/xynthesis`
|
|
4
|
+
**Baseline validated:** `@x12i/funcx` **4.9.13** (live OpenRouter, 2026-06-12)
|
|
5
|
+
**Evidence:** `temp/funcx-functions/` live runs, `instructions-comparison.md`, `live-run-summary.md`
|
|
6
|
+
|
|
7
|
+
**Related docs:**
|
|
8
|
+
|
|
9
|
+
- [**funcx-4.9.9-residual-upstream-cr-fr.md**](../../../archived/ai-tasks/documenations/upstream-feature-requests/superseded/funcx-4.9.9-residual-upstream-cr-fr.md) — **file these to `x12i/funcx`** (copy-paste GitHub issues; blocks deleting consumer workarounds)
|
|
10
|
+
- [funcx-generic-xynthesis-hosting.md](./funcx-generic-xynthesis-hosting.md) — envelope / `run()` baseline
|
|
11
|
+
- [funcx-pre-post-sidekick-actions.md](./funcx-pre-post-sidekick-actions.md) — per-function sidekick specs
|
|
12
|
+
- [funcx-upstream-github-issues-draft.md](../funcx-upstream-github-issues-draft.md) — GitHub issue templates
|
|
13
|
+
- Consumer specs: `temp/funcx-functions/*/instructions-template.md`, `input-object.md`, `output-object.md`
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 0. Executive summary
|
|
18
|
+
|
|
19
|
+
| Area | 4.9.9 status | FuncX work left? |
|
|
20
|
+
|------|--------------|------------------|
|
|
21
|
+
| **Registry** — 10 mapped ids callable via `run()` | **Done** | No |
|
|
22
|
+
| **Prompt content** — match xynthesis / ai-tasks disk templates | **Done** (FR-GEN-1, CR-FUNCX-1) | CI only (FR-GEN-9) |
|
|
23
|
+
| **Output contracts** — especially audit-checklist markdown | **Done @ 4.9.11** | No (CR-FUNCX-2 closed) |
|
|
24
|
+
| **Envelope richness** — audit-merge full template fields | **Done @ 4.9.11** (plain text merge output) | Monitor rich-envelope prompt parity (FR-GEN-11) |
|
|
25
|
+
| **Orchestrator ergonomics** — sampling on `run()` | **Done** (`temperature`, `topP`, `reasoningEffort`) | No |
|
|
26
|
+
| **Types / schemas exported** | **Done** (`SidekickGenericEnvelope`, `getFuncx*Schema`) | FR-GEN-3 publish polish |
|
|
27
|
+
|
|
28
|
+
**Mono-repo wiring** (FuncX `run()` only in gateway — no flag) — **shipped** in xynthesis + ai-tasks audit (2026-06). See §7.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 1. What FuncX 4.9.8 already delivered (closed items)
|
|
33
|
+
|
|
34
|
+
Update prior trackers that still say “Open @ 4.4.0”:
|
|
35
|
+
|
|
36
|
+
| Id | Topic | Status @ 4.9.8 |
|
|
37
|
+
|----|--------|----------------|
|
|
38
|
+
| **FR-PRE-POST-1** | `pre-synthesize` built-in | **Shipped** (alias; `pre/synthesize` normalizes) |
|
|
39
|
+
| **FR-PRE-POST-3** | `post-audit` | **Shipped** |
|
|
40
|
+
| **FR-PRE-POST-4** | `post-fix` | **Shipped** |
|
|
41
|
+
| **FR-PRE-POST-5** | `post-pick-best`, `post-craft-final` | **Shipped** |
|
|
42
|
+
| **FR-PRE-POST-2** (registry only) | `post-audit-checklist`, `post-audit-merge` | **Shipped** (callable; content/contract gaps remain) |
|
|
43
|
+
| **FR-GEN-0** | `run()`, `getRunJsonResult`, `buildAskAttribution`, execution/research generics | **Shipped** |
|
|
44
|
+
| **FR-GEN-6** (registry) | Checklist / merge ids | **Shipped** → content in CR-FUNCX-2 / FR-GEN-11 |
|
|
45
|
+
| **FR-GEN-8** | `strategyArgs` on wire | **Closed (consumer merges into `args`)** |
|
|
46
|
+
|
|
47
|
+
**Live proof:** `temp/funcx-functions` — 10/10 `run()` success on 4.9.8 (2 transient `fetch failed` on first batch; retries OK).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 2. Gap taxonomy
|
|
52
|
+
|
|
53
|
+
| Kind | Meaning | File to FuncX as |
|
|
54
|
+
|------|---------|------------------|
|
|
55
|
+
| **CR** | Shipped built-in behaves differently from documented consumer contract | Bug / contract fix |
|
|
56
|
+
| **FR** | New capability or content not yet meeting consumer spec | Enhancement |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Change requests (CR) — fix shipped behavior
|
|
61
|
+
|
|
62
|
+
### CR-FUNCX-1 — Built-ins use generic prompts, not Catalox / consumer templates
|
|
63
|
+
|
|
64
|
+
**Priority:** P0
|
|
65
|
+
**Affects:** All 10 mapped functions
|
|
66
|
+
**Evidence:** `temp/funcx-functions/instructions-comparison.md`; FuncX `dist/functions/index.js` uses one-line system + full envelope JSON dump for execution/research; post/pre same pattern on 4.9.8.
|
|
67
|
+
|
|
68
|
+
**Today:**
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
System: "Produce execution planning output only."
|
|
72
|
+
User: "You implement the FuncX built-in execution/plan… Payload (JSON): { … }"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Expected:** Content-backed built-ins render Catalox `fx/{id}/` instructions equivalent to:
|
|
76
|
+
|
|
77
|
+
- `xynthesis/templates/{actionType}/system-structured.md` + `user-structured.md`
|
|
78
|
+
- `ai-tasks/templates/post-steps/audit/system.md` + `user.txt` / `synthesis.md`
|
|
79
|
+
|
|
80
|
+
**Consumer spec:** `temp/funcx-functions/*/instructions-template.md`
|
|
81
|
+
|
|
82
|
+
**Acceptance:**
|
|
83
|
+
|
|
84
|
+
- [ ] Each of the 10 ids loads Catalox content (not hard-coded generic stub) when `content:primitives:sync` is deployed.
|
|
85
|
+
- [ ] Rendered system+user prompt byte-matches normalized disk template for golden fixture envelopes (FR-GEN-9).
|
|
86
|
+
- [ ] `model` on envelope body still honored.
|
|
87
|
+
|
|
88
|
+
**Depends on:** FR-GEN-1 (template variable mapping).
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### CR-FUNCX-2 — `post/audit-checklist` output is JSON; consumer requires markdown
|
|
93
|
+
|
|
94
|
+
**Priority:** P0
|
|
95
|
+
**Affects:** `post/audit-checklist`
|
|
96
|
+
**Evidence:** Live 4.9.8 returned `{ checks: [{ check, kind, passed, feedback }], overall_feedback }`. ai-tasks expects markdown with `### Checks` and `### Overall feedback` (`templates/post-steps/audit/system.md`).
|
|
97
|
+
|
|
98
|
+
**Expected output (markdown):**
|
|
99
|
+
|
|
100
|
+
```markdown
|
|
101
|
+
### Checks
|
|
102
|
+
- **Check:** (echo check text)
|
|
103
|
+
- **Kind:** must | should
|
|
104
|
+
- **Passed:** yes | no
|
|
105
|
+
- **Feedback:** …
|
|
106
|
+
|
|
107
|
+
### Overall feedback
|
|
108
|
+
…
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Acceptance:**
|
|
112
|
+
|
|
113
|
+
- [ ] Built-in `responseFormat` / instructions enforce markdown sections above (not JSON checklist array).
|
|
114
|
+
- [ ] Or: documented canonical JSON schema + explicit `outputMode: "markdown"|"json"` on envelope `args` with default `markdown` for ai-tasks compatibility.
|
|
115
|
+
- [ ] Golden test vs `ai-tasks/templates/post-steps/audit/` fixtures.
|
|
116
|
+
|
|
117
|
+
**Related FR:** FR-GEN-3 (publish output schema).
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### CR-FUNCX-3 — `research/plan-questions` schema vs disk template drift
|
|
122
|
+
|
|
123
|
+
**Priority:** P1
|
|
124
|
+
**Affects:** `research/plan-questions`
|
|
125
|
+
**Evidence:** Disk template requires `"source": "ai-driven"` per question; FuncX schema uses optional `sourceType` (string). Live 4.9.8 sometimes omits both; call still validates.
|
|
126
|
+
|
|
127
|
+
**Expected (disk / xynthesis):**
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{ "question": "…", "reason": "…", "source": "ai-driven" }
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Acceptance (pick one and document):**
|
|
134
|
+
|
|
135
|
+
- [ ] **A:** Schema requires `source` literal `"ai-driven"` (match disk).
|
|
136
|
+
- [ ] **B:** Schema standardizes on `sourceType`; export migration note; xynthesis adapter updated (consumer change).
|
|
137
|
+
|
|
138
|
+
**Consumer spec:** `temp/funcx-functions/research-plan-questions/instructions-template.md`
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### CR-FUNCX-4 — `execution/plan` prompt vs output schema mismatch
|
|
143
|
+
|
|
144
|
+
**Priority:** P1
|
|
145
|
+
**Affects:** `execution/plan`
|
|
146
|
+
**Evidence:** Live 4.9.6 runs failed `ERR_SCHEMA_INVALID` when model returned `confidence: "high"` and `suggestedContext: {}`. Schema requires `confidence: number`, `suggestedContext: string[]`. Disk template text does not mention these fields.
|
|
147
|
+
|
|
148
|
+
**Acceptance:**
|
|
149
|
+
|
|
150
|
+
- [ ] Catalox instructions explicitly require `confidence` (0–1 number) and `suggestedContext` (string array, may be empty `[]`).
|
|
151
|
+
- [ ] Or: relax schema for optional fields with sensible defaults (document in FR-GEN-3).
|
|
152
|
+
- [ ] Fewer than 5% schema failures on golden envelopes with `cheap/default`.
|
|
153
|
+
|
|
154
|
+
**Consumer spec:** `temp/funcx-functions/execution-plan/output-object.md`
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### CR-FUNCX-5 — Transient `fetch failed` loses `error.cause`
|
|
159
|
+
|
|
160
|
+
**Priority:** P2
|
|
161
|
+
**Affects:** All `run()` OpenRouter hops
|
|
162
|
+
**Evidence:** Batch live run 8/10 + 2× `fetch failed`; retries succeeded. Error surface is only `message: "fetch failed"`.
|
|
163
|
+
|
|
164
|
+
**Acceptance:**
|
|
165
|
+
|
|
166
|
+
- [ ] `run()` / `askJson` errors preserve `cause` (`ECONNRESET`, `ETIMEDOUT`, etc.) on thrown/rejected errors.
|
|
167
|
+
- [ ] Optional retry policy documented for embedders (exponential backoff on transport failures).
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 4. Feature requests (FR) — new upstream capability
|
|
172
|
+
|
|
173
|
+
### FR-GEN-1 — `envelopeToTemplateVariables` (P0)
|
|
174
|
+
|
|
175
|
+
**Status:** Open
|
|
176
|
+
**Blocks:** CR-FUNCX-1, FR-GEN-9
|
|
177
|
+
|
|
178
|
+
**Ask:**
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
export function envelopeToTemplateVariables(
|
|
182
|
+
envelope: GenericExecutionEnvelope | SidekickGenericEnvelope
|
|
183
|
+
): Record<string, string>;
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Minimum keys** (sidekick + execution):
|
|
187
|
+
|
|
188
|
+
| Token | Source |
|
|
189
|
+
|-------|--------|
|
|
190
|
+
| `goal`, `question`, `task` | `envelope.goal` |
|
|
191
|
+
| `input_json`, `context_json`, `args_json`, `result_json` | `JSON.stringify(...)` |
|
|
192
|
+
| `strategy_args_json`, `iteration_index` | execution family |
|
|
193
|
+
| `ai_output`, `used_instructions`, `used_prompt` | post sidekick `input` |
|
|
194
|
+
| `local_raw`, `supporting_raw`, `rendered_downstream_*` | pre/synthesize `input` |
|
|
195
|
+
| `candidates_json`, `prior_audit_json`, `metadata_json` | post sidekick |
|
|
196
|
+
| Checklist: `originalInput`, `promptContext`, `candidateOutput`, `mustChecks`, `shouldChecks` | audit-checklist `input` |
|
|
197
|
+
|
|
198
|
+
Also support nested `input.goal` style for existing `renderInstructionTemplate`.
|
|
199
|
+
|
|
200
|
+
**Acceptance:** Used by all content-backed xynthesis built-ins before `callAI`.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### FR-GEN-9 — Catalox seed ↔ consumer template parity CI (P0)
|
|
205
|
+
|
|
206
|
+
**Status:** Open
|
|
207
|
+
**Depends on:** FR-GEN-1
|
|
208
|
+
|
|
209
|
+
**Ask:**
|
|
210
|
+
|
|
211
|
+
1. Seed bundle `xynthesisSidekick.seed.json` (or extend `genericExecutionResearch.seed.json`) with all 10 ids.
|
|
212
|
+
2. CI job: for each id, render Catalox instructions with golden envelope → compare hash to xynthesis rendrix / Handlebars output.
|
|
213
|
+
3. Source files listed in `temp/funcx-functions/instructions-comparison.md`.
|
|
214
|
+
|
|
215
|
+
**Acceptance:** CI fails on prompt drift; `contentVersion` bumped on intentional changes.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### FR-GEN-3 — Published output JSON Schema artifacts (P1)
|
|
220
|
+
|
|
221
|
+
**Status:** Open
|
|
222
|
+
|
|
223
|
+
**Ask:** Versioned JSON Schema per built-in id, co-located with FuncX package, matching xynthesis parsers:
|
|
224
|
+
|
|
225
|
+
- `parseAuditPayload`, `parseFixPayload`, `parsePickBestPayload`, `parseCraftFinalPayload`
|
|
226
|
+
- `adaptExecutionPlanResult`, `adaptEvaluateResultResponse`, `adaptResearchPlanQuestionsResult`
|
|
227
|
+
- audit-checklist markdown contract OR JSON schema (per CR-FUNCX-2 resolution)
|
|
228
|
+
|
|
229
|
+
**Acceptance:** `@exellix/xynthesis` / `@exellix/ai-tasks` can import schemas without duplicating types.
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
### FR-GEN-4 — `RunOptions` sampling passthrough (P1)
|
|
234
|
+
|
|
235
|
+
**Status:** Open
|
|
236
|
+
|
|
237
|
+
**Ask:** Add to `run()` options: `temperature`, `topP`, `reasoningEffort` (forwarded to nested `ask()` / OpenRouter).
|
|
238
|
+
|
|
239
|
+
**Why:** xynthesis `FuncxInvoker.ask()` passes `temperature: 0.2` today; `run()` path cannot match without envelope hacks.
|
|
240
|
+
|
|
241
|
+
**Acceptance:** Parity test: same sampling on `run()` vs direct `ask()`.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### FR-GEN-11 — Rich audit-merge envelope + template (P1)
|
|
246
|
+
|
|
247
|
+
**Status:** Open (extends FR-PRE-POST-2)
|
|
248
|
+
|
|
249
|
+
**Ask:** FuncX built-in + Catalox template for `post/audit-merge` accepts full fields from `ai-tasks/templates/post-steps/audit/synthesis.md`:
|
|
250
|
+
|
|
251
|
+
- `originalInput`, `promptContext`
|
|
252
|
+
- `candidateA` / `candidateB` with `cycle`, `score`, `output`, `failedChecks[]`, `passedChecks[]`
|
|
253
|
+
- `customSynthesisGuidelines` (from `args`)
|
|
254
|
+
|
|
255
|
+
**Consumer envelope builder:** `ai-tasks/src/post-steps/audit/auditChecklistFuncxEnvelope.ts` (expand merge builder).
|
|
256
|
+
|
|
257
|
+
**Acceptance:** Merge output quality golden test vs Handlebars `synthesis.md` path.
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
### FR-PRE-POST-7 — Sidekick template context helper (P2)
|
|
262
|
+
|
|
263
|
+
**Status:** Open
|
|
264
|
+
**Alternative to:** FR-GEN-1 if FuncX prefers a named helper.
|
|
265
|
+
|
|
266
|
+
**Ask:** `buildSidekickTemplateContext(envelope)` wrapping FR-GEN-1 for sidekick ids only.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
### FR-PRE-POST-8 — Export `SidekickGenericEnvelope` type (P2)
|
|
271
|
+
|
|
272
|
+
**Status:** Open
|
|
273
|
+
|
|
274
|
+
**Ask:** Export from `@x12i/funcx/functions` (or `@x12i/funcx/contracts`) matching `xynthesis/src/sidekickFuncxEnvelope.ts`.
|
|
275
|
+
|
|
276
|
+
**Acceptance:** ai-tasks / xynthesis stop duplicating structural types.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
### FR-GEN-2 — Per-function `args` JSON Schema in `meta.json` (P2)
|
|
281
|
+
|
|
282
|
+
**Status:** Open (partial by convention)
|
|
283
|
+
|
|
284
|
+
**Ask:** Document and validate `args` per id: `templateMode`, `customGuidelines`, `maxQuestions`, `allowSkip`, `iterationIndex`, `customAuditGuidelines`, etc.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
### FR-GEN-5 — `runGenericExecution` embedder helper (P2)
|
|
289
|
+
|
|
290
|
+
**Status:** Open
|
|
291
|
+
|
|
292
|
+
**Ask:** Thin wrapper: content resolve → render (FR-GEN-1) → `askJson` → `getRunJsonResult` → `{ value, usage, model }`.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
### FR-GEN-10 — Deprecate legacy hyphen ids (P3)
|
|
297
|
+
|
|
298
|
+
**Status:** Open
|
|
299
|
+
|
|
300
|
+
**Ask:** Mark `ai-tasks-plan-task`, `ai-tasks-optimizer-evaluate` deprecated; alias to `execution-plan`, `execution-evaluate-result`.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### FR-GEN-12 — Golden fixtures package (P2)
|
|
305
|
+
|
|
306
|
+
**Status:** Open
|
|
307
|
+
|
|
308
|
+
**Ask:** `@x12i/funcx/fixtures` or export from package: golden envelopes + expected prompt hashes + expected JSON outputs for 10 ids (sourced from `temp/funcx-functions`).
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 5. Per-function FuncX checklist
|
|
313
|
+
|
|
314
|
+
| functionId | Registry 4.9.8 | CR / FR to close parity |
|
|
315
|
+
|------------|----------------|-------------------------|
|
|
316
|
+
| `pre/synthesize` | OK | CR-FUNCX-1, FR-GEN-1, FR-GEN-9 |
|
|
317
|
+
| `execution/plan` | OK | CR-FUNCX-1, CR-FUNCX-4, FR-GEN-1, FR-GEN-9 |
|
|
318
|
+
| `research/plan-questions` | OK | CR-FUNCX-1, CR-FUNCX-3, FR-GEN-1, FR-GEN-9 |
|
|
319
|
+
| `execution/evaluate-result` | OK | CR-FUNCX-1, FR-GEN-1, FR-GEN-9 |
|
|
320
|
+
| `post/audit` | OK | CR-FUNCX-1, FR-GEN-1, FR-GEN-9 |
|
|
321
|
+
| `post/fix` | OK | CR-FUNCX-1, FR-GEN-1, FR-GEN-9 (+ `metadata_json` in user template) |
|
|
322
|
+
| `post/pick-best` | OK | CR-FUNCX-1, FR-GEN-1, FR-GEN-9 (+ `metadata_json`) |
|
|
323
|
+
| `post/craft-final` | OK | CR-FUNCX-1, FR-GEN-1, FR-GEN-9 (+ `metadata_json`) |
|
|
324
|
+
| `post/audit-checklist` | OK | **CR-FUNCX-2**, FR-GEN-1, FR-GEN-3, FR-GEN-9 |
|
|
325
|
+
| `post/audit-merge` | OK | CR-FUNCX-1, **FR-GEN-11**, FR-GEN-1, FR-GEN-9 |
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## 6. Suggested FuncX release slices
|
|
330
|
+
|
|
331
|
+
### 4.9.9 / 4.10.0 — P0 (production parity blockers)
|
|
332
|
+
|
|
333
|
+
1. **FR-GEN-1** — `envelopeToTemplateVariables`
|
|
334
|
+
2. **CR-FUNCX-1** — Catalox content for all 10 ids (seed + sync)
|
|
335
|
+
3. **CR-FUNCX-2** — audit-checklist markdown output
|
|
336
|
+
4. **FR-GEN-9** — parity CI
|
|
337
|
+
|
|
338
|
+
### 4.10.x — P1
|
|
339
|
+
|
|
340
|
+
5. **CR-FUNCX-3**, **CR-FUNCX-4** — schema / template alignment
|
|
341
|
+
6. **FR-GEN-3** — published output schemas
|
|
342
|
+
7. **FR-GEN-4** — RunOptions sampling
|
|
343
|
+
8. **FR-GEN-11** — audit-merge full template
|
|
344
|
+
|
|
345
|
+
### 4.11.x — P2/P3
|
|
346
|
+
|
|
347
|
+
9. FR-PRE-POST-8, FR-GEN-2, FR-GEN-5, FR-GEN-10, FR-GEN-12, CR-FUNCX-5
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 7. Mono-repo owner (wired @ 4.9.13 cutover)
|
|
352
|
+
|
|
353
|
+
| Item | Owner | Status |
|
|
354
|
+
|------|--------|--------|
|
|
355
|
+
| FuncX `run()` in `sidekickGateway.ts`, `runExecutionStrategyAction.ts` | xynthesis | **Done** — `invokeFuncxRun.ts`; no `XYNTHESIS_FUNCX_SIDEKICK` flag |
|
|
356
|
+
| ai-tasks audit checklist/merge via FuncX envelopes | ai-tasks | **Done** — `runAuditFuncxCall.ts`; Handlebars templates removed |
|
|
357
|
+
| Expand `buildAuditMergeFuncxEnvelope` for rich merge fields | ai-tasks | **Done** |
|
|
358
|
+
| Catalox seed from `@x12i/funcx/content-seed` (`contentVersion: 4.9.13`) | xynthesis | **Done** |
|
|
359
|
+
| FR-GEN-9 consumer parity CI before deleting disk templates | xynthesis | **Done** — `sidekickFuncxPromptParity.unit.ts` in `npm test` |
|
|
360
|
+
| Structured-only PRE synthesis (no markdown path) | ai-tasks | **Done** |
|
|
361
|
+
| `parseAuditChecklistOutput` (markdown + JSON object) | ai-tasks | **Done** — `parseAuditOutput.ts` |
|
|
362
|
+
| Live golden e2e with OpenRouter | both | **Out of repo CI** — run `test:integration` / `RUN_SYNTHESIS_E2E=1` locally |
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## 8. How to file in GitHub (`x12i/funcx`)
|
|
367
|
+
|
|
368
|
+
| Upstream item | Suggested GitHub label |
|
|
369
|
+
|---------------|------------------------|
|
|
370
|
+
| CR-FUNCX-1 … CR-FUNCX-5 | `bug` or `contract` |
|
|
371
|
+
| FR-GEN-1, FR-GEN-9 | `enhancement`, `P0` |
|
|
372
|
+
| FR-GEN-11, CR-FUNCX-2 | `enhancement`, `ai-tasks-integration` |
|
|
373
|
+
|
|
374
|
+
Copy bodies from this doc + link `temp/funcx-functions/{folder}/live-run.md` as evidence.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## 9. Version note (update peer docs)
|
|
379
|
+
|
|
380
|
+
| Package | Version | Notes |
|
|
381
|
+
|---------|---------|-------|
|
|
382
|
+
| `@x12i/funcx` | **4.9.9** | Content-backed sidekicks; 9/10 live (transient fetch on `pre/synthesize`) |
|
|
383
|
+
| `@exellix/xynthesis` | **^4.9.9** dep | `invokeFuncxRun` + gateway flag wiring |
|
|
384
|
+
| `@exellix/ai-tasks` | **^4.9.9** dep | Audit FuncX path behind same flag |
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## 10. Recheck log (4.9.11 → 4.9.13)
|
|
389
|
+
|
|
390
|
+
**Latest:** `@x12i/funcx` **4.9.13** live OpenRouter, 2026-06-12 (`temp/funcx-functions`)
|
|
391
|
+
|
|
392
|
+
| Id | Status @ 4.9.13 | Notes |
|
|
393
|
+
|----|-----------------|-------|
|
|
394
|
+
| **CR-FUNCX-5** | **Closed** | `error.cause` on transport errors (4.9.9); embedder retry docs (4.9.12); `RunOptions.transportRetries` (4.9.13). `pre/synthesize` OK with `transportRetries: 2`. |
|
|
395
|
+
| **FR-GEN-3** | **Closed** | `getFuncxOutputSchema` CI (4.9.12); checklist/merge `outputSchemaType: "string"` in fixtures manifest. |
|
|
396
|
+
| **FR-GEN-9** | **Closed** | `sidekickPromptParity.test.ts` + `@x12i/funcx/fixtures` hashes. Consumer parity CI in mono-repo **done** (`sidekickFuncxPromptParity.unit.ts`). |
|
|
397
|
+
| **FR-GEN-11** | **Closed** | Rich merge `prompt.md` + `post-audit-merge-envelope.json` golden fixture with checks arrays. |
|
|
398
|
+
| **CR-FUNCX-2** | **Closed** | Markdown checklist @ 4.9.11+ — unchanged @ 4.9.13. |
|
|
399
|
+
| **CR-FUNCX-1, FR-GEN-1, FR-GEN-4, FR-GEN-12, CR-FUNCX-3, CR-FUNCX-4** | **Closed** | Unchanged. |
|
|
400
|
+
|
|
401
|
+
**Mono-repo cutover complete @ 4.9.13.** See [funcx-4.9.13-open-items.md](./funcx-4.9.13-open-items.md).
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Filed by:** `@exellix/ai-tasks` + `@exellix/xynthesis`
|
|
4
4
|
**Baseline:** `@x12i/funcx` **4.4.0** — execution/research generics **shipped**; pre/post ids below are **not** in registry yet
|
|
5
|
+
**Updated:** See [funcx-gap-analysis-cr-fr.md](./funcx-gap-analysis-cr-fr.md) for **4.9.8** status (10/10 registered; content parity CRs/FRs open).
|
|
5
6
|
**Blocks:** `XYNTHESIS_FUNCX_SIDEKICK=1` production use, ai-tasks audit/polish off Handlebars
|
|
6
7
|
**Related:** [funcx-generic-xynthesis-hosting.md](./funcx-generic-xynthesis-hosting.md) (4.4.0 baseline + execution FRs)
|
|
7
8
|
|