conductor-oss / conductor-oss/javascript-sdk
switchTask() hardcodes value-param evaluator; JavaScript evaluator unreachable via builder
- Vorherrschende Sprache
- TypeScript
- Sterne
- 58
- Forks
- 20
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 7
Beschreibung
## Summary
`switchTask()` hardcodes `evaluatorType: "value-param"`. The `SwitchTaskDef` interface
and the server both support `"javascript"` as an evaluator type, but there is no way to
use a JavaScript expression for SWITCH via the builder API.
## Server baseline
Conductor **3.32.0-rc.9**
## Evidence
```typescript
// switch.ts
export const switchTask = (
taskReferenceName: string,
expression: string,
...
): SwitchTaskDef => ({
evaluatorType: "value-param", // hardcoded — no parameter to change this
inputParameters: { switchCaseValue: expression },
expression: "switchCaseValue",
...
});
```
But `SwitchTaskDef` is typed as:
```typescript
evaluatorType: "value-param" | "javascript"; // server supports both
```
Users who need a JavaScript evaluator (arbitrary expression like
`$.input.age >= 18 ? 'adult' : 'minor'`) must construct `SwitchTaskDef` manually,
bypassing the builder entirely.
## Proposed fix
Add an optional `evaluatorType` parameter:
```typescript
export const switchTask = (
taskReferenceName: string,
expression: string,
decisionCases: Record = {},
defaultCase: TaskDefTypes[] = [],
evaluatorType: "value-param" | "javascript" = "value-param",
optional?: boolean
): SwitchTaskDef => ({
name: taskReferenceName,
taskReferenceName,
decisionCases,
evaluatorType,
inputParameters: evaluatorType === "value-param"
? { switchCaseValue: expression }
: {},
expression: evaluatorType === "value-param" ? "switchCaseValue" : expression,
defaultCase,
type: TaskType.SWITCH,
optional,
});
```
## Related
Discovered during systematic SDK audit against Conductor OSS 3.32.0-rc.9.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne in switch.ts beim switchTask()-Builder und vergleiche die aktuelle Rückgabeform mit der SwitchTaskDef-Union von evaluatorType. Überprüfe, dass der Standardpfad für value-param unverändert bleibt und dass die Auswahl von javascript die im Issue beschriebene Form von expression und inputParameters erzeugt. Fertig ist es, wenn der Builder beide unterstützten Evaluatortypen erstellen kann, ohne eine manuelle Konstruktion von SwitchTaskDef zu erfordern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- tooling
- Issue-Typ
- Feature
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Ruhig
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 76/100