Skip to content

Commit de75b32

Browse files
committed
docs(app-shell): the flow canvas draft node becomes a real notify node
The "Visual flow canvas" jsonc draft taught `{ "id": "email", "type": "action", ... }`. `action` is not a flow node kind: it is absent from `FlowNodeAction` (objectstack `packages/spec/src/automation/flow.zod.ts`, 20 members) and from the canvas's own 18-entry `NODE_PALETTE`, so a reader copying the draft has the node refused when the type is checked against the live action registry at `registerFlow()`. `notify` is the replacement the spec itself names for the retired `email`/`slack` dispatch branches (flow.zod.ts:38-45). `script`, the other candidate, disqualifies itself: its `config.function` is REQUIRED, and this draft node carries no `config` at all. `notify` turns out to have required config too, so the one-word change alone would have swapped one refusal for another: `NotifyConfigSchema` declares `recipients` non-optional (io-node-config.zod.ts:186) and its superRefine (:261, message at :299) refuses a node carrying neither `title` nor `template`. The executor parses `node.config ?? {}` through that contract at execute time (notify-node.ts:250, parse-config.ts:99), so a config-less `notify` node is refused. The draft therefore gains exactly those two keys and nothing else. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01611D6ZaRaMmwTNQmSbk8MH
1 parent a810bb2 commit de75b32

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

‎packages/app-shell/README.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,8 @@ Salesforce Flow Builder) instead of a flat step list. It is **dependency-free**
392392
{ "id": "start", "type": "start", "label": "Start" },
393393
{ "id": "decide", "type": "decision", "label": "Renew?",
394394
"ui": { "x": 220, "y": 180 } }, // optional persisted canvas position
395-
{ "id": "email", "type": "action", "label": "Send reminder" },
395+
{ "id": "email", "type": "notify", "label": "Send reminder",
396+
"config": { "recipients": "{record.owner}", "title": "Renewal reminder" } },
396397
{ "id": "end", "type": "end", "label": "End" }
397398
],
398399
"edges": [

0 commit comments

Comments
 (0)