conductor-oss / conductor-oss/javascript-sdk

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

Aperta Adatta ai principianti
#139 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.