conductor-oss / conductor-oss/javascript-sdk

switchTask() hardcodes value-param evaluator; JavaScript evaluator unreachable via builder

Offen Anfängerfreundlich
#139 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.