You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Approve/reject dialogs synthesize one input per author-declared decision-
output key (row.decision_outputs — per-request, so not a static action
param); the api handler folds the dotted outputs.<key> params into the
nested outputs body the decide route expects. The flow designer renders an
expression approver's value as a CEL input (mono + syntax check) with the
closed-root placeholder instead of a dead free-text reference box; the
static fallback descriptor gains the Expression type, resolveAs and
onEmptyApprovers. Browser-dogfooded end to end against a framework backend:
dialog field renders, outputs nest, and the co-sign stage resolves the
picked reviewers.
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
- The approve/reject dialogs now render one input per author-declared decision-output key (the row's `decision_outputs`, per-request so it can't be a static action param). DeclaredActionsBar synthesizes `outputs.<key>` params; the api handler folds them into the nested `outputs` body the decide route expects. Blank optional outputs are omitted.
9
+
- The flow designer's approval-node approver list renders an `expression`-type approver's value as a CEL expression input (mono + syntax check) instead of a dead free-text reference box, with a placeholder teaching the three legal roots (`current.*` / `trigger.*` / `vars.*`). Flow-scope pickers are deliberately not wired in — approval expressions have their own closed root set, and offering flow-scope paths would teach exactly the spelling the runtime rejects.
10
+
- Static fallback descriptor gains the `Expression (CEL)` approver type, the expression-only `resolveAs` column, and the node-level `onEmptyApprovers` policy select (the online form derives all of these from the engine's published configSchema).
help: 'What an empty resolved approver slate does at node entry. Auto-approve silently waves the record through — opt in deliberately.',
633
+
}),
604
634
// Per-node SLA escalation (spec ApprovalEscalationSchema, nested under
605
635
// config.escalation). Sub-fields reveal once escalation is enabled.
606
636
{id: 'escalation.enabled',path: ['config','escalation','enabled'],label: 'SLA escalation',kind: 'boolean',defaultValue: 'false',help: 'Escalate when a decision is not recorded within the timeout.'},
0 commit comments