conductor-oss / conductor-oss/javascript-sdk
switchTask() hardcodes value-param evaluator; JavaScript evaluator unreachable via builder
- Lingua principale
- TypeScript
- Stelle
- 58
- Fork
- 20
- Merge medio
- 1g 13h
- PR unite (30g)
- 7
Descrizione
## 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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia in switch.ts, nel builder switchTask(), e confronta la forma di ritorno attuale con l’unione evaluatorType di SwitchTaskDef. Verifica che il percorso predefinito di value-param rimanga invariato e che la selezione di javascript produca la forma di expression e inputParameters descritta nell’issue. Il lavoro è completo quando il builder può creare entrambi i tipi di valutatore supportati senza richiedere la costruzione manuale di SwitchTaskDef.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Tranquilla
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 76/100