feat(approvals): dynamic decision-output fields + expression approver editing (framework#3447 P2) - #2827
Merged
Merged
Conversation
… editing (framework#3447 P2) 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: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UI half of framework#3447 P2 (framework PRs objectstack-ai/objectstack#3532 merged, objectstack-ai/objectstack#3538 pending).
1. Decision-output fields on approve/reject dialogs. An approval node may declare decisionOutputs — keys an approver hands to the flow (vars.. for a later node's expression approver). Per-request, so not a static action param: DeclaredActionsBar synthesizes one text param per key from the row's decision_outputs, named outputs.; the api handler folds them into the nested outputs body. Blank optionals omitted; fold scoped to the outputs. prefix.
2. Expression approver editing in the flow designer. An expression approver's value renders as a CEL input (mono + syntax check, role value) instead of a dead free-text box; placeholder teaches the closed roots (current.* · trigger.* · vars.*). Flow-scope pickers deliberately not wired — they would teach the spelling the runtime rejects; root validation is server-side. Static fallback gains the Expression type, resolveAs and onEmptyApprovers (online form derives these from configSchema).
Browser-verified (HMR console + framework worktree backend): designer shows Expression/mono value/Resolve As on the dogfood flow; approve dialog rendered the declared Next Reviewers field; outputs posted nested; the Co-sign slate resolved to exactly the ids typed in the dialog; flow completed Approved. turbo type-check (35 tasks) + app-shell tests (89) green.
🤖 Generated with Claude Code